路由器为什么需要200ms报文缓存能力

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

WHY200ms?1.前言一般情况下互联网上RTT时间为200ms,如果路由器不能缓存200ms的报文,则容易引起丢包,从而引起TCP重传,再加上TCP的窗口机制,会导致TCP连接效率大幅度下降。因此,200ms缓存能力是高端路由器的最基本要求。业界高端路由器都宣称支持200ms的报文缓存能力,如:Cisco7600/12000的高级板卡SIP400/600和ES20(其它类型板卡不支持)JuniperM/T系列路由器全系列单板Alcatel7750路由器全系列单板华为NE40E/NE80E的高级板卡A类单板(NE40/NE80全系列和B类单板不支持)H3CSR8800路由器全系列单板200ms报文缓存已经成为高端路由器必须具备的能力,本文从网络应用的角度来阐述为什么要求200ms报文缓存。2.网络基本模型与基本原则我们首先看一个通常的IP端到端简化模型,如下图。图1IP端到端简化模型C1是本地局域网到路由器的带宽,C是广域网出口带宽,很明显,C1的带宽远远大于C,出口带宽C上会存在拥塞的可能。广域网带宽是很昂贵的,因为费用问题,我们租用的出口线路带宽总是不够。因此,无论从用户使用还是网络设计角度,我们需要做的事情就是最大限度使得出口带宽保持100%的利用,这是我们考虑问题的基本原则。毫无疑问,此时通信性能和效率可以达到最高,也就是使得出口线路上不出现空闲的情况,使得用户花的每一分钱都物有所值。CRouterSourceDestination2TC1图2缓存的主要目的使出端口足够繁忙,带宽得到100%的利用要做到这一点,就要求中间的路由器出口上具有一定的缓存能力,这就是那个著名的计算公式:Buffer=RTT×BW(RTT为报文往返时间,BW即带宽C)即:线卡缓存等于带宽乘以报文在网络上的往返时间。另外,IP流量具有瞬间流量突发特点,也容易导致出口拥塞,为保证QoS和减少出口拥塞丢包,也需要线卡有足够的缓存用于队列和调度:•保证高优先级流量先通过,不丢包,降低时延和抖动•缓存低优先级报文,保证少丢包图3缓存减少了报文的丢失目前,互联网上RTT一般是200ms左右,这要求高端路由器的线卡至少能够缓存200ms的报文,保证QoS,避免端口拥塞,确保出口链路100%的利用率,发挥网络最高性能。3.TCP的几个典型阶段与概念据统计,目前网络上的流量主要是TCP流量。因此,为了深入了解缓存对于路由器设备的重要性,我们必须充分理解TCP的基本原理。TCP与它的姊妹协议UDP不同,TCP是基于连接的,需要维持连接状态和控制数据传输速率以最大程度发挥传输链路上的会话性能。TCP通信有以下几个典型阶段:1.慢启动阶段原有的TCP协议在启动一个连接时会向网络发送许多数据包,由于一些路由器必须对数据包进行排队,因此有可能耗尽存储空间,从而导致TCP连接的吞吐量(throughput)急剧下降,避免这种情况发生的算法就是慢启动。当建立新的TCP连接时,TCP发送窗口被初始化为一个数据包大小(一个数据包缺省值为536或512byte)。源端按窗口大小发送数据,每收到一个ACK确认,发送窗口就成倍增加数据包发送量。显然,窗口大小的增长将随RTT呈指数级增长:1个、2个、4个、8个……,源端向网络中发送的数据量将急剧增加。2.拥塞避免阶段当发现超时或收到3个相同的ACK确认帧时,网络即发生拥塞(这一假定是基于由传输引起的数据包损坏和丢失的概率小于1%)。此时,就进入拥塞避免阶段,慢启动阈值被设置为当前发送窗口的一半,发送窗口被置为1。如果发送窗口≤慢启动阈值,则TCP重新进入慢启动过程;如果发送窗口慢启动阈值,则TCP执行拥塞避免算法,发送窗口在每次收到一个ACK时只增加1个数据包(这里将数据包大小假定为1)。3.快速重传和恢复阶段进入慢启动会导致过大地减小发送窗口尺寸,降低TCP连接的吞吐量。因此,快速重传和恢复就是在源端收到3个或3个以上重复ACK时,就断定数据包已经被丢失,并重传数据包,同时将慢启动阈值设置为当前发送窗口的一半,而不必等到RTO超时。TCP这种拥塞控制算法使得网络上的通信流量呈现典型的锯齿波形。图4TCP锯齿流量波形示意TCP拥塞控制机制使得TCP流量趋向于尽量占用最大的带宽,这是通过调节发送端口来实现的。如果报文被丢弃,TCP发送窗口会减少,所以发送速率会降低,以适配端到端会话可用的链路带宽,通过慢启动机制恢复会话吞吐量。为了在突发流量情况下发生拥塞时,最大程度发挥链路传输效率,路由器就必须具备缓存足够的流量能力。因此,相当于有效RTT实际上被延长到了包即将丢弃的最合适时间。当TCP达到它的最大窗口,这是源于可用带宽乘以RTT得到的反馈(BW×RTT),这个值决定了源需要多长的时间从接收端收到ACK响应,当一个报文丢失了是因为网络拥塞的原因,发生端是不会知道的,并且不会马上重新发送,而要等待发送BW×RTT数量的报文(即路由器缓存的深度)以后。这就意味着,TCP数据吞吐量和速率是基于端到端路径上报文可以被发送的数量除以线路传输延迟。如果端到端路径上路由器缓存小于传输延迟乘以带宽(Delay×BW),此时在收到ACK响应前,任何报文都发送不出去,所以中间路由器,必须拥有RTT×BW的缓存,SourceDestmaxW2maxWtWindowsize以优化数据传输性能。TCP吞吐量会按公式下降1/(1+2pw),P,报文丢失概率,W带宽乘以延时。这意味着链路带宽和为了达到最高性能以免报文丢失所需要的缓存大小之间有一个直接的联系。上面的通信过程很枯燥,也很乏味,我们下面结合图形分析路由器线卡缓存在TCP通信过程中起的作用。4.TCP通信过程与缓存、带宽利用率关系深入分析TCP通信初始阶段,如上图所示,左侧圆为发送端,右侧圆为接收端,中间为带有缓存(缓存大小=带宽×报文往返时间)的路由器。下面的箭头表示数据从发送端到接收端,上面箭头表示ACK响应从接收端到发送端。图中下面的坐标表示发送端的发送窗口随时间变化的情形。当一个TCP会话启动时,它首先按慢速启动模式,在第一个报文发送以后,开始等待接收端的ACK回应,ACK回应的时间就是报文往返时间,我们一般称为一个RTT(报文往返时间)。然后TCP马上发送两个报文(即上一次发送数量的两倍),然后等待接收端的回应,这个回应时间同样是RTT,然后下一次是发送4个、再下一次8个报文等,即当收到接收端的ACK响应后,下一次发送报文数量按指数方式进行增长,也就是1、2、4、8、16等。这种每次收到ACK响应双倍于上次发送数量的发送机制受限于发送和接收端之间传输路径带宽。此时缓存中基本上是空的,处于待注入阶段。带宽没有得到充分利用。当发送速率超过线路出口带宽时,此时线路利用率达到100%,缓存开始被用于缓冲发送数据,在缓存不断被注入期间,带宽利用率保持100%。这种慢速启动模式会一直进行,发送速率一直增长,缓存输入速率大于输出速率,缓存一直处于增长阶段,直到报文开始丢弃。终于缓存被注满,再也没有空间来缓存无法从出口发送出去的报文了,开始出现丢包。报文丢弃可以有各种各样的原因,但是最主要是由于链路拥塞发生,即过大的流量争用有限的WAN链路带宽。此时带宽利用率保持100%。当出现丢包时,发送端并不会马上知道,它需要等待接收端的ACK回应。丢失的包信息随着缓存消耗慢慢前移,终于到达接收端。此时带宽利用率保持100%。接收端终于发现有发送过程中有报文丢失,于是发送相关信息到接收端(即对丢失报文序号重传的ACK),此时发送端在收到Drop信息前,仍然按原来速率发送报文。此时带宽利用率保持100%。终于发送端收到了drop消息,于是根据TCP拥塞控制机制,将发送窗口减少到原来的一半,重发刚才丢失的报文,等待接收端对报文的回应,显然,因为缓存的关系,此报文位于队列的最后端,接收端收到重发的报文需要等到缓存的报文全部发送完毕。路由器缓存输出大于输入,缓存开始减少。此时带宽利用率保持100%。因为缓存的输入小于输出,原来缓存的数据会发送完毕,此时接收端终于收到发送端重发的报文,于是向发送端发送ACK回应,于是此时按照TCP拥塞控制机制,发送窗口又开始增长。此时带宽利用率保持100%。慢慢地的发送的速率超过了接口带宽,缓存的输入大于输出,报文又开始在缓存中存储。此时带宽利用率保持100%。周而复始,当缓存满了以后,又开始出现丢包,发送窗口到达最大值。此时带宽利用率保持100%。丢失报文信息经过缓存,到达接收端,接收端向发送端发送ACK(drop)消息。此时带宽利用率保持100%。发送端调节发送窗口为原来的一半,重发丢失报文,等待重发报文的ACK消息。缓存输入小于输出,缓存减少。此时带宽利用率保持为100%。当缓存发送完毕,重发的报文终于被接收端收到,此时接收端向发送端发送ACK消息。发送端收到以后,重新开始逐步加大发送窗口的大小,开始一个新的过程。此时带宽利用率保持100%。发送端收到ACK响应,又重新开始一个新的窗口增加过程。带宽利用率一直保持为100%。综上所述,路由器线卡缓存的目的就是为了适应TCP拥塞控制机制,使得昂贵的广域网端口能够保持在最繁忙的状态,使端到端的通信性能达到最高。为了使出口线路得到最大程度的利用,对路由器缓存的要求就是:缓存=RTT×出口带宽也就是说,路由器线卡必须能缓存RTT的时间,在互联网,RTT一般为200ms,所以,高端路由器必须拥有200ms的缓存。我们可以用下面几个简单的仿真图形说明带宽利用率与缓存容量的关系:当路由器拥有足够的缓存时(buffer=RTT×带宽C)时,我们可以看到TCP流量呈现典型的锯齿形,出口链路带宽利用率保持在后续主要通信阶段一直保持100%水平。路由器的缓存利用率也是锯齿形状,且基本与TCP流量保持对应。当路由器拥有缓存不够时时(bufferRTT×带宽C)时,我们可以看到TCP流量也是呈现典型的锯齿形,但是出口链路带宽利用率不能一直保持100%水平。路由器的缓存利用率为近似锯齿形状,但有一段时间处于饥饿状态,等待缓存注入,就是这段时间,链路的利用率没有达到100%。5.综述TCP拥塞控制机制趋向于占用最大的带宽,确保路由器出口带宽能够得到最大的利用率,发挥最大的通信性能。因此,要求中间的路由器必须具有足够的缓存,根据理论计算和实际经验,要求路由器能够缓存一个报文在网络上缓存的时间,实际缓存容量大小就是出口带宽乘以往返时间:buffer=RTT×BW。根据一般的经验值,互联网上的RTT的典型值是200ms,要求高端路由器的线卡缓存必须达到200ms,这是对高端路由器的基本要求。缓存的报文需要在端到端路径上传输,而不仅仅在运营商边缘网络上。但是,边缘网络是对报文缓存要求最苛刻的点,因为速率不匹配的缘故,边缘网络拥塞现象很严重,上行链路往往收敛很厉害,如许多GE线路汇聚到一个155M端口上,在MAN与WAN互联时,这种情况很典型,这会导致明显的瓶颈,如果路由器缓存能力不够,就会导致报文丢失。在一个LAN环境中,L3一般没有缓存或者缓存很小,这是因为局域网内RTT时间很小,所以不需要很大的缓存,L3也可以工作得很好,这样使得L3很便宜,但是更重要的,L3往往不适宜用于WAN环境。

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功