TCP/IP卷一:90---TCP拥塞控制之(共享拥塞状态信息、TCP友好性)

一、共享拥塞状态信息

  • 前面的讨论和举例都是针对单一的TCP连接的拥塞处理操作。然而,相同的主机之间随后可能建立新的连接,这些新连接也需要重新进行拥塞处理,建立自已的ssthresh和cwnd值。在许多情况下,新连接可能会用到相同主机之间的其他连接的信息,包括已关闭的连接 或者正处于活动状态的其他连接。这就是相同主机间多个连接共享拥塞状态信息。之前的一 篇名为“TCP控制块相互依赖性”的文章[RFC2140]描述了相关内容,其中注意区分了暂时 共享(temporal sharing,新连接与已关闭连接间的信息共享)和总体共享(ensemble sharing, 新连接与其他活动连接间的信息共享) 。
  • 为将上述思想形成除TCP外的新的应用协议, [RFC3124]提出了拥塞管理( Congestion Manager)机制。该机制使得本地操作系统可实现相关协议来了解链路状态信息,如丢包率、 拥塞估计、RTT等
  • Linux在包含路由信息的子系统中实现了上述思想,即第15章已经提到的目的度量。这 些度量默认开启(在前面的扩展示例中,我们通过设置sysctl变量net.ipv4.tcp_no_metrics_save为1禁用了该项功能)。当一个TCP连接关闭前,需要保存以下信息:RTT测量值(包 括srtt和rttvar)、重排估计值以及拥塞控制变量cwnd和ssthresh。当相同主机间的新连接建 立时,就可以通过这些信息来初始化相关变量

二、TCP友好性

  • TCP作为最主要的网络传输协议,在传输路径中会经常出现几个TCP连接共享一个或 多个路由的情况。然而,它们并非均匀地共享带宽资源,而是根据其他连接动态地调节分配。但也会出现例外情形,如TCP与其他(非TCP)连接或者使用不同设置的TCP连接竞争带宽
  • 为避免多个TCP连接对传输资源的恶性竞争,研究者提出了一种基于计算公式的速率 控制方法,限制特定环境下TCP连接对带宽资源的使用。该方法称为TCP友好速率控制 (TCP Friendly Rate Control,TFRC) [RFC5348] [FHPWOO],它基于连接参数和环境变量(如 RTT、丢包率)实现速率限制。与传统TCP相比,它能实现更高的带宽利用率,因此更适用于流媒体这种大传输量(如视频传输)的应用。TFRC使用如下公式来决定发送率:

  • 从另一方面来看TCP发送率,即在拥塞避免阶段,怎样根据接收的无重复ACK来调 整窗口大小。回顾前面讨论过的标准TCP,使用拥塞避免算法时,每接收一个好的ACK,cwnd就会增加1/cwnd,而每当出现一次丢包,cwnd就会减半,这被称为和式增加/积式减少(AIMD)拥塞控制。通过将1/cwnd和1/2替换为a和b,我们得到了一般化的AIMD等式:

  • 根据[FHPWOO]给出的结果,上述等式得出的发送率为(以包个数/RTT为单位):

  • 对于传统TCP,a= 1,b=0.5,这样上式就简化为r=1.2/√p,称为简化的标准TCP 响应函数。它的TCP速率(cwnd调节)只和丢包率相关,而没有考虑重传超时。当TCP没 有受其他因素(发送方或接收方缓存、窗口缩放等)影响时,在这样的良性环境下,简化函 数能很好地控制TCP性能
  • 对TCP响应函数的任何修改都会影响它(或实现了相似拥塞控制模式的其他协议)与标 准TCP的竞争。因此,通常会使用相对公平(relative faimess)的方法来分析新的拥塞控制模式。根据丢包率,相对公平给出了改进拥塞控制模式协议和标准TCP协议的速率比。这是衡量改进模式在带宽共享方面公平性的重要指标
  • 要建立与标准TCP公平竟争的速率调节机制,理解上述公式只是第一步。针对特定的协议,实现TFRC会存在具体的细节差异,包括怎样正确测量RTT、丢包率、包大小等。这些问题在[RFC5348]中有详细讨论
发布了1463 篇原创文章 · 获赞 996 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/104260804