Chapter 8 - 4. Congestion Management in TCP Storage Networks

Selective Acknowledgment (SACK)

Some TCP implementations use Selective Acknowledgment (SACK), which increases performance during packet drops by selectively acknowledging only the received packets, and hence transmitting only the lost packets instead of retransmitting all packets after the lost packets. 有些 TCP 实现使用选择性确认 (SACK),它只对收到的数据包进行选择性确认,因此只传输丢失的数据包,而不是在丢失数据包后重传所有数据包,从而提高了数据包丢失时的性能。

Duplicate Packets and Ordered Data Transfer

When packets or their ACKs are delayed, but not lost, it results in the TCP sender retransmitting those packets, which ultimately results in the receiver receiving the same packet twice. This problem is solved by using a sequence number on the TCP header (Figure 8-2). A receiver remembers the sequence numbers of the already received packets and if the same sequence number is received soon, it discards the duplicate packet. 当数据包或其 ACK 发生延迟但未丢失时,会导致 TCP 发送方重新传输这些数据包,最终导致接收方接收两次相同的数据包。在 TCP 报头中使用序列号(图 8-2)可以解决这个问题。接收方会记住已接收数据包的序列号,如果很快又收到相同的序列号,就会丢弃重复的数据包。

The sequence number is also used for rearranging the out-of-order packets. This allows a receiver to hand off the byte stream to the upper layers in the same order as sent by the sender. 序列号还用于重新排列乱序数据包。这样,接收方就能按照发送方发送的相同顺序将字节流交给上层。

Comparison with Fibre Channel Fabrics

In Fibre Channel (and FCoE) fabrics, there is no acknowledgment of each frame and hence, no retransmission of a single lost frame. If a frame is lost, that I/O operation (Exchange) does not complete. Thus, the entire I/O operation is reinitiated after a timeout at SCSI or NVMe layers, which is typically set to 30 seconds. This timeout should not be confused with the TCP RTO timer because even with iSCSI and NVMe/TCP, the upper layers (SCSI and NVMe) are the same and have similar timeouts. 在光纤通道(和 FCoE)结构中,不对每个帧进行确认,因此不会对丢失的帧进行重传。如果丢帧,I/O 操作(交换)将无法完成。因此,整个 I/O 操作会在 SCSI NVMe 层超时后重新启动,超时时间通常设置为 30 秒。此超时不应与 TCP RTO 定时器混淆,因为即使是 iSCSI NVMe/TCP,上层(SCSI

你可能感兴趣的:(Linux,kernel,网络,linux,kernel,tcp/ip,服务器)