Diffserv体系结构中路由器的实现


服务提供商和企业一般建造并维护不同的网络来承载语音、视频、要害任务和非要害任务通信 , 然而现在越来越趋向于将所有这些网络融合为单一的基于分组的IP网络 。
最大的IP网络当然是Internet , 它的使用和基于Internet的应用的数量在过去几年里呈指数级增长 。由于Internet和企业内部网的持续发展 , 人们提出了非传统数据应用 , 例如IP语音( VoIP) 以及视频会议 。天天都有越来越多的用户和应用出现在Internet上 , 所以Internet需要能够同时支持已有的和新出现的应用和服务 。然而 , 当前的Internet只能够提供尽力而为的服务 , 而尽力而为的服务并不提供关于数据分组何时或是否被传送给接收方的服务保证 。
1994年 , IETF成立了Intserv (集成服务) 工作组 , 扩展Internet服务模型 , 以更好地满足新出现的各种语音/视频应用程序的需要 。它的目标是清楚地定义新的增强型Internet服务模型 , 并为应用程序提供使用路由器支持机制和子网技术表达端到端资源要求的手段 , 旨在分别治理需要特定QoS的流 。但Intserv模型要求在Internet上保证每个流的QoS , 由于现在的Internet上有成千上万的流 , 因此路由器需要的状态信息量非凡大 。随着流数目的增加 , 状态信息量也将增加 , 这将导致扩展性问题 , 从而使得Interserv难以在Internet上部署 。1998年 , IETF成立了Diffserv(区分服务)工作组 。Diffserv是联系Intserv的保证QoS要求和目前Internet所提供的尽力而为服务的桥梁 , 通过将通信分成几类并为之提供相关的服务优先级来区分通信 。
一、Diffserv体系结构原理
区分服务(Diffserv)模型的提出源于集成服务模型暴露出的种种缺陷 , IETF为此制定这个相对扩展性较强的方案来保证IP网络的服务质量QoS 。
Diffserv体系模型的核心思想是:在网络边界将数据流按QoS要求进行简单分类 , 不同的类别在内部节点的每次转发中实现不同的转发特性 。Diffserv体系使得ISP能够提供给每个用户不同等级和质量的服务 。用户(或网络边界节点)通过设置每个数据包的DS字段(IPv4首标中的服务类型(ToS)字段或Ipv6首标中的通信类(Traffic Class)字段)的值要求特定的服务等级 。其中 , 被设置的DS字段被称为区分服务码点(DSCP) 。在每个支持Diffserv的网络节点中 , 这个DS值将数据报映射到一类转发行为PHB(Per-Hop Behavior)中去 , 从而在转发中区别对待 。用户和ISP之间有一个协定 , 此协定规定了该用户在每个服务等级上所能发送的最大数据率 。超过此最大速率的数据包或被丢弃 , 或无法享受到它所要求的服务 。Diffserv网络最大的特征是其可扩容性 。此体系将许多复杂的控制移到了网络边界 , 使内部节点能对叠加之后的数据流进行处理 , 而不必对每个数据流分别处理 , 从而大大减小了网络内部应该记录的状态 , 简化了网络内部节点的操作 。
在Diffserv体系中定义了三种服务质量,分别为尽力而为服务(BE)、奖赏服务(EF)和保证服务(AF) , 其中奖赏服务是指将网络带宽中的一小部分带宽分配给奖赏服务用户使用 , 主要用于实时服务;而保证服务是提供比尽力而为服务尽可能好的服务质量 , 其与尽力而为服务的区别在于当网络拥塞时先丢弃尽力而为分组 。
二、 Diffserv体系结构中路由器的实现
边缘路由器的实现机制 。分组由输入接口进入路由器进行处理 , 最后通过输出接口对分组进行转发 。
首先 , 分组从输入接口进入路由器 , 路由器中的分类器将对分组的IP报头中的DS字段的数值进行检查 , 对分组进行分类 。分组分类后进入标记模块 , 标记器的工作过程 , 在标记器中对AF分组使用RIO算法(该算法将在下一章具体介绍) , 而AF和Best Effort分组直接输出 。AF分组进入标记器后 , 标记器检查是否有足够的令牌转发该分组 , 若有足够的令牌 , 则该分组直接进入输出接口转发;若没有足够的令牌 , 则标记器将该分组标记为Best Effort(Out)分组后 , 再输出该分组 。分组标记后 , 假如分组为EF分组 , 则分组将送到测量器模块 , 若分组为Best-Effort或AF分组 , 则该分组将被直接送到转发模块 。测量器模块使用令牌桶机制 , 令牌桶包括两个参数:令牌产生速率和令牌桶容量 。令牌桶以指定速率产生 , 当令牌桶满时 , 产生的令牌将全部丢弃 。当分组到达测量器时 , 测量器检查是否有足够的令牌 。若没有足够的令牌 , 则分组将被丢弃;若有足够的令牌 , 则分组将进入转发模块 。转发模块的功能是查找路由器 , 找出转发分组的输出接口 。整形器的实现与测量器相似 , 其与测量器的不同之处在于测量器当没有令牌时丢弃分组 , 而整形器却将分组首先放到缓冲区内 , 当令牌桶有足够令牌时再将分组转发 , 只有当缓冲区满时才会丢弃分组 。
测量器的工作过程 。分组经过分类器处理后 , Best Effort和AF分组直接进入转发模块而不进入测量器进行处理 , 而EF分组进入测量器 。在测量器中 , 令牌的产生速率为r bit/s , 该速率应该与分配给EF服务的最大传输速率相同 。当EF分组进入测量器时 , 若令牌桶中有令牌 , 则该分组进入转发模块;若令牌桶中没有足够的令牌 , 说明EF分组的速率超出了分配给EF服务的最大传输速率 , 所以丢弃该分组 。
整形器的工作过程 。整形器检查是否有足够的令牌转发该分组 , 若有足够的令牌 , 则该分组直接进入输出接口转发;或没有足够的分组和足够的令牌 , 则将该分组放入缓冲区中 , 当整形器有足够的令牌时 , 再将该分组发送到输出接口 , 只有当缓冲器区满时才丢弃该分组 。在输出接口使用CBQ算法对AF、EF、Best Effort分组流分配带宽 。
在路由器输出接口 , 采用CBQ(Class Based Queuing for Bandwidth)机制进行带宽分配 。它包括加权公平排队(WFQ)、公平排队(FQ)等功能 。CBQ可以控制所有的信息类型 , 包括非IP和非TCP通信 , 如语音信息 。它支持精确的全速率带宽分配 , 并可同步执行优先级和带宽治理 。在该区分服务体系结构中CBQ机制的带宽分配体系结构中有三种服务等级:EF、AF和Best Effort , 其中 , EF可动态分配最高到x%的输出接口带宽并拥有比AF、Best Effort更高的优先级;而AF和Best Effort共享剩余的带宽 , 即在最坏的情况下 , AF和Best Effort可共享到(100-x)的输出接口带宽 。
核心路由器与边缘路由器的区别在于它没有标记器、测量器和整形器 。
 三、 性能分析
为了测试该体系结构并分析该体系结构的性能 , 使用ns2对该体系结构进行了仿真 , 由于BE和AF原理相同 , 只是网络拥塞时丢弃概率不同 , 所以该仿真只对BE和EF进行仿真 。该拓扑包括三个主机和一个路由器 , 其中B为路由器 , C和D是发送主机 , A为接收主机 , C主机发送EF通信流 , 而D主机发送BE通信流 。C主机和D主机都按8Mbit/s的恒定速率发送分组 , 而系统为C主机提供4Mbit/s的EF服务 。每条链路的带宽都为10Mbit/s , 对于B路由器其测量器的令牌桶参数为[4Mbit/s , 20000byte] , 其整形器的令牌桶参数为[10Mbit/s , 20000byte] 。
在t=800s时只有主机D的EF通信流在网络中传输 。可以看出 , 虽然主机D以8Mbit/s的速率发送分组 , 但路由器B只为其提供4Mbit/s的EF服务 , 所以经过路由器B的测量器处理后该通信流按4Mbit/s的速率转发 。在t=810s时主机C开始发送BE通信流 。可以看出 , EF通信流并未受到影响 。由于在路由器的输出接口对通信流进行整形 , 所以BE通信流在路由器B的输出接口得到6Mbit/s的输出接口带宽 。在t=850s主机D停止EF通信流的发送 , 这时BE通信流马上占用整个带宽 。可以看出该结构实现了Diffserv体系结构资源的动态分布 , 在EF服务得到保证的同时最大可能的传输BE分组 。
在未来的Internet支持一定的QoS保证将成为发展必然趋势 , 而Diffserv体系结构正是针对这个问题而提出的一种解决方案 。路由器是Diffserv体系结构的核心器件 , 是实现Diffserv体系结构的最要害技术 。
本文对Diffserv体系结构的路由器进行了较为深入的分析并进行了仿真 , 从仿真结果可以看出:该路由器实现了资源的动态分布 , 在EF服务得到保证的同时最大可能地传输BE分组 。