每个节点的Tcp拥塞避免



连接到同一路由器的每个节点是否可能实现不同的拥塞避免技术?此外,是否有可能完全禁用连接到路由器的节点中的拥塞避免。谢谢。

答案取决于你对"可能"的定义。

互联网主机应遵守互联网标准。根据这些文档,TCP应该实现"雷诺友好"的拥塞控制算法,即可以与雷诺共存(见RFC5681)。所以,如果你需要一个遵守这些标准的TCP实现,那么答案是否定的。

然而,强制执行这是另一个问题,据我所知并没有真正的解决方案。那么,你是否仍然可以实现拥塞控制或根本没有拥塞控制,并且仍然连接到互联网,是的。

它实际上完成了吗?是的到目前为止,Linux主机使用TCP立方,和Windows使用另一个拥塞控制机制,他的名字我不记得了。他们都是里诺友好的,彼此共存,但他们是不同的,他们与里诺不同。最近,谷歌部署了BBR,这可能对里诺友好,也可能不友好。此外,实时多媒体流(例如,语音或视频会议)也应该使用某种拥塞控制,因此它们也有助于多样性。

Will router care?没有。路由器不关心连接的主机是否实现拥塞控制。一个简单的路由器将做完全相同的事情。它将接收传入的数据包,然后发送它们,如果出接口空闲,则将它们排队,如果接口当前正忙于传输其他数据包并且该接口的队列中有空间,或者丢弃数据包,如果队列已满。更复杂的路由器可以利用活动队列管理方案,或与速率控制服务质量。这将影响路由器处理数据包的方式,但不会影响路由器的功能。它必须把行为不端的主机考虑在内。

会影响什么?应用。如果主机实现不同的拥塞控制机制或根本没有拥塞控制,那么共享相同瓶颈的多个流的应用程序性能将受到影响。如何实现,实际上取决于瓶颈带宽、路由器的功能和应用程序的流量模式。很难说是怎么做到的。然而,网络绝对有可能无法传输有用的流量(这被称为拥塞崩溃)。另一个很可能受到影响的重要因素是公平性,它或多或少量化了共享相同瓶颈的几个流将如何平等地共享可用带宽。没有实现拥塞控制的流可能会劫持所有可用带宽。这同样适用于使用比TCP Reno更积极的拥塞控制的流和没有使用拥塞控制的流。所以,不实现拥塞控制是不太好的。当然,路由器实际上可以做一些事情,但它需要相当昂贵的每流调度(你可以搜索公平排队或流排队),路由器通常不会这样做。

引用:

  • internet主机要求:RFC1122
  • 最新的拥塞控制算法规范RFC5681。

最新更新