一种带宽控制方法及路由器
技术领域
本发明属于通信领域,尤其涉及一种带宽控制方法及路由器。
背景技术
目前,市面上的大部分家居办公(SmallOfficeHomeOffice,SOHO)路由器都具有带宽控制功能。
用户开启带宽控制功能后,需要填写从宽带提供商申请到的实际带宽,包括上行总带宽和下行总带宽。填写完实际带宽后,用户通过创建带宽控制条目,为接入的指定IP的通信终端分配带宽,包括上行带宽和下行带宽的最小保障和最大限制。带宽控制设置界面如图1所示。
然而,由于常规带宽控制算法要求广域网(WideAreaNetwork,WAN)口链路总带宽已知,在明确总带宽的情况下,结合实际宽带的使用情况,对带宽控制条目中指定的IP进行保障或实施限制。这就要求,在使用路由器的带宽控制功能时,用户必须准确填写从宽带提供商申请到的实际带宽大小、填写欲分配给各个用户(通过IP来标识不同的用户)的带宽大小。对于不具备数据通信知识基础、对带宽的量化概念不熟悉的普通用户而言,会造成困扰。当用户无法正确填写实际申请的总带宽时,会导致控制效果不精确,甚至会给用户带来损失。
为了阐述现有带宽控制配置的弊端,以下按照用户填写的带宽偏大或偏小进行案例说明。假设用户填写的总带宽为4M,两台接入的通信终端各分配2M带宽:
案例一:若用户申请的实际带宽只有2M,则按照填写的4M带宽进行量化控制时,两台通信终端实际上都无法受限,自由竞争2M的带宽。
案例二:若用户申请的实际带宽为8M,则按照填写的4M带宽进行量化控制时,用户只能使用到4M的带宽,会造成4M的带宽浪费。浪费的根源在于路由器在WAN接口下行将8M的带宽缓冲整形成了用户填写的4M。
相比案例一造成的控制失效而言,案例二则造成了可利用宽带资源的浪费,直接损害了用户的利益。
综上所述,现有技术的带宽控制在用户体验层面,带宽控制的配置过于复杂,不利于用户的使用;在技术层面,带宽控制的效果过分依赖用户填写的总带宽的准确性,因此造成控制失效或可利用宽带资源的浪费,损害了用户的利益。
发明内容
本发明的目的在于提供一种带宽控制方法及路由器,旨在解决现有技术的带宽控制在用户体验层面,带宽控制的配置过于复杂,不利于用户的使用;在技术层面,带宽控制的效果过分依赖用户填写的总带宽的准确性,因此造成控制失效或可利用宽带资源的浪费,损害了用户的利益的问题。
第一方面,本发明提供了一种带宽控制方法,所述方法包括:
对下行带宽进行基于流量统计的带宽训练,获得下行带宽;
接收给接入路由器的各个通信终端分配的带宽比例的设置;
根据获得的下行带宽和接入路由器的各个通信终端分配的带宽比例,计算出接入路由器的各个通信终端实际可分配的带宽;
根据接入路由器的各个通信终端实际可分配的带宽对接入路由器的各个通信终端进行带宽控制。
第二方面,本发明提供了一种路由器,所述路由器包括:
带宽训练模块,用于对下行带宽进行基于流量统计的带宽训练,获得下行带宽;
接收设置模块,用于接收给接入路由器的各个通信终端分配的带宽比例的设置;
带宽计算模块,用于根据获得的下行带宽和接入路由器的各个通信终端分配的带宽比例,计算出接入路由器的各个通信终端实际可分配的带宽;
带宽控制模块,用于根据接入路由器的各个通信终端实际可分配的带宽对接入路由器的各个通信终端进行带宽控制。
在本发明中,由于对下行带宽进行基于流量统计的带宽训练,获得下行带宽,根据获得的下行带宽和接入路由器的各个通信终端分配的带宽比例,计算出接入路由器的各个通信终端实际可分配的带宽。因此用户不再需要填写总带宽大小,也不需要填写分配给接入路由器的各个通信终端的带宽大小,只需要填写欲分配给接入路由器的各个通信终端的带宽比例即可,简单易用,且准确性高。
附图说明
图1是现有技术的带宽控制设置界面示意图。
图2是本发明实施例一提供的带宽控制方法的流程图。
图3是本发明实施例一提供的带宽控制方法中S101的流程图。
图4是本发明实施例一提供的带宽控制设置界面示意图。
图5是本发明实施例二提供的路由器的功能模块框图。
图6是本发明实施例二提供的路由器中的带宽训练模块的功能模块框图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
请参阅图2,本发明实施例一提供的带宽控制方法包括以下步骤:
S101、对下行带宽进行基于流量统计的带宽训练,获得下行带宽;
目前的带宽测量技术可以分为两类:主动测量和被动测量。被动测量是以数据包捕获为基础,同时需要有网络的管理权限。被动测量使用接入网络的探针来记录和统计链路上数据包的网络特性。被动测量不必发送主动测量数据包,也不会占用网络带宽,对网络影响较小,可以获得更为准确的测量结果。
默认情况下,路由器对出去(Egress)和进入(Ingress)的数据包尽力而为地转发,瓶颈在于互联网服务提供商(InternetServiceProvider,ISP)局端所能提供的上行接纳和下行转发服务能力,即用户与宽带提供商的签约带宽。用户申请的带宽既定,在实际网络环境下,可利用带宽在小范围内会略有浮动,但路由器总是能快速转发收到的数据包。
作为网络接入设备的路由器,可以充分发挥其节点捕获功能,结合路由器尽力而为的转发特性,对转发流量进行统计,通过对折算出的传输速率进行数据采样,最后进行非线性回归分析,即可被动测量出有效带宽。
我们日常所说的2M、4M、8M带宽,是指下载速率衡量的下行带宽。另外,用户在进行浏览网页、观看网络视频、执行对等网络(PeertoPeer,P2P)下载时,更多时候是以下载为主,上传往往只是触发下载行为以及下载过程中的反馈(例如传输控制协议(TransmissionControlProtocol,TCP)的应答)。鉴于签约带宽及用户上网行为中往往重在下行,故本发明实施例一是对下行带宽进行基于流量统计的带宽训练探测。
在本发明实施例一中,路由器对下行带宽进行基于流量统计的带宽训练探测的依据如下:
a、根据服务合同,ISP局端应该以签约额定带宽给用户推送数据。假设用户申请的带宽为2M,则在用户启动一定的下载任务时,大概有256KB/s的下载速率。假设允许误差为50KB/s,则下载速率应该在200~256KB/s范围内波动。只要ISP局端恪守签约带宽提供服务,则链路带宽总是会在2M左右,用户下载资源总是逼近允诺速率。
b、用户在启动下载任务后,在给定时间内总会逐渐逼近最大下载速率。路由器截获这些下载流量,每隔一段时间间隔统计下载流量并计算出下载速率,然后进行采样分析。根据带宽属性中尽力而为的推送原则和统计学规律,在一定的标准差范围内,统计出的下载速率将收敛于某一数值,根据该收敛于某一数值的下载速率即可换算出来下行带宽。
请参阅图3,在本发明实施例一,S101具体包括以下步骤:
S1011、启动下载任务;
S1012、每隔一采样周期T统计一次下载流量,计算下载速率;
在本发明实施例一,采样周期不宜过短,如果采样周期太短则将对网络通信性能造成较大影响。结合实际情况,采样周期为秒级,最小采样周期为1s。
下载速率=下载量/时间,按照链路网卡的传输特性,毫秒级即可达到最大下载速率。由于采样周期的限制,必须要有一定的下载量,才有可能统计出最大下载速率。
对于2M带宽,理论最大下载速率为256KB/s,则1s的采样周期内,至少需要下载256KB的数据才有可能采样到最大下载速率;对于10M带宽,理论最大下载速率为1.25MB/s,则1s的采样周期内,至少需要下载1.25MB的数据才有可能采样到最大下载速率;对于100M带宽,理论最大下载速率为12.5MB/s,则1s的采样周期内,至少需要下载12.5MB的数据才有可能采样到最大下载速率。由此可见,随着带宽的增大和采样周期的延长,需要的采样下载量越大。用户持续下载量越大,统计周期越短,统计时间越长,统计可靠性越高。
S1013、重复执行S1012预定次数n,计算平均下载速率;
S1014、根据多个下载速率与平均下载速率计算出标准差;
在本发明实施例一中,S1014具体为:
分别计算每个下载速率与平均下载速率之间的速率差;
计算多个速率差的平均值得到标准差。
S1015、判断标准差是否小于预设值(例如标准差预设值为30Kbps),如果是,则执行S1016;否则返回执行S1012;
S1016、将平均下载速率换算为下行带宽。
在本发明实施例一中,S1011之前还包括以下步骤:
初始化默认设置总带宽以及接入路由器的各个通信终端的带宽均不受限。
由于实际用户使用的实时带宽随着上网时段的不同,可能会低于或高于签约带宽,与签约带宽的偏差称作“抖动”。例如晚间高峰期,用户实际可使用的带宽可能略低于签约带宽,就SOHO用户而言,签约带宽为最大可利用带宽,鲜有超过签约带宽的情况发生。
如果没有及时检测出向下抖动,实际可利用总带宽减小,按比例分配的带宽略大,预期限制最大控制作用有所稀释,但不影响用户使用;如果没有及时检测出向上抖动,则期间用户可利用带宽被人为约束变小,损耗流失了部分可利用带宽。
考虑到统计误差和链路消耗,训练出的下行带宽一般会略小于签约带宽。为了避免带宽浪费,需要对训练出的下行带宽略加增量,然后再作为带宽控制的量化基准。考虑到抖动的存在,将训练出的下行带宽增加0.5M,作为统计误差补偿和抖动检测余量。
因此在本发明实施例一中,S1016之后,所述方法还可以包括:
将下行带宽增加预定的值(例如0.5M),作为统计误差补偿和抖动检测余量。
在本发明实施例一中,S1016之后,所述方法还可以包括:
判断当前下行带宽跟前一统计周期统计出的下行带宽的差是否超过预定的值(例如256Kbps),如果是,则更新下行带宽,即重新执行S101。
S102、接收给接入路由器的各个通信终端分配的带宽比例的设置;设置界面如图4所示;
在本发明实施例一中,S102具体为:
接收给接入路由器的各个不同IP地址的通信终端分配的带宽比例的设置。
S103、根据获得的下行带宽和接入路由器的各个通信终端分配的带宽比例,计算出接入路由器的各个通信终端实际可分配的带宽;
在本发明实施例一中,S103具体为:
根据获得的下行带宽计算出上行带宽,根据下行带宽和上行带宽以及接入路由器的各个通信终端分配的带宽比例,计算出接入路由器的各个通信终端实际可分配的下行带宽和上行带宽。
在本发明实施例一中,获得的下行带宽为增加预定的值后的下行带宽。
S104、根据接入路由器的各个通信终端实际可分配的带宽对接入路由器的各个通信终端进行带宽控制。
在本发明实施例一中,S104具体为:
根据接入路由器的各个通信终端实际可分配的带宽通过分层令牌桶(HierarchicalTokenBucket,HTB)流量控制方式对接入路由器的各个通信终端进行带宽控制。
在本发明实施例一中,由于对下行带宽进行基于流量统计的带宽训练,获得下行带宽,根据获得的下行带宽和接入路由器的各个通信终端分配的带宽比例,计算出接入路由器的各个通信终端实际可分配的带宽。因此用户不再需要填写总带宽大小,也不需要填写分配给接入路由器的各个通信终端的带宽大小,只需要填写欲分配给接入路由器的各个通信终端的带宽比例即可,简单易用,且准确性高。
实施例二:
请参阅图5,本发明实施例二提供的路由器包括:带宽训练模块11、接收设置模块12、带宽计算模块13和带宽控制模块14。
带宽训练模块11,用于对下行带宽进行基于流量统计的带宽训练,获得下行带宽;
请参阅图6,在本发明实施例二,带宽训练模块11具体包括:启动模块101、下载速率计算模块102、平均下载速率计算模块103、标准差计算模块104、判断模块105和换算模块106。
启动模块101,用于启动下载任务;
下载速率计算模块102,用于每隔一采样周期T统计一次下载流量,计算下载速率;
在本发明实施例二,采样周期不宜过短,如果采样周期太短则将对网络通信性能造成较大影响。结合实际情况,采样周期为秒级,最小采样周期为1s。
下载速率=下载量/时间,按照链路网卡的传输特性,毫秒级即可达到最大下载速率。由于采样周期的限制,必须要有一定的下载量,才有可能统计出最大下载速率。
对于2M带宽,理论最大下载速率为256KB/s,则1s的采样周期内,至少需要下载256KB的数据才有可能采样到最大下载速率;对于10M带宽,理论最大下载速率为1.25MB/s,则1s的采样周期内,至少需要下载1.25MB的数据才有可能采样到最大下载速率;对于100M带宽,理论最大下载速率为12.5MB/s,则1s的采样周期内,至少需要下载12.5MB的数据才有可能采样到最大下载速率。由此可见,随着带宽的增大和采样周期的延长,需要的采样下载量越大。用户持续下载量越大,统计周期越短,统计时间越长,统计可靠性越高。
平均下载速率计算模块103,用于下载速率计算模块102计算预定次数n的下载速率后,计算平均下载速率;
标准差计算模块104,用于根据多个下载速率与平均下载速率计算出标准差;
在本发明实施例二中,标准差计算模块104具体用于分别计算每个下载速率与平均下载速率之间的速率差;计算多个速率差的平均值得到标准差。
判断模块105,用于判断标准差是否小于预设值,如果大于预设值,则控制下载速率计算模块102重新执行步骤;
换算模块106,用于当判断模块判断标准差小于预设值时,将平均下载速率换算为下行带宽。
在本发明实施例二中,带宽训练模块11还包括:
初始化模块,用于初始化默认设置总带宽以及接入路由器的各个通信终端的带宽均不受限。
由于实际用户使用的实时带宽随着上网时段的不同,可能会低于或高于签约带宽,与签约带宽的偏差称作“抖动”。例如晚间高峰期,用户实际可使用的带宽可能略低于签约带宽,就SOHO用户而言,签约带宽为最大可利用带宽,鲜有超过签约带宽的情况发生。
如果没有及时检测出向下抖动,实际可利用总带宽减小,按比例分配的带宽略大,预期限制最大控制作用有所稀释,但不影响用户使用;如果没有及时检测出向上抖动,则期间用户可利用带宽被人为约束变小,损耗流失了部分可利用带宽。
考虑到统计误差和链路消耗,训练出的下行带宽一般会略小于签约带宽。为了避免带宽浪费,需要对训练出的下行带宽略加增量,然后再作为带宽控制的量化基准。考虑到抖动的存在,将训练出的下行带宽增加0.5M,作为统计误差补偿和抖动检测余量。
因此在本发明实施例二中,带宽训练模块11还可以包括:
增加模块,用于将下行带宽增加预定的值(例如0.5M),作为统计误差补偿和抖动检测余量。
在本发明实施例二中,带宽训练模块11还可以包括:
第一判断模块,用于判断当前下行带宽跟前一统计周期统计出的下行带宽的差是否超过预定的值(例如256Kbps),如果是,则更新下行带宽,即重新控制带宽训练模块11执行步骤。
接收设置模块12,用于接收给接入路由器的各个通信终端分配的带宽比例的设置;
在本发明实施例二中,接收设置模块12具体用于接收给接入路由器的各个不同IP地址的通信终端分配的带宽比例的设置。
带宽计算模块13,用于根据获得的下行带宽和接入路由器的各个通信终端分配的带宽比例,计算出接入路由器的各个通信终端实际可分配的带宽;
在本发明实施例二中,带宽计算模块13具体用于根据获得的下行带宽计算出上行带宽,根据下行带宽和上行带宽以及接入路由器的各个通信终端分配的带宽比例,计算出接入路由器的各个通信终端实际可分配的下行带宽和上行带宽。
在本发明实施例二中,获得的下行带宽为增加预定的值后的下行带宽。
带宽控制模块14,用于根据接入路由器的各个通信终端实际可分配的带宽对接入路由器的各个通信终端进行带宽控制。
在本发明实施例二中,带宽控制模块14具体用于根据接入路由器的各个通信终端实际可分配的带宽通过HTB流量控制方式对接入路由器的各个通信终端进行带宽控制。
在本发明实施例二中,由于对下行带宽进行基于流量统计的带宽训练,获得下行带宽,根据获得的下行带宽和接入路由器的各个通信终端分配的带宽比例,计算出接入路由器的各个通信终端实际可分配的带宽。因此用户不再需要填写总带宽大小,也不需要填写分配给接入路由器的各个通信终端的带宽大小,只需要填写欲分配给接入路由器的各个通信终端的带宽比例即可,简单易用,且准确性高。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。