vmkernel.log
file, you may see entries similar to:-09-17T15:07:19Z iscsid: discovery_sendtargets::Running discovery on IFACE iscsi_vmk@vmk2(iscsi_vmk) (drec.transport=iscsi_vmk)
-09-17T15:07:19Z iscsid: cannot make connection to 10.#.#.#:3260 (111)
-09-17T15:07:19Z iscsid: connection to discovery address 10.#.#.# failed
-09-17T15:07:19Z iscsid: connection login retries (reopen_max) 5 exceeded
-09-17T15:07:19Z iscsid: Login Target Skipped: iqn.2003-10.com.temp:hvtiscsi:1808:vmwds01 if=iscsi_vmk@vmk1 addr=10.#.#.#
:3260 (TPGT:1 ISID:0x2) (Already Running)
-09-17T15:07:19Z iscsid: Login Target Skipped: iqn.2003-10.com.temp:hvtiscsi:1808:vmwds01 if=iscsi_vmk@vmk2 addr=10.#.#.#
:3260 (TPGT:1 ISID:0x3) (Already Running)
Until the iSCSI array vendors address this issue on their end, consider designing your IP storage network with enough capacity to account for the peak usage and lower the risk of congestion. If you experience the problem described in this article and are unable to alter your network configuration or find ways to guarantee a congestion-free environment, you can experiment with the following workaround.
This workaround requires disabling delayed ACK on each ESX/ESXi host via a configuration option, which must be done for all hosts connected via iSCSI.
NOTE: Please contact your storage vendor to find out if they recommend disabling delayed ACK to enhance performance and reduce potential issues with their storage systems.
Disabling Delayed ACK in ESXi 7.x and later
NOTE: A reboot is required for delayed ACK setting changes to take effect.
To verify if the settings are applied, run the command
vmkiscsid --dump-db | grep Delayed
If it is disabled the value will be 0.
What is TCP Delayed ACK ?
A "delayed ack" in a storage array environment refers to the TCP delayed acknowledgment protocol feature, which buffers acknowledgments (ACKs) for received data in order to combine them with subsequent ACKs or data, thus improving network and host efficiency by sending fewer ACK packets. While beneficial in high-traffic scenarios, it can increase latency and worsen performance in environments with lower I/O or network congestion, as the host waits for an acknowledgment before sending the next data segment. Disabling delayed ACK is often recommended for storage environments, especially iSCSI, to reduce latency and improve performance, and this setting can typically be adjusted on the host's operating system or the virtual machine's host adapter settings.
Protocol Efficiency: Delayed ACK is a TCP/IP feature that reduces the number of acknowledgment (ACK) packets sent by a recipient. Instead of acknowledging every received data segment individually, the recipient delays sending the ACK until it has received multiple segments or for a short period (e.g., 100-500ms).
Combined ACKs: This allows the recipient to combine multiple acknowledgments into a single packet, reducing network overhead and the processing burden on the host.
Dynamic Adjustment: Modern systems often use dynamic algorithms to adjust delayed ACK behavior based on network conditions.
Why Delayed ACK Can Cause Issues with Storage Arrays ?
Increased Latency: The primary drawback of delayed ACK is increased latency, as the sender waits for an acknowledgment for a period of time before sending more data.
Performance Degradation: This delay can negatively impact storage performance, especially during periods of low I/O or when networks are congested.
Congestion Amplification: In a congested network, delayed ACKs can exacerbate issues by causing further delays and increasing the likelihood of packet retransmissions, leading to a vicious cycle of poor performance.
When to Disable Delayed ACK ?
High Latency Environments:
If you observe higher latency in your storage environment, particularly during low I/O periods, disabling delayed ACK can often improve performance.
Congested Networks:
Disabling delayed ACK is particularly recommended for highly congested networks to reduce packet loss and retransmissions, according to Pure Storage documentation.
Vendor Recommendations:
Many storage vendors recommend disabling delayed ACK to enhance performance and reduce potential issues with their storage systems.
How to Disable Delayed ACK ?
Refer to the resolution section above.