本节书摘来自异步社区《Cisco QoS认证考试指南(第2版)》一书中的第6章,第6.3节流量限速和流量整形概念,作者 【美】Wendell Odom , Michael J. Cavanaugh,更多章节内容可以访问云栖社区“异步社区”公众号查看
6.3 流量限速和流量整形概念
Cisco QoS认证考试指南(第2版)
流量整形和流量限速都会测量发送或接收数据的速率。限速特性会丢弃超出门限值的数据包,使整体限速后的速率不会超出设定。整形特性会将超出门限值的数据包排到队列中,并以整形速率发送这条队列中的数据包。无论是哪种方法,限速和整形都用来预防流量超出限速器或整形器设定的比特率。
这一部分介绍了与整形和限速相关的概念,首先说明使用整形和限速的动机。使用整形特性的一个经典理由是链路对端的设备启用了限速特性。举例来说,假设R1属于一家企业,R2属于一个ISP。R1向R2发送数据包,R2对收到的流量实施了限速,即它会丢弃超出x bit/s的流量。ISP会选择在R2进行限速,是为了预防自己的网络接收过多的流量。R1可以对其流量进行整形,使用与R2限速器设定速率相同的速率向R2发送流量,这样可以避免R2丢弃超出设定速率的数据包。还有其他一些理由让工程师使用整形和限速,接下来我们会一一讨论。
本节还介绍了用来执行整形和限速功能的机制。比如限速器和整形器都必须测量比特率。为了测量速率,必须观察并计算一段时间内的流量比特或字节。为了简化流程,整形和限速使用类似的机制来计算流量比特或字节。但现在,我们先介绍使用整形和限速的动机。
6.3.1 使用整形和限速的时间和地点
在大多数情况下,整形和限速分别实施在两个不同网络的边界上。以图6-1为例,这里描绘了两个整形和限速的常见案例。图中显示了PB帐篷公司的网络,它使用帧中继服务,并通过ISP1来连接Internet。
在本例中,PB帐篷公司分别有3个边界连接不同的网络。链路1是第一个边界,位于R1和帧中继网络交换机FRS1之间。第二个边界位于交换机FRS2和R2之间。最后,还有一个边界位于R3和ISP-R1之间,标记为链路3。
对于每个边界,分别有法律文件详细地写明PB帐篷和帧中继服务提供商之间的协议,以及PB帐篷与ISP1之间的协议,其中包括流量契约(Traffic Contract)。这种契约用在帧中继环境中更为合理,但也可以应用于Internet连接。举例来说,R2使用T1访问链路连接到帧中继网络。但R2和R1之间VC上的CIR(承诺信息速率,Committed Information Rate)只有64 kbit/s。类似地,R1拥有128 kbit/s访问链路,但在连接R2的VC上,CIR为64 kbit/s。那么在R1发送数据包时,数据包的传输速率是128 kbit/s——因为物理链路只能以这个速率工作!同样,R2必须以1.5 Mbit/s的速率发送数据包。但是流量契约中声明在R1和R2之间的VC上,任意方向只允许使用64 kbit/s。
PB帐篷和ISP1之间协商使用一条比PB帐篷现有需求更快速的链路,为PB帐篷Internet流量负载在未来的增长留出余量。当PB帐篷需要更多流量容量来访问Internet时,它们双方就需要达成一个新的流量契约,PB帐篷也要付给ISP1更多的钱。比如都市中以太/快速以太/吉比特以太网服务正变得越来越普遍;但大多数站点实际上并不需要100 Mbit/s带宽来连接Internet。若PB帐篷使用快速以太网链路来连接ISP1,并且流量契约中声明PB帐篷可以使用2 Mbit/s带宽服务,那么在Internet连接上,物理容量和合约容量之间也出现了不匹配,这与帧中继链路的情况相同。
简而言之,当出现路由器能够发送的流量多于流量契约所允许的流量时,就需要使用限速和整形。整形特性会降低数据包的发送速率,使实际流量不会超出流量契约的限制。限速特性会丢弃一些数据包,来保证实际流量不超出流量契约的限制。
1.限速:何时?何地?
只要物理始终速率超出了流量契约的限制,就可能需要使用限速特性。举例来说,ISP1拥有1000个客户,与PB帐篷相同,每个客户使用一条100 Mbit/s的连接,并且流量契约支持2 Mbit/s带宽。随着时间的推移会发生什么事?若没有任何机制的介入,每个客户都会发送和接收越来越多的流量。在短时间内,所有客户都会很高兴,因为它们通过ISP1核心的数据包数量远大于契约限制。即使ISP1有足够的带宽容量来为每个客户提供10 Mbit/s带宽,最终ISP1的网络会变得超载,因为所有客户都不停地发送越来越多的流量,最终所有流量的质量都会降低。队列常常排满,导致丢包的频繁发生。多媒体流量会由于高延迟和高抖动而获得糟糕的质量。TCP连接会由于丢包而缩小窗口大小,这会在ISP1中导致同步问题。ISP1可以扩容,但这很大程度上意味着ISP1应该向客户收取更多的钱,但客户可能并不愿意签下更高的流量契约。
在真实的ISP网络中,网络工程师在设计网络核心时,考虑到了一定程度上的超额订阅。术语“超额订阅(Oversubscription)”是指客户发送和接收的流量大于契约或订阅流量。在前文ISP1的案例中,ISP和帧中继提供商在建立网络时也考虑到了一定程度的超额订阅。但是它们在建立网络时,肯定不会假设所有客户无论何时,都以访问速率发送流量。
限速特性可以保护网络,使之不会出现流量超载的情况。若ISP1限制了每个客户的速率,并丢弃超出流量契约的数据包,那么它就可以保护自己的网络,使之不会出现流量超载的情况。但是为网络实施限速,有一定的政策性困难。假设ISP拥有1000个客户,每个客户的流量契约都是2 Mbit/s。每个客户都发送和接收更多的流量,平均为10 Mbit/s,导致ISP1的网络变得拥塞。ISP1决定实施限速特性,使用契约速率进行限速,丢弃超出2 Mbit/s的数据包。当然大多数客户会非常不高兴!这个选择不是会导致业务终结,就是会导致职业生涯的完结。
限速器也可以只是标记下流量,而并不丢弃流量。在这种情况下,限速器会在实际流量超出速率限制时,以不同的IP优先级或DSCP值来标记数据包,但仍让数据包通过。在此之后的QoS功能,其中包括限速器和丢包工具(比如WRED,加权随即早期检测),对比与未被标记过的数据包,会更积极地丢弃被标记过的数据包。本质上,若流量速率超出了速率限制,限速器可以增加后续数据包在网络中被丢弃的可能性。通常来讲,若限速器标记了数据包,但网络当前没有拥塞,那么数据包还是可以穿越网络的;若网络拥塞了,则数据包更有可能被丢弃。
ISP需要决定是否进行限速,以及限速到什么程度。ISP的选择精简为以下三个基本选项。
不限速——为了支持所有流量,建立网络时要预计所有客户都以访问链路的时钟速率发送和接收流量。对于销售来说,可以通过声明不实施限速来达成交易,但要鼓励那些超出契约限制的客户购买更多的带宽。
以契约速率进行限速——为了支持这些流量,只需使网络能够支持所有契约速率的总和即可,即使这样一来核心网络在支持新客户时可能会超载。对于销售来说,要鼓励那些开始超出契约限制的客户升级契约,并为其提供一些鼓励措施。
以契约速率和访问链路始终速率之间的一个值进行限速——比如ISP1可以将PB帐篷限速为5 Mbit/s,但契约限制为2 Mbit/s。可以将网络建设为仅支持所有限速速率的总和。销售团队可以在客户持续超出契约速率时,鼓励客户购买更高的契约速率;但要以为其提供远高于契约速率的流量,来显示运营商的大度,并维持客户的高满意度。
在多路访问WAN链路(帧中继和ATM网络)中限速特性也很有用,原因与ISP连接需要限速相同。一旦允许以高于契约速率的速率发送数据,当多个站点同时以更高的速率发送流量时,网络就面临着超载的危险。举一个例子来帮助你理解一些问题。图6-2描绘了PB帐篷的网络结构,它拥有12个分支站点,1个中心站点。
每个站点都可以以128 kbit/s的速率发送流量,但每个分支去往主站点的VC上的CIR为64 kbit/s。若所有12个站点都遵从各自的CIR,帧中继网络应该可以处理这些负载。若所有12个站点长时间发送128 kbit/s流量,运营商可能仍可以继续转发流量,因为多数帧中继提供商会将它们的核心网络建得容量大一些。它们也会将这一点当作营销宣传的亮点,即客户可以免费获得额外的带宽。
当然了,在一定程度上,若运营商的所有客户都以完整的线路速率发送数据包,一段时间后,网络很可能会拥塞。帧中继网络与ISP拥有相同的选择——不限速,但提供更多容量;以CIR进行限速,并处理销售和客户满意度问题;以高于CIR的速率进行限速,以不同的方式处理销售和客户满意度问题。
为了对图6-2所示网络进行限速,可以在帧中继交换机上执行限速特性,或者在路由器上执行。传统上,会在数据包进入网络的时候执行限速,因此建议当数据包从客户网络进入帧中继交换机时执行限速。若运营商可以控制企业网络中的边缘路由器,那么也可以在数据包离开路由器去往帧中继云的时候执行限速特性。如果客户负责控制云边界的路由器,对于运营商来说,在这些路由器上实施限速策略可能有些风险,因为可能有些客户会关闭限速,以获得更多的免费容量。
Cisco QoS考试中涉及IOS路由器中的限速特性(使用CB限速)考试并不涉及帧中继交换机或LAN交换机中的限速,但它们的基本概念是相同的。
2.流量整形:何时?何地?
网络中使用流量整形主要出于以下两个原因:
以与限速速率相同的速率来整形流量(如果运营商对流量进行了限速);
为了避免出向阻塞的影响。
以图6-3所示的分支1和分支24为例。分支1没有实施限速,分支24限速为96 kbit/s。对于两个站点来说,帧中继交换机上都配置了96 kbit/s的限速(每条VC上的CIR都是64 kbit/s。因此运营商实施的限速并不严格。PB帐篷的工程师希望能够获得更多的带宽,因此将整形速率设置为96 kbit/s,而不是使用64 kbit/s的CIR)。
对于分支1来说,由于没有启用整形特性,R1就不会延迟发送任何数据包。但是FRS1上实施的限速特性会在R1的流量速率超出96 kbit/s时,丢弃一些数据包。因此有一些数据包会被丢弃,尽管未被丢弃的数据包不会经历额外的整形延迟。如果分支1的流量对丢包不敏感,但可能对延迟和抖动敏感的话,使用这个策略是合理的。
对于分支24来说,由于启用了整形特性,R1会延迟发送一些数据包。FRS3上执行的限速特性不会丢弃数据包,因为R1不会发送超出96 kbit/s的流量。因此不会有数据包被丢弃,尽管有一些数据包会经历更多的延迟和抖动。若分支24的流量对丢包敏感,但对延迟和抖动不敏感的话,使用这个策略是合理的。
使用整形的另一个理由是为了避免出向阻塞的影响。出向阻塞发生在数据包试图离开多路访问WAN(比如帧中继和ATM)的时候,由于拥塞数据包无法离开网络。汽车的交通模式也会导致与出向阻塞相同的行为问题。比如在早晨,人们都试图去往大城市的市中心。即使城市中的公路有8条车道,但所有住在周围小镇的人们都在每天早晨7点至8点之间试图从公路仅有的几个出口离开。市中心地区的公路和出口会变得拥塞。同样地,在下午,若每个人都试图在17:30通过一个出口去往郊区,八道公路到两道出口公路之间会变得拥塞。类似地,尽管网络中拥有足够多的带宽容量,出向阻塞仍会发生在数据包试图离开网络的时候。
图6-4以帧中继网络为例,展示了出向阻塞带来的问题。
假设所有24个分支都整形为64 kbit/s。若所有分支同时发送64 kbit/s,那么所有分支向主站点发送的总流量为1.5 Mbit/s。因为主站点路由器安装有T1链路,因此FRS2在通过访问链路向主站点路由器转发数据包时不会经历拥塞。但是若分支站点没有启用整形特性会怎么样?若所有24个分支都以128 kbit/s(访问速率)发送流量,一段时间后,积累的流量负载可能会达到3 Mbit/s。数据包在试图离开FRS2的接口(连接主站点路由器)时会开始排队。数据包可能会遭遇更多延迟、更多抖动,最终会有更多数据包被丢弃,因为FRS2的输出队列排满了。要注意,运营商并没有实施任何限速——出向阻塞仍会发生,因为分支站点的总流量会超出出向链路(云和主站点之间)的负载。
有趣的是,即使启用限速,在分支启用整形,出向阻塞可能仍会发生。在图6-3中,整形和限速都配置为96 kbit/s,因为运营商不想太严格地执行流量契约。若所有24各分支同时发送96 kbit/s流量,那么将有2.25 Mbit/s流量需要离开FRS2,去往主站点路由器。再说一次,即使启用了限速和整形,出向阻塞仍可能发生。
同样地,出向阻塞也可以发生在图中从右到左的方向上。假设主站点路由器从LAN接口接收到11个连续的1500字节数据包,去往分支24。主站点路由器大概要花费100毫秒的时间,将数据包发送到帧中继网络中,因为它的访问链路是T1。当数据帧到达FRS1,它们需要通过访问链路被发送到R24。但是这条访问链路的访问速率是128 kbit/s。为了发送这11个数据包,需要花费1秒多的时间将数据包串行化到链路上!大多数数据包会在FRS3的输出队列中等待被发送。这个简单的场景是另一个出向阻塞的案例,有时也称为速率不匹配(Speed Mismatch)。
应对出向阻塞问题的一个解决方案是流量整形。在案例网络中,将所有分支上的VC都整形为64 kbit/s,可以确保总负载不会超过主站点的访问速率。同样地,若主站点路由器将R1的VC整形为64 kbit/s,甚至整形为128 kbit/s,也就解决了FRS1上的出向阻塞问题。
在上述两个整形环境中,延迟和抖动会随着启用整形功能而增加。路由器中的整形延迟代替了帧中继交换机中的队列延迟,因为数据包会排列在路由器的整形队列中。随着路由器中队列的形成,IOS中的队列工具可以用来更好地处理流量,并为延迟敏感的流量提供更好的延迟参数。举例来说,路由器中形成了整形队列,路由器可以使用LLQ(低延迟队列)来优先发送队列中的VoIP(IP语音)数据包。帧中继交换机无法实施复杂的队列,因为做出转发和队列决策时,帧中继交换机无法查看帧中继或IP头部之外的字段。