拥塞控制原理

【拥塞控制原理】本备忘录的状态
本文档讲述了一种Internet社区的Internet最优通用的实例 , 它需要进一步进行讨论和建议以得到改进 。本备忘录的发布不受任何限制 。
版权声明
Copyright(C)TheInternetSociety(2000).AllRightsReserved.
摘要
本文档的目的是解释Internet中的拥塞控制的必要性和讨论什么构成了正确的拥塞控制 。目标之一是阐释忽视运用合适的拥塞控制的危险 , 目标之二是讨论IETF(InternetEngineeringTaskForce,Internet工程任务组)在新的拥塞控制协议标准化方面的作用 。
1.介绍
本文档很大程度上采纳了早期RFCs文档 , 在某些地方对早期的文档[RFC2309,RFC2357]从整体上作了重新改写.我们还借助了旨于端到端的拥塞控制需求[参见FF99]的参考资料.
2.拥塞控制的当前标准
端到端拥塞控制的IETF标准关注的方面包括集中在特定的协议(例如TCP协议[RFC2581],可靠的多点传送协议[RFC2357]);终端节点和路由器之间的拥塞信息(例如明确的拥塞通告[RFC2481])交换的句法和语义;不同服务的服务质量的期望值 。端到端的拥塞控制的作用也在一个关于“Internet中的队列治理和避免拥塞的建议”[参见RFC2309]的RFC报告中进行了讨论 。RFC2309提出了在路由器中活跃的队列治理机制的配置和对路由器机制设计的延续来处理对拥塞通告无回应的流 。我们能够轻松地从RFC2309中借用一些端到端的拥塞控制的概括性的讨论 。
与上面提到的RFCs资料相比 , 本文档对拥塞控制的原理进行更一般性的讨论 。Internet成功的一个要害因素就是TCP协议的避免拥塞机制 。当前TCP协议在Internet中仍然是占主导地位的传输协议 , 但它不是适用于任何地方 , 有越来越多的应用由于某种原因没有选择使用TCP协议 。通信不仅包括多点传送通信 , 而且包括单点传送通信 , 诸如不需要可靠性的流化的多媒体 , 以及包括象DNS(DomainNameServer域名服务器)或路由信息的通信 , 它们带有被认为对网络运行至关重要的短信息 。许多通信并不使用任何形式的预留带宽或端到端拥塞控制 。为了保持最优传输量 , 端到端的拥塞控制的继续使用对保持Internet的稳定至关重要 。
本文档也讨论IETF在新的拥塞控制协议标准化中的一般作用 。对于区别性服务和集成性服务的拥塞控制的讨论在本文档中不涉及 。集成性或区别性服务能够保证端到端的网络带宽 , 所以不需要端到端的拥塞控制机制 。
3.端到端拥塞控制的发展
3.1防止网络因拥塞而崩溃
Internet协议体系是基于使用IP协议实现无连接的端到端的包交换服务 。无连接设计的优势灵活和健壮已经被充分的证实了 。然而这些优势并不是没有代价的:在高负载情况下提供优质服务需要更仔细的设计 。实际上 , 不重视动态包交换会导致严重的服务降级或“Internet熔化“ 。这个现象首先被观察到是在1980年中叶网络的早期发展阶段[参见RFC896] , 在技术上称之为”拥塞崩溃“ 。TCP的最初说明[参见RFC793]包括基于窗口的流控制 , 它作为接受方治理发送方发送数据的方式 。流控制被用来防止接受方可用的数据缓冲空间的溢出 。[RFC793]报告指出由于错误或网络拥塞 , 响应拥塞的流控制窗口不进行动态的调整 , 数据段可能丢失 。
VanJacobson提出了对“Internet熔化”的初始修补 。1986年初 , Jacobson开发了现在在TCP应用[参见Jacobson88,RFC2581]中的避免拥塞机制 。运行在主机中的这些机制使得TCP连接在拥塞时回退 , 象我们所说的TCP流对网络中的拥塞信号进行响应(例如“丢弃包”) 。正是这些TCP避免拥塞算法防止了今天网络的拥塞崩溃 。

推荐阅读