Juniper网络公司 Matt Kolon
尽管从本质上讲,IP网络不适于话音业务,但是对于寻求融合网络所提供的效率、扩展性和集成优势的话音网络设计人员来说,IP网络已被证明是一个不可抗拒的目标。网络建设者借助现代路由器的业务级别(CoS)功能,可以将话音与“尽力而为”数据业务整合在一起,组成极具诱惑力的个人和企业业务套餐。
描述在无连接数据网络上传输话音业务的问题是一件轻松的事情,但解决这些问题却相当困难,在同时承载数据业务的网络上尤为如此。主要的问题是时延、抖动和数据包丢失。为了满足话音通信的质量要求,网络设计人员的主要办法是融合网络上的路由器所提供的数据包处理与传输方案,有效设计与使用这些数据包处理能力可以使原本质量很差、几乎无法使用的VoIP业务与传统电话业务的质量不相上下。而且,灵活的数据包处理能力还可以帮助人们高效、均衡地利用网络资源,这是多业务网络实现盈利所必需的。
一、什么是IP CoS?
对于IP CoS的叫法,学术界一直争论不休,但不管怎么定义,IP CoS功能是网络区分不同应用并进行差别对待的功能的最常用名称。CoS只不过是对具有某些特性的数据包进行优先处理。比如,融合网络应确保话音数据包按照以下方式进行处理:在时延、抖动与丢包指标的容限内将语音数据包送至目的地。为了做到这一点,网络可能必须延迟,甚至丢掉非话音业务。这种做法是不得已而为之,但要优于降低话音质量的方法,在后一种做法中,话音质量可能无法令人接受。
任何一个CoS模型均都包含多种功能,但简单的话音CoS模型可能具备下列功能:
能够区分话音业务与数据业务的业务分类;
在内存中分别规定语音和数据缓冲区的排队机制;
用于清空队列、允许进行优先传输并执行拥塞控制与流量整形等其他功能的缓冲调度机制。
策略操作,比如过滤、警管、速率限制、标记、记录、基于策略的路由等操作,允许用户定义某一特定业务等级的控制机制。
下面我们更详细地介绍CoS模型的各种功能:
1. 分类
为了按照成功提供业务的要求处理每一种类型的业务,必须首先能够区分并识别业务类型。在无连接网络中,通常必需分析每个数据包,根据包头中的某些显性或隐性数据为其指定一个业务级别。比如,显性CoS信息可能包含在IP包头的TOS字节(也称为diffserv字节)中,或在MPLS包头的EXP字段中。
对于按照这种方式从路由网络中导出特定的CoS的数据包来说,数据包到达网络边缘时必须进行标记,但这种标记极其复杂。VoIP网关与软交换机向话音业务分配TOS或diffserv代码的方式有所区别——事实上,某些VoIP网关和软交换机根本不能显性地对业务进行标记。对于特定类型的业务应当使用哪种类型的代码,供应商与网络实施供应商也有不同的意见。这导致某些路由器供应商在其产品中嵌入多业务分类功能,这样路由器就能分析数据包的任何包头的任何字段,并使用隐性信息指定所需的业务级别。比如,可以对一个路由器进行配置,让其寻找包含RTP(实时传输协议,在某些架构中用于传输话音业务)包头的IP包并为它们分配CoS。
2. 排队
一旦对数据包进行分类并采取了基于策略的操作,这些数据包必须缓存少量时间,以便按照数据包相应级别所适用的模型等待传输。排队只是在瞬间拥塞的情况下才显得重要,因此,在对网络进行正确配置的情况下,数据包就不必在队列中等待。(还需指出:除非在其前面有其他的数据包,否则数据包排队的过程并不影响转发性能。)每个业务级别通常需要自己的排队缓冲空间,并且所需的空间大小是业务进入与离开队列的速度、允许数据包等待传输的最大时长的函数。在VoIP与其他实时业务中,缓冲区空间相对较小,因为对于接收端网关来说,话音业务如排队太长,将变得毫无用处并被忽略。因此,由于排队缓冲空间不足导致的偶然丢包的损失并不是太大。
3. 调度
在CoS模型中,也许最复杂的部分就是严格确定传输不同级别数据包的间隔,以便使每类业务具备所需的业务特性,且不对其他业务造成太大影响。最简单的调度规则就是FIFO(先进先出),即数据包按照它们达到的顺序传输。从实施的角度看,这是有吸引力的,但该简单方式本身有不少问题。即便对简单的融合话音与数据网络来说,如果按时间均匀间隔,大小相对较小的话音数据包的传输也将面临增加时延、抖动与丢包的问题,因为在一个又一个的路由器中,这些数据包被迫排在大小更大、长度可变的数据包后面。将话音与数据包分别放入它们自己的缓冲区,并按照业务的需求处理每个缓冲区就会更有意义。对于多队列调度来说,有不同的方式,每个方式都有自己的优缺点:
优先排队允许为每个队列指定优先级,并对队列进行处理,以便话音队列总是在数据队列之前清空。这实施起来简单,也容易理解,但可能导致数据包时延与丢包率过高,因为数据包要等待话音队列清空。PQ变量(称为速率控制型优先排队)能够让网络设计人员规定话音队列占用带宽的限值,以防止数据业务完全中断。
公平排队机制试图通过为每个话音或数据流指定自己的队列并按照循环顺序处理每个队列,克服优先排队的局限,使每个队列达到更加一致且可以预测的服务水平,但这对路由器内存与处理能力提出了严格的要求。
加权公平排队为每个队列分配一个与所需带宽百分比相对应的权重,,并决定是否处理某一特定队列时考虑到数据包的长度。这有助于为某一特定业务级别可能遇到的延迟设定一个界限,但实施起来很复杂。
加权循环排队试图通过确保适当处理要求迥异的业务流来克服上述局限性。该机制允许每次在进行处理时,一个队列发送一个以上的数据包。做到这一点的同时仍然确保公平对待所有队列是一个难以处理的问题。目前业界已对这种机制进行了一系列改进,并且开发出多种变体。
这些只是简单的描述,每种排队方法的具体处理方式要复杂得多。在此只是用于简要说明讨论话音与数据融合网络的CoS需求的复杂性。各厂商并非要使用单一模型,通常情况下会实施混合调度模型。这通常允许用户配置上面所述的许多参数,以定制特定类型的业务的处理方式。
4. 策略操作
最后,经常必需能够针对具体数据流、业务级别或数据包采取其他基于策略操作。例子之一就是TOS或CoS重写,路由器显性地对数据包进行标记,指示数据包通过网络传输时应当赋予的业务级别。换句话来说,如果必须在网络边缘进行多字段分类,可以在传输过程中设置数据包的TOS或diffserv值,以标记属于某一特定级别的数据包。这样,后续的路由器就不需要进行多字段分类,只需了解显性的CoS并对数据包进行相应的处理。更重要地是,这意味着只有位于网络边缘的路由器需要配置多字段分类信息,因而减少了运营工作。
5. 功能合一
从上面描述的众多方案可以看出,制订一个综合性CoS方案有多种方式,与网络类型的数量不相上下。对于一个给定的业务组合来说,选择并实现CoS的途径的困难不仅在于确定业务本身的需求、确定它们在网络上如何交互,而且还在于确定如何从路由器与其他构成基础设施的设备引出所需的行为。
考虑到排队处理等方法的复杂性,将CoS看成一个极端复杂的问题是理所当然的,对其进行规划并分析只意味着繁重的数学运算。在某些试图将多种类型的实时、近实时与非实时业务的传输整合在一起的多维、多业务网络上,这毫无疑问是正确的,但对于相当比较简单的语音和“尽力而为”数据业务的融合来说,这显然是不正确的。一个人可以毕生研究排队理论、处理算法与CoS功能的其他方面,但某些简单的普通网络规划往往能够令人吃惊地很好解决供应商当前所面临的大部分融合话音与数据CoS问题,因为他们致力于实现相对简单的目标。
尽量避免话音与数据业务相互干扰;
保持话音质量,甚至牺牲“尽力而为”数据业务,以保持话音质量。
将这些需求转换为合理的路由配置自然不是那么简单,但也不像通常描绘的那样困难。围绕以下几条基本原则,我们可以大大简化话音与“尽力而为”数据融合网络的部署:
在网络边缘进行一次性分类。如果语音网关或软交换机能够显性地标记话音数据包,核心路由器就不需要进行多字段分类,这就更好了。
转发性能可大大弥补不足。抖动指标总不理想,但在低时延情况下更加容易忍受。
在选择缓冲调度方案时,确保路由器能处理负荷。某些调度方案需要很高的处理能力,有些路由器则使用非优化架构实现缓冲调度。这将带来新的问题,比其解决的问题还要多,因为CoS机制实际上增加了某些业务等级的延迟与抖动。带有基于硬件的调度程序的路由平台能够在速度非常高的接口上实施有效的CoS。
简单总是很好,尤其在CoS的设计上。从简单的设计入手,可以边推出业务边观察结果。利用通过实际开展业务获得的反馈信息调整业务级别与相对简单的CoS参数。只有当没有其他的方式能够实现目标时,才加大复杂性。
IP协议的设计人员从来都无法预测到这些协议会用于话音等实时业务,尤其是与其他类型的“尽力而为”业务混合使用。但是,这些协议本身的适应能力,再加上路由器CoS功能的增强,能够让网络环境适应挑战。与许多其他事情一样,解决CoS问题的关键是不让技术牵着鼻子走,也不能迷失要实现的目标。
----《通信世界》