论文部分内容阅读
互联网的拥塞控制机制和服务质量是两个密切相关的研究课题,也是当前的研究热点。本文针对目前互联网在拥塞控制机制和服务质量方面存在的一些不足分别进行了研究。 目前互联网的拥塞控制主要是依靠基于源端的TCP拥塞控制机制,互联网的发展也说明了TCP拥塞控制机制是成功的。但近年来互联网的爆炸式增长,特别是多媒体业务的广泛应用,使得互联网已经不可能再仅仅依靠基于源端的TCP拥塞控制机制,路由器本身也必须主动参与到拥塞控制中来,这是因为路由器直接掌握着互联网上的各种传输信息。主动式队列管理机制(Active Queue Management,AQM)是IETF推出的基于FIFO调度策略的队列管理机制,它使得路由器能够控制在什么时候丢弃多少包,从而有效地管理队列长度,以支持TCP端到端的拥塞控制。AQM的本质就是在队列溢出之前检测出早期的拥塞,并且以一定的概率丢弃或者标记(ECN)数据包,从而向源端发出拥塞指示,以缓解网络拥塞。 目前最常用也是最早提出的AQM算法是随机早期检测(Random Early Detection,RED)算法。RED的基本思想是路由器通过监控队列的平均长度来探测拥塞。一旦发现拥塞逼近,就随机地选择源端来通知拥塞,使他们在队列溢出导致丢包之前减小拥塞窗口,降低发送数据速度。一般说来,当网络拥塞严重时,AQM必须将拥塞信息通知到足够多的源端,以充分降低负荷从而避免队列溢出丢包;另一方面,AQM也要防止将拥塞信息传给了过多的源端,从而造成瓶颈链路利用率的下降。由于互联网是基于带宽统计复用的,一条链路上有很多活跃流(active flows)在竞争有限的带宽资源,因此,进行拥塞通知时应充分考虑到瓶颈链路上流的数量,而RED算法并没有考虑到这一点。具体说来,RED算法中拥塞指示的发送速率主要是由参数max_p来体现的,并且max_p值是静态设置的,所以当流量负荷发生改变时RED算法难以适应这种变化,从而会引起队列振荡,导致不必要的传输延迟和抖动现象。为此,我们提出了一种改进的RED算法——MRED(Modified RED)。MRED的设计目的是根据流量大小来动态地调整max_p的值。当TCP连接数很大也就是拥塞程度严重时需要采用激进的方法,也即增大max_p的值;当TCP连接数较小也就是拥塞程度较轻时需要采用保守的方法,也即减小max_p的值;从而及时调整向源端发送拥塞通知的速率,维持队列长度的稳定,避免不必要的传输延时和抖动。我们通过一系列仿真实验表明,MRED能够有效地适应网络流量的变化,保持队列长度的稳定,大大减少了队列溢出或者空闲现象的发生。 随着近十年互联网的高速发展,IP业务也得到了快速的增长和多样化。现有的互联网所提供的“尽力而为”(Best-Effort)的服务显然不能满足不同用户、不同业务对服务质量的(Quality of Service,QoS)的不同要求。因此IP QoS已成为当前网络基础研究的热点,并且也是下一代IP网络的关键技术。区分服务(Differentiated Services,DiffServ)体系结构是IETF区分服务工作组提出的一种解决IP网络QoS问题的服务模型。其基本思想是,在区分服务网络中,边界路由器根据用户的流规格将用户流划分为不同的级别,再聚合成流聚浙江大学博士学位论文集,聚集信息存放在xP包头的05标记域,称为05标记(Differentiated serviees Codepoint,DSCP),核心路由器则根据DSCP提供不同质量的调度转发服务,也即是基于边界路由器上执行的标记策略和核心路由器上执行的主动式队列管理策略(比如RIO)。在发生拥塞时,RIO之类的队列管理机制首先丢弃低优先级的数据包,而尽量保护高优先级的数据包。从而达到为不同用户提供不同级别服务的目的。目前互联网上TCP流量占了总流量的95%左右,研究表明,回路响应时间Rl,T、目标速率、包的大小、聚流中包含的单流数量等都会对TCP流的吞吐量有很大影响。因此,区分服务如何确保TCP流得到目标带宽并且公平享用带宽一直是一个非常活跃的研究领域。 本文提出的基于动态闭值的数据包标记策略OTBM的目的就是处理异质的TCP流之间带宽享用的公平性问题。TCP流的吞吐量在很大程度上受到两个参数的影响一一回路响应时间RTT和拥塞窗口大小。由于数据包的标记工作基本上是在边界路由器上进行的,因此要直接测量出所经过的各种TCP流的RTT值和拥塞窗口大小非常困难。虽然目前有些标记策略通过一些方法对这些参数进行了测量,但实现过于复杂,扩展性差。我们的设计目标是无需直接测量R了f和窗口大小,而是通过间接地感知这些参数的变化来作相应的标记,保证TCP流之间带宽享用的公平性。另外一个目标就是要保证算法实现简单、扩展性好,无需其他标记器的配合以及修改TCP协议,也无需终端主机的支持,也即对终端主机是“透明”的。此外,标记器还应该尽量避免对其自身的参数过于敏感,也就是所谓的参数敏感性问题。DTBM是测量局部吞吐量(loeal throughput)而不是端到端吞吐量(end一to一end goodput),也就是说DTBM对进入边界路由器接收到的数据包进行统计,虽然这些数据包有可能在后面的传输过程中被丢弃。这样做的一个目的就是可以大大简化我们的标?