荆 倩,沈三民
(中北大学 仪器科学与动态测试教育部重点实验室,太原 030051)
很多互联网服务供应商(Internet Service Provider,ISP)已经开始部署千兆无源光网络(Gigabit Passive Optical Network, GPON)系统,以应对客户迅速增长的带宽需求[1]。GPON支持高数据速率,其中下行为2.5 Gbit/s,上行为1.25 Gbit/s。其最多可以将64个光网络单元(Optical Network Unit, ONU)连接到1个分路器上。但对于一些新服务,如分辨率不断增长(4k或8k)的视频广播互联网协议电视(Internet Protocol Television, IPTV)来说,GPON的带宽依然无法满足要求[2]。这就需要开发出支持更高传输速率的技术。
为此,研究人员做了很多相关研究。目前,下一代10 Gbit/s无源光网络 (next Generation 10 Gbit/s Passive Optical Network, XG-PON)的最终规范已经被标准化为ITU-T G.987系列,其规定了一些通用要求[3],例如:XG-PON的参考配置,光分配网络(Optical Distribution Network, ODN)架构(包含或不包含与以往标准GPON方案的共存),工作波长和迁移场景等[4]。文献[5]为了支持语音、视频等多业务,保证不同的服务质量(Quality of Service, QoS)和有效克服轻载惩罚问题,提出了一种支持多业务的以太网无源光网络(Ethernet Passive Optical Network, EPON)动态带宽分配(Dynamic Bandwidth Allocation,DBA)算法;文献[6]提出了GIANT算法的修改版本,即X-GIANT算法,并尝试改进XG-PON网络中QoS参数;文献[7]针对PON接入技术和现有各种带宽分配算法存在的不足,基于数据服务优先级划分和ONU队列管理机制,提出了一种DBA算法;文献[8]提出了用于XG-PON的一种DBA方案,即数据挖掘预测,该方案处理了ODN范围为40 km时不同ONU距离下的使用情况;文献[9]为了合理分配EPON上行信道带宽,提出了一种能够区分服务等级的固定周期轮询DBA算法,该算法将ONU的业务分为3个等级,根据不同的业务等级动态分配上行带宽,有效保证整个EPON的QoS以及带宽分配的公平性;文献[10]提出了带“公平性”的DBA算法,对所有ONU应用最大最小公平DBA算法。虽然DBA算法可以改变最小带宽分配,但其依然会为受保护的传输容器(T-CONT)分配所保留。总的来说,文献[11]的实验结果表明,用于EPON的DBA不能直接用于XG-PON中,因为其服务延迟非常大。
本文的主要研究目标是降低XG-PON中“三合一”服务的延迟。文中提出了用于XG-PON的改进的GIANT DBA算法,比较了当前未修改的GIANT算法与本文所提的改进GIANT算法的结果,并详细解释了本文为降低“三合一”服务延迟所作出的改进。
DBA算法的主要目的是公平分配PON中的每个ONU在上行方向上的带宽,下行方向则广播所有ONU,并由指定的ONU(与帧中的参数完全相同)接收。另一方面,上行方向由光线路终端(Optical Line Terminal,OLT)通过时隙控制。换言之,时分复用将带宽分为时隙,并按需求将带宽分配至ONU。
OLT使用每个传输帧的带宽映射(Band Width mapping, BWmap)部分指定分配标识(Allocation Identification, Alloc-ID)、启动时间、授权大小、动态带宽报告和其他字段。通过Alloc-ID识别ONU,启动时间是指ONU在上行方向启动数据传输的时间,授权大小表示在上行方向上特定Alloc-ID的总数据量,并报告下一个上行帧中的需求(即数据大小)。具体的Alloc-ID及其提供的负载可以表示为
式中:B(t)为时间t内的缓冲区占用;D为某一固定时长;A(t,t+D)为在时间间隔(t,t+D)过程中新进入缓冲区的流。
OLT必须保证在负载较重的情况下对ONU公平地分配动态带宽[12]。若存在两个ONU,且第1个ONU的负载较重,而第2个ONU没有需要传输的数据,则OLT必须确保分配至ONU1的时隙大于ONU2。ONU周期性地向OLT单元报告其缓冲区占用情况,可以通过两种方式实现报告:(1)状态报告;(2)流量报告。状态报告需要ONU和OLT协作,因为每个ONU都发送其自身缓冲区占用的相关信息,该信息包含在下一代传输汇聚帧的动态带宽报告字段中,OLT则根据缓冲区占用的相关信息来划分时隙。流量报告则通过ONU数据流的处理授予带宽。
轮询法是网络模拟器(Network Simulator, NS)-3的DBA算法的简单实现,特别是在XG-PON包中使用的算法。该算法的原理为:一定量的任务,每个任务依次运行,但前提是其持有循环令牌。在XG-PON包的实现中,是指每个周期内每个T-CONT的位元组字段数量。每个ONU队列处理的最小时间可表示为
式中:T为每个ONU/T-CONT的处理时间(ONU能够发送数据);C为一个周期的时长;N为ONU的总数量。该方法的缺陷在于:T的数值较小时会增加OLT的处理时间。
GIANT算法必须先定义其所使用的T-CONT。T-CONT是一组流,其仅在上行方向有意义,而Alloc-ID仅存在于每个PON的命名空间中,T-CONT的外部标识符是分等级的[13]。通常,T-CONT可以分为以下4类:
(1) T-CONT1:具有最高优先级的固定带宽(如语音服务),指所有的ISP向网络中的客户确保最低带宽;
(2) T-CONT2:具有第2高优先级的保证带宽(如IPTV服务);
(3) T-CONT3:具有较高优先级的非保证带宽;
(4) T-CONT4:文件传送协议(File Transfer Protocol, FTP)或简单网络管理协议等,具有最低优先级的尽力服务带宽。
本文GIANT DBA算法在第一次迭代中通过T-CONT的优先级划分带宽,将T-CONT1的带宽分配给每个Alloc-ID。一般互联网络中,所有客户保证带宽的T-CONT1为64 kbit/s,保证带宽不能超过RA(RA为保证带宽阈值),并向其分配非保证带宽RNA,直到T-CONT的可用带宽耗尽为止。GIANT的最大和最小服务间隔表示为SImax和SImin,这些标识符代表着带宽要求。此外,标识符ABmin和ABsur分别为最小分配字节和剩余分配字节。
GIANT算法动态地为T-CONT1和T-CONT2确定AB和SImax的数值,并询问T-CONT4和T-CONT3。每当SI定时器过期时,为对应的T-CONT重新分配AB。
值得一提的是,媒体接入控制器在分配过程的每个周期内制定决策。ONU可以添加多个Alloc-ID,如果添加一个新Alloc-ID,那么控制器将检测可用资源,并验证总分配带宽是否超过总链路容量。保证服务速率等于ABmin/SImax,其中剩余容量等于ABsur/SImin。保证容量和剩余容量之和为T-CONT3的允许总带宽。
剩余带宽的分配必须首先检查T-CONT处理的对象是T-CONT3还是T-CONT4,以及SImin定时器是否大于1。若定时器大于1,则将其按1递减。此外,当确定指针启动的T-CONT3帧字节数等于0时,则添加后续序列中Alloc-ID减1的T-CONT3。也即:若启动指针为N,新数值为N+i(i为迭代次数),在下一次迭代中,将检查下一个请求是否大于0和SImin是否等于0,然后分配剩余带宽。
传统方案在每个轮询周期对T-CONT1、T-CONT2、T-CONT3和T-CONT4依次进行分配,先对T-CONT1静态分配固定带宽,然后分配T-CONT2和T-CONT3的确保带宽,最后分配T-CONT4的尽力而为带宽。根据优先级顺序进行2次分配。与传统方案相比,本文方法根据处理对象和定时器对带宽进行动态分配,总体时间复杂度与传统方案相差不大,但对象分配的带宽有差异,从而导致服务的延迟有所不同。
图1所示为本文所提GIANT DBA算法仿真模型的基本拓扑结构,包括OLT、ONU、客户端和服务器。由于NS-3无法考虑到物理层参数,包括光纤长度、分光比、OLT和ONU之间的不同距离等,所以服务器必须纳入其中。这些服务器包括视频点播(Video on Demand, VoD)服务器、超文本传输协议(Hyper Text Transfer Protocol, HTTP)服务器以及互联网协议电话(Voice over Internet Protocol, VoIP)服务器。该组服务器通过1 Gbit/s的线路与OLT互连,延迟时间为2 ms。ONU包括一台个人计算机,其表示服务消耗,采用了相同的线路参数。VoD服务的数据速率为10 Mbit/s,停止时间设为0,表示在整个模拟过程中该服务始终保持开启运行。将VoIP设为标准数据速率64 kbit/s。由HTTP服务器生成HTTP流量,数据速率为1 Mbit/s。
图1 本文所提GIANT DBA算法仿真模型的基本拓扑结构
本文准备了两个模拟场景:第1个场景使用轮询DBA,没有给出缓冲区分配的动态报告。第2个场景使用了本文所提GIANT DBA算法。为了比较两种算法,本文对每个场景进行了两种不同的模拟:(1)64个ONU(XG-PON单个OLT端口的理想化模型);(2)过载接口,其中200个ONU连接到该接口。
在第1个场景中,使用轮询DBA算法,另一种方法是未修改的GIANT DBA算法。两个算法均应用到T-CONT代表的所有服务中,模型包括3个服务,以观察流量延迟。64个ONU的延迟仅为6~7 ms,因为OLT单元能够为每个ONU授予足够的带宽,如图2所示。由图可知,丢包率为0,总带宽等于服务所需带宽之和。VoIP的延迟几乎保持不变,不会在通话期间造成任何干扰或回声;通过ONU或机顶盒中的缓冲服务,降低VoD的抖动;网页浏览HTTP代表着具有较高优先级的T-CONT2。
图2 不使用DBA算法时的传输延迟
需要注意的是,NS-3不能通过在QoS Tag库中标记数据包,将数据包分配到现实的T-CONT中,其使用标签对每个数据包进行标记,但在本文仿真中使用了通过节点的IP地址对数据包进行模拟标记,修改后的拓扑结构如图3所示。
图3 GIANT DBA算法修改后的拓扑
使用所提GIANT DBA算法对64个ONU的场景再次进行模拟。图4所示为使用本文所提GIANT DBA算法时的传输延迟。仿真结果与预期相符,GIANT DBA算法的结果较好,每个ONU的延迟更低。将GIANT DBA算法应用到OLT单元,VoD服务的延迟得到了明显改善。
图4 使用GIANT DBA算法时的传输延迟
本文在使用和不使用DBA算法的模拟中,对数据包丢失数量进行了比较,如图5所示,由图可知,两者之间存在明显差异。在不使用DBA轮询的模拟中,每个ONU的丢包数量大约为4 000个。但当使用未修改的GIANT DBA算法时,由于VoD的数据是单独处理的且采用随机序列,一些ONU的丢包数为300个。
图5 使用和不使用DBA算法时的丢包数量对比
NS-3利用回调函数提供一些数据包获得的细节,如处理数据包数量或丢包数量。在配置回调函数后,其可以调用指定函数以提供结果。在该函数中,可以创建运行时间的计算或记录。例如,NS-3模拟工具可以在数据包因为堆栈溢出而被丢弃时随时调用该函数。一方面,回调函数仅适用于点对点(Point to Point, P2P)链路,但NS-3的XG-PON包中没有包含回调的实施,因此,其无法得到更多关于数据包丢失的数据;另一方面,由于所有数据都存储在一个集合中,可以得到每个数据包的发送和接收时间。
在第2个场景中,使用本文所提的改进GIANT DBA算法,并将其与未修改的GIANT DBA进行比较。使用的拓扑相同,包括1个OLT、64个ONU(每个ONU包含3种服务:数据、视频和语音)。改进算法首先检查T-CONT的缓冲区占用,并根据T-CONT的类型分配适当的带宽。如果保证带宽的缓冲区占用超过1,则存在3种情况:(1) 若缓冲区占用<4,则分配数值=4;(2) OLT检查BWmap(包含BWmap分配使用历史的数据库),以得到过去是否对该ONU进行过分配;(3) 检查分配带宽是否等于分配字节。
通常,只有在该类型的T-CONT的定时器过期(即等于0)时才测试这些条件,这表明定时器未过期,也表示T-CONT没有紧急数据,且在下一轮减少1。
在仿真中,所有的服务是一起测试的,为了更好地说明问题,每个服务如图6~ 8所示。由图6可知,与使用未修改GIANT DBA算法相比,本文所提方法将HTTP服务的延迟分别降低了0.8和0.3 ms;由图7可知,在VoD服务中,未修改GIANT DBA算法的平均延迟为6.4 ms,而本文所提的改进方法则将ODN上每个ONU的延迟降低了0.35 ms;由图8可知,对于VoIP服务,本文所提的方法降低了约0.2 ms的延迟,这些充分说明了本文改进方法的有效性。
图6 HTTP服务的传输延迟对比
图7 VoD服务的传输延迟对比
图8 VoIP服务的传输延迟对比
本文提出了XG-PON GIANT DBA算法,并提出了缩减服务延迟的改进方案。除使用具有最高优先级T-CONT1的VoIP服务外,每个服务的延迟均得到了降低,这是因为T-CONT1不使用DBA,其在初始化阶段即被授予保证带宽,是具有最高优先级的固定带宽,属于静态分配,T-CONT1的VoIP服务延迟几乎保持不变。本文所提改进GIANT DBA算法将HTTP服务和VoD服务的延迟分别降低了0.30和0.35 ms,实现了较好的网络性能。