CN114679421A - 一种基于用户数据流优先级的队列调度方法与*** - Google Patents

一种基于用户数据流优先级的队列调度方法与*** Download PDF

Info

Publication number
CN114679421A
CN114679421A CN202210412165.4A CN202210412165A CN114679421A CN 114679421 A CN114679421 A CN 114679421A CN 202210412165 A CN202210412165 A CN 202210412165A CN 114679421 A CN114679421 A CN 114679421A
Authority
CN
China
Prior art keywords
user
priority
data flow
data
data packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210412165.4A
Other languages
English (en)
Inventor
庞信友
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Tenda Technology Co Ltd
Original Assignee
Shenzhen Tenda Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Tenda Technology Co Ltd filed Critical Shenzhen Tenda Technology Co Ltd
Priority to CN202210412165.4A priority Critical patent/CN114679421A/zh
Publication of CN114679421A publication Critical patent/CN114679421A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种基于用户数据流优先级的队列调度方法,根据用户上网业务的数据流的优先级动态调整数据包的发送顺序,令高优先级的业务数据流优先出队,低优先级业务数据流后出队。本发明还提供了一种基于用户数据流优先级的队列调度***。本发明的有益效果是:采用基于用户数据流优先级的调度方案,在网络发生拥堵的情况下,可有效提升整体网络的服务质量,能令高优先级的业务数据流优先发送。

Description

一种基于用户数据流优先级的队列调度方法与***
技术领域
本发明涉及通信技术,尤其涉及一种基于用户数据流优先级的队列调度方法与***。
背景技术
随着网络技术的不断进步,网络应用多元化也随之而生,视频、语音、上网、游戏、下载等越来越多的业务呈现爆发式增长。当各种业务流量都充斥着网络时,就会造成网络拥堵,数据包转发延时增大,严重时还造成数据包丢失,最终导致各种业务服务质量急剧下降,严重影响用户的上网体验。
现有的提升网络服务质量主要有如下方案:
1、升级带宽,增加链路带宽。
2、基于设备的IP或MAC地址进行流量限速。
3、利用开源tc工具进行部署,策略性选择数据包优先通过。
上述方案的缺陷如下:
1、升级带宽,则意味着成本增加,这是不得以而为之,是终端用户最不愿意接受的。
2、在带宽不变的条件下,使用高实时性的业务的设备端给予分配更高带宽,使用低实时性的业务的设备端分配低带宽,在一起程度上,确实起到缓解网络拥堵的效果,也能平衡各方的上网服务质量,但是当设备端上网业务发生变化,就可能造成带宽得不到合理利用,而分配到低带宽的设备端又不能很好满足其要求更高带宽、实时性更强的上网业务需求。
3、采用tc流量控制机制实现部署复杂,使用门槛要求较高,由于tc算法都采用了树形结构对限速规则进行存储,具有一定缺陷,不能实现某台设备既要满足ip组限速、也要满足接口组限速、时间组限速等情形。
发明内容
为了解决现有技术中的问题,本发明提供了一种基于用户数据流优先级的队列调度方法与***。
本发明提供了一种基于用户数据流优先级的队列调度方法,根据用户上网业务的数据流的优先级动态调整数据包的发送顺序,令高优先级的业务数据流优先出队,低优先级业务数据流后出队。
作为本发明的进一步改进,所述队列调度方法包括以下步骤:
S1、模块初始化;
S2、数据包入队过程;
S3、数据包出队过程;
S4、定时器调度。
作为本发明的进一步改进,步骤S1包括以下子步骤:
S1.1、首先,内核启动时,通过insmod命令加载网络服务质量模块,并初始化令牌桶和优先级队列,建立定时器,用户链表,并在协议栈发送数据包的入口函数dev_queue_xmit内设立钩子函数,用于接管所有数据包;
S1.2、所述的令牌桶用于表示WAN口带宽的度量,包含上行带宽、下行带宽,令牌以时间滴答数为单位,令牌桶数据结构至少包含4个成员变量,分别为检测时间、令牌激活时间、当前令牌数量、速率表,其中,
检测时间、令牌激活时间初始值为当前***运行时间的滴答数,当前令牌数量初始值为一秒内的滴答数,速率表为包含多个元素的数组,每个元素的值的含义为发送某个区间大小的数据包所需要消耗的令牌,速率表计算公式为:t(i)=(C1*(i+1)*C2/W)*C3;其中,C1为常量,表示一秒内的微妙数,i表示数组某个元素的下标值,C2为常量,表示每个元素值的区间范围的大小,W表示带宽,单位为一秒内的字节数,C3为常量,表示一微妙内的滴答数,t(i)值为发送某个区间字节大小的数据包时所需要的令牌数量;
S1.3、计算数据包满足发送条件所消耗的令牌数;
S1.4、所述优先级队列是一个二维数组,第一纬包含用于表示方向,第二纬用于表示优先级大小,每个优先级队列都包含用户关联链表,用于表示是否有用户的相应优先级的数据流与之关联;
S1.5、所述定时器的定时时间到后,开始遍历优先级队列,取出队列上的某个用户的相应优先级的数据流链表上的数据包进行发送。
作为本发明的进一步改进,在步骤S1.2中,速率表为包含100个元素的数组,i表示数组某个元素的下标值,从0到99,C2为常量16,表示每个元素值的区间范围的大小为16,则速率表覆盖范围为从0到1600,W表示带宽,单位为一秒内的字节数,初始值为1Gbps,该值在模块加载完成后通过应用层下发配置修改之,C3为常量,表示一微妙内的滴答数,所以t(i)值为发送i*16到(i+1)*16之间字节大小的数据包时所需要的令牌数量;
在步骤S1.3中,通过将数据包大小/16,得到该数据包消耗的令牌数落入哪个区间k,当k<=100时,此时的t(k)值则为发送此数据包的令牌数,如果k大于速率表大小100,则发送此数据包的令牌数,为t(99)*(k/100)+t(k%100);
在步骤S1.4中,所述优先级队列是一个二维数组,第一纬包含2个元素用于表示方向,0和1分别表示上行方向与下行方向,第二纬包含7个元素用于表示优先级大小,数字越小,优先级越高,0到6分别表示最高,较高,高,中,低,较低,最低优先级;
在步骤S1.5中,所述定时器使用了内核定时器struct timer_list,该定时器是以jiffies为单位的定时值,定时间隔10毫秒。
作为本发明的进一步改进,步骤S2包括以下子步骤:
S2.1、协议栈转发的数据包执行到所设立的钩子函数时,开始进入数据包入队处理过程,首先,判断数据包是否已建立链接跟踪,如果未建立,则不对数据包做任何处理,直接返回,如果建立,则继续;
S2.2获取数据包方向,方向为上行或下行,获取数据包的优先级,如果数据包方向获取失败或者数据包优先级获取失败,直接返回,如果成功获取,则继续;
S2.3查询链接跟踪是否已关联用户,如果未关联用户,则对用户基本信息和用户调度信息初始化;
S2.4完成链接跟踪关联用户后,继续查询链接跟踪是否已关联数据流,如果未关联数据流,则对数据流的基本信息进行初始化;
S2.5链接跟踪的用户信息与数据流信息都建立后,开始将优先级队列,用户信息,数据流信息,数据包之间的关系关联起来,首先,数据包***到当前方向的数据流的数据包缓存链表,并且将当前方向的数据流的关联节点***到用户的当前优先级数据流链表,然后,用户的当前优先级关联节点***到当前优先级的优先级队列的用户链表上,至此,数据包已完成入队操作,然后立即遍历与此数据包同方向的所有优先级队列,执行数据包调度出队任务。
作为本发明的进一步改进,在步骤S2.3中,用户基本信息包含用户IPv4地址,IPv6地址,MAC地址,接口名,并根据IP地址,MAC地址匹配上层应用进程下发的限速规则,初始化此用户的限速规则掩码,掩码的某个bit位用来表示某条限速规则是否对此用户设置了限速规则,为0表示不限速,为1表示限速;此外,用户调度信息包含用户的上行调度信息与用户的下行调度信息,两者数据结构类型一样,都包含此方向的所有优先级队列关联节点,所有优先级数据流链表,调度状态,再次激活时间,阻塞的规则掩码,所有限速规则的检测时间、令牌激活时间、令牌数量、速率表;其中,优先级队列关联节点用来表示此用户是否缓存了当前方向当前优先级的数据流,如果有,则将此节点***相应优先级队列的用户链表上,而***到优先级数据流链表的每个节点则表示关联了此用户的当前方向当前优先级的每条数据流,调度状态则表示此用户当前方向是否可以发送数据包,包含阻塞与激活两种状态,如果用户当前方向的某条限速规则令牌不足时,调度状态则设置为阻塞状态,并且根据所有限速规则都生成令牌后的最长时间设置为再次激活时间,而阻塞的规则掩码则用来表示用户当前方向的哪些限速规则的令牌已消耗完毕需要等待再次产生令牌才能继续发包。
作为本发明的进一步改进,在步骤S2.4中,对数据流的基本信息进行初始化,包括设置数据流的优先级,初始化数据流的上行缓存信息以及下行缓存信息;数据流的两个方向的缓存信息结构一致,都包含数据流关联节点,数据包缓存链表,其中,数据流关联节点用来***到用户的当前优先级数据流链表,数据流关联节点为空则表示未关联上用户的当前优先级数据流链表,而数据包缓存链表则用来缓存数据包,数据包缓存链表为空则表示未缓存数据包。
作为本发明的进一步改进,步骤S3包括以下子步骤:
S3.1、首先,根据前一次执行队列调度的检测时间与当前时间的时间差,补充到当前方向桶的可用令牌数量,并设置当前方向桶的检测时间为当前时间,如果桶的可用令牌数量超过一秒内的滴答数,则桶的可用令牌数量设置为一秒内的滴答数;
S3.2从最高优先级开始,取出当前方向当前优先级的优先级队列信息,开始遍历用户链表,如果没有用户关联,则遍历下一个优先级队列;
S3.3从优先级队列的用户链表取到关联的用户节点后,查看,此用户是否处于限速状态,如果处于限速,并且用户的激活时间还没到,则跳过此用户,从优先级队列的用户链表,取出下一个用户,如果用户处于限速,并且激活时间已到,则根据用户的阻塞规则掩码遍历相应的限速规则,根据限速规则的流逝时间,补充相应数量的令牌,当所有限速规则都已补充令牌后,则激活此用户,并设置此用户调度状态为激活状态,用户激活时间为当前时间;
S3.4从优先级队列的用户链表取到关联的用户节点后,如果用户的调度状态为激活状态,则遍历用户的当前优先级数据流链表,如果没有数据流关联节点,则将此用户节点从优先级队列的用户链表里删除,并继续遍历优先级队列的用户链表,取出下一个关联的用户节点;
S3.5取得数据流的关联节点后,遍历此节点的数据流的数据包缓存链表,开始消耗当前方向的桶令牌,消耗用户匹配到的所有限速规则令牌,直到当前方向的桶令牌不足,或者某个限速规则令牌不足,停止遍历数据流,数据包停止出队;
S3.6如果数据流的数据包缓存链表中的所有数据包都已被取出发送,则将数据流关联节点从用户的数据流链表里删除,如果用户的数据流链表已为空,则将用户的优先级队列关联节点从优先级队列的用户链表里删除。
作为本发明的进一步改进,步骤S4包括:定时时间到后,开始执行定时器回调函数,先遍历上行方向的所有优先级队列取出数据包进行发送,再遍历下行方向的所有优先级队列取出数据包进行发送,与数据包入队后立即触发数据包出队流程不同的是,定时器调度包含上行与下行两个方向的同时调度出队,而后者仅一个方向调度出队。
本发明还提供了一种基于用户数据流优先级的队列调度***,包括可读存储介质,所述可读存储介质中存储有执行指令,所述执行指令被处理器执行时用于实现如上述中任一项所述的方法。
本发明的有益效果是:采用基于用户数据流优先级的调度方案,在网络发生拥堵的情况下,可有效提升整体网络的服务质量,能令高优先级的业务数据流优先发送。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的方案。
图1是本发明一种基于用户数据流优先级的队列调度方法的整体框架图。
图2是本发明一种基于用户数据流优先级的队列调度方法的数据包缓存结构图。
图3是本发明一种基于用户数据流优先级的队列调度方法的数据包入队流程图。
图4是本发明一种基于用户数据流优先级的队列调度方法的数据包出队流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明保护范围的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
下面结合附图说明及具体实施方式对本发明作进一步说明。
如图1至图4所示,一种基于用户数据流优先级的队列调度方法,用于实现网络服务质量提升,根据用户上网业务的数据流的优先级动态调整数据包的发送顺序,令高优先级的业务数据流优先出队,低优先级业务数据流后出队,达到提升整体网络服务质量的效果,为了达到这个目的,其具体流程如下:
1模块初始化:
1.1、首先,内核启动时,通过insmod命令加载网络服务质量模块,并初始化令牌桶,优先级队列,建立定时器,用户链表。并在协议栈发送数据包的入口函数dev_queue_xmit内设立钩子函数,用于接管所有数据包。
1.2、本发明所述的令牌桶用于表示WAN口带宽的度量,包含上行带宽、下行带宽,令牌以时间滴答数为单位,令牌桶数据结构包含4个成员变量(检测时间、令牌激活时间、当前令牌数量、速率表),其中检测时间、令牌激活时间初始值为当前***运行时间的滴答数,当前令牌数量初始值为一秒内的滴答数。速率表为包含100个元素的数组,每个元素的值的含义为发送某个区间大小的数据包所需要消耗的令牌,速率表计算公式为:t(i)=(C1*(i+1)*C2/W)*C3;其中C1为常量,表示一秒内的微妙数,i表示数组某个元素的下标值,从0到99,C2为常量16,表示每个元素值的区间范围的大小为16,则速率表覆盖范围可从0到1600。W表示带宽,单位为一秒内的字节数。初始值为1Gbps,该值在模块加载完成后可通过应用层下发配置修改之。C3为常量,表示一微妙内的滴答数。所以t(i)值可以理解为发送i*16到(i+1)*16之间字节大小的数据包时所需要的令牌数量。
1.3、计算数据包满足发送条件所消耗的令牌数,可通过将数据包大小/16,得到该数据包消耗的令牌数落入哪个区间k,当k<=100时,此时的t(k)值则为发送此数据包的令牌数。在某些情况下,可能k会大于速率表大小100,则发送此数据包的令牌数,应为t(99)*(k/100)+t(k%100)。
1.4、本发明所述优先级队列是一个二维数组,第一纬包含2个元素用于表示方向,0和1分别表示上行方向与下行方向。第二纬包含7个元素用于表示优先级大小,数字越小,优先级越高,0到6分别表示最高,较高,高,中,低,较低,最低优先级,每个优先级队列都包含用户关联链表,用于表示是否有用户的相应优先级的数据流与之关联。
1.5、本发明所述定时器使用了内核定时器struct timer_list,该定时器是以jiffies为单位的定时值,定时间隔10毫秒,定时时间到后,开始遍历优先级队列,取出队列上的某个用户的相应优先级的数据流链表上的数据包进行发送。
2数据包入队过程:
2.1协议栈转发的数据包执行到本发明设置的钩子函数时,开始进入数据包入队处理过程,首先,判断数据包是否已建立链接跟踪,如果未建立,则不对数据包做任何处理,直接返回,如果建立,则继续。
2.2获取数据包方向(上行或下行),获取数据包的优先级,如果数据包方向获取失败或者数据包优先级获取失败,直接返回。如果成功获取,则继续。
2.3查询链接跟踪是否已关联用户,如果未关联用户,则对用户基本信息和用户调度信息初始化,用户基本信息包含用户IPv4地址,IPv6地址,MAC地址,接口名,并根据IP地址,MAC地址等信息匹配上层应用进程下发的限速规则,初始化此用户的限速规则掩码,掩码的某个bit位用来表示某条限速规则是否对此用户设置了限速规则,为0表示不限速,为1表示限速。此外,还包含用户调度信息初始化,用户调度信息包含用户的上行调度信息与用户的下行调度信息,两者数据结构类型一样,都包含此方向的所有优先级队列关联节点,所有优先级数据流链表,调度状态,再次激活时间,阻塞的规则掩码,所有限速规则的检测时间、令牌激活时间、令牌数量、速率表。其中优先级队列关联节点用来表示此用户是否缓存了当前方向当前优先级的数据流,如果有,则将此节点***相应优先级队列的用户链表上,而***到优先级数据流链表的每个节点则表示关联了此用户的当前方向当前优先级的每条数据流。调度状态则表示此用户当前方向是否可以发送数据包,包含阻塞与激活两种状态,如果用户当前方向的某条限速规则令牌不足时,调度状态则设置为阻塞状态,并且根据所有限速规则都生成令牌后的最长时间设置为再次激活时间,而阻塞的规则掩码则用来表示用户当前方向的哪些限速规则的令牌已消耗完毕需要等待再次产生令牌才能继续发包。
2.4完成链接跟踪关联用户后,继续查询链接跟踪是否已关联数据流,如果未关联数据流,则对数据流的基本信息进行初始化,包括设置数据流的优先级,初始化数据流的上行缓存信息以及下行缓存信息。数据流的两个方向的缓存信息结构一致,都包含数据流关联节点,数据包缓存链表。其中数据流关联节点用来***到用户的当前优先级数据流链表,数据流关联节点为空则表示未关联上用户的当前优先级数据流链表,而数据包缓存链表则用来缓存数据包,数据包缓存链表为空则表示未缓存数据包。
2.5链接跟踪的用户信息与数据流信息都建立后,开始对优先级队列,用户信息,数据流信息,数据包之间的关系关联起来。首先,数据包***到当前方向的数据流的数据包缓存链表,并且将当前方向的数据流的关联节点***到用户的当前优先级数据流链表,然后,用户的当前优先级关联节点***到当前优先级的优先级队列的用户链表上,至此,数据包已完成入队操作。然后立即遍历与此数据包同方向的所有优先级队列,执行数据包调度出队任务。
3数据包出队过程:
3.1首先,根据前一次执行队列调度的检测时间与当前时间的时间差,补充到当前方向桶的可用令牌数量,并设置当前方向桶的检测时间为当前时间,如果桶的可用令牌数量超过一秒内的滴答数,则桶的可用令牌数量设置为一秒内的滴答数。
3.2然后,从最高优先级开始,取出当前方向当前优先级的优先级队列信息,开始遍历用户链表,如果没有用户关联,则遍历下一个优先级队列。
3.3从优先级队列的用户链表取到关联的用户节点后,查看,此用户是否处于限速状态,如果处于限速,并且用户的激活时间还没到,则跳过此用户,从优先级队列的用户链表,取出下一个用户。如果用户处于限速,并且激活时间已到,则根据用户的阻塞规则掩码遍历相应的限速规则,根据限速规则的流逝时间,补充相应数量的令牌。当所有限速规则都已补充令牌后,则激活此用户,并设置此用户调度状态为激活状态,用户激活时间为当前时间。
3.4从优先级队列的用户链表取到关联的用户节点后,如果用户的调度状态为激活状态,则遍历用户的当前优先级数据流链表,如果没有数据流关联节点,则将此用户节点从优先级队列的用户链表里删除,并继续遍历优先级队列的用户链表,取出下一个关联的用户节点。
3.5取得数据流的关联节点后,遍历此节点的数据流的数据包缓存链表,开始消耗当前方向的桶令牌,消耗用户匹配到的所有限速规则令牌,直到当前方向的桶令牌不足,或者某个限速规则令牌不足,停止遍历数据流,数据包停止出队。
3.6如果数据流的数据包缓存链表中的所有数据包都已被取出发送,则将数据流关联节点从用户的数据流链表里删除。如果用户的数据流链表已为空,则将用户的优先级队列关联节点从优先级队列的用户链表里删除。
4、定时器调度:
4.1定时时间到后,开始执行定时器回调函数,先遍历上行方向的所有优先级队列取出数据包进行发送,再遍历下行方向的所有优先级队列取出数据包进行发送,与数据包入队后立即触发数据包出队流程不同的是,定时器调度包含上行与下行两个方向的同时调度出队,而后者仅一个方向调度出队。
本发明提供的一种基于用户数据流优先级的队列调度方法与***,采用基于用户数据流优先级的调度方案,在网络发生拥堵的情况下,可有效提升整体网络的服务质量,能令高优先级的业务数据流优先发送,比如游戏、视频、语音等要求实时性较强的业务享有优先调度权利,最大程度保证高优先级的数据流不发现丢包、断流现象,令用户感觉不到有明显的视觉、听觉卡顿现象,使得在网络发生拥堵时,用户也能获得良好的上网体验。相比已有的技术,本发明的队列调度方案对CPU的资源开销较低,对设备的数据包转发性能影响较小。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (10)

1.一种基于用户数据流优先级的队列调度方法,其特征在于:根据用户上网业务的数据流的优先级动态调整数据包的发送顺序,令高优先级的业务数据流优先出队,低优先级业务数据流后出队。
2.根据权利要求1所述的基于用户数据流优先级的队列调度方法,其特征在于:所述队列调度方法包括以下步骤:
S1、模块初始化;
S2、数据包入队过程;
S3、数据包出队过程;
S4、定时器调度。
3.根据权利要求2所述的基于用户数据流优先级的队列调度方法,其特征在于:步骤S1包括以下子步骤:
S1.1、首先,内核启动时,通过insmod命令加载网络服务质量模块,并初始化令牌桶和优先级队列,建立定时器,用户链表,并在协议栈发送数据包的入口函数dev_queue_xmit内设立钩子函数,用于接管所有数据包;
S1.2、所述的令牌桶用于表示WAN口带宽的度量,包含上行带宽、下行带宽,令牌以时间滴答数为单位,令牌桶数据结构至少包含4个成员变量,分别为检测时间、令牌激活时间、当前令牌数量、速率表,其中,检测时间、令牌激活时间初始值为当前***运行时间的滴答数,当前令牌数量初始值为一秒内的滴答数,速率表为包含多个元素的数组,每个元素的值的含义为发送某个区间大小的数据包所需要消耗的令牌,速率表计算公式为:t(i)=(C1*(i+1)*C2/W)*C3;其中,C1为常量,表示一秒内的微妙数,i表示数组某个元素的下标值,C2为常量,表示每个元素值的区间范围的大小,W表示带宽,单位为一秒内的字节数,C3为常量,表示一微妙内的滴答数,t(i)值为发送某个区间字节大小的数据包时所需要的令牌数量;
S1.3、计算数据包满足发送条件所消耗的令牌数;
S1.4、所述优先级队列是一个二维数组,第一纬包含用于表示方向,第二纬用于表示优先级大小,每个优先级队列都包含用户关联链表,用于表示是否有用户的相应优先级的数据流与之关联;
S1.5、所述定时器的定时时间到后,开始遍历优先级队列,取出队列上的某个用户的相应优先级的数据流链表上的数据包进行发送。
4.根据权利要求3所述的基于用户数据流优先级的队列调度方法,其特征在于:
在步骤S1.2中,速率表为包含100个元素的数组,i表示数组某个元素的下标值,从0到99,C2为常量16,表示每个元素值的区间范围的大小为16,则速率表覆盖范围为从0到1600,W表示带宽,单位为一秒内的字节数,初始值为1Gbps,该值在模块加载完成后通过应用层下发配置修改之,C3为常量,表示一微妙内的滴答数,所以t(i)值为发送i*16到(i+1)*16之间字节大小的数据包时所需要的令牌数量;
在步骤S1.3中,通过将数据包大小/16,得到该数据包消耗的令牌数落入哪个区间k,当k<=100时,此时的t(k)值则为发送此数据包的令牌数,如果k大于速率表大小100,则发送此数据包的令牌数,为t(99)*(k/100)+t(k%100);
在步骤S1.4中,所述优先级队列是一个二维数组,第一纬包含2个元素用于表示方向,0和1分别表示上行方向与下行方向,第二纬包含7个元素用于表示优先级大小,数字越小,优先级越高,0到6分别表示最高,较高,高,中,低,较低,最低优先级;
在步骤S1.5中,所述定时器使用了内核定时器struct timer_list,该定时器是以jiffies为单位的定时值,定时间隔10毫秒。
5.根据权利要求2所述的基于用户数据流优先级的队列调度方法,其特征在于:步骤S2包括以下子步骤:
S2.1、协议栈转发的数据包执行到所设立的钩子函数时,开始进入数据包入队处理过程,首先,判断数据包是否已建立链接跟踪,如果未建立,则不对数据包做任何处理,直接返回,如果建立,则继续;
S2.2获取数据包方向,方向为上行或下行,获取数据包的优先级,如果数据包方向获取失败或者数据包优先级获取失败,直接返回,如果成功获取,则继续;
S2.3查询链接跟踪是否已关联用户,如果未关联用户,则对用户基本信息和用户调度信息初始化;
S2.4完成链接跟踪关联用户后,继续查询链接跟踪是否已关联数据流,如果未关联数据流,则对数据流的基本信息进行初始化;
S2.5链接跟踪的用户信息与数据流信息都建立后,开始将优先级队列,用户信息,数据流信息,数据包之间的关系关联起来,首先,数据包***到当前方向的数据流的数据包缓存链表,并且将当前方向的数据流的关联节点***到用户的当前优先级数据流链表,然后,用户的当前优先级关联节点***到当前优先级的优先级队列的用户链表上,至此,数据包已完成入队操作,然后立即遍历与此数据包同方向的所有优先级队列,执行数据包调度出队任务。
6.根据权利要求5所述的基于用户数据流优先级的队列调度方法,其特征在于:在步骤S2.3中,用户基本信息包含用户IPv4地址,IPv6地址,MAC地址,接口名,并根据IP地址,MAC地址匹配上层应用进程下发的限速规则,初始化此用户的限速规则掩码,掩码的某个bit位用来表示某条限速规则是否对此用户设置了限速规则,为0表示不限速,为1表示限速;此外,用户调度信息包含用户的上行调度信息与用户的下行调度信息,两者数据结构类型一样,都包含此方向的所有优先级队列关联节点,所有优先级数据流链表,调度状态,再次激活时间,阻塞的规则掩码,所有限速规则的检测时间、令牌激活时间、令牌数量、速率表;其中,优先级队列关联节点用来表示此用户是否缓存了当前方向当前优先级的数据流,如果有,则将此节点***相应优先级队列的用户链表上,而***到优先级数据流链表的每个节点则表示关联了此用户的当前方向当前优先级的每条数据流,调度状态则表示此用户当前方向是否可以发送数据包,包含阻塞与激活两种状态,如果用户当前方向的某条限速规则令牌不足时,调度状态则设置为阻塞状态,并且根据所有限速规则都生成令牌后的最长时间设置为再次激活时间,而阻塞的规则掩码则用来表示用户当前方向的哪些限速规则的令牌已消耗完毕需要等待再次产生令牌才能继续发包。
7.根据权利要求5所述的基于用户数据流优先级的队列调度方法,其特征在于:在步骤S2.4中,对数据流的基本信息进行初始化,包括设置数据流的优先级,初始化数据流的上行缓存信息以及下行缓存信息;数据流的两个方向的缓存信息结构一致,都包含数据流关联节点,数据包缓存链表,其中,数据流关联节点用来***到用户的当前优先级数据流链表,数据流关联节点为空则表示未关联上用户的当前优先级数据流链表,而数据包缓存链表则用来缓存数据包,数据包缓存链表为空则表示未缓存数据包。
8.根据权利要求2所述的基于用户数据流优先级的队列调度方法,其特征在于:步骤S3包括以下子步骤:
S3.1、首先,根据前一次执行队列调度的检测时间与当前时间的时间差,补充到当前方向桶的可用令牌数量,并设置当前方向桶的检测时间为当前时间,如果桶的可用令牌数量超过一秒内的滴答数,则桶的可用令牌数量设置为一秒内的滴答数;
S3.2从最高优先级开始,取出当前方向当前优先级的优先级队列信息,开始遍历用户链表,如果没有用户关联,则遍历下一个优先级队列;S3.3从优先级队列的用户链表取到关联的用户节点后,查看,此用户是否处于限速状态,如果处于限速,并且用户的激活时间还没到,则跳过此用户,从优先级队列的用户链表,取出下一个用户,如果用户处于限速,并且激活时间已到,则根据用户的阻塞规则掩码遍历相应的限速规则,根据限速规则的流逝时间,补充相应数量的令牌,当所有限速规则都已补充令牌后,则激活此用户,并设置此用户调度状态为激活状态,用户激活时间为当前时间;
S3.4从优先级队列的用户链表取到关联的用户节点后,如果用户的调度状态为激活状态,则遍历用户的当前优先级数据流链表,如果没有数据流关联节点,则将此用户节点从优先级队列的用户链表里删除,并继续遍历优先级队列的用户链表,取出下一个关联的用户节点;
S3.5取得数据流的关联节点后,遍历此节点的数据流的数据包缓存链表,开始消耗当前方向的桶令牌,消耗用户匹配到的所有限速规则令牌,直到当前方向的桶令牌不足,或者某个限速规则令牌不足,停止遍历数据流,数据包停止出队;
S3.6如果数据流的数据包缓存链表中的所有数据包都已被取出发送,则将数据流关联节点从用户的数据流链表里删除,如果用户的数据流链表已为空,则将用户的优先级队列关联节点从优先级队列的用户链表里删除。
9.根据权利要求2所述的基于用户数据流优先级的队列调度方法,其特征在于:步骤S4包括:定时时间到后,开始执行定时器回调函数,先遍历上行方向的所有优先级队列取出数据包进行发送,再遍历下行方向的所有优先级队列取出数据包进行发送,与数据包入队后立即触发数据包出队流程不同的是,定时器调度包含上行与下行两个方向的同时调度出队,而后者仅一个方向调度出队。
10.一种基于用户数据流优先级的队列调度***,其特征在于:包括可读存储介质,所述可读存储介质中存储有执行指令,所述执行指令被处理器执行时用于实现如权利要求1至9中任一项所述的方法。
CN202210412165.4A 2022-04-19 2022-04-19 一种基于用户数据流优先级的队列调度方法与*** Pending CN114679421A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210412165.4A CN114679421A (zh) 2022-04-19 2022-04-19 一种基于用户数据流优先级的队列调度方法与***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210412165.4A CN114679421A (zh) 2022-04-19 2022-04-19 一种基于用户数据流优先级的队列调度方法与***

Publications (1)

Publication Number Publication Date
CN114679421A true CN114679421A (zh) 2022-06-28

Family

ID=82078328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210412165.4A Pending CN114679421A (zh) 2022-04-19 2022-04-19 一种基于用户数据流优先级的队列调度方法与***

Country Status (1)

Country Link
CN (1) CN114679421A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1784867A (zh) * 2003-03-21 2006-06-07 思科技术公司 利用接入点区分接入优先级以及实现简单 802.11e hcf(混合协调功能)的方法
US20060193256A1 (en) * 2005-02-28 2006-08-31 Cisco Technology, Inc. Method and system for shaping traffic in a parallel queuing hierarchy
CN101217495A (zh) * 2008-01-11 2008-07-09 北京邮电大学 用于t-mpls网络环境下的流量监控方法和装置
CN102025623A (zh) * 2010-12-07 2011-04-20 苏州迈科网络安全技术股份有限公司 智能化网络流控方法
CN102201981A (zh) * 2011-03-31 2011-09-28 成都飞鱼星科技开发有限公司 基于视讯流量加速的网络视频会议***及其加速方法
CN103888379A (zh) * 2013-12-03 2014-06-25 江苏达科信息科技有限公司 一种基于可信调度的改进队列调度算法
CN106789721A (zh) * 2017-03-24 2017-05-31 深圳市吉祥腾达科技有限公司 一种基于令牌桶的智能qos方法及***
CN109246031A (zh) * 2018-11-01 2019-01-18 郑州云海信息技术有限公司 一种交换机端口流量排队方法和装置
CN113783942A (zh) * 2021-08-24 2021-12-10 中国科学院计算技术研究所 基于优先分级队列的mpquic数据包快速传输方法和***
CN113938439A (zh) * 2021-10-25 2022-01-14 深圳市风云实业有限公司 一种基于定时器的端口队列调度方法及电子设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1784867A (zh) * 2003-03-21 2006-06-07 思科技术公司 利用接入点区分接入优先级以及实现简单 802.11e hcf(混合协调功能)的方法
US20060193256A1 (en) * 2005-02-28 2006-08-31 Cisco Technology, Inc. Method and system for shaping traffic in a parallel queuing hierarchy
CN101217495A (zh) * 2008-01-11 2008-07-09 北京邮电大学 用于t-mpls网络环境下的流量监控方法和装置
CN102025623A (zh) * 2010-12-07 2011-04-20 苏州迈科网络安全技术股份有限公司 智能化网络流控方法
CN102201981A (zh) * 2011-03-31 2011-09-28 成都飞鱼星科技开发有限公司 基于视讯流量加速的网络视频会议***及其加速方法
CN103888379A (zh) * 2013-12-03 2014-06-25 江苏达科信息科技有限公司 一种基于可信调度的改进队列调度算法
CN106789721A (zh) * 2017-03-24 2017-05-31 深圳市吉祥腾达科技有限公司 一种基于令牌桶的智能qos方法及***
CN109246031A (zh) * 2018-11-01 2019-01-18 郑州云海信息技术有限公司 一种交换机端口流量排队方法和装置
CN113783942A (zh) * 2021-08-24 2021-12-10 中国科学院计算技术研究所 基于优先分级队列的mpquic数据包快速传输方法和***
CN113938439A (zh) * 2021-10-25 2022-01-14 深圳市风云实业有限公司 一种基于定时器的端口队列调度方法及电子设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BAIHAQI SIREGAR: "Controlling of Quality of Service in Campus Area Network Using OpenDaylight with Hierarchical Token Bucket Method", 《 2020 INTERNATIONAL CONFERENCE ON ICT FOR SMART SOCIETY (ICISS)》 *
李国元: "网络流量控制与整形技术研究", 《 CNKI优秀硕士学位论文全文库》 *
杨世恩;: "多业务网络动态带宽分配算法研究", 通信技术, no. 04 *

Similar Documents

Publication Publication Date Title
JP4881887B2 (ja) トラフィックシェーピング機能および装置
US9112786B2 (en) Systems and methods for selectively performing explicit congestion notification
US8929363B1 (en) Apparatus and method for allocating buffers of a memory including tracking a number of buffers used to store a received frame
JP2783469B2 (ja) パケット伝送ネットワークにおけるウィンドウサイズの調整方法及び装置
CN106789721B (zh) 一种基于令牌桶的智能qos方法及***
US7349405B2 (en) Method and apparatus for fair queueing of data packets
CN109120544B (zh) 一种数据中心网络中基于主机端流量调度的传输控制方法
EP1240740B1 (en) Network switch with packet scheduling
EP0872988B1 (en) A method for supporting per-connection queuing for feedback-controlled traffic
US6741559B1 (en) Method and device for providing priority access to a shared access network
EP1553740A1 (en) Method and system for providing committed information rate (CIR) based fair access policy
US20070280277A1 (en) Method and system for adaptive queue and buffer control based on monitoring in a packet network switch
WO2020090474A1 (ja) パケット転送装置、方法、及びプログラム
CN108989233B (zh) 拥塞管理方法及装置
US7035273B1 (en) Quality of service queueing system for a network switch
US7640355B1 (en) Supplemental queue sampling technique for packet scheduling
CN114679421A (zh) 一种基于用户数据流优先级的队列调度方法与***
Astuti Packet handling
CN112055382A (zh) 一种基于精细化区分的业务接入方法
US6618391B1 (en) Method and apparatus for guaranteeing data transfer rates and delays in data packet networks using discrete data transfer rates
JPH11252097A (ja) パケット送出装置及びパケット送出方法
US6977946B1 (en) Virtual connection service cache for filling available bandwidth
Lizambri et al. TCP throughput and buffer management
CN117579121A (zh) 低轨巨型星座网络的面向流级别的数据传输方法及装置
Kim et al. Zero latency queuing system based on deficit round robin

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20240621

AD01 Patent right deemed abandoned