一种数据报文传输控制方法和装置与流程

文档序号:11732052阅读:470来源:国知局
一种数据报文传输控制方法和装置与流程

本发明涉及通信领域,具体涉及一种数据报文传输控制方法和装置。



背景技术:

随着通信网络和传输技术的发展,为了保证数据在传输过程的均衡性和减少流量的突发,会对进入传输设备端口的数据报文进行流量控制处理,以便更好、更有效的利用带宽。

流量控制一般是通过令牌桶算法来完成,是一种常用到的技术,相关技术标准有rfc2697等;数据报文在传输设备中调度处理时,也是通过该技术来实现数据调度处理,方法处理过程大概如下:

基于一定的速率往令牌桶添加令牌,直到令牌桶溢出;

当有数据报文传输时,调度队列处于非空状态时,需要从令牌桶中消耗相对应数目的令牌个数来实现调度;

通过比较当前令牌桶中的令牌数和队列调度数据报文时所需要消耗的令牌个数,来重新对数据报文着色,最终在决定丢弃还是通过。

通过上面的方法,我们可以对数据报文进行有效的流量控制,但是在实际应用中可能存在以下问题:

在vpn的实际应用场景中,对设备中某一个端口进来的同一优先级数据报文进行限速配置时,如果从端口进来的数据报文有的很长,有的很短,调度时短数据报文比长数据报文抢占令牌的机会大;则会存在一种情况,当长数据报文和短数据报文进来速率一样的时候,或者长数据报文速率更小的时候,长数据报文一个令牌也获取不到,即长数据报文会全部丢弃,出现“饿死”的现象。 同样在vpn的另外一种场景,当对某个vpn进行限速时,属于同一个vpn实例下的不同端口,当进来的长短数据报文速率不同时,也会存在以上提到的情况。



技术实现要素:

本发明要解决的主要技术问题是提供一种数据报文传输控制方法和装置,解决现有数据报文传输过程中短数据报文比长数据报文容易得到令牌导致长数据报文无法得到令牌进而丢弃长数据报文的问题。

为解决上述问题,本发明提供一种数据报文传输控制方法,包括:

获取当前数据报文;

判断当前令牌桶中的令牌数是否大于等于传输上次数据报文透支的令牌透支数;

如果大于等于传输上次数据报文透支的令牌透支数,从当前令牌桶中的令牌数中获取令牌补偿所述令牌透支数;

判断补偿后令牌桶中的令牌数是否大于等于预设传输阈值;

如果大于等于所述预设传输阈值,则允许所述当前数据报文获取令牌进行传输。

在本发明的一种实施例中,当所述上次数据报文的数据报文字节数大于所述预设传输阈值时,所述令牌透支数为所述上次数据报文的数据报文字节数与所述预设传输阈值的差值;

当所述上次数据报文的数据报文字节数小于等于所述预设传输阈值时,所述令牌透支数为0。

在本发明的一种实施例中,判断当前令牌桶中的令牌数小于传输上次数据报文透支的令牌透支数时,则丢弃所述当前数据报文不进行传输。

在本发明的一种实施例中,判断补偿后令牌桶中的令牌数小于所述预设传输阈值时,则丢弃所述当前数据报文不进行传输。

在本发明的一种实施例中,所述预设传输阈值为数据报文的基准定值与比例控制系数的乘积。

在本发明的一种实施例中,所述数据报文的基准定值为最小数据报文的数据报文字节数,所述比例控制系数为1。

为解决上述问题,本发明还提供一种数据报文传输控制装置,包括数据报文获取模块、透支判断模块、令牌补偿模块、传输判断模块和传输控制模块:

所述数据报文获取模块用于获取当前数据报文;

所述透支判断模块用于判断当前令牌桶中的令牌数是否大于等于传输上次数据报文透支的令牌透支数;

所述令牌补偿模块用于如果大于等于传输上次数据报文透支的令牌透支数,从当前令牌桶中的令牌数中获取令牌补偿所述令牌透支数;

所述传输判断模块用于判断补偿后令牌桶中的令牌数是否大于等于预设传输阈值;

所述传输控制模块用于如果大于等于所述预设传输阈值,则允许所述当前数据报文获取令牌进行传输。

在本发明的一种实施例中,当所述上次数据报文的数据报文字节数大于所述预设传输阈值时,所述令牌透支数为所述上次数据报文的数据报文字节数与所述预设传输阈值的差值;

当所述上次数据报文的数据报文字节数小于等于所述预设传输阈值时,所述令牌透支数为0。

在本发明的一种实施例中,所述传输控制模块还用于判断当前令牌桶中的 令牌数小于传输上次数据报文透支的令牌透支数时,则丢弃所述当前数据报文不进行传输。

在本发明的一种实施例中,所述传输控制模块还用于判断补偿后令牌桶中的令牌数小于所述预设传输阈值时,则丢弃所述当前数据报文不进行传输。

在本发明的一种实施例中,所述预设传输阈值为数据报文的基准定值与比例控制系数的乘积。

在本发明的一种实施例中,所述数据报文的基准定值为最小数据报文的数据报文字节数,所述比例控制系数为1。

本发明的有益效果是:

本发明提供的数据报文传输控制方法和装置,获取当前数据报文;判断当前令牌桶中的令牌数是否大于等于传输上次数据报文透支的令牌透支数;如果大于等于传输上次数据报文透支的令牌透支数,从当前令牌桶中的令牌数中获取令牌补偿令牌透支数;判断补偿后令牌桶中的令牌数是否大于等于预设传输阈值;如果大于等于预设传输阈值,则允许当前数据报文获取令牌进行传输。与现有技术相比,不是根据数据报文的长短来进行是否进行传输,而是判断在对令牌透支数进行补偿后,是否满足预设传输阈值,如果满足就进行传输,提高了长短数据报文在传输过程中获取令牌的公正性,能够避免长数据报文无法获取令牌导致报文被丢弃的问题。

附图说明

图1为本发明实施例一提供的数据报文传输控制方法流程示意图;

图2为本发明实施例二提供的数据报文传输控制方法流程示意图;

图3为本发明实施例三提供的数据报文传输控制装置结构示意。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一:

本实施例的数据报文传输控制方法,如图1所示,该方法包括:

步骤s101:获取当前数据报文;

在该步骤中,这里的获取当前数据报文是指当前数据报文进入服务器后,进入队列调度进行时获取该当前数据报文,这里的当前数据报文即可以是长数据报文也可以短数据报文。

步骤s102:判断当前令牌桶中的令牌数是否大于等于传输上次数据报文透支的令牌透支数;

在该步骤中,进行当前令牌桶中的令牌数与令牌透支数的判断主要是要对传输上次数据报文透支的令牌透支数看是否能够偿还。这里的传输上次数据报文是指在当前数据报文进行传输时的前一个数据报文的传输,当然如果当前数据报文是第一个数据报文传输,那么前一个数据报文的传输就为0.也即令牌透支数默认为0。

步骤s103:如果大于等于传输上次数据报文透支的令牌透支数,从当前令牌桶中的令牌数中获取令牌补偿令牌透支数;

在该步骤中,主要是要对传输上次数据报文透支的令牌透支数进行偿还, 也就是从当前令牌桶中的令牌数减去需偿还的令牌透支数得到当前令牌桶中能够使用的令牌数。当然,如果判断当前令牌桶中的令牌数小于传输上次数据报文透支的令牌透支数时,也就表示当前令牌桶中没有可用的令牌了,那么则丢弃当前数据报文不进行传输;具体的可以进行数据报文的标记,便于识别哪些数据报文不通过,不传输进行丢弃,优选的,对丢弃的数据报文进行红色标记。

步骤s104:判断补偿后令牌桶中的令牌数是否大于等于预设传输阈值;

在该步骤中,具体为在进行补偿后的可用的令牌数是否大于等于预设传输阈值,也即判断是否还能进行数据报文传输。这里的预设传输阈值可以根据用户的需要进行具体设置,优选的,可以设置为数据报文的基准定值与比例控制系数的乘积,这里的数据报文的基准定值是指数据报文的一些基准固定字节数,比例控制系数是根据用户需要进行自定义的值。进一步,为了便于对数据报文的控制以及避免令牌的浪费,优选的,数据报文的基准定值为最小数据报文的数据报文字节数,比例控制系数为1;也即设置预设传输阈值为需要进行传输数据报文的最小数据报文的字节数。

步骤s105:如果大于等于预设传输阈值,则允许当前数据报文获取令牌进行传输。

在该步骤中,如果大于等于预设传输阈值,即当前令牌桶中可用的令牌数比预设传输阈值大于或等于,也即还当前还可以进行数据报文的传输,则允许当前数据报文获取令牌进行传输;具体的,可以进行数据报文的标记,便于识别哪些数据报文通过,进行传输,优选的,对通过进行传输的数据报文进行绿色标记。

实施例二:

本实施例的数据报文传输控制方法能够在不影响带宽限速控制的前提下,通过特定的算法来有效的消耗令牌数,避免长字节数据报文在传输过程中“饿死”的情况,提高长字节数据报文的通过几率,达到公平分享带宽的目的。主要过程是当前数据报文进入设备后,进入队列调度时,在一定条件下数据报文是否还能进行传输取决于当前数据报文是否能够取到令牌,并通过合适的阈值来决定数据报文通过所需要的令牌数,不是按数据报文的实际长度来消耗令牌数。如图1所示,该方法包括:

步骤s201:当前数据报文进入队列调度进行;

步骤s202:判断令牌透支数是否为0,如果为0,则进入步骤s206;如果不为0,则进入步骤s203;

在该步骤中,具体的通过变量tkod(tokenoverdrafted,令牌透支数),判断当前tkod是否等于0,来决定是否需要补偿透支的令牌透支数。

步骤s203:比较tkod与当前令牌桶中的令牌个数,如果当前令牌数小于tkod,进入步骤s204;如果当前令牌数大于等于tkod,进入步骤s205;

步骤s204:将当前数据报文着红色并丢弃;

步骤s205:令牌桶中的令牌数减少tkod对应的令牌数;

步骤s206:判断当前令牌数与预设传输阈值thr的大小,如果当前令牌数小于thr,则进入步骤s207;如果当前令牌数大于等于thr,则进入步骤s208;

步骤s207:将当前数据报文着红色并丢弃;

步骤s208:当前令牌数减少thr对应的令牌数,并重新赋值tkod等于当前报文字节长度减去预设传输阈值thr,将报文着绿色并让其通过进行传输。

值得注意的是,如果tkod等于0,表示不需要弥补透支的令牌透支数,然后通过比较thr与当前令牌桶的个数,如果thr小于等于令牌桶的令牌个数, 通过对报文重新着绿色让报文通过进行传输,并将变量tkod重新赋值并保存,tkod等于当前报文长度减去预设传输阈值thr(其中thr=u*con,u为比例控制系数,con为一个基准定值,可取最小数据报文长64(即u=1,con=64),两个参数值的大小在一定程度都会影响长数据报文通过的几率),将令牌个数同样减少thr个;否则将当前数据报文着红色,将当前数据报文丢弃。

举例进行说明,例如配置本地交换业务(vlss),对其中进入ptn设备的某个端口进行10m的端口限速处理。设置初始值端口cir=10m,比例控制系数u=1,预设传输阈值thr=64,tkod=0,令牌桶中的令牌个数要求大于或者等于数据传输时最长报文数据的字节数;测试时,对该端口进行发流10m320字节和10m80字节的数据报文;为了更好的说明该实例,假设令牌桶的大小=400,令牌桶中的令牌个数为初始值大小。数据报文从该某个端口分别以10m的速率往端口发数据报文时,在数据报文在进行传输控制时,320字节和80字节进入队列存缓存区域中出现的概率是1:4。

分析过程入下:

第一个80字节数据报文进队列调度时,初始值tkod=0,则说明该数据报文有机会从令牌中获取令牌,不需要弥补上一次数据报文透支的令牌透支数;判断当前令牌桶中令牌数是否大于64,如果大于64,则说明满足条件可以消耗64个令牌,并将tkod赋值为16,即当前数据报文长度减去阈值thr令牌数相应减少64,则令牌数剩余336个,数据报文着绿色并让其通过;如果小于等于64,则将数据报文着红色丢弃。

第二个80字节数据报文进来时,判断tkod是否等于0;tkod等于16,不等于0,说明该数据报文需要先“弥补”透支令牌即补偿透支的令牌透支数,才能有机会从令牌桶中获取令牌;

判断tkod是否小于等于当前令牌数;tkod等于16,小于令牌数336,满足条件;先减去16,令牌数变为320。

继续判断当前令牌数是否大于等于64;现在令牌数等于320,大于64个,则可以取走相应的令牌数64个,剩余令牌数位256个;并对tkod重新赋值为80-64=16,将数据报文着色绿色,数据报文通过。

第三个80字节数据报文进来时,判断tkod是否等于0;tkod等于16,不等于0,说明该数据报文需要先“弥补”透支令牌,才能有机会从令牌桶中获取令牌;

判断tkod是否小于等于当前令牌数;tkod等于16,小于令牌数256,满足条件;先减去16,令牌数变为240。

继续判断当前令牌数是否大于等于64;现在令牌数等于240,大于64个,则可以取走相应的令牌数64个,剩余令牌数176个;并对tkod重新赋值为80-64=16,将数据报文着色绿色,数据报文通过。

第四个80字节数据报文进来时,判断tkod是否等于0;tkod等于16,不等于0,说明该数据报文需要先“弥补”透支令牌,才能有机会从令牌桶中获取令牌;

判断tkod是否小于等于当前令牌数;tokd等于16,小于令牌数176,满足条件;先减去16,令牌数变为160。

继续判断当前令牌数是否大于等于64;现在令牌数等于160,大于64个,则可以取走相应的令牌数64个,剩余令牌数位96个;并对tkod重新赋值为80-64=16,将数据报文着色绿色,数据报文通过。

第五个为320字节的数据报文进来时,判断tkod是否等于0;tkod等于16,不等于0,说明该数据报文需要先“弥补”透支令牌,才能有机会从令牌桶中获 取令牌;

判断tkod是否小于等于当前令牌数;tkod等于16,小于令牌数96,满足条件;先减去16,令牌数变为80。

继续判断当前令牌数是否大于等于64;现在令牌数等于80,大于64个,则可以取走相应的令牌数64个,剩余令牌数位16个;并对tkod重新赋值为320-64=256,将数据报文着色绿色,数据报文通过。

第六个为80字节的数据报文进来时,判断tkod是否等于0;tkod等于256,不等于0,说明该数据报文需要先“弥补”透支令牌,才能有机会从令牌桶中获取令牌;

判断tkod是否小于等于当前令牌数;tokd等于256,当前令牌数为16,不满足提前透支令牌,则将第六个数据报文着红色,数据报文丢弃。

依次类推,依次重复分析以上过程,最后长短字节的数据报文通过的比例为1:4。值得注意的是,如果在第五个数据报文进来时,此时令牌数只有80个,而数据报文长度为320字节,按正常处理需要是需要消耗的令牌数为320,在这里通过特殊的令牌透支方法,保证了长字节数据报文通过的公平行。另外,在整个处理过程中,令牌桶的令牌数是实时以cir的速率往里面加,在分析过程中为了更好的描述,而没有考虑这个具体数值。

为了更好的便于理解,再举一例进行说明,例如应用在vpls应用中,不同成员从不同设备的不同的端口进入同一vpn实例时,配置对该vpn进行限速处理时,当进入某个端口的数据报文长度过长,在进入该vpn的数据总速率大于某一限定速率时,在极端的情况下,可能会出现某一个成员的长字节数据报文由于抢不到令牌会被全部丢掉。具体的,对其中进入ptn设备的同一vpn进行20m的限速处理;设置初始值cir=20m,比例控制系数u=1,预设传输阈值thr=80, tkod=0;令牌桶中的令牌个数要求大于或者等于数据传输时最长数据报文的字节数,假设令牌桶的大小=450,令牌桶中的令牌个数为初始值大小。测试时,用仪表对该端口1发流20m360字节和对端口3发20m90字节的数据报文,虽然从不同端口进入,但长短数据报文进入同一vpn中的调度的概率为1:4。

分析过程入下:

数据报文长大小为第一个90字节的数据报文进来,初始值tkod=0,则说明该数据报文有机会从令牌中获取令牌,不需要弥补上一次数据报文透支的令牌数;判断当前令牌桶令牌数是否大于80,如果大于80,则说明满足条件可以消耗80个令牌,并将tkod赋值为90-80=10;当前令牌数满足条件,即当前数据报文长度减去阈值thr令牌数相应减少80,则令牌数剩余370个,数据报文着绿色并让其通过;

第二个90字节数据报文进来时,判断tkod是否等于0;tkod等于10,不等于0,说明该数据报文需要先“弥补”透支令牌,才能有机会从令牌桶中获取令牌;

判断tkod是否小于等于当前令牌数;tokd等于10,小于370,满足条件;先减去10,令牌数变为360。

继续判断当前令牌数是否大于等于80;现在令牌数等于360,大于80,则可以取走相应的令牌数80个,剩余令牌数位280个;并对tkod重新赋值为90-80=10,将数据报文着色绿色,数据报文通过。

第三个90字节数据报文进来时,判断tkod是否等于0;tkod等于10,不等于0,说明该数据报文需要先“弥补”透支令牌,才能有机会从令牌桶中获取令牌;

判断tkod是否小于等于当前令牌数;tkod等于10,小于280,满足条件; 先减去10,令牌数变为270。

继续判断当前令牌数是否大于等于80;现在令牌数等于280,大于80,则可以取走相应的令牌数80个,剩余令牌数位200个;并对tkod重新赋值为90-80=10,将数据报文着色绿色,数据报文通过。

第四个90字节数据报文进来时,判断tkod是否等于0;tkod等于10,不等于0,说明该数据报文需要先“弥补”透支令牌,才能有机会从令牌桶中获取令牌;

判断tkod是否小于等于当前令牌数;tokd等于10,小于200,满足条件;先减去10,令牌数变为190。

继续判断当前令牌数是否大于等于80;现在令牌数等于190,大于80,则可以取走相应的令牌数80个,剩余令牌数位110个;并对tkod重新赋值为90-80=10,将数据报文着色绿色,数据报文通过。

第五个为360字节的数据报文进来时,判断tkod是否等于0;tkod等于10,不等于0,说明该数据报文需要先“弥补”透支令牌,才能有机会从令牌桶中获取令牌;

判断tkod是否小于等于当前令牌数;tokd等于10,小于110,满足条件;先减去10,令牌数变为100。

继续判断当前令牌数是否大于等于80;现在令牌数等于110,大于80,则可以取走相应的令牌数80个,剩余令牌数位30个;并对tkod重新赋值为360-80=280,将数据报文着色绿色,数据报文通过。

第六个为90字节的数据报文进来时,判断tkod是否等于0;tkod等于280,不等于0,说明该数据报文需要先“弥补”透支令牌,才能有机会从令牌桶中获取令牌;

判断tkod是否小于等于当前令牌数;tokd等于256,当前令牌数为30,不满足提前透支令牌,则将第六个数据报文着红色,数据报文丢弃。

依次类推,依次重复分析以上过程,最后长短字节的数据报文进入vpn的比例为1:4。另外,在整个处理过程中,令牌桶的令牌数是实时以cir的速率往里面加,在分析过程中为了更好的描述,而没有考虑这个具体数值。值得注意的是本实施例中的令牌桶的大小即为令牌桶中的令牌个数。

实施例三:

本实施例提供一种数据报文传输控制装置300,如图3所示,包括报文获取模块301、透支判断模块302、令牌补偿模块303、传输判断模块304和传输控制模块305:其中,报文获取模块301用于获取当前数据报文;透支判断模块302用于判断当前令牌桶中的令牌数是否大于等于传输上次数据报文透支的令牌透支数;令牌补偿模块303用于如果大于等于传输上次数据报文透支的令牌透支数,从当前令牌桶中的令牌数中获取令牌补偿令牌透支数,传输判断模块304用于判断补偿后令牌桶中的令牌数是否大于等于预设传输阈值;传输控制模块305用于如果大于等于预设传输阈值,则允许当前数据报文获取令牌进行传输。

进一步,当上次数据报文的报文字节数大于预设传输阈值时,令牌透支数为上次数据报文的报文字节数与预设传输阈值的差值;当上次数据报文的报文字节数小于等于预设传输阈值时,令牌透支数为0。

进一步,传输控制模块305还用于判断当前令牌桶中的令牌数小于传输上次数据报文透支的令牌透支数时,则丢弃当前数据报文不进行传输。

进一步,传输控制模块305还用于判断补偿后令牌桶中的令牌数小于预设传输阈值时,则丢弃当前数据报文不进行传输。

进一步,预设传输阈值为数据报文的基准定值与比例控制系数的乘积。

进一步,数据报文的基准定值为最小数据报文的报文字节数,比例控制系数为1。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,上述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1