IP网络流量控制技术的应用及发展
2012-09-06鲁旭涛赵晓东翟蓓蓓
鲁旭涛,赵晓东,翟蓓蓓
(中北大学信息与通信工程学院,山西太原 030051)
在Internet上传输的流量大部分是TCP(Transmission Control Protocol传输控制协议,TCP是一种面向连接的、可靠的、基于字节流的运输层通信协议)流量和UDP(User Datagram Protocol的简称,中文名是用户数据包协议,是OSI参考模型中一种无连接的传输层协议)流量。通常所谓的关键任务应用一般都采用TCP作为传输协议,因此保证TCP的传输性是保证关键任务服务质量的重点,提高TCP的传输性才能保证关键业务流量的传输的稳定性。UDP是Internet中被广泛采用的传输流媒体的协议。UDP协议最核心的问题是它没有传输层的流量控制机制,而缺乏流量控制机制的UDP流量会导致网络资源的不公平利用,同时影响TCP流量的性能。因此,必须对TCP和UDP流量进行管理控制,以实现有效的带宽利用。
目前,中国网通和中国电信正在积极地开展VoIP电话试点运营业务,同时也在采取各种措施规范P2P应用。针对这一现状,中太数据作为国内资深的电信解决方案和产品提供商,率先推出了为国内运营商量身打造的智能流量控制系统—Bgate6030。结合中太数据完善的智能流量解决方案,该产品将有效地帮助运营商从VoIP电话和P2P下载的困境中解脱出来,并尝试创新的赢利点,同时为电信用户提供更加优质的服务。
1 网络流量控制技术
流量控制器主要部署在企业内网的边缘,如图1所示,网络流量控制器部署在企业内网和连接外网的路由器之间,对进/出企业内网的流量进行控制。
图1 流量控制器在网络中部署的位置
网络流量控制模型一般包括流量分类器、流量整形器、流量监测器和队列管理器等几个部分。分类器的功能是按照不同的优先级或者控制策略,把数据包注入到不同的队列;整形器的功能是使数据包比较平稳地注入网络,减少拥塞的发生,提高传输效率;监测器是对网络控制模块实施效果进行监测分析,打印报表等;队列管理器的功能主要是队列缓存管理以及队列调度管理,这些与业务的带宽分配有关。
2 流量控制器的设计与实现
2.1 NS2仿真平台
NS2(Network Simulator,version2)是一种面向对象的网络仿真器,由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都是由离散事件驱动的。目前,NS2可以用于仿真各种不同的IP网,已经实现了的一些仿真有:网络传输协议,比如TCP和UDP;业务源流量产生器,比如FTO、Telnet、Web、CBR和 VBR;路由队列管理机制,比如 Drog-Trail、RED和CBQ;路由算法,比如Dijkstra等。NS2也为进行局域网的仿真而实现了多播以及一些MAC子层协议。NS2使用C++和Otcl作为开发语言。
除了网络组件对象以外,NS的另一主要组件就是事件调度器。NS中的一个事件就是一个具有唯一ID的分组,这个分组内包含调度时间以及指向该事件的对象的指针。事件调度器计算(Keep Track of)仿真时间,并且激活事件队列中的当前事件(主要是通过激活适当的网络组件),执行一些相关的事件(通常都是那些发出事件的对象),网络组件通过传递分组(Packet)来互相通信,但是这并不耗费仿真时间。所有需要花费仿真事件来处理分组的网络组件(比如一个延时部件)都必须使用时间调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。
当某个仿真完成后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用来下一步的分析处理,也可以使用NAM将整个仿真过程展现出来,它具有类似CD播放器的图像界面(播放、快进、倒带、暂停等)和一个播放速率控制器。此外,它还能够图形化地展示诸如链路吞吐率以及分组丢失数之类的信息,尽管这些信息并不能用于准确的仿真分析。
2.2 流量控制模块实现
网络流量控制涉及流量分类(Classification)、流量整形(Shaping)、流量监测和统计,以及队列调度管理等方面,是一个比较大的范畴。本论文研究的重点是队列调度管理以及流量整形,以下将对流量控制模块中的队列调度管理子模块和流量整形子模块的实现作详细地阐述。所有的模块都是基于NS2平台实现的。
图2 流量控制模块的实现框架
3 仿真实验
3.1 实验环境构建
本文采用的实验平台是windows 2000+cygwin+ns 2.27。ns从2.26版本开始,就只能运行在linux环境下或者模拟的linux环境下。简单地说,cygwin在windows上提供了一个类似linux(Linux-like)的环境,可以让使用者在windows上执行linux的程序。严格地说,cygwin是模拟了GNU的环境,而不是linux的环境,借着cygwin的函数库(library),在Win32 API环境上提供了类似linux般的API环境,利用cygwin,可以将linux上的程序移植到Windows,而不必做重大的修改,只需将原始码拿来作configure与make就好了。同时可以使用常用的linux工具程序,如grep、sed、awk等。
3.2 实验结果及其分析
表1ADWRR与DWRR端对端时延的比较
表2 ADWRR与DWRR传输时延抖动的比较
表1表示的是在边缘网关中分别应用ADWRR调度算法和DWRR算法,多媒体流端对端平均时延的比较。表2表示的是在边缘网关中分别应用ADWRR调度算法和DWRR算法,多媒体流数据包平均传输时延抖动jitter的比较。
由以上的实验以及实验结果图表可以看出,采用 ADWRR算法可以使多媒体流的端对端传输时延以及传输时延抖动jitter都有所改善。
4 总结
随着以IP为基础的互联网的飞速发展和网络业务的极大丰富,互联网己经逐渐发展成为承载多种业务、服务多类用户群体的全球性公共信息传输平台。但是由于IP协议固有的无连接特性和传统IP网络尽力而为(Best-effort)的服务原则,传统的互联网无法向用户提供有效的服务质量(QoS)保障,也不能实现网络资源的有效监控和管理。
流量控制技术通过对企业内网和Internet之间的进/出流量进行分类、调度、整形等手段来保证关键业务服务质量,如改善实时业务的传输时延、时延抖动等,避免网络拥塞的出现。本文主要完成了以下工作:
(1)研究了支持区分服务的流量控制模型,重点讨论了流量控制模型的队列调度管理模块和流量整形模块常用的算法和策略,为后续改进算法的提出以及流量控制器模块的实现作基础。
(2)在经典的队列调度算法DWRR算法基础上作出改进,提出了ADWRR算法,该算法为每个队列引入两个参数,分别是权值Wi、延迟指数(Delay Index)DIi。该算法解决了实时业务端对端时延以及时延抖动的问题。
(3)在网络仿真工具NS2所提供的网络组件的基础上,应用ADWRR算法,设计并实现了流量控制器的队列调度管理模块和流量整形模块,进行仿真实验并分析仿真结果。
[1]郭长金.基于网络流量控制策略的研究与实现[J].微计算机信息,2007(30):170-171,174.
[2]Netfilter core team.Netfilter[EB/OL],http://www.Netfilter.org,2008-12-29.
[3].现代电信科技,2006(3).
[4]高益,黄俊伟.网络流量控制的分析与设计[J].北京电子科技学院学报,2008(2):68-69.
[5]Lan K C,Heidemann J.A Measurement Study of Correlations of Internet Flow Characteristics[J].Computer Networks,2006,5(1):46-62.
[6]ISC.Internet Domain Survey[EB/OL].2005-8/2006-4.
[7]Huan-yun wei,Shih-Chiang Tsao,Ying-Dar Lin.Assessing and Improving TCP Rate Shaping over Edge Gateways[J].IEEE TRANSACTIONS ON COMPUTERS,2004,53(3).
[8]Bert Hubert.Linux的高级路由和流量控制HOWTO中文版[M].北京:人民邮电出版社,2005.