一种可扩展的全流优先级调度方法

文档序号:7719844阅读:129来源:国知局

专利名称::一种可扩展的全流优先级调度方法
技术领域
:本发明涉及网络管理和网络监控
技术领域
,特别涉及一种可扩展的全流优先级调度方法。
背景技术
:急速增长的用户数量和流量,严重影响关键业务正常使用。如何保障关键业务,进行流量管理是关键。增长带宽,可能暂时解决网络速度变慢的现象,关键业务的网络质量有所改善。然而增长的带宽很快被无休止的增长的非关键业务流量所占据。因此合理分配网络资源,保障关键业务的关键在于(l)如何能够将带宽合理的分配到每个流;(2)如何实施监控和直接控制各种应用流量,根据不同应用程序设置不同的优先级别,以保证对关键业务应用提供快捷、准确的网络服务。为每个流分配一个专有的队列,加上适当的调度出队算法,能够提供带宽分配和服务保障。然而其面临着多个难题高速网络设备中同时存在的流的数目在百万量级,随着网络带宽的进一步增长,流的数目也随之增长。而在高速网络中相邻两个包的时间间隔只有几十纳秒。如果将百万量级的流存储在慢速的DRAM中,不能达到线速处理;而如果将百万的流存储在快速存储器,如SRAM中,成本将很高。流一般定义为网络数据包头具有特定相同域的网络数据包集合(如TCP/IP协议的五元组)。同一个流的网络数据包要求相同的服务等级。当前学术界和工业界广泛采用的方法是以秒或者分钟做为处理时间粒度(即认为在秒或分钟内的存在的流),在此粒度下,系统内流的数目在百万量级。集成服务(IntServ)做为调度结构的先驱,它为每个同时存在的流保留资源,由于其处理的流数目在百万量级。所以其处理复杂度高,限制了其广泛应用。另外的一种思路是采用ASIC硬件加速队列组织和调度,然而该种方法开发周期长,成本高,在通用硬件中应用并不广泛。另外一种在Li皿x系统中广泛使用的调度算法CBQ(Class-BasedQueueing)MainpageofCBQ.www.icir.org/floyd/cbq.html米用树的组织结构,根节点表示真个带宽资源,其下每个子节点代表一种资源分配单位,不同的分支根据策略可以采用不同的调度算法。然而该算法仅适合处理高度聚类的流,如果要处理细粒度的流,如一个具有相同五元组(源IP,源端口,目的IP,目的端口,协议)的流,该树结构的高度将变得很大,从而处理复杂度高。
发明内容(—)发明目的本发明的目的是提供一种可扩展的全流优先级调度方法,该方法实现了全流的服务区分和带宽保证。
发明内容—种可扩展的全流优先级调度方法,该方法将相同优先级的流分为一组,组间按优先级调度,组内按差额轮询方式调度,包括以下步骤SI:接收网络数据包,解析所述网络数据包流标签;S2:根据流标签计算网络数据包组内出队列顺序,并将网络数据包插入到所属流队列;S3:网络数据包组间按优先级、组内按出队列顺序出队列;S4:将网络数据包发送出去。其中,所述步骤S2包括步骤根据流标签检查网络数据包所属流是否存在于活跃流表中;计算网络数据包组内出队列顺序,若所属流存在于活跃流表中,将所属流的网络数据包数加l,否则,获取流的优先级,申请一个该流的空队列,并初始化该流的调度信息;将所述网络数据包插入所属的流队列;流队列所在优先级组的网络数据包数加1;判断所述优先级组的网络数据包数是否为l,若是,则将比特向量中所述优先级组对应的比特向量位设为1。其中,所述步骤S2还包括步骤当所述流不存在于活跃流表时,将该流插入到活跃流表尾部,并建立流和流队列动态映射关系。其中,所述步骤S3包括步骤找到一个具有最高优先级的非空优先级组;取得所述优先级组上的一轮链表头的网络数据包,并更新网络数据包所在流的剩余配额;判断所述流的配额是否大于所述网络数据包的长度,若是,所述网络数据包出队列,并更新所述流的配额、网络数据包数以及所述优先级组的网络数据包数,否则更新所述优先级组出队轮;判断所述流的网络数据包数是否为O,若是,在活跃流表中删除所述流并更新所述优先级组出队轮,否则,直接更新所述优先级组出队轮;所述优先级组的网络数据包数减1;判断所述优先级组中网络数据包数是否为O,若是,将比特向量中所述优先级组对应的比特向量位设为O,否则结束。其中,所述初始化流的调度信息包括初始化流中的网络数据包数、流的配额和流的当前剩余配额。—种可扩展的全流优先级调度系统,包括网络数据包接收模块,用于接收网络数据包,并解析所述网络数据包流标签;网络数据包入队列模块,用于根据流标签计算网络数据包组内出队列顺序,并将网络数据包插入到所属流队列;网络数据包出队列模块,用于网络数据包组间按优先级、组内按出队列顺序出队列;网络数据包发送模块,用于将网络数据包发送出去。其中,所述网络数据包入队列模块包括活跃流表中流查询模块,用于根据流标签查询网络数据包所属流是否存在于活跃流表中;5流队列准备模块,用于计算网络数据包组内出队列顺序,若所属流存在于活跃流表中,将所属流的网络数据包数加l,否则,获取流的优先级,申请一个该流的空队列,并初始化该流的调度信息;流队列插入模块,用于将网络数据包插入所属的流队列;优先级组更新模块,用于将流队列所在优先级组的网络数据包数加1;比特向量设置模块,用于判断所述优先级组的网络数据包数是否为l,若是,则将比特向量中所述优先级组对应的比特向量位设为1。其中,所述网络数据包出队列模块包括最高非空优先级组查找模块,用于找到一个具有最高优先级的非空优先级组;调度轮链表头的网络数据包获取模块,用于取得所述优先级组上的一轮链表头的网络数据包,并更新网络数据包所在流的剩余配额;出队列判断模块,用于判断所述流的配额是否大于所述网络数据包的长度,若是,所述网络数据包出队列,并更新所述流的配额、网络数据包数以及所述优先级组的网络数据包数,否则更新所述优先级组出队轮;流的网络数据包数判断模块,用于判断所述流的网络数据包数是否为O,若是,在活跃流表中删除所述流并更新所述优先级组出队轮,否则,直接更新所述优先级组出队轮;优先级组更新模块,用于将所述优先级组的网络数据包数减1;比特向量设置模块,用于判断所述优先级组中网络数据包数是否为0,若是,将比特向量中所述优先级组对应的比特向量位设为O,否则结束。(三)有益效果本发明提出的可扩展的全流优先级调度方法实现了全流的服务区分和带宽保证,通过合成流量的实验,表明本方法确实在服务保证上有较高的性能。图1是根据本发明的可扩展的全流优先级调度方法的基本流程图;图2是根据本发明的可扩展的全流优先级调度方法的进队列流程图;图3是根据本发明的可扩展的全流优先级调度方法的出队列流程图;图4是根据本发明的可扩展的全流优先级调度方法的实验中三个不同流的活跃流表长度图;图5是根据本发明的可扩展的全流优先级调度方法的实验中不同速率流相对偏差的累积概率分布曲线。具体实施例方式本发明提出的可扩展的全流优先级调度方法,简称AFL-SFQ-DRR(活跃流表_严格优先级队列_差额轮询调度)方法,将相同优先级的流分为一组,组间按优先级调度,组内按差额轮询方式调度。结合如下。如图1所示,步骤Sl接收网络数据包p,并解析网络数据包流标签fi,流标签用以下数据结构描述Header{int32sIP,dIP;〃32位源地址和目标地址int16sPort,dPort;〃32位源端口和目标端口int8protocol;〃8位协议};步骤S2根据流标签计算网络数据包组内出队列顺序,并将网络数据包插入到所属流队列。如图2所示,该步骤中,根据流标签fi查询该网络数据包所属流fi_>qk是否存在于活跃流表中;若存在,将所属流的网络数据包数加1,即fi_>PktNum++,否则获取流的优先级(由网络系统管理员事先设定,O为优先级最高,以下递减),申请一个该流的空队列qk,若有优先级组pri的优先级与该空队列的优先级相同,则将该空队列加入该优先级组,否则,该空队列为一个优先级组pri,随后初始化该流的调度信息,即初始化流中的网络数据包数fi_>PktsN咖=1,流的配额fi_>Quantum=Qi(—个给定值)和流的当前剩余配额fi->DC=0;在入队前计算该网络数据包p的出队轮,然后直接将网络数据包p放到出队轮所对应的队列qk中,即网络数据包所属的流队列;将流队列所在的优先级组pri的网络数据包数加1;判断该优先级组pri的网络数据包数是否为l,若是则将比特向量中所述优先级组pri对应的比特向量位设为l,否则不对比特向量做任何处理;当网络数据包P所属流不存在于活跃流表中时,还要将所属流加入活跃流表尾部,并建立流和流队列动态映射关系。其中活跃流表用于记录流的特征,由于在进队时需要计算每个流的差额,权重等,以确定出队顺序,为加快进队运算,将调度的差额等,写入到活跃流表Entry中。因为表项操作包括插入与删除,所以采用双链表结构。其数据结构如下所示AFLEntry{Headerhead;intl6Queuelndexint16Quantum;int32ByteN咖;iht32PacketN咖;int32priority;AFLEntry*pre;AFLEntry*next;};其中head存储流标签;Queuelndex为动态分配队列的索引;Quantum为为流分配的配额,ByteNum为当前流的字节数,PacketNum为网络数据包数。Priority为流的优先级。charPriorityGroup[16]来存储优先级组,其组数一般为2的整数次幂,如128,为维护以上向量,需要记录当前组内网络数据包数,所以需要有一个向量记录每个组内当前网络数据包的数目lnt32PGPacketNum[128]。为快速索引到非空的最高优先级组,采用一个位向量,每比特代表一个优先级组。如果对应组为非空,则该比特为l,否则为O。优先级调7度时,检查比特向量,调度第一个非空比特对应的组。步骤S3,网络数据包组间按优先级、组内按出队列顺序出队列,即当优先级组i为空时,组(i+1)才有能获得调度,组内的出队顺序在入队时已确定。如图3所示,该步骤中,根据比特向量找到一个具有最高优先级的非空优先级组K;取得该优先级组上的一轮链表头的网络数据包P,并更新网络数据包P所在流fi的剩余配额,即;fi->DC+=fi->Quantum;判断该流的配额fi_>DC是否8大于所述网络数据包p的长度,若是,所述网络数据包出队列,并更新所述流的配额fi_>DC-=fi->Quantum,网络数据包数fi_>PksNum—以及优先级组K的网络数据包数K->PksNum—,否则更新所述优先级组出队轮K->dequeuer0und++;判断流fi的网络数据包数是否为0,若是,从活跃流表中删除该流fi,并更新所述优先级组出队轮K->dequeuer0und++,否则,直接更新所述优先级组出队轮K->dequeuer0und++;优先级组K的网络数据包数减1;判断优先级组K中网络数据包数是否为O,若是,将比特向量中所述优先级组K对应的比特向量位设为O,否则结束。其中,低优先级的出队可能被高优先级队列中断,为了保持低优先级队列出队的顺序性,int32LastDequeueRound[128]为每个组保存上一次出队位置。每个优先级组内,出队顺序已经在进队时确定。其结构为每轮调度的链表。出队时顺序访问链表即可。该机制仅在SRAM中存储每个链表的头和尾部指针。系统同时存在的出队轮数为M,为简化处理将其看成2的整数次幂。如256。Packe洲o皿dHead[256];Packet氺Ro皿dRear[256];本发明还提出了一种可扩展的全流优先级调度系统,该系统包括网络数据包接收模块,用于接收网络数据包,并解析所述网络数据包流标签;网络数据包入队列模块,用于根据流标签计算网络数据包组内出队列顺序,并将网络数据包插入到所属流队列;网络数据包出队列模块,用于网络数据包组间按优先级、组内按出队列顺序出队列;网络数据包发送模块,用于将网络数据包发送出去。其中,所述网络数据包入队列模块包括活跃流表中流查询模块,用于根据流标签查询网络数据包所属流是否存在于活跃流表中;流队列准备模块,用于计算网络数据包组内出队列顺序,若所属流存在于活跃流表中,将所属流的网络数据包数加l,否则,获取流的优先级,申请一个该流的空队列,并初始化该流的调度信息;流队列插入模块,用于将网络数据包插入所属的流队列;优先级组更新模块,用于将流队列所在优先级组的网络数据包数加1;比特向量设置模块,用于判断所述优先级组的网络数据包数是否为l,若是,则将比特向量中所述优先级组对应的比特向量位设为1。其中,所述网络数据包出队列模块包括最高非空优先级组查找模块,用于找到一个具有最高优先级的非空优先级组;调度轮链表头的网络数据包获取模块,用于取得所述优先级组上的一轮链表头的网络数据包,并更新网络数据包所在流的剩余配额;出队列判断模块,用于判断所述流的配额是否大于所述网络数据包的长度,若是,所述网络数据包出队列,并更新所述流的配额、网络数据包数以及所述优先级组的网络数据包数,否则更新所述优先级组出队轮;流的网络数据包数判断模块,用于判断所述流的网络数据包数是否为O,若是,在活跃流表中删除所述流并更新所述优先级组出队轮,否则,直接更新所述优先级组出队轮;优先级组更新模块,用于将所述优先级组的网络数据包数减1;比特向量设置模块,用于判断所述优先级组中网络数据包数是否为0,若是,将比特向量中所述优先级组对应的比特向量位设为O,否则结束。以下是本发明的可扩展的全流优先级调度方法的性能比较。测试数据采用真实流量和仿真流量的合成。将真实流量作为背景流,向其添加不同速率的流以检验本发明的性能。为增加本发明的可信性,真实流量采用了NLANR提供的0C3、0C48和0C192三种不同速率的流。通过调整,使负载都为0.95。其活跃流的分布如图4所示。从中可以看到,最坏情况下活跃流仅为256,远小于表一中的并发流的数目(flowsinprogress)。表1流信息统计<table>tableseeoriginaldocumentpage9</column></row><table>向真实流量中合成1、8、16、32、64、128六种不同速率的仿真流量用作被保护流。每个网络数据包的大小为1024byte。比较通过活跃流表的三种机制对流的保护效果。本方法简称为AFL-SFQ-DRR(活跃流表_严格优先级队列_差额轮询调度)。另外两种为AFL-FIFO和AFL-DRR。相邻网络数据包的时延是测试网速的一个重要指标。此处定义期待时间=网络数据包长度/流速而相对偏差定义为相对偏差=(实验结果_期待时间)/期待时间。从图5(a)1Mbps流的相对偏差、(b)32Mbps流的相对偏差和(c)128Mbps流的相对偏差中可看出本方法的相对偏差较小,如图中蓝色曲线所示。本方法可扩展的全流优先级调度方法通过使用活跃流表,仅为系统中同时存在的流动态绑定物理队列,从而实现了全流队列。在此基础上增加了两层调度策略,实现了全流的服务区分和带宽保证。通过合成流量的实验,表明本方法确实在服务保证上有较高的性能。随着互联网的广泛应用,各种应用的兴起,对网络有着不同的时延和带宽要求。通过细粒度的服务区分和带宽保证,直接关系到每应用的推广和用户体验。本方法通过采用全流优先级调度,并且整个数据结构限制在高速SRAM中,使其易于在高速网络中使用和扩展。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关
技术领域
的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。权利要求一种可扩展的全流优先级调度方法,其特征在于,将相同优先级的流分为一组,组间按优先级调度,组内按差额轮询方式调度,包括以下步骤S1接收网络数据包,解析所述网络数据包流标签;S2根据流标签计算网络数据包组内出队列顺序,并将网络数据包插入到所属流队列;S3网络数据包组间按优先级、组内按出队列顺序出队列;S4将网络数据包发送出去。2.如权利要求1所述的可扩展的全流优先级调度方法,其特征在于,所述步骤S2包括步骤根据流标签检查网络数据包所属流是否存在于活跃流表中;计算网络数据包组内出队列顺序,若所属流存在于活跃流表中,将所属流的网络数据包数加l,否则,获取流的优先级,申请一个该流的空队列,并初始化该流的调度信息;将所述网络数据包插入所属的流队列;流队列所在优先级组的网络数据包数加1;判断所述优先级组的网络数据包数是否为l,若是,则将比特向量中所述优先级组对应的比特向量位设为l。3.如权利要求2所述的可扩展的全流优先级调度方法,其特征在于,所述步骤S2还包括步骤当所述流不存在于活跃流表时,将该流插入到活跃流表尾部,并建立流和流队列动态映射关系。4.如权利要求1所述的可扩展的全流优先级调度方法,其特征在于,所述步骤S3包括步骤找到一个具有最高优先级的非空优先级组;取得所述优先级组上的一轮链表头的网络数据包,并更新网络数据包所在流的剩余配额;判断所述流的配额是否大于所述网络数据包的长度,若是,所述网络数据包出队列,并更新所述流的配额、网络数据包数以及所述优先级组的网络数据包数,否则更新所述优先级组出队轮;判断所述流的网络数据包数是否为O,若是,在活跃表中删除所述流并更新所述优先级组出队轮,否则,直接更新所述优先级组出队轮;所述优先级组的网络数据包数减1;判断所述优先级组中网络数据包数是否为0,若是,将比特向量中所述优先级组对应的比特向量位设为O,否则结束。5.如权利要求2或4所述的可扩展的全流优先级调度方法,其特征在于,所述初始化流的调度信息包括初始化流中的网络数据包数、流的配额和流的当前剩余配额。6.—种可扩展的全流优先级调度系统,其特征在于,包括网络数据包接收模块,用于接收网络数据包,并解析所述网络数据包流标签;网络数据包入队列模块,用于根据流标签计算网络数据包组内出队列顺序,并将网络数据包插入到所属流队列;网络数据包出队列模块,用于网络数据包组间按优先级、组内按出队列顺序出队列;网络数据包发送模块,用于将网络数据包发送出去。7.如权利要求6所述的可扩展的全流优先级调度系统,其特征在于,所述网络数据包入队列模块包括活跃流表中流查询模块,用于根据流标签查询网络数据包所属流是否存在于活跃流表中;流队列准备模块,用于计算网络数据包组内出队列顺序,若所属流存在于活跃流表中,将所属流的网络数据包数加l,否则,获取流的优先级,申请一个该流的空队列,并初始化该流的调度信息;流队列插入模块,用于将网络数据包插入所属的流队列;优先级组更新模块,用于将流队列所在优先级组的网络数据包数加1;比特向量设置模块,用于判断所述优先级组的网络数据包数是否为l,若是,则将比特向量中所述优先级组对应的比特向量位设为1。8.如权利要求6所述的可扩展的全流优先级调度系统,其特征在于,所述网络数据包出队列模块包括最高非空优先级组查找模块,用于找到一个具有最高优先级的非空优先级组;调度轮链表头的网络数据包获取模块,用于取得所述优先级组上的一轮链表头的网络数据包,并更新网络数据包所在流的剩余配额;出队列判断模块,用于判断所述流的配额是否大于所述网络数据包的长度,若是,所述网络数据包出队列,并更新所述流的配额、网络数据包数以及所述优先级组的网络数据包数,否则更新所述优先级组出队轮;流的网络数据包数判断模块,用于判断所述流的网络数据包数是否为0,若是,则在活跃流表中删除所述流并更新所述优先级组出队轮,否则,直接更新所述优先级组出队轮;优先级组更新模块,用于将所述优先级组的网络数据包数减1;比特向量设置模块,用于判断所述优先级组中网络数据包数是否为O,若是,将比特向量中所述优先级组对应的比特向量位设为O,否则结束。全文摘要本发明公开了一种可扩展的全流优先级调度方法,所述方法将同优先级的流分为一组,组间按优先级调度,组内按差额轮询方式调度,包括以下步骤接收网络数据包,检查所述网络数据包流标签;根据流标签将网络数据包插入到所属流队列,同时计算组内出队列顺序;网络数据包按组间优先级、组内出队列顺序出队列;将网络数据包发送出去。该方法通过使用活跃流表,仅为系统中同时存在的流动态绑定物理队列,从而实现了全流队列。在此基础上增加了两层调度策略,实现了细粒度全流的服务区分和带宽保证,通过合成流量的实验,表明本方法确实在服务保证上有较高的性能。文档编号H04L12/56GK101714947SQ20091023681公开日2010年5月26日申请日期2009年10月30日优先权日2009年10月30日发明者李军,李国栋,薛一波,陈震申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1