共享带宽接入互联网用户的带宽分配方法和装置转让专利

申请号 : CN200910224236.2

文献号 : CN101719870B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李实张届新

申请人 : 中国电信股份有限公司

摘要 :

本发明公开一种带宽分配方法和装置。该方法包括:分别获得各个活动主机的所需带宽;对各个活动主机的所需带宽进行排序;根据所述排序后的各个活动主机的所需带宽对互联网接入链路可用带宽进行分配。将数据按局域网内主机进行分别统计,并分配带宽,再根据各主机分配所得带宽进行调度。由此可以实现局域网内各主机得到公平的带宽,并可同时保证互联网接入链路带宽得到充分利用。

权利要求 :

1.一种共享带宽接入互联网用户的带宽分配方法,其特征在于,包括:分别获得各个活动主机的所需带宽;

对各个活动主机的所述所需带宽进行从小到大排序,编号为1..N,各个活动主机需要的带宽分别为BWapply_1..BWapply_N;

根据所述排序后的各个活动主机的所述所需带宽对互联网接入链路可用带宽进行分配;

所述根据所述排序后的各个活动主机的所述所需带宽对互联网接入链路可用带宽进行分配的步骤包括:设定初始条件:总可分配带宽BWAll=BWACC,BWACC为互联网接入链路总带宽;起始分配点a=1,各个活动主机被分配的带宽清零:BWassign_x=0,x=1..N;

(1)确定当前各个主机所需带宽的最小值和当前总可分配带宽;

(2)根据所述当前各个主机所需带宽的最小值和所述当前总可分配带宽确定当前总分配带宽BW=Min(BWAll,BWapply_a*(N-a+1));

(3)将所述当前总分配带宽平均分配给当前需要带宽的主机;

(4)更新各个主机所需带宽:BWapply_x=BWapply_x-BW/N,x=a..N;重新计算总可分配带宽:BWAll=BWAll-BW,a=a+1;

(5)判断BWAll是否为0,如果BWAll为0,则全部可用带宽分配完毕,分配结束,如果BWALL不为0,继续步骤(6);

(6)如果BWapply_a为0,则全部分配过程也结束;否则,跳到步骤(2),剩余主机继续按上述规则分配剩余带宽。

2.根据权利要求1所述的带宽分配方法,其特征在于,所述分别获得各个活动主机的所需带宽的步骤包括:在预定时间间隔里缓存所有通过互联网接入链路的网络流量,统计发送数据的活动主机,统计各个活动主机分别发往互联网的数据流量,根据各个活动主机的数据流量确定各个活动主机的所需带宽。

3.根据权利要求1所述的带宽分配方法,其特征在于,还包括步骤:预先为特定主机预留特定数量的带宽。

4.根据权利要求1至3中任意一项所述的带宽分配方法,其特征在于,所述各个活动主机的所需带宽为所述各个活动主机的下行所需带宽,所述互联网接入链路可用带宽为互联网接入链路下行可用带宽;

所述各个活动主机的所需带宽为所述各个活动主机上行所需带宽,所述互联网接入链路可用带宽为互联网接入链路上行可用带宽;

所述各个活动主机的所需带宽为所述各个活动主机的上行所需带宽和下行所需带宽之和,所述互联网接入链路可用带宽为互联网接入链路的总带宽。

说明书 :

共享带宽接入互联网用户的带宽分配方法和装置

技术领域

[0001] 本发明涉及城域网应用技术领域,尤其涉及一种共享带宽接入互联网用户的带宽分配方法和装置。

背景技术

[0002] 通常企业用户采用一根Internet(因特网)连接为整个办公局域网中的若干台主机提供Internet接入。由于IP网络在创建之初确立的原则就是“尽力转发”,因此不能向应用提供保障,进而导致不同的应用各自争夺网络资源。在共享带宽接入Internet的环境中,这种争夺模式可能会引起较大的问题。比如一个用户运行的P2P下载应用可能会产生大量的报文,其他用户的应用如邮件、浏览等产生的有限的报文通常会淹没在大量P2P报文中,导致P2P应用耗竭Internet接入链路的全部带宽资源,而其他应用很难甚至无法正常运行。
[0003] 如前所述,IP网络在创建之初确立的原则就是“尽力转发”,因此不能向应用提供保障。因此,要保证局域网内主机获得公平的带宽分配,负责在共享链路上进行报文转发的设备(例如,网关)就必须改变尽力转发的数据发送方式。

发明内容

[0004] 本发明要解决的一个技术问题是提供一种带宽分配方法和带宽分配装置,可以改善用户的上网体验、充分利用接入资源。
[0005] 本发明提供一种共享带宽接入互联网用户的带宽分配方法,包括:分别获得各个活动主机的所需带宽;对各个活动主机的所述所需带宽进行排序;根据所述排序后的各个活动主机的所需带宽对互联网接入链路可用带宽进行分配。
[0006] 根据本发明的方法的一个实施例,根据所述排序后的各个活动主机的所需带宽对互联网接入链路可用带宽进行分配的步骤包括:确定当前各个主机所需带宽的最小值和当前总可分配带宽;根据所述当前各个主机所需带宽的最小值和所述当前总可分配带宽确定当前总分配带宽;将所述当前总分配带宽平均分配给当前需要带宽的主机;更新各个主机所需带宽和总可分配带宽,继续将所述总可分配带宽分配给需要带宽的主机。
[0007] 根据本发明的方法的一个实施例,还包括步骤:预先为特定主机预留特定数量的带宽。
[0008] 本发明提供一种带宽分配装置,包括:所需带宽获取模块,用于分别获得各个活动主机的所需带宽;所需带宽排序模块,用于对各个活动主机的所述所需带宽进行排序;带宽分配模块,用于根据排序后的各个活动主机的所需带宽对互联网接入链路可用带宽进行分配。
[0009] 根据本发明的带宽分配装置的一个实施例,带宽分配模块包括:最小所需带宽确定单元,用于确定当前各个主机所需带宽的最小值;总可分配带宽确定单元,用于确定当前总可分配带宽;总分配带宽确定单元,用于根据所述当前各个主机所需带宽的最小值和所述当前总可分配带宽确定当前总分配带宽;带宽分配单元,用于将所述当前总分配带宽平均分配给当前需要带宽的主机。
[0010] 进一步,带宽分配装置还包括:带宽预留模块,用于预先为特定主机预留特定数量的带宽。
[0011] 本发明提供的带宽分配方法和装置,获得各个活动主机需要的带宽,根据各个主机需要的带宽对可用带宽进行分配,实现局域网内各主机得到公平的带宽,从而改善用户的上网体验、充分利用接入资源。

附图说明

[0012] 图1示出本发明的带宽分配方法的一个实施例的流程图;
[0013] 图2示出本发明的带宽分配方法的另一实施例的流程图;
[0014] 图3示出根据本发明的带宽分配方法的一个应用例的带宽分配示意图;
[0015] 图4示出本发明的带宽分配装置的一个实施例的结构图;
[0016] 图5示出本发明的带宽分配装置的另一个实施例的结构图;
[0017] 图6示出本发明的带宽分配装置中带宽分配模块的一个示例的结构图。

具体实施方式

[0018] 下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。在附图中,相同的标号表示相同或者相似的组件或者元素。
[0019] 本发明的设计出发点是设计一种调度机制,一方面保证共享带宽的局域网环境中不同用户可以得到公平的带宽分配,另一方面保证用户的Internet接入带宽可以得到充分的利用。
[0020] 图1示出本发明的带宽分配方法的一个实施例的流程图。
[0021] 如图1所示,在步骤102,分别获得各个活动主机的所需带宽。例如,通过统计各个活动主机的互联网数据流量来确定各个活动主机需要的带宽。
[0022] 在步骤104,对各个活动主机的所需带宽进行排序;
[0023] 在步骤106,根据所述排序后的各个活动主机的所需带宽对互联网接入链路可用带宽进行分配。
[0024] 需要指出,在上述实施例中,上述各个活动主机的所需带宽可以是各个活动主机下行所需带宽,互联网接入链路可用带宽为互联网接入链路下行可用带宽;或者,各个活动主机的所需带宽可以是各个活动主机上行所需带宽,互联网接入链路可用带宽为互联网接入链路上行可用带宽;或者,各个活动主机的所需带宽可以是各个活动主机的上行所需带宽和下行所需带宽之和,互联网接入链路可用带宽为互联网接入链路的总带宽。
[0025] 对于上行流量,可以通过数据包中源IP地址获得各个活动主机的数据流量;对于下行流量,可以通过数据包中宿IP地址获得各个活动主机的数据流量。
[0026] 图2示出本发明的带宽分配方法的另一实施例的流程图。
[0027] 如图2所示,在步骤202,网关在预定时间间隔里将所有通过互联网接入链路的网络流量缓存起来,统计发送数据的活动主机,并统计各活动主机分别发往互联网的数据流量,根据各个活动主机的数据流量确定各个活动主机的所需带宽。
[0028] 在步骤204,将各个活动主机按所需带宽从小到大排序,编号为1..N,各个活动主机需要的带宽分别为BWapply1..BWapplyN。
[0029] 在步骤206,假设互联网接入链路总带宽为BWACC,为各个活动主机分配的带宽分别为BWassign1..BWassignN。设定初始条件:总可分配带宽BWAll=BWACC,起始分配点a=1,各个活动主机被分配的带宽清零:BWassign_x=0,x=1..N。
[0030] 在步骤208,根据当前各个主机的最小所带宽和总可分配带宽确定总分配带宽BW=Min(BWAll,BWapply_a*N),将当前总分配带宽平均分配给需要带宽的主机,每台活动主机获得带宽BWassign_x+=BW/N,x=a..N。
[0031] 在步骤210,更新各个活动主机的需要的带宽:BWapply_x=BWapply_x-BW/N,x=a..N;重新计算总可分配带宽:BWAll=BWAll-BW,a=a+1。
[0032] 在步骤212,判断BWAll是否为0,如果BWAll为0,则全部可用带宽分配完毕,分配结束,如果BWALL不为0,继续步骤214。
[0033] 在步骤214,如果BWapply_a为0,则此主机已获得足够带宽(因为前面已经按带宽进行了增序排序,故此处排在第一位的主机率先减到0),不再参加分配。如果带宽尚未分配完毕而所有的主机需要的带宽都已为0,则全部分配过程也结束;否则,跳到步骤208,剩余主机继续按上述规则分配剩余带宽。
[0034] 下面示出了本发明的带宽分配方法的一个实施例的C语言代码实现
[0035] (由于C语言的特点,主机1..n依次对应于代码中数组下标0..n-1):
[0036]BW_all=BW_acc;
for(i=0;i<n;i++)BW_assign[i]=0;
for(i=0;i<n && BW_all>0;i++){
BW=min(BW_all,BW_apply[i]*(n-i));
for(j=i,j<n,j++){
BW_assign[j]+=BW/(n-i);
BW_apply[j]-=BW/(n-i);
}
BW_all-=BW;
}
[0037] 根据本发明的带宽分配方法的一个实施例,还包括预先为特定主机预留特定数量的带宽的步骤,即在开始分配之前根据在预定的范围内给这些主机分配所需带宽。重要主机不活动时不必保留带宽,从而充分利用接入链路。
[0038] 下面通过应用例的方式介绍本发明的带宽分配方法的应用。
[0039] 在一个应用例中,有A、B、C三台主机,分别需要1M、500K和200K的带宽,互联网接入链路总带宽是1M。本发明的带宽分配方法的实施例的分配过程如下:
[0040] (a)首先找出最小的带宽需求:200K,然后分别分配200K给A、B、C。此轮分配结束后A、B、C各自得到200K带宽。各个主机仍旧需要的带宽分别为800K、300K和0。此轮总共分配掉600K的带宽,还有400K可分配的剩余带宽可以供下一轮分配。
[0041] (b)因为C已经得到满足,不再进行第二轮分配。A和B继续进行第二轮分配:此时B需要300K为所有主机中最小带宽需求。但如果分别分配300K给A和B,总共需要600K带宽,而此时最大可分配带宽只有400K。因此只能将400K的带宽在A和B中平均分配,A和B各自得到200K。此时A和B在两轮分配中总共得到了400K。此轮结束后,A、B、C得到的累计总带宽分别是400K、400K和200K,总剩余带宽为0,已经全部分配完毕。
[0042] 在另一个应用例中,假设互联网接入链路总带宽是1.5M,其他条件同上一应用例,那么分配过程是:
[0043] (a)首先找出最小的带宽需求:200K,然后分别分配200K给A、B、C。此轮分配结束后A、B、C各自得到200K带宽。各个主机仍旧需要的带宽分别为800K、300K和0。此轮总共分配掉600K的带宽,还有900K的可分配的剩余带宽可以供下一轮分配。
[0044] (b)因为C已经得到满足,不再进行第二轮分配。A和B继续进行第二轮分配:此时B需要300K为主机中最小带宽需求。因此,分别分配300K给A和B。此时A和B在两轮分配中总共得到了600K。此轮结束后,A、B、C得到的累计总带宽分别是500K、500K和200K,可分配的剩余带宽为300K。
[0045] (c)第三轮时,B和C均已得到满足,A仍需500K,但仅有300K可分配。因此就将300K全部分配给A。
[0046] 分配结束时,A、B、C得到的累计总带宽分别是800K、500K、200K。
[0047] 上述应用例的具体带宽分配示意图参见图3。
[0048] 承接上一个应用例,假设除A、B、C三台主机外,另有一台主机Z是重要主机,设置为该重要主机保留300K的流量(如果该主机需求小于300K,则优先满足实际所需。如果大于300K,则先分配300K之后再参与与其他主机的公平竞争)。
[0049] 假设总带宽为1.5M,A、B、C需求同上一应用例,Z保障300K而实际需求200K。
[0050] (a)先分配200K给Z,剩余可用1.3M;
[0051] (b)此时A、B、C、Z分别需要1M、500K、200K、0K,总可分配带宽1.3M。在此基础上,A、B、C按照上面实施例的方式分配1.3M带宽。
[0052] 假设总流量为1.5M,A/B/C需求同上一应用例,Z保障300K而实际需求400K。
[0053] (a)先分配300K给Z,剩余可用1.2M;
[0054] (b)此时A、B、C、Z分别需要1M、500K、200K、100K,总可分配带宽1.2M。在此基础上,A、B、C、Z按照上面实施例的方式分配1.2M带宽。
[0055] 按这样的规则,除了被预先分配带宽的特定主机外,每台主机只有在其他主机不再需要的情况下才有可能获得比其他主机更大的带宽。
[0056] 图4示出本发明的带宽分配装置的一个实施例的结构图。如图4所示,该带宽分配装置包括所需带宽获取模块41、所需带宽排序模块42和带宽分配模块43。其中,所需带宽获取模块41用于分别获得各个活动主机的互联网数据所需带宽;所需带宽排序模块42用于对各个活动主机的所需带宽进行排序;带宽分配模块43用于根据排序后的各个活动主机的互联网数据所需带宽对互联网接入链路可用带宽进行分配。
[0057] 图5示出本发明的带宽分配装置的另一个实施例的结构图。如图5所示,该实施例的带宽分配装置包括所需带宽获取模块41、所需带宽排序模块42、带宽分配模块43和带宽预留模块54。其中,所需带宽获取模块41、所需带宽排序模块42和带宽分配模块43可以参见图4中对应模块的描述,为简洁起见在此不再详细叙述。带宽预留模块54用于预先为特定主机预留特定数量的带宽。带宽分配模块43用于根据排序后的各个活动主机的所需带宽对互联网接入链路的总带宽减去预留的带宽后的可用带宽进行分配。
[0058] 图6示出本发明的带宽分配装置中带宽分配模块的一个示例的结构图。如图6所示,该带宽分配模块包括带宽分配模块包括最小所需带宽确定单元61、总可分配带宽确定单元62、总分配带宽确定单元63和带宽分配单元64。其中,最小所需带宽确定单元61用于确定当前各个主机所需带宽的最小值;总可分配带宽确定单元62用于确定当前总可分配带宽;总分配带宽确定单元63用于根据当前各个主机所需带宽的最小值和当前总可分配带宽确定当前总分配带宽;带宽分配单元64用于将当前总分配带宽平均分配给当前需要带宽的主机。
[0059] 本发明的带宽分配方法可以在数据发送端执行。对于局域网发送给Internet的报文,可以在用户接入设备上实施;对于Internet返回给用户局域网的数据,可以在运营商的局端设备上实施。对于使用NAT接入的用户,由于运营商的局端设备需要了解用户局域网内的不同主机,而用户端的NAT操作隐藏了用户主机,需要将NAT操作转而由运营商的局端设备来执行。
[0060] 本发明的方法和装置,在接入设备上识别来自/去向不同本地用户的报文,根据公平分配、充分利用的原则进行恰当的调度,从而改善用户的上网体验、充分利用接入资源。
[0061] 本发明适用于可能有不同类型应用运行于多种不同主机的共享带宽上网的中小企业环境及家庭环境,以及使用共享方式接入用户的环境(如Cable接入)等等。更进一步,本发明的方法经过简单的扩展后可以为运行于同一主机上的不同应用公平分配带宽。
[0062] 本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。