虹科分享 | 网络性能监控 | 网络中的应用性能意味着什么?

TCP协议的可靠性

数据包丢失是对网络的破坏,因为它导致延迟。TCP协议建立了可靠的数据传输,但掩盖了丢包的影响。TCP确保数据的传输是基于一个叫做 “滑动窗口 “的概念。这种机制控制着传输的字节序列和收到的确认。

在排序的帮助下,接收方可以通知发送方丢失的数据(如数据包丢失)。独立地讲,发送方可以通过重传定时器的到期来检测丢包。从性能分析的角度来看,必须了解丢包的重要性,以避免 “机器中的幽灵”。下面的文章探讨了这些机制的行为和性能。

重传计时器

每个传输的数据包都由发送方链接到重传计时器。如果计时器在已传输的数据段被确认之前过期,则该数据段将被声明为丢失并重新传输。在性能方面,重传定时器有两个重要特点:

  • 初始重新传输超时 (RTO) 的默认值几乎始终为 3000 毫秒。随后,该值会根据实际路径重传时间动态调整为更真实的值。

  • 对于数据包的后续重新传输,超时值始终加倍。

对于短数据流(例如网络流量),重传计时器用于检测数据包丢失。只有 1000 字节的消息在单个数据包中传输。当然,如果数据包丢失,接收方无法发送接收确认,因为接收方不知道丢失的数据包曾经发送过。如果数据包在 TCP 连接的早期丢失,例如在三次握手期间丢失 SYN 数据包,则数据包丢失在三秒钟内不会恢复。

三次重复的ACK

在较大的数据流中,可以在重传定时器过期前检测到丢失的数据包。这是借助于三个收到的ACK副本来完成的。这种机制通常比等待重传定时器过期更有效。如果到达的节点收到的数据包不符合顺序,它就会发出重复的ACKs。失序的数据包可以是在丢失的数据包数据之后发送的数据包。重复的ACK包包含接收方仍在等待的准确序列号。当发送节点收到第三个重复的ACK时,它认为有关的数据包不仅被延迟,而且实际上已经丢失。结果,丢失的数据包被重新传输。如果发生这种情况,发件人会假定网络中存在拥堵,并将拥堵窗口减少50%,以积极应对拥堵。慢速启动机制会缓慢增加CWD值。

例如,如果一个服务器向客户传输一个大文件,由于慢速启动机制,发送节点的吞吐量提升得更慢。当拥塞窗口达到24时,数据包丢失会被一个三重复的ACK检测到。随后,服务器重传丢失的数据,CWD值减少到12。慢速启动机制将在这个时候重新启用其拥塞避免模式。这种行为在现代网络中经常看到。

结论和纠正措施

显而易见的是,防止因拥堵造成的数据包丢失将提高性能。然而,这只有通过减少其他流量的拥堵才能实现,可以通过以下方式实现:

  • 用于排队优先的QoS政策

  • 减少总流量或增加带宽

如果数据包丢失是由于其他情况造成的,如网络接口故障、队列配置错误或电缆连接不良,则必须确保TCP连接不会被不必要地关闭,不被不必要地超时,人们还可以减少重传超时的值。