一种基于双重优先级的路由带宽分配方法

文档序号:9508524阅读:1063来源:国知局
一种基于双重优先级的路由带宽分配方法
【技术领域】
[0001]本发明涉及路由带宽分配的技术领域,具体涉及一种基于双重优先级的路由带宽分配方法。
【背景技术】
[0002]近年来,无论在家里、办公室或是其他公共场合,各种能够支持网络接入的设备越来越多。然而每种上网设备对于网路对于网络带宽的分配都是公平竞争的,路由交换设备在网络带宽的分配上也都是先到先得,随机分配。考虑如下场景:各种设备通过路由交换设备接入互联网,假如当前路由交换设备入网侧出现了拥塞,此时将会影响所有接入终端的上网体验。如果某个用户希望当前的某台设备中的某个应用能够优先享用带宽(比如希望笔记本看电影),对于该场景下的用户需求,现有的路由交换设备不能解决该问题。
[0003]现有的路由器并不支持对基于设备的带宽分配,即通过对不同的设备进行优先级划分,并根据优先级来进行各个设备的带宽分配。同时,每台设备上都会同时运行多个应用,目前的路由交换设备也并不支持对各个应用的类型区分。而伴随着越来越多的接入设备陆续出现,各种应用也相继推出,用户对于不同设备上的不同应用在特定时刻会有不同的带宽需求,现有的路由交换设备也愈加难以满足各种带宽灵活化需求。
[0004]申请号为201410258042.5,专利名称为一种带宽分配的方法及路由器的中国发明专利申请。其公开的技术方案是:通过对不同的应用进行优先级区分,以实现动态调整业务的上行和下行带宽。但是,该技术方案是针对所有用户,并未对用户进行优先级区分;其次,该方案只是针对不同的应用进行优先级划分,而对于应用来说,往往包含多种业务流,比如音频、视频、文件等,并未给出针对以流为粒度的优先级区分。

【发明内容】

[0005]本发明要解决的技术问题是提供一种基于双重优先级的路由带宽分配方法,解决了现有路由交换设备无法动态解决用户对于设备和应用的灵活带宽的需求,能够动态的根据用户的需求调整不同设备不同应用的带宽分配;通过对不同的接入用户进行优先级划分,针对各个用户的需求实现以流为粒度的优先级设置,其带宽分配考虑因素更加全面,动态分配方式更加灵活。
[0006]本发明的技术方案是:一种基于双重优先级的路由带宽分配方法,其步骤如下: 步骤一:用户利用优先级调度模块实现设备或业务流的优先级设置;
步骤二:业务流分析模块利用类型识别方法对业务流的类型进行识别;
步骤三:维护设备信息表;
步骤四:根据业务流分析模块对数据包的信息分析,将数据包放入对应的数据队列;步骤五:根据用户设置的优先级,调整不同数据队列的发送长度和发送顺序,实现动态调度;
步骤六:收、发数据包。
[0007]所述优先级调度模块用于提供用户进行优先级设置,并根据设置结果进行数据包的动态调度;优先级调度模块包括优先级设置单元和队列调度单元;优先级设置单元用于提供用户优先级设置的接口,进行优先级设置;队列调度单元用于根据优先级设置单元设置的优先级结果对数据包进行队列调度,实现高优先级的数据包优先进行收发。
[0008]所述优先级设置单元在路由交换侧提供一个用户交互界面,用户交互界面包含已经接入的各个设备以及各个设备正在通信的业务流。
[0009]所述队列调度包括队列长度和队列发送顺序的调整。
[0010]所述业务流分析模块用于监测、识别业务流信息;业务流分析模块以LKM形式加载,其为内核态,可伴随系统自启动;业务流分析模块包括设备信息单元和业务流信息识别单元,设备信息单元和业务流信息识别单元均挂载在Linux系统的内核态下;设备信息单元用于对所有接入的设备进行信息维护;业务流信息识别单元用于对数据包进行信息识另IJ,分析数据包类型。
[0011]所述设备信息单元对所有接入的设备进行信息维护的具体实现方法是:在操作系统内核状态下设置挂载点,在挂载点挂载钩子函数,钩子函数分析并提取通信的数据包的具体字段值,根据设备信息表进行HASH运算,确定该数据包属于哪个设备。
[0012]所述业务流信息识别单元利用类型识别方法实现数据包的信息识别;类型识别方法包括端口识别法、L7识别法和深度包检测法;所述改进的钩子函数为将挂载到内核态下的钩子函数所在操作系统的挂载点编写字段提取函数。
[0013]所述设备信息表可以对各个终端设置唯一的ID编号,内容包括设备ID信息和对应的业务类型;所述设备ID信息使用IP地址或MAC地址,设备ID信息维护通过在路由交换侧为新接入的设备建立新的条目ID信息实现。
[0014]所述设备信息表为二重Hash链表结构,第一重Hash表维护各个ID信息,第二重Hash表的各个入口存放对应业务类型的信息。
[0015]所述业务流分析模块对数据包的信息分析的方法是:业务流分析模块在第一重HASH表中,根据数据包的源IP地址进行Hash运算,设备信息表中的ID值为IP地址或MAC地址,可以根据IP地址或MAC地址对应到相应的设备的ID信息,便能定位到相应的ID入口 ;业务流信息识别单元根据L7识别法识别出数据包的类型为视频、音频、文件或其他;第二重HASH表的入口是以协议类型进行索引的,业务流信息识别单元分析出协议类型后,就可以根据协议类型直接索引到对应的类型入口处。
[0016]本发明是基于Linux下的Netfilter框架实现的,各个模块是以LKM (LoadableKernel Modules)形式动态加载在路由交换系统上,对系统原有功能不会造成任何兼容性的问题;路由交换设备可以根据用户的需求动态调整不同设备和应用的带宽分配,即支持以设备为粒度和以应用为粒度的双重优先级调整方式;用户在使用过程中可以根据需求进行动态调整,可以根据用户的优先级设置实时准确的进行带宽分配,大幅提升了用户体验。
【附图说明】
[0017]图1为本发明的流程图。
[0018]图2为双Hash链表的队列调度结构示意图。
【具体实施方式】
[0019]为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0020]实施例1
一种基于双重优先级的路由带宽分配方法,其步骤如下:
步骤一:用户利用优先级调度模块实现设备或业务流的优先级设置。
[0021]优先级调度模块用于提供用户进行优先级设置,并根据设置结果进行数据包的动态调度。优先级调度模块包括优先级设置单元和队列调度单元。优先级设置单元用于提供给用户优先级设置的接口,进行优先级设置。优先级设置单元可以是在路由交换侧提供一个用户交互界面(具体实现方式不予以要求),界面包含已经接入的各个设备以及各个设备正在通信的业务流。同时,可以提供几种现成的优先级供用户选择,比如最高优先级、高优先级、一般优先级和低优先级等。用户可以通过用户交互界面对各个设备或各个设备的业务流设置对应的优先级。队列调度单元用于根据优先级设置单元设置的优先级结果对数据包进行队列调度,实现高优先级的数据包优先进行收发。队列调度包括队列长度和队列发送顺序的调整。比如现在有四个队列,分别对应视频、音频、文件、其他,目前视频的优先级最高,音频其次,文件一般,其他最低,则队列调度时候,首先会先从视频队列发送10个数据包,再从音频发从7个数据包,然后从文件队列发送5个数据包,最后再从其他队列发送2个数据包,每次发送顺序按照上述示例,依次循环发送。需要说明的是,以上每次发送数据包的个数可以参考实现,但是不限于此。
[0022]步骤二:业务流分析模块利用类型识别方法对业务流的类型进行识别。
[0023]业务流分析模块用于监测、识别业务流信息。业务流分析模块以LKM形式加载,其为内核态,可伴随系统自启动。业务流信息是指其数据包的类型属性,具体类型包括视频、音频、文件和其他。现有比较成熟的类型识别方法有端口识别法、L7识别法和深度包检测(DPI)。L7识别法是通过调用L7识别库中的识别函数识别出业务流信息,即数据包的类型。L7识别库里面包含了已经实现的识别函数,L7识别库是一个开源的实现项目,已经提供了现成的调用接口,仅仅需要将其加载到实现工程中,动态调用即可。
[0024]业务流分析模块包括设备信息单元和业务流信息识别单元,设备信息单元和业务流信息识别单元均挂载在Linux系统的内核态下。设备信息单元用于对所有接入的设备进行信息维护。数据包包含源IP地址、目的IP地址、源端口、目的端口和协议类型。通过在操作系统内核状态下提供挂载点,在挂载点挂载钩子函数,可以对数据包进行字段提取,获取以上各个信息。钩子函数分析并提取数据包的具体字段值,根据IP地址或MAC地址进行Hash运算,确定该数据包属于哪个设备,从而自动提取通信的数据包。由于这两种地址与设备ID有着一一对应的关系,所以将这两种地址输入Hash函数,就可以得出所对应的设备ID。业务流信息识别单元用于对数据包进行信息识别,分析数据包类型。业务流信息识别单元利用类型识别方法实现数据包的信息识别。
[0025]步骤三:维护设备信息表。
[0026]为了对接入的设备进行更好的维护,在路由交换侧需要维护一张设备信息表,对各个终端设置唯一的ID编号,内容包括设备ID信息和对应的业务类型。设备ID信息可以使用 IP 地址或 MAC 地址,eg:1P 地址 192.168.1.3 或 MAC 地址:11:22:33:44:55:66。设备ID信息维护通过对于新接入的设备,路由交换侧为该设备建立新的条目ID信息实现。具体地,对每个ID编号维护一张应用链表,可以使用二重Hash链表结构。其中,第一重Hash表维护各个ID信息,第二重Hash表的各个入口存放对应业务类型的信息。
[
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1