具体实施方式
下面结合附图,对本发明实施例提供的一种控制带宽的方法、装置和设备的具体实施方式进行详细地说明。
首先,如图1所示,本发明实施例提供的一种控制带宽的方法,该方法包括以下步骤:
S101、监测并截取预设端口的报文,所述预设端口用于向下游移动终端转发报文;
作为一种优选的实施方式,本步骤S101可以采用如下方式:
为所述预设端口创建流量管理队列,并将所述预设端口向下游移动终端转发的报文加入所述流量管理队列;
设定用于控制所述流量管理队列中的报文发送速率的管理算法。
在本实施例中,优选的使用管理算法为HTB(Hierarchical Token Bucket,分层令牌桶)算法。
优选地,所述设定用于控制所述流量管理队列中的报文发送速率的管理算法,可以采用如下方式:
设定所述管理算法为分层令牌桶HTB算法;
创建HTB根类,并设置所述预设端口的最大带宽,所述HTB根类包括多个用于控制所述流量管理队列中的报文的发送速率的HTB子类规则。
优选地,所述设置所述预设端口的最大带宽之后,所述方法还包括:
创建HTB子类规则,并在每个HTB子类规则中设定最大带宽;
将所述下游移动终端的IP地址与HTB子类规则进行关联。
优选地,所述为所述预设端口创建流量管理队列之前,所述方法还包括:
获取下游移动终端的IP地址,以及用户为每个IP地址所配置的最大带宽。
优选地,所述在每个HTB子类规则中设定最大带宽,可以采用如下方式:
根据用于为每个IP地址所配置的最大带宽在每个HTB子类规则中设定最大带宽。
S102、获取所述报文的目的IP地址以及为所述目的IP地址预先配置的最大带宽,所述目的IP地址与所述下游移动终端一一对应;
作为一种优选的实施方式,本步骤S102可以采用如下方式:
获取所述报文的目的IP地址,以及所述目的IP地址对应的HTB子类规则。
S103、根据所述最大带宽向所述下游移动终端发送所述报文。
作为一种优选的实施方式,本步骤S103可以采用如下方式:
根据所述HTB子类规则中设置的最大带宽向所述下游移动终端发送所述报文。
本实施例提供了一种控制带宽的方法,通过监测并截获向下游移动终端转发的报文,并获取报文的IP地址,对于每个IP地址对应的报文使用不超过预先配置的最大带宽进行转发,可以控制下游移动终端对本机的带宽的占用,避免下游移动终端过多的带宽占用对本机的影响。
本发明实施例还提供了另一种控制带宽的方法,以在手机上进行实施为例说明,首先,介绍在手机端中对于报文的处理流程:
如图2所示为手机端中对于报文的处理流程示意图,报文从输入接口进入设备,输入接口一般为网卡,也可以是其他虚拟接口;报文在Ingress(进入)模块进行初步的解析,如果是协议报文或本机报文则上送给应用层处理,其他报文进入Forward(转发)模块进行转发处理,Forward模块接收Ingress模块和上层应用发送的报文,解析报文IP地址并查找路由表,确定下一跳出接口,将报文发送到Egress(出口)模块;Egress模块对发送报文进行相应的封装,发送到出接口队列。出接口队列(也即流量管理队列)根据用户配置的根类规则、子类规则对报文进行相应的QoS(QualityofService,服务质量)处理,并最终将报文发送到出接口。出接口封装报文的物理层信息后将报文发送到对应的下游移动终端中。
如图3所示,对另一种控制带宽的方法进行具体说明,该方法包括:
S201、获取接入本机的下游移动终端的IP地址列表;
其中,本步骤用于在本机开启WiFi热点的功能后,获取接入本机的所有下游移动终端的IP地址,并组织为IP地址列表。
S202、获取IP地址列表中的每个IP地址对应的限速值;
其中,所述限速值也即在本机向下游移动终端转发报文时,该IP地址对应的移动终端被允许的最大带宽。
该限速值可由用户设定,也可以为默认值,且对于每个下游移动终端的限速值可不同。
例如:有三个下游移动终端A、B、C连接在本机上,机主可以为下游移动终端A、B、C的限速值分别设定为20Kb/s、50Kb/s、30Kb/s。
S203、清除预设端口的流量管理规则;
优选地,在本实施例中,预设端口为wlan0接口,也即无线网卡接口,在本机作为热点时,通过WiFi向下游移动终端转发报文。
优选地,本实施例以在安卓系统中进行实现为例进行说明,由于安卓系统使用linux内核,因此,可通过TC过滤器对wlan0接口发出的报文进行速率控制。
需要说明的是,在TC过滤器对wlan0接口转发的报文进行速率控制时,需要指定流量管理规则。由于在本机设置自身为热点后,对于接入的下游移动终端的限速值可能发生变化,因此,需要清除原有的已配置的流量管理规则,并通过后续步骤重新配置。
S204、为预设端口设置流量管理队列,并将该预设端口向下游移动终端转发的报文加入该流量管理队列;
优选地,本步骤中创建的流量管理队列用于监测并截取通过wlan0向下游移动终端转发的报文,将转发的报文放入流量管理队列中,由TC过滤器根据流量管理规则进行向下游的转发。
S205、创建HTB根类,并为预设端口设置最大带宽;
其中,HTB根类中包括多个HTB子类规则,HTB子类规则用于控制流量管理队列中的报文的发送速率。
对于流量管理队列中的报文,TC过滤器可以为每个数据包选择对于的HTB子类规则,使得该数据包在对于的HTB子类规则下进行发送。
S206、创建HTB子类规则,并设置用户配置的限速值;
需要说明的是,在每个HTB子类中可以根据用户为每个下游移动终端配置的最大带宽设置限速值。
例如,在本实施例中可设定三个HTB子类规则a、b、c,并分别配置为限速值为20Kb/s、30Kb/s、50Kb/s。
S207、创建TC过滤器,并将IP地址列表中的IP地址与HTB子类规则进行关联;
其中,IP地址列表中的每个IP地址分别与下游移动终端对应。由于对不同的下游移动终端可能设定不同的限速值,因此,还需将下游移动终端的IP与不同的HTB子类规则进行对应,以使得控制向下游移动终端的报文转发速率。
例如,在本实施例中可以如下:
下游移动终端A的IP地址与HTB子类规则a对应;
下游移动终端B的IP地址与HTB子类规则c对应;
下游移动终端C的IP地址与HTB子类规则b对应。
S208、获取流量管理队列中的报文的目的IP地址,以及该IP地址对应的HTB子类规则;
例如,当TC过滤器检测得到当前待转发报文中的目的IP地址为下游移动终端A时,可根据步骤S207中设定的对应关系可知该报文需遵循HTB子类规则a,对应的最大限速值为20Kb/s。
S209、根据HTB子类规则中设定的限速值向对应下游移动终端发送报文。
需要说明的是,在用户关闭热点功能之前,对于全部向下游移动终端转发的报文使用步骤S208-209处理。
下面,对根据HTB子类规则中设定的限速值向对应下游移动终端发送报文进行具体说明:
在判断得到报文符合对应的HTB子类规则后,会度量当前发往该报文对应的IP地址的报文发送速率,当报文发送速率大于该HTB子类规则中设定的限速值时,则丢弃一部分报文。
并同时对HTB算法进行说明:
在HTB算法中设定有令牌桶,并且使该令牌桶以特定速率的令牌进行填充,每个令牌在浏览管理队列中领取一个数据包,并在令牌桶中被删除,以对流量管理队列中的报文进行转发速率控制:
当数据流的速度等于令牌流的速度时,数据可以无延迟的通过队列;
当数据流的速度小于令牌流的速度时,剩下的令牌会在令牌桶中积累,直至令牌桶被装满,并可以在未来的速率提升时被消耗;
当数据流的速度大于令牌桶的速度时,会导致令牌桶中的令牌被消耗完毕,如果这时数据流持续的发过来,则将发送丢包。
本发明实施例提供的上述控制带宽的方法,通过监测并截获向下游移动终端转发的报文,并获取报文的IP地址,对于每个IP地址对应的报文使用不超过预先配置的最大带宽进行转发,可以控制下游移动终端对本机的带宽的占用,避免下游移动终端过多的带宽占用对本机的影响。
如图4所示,本发明实施例还提供了一种控制带宽的装置,所述装置包括:
监测模块301,用于监测并截取预设端口的报文,所述预设端口用于向下游移动终端转发报文;
带宽判断模块302,用于获取所述报文的目的IP地址以及为所述目的IP地址预先配置的最大带宽,所述目的IP地址与所述下游移动终端一一对应;
转发模块303,用于根据所述最大带宽向所述下游移动终端发送所述报文。
如图5所示,所述监测模块301,包括:
队列创建单元3011,用于为所述预设端口创建流量管理队列,并将所述预设端口向下游移动终端转发的报文加入所述流量管理队列;
算法设定单元3012,用于设定用于控制所述流量管理队列中的报文发送速率的管理算法。
所述算法设定单元3012,用于设定所述管理算法为分层令牌桶HTB算法,创建HTB根类,并设置所述预设端口的最大带宽,所述HTB根类包括多个用于控制所述流量管理队列中的报文的发送速率的HTB子类规则。
如图6所示,所述监测模块301还包括:
规则创建单元3013,用于在所述算法设定单元3012设置所述预设端口的最大带宽之后,创建HTB子类规则,并在每个HTB子类规则中设定最大带宽;
关联单元3014,用于将所述下游移动终端的IP地址与HTB子类规则进行关联。
如图7所示,所述监测模块301还包括:
带宽获取单元3015,用于在所述队列创建单元3011为所述预设端口创建流量管理队列之前,获取下游移动终端的IP地址,以及用户为每个IP地址所配置的最大带宽。
优选地,所述所述规则创建单元用于创建HTB子类规则,并根据用于为每个IP地址所配置的最大带宽在每个HTB子类规则中设定最大带宽。
优选地,所述带宽判断模块302,用于获取所述报文的目的IP地址,以及所述目的IP地址对应的HTB子类规则。
优选地,所述转发模块303,用于根据所述HTB子类规则中设置的最大带宽向所述下游移动终端发送所述报文。
本发明实施例提供的上述控制带宽的装置,通过监测并截获向下游移动终端转发的报文,并获取报文的IP地址,对于每个IP地址对应的报文使用不超过预先配置的最大带宽进行转发,可以控制下游移动终端对本机的带宽的占用,避免下游移动终端过多的带宽占用对本机的影响。
另外,本发明还提供了一种设备,该设备包括:
一个或多个处理器;
存储器;和
一个或多个模块(programs),该一个或多个模块存储于上述存储器中并被配置成由上述一个或多个处理器执行,其中,上述一个或多个模块具有如下功能:
监测并截取预设端口的报文,所述预设端口用于向下游移动终端转发报文;
获取所述报文的目的IP地址以及为所述目的IP地址预先配置的最大带宽,所述目的IP地址与所述下游移动终端一一对应;
根据所述最大带宽向所述下游移动终端发送所述报文。
优选地,所述监测并截取预设端口的报文,采用如下方式:
为所述预设端口创建流量管理队列,并将所述预设端口向下游移动终端转发的报文加入所述流量管理队列;
设定用于控制所述流量管理队列中的报文发送速率的管理算法。
优选地,所述设定用于控制所述流量管理队列中的报文发送速率的管理算法,采用如下方式:
设定所述管理算法为分层令牌桶HTB算法;
创建HTB根类,并设置所述预设端口的最大带宽,所述HTB根类包括多个用于控制所述流量管理队列中的报文的发送速率的HTB子类规则。
优选地,所述一个或多个模块还具有如下功能:
所述设置所述预设端口的最大带宽之后,创建HTB子类规则,并在每个HTB子类规则中设定最大带宽;
将所述下游移动终端的IP地址与HTB子类规则进行关联。
优选地,所述一个或多个模块还具有如下功能:
所述为所述预设端口创建流量管理队列之前,获取下游移动终端的IP地址,以及用户为每个IP地址所配置的最大带宽。
优选地,所述在每个HTB子类规则中设定最大带宽,采用如下方式:
根据用于为每个IP地址所配置的最大带宽在每个HTB子类规则中设定最大带宽。
优选地,所述获取所述报文的目的IP地址以及为所述目的IP地址预先配置的最大带宽,采用如下方式:
获取所述报文的目的IP地址,以及所述目的IP地址对应的HTB子类规则。
优选地,所述根据所述最大带宽向所述下游移动终端发送所述报文,采用如下方式:
根据所述HTB子类规则中设置的最大带宽向所述下游移动终端发送所述报文。
本发明实施例提供的上述设备,在运行上述一个或多个模块,可以监测并截获向下游移动终端转发的报文,并获取报文的IP地址,对于每个IP地址对应的报文使用不超过预先配置的最大带宽进行转发,可以控制下游移动终端对本机的带宽的占用,避免下游移动终端过多的带宽占用对本机的影响。
另外,本实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在具有触摸屏幕的设备时,可以使得该设备具有如下功能:
监测并截取预设端口的报文,所述预设端口用于向下游移动终端转发报文;
获取所述报文的目的IP地址以及为所述目的IP地址预先配置的最大带宽,所述目的IP地址与所述下游移动终端一一对应;
根据所述最大带宽向所述下游移动终端发送所述报文。
优选地,所述监测并截取预设端口的报文,采用如下方式:
为所述预设端口创建流量管理队列,并将所述预设端口向下游移动终端转发的报文加入所述流量管理队列;
设定用于控制所述流量管理队列中的报文发送速率的管理算法。
优选地,所述设定用于控制所述流量管理队列中的报文发送速率的管理算法,采用如下方式:
设定所述管理算法为分层令牌桶HTB算法;
创建HTB根类,并设置所述预设端口的最大带宽,所述HTB根类包括多个用于控制所述流量管理队列中的报文的发送速率的HTB子类规则。
优选地,所述一个或多个模块还可以使得设备具有如下功能:
所述设置所述预设端口的最大带宽之后,创建HTB子类规则,并在每个HTB子类规则中设定最大带宽;
将所述下游移动终端的IP地址与HTB子类规则进行关联。
优选地,所述一个或多个模块还可以使得设备具有如下功能:
所述为所述预设端口创建流量管理队列之前,获取下游移动终端的IP地址,以及用户为每个IP地址所配置的最大带宽。
优选地,所述在每个HTB子类规则中设定最大带宽,采用如下方式:
根据用于为每个IP地址所配置的最大带宽在每个HTB子类规则中设定最大带宽。
优选地,所述获取所述报文的目的IP地址以及为所述目的IP地址预先配置的最大带宽,采用如下方式:
获取所述报文的目的IP地址,以及所述目的IP地址对应的HTB子类规则。
优选地,所述根据所述最大带宽向所述下游移动终端发送所述报文,采用如下方式:
根据所述HTB子类规则中设置的最大带宽向所述下游移动终端发送所述报文。
本实施例提供了一种存储介质,通过在设备上运行后,可以监测并截获向下游移动终端转发的报文,并获取报文的IP地址,对于每个IP地址对应的报文使用不超过预先配置的最大带宽进行转发,可以控制下游移动终端对本机的带宽的占用,避免下游移动终端过多的带宽占用对本机的影响。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。