大用户量的QoS公平调度方法

文档序号:7891389阅读:215来源:国知局
专利名称:大用户量的QoS公平调度方法
技术领域
本发明涉及一种大用户量的QoS公平调度方法,属于网络安全技术领域。
背景技术
随着Internet网络的越来越盛行,网络应用越来越多,网络带宽与需求的矛盾越来越突出,一方面每个上网的人员都想要无 穷大的带宽和最小的延迟,另一方面网络的总带宽是有限的,而且网络处理总会带来时间延迟。目前多种操作系统,包括Unix (linux)、网络操作系统(CIS⑶I0S)等等,都提供了 QoS实现,主要包括出入端口的流量限速和整形、出端口的队列调度,这些功能一般只能匹配若干个对象,包括IP、MAC、端口等等。实际应用中经常有如下场景,同一个局域网内,所有用户共享IOOM带宽,用户总数最多可能有500个,为防止某用户使用P2P工具占用带宽,在通用QoS设备中必须下发500条规则来限制所有人的带宽占用,每个人的带宽上限为200K,而且如此配置下某个用户的带宽无法动态调整,比如当前仅有10个人在线,该用户也只能使用200K,无法使用剩余的带宽。即通用QoS设备需要下发大量的规则,会导致性能显著下降,同时又无法使用剩余的带宽。

发明内容
本发明的目的是克服现有技术存在的不足,提供一种大用户量的QoS公平调度方法,使用户享受剩余的带宽,同时下发的规则也相当少,对系统性能的影响也很小。本发明的目的通过以下技术方案来实现
大用户量的QoS公平调度方法,特点是每个用户构造一个队列,目前用户以IP为唯一标志,用户需要发送的报文均入队列,用户队列以HASH链表方式存储;在端口发送报文时,轮循每个队列进行发送,使公平调度、分享带宽,当同时上线的用户较少时,每个用户获取大的带宽,随着上线的用户逐渐增多,每个用户获取的带宽逐渐减少;同时实现带宽上限功能,引入一个活动链表概念,链表记录当前所有可发送的用户,轮循链表发送报文,每个用户按照令牌桶算法决定是否已超过带宽上限,若超过则移出活动链表,等待一段时间后再加入活动链表等待发送。进一步地,上述的大用户量的QoS公平调度方法,报文入队列,输入为出端口的报文,首先按照报文的IP获取对应的用户队列,如果获取不到则新建一个用户队列,将报文入队列;如果用户队列不属于活跃链表,且仅有一个本次处理的报文,则将用户队列加入到活跃链表;
报文出队列,首先获取活跃链表中的当前用户队列,同时标记当前用户队列的下一个结点,作为下一次轮循的当前用户队列;当前用户队列的队头报文为需要发送的报文,查看报文发送是否超过带宽上限,如果超过则不允许发送,计算需要延期等待的时间,如果不超过则直接发送报文。本发明技术方案突出的实质性特点和显著的进步主要体现在本发明确保设定范围内的用户公平调度,平均分享带宽,获取几乎相同的时间延迟,还可以设置这些用户的上限带宽;为每个用户构造一个队列,目前用户以IP为唯一标志,该用户需要发送的报文均入此队列;用户队列以HASH链表方式存储,可以适用于相当大的规模;在端口发送报文时,轮循每个队列进行发送,达到公平调度、分享带宽的效果,当同时上线的用户较少时,每个用户可以获取大的带宽,随着上线的用户逐渐增多,每个用户获取的带宽逐渐减少;同时为实现带宽上限功能,引入一个活动链表概念,该链表记录当前所有可以发送的用户,轮循该链表发送报文,每个用户按照令牌桶算法决定是否已超过带宽上限,若超过则移出活动链表,等待一段时间后再加入活动链表等待发送;本发明可以任意设定范围内的用户,可以使用网络地址范围、MAC地址集合、部门等等,有极强的应用性;提出QoS公平调度算法,极大的改善了网络环境和网络质量,具有丰富的实用场景。


下面结合附图对本发明技术方案作进一步说明
图I:入队列流程示意 图2:出队列流程示意图。
具体实施例方式大用户量的QoS公平调度方法,为每个用户构造一个队列,目前用户以IP为唯一标志,该用户需要发送的报文均入队列;用户队列以HASH链表方式存储,当前的HASH表长度为256,适用于相当大的规模;为实现带宽上限功能,引入一个活动链表概念,该链表记录当前所有可以发送的用户,轮循该链表发送报文;在端口发送报文时,轮循活跃链表的用户队列进行发送,达到公平调度、分享带宽的效果,当同时上线的用户较少时,每个用户可获取大的带宽,随着上线的用户逐渐增多,每个用户获取的带宽逐渐减少;同时每个用户按照令牌桶算法决定是否已超过带宽上限,若超过则移出活动链表,等待一段时间后再加入活动链表等待发送。调度的数据结构,所有的用户队列按照HASH队列存储,同时有一个动态变化的活跃链表(active),该链表内的所有用户队列都可发送报文(没有被限速)而且都可以发送报文(队列中有报文需要发送),当前用户链表(cur)指向下一个待发送的用户队列;
每个用户队列存储所有待发送的报文,同时还存储了两个定时器,一个是超时定时器,当该用户队列在固定设置的时间段内一直没有报文来时触发,触发时删除用户队列并释放资源;另一个是超时定时器,当该用户队列在发送某个报文时超过带宽上限时启动超时定时器,超时时间通过上限带宽和当前带宽的计算获得,当超时时间满足后触发定时器,触发时将该用户队列加入到活跃链表,并重新调度。如图I所示,报文入队列,首先查找报文属于的用户队列,如果找不到则新建一个用户队列并插入活跃链表;如果找到则更新超时定时器,如果用户队列存储的报文过长则丢弃,否则添加到用户队列,如果该用户队列不在活跃链表且原先存储的报文个数为0,则添加该用户队列到活跃链表中。这一操作主要是因为没有报文的用户队列会从活跃链表中移除,因此当有报文到来时必须添加到活跃链表,只有活跃链表中的用户队列才会被调度,才有可能发送报文。
如图2所示,报文出队列,首先获取当前用户队列的队头报文,再判断是否设置带宽上限,如果设置则需要使用令牌桶算法决定是否发送此报文,超过带宽上限则不能发送报文并移出活跃链表,启动限流定时器,超时时间通过上限带宽和当前带宽的计算获得,当超时时间满足后触发限流定时器,触发时将该用户队列加入到活跃链表,并重新调度;再查看当前用户队列的报文数,如果为0,则移出活跃队列;最后更新当前用户队列以供下次轮循调度。目前本方法按照报文个数来进行调度,在现实情况下已经可基本满足需求,将该算法变换后,按照报文长度来进行调度,则可以达到非常精确的公平状态。本方法可以存在多个活动单元,在设备的同一个物理接口可以同时设置多个调度机制,同时为不同的用户群设置不同的带宽上限进行公平调度、带宽共享。在设置时只要将需要调度的报文进入调度结构即可,在Linux上可以利用netfilter实现,举例来说,匹配设定的IP地址段,这段IP地址的所有报文进行公平调度且设置一个带宽上限,如此可以设置多个IP地址段满足不同的调度需求。 本方法还可以和其他调度机制进行配合使用,比如和Linux的HTB调度机制配合,可以为设定IP段设置总带宽限制,并且该IP段内的所有用户公平调度、分享带宽,还可以设置每个用户的带宽上限。另外,在应用时还要查看具体场景,本发明应用在一个相对平均的环境,即该环境下的所有用户都是同等对待的,如果某环境下的用户需要严格区别对待,则需要使用其他调度机制。综上所述,本发明提出了大用户量的QoS公平调度算法,极大的提高了 Q0S设备的带宽限制性能,适用于相当大的规模,使用一条规则实现设定范围内的用户带宽上限,传统的QoS设备可能需要上百条规则;充分利用了剩余带宽,实现了分享带宽的效果;并且可以和其他调度机制配合使用,相当方便灵活,可以充分满足需求。需要理解到的是以上所述仅是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.大用户量的QoS公平调度方法,其特征在于每个用户构造一个队列,目前用户以IP为唯一标志,用户需要发送的报文均入队列,用户队列以HASH链表方式存储;在端口发送报文时,轮循每个队列进行发送,使公平调度、分享带宽,当同时上线的用户较少时,每个用户获取大的带宽,随着上线的用户逐渐增多,每个用户获取的带宽逐渐减少;同时实现带宽上限功能,引入一个活动链表概念,链表记录当前所有可发送的用户,轮循链表发送报文,每个用户按照令牌桶算法决定是否已超过带宽上限,若超过则移出活动链表,等待一段时间后再加入活动链表等待发送。
2.根据权利要求I所述的大用户量的QoS公平调度方法,其特征在于报文入队列,输入为出端口的报文,首先按照报文的IP获取对应的用户队列,如果获取不到则新建一个用户队列,将报文入队列;如果用户队列不属于活跃链表,且仅有一个本次处理的报文,则将用户队列加入到活跃链表; 报文出队列,首先获取活跃链表中的当前用户队列,同时标记当前用户队列的下一个结点,作为下一次轮循的当前用户队列;当前用户队列的队头报文为需要发送的报文,查看报文发送是否超过带宽上限,如果超过则不允许发送,计算需要延期等待的时间,如果不超过则直接发送报文。
全文摘要
本发明涉及大用户量的QoS公平调度方法,每个用户构造一个队列,目前用户以IP为唯一标志,用户需要发送的报文均入队列,用户队列以HASH链表方式存储;在端口发送报文时,轮循每个队列进行发送,使公平调度、分享带宽,当同时上线的用户较少时,每个用户获取大的带宽,随着上线的用户逐渐增多,每个用户获取的带宽逐渐减少;同时实现带宽上限功能,引入一个活动链表概念,链表记录当前所有可发送的用户,轮循链表发送报文,每个用户按照令牌桶算法决定是否已超过带宽上限,若超过则移出活动链表,等待一段时间后再加入活动链表等待发送。提出大用户量的QoS公平调度算法,极大的提高、QoS设备的带宽限制性能。
文档编号H04L12/56GK102624625SQ20121006460
公开日2012年8月1日 申请日期2012年3月13日 优先权日2012年3月13日
发明者刘继明, 林恩峰, 王东泉, 谢炜 申请人:网经科技(苏州)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1