发明内容
本发明的目的在于提供一种弹性的网络带宽控制方法,以实现在不增加路由器或交换机等设备硬件成本的基础上提高带宽利用率,该方法包括以下步骤:
一种弹性的网络带宽控制方法,包括以下步骤:
(1)初始化各网络接口,设置数据传输速率、应用类型单位时间片、主机单位时间片、应用类型控制参数和主机控制参数,计算单位时间片内可发送最大字节数与主机单位时间片内不同方式下可发送最大字节数;
(2)接收数据包,并识别其应用类型和IP地址;
(3)根据该数据包的应用类型,查看是否存在该应用类型的缓存队列,如果不存在,则创建该应用类型优先级队列和主机缓存队列,并执行下一步;否则,直接执行下一步;
(4)按照应用类型优先级从高到低以及主机控制参数进行数据包发送;
(5)判断是否发送完所有的数据包,如果是,则程序停止,否则,返回执行步骤(4)。
其中,所述步骤(1)中应用类型控制参数为应用类型优先级值;而主机控制参数则包括主机IP地址、带宽使用模式、保证方式属性值和限制方式属性值、突发属性值和再分配使能属性值;所述带宽使用模式包括共享模式和限制模式,相应地,所述主机单位时间片内不同方式包括:主机单位时间片内保证且独占方式、主机单位时间片内保证且共享方式、主机单位时间片内限制且独占方式和主机单位时间片内限制且共享方式。
而所述步骤(1)中单位时间片内可发送最大字节数与主机单位时间片内不同方式下可发送最大字节数,分别如下式:
单位时间片内可发送最大字节数=数据传输速率*应用类型单位时间片*1024*1000/8 (1-1)
主机单位时间片内保证且独占方式下可发送最大字节数=保证方式下数据传输速率*主机单位时间片*1024 (1-2)
主机单位时间片内保证且共享方式下可发送最大字节数=保证方式下数据传输速率*主机单位时间片*1024/共享主机台数 (1-3)
主机单位时间片内限制且独占方式下可发送最大字节数=限制方式下数据传输速率*主机单位时间片*1024 (1-4)
主机单位时间片内限制且共享方式下可发送最大字节数=限制方式下数据传输速率*主机单位时间片*1024/共享主机台数 (1-5)。
进一步地,所述步骤(3)中创建应用类型优先级队列的方法如下:
(3.1)查看数据包的协议类型与端口号,根据设置的优先级值计算优先级分类值;
(3.2)根据预设的优先级分类值范围,创建高应用类型优先级队列、中应用类型优先级队列和低应用类型优先级队列。
优选地,所述步骤(3)中创建主机缓存队列的原则为:根据主机IP地址分别建立主机缓存队列。而且,每个主机缓存队列均设置保证方式下数据传输速率和限制方式下数据传输速率,其中,限制方式下数据传输速率小于或等于网络最大数据传输速率,而保证方式下数据传输速率则小于限制方式下数据传输速率。
所述步骤(4)中按应用类型优先级进行数据包发送的方法如下:
(4.1)计算应用类型时间片数目;
(4.2)判断应用类型时间片数目是否大于零,如果是,则当前时间片内剩余可发送总字节数叠加,应用类型记录时间为当前时刻,否则,执行下一步;
(4.3)根据高应用类型优先级队列、中应用类型优先级队列和低应用类型优先级队列是否有数据包来计算应用类型优先级队列相关参数;
(4.4)判断优先级比例和是否为零,如果是,则表明无数据包,程序立即结束;否则,则表明有数据包等待发送,数据包记录标志设为1;
(4.5)判断当前应用类型优先级标志与上一轮时间片内该应用类型优先级标志是否相同,若相同,则按照上一轮各应用类型优先级队列带宽分配比例执行,否则,替换应用类型优先级标志,重新计算各应用类型优先级队列带宽分配比例和当前单位时间片内各应用类型优先级剩余可发送总字节数;
(4.6)查看高应用类型优先级队列是否有数据包,如果无,则执行步骤(4.9),否则,执行下一步;
(4.7)判断是否满足复合条件1:
第一次从该应用类型优先级队列中取包,且
单位时间片内高应用类型优先级队列剩余可发送总字节数小于等于零,且
单位时间片内中应用类型优先级队列剩余可发送总字节数大于零,或
单位时间片内低应用类型优先级队列剩余可发送总字节数大于零;
如果是,则高应用类型优先级状态标志设为1,并执行步骤(4.9),否则,从高应用类型优先级队列取包,并执行下一步;
(4.8)判断取包是否成功,如果是,则发送数据包,并更新主机单位时间片内不同方式下剩余可发送总字节数与单位时间片内高应用类型优先级队列剩余可发送总字节数,否则,执行下一步;
(4.9)查看中应用类型优先级队列是否有数据包,如果无,则执行步骤(4.12),否则,执行下一步;
(4.10)判断是否满足复合条件2:
第一次从该应用类型优先级队列中取包,且
单位时间片内中应用类型优先级队列剩余可发送总字节数小于等于零,且
单位时间片内低应用类型优先级队列剩余可发送总字节数大于零;
如果是,则中应用类型优先级标志设为1,并执行步骤(4.12),否则,从中应用类型优先级队列取包,并执行下一步;
(4.11)判断取包是否成功,如果是,则发送数据包,并更新主机单位时间片内不同方式下剩余可发送总字节数与单位时间片内中应用类型优先级队列剩余可发送总字节数,否则,执行下一步;
(4.12)查看低应用类型优先级队列是否有数据包,如果无,则执行步骤(4.15),否则,执行下一步;
(4.13)判断是否满足复合条件3:
第一次从该应用类型优先级队列中取包,且
单位时间片内低应用类型优先级队列剩余可发送总字节数小于等于零;
如果是,则低应用类型优先级标志设为1,并执行步骤(4.15),否则,从低应用类型优先级队列取包,执行下一步;
(4.14)判断取包是否成功,如果是,则发送数据包,能够更新主机单位时间片内不同方式下剩余可发送总字节数与单位时间片内低应用类型优先级队列剩余可发送总字节数,否则,执行下一步,准备第二次查看相应的应用类型优先级队列;
(4.15)查看数据包记录标志与应用类型优先级标志,判定复合条件4:
数据包记录标志为零,且
高应用类型优先级标志、中应用类型优先级标志和低应用类型优先级标志至少有一个不为0;
如果是,则执行下一步,否则,返回步骤(4.1);
(4.16)判断高应用类型优先级标志是否为1,如果是,则设置数据包记录标志为1,将高应用类型优先级标志、中应用类型优先级标志和低应用类型优先级标志全部重置为零,并从高应用类型优先级队列中再次取包,执行步骤(4.6);否则,执行下一步;
(4.17)判断中应用类型优先级标志是否为1,如果是,则设置数据包记录标志为1,将高应用类型优先级标志、中应用类型优先级标志和低应用类型优先级标志全部重置为零,从中应用类型优先级队列中再次取包,执行步骤(4.9);否则,执行下一步;
(4.18)判断低应用类型优先级标志是否为1,如果是,则设置数据包记录标志为1,将高应用类型优先级标志、中应用类型优先级标志和低应用类型优先级标志全部重置为零,从低应用类型优先级队列中再次取包,执行步骤(4.12); 否则,返回步骤(4.1)。
在上述步骤中,所述步骤(4.1)中计算应用类型时间片数目的方法如下式:
应用类型时间片数目=(当前时刻—应用类型记录时刻)/应用类型单位时间片 (2-1)。
所述步骤(4.2)中当前时间片内剩余可发送总字节数叠加的具体方法如下:
当前时间片内剩余可发送总字节数=单位时间片内可发送最大字节数*时间片数+上一个时间片内剩余可发送总字节数 (3-1)
如果式(3-1)的结果大于每秒钟可发送的最大字节数,则有
当前时间片内剩余可发送总字节数=每秒钟可发送的最大字节数 (3-2)。
所述步骤(4.3)中应用类型优先级队列相关参数包括:各优先级标志、各优先级比例值、优先级比例和,以及各优先级队列带宽分配比例,计算方法如下:
高应用类型优先级队列有数据,该高应用类型优先级标志置1,否则置0;
中应用类型优先级队列有数据,该中应用类型优先级标志置1,否则置0;
低应用类型优先级队列有数据,该低应用类型优先级标志置1,否则置0;
高应用类型优先级标志为1时,高应用类型优先级比例值为5,否则为0;
中应用类型优先级标志为1时,中应用类型优先级比例值为4,否则为0;
低应用类型优先级标志为1时,低应用类型优先级比例值为1,否则为0;
优先级比例和=高应用类型优先级比例值+中应用类型优先级比例值+低应用类型优先级比例值 (4-1)
高优先级队列带宽分配比例=高应用类型优先级比例值/优先级比例和
(4-2)
中优先级队列带宽分配比例=中应用类型优先级比例值/优先级比例和
(4-3)
低优先级队列带宽分配比例=低应用类型优先级比例值/优先级比例和
(4-4)。
所述步骤(4.5)中重新计算当前单位时间片内各优先级剩余可发送总字节数的方法如下:
当前单位时间片内高应用类型优先级队列剩余可发送总字节数=单位时间片内可发送最大字节数*高优先级队列带宽分配比例 (5-1)
当前单位时间片内中应用类型优先级队列剩余可发送总字节数=单位时间片内可发送最大字节数*中优先级队列带宽分配比例 (5-2)
当前单位时间片内低应用类型优先级队列剩余可发送总字节数=单位时间片内可发送最大字节数*低优先级队列带宽分配比例 (5-3)。
所述步骤(4.8)中更新单位时间片内高应用类型优先级队列剩余可发送总字节数的方法如下:
单位时间片内高应用类型优先级队列剩余可发送总字节数=当前时刻高应用类型优先级队列剩余可发送总字节数—所取包的包长字节数 (6-1)
所述步骤(4.11)中更新单位时间片内中应用类型优先级队列剩余可发送总字节数的方法如下:
单位时间片内中应用类型优先级队列剩余可发送总字节数=当前时刻中应用类型优先级队列剩余可发送总字节数—所取包的包长字节数 (6-2)
所述步骤(4.14)中更新单位时间片内低应用类型优先级队列剩余可发送总字节数的方法如下:
单位时间片内低应用类型优先级队列剩余可发送总字节数=当前时刻低应用类型优先级队列剩余可发送最大字节数—所取包的包长字节数 (6-3)
所述步骤(4.8)、(4.11)、(4.14)中更新主机单位时间片内各种方式下可发送 最大字节数的方法如下:
主机单位时间片内保证且共享方式下剩余可发送最大字节数=主机当前时刻保证且共享方式下剩余可发送总字节数—所取包的包长字节数 (6-4)
主机单位时间片内保证且独占方式下剩余可发送最大字节数=主机当前时刻保证且独占方式下剩余可发送总字节数—所取包的包长字节数 (6-5)
主机单位时间片内限制且共享方式下剩余可发送最大字节数=主机当前时刻限制且共享方式下剩余可发送总字节数—所取包的包长字节数 (6-6)
主机单位时间片内限制且独占方式下剩余可发送最大字节数=主机当前时刻限制且独占方式下剩余可发送总字节数—所取包的包长字节数 (6-7)。
进一步地,所述步骤(4.8)、(4.11)和(4.14)中取包操作的方法如下:
(4.x.1)查看当前应用类型优先级队列是否有设置了保证方式属性值的主机缓存队列存在,如果有,则执行下一步,否则,执行步骤(4.x.6);
(4.x.2)判断设置了保证方式属性值的主机是否连接,如果连接,则执行下一步,否则,执行(4.x.4);
(4.x.3)依次从已连接且设置了保证方式属性值的主机缓存队列取包,若取到包,则返回数据包,取包操作完成,否则,执行下一步;
(4.x.4)判断是否处理完所有设置了保证方式属性值的主机缓存队列,如果是,则执行下一步,否则,返回步骤(4.x.3);
(4.x.5)判断再分配使能标志是否大于零,如果是,则将保证主机队列存在标志设置为零,再分配带宽状态标志加1,取包不成功,返回为空,否则,执行下一步;
(4.x.6)依次从设置了限制方式属性值的主机缓存队列取包。
其中,所述步骤(4.x.3)中从已连接且设置了保证方式属性值的主机缓存队列 进行取包操作的方法如下:先判断是否满足保证带宽,再判定弹性带宽状态,最后判断是否满足限制带宽。当上述条件全面满足时,取包成功。
具体地说,判断是否满足保证带宽的方法如下:判定该主机缓存队列的带宽使用模式,如果带宽使用模式是共享,则按照保证且共享方式分配带宽,否则,按照保证且独占方式分配带宽。
更进一不低,所述按照保证且共享方式分配带宽的方法如下:
(4.x.3-a)计算保证方式下时间片数目;
(4.x.3-b)判断保证时间片数目是否大于零,如果是,主机单位时间片内保证且共享方式下剩余可发送总字节数叠加,更新保证且共享记录时间为当前时刻,否则,执行下一步;
(4.x.3-c)判断主机单位时间片内保证且共享方式下剩余可发送总字节数是否大于零,如果是,则表明满足保证带宽;再判定弹性带宽状态,最后判定是否满足限制带宽;否则,查看下一个设置了保证方式属性值的主机缓存队列,返回步骤(4.x.3-a)。
所述步骤(4.x.3-b)中主机单位时间片内保证且共享方式下剩余可发送总字节数叠加的方法如下:
主机单位时间片内保证且共享方式下剩余可发送总字节数=当前时刻保证且共享方式下剩余可发送总字节数+主机单位时间片内保证且共享方式下可发送最大字节数*时间片数目 (7-1)
如果式(7-1)的结果大于每秒钟主机可发送的最大字节数,则有
主机单位时间片内保证且共享方式下剩余可发送总字节数=每秒钟主机可发送的最大字节数 (7-2)。
所述按照保证且独占方式分配带宽的方法如下:
(4.x.3-a’)计算保证方式下时间片数目;
(4.x.3-b’)判断保证时间片数目是否大于零,如果是,主机单位时间片内保证且独占方式下剩余可发送总字节数叠加,更新保证且独占记录时间为当前时刻,否则,执行下一步;
(4.x.3-c’)判断主机单位时间片内保证且独占方式下剩余可发送总字节数是否大于零,如果是,则表明满足保证带宽;再判定弹性带宽状态,最后判断是否满足限制带宽;否则,查看下一个设置了保证方式属性值的主机缓存队列,返回步骤(4.x.3-a’)。
所述步骤(4.x.3-b’)中主机单位时间片内保证且独占方式下剩余可发送总字节数叠加的方法如下:
主机单位时间片内保证且独占方式下剩余可发送总字节数=当前时刻保证且共享方式下剩余可发送最大字节数+主机单位时间片内保证且独占方式下可发送总字节数*时间片数目 (8-1)
如果式(8-1)的结果大于每秒钟主机可发送的最大字节数,则有
主机单位时间片内保证且独占方式下剩余可发送总字节数=每秒钟主机可发送的最大字节数 (8-2)。
所述步骤(4.x.6)中依次从设置了限制方式属性值的主机缓存队列取包操作的方法为:判定该主机缓存队列的带宽使用模式,如果带宽使用模式为共享,则按照限制且共享方式分配带宽,否则,按照限制且独占方式分配带宽。
再详细地说,按照限制且共享方式分配带宽的方法如下:
(4.x.6-a)计算限制方式下时间片数目;
(4.x.6-b)判断限制方式下时间片数目是否大于零,如果是,更新限制且共享记录时间为当前时刻,执行下一步,否则,执行(4.3.6-e);
(4.x.6-c)判断是否设置突发属性,如果是,单位时间片内限制且共享方式下剩余可发送总字节数叠加,否则,执行下一步;
(4.x.6-d)判断主机上一个单位时间片内限制且共享方式下剩余可发送总字节数是否大于零,如果是,主机单位时间片内限制且共享方式下剩余可发送总字节数赋值,否则,主机单位时间片内限制且共享方式下剩余可发送总字节数叠加;
(4.x.6-e)判断主机单位时间片内限制且共享方式下剩余可发送总字节数是否大于零,如果是,表明满足限制带宽,否则,执行下一步;
(4.x.6-f)判断再分配使能是否等于1,如果是,再分配使能标志增加1,否则,执行下一步;
(4.x.6-g)查看下一个设置了限制方式属性值的主机缓存队列。
所述步骤(4.x.6-d)中单位时间片内限制且共享方式下剩余可发送总字节数赋值的方法如下:
主机单位时间片内限制且共享方式下剩余可发送的总字节数=单位时间片内限制且共享方式下可发送最大字节数 (9-1)
所述步骤(4.x.6-d)中单位时间片内限制且共享方式下可发送的最大字节数叠加的方法如下:
主机单位时间片内限制且共享方式下剩余可发送总字节数=当前时刻限制且共享方式下剩余可发送总字节数+主机单位时间片内限制且共享方式下可发送最大字节数*时间片数目 (9-2)
如果式(9-2)的结果大于每秒钟主机可发送的最大字节数,则有
主机单位时间片内限制且共享方式下剩余可发送总字节数=每秒钟主机可发送的最大字节数。
而按照限制且独占方式分配带宽的方法如下:
(4.x.6-a’)计算限制方式下时间片数目,
(4.x.6-b’)判断限制方式下时间片数目是否大于零,如果是,更新限制且独占记录时间为当前时刻,执行下一步,否则,执行(4.3.6-e’);
(4.x.6-c’)判断是否设置突发属性,如果是,单位时间片内限制且独占方式下剩余可发送总字节数叠加,否则,执行下一步;
(4.x.6-d’)判断主机上一个单位时间内限制且独占方式下剩余可发送总字节数是否大于零,如果是,单位时间片内限制且独占方式下剩余可发送总字节数赋值,否则,单位时间片内限制且独占方式下剩余可发送总字节数叠加;
(4.x.6-e’)判断主机单位时间片内限制且独占方式下剩余可发送总字节数是否大于零,如果是,表明满足限制带宽,否则,执行下一步;
(4.x.6-f’)判断再分配使能是否等于1,如果是,再分配使能标志增加1,否则,执行下一步;
(4.x.6-g’)查看下一个设置了限制方式属性值的主机缓存队列。
所述步骤(4.x.6-d’)中单位时间片内限制且独占方式下剩余可发送总字节数赋值的方法如下:
主机单位时间片内限制且独占方式下剩余可发送的总字节数=单位时间片内限制且独占方式下可发送最大字节数 (10-1)
所述步骤(4.x.6-d’)中单位时间片内限制且独占方式下可发送总字节数叠加的方法如下:
主机单位时间片内限制且独占方式下剩余可发送总字节数=当前时刻限制且独占方式下剩余可发送总字节数+主机单位时间片内限制且独占方式下可发送最大字节数*时间片数目 (10-2)
如果式(10-2)的结果大于每秒钟主机可发送的最大字节数,则有
主机单位时间片内限制且独占方式下剩余可发送总字节数=每秒钟主机可发送的最大字节数。
在上述步骤中,所述保证方式下时间片数目通过下式得出:
保证方式下时间片数目=(当前时刻—保证方式下记录时刻)/主机单位时间片 (11-1)。
而所述限制方式下时间片数目通过下式得出:
限制方式下时间片数目=(当前时刻—限制方式下记录时刻)/主机单位时间片 (12-1)。
准确地说,判定弹性带宽状态的方法如下:首先判定弹性的带宽状态是否大于零,如果是,直接取包,否则,判定是否满足限制带宽。
以上述网络带宽控制方法为基本原理,本发明提供了以下的网络带宽控制系统,具体如下:
一种弹性的网络带宽控制系统,包括初始化模块、收发模块、识别模块、控制模块以及更新模块;其中
初始化模块:用于收集网络接口信息,设置传输速率、单位时间片、应用类型控制参数和主机控制参数,计算单位时间片内可发送最大字节数与单位时间片内不同方式下主机可发送最大字节数;
接收模块:与所述初始化模块连接,用于接收来自网络接口的数据包;
识别模块:与所述接收模块连接,用于辨别来自网络接口的数据包应用类型和IP地址;
控制模块:与所述识别模块连接,用于创建应用类型优先级队列和主机缓存队列,并按应用类型优先级从高到低以及主机控制参数进行数据包的发送;
发送模块:与所述控制模块连接,在控制模块的控制下向主机发送数据包;
更新模块:与所述发送模块连接,用于更新应用类型优先级队列信息与主机缓存队列信息。
进一步地,所述控制模块还创建有应用类型优先级队列和主机缓存队列子模块、取包子模块、再分配子模块和突发使能子模块。
本发明提出的弹性的网络带宽控制方法,其以时间片为单位,可以同时按照应用类型和主机类型的带宽进行控制,提供带宽保证与限制功能,控制力度更高,更精准。而且,本技术支持两种特定场景的网络带宽控制,场景一:在网络流量较大时,支持流量突发场景下的带宽控制,使得在某个时间片内可以有较大的流量而不影响总流量;场景二:在取包不成功但仍有数据包需要发送时,再分配使能,可将有用带宽平均分配给主机,实现了最大限度地合理利用带宽资源,避免了带宽浪费。
与现有技术相比,本发明具有以下有益效果:
(1)合理利用带宽:与传统的采用串行机制进行带宽控制的方法相比,本发明提出的建立应用类型缓存队列和主机缓存队列的方法可以对网络带宽进行两方面控制,从而根据不同需求进行带宽的不同分配方案,真正达到供应求的分配目的,使带宽分配更加合理,带宽利用率得到最大化,最大程度低减少了网络资源的浪费。
(2)提高控制力度:通过两个时间片进行精准控制,其中一个时间片对应用类型限速,另一个对主机限速,从而保证了多个应用类型和多个主机均衡使用带宽;
(3)灵活性高:本发明专门设计了两种模式,即带宽保证与带宽限制模式,并在此基础上又设计了带宽共享与独占两种方式进行取包操作,从而形成了保 证且独占、保证且共享、限制且独占和限制且共享四种带宽分配方法,可以对应不同的网络情况来实现网络带宽的控制;另外,本发明还支持流量突发、取包不成功且仍有数据包发送两种特定场景下的带宽控制,因此,网络带宽的控制十分灵活,准确性和可靠性更高。
具体实施方式
下面结合附图和实施例对本发明作进一步说明,本发明的实施方式包括但不限于下列实施例。
实施例
如图1所示,本实施例提供的网络带宽控制方法主要包括以下几个步骤:
首先,对路由器的网络接口进行初始化,为路由器设置各种参数,主要包括传输速率、单位时间片、应用类型控制参数和主机控制参数。其中,所述单位时间片是指取某一个时间段作为一个划分界限,比如取每10毫秒为一个单位时间片,或者取8点05分10秒15毫秒至8点05分10秒20毫秒为一个单位 时间片,而且,单位时间片可以根据应用类型的不同而不同,并非一定要完全一致;所述应用类型控制参数是指应用类型优先级值,顾名思义,是为不同的应用类型设置不同的优先级,并用不同的值来代表,比如:应用类型为视频,设置其优先级为高,用数值1代表;应用类型为网页,设置其优先级为中,用数值2代表;应用类型为下载,设置其优先级为低,用数值3代表。当然,代表优先级的并非只能是一个具体值,也可以使一个范围值,本实施例采用下表来划分优先级:
优先级 |
优先级范围值 |
高 |
低于11 |
中 |
11-240 |
低 |
高于240 |
所述主机控制参数包括:主机IP地址、带宽使用模式、保证方式属性值、限制方式属性值、突发属性值和再分配使能属性值。本发明中,所述带宽使用模式包括共享和限制两种模式;所述保证方式属性值是指保证方式下的数据传输速率,单位为Mbps,所谓保证方式即是指为某个应用类型设置数据传输速率下限的一种传输方式,例如:保证方式下,视频的保证方式属性值为200Mbps,网页的保证方式属性值为100Mbps,而下载的保证方式属性值为50Mbps;相应地,所述限制方式属性值是指限制方式下的数据传输速率,单位为Mbps,所谓限制方式即是指为某个应用类型设置数据传输速率上限的一种传输方式,例如:限制方式下,视频的限制方式属性值为500Mbps,网页的限制方式属性值为300Mbps,而下载的限制方式属性值为200Mbps;所述突发属性值是指在特定时间内为保证网络流畅,允许主机速率超过该时间段内默认的控制带宽数,比如为1时允许超过,为0时不允许超过;所述再分配使能属性值是指带宽资源闲置时,允许将剩余带宽平均分配给需要发送数据包的主机的行为,比如为1 时表示允许再分配带宽,为0时表示不允许再分配带宽。
在设置上述基本参数之后,根据这些参数计算单位时间片内可发送最大字节数,与主机单位时间片内不同方式下可发送最大字节数。单位时间片内可发送最大字节数的单位为Byte,而主机单位时间片内不同方式下可发送最大字节数的单位为KByte,其中,
单位时间片内可发送最大字节数=数据传输速率*应用类型单位时间片*1024*1000/8 (1-1)
而主机单位时间片内不同方式下可发送最大字节数包括以下四种:主机单位时间片内保证且共享方式下可发送最大字节数、主机单位时间片内保证且独占方式下可发送最大字节数、主机单位时间片内限制且共享方式下可发送最大字节数和主机单位时间片内限制且独占方式下可发送最大字节数,其计算方法分别如下:
主机单位时间片内保证且独占方式下可发送最大字节数=保证方式下数据传输速率*主机单位时间片*1024 (1-2)
主机单位时间片内保证且共享方式下可发送最大字节数=保证方式下数据传输速率*主机单位时间片*1024/共享主机台数 (1-3)
主机单位时间片内限制且独占方式下可发送最大字节数=限制方式下数据传输速率*主机单位时间片*1024 (1-4)
主机单位时间片内限制且共享方式下可发送最大字节数=限制方式下数据传输速率*主机单位时间片*1024/共享主机台数 (1-5)
在这些参数的控制下,当某一主机在单位时间片内的数据传输量达到其自身的可发送最大字节数时,便自动停止发送任何数据,除非遇到特殊情况,如:突发属性值为允许改变状态,再分配使能属性值为允许再分配带宽状态。
此处仅仅是举例说明本发明的设计原理,实际应用时参数设置并非一定要按照此处的设置方式来操作,可以灵活变化。
设备初始化完成之后,将开始接收数据包,网络接口接收到数据包后,由识别模块对数据包的应用类型和主机IP地址进行识别。假设在单位时间片内,网络接口接收到的数据包有三个:数据包1、数据包2和数据包3,经过识别模块识别之后,三个数据包的应用类型和主机IP地址如下表:
数据包 |
主机IP地址 |
应用类型 |
数据包1 |
192.168.1.1 |
视频 |
数据包2 |
192.168.1.2 |
下载 |
数据包3 |
192.168.1.3 |
网页 |
然后,查看路由器和对应主机中是否已经有视频、下载和网页的缓存队列,如果没有,则建立相应的缓存队列,如果有,则在各个主机控制参数下按照视频、网页和下载的优先级从高到低依次进行三个数据包的传输。
最后,检查是否传输完毕,如果传输完毕,则程序停止,反之,则继续按照顺序在各主机控制参数下传输,直到传输完毕为止。
下面对上述数据传输过程中对网络带宽的控制进行详细说明。
如图2和图3所示,在发送数据包之前,首先计算所有数据包对应的应用类型时间片数目,并判断其是否大于零,如果大于零,则当前时间片内剩余可发送最大字节数叠加,同时更新该应用类型记录时间为当前时刻。
所述应用类型时间片数目=(当前时刻—应用类型的记录时刻)/应用类型单位时间片 (2-1)
而当前时间片内剩余可发送最大字节数叠加的方法如下:
首先,按照式(3-1)计算当前时间片内剩余可发送总字节数,
当前时间片内剩余可发送总字节数=单位时间片内可发送最大字节数*时间 片数+上一个时间片内剩余可发送总字节数 (3-1)
如果式(3-1)的结果大于每秒钟可发送的最大字节数,则有
当前时间片内剩余可发送总字节数=每秒钟可发送的最大字节数(3-2)
如果所有数据包的应用类型时间片数目都等于零,则根据高应用类型优先级队列、中应用类型优先级队列和低应用类型优先级队列是否有数据包来计算相应的应用类型优先级队列相关参数,具体是指计算各优先级标志、各优先级比例值、优先级比例和以及各优先级队列带宽分配比例,具体方式如下:
高应用类型优先级队列有数据,该高应用类型优先级标志置1,否则置0;
中应用类型优先级队列有数据,该中应用类型优先级标志置1,否则置0;
低应用类型优先级队列有数据,该低应用类型优先级标志置1,否则置0;
高应用类型优先级标志为1时,高应用类型优先级比例值为5,否则为0;
中应用类型优先级标志为1时,中应用类型优先级比例值为4,否则为0;
低应用类型优先级标志为1时,低应用类型优先级比例值为1,否则为0;
优先级比例和=高应用类型优先级比例值+中应用类型优先级比例值+低应用类型优先级比例值 (4-1)
高优先级队列带宽分配比例=高应用类型优先级比例值/优先级比例和 (4-2)
中优先级队列带宽分配比例=中应用类型优先级比例值/优先级比例和 (4-3)
低优先级队列带宽分配比例=低应用类型优先级比例值/优先级比例和 (4-4)
之后,判断优先级比例值之和是否为零,如果是,则表明无数据包,程序立即结束;否则,则表明有数据包等待发送,数据包记录标志设为1。
然后,判断当前应用类型优先级标志与上一轮单位时间片内该应用类型优先级标志是否相同,若相同,则按照上一轮单位时间片内各应用类型优先级队列带宽分配比例执行,否则,替换应用类型优先级标志,重新计算各应用类型 优先级队列带宽分配比例和当前单位时间片内各应用类型优先级剩余可发送总字节数。带宽分配比例确定之后,即可按照优先级从高到低的顺序依次发送数据包。
重新计算当前单位时间片内各应用类型优先级剩余可发送总字节数的方法如下:
当前单位时间片内高应用类型优先级队列剩余可发送总字节数=单位时间片内可发送最大字节数*高优先级队列带宽分配比例 (5-1)
当前单位时间片内中应用类型优先级队列剩余可发送总字节数=单位时间片内可发送最大字节数*中优先级队列带宽分配比例 (5-2)
当前单位时间片内低应用类型优先级队列剩余可发送总字节数=单位时间片内可发送最大字节数*低优先级队列带宽分配比例 (5-3)
比如:上一轮单位时间片内,视频、网页和下载的应用类型优先级标志分别为高、中、低,而当前单位时间片内,视频、网页和下载的应用类型优先级标志也分别为高、中、低,则当前单位时间片内,视频、网页和下载三种应用类型的带宽分配比例直接按照上一轮的设置执行,若当前单位时间片内,视频、网页和下载的应用类型优先级标志分别为低、高、中,则使用当前的优先级标志替换上一轮的优先级标志,然后根据当前的应用类型优先级标志来计算对应的带宽分配比例和各应用类型优先级剩余可发送总字节数。
发送数据包时,先发送高优先级的数据包,然后发送中优先级的数据包,最后发送低优先级的数据包,无论优先级高低,具体发送过程均相同。
发送高应用类型优先级队列的数据包时,首先查看高应用类型优先级队列是否有数据包,如果无,则查看中应用类型优先级队列是否有数据包,否则,判断是否满足复合条件1:
第一次从该应用类型优先级队列中取包,且
单位时间片内高应用类型优先级队列剩余可发送总字节数小于等于零,且
单位时间片内中应用类型优先级队列剩余可发送总字节数大于零,或
单位时间片内低应用类型优先级队列剩余可发送总字节数大于零;
如果满足上述复合条件1,则表明当前单位时间片内该高应用类型优先级队列可发送总字节数为零,不允许再发送数据,而其他优先级队列可发送字节数不为零,还允许继续发送数据,此时,将该高应用类型优先级状态标志设为1,并直接查看中应用类型优先级队列是否有数据包;如果不满足上述复合条件1,则说明当前单位时间片内该高应用类型还允许继续发送数据,那么从该高应用类型优先级队列取包,然后发送数据包,同时更新主机单位时间片内不同方式下剩余可发送总字节数与单位时间片内高应用类型优先级队列剩余可发送总字节数。如果取包不成功,无法发送数据包,则直接进入下一优先级对列的数据包发送程序。
发送中应用类型优先级队列的数据包时,首先查看中应用类型优先级队列是否有数据包,如果无,则查看低应用类型优先级队列是否有数据包,否则,判断是否满足复合条件2:
第一次从该应用类型优先级队列中取包,且
单位时间片内中应用类型优先级队列剩余可发送总字节数小于等于零,且
单位时间片内低应用类型优先级队列剩余可发送总字节数大于零;
如果满足上述复合条件2,则表明当前不允许发送中应用类型优先级队列的数据包,而其他优先级队列的数据包允许发送,此时,将该中应用类型优先级标志设为1,并直接查看低应用类型优先级队列是否有数据包;如果不满足上述复合条件2,则表明允许发送中应用类型优先级队列的数据包,那么从该中应用 类型优先级队列取包并发送,同时更新主机单位时间片内不同方式下剩余可发送总字节数与单位时间片内中应用类型优先级队列剩余可发送总字节数。如果取包不成功,无法发送数据包,则直接进入下一优先级对列的数据包发送程序。
发送低应用类型优先级队列的数据包时,查看低应用类型优先级队列是否有数据包,如果有数据包,则判断是否满足复合条件3:
第一次从该应用类型优先级队列中取包,且
单位时间片内低应用类型优先级队列剩余可发送总字节数小于等于零;
如果满足上述复合条件3,则表明当前不允许发送该低应用类型优先级队列的数据包,将则低应用类型优先级标志设为1,并查看数据包记录标志与应用类型优先级标志;如果不满足上述复合条件3,则表明允许发送低应用类型优先级队列的数据包,那么从该低应用类型优先级队列取包并发送,同时更新主机单位时间片内不同方式下剩余可发送总字节数与单位时间片内低应用类型优先级队列剩余可发送总字节数。如果取包不成功,则进入第二次查看应用类型优先级队列的步骤。
上述方法中,更新单位时间片内高应用类型优先级队列剩余可发送总字节数的方法如下:
单位时间片内高应用类型优先级队列剩余可发送总字节数=当前时刻高应用类型优先级队列剩余可发送总字节数—所取包的包长字节数 (6-1)
更新单位时间片内中应用类型优先级队列剩余可发送总字节数的方法如下:
单位时间片内中应用类型优先级队列剩余可发送总字节数=当前时刻中应用类型优先级队列剩余可发送总字节数—所取包的包长字节数 (6-2)
更新单位时间片内低应用类型优先级队列剩余可发送总字节数的方法如 下:
单位时间片内低应用类型优先级队列剩余可发送总字节数=当前时刻低应用类型优先级队列剩余可发送最大字节数—所取包的包长字节数 (6-3)
更新主机单位时间片内各种方式下可发送最大字节数的方法如下:
主机单位时间片内保证且共享方式下剩余可发送最大字节数=主机当前时刻保证且共享方式下剩余可发送总字节数—所取包的包长字节数 (6-4)
主机单位时间片内保证且独占方式下剩余可发送最大字节数=主机当前时刻保证且独占方式下剩余可发送总字节数—所取包的包长字节数 (6-5)
主机单位时间片内限制且共享方式下剩余可发送最大字节数=主机当前时刻限制且共享方式下剩余可发送总字节数—所取包的包长字节数 (6-6)
主机单位时间片内限制且独占方式下剩余可发送最大字节数=主机当前时刻限制且独占方式下剩余可发送总字节数—所取包的包长字节数 (6-7)
如果低应用类型优先级队列无数据包,则查看数据包记录标志与应用类型优先级标志,并判定复合条件4:
数据包记录标志为零,且
高应用类型优先级标志、中应用类型优先级标志和低应用类型优先级标志至少有一个不为0;
如果不满足上述复合条件4,则重新计算应用类型时间片数目,重新开始发送数据包。如果满足上述复合条件4,则判断高应用类型优先级标志是否为1,如果是,则设置数据包记录标志为1,将高应用类型优先级标志、中应用类型优先级标志和低应用类型优先级标志全部重置为零,同时从高应用类型优先级队列中再次取包,执行步骤(4.6);否则,执行下一步;
判断中应用类型优先级标志是否为1,如果是,则设置数据包记录标志为1, 将高应用类型优先级标志、中应用类型优先级标志和低应用类型优先级标志全部重置为零,同时从中应用类型优先级队列中再次取包,执行步骤(4.9);否则,执行下一步;
判断低应用类型优先级标志是否为1,如果是,则设置数据包记录标志为1,将高应用类型优先级标志、中应用类型优先级标志和低应用类型优先级标志全部重置为零,同时从低应用类型优先级队列中再次取包,执行步骤(4.12);否则,返回步骤(4.1)。
所谓数据包记录标志是指发送数据包时取包是否成功的标记,若取包成功,则数据包记录标志为1,若取包不成功,则数据包记录标志为0。
下面对取包流程进行详细介绍,如图4所示,首先查看当前应用类型优先级队列是否有设置了保证方式属性值大于零的主机缓存队列,如果有,则判断相应主机是否连接,如果已连接,则依次从已连接且设置了保证方式属性值的主机缓存队列取包。如果设置了保证方式属性值大于零的所有主机都未连接,那么判断再分配使能标志是否大于零,如果大于零,则表示不允许再分配带宽,直接返空,操作停止。如果再分配使能标志小于零,或者当前没有设置了保证方式属性值大于零的主机,则依次从设置了限制方式属性值的主机缓存队列取包。取包完成后操作停止。
上述图4中,从设置了保证方式属性值的主机缓存队列中取包的方法为:确定该主机缓存队列的带宽使用模式为共享方式还是独占方式,然后按照保证且共享方式进行带宽分配,或者按照保证且独占方式进行带宽分配;之后判定弹性带宽状态,最后判定是否满足限制带宽。相应地,从设置了限制方式属性值的主机缓存队列取包的方法如下:首先判定该主机缓存队列的带宽使用模式,如果带宽使用模式是共享,则按照限制且共享方式分配带宽,否则,按照限制 且独占方式分配带宽。
下面分别对四种带宽使用模式下的带宽分配方法进行详细说明。
一、保证且共享方式的带宽分配
如图5所示,首先计算保证方式下时间片数目,并判断其是否大于零,如果大于零,则主机单位时间片内保证且共享方式下剩余可发送总字节数叠加,并更新保证且共享记录时间为当前时刻。主机单位时间片内保证且共享方式下剩余可发送总字节数叠加的方法如下:
主机单位时间片内保证且共享方式下剩余可发送总字节数=当前时刻保证且共享方式下剩余可发送总字节数+主机单位时间片内保证且共享方式下可发送最大字节数*时间片数目 (7-1)
如果式(7-1)的结果大于每秒钟主机可发送的最大字节数,则有
主机单位时间片内保证且共享方式下剩余可发送总字节数=每秒钟主机可发送的最大字节数 (7-2)
否则,判断主机单位时间片内保证且共享方式下剩余可发送总字节数是否大于零,如果是,则表明满足保证带宽,可以继续判断弹性带宽状态;判定弹性带宽状态之后,判定是否满足限制带宽;如果主机单位时间片内保证且共享方式下剩余可发送总字节数等于零,那么直接查看下一个设置了保证方式属性值的主机缓存队列,并重新进行带宽分配的判断。
二、保证且独占方式的带宽分配
如图6所示,首先计算保证方式下时间片数目,并判断其是否大于零;如果大于零,则主机单位时间片内保证且独占方式下剩余可发送总字节数叠加,同时更新保证且独占记录时间为当前时刻。主机单位时间片内保证且独占方式下剩余可发送总字节数叠加的方法如下:
主机单位时间片内保证且独占方式下剩余可发送总字节数=当前时刻保证且共享方式下剩余可发送最大字节数+主机单位时间片内保证且独占方式下可发送总字节数*时间片数目 (8-1)
如果式(8-1)的结果大于每秒钟主机可发送的最大字节数,则有
主机单位时间片内保证且独占方式下剩余可发送总字节数=每秒钟主机可发送的最大字节数 (8-2)
否则,判定主机单位时间片内保证且独占方式下可发送总字节数是否大于零,如果是,则表明满足保证带宽;再判定弹性带宽状态,最后判定是否满足限制带宽。如果主机单位时间片内保证且独占方式下可发送总字节数等于零,则查看下一个设置了保证方式属性值的主机缓存队列,并重新进行带宽分配的判断。
三、限制且共享方式的带宽分配
如图7所示,首先计算限制方式下时间片数目,并判断其是否大于零,如果是,则更新限制且共享记录时间为当前时刻,然后判定是否设置突发属性,如果限制方式下时间片数目等于零,则直接判定是否设置突发属性。
如果设置了突发属性,则单位时间片内限制且共享方式下可发送最大字节数叠加,然后判定主机单位时间片内限制且共享方式下可发送最大字节数是否大于零;如果未设置突发属性,则直接判定主机单位时间片内限制且共享方式下可发送最大字节数是否大于零。
如果主机单位时间片内限制且共享方式下可发送最大字节数大于零,则单位时间片内限制且共享方式下可发送最大字节数赋值,否则,单位时间片内限制且共享方式下可发送最大字节数叠加。然后再判断主机单位时间片内限制且共享方式下可发送最大字节数是否大于零,如果是,则满足限制带宽,查看下 一个设置了限制方式属性值的主机缓存队列;否则,判断再分配使能是否等于1,如果等于1,则再分配使能标志加1,然后查看下一个设置了限制方式属性值的主机缓存队列,而如果不等于1,则直接查看下一个设置了限制方式属性值的主机缓存队列。至此,一次限制且共享方式的带宽分配结束。
四、限制且独占方式的带宽分配
如图8所示,首先计算限制方式下时间片数目,并判断其数目是否大于零。如果大于零,则更新限制且独占记录时间为当前时刻,然后判断是否设置有突发属性;如果限制方式下时间片数目等于零,则直接判断是否设置有突发属性。
若设置有突发属性,则单位时间片内限制且独占方式下可发送最大字节数叠加,然后判断主机单位时间片内限制且独占方式下可发送最大字节数是否大于零;如果没有设置突发属性,则直接判断主机单位时间片内限制且独占方式下可发送最大字节数是否大于零。
若主机单位时间片内限制且独占方式下可发送最大字节数大于零,则单位时间片内限制且独占方式下可发送最大字节数赋值;反之,则单位时间片内限制且独占方式下可发送最大字节数叠加。当则单位时间片内限制且独占方式下可发送最大字节数赋值或叠加后,再判断主机单位时间片内限制且独占方式下可发送最大字节数大于零,若大于零,则表明满足限制带宽,直接查看下一个设置了限制方式属性值的主机缓存队列,反之,判断再分配使能是否等于1,若等于1,则再分配使能标志增加1,然后查看下一个设置了限制方式属性值的主机缓存队列,若不等于1,则直接查看下一个设置了限制方式属性值的主机缓存队列,以对其进行带宽分配。至此,一次限制且独占方式的带宽分配完成。
以上述网络带宽控制方法为基础,本发明提供了如下的系统框架与之配合:
如图9所示,弹性的网络带宽控制系统,主要包括初始化模块、收发模块、 识别模块、控制模块以及更新模块;其中,初始化模块用于收集网络接口自身信息,设置传输速率、单位时间片、应用类型控制参数和主机控制参数,计算单位时间片内可发送最大字节数与单位时间片内不同方式下主机可发送最大字节数;接收模块与所述初始化模块连接,用于接收来自网络接口或主机的数据包;识别模块与所述接收模块连接,用于辨别来自网络接口的数据包应用类型和IP地址;控制模块与所述识别模块连接,用于创建应用类型优先级队列和主机缓存队列,并按应用类型优先级从高到低以及主机控制参数进行数据包的发送;发送模块与所述控制模块或主机连接,在控制模块的控制下向主机发送数据包;而更新模块则与所述发送模块连接,用于更新应用类型优先级队列信息与主机缓存队列信息。
更具体地说,所述控制模块内还创建有应用类型优先级队列和主机缓存队列子模块、取包子模块、再分配子模块和突发使能子模块。
按照上述实施例,便可很好的实现本发明。