同一帐户下非连续多ip地址共享同一带宽的方法及装置的制作方法

文档序号:7701579阅读:157来源:国知局

专利名称::同一帐户下非连续多ip地址共享同一带宽的方法及装置的制作方法
技术领域
:本发明属于网络流量控制
技术领域
,具体涉及一种同一帐户下非连续多IP地址共享同一带宽的方法及装置。
背景技术
:在网关系统中,大多数服务器采用Linux操作系统专门用于处理网络数据。Linux操作系统对网络数据的实际处理是通过内核态的NetFilter机制实现,在用户态,通过iptables命令对内核态的NetFilter规则进行查看和编辑。NetFilter包含很多“表”,每个表包含几个“链”,每个链包含若干“规则”。当数据包到达某个链,然后从链的开头依次匹配每一个规则。如果某一条规则匹配成功,那么立即执行该规则“目标动作”并立即返回。如果遍历链中所有规则都不能匹配,那么执行该链默认规则。这些规则是通过iptables命令写入到NetFilter的特定数据结构。iptables可以对这些规则做任意的增加、删除、修改和查看等操作。目前,利用iptables对流量进行控制的方式主要有以下三种1.利用iptables默认的流量控制方式。iptables默认的流量控制方式是基于单个数据包的,即对单个IP数据包进行控制,这种方式是目前网关系统中正在采用的。但在实际应用中,往往需要同时对多个IP地址在同一条规则中进行流量控制,而且多个IP地址常常是任意的、不连续的。例如,当某个2M带宽帐户的10个IP地址同时登录上网,那么认证通过后,这10个IP地址将各自独享2M带宽。这使得一个本来2M带宽的用户实际上占用了20M带宽,这是不合理的,理想的情况应该是10个IP地址动态共享总的2M带宽。因此,采用这种方式无法实现同一帐户下多个IP地址共享带宽。2.利用iprange模块。在Iinux操作系统中,iptables提供了一个功能模块“iprange”,用于实现对一段连续IP地址范围的控制。该模块可以控制同一网段中连续的IP地址,指定范围的起止地址即可。虽然该模块能够实现对多个IP地址的控制,但多个IP地址只能是连续的,而且在同一条规则中一次只能指定一个IP范围。在网关系统中,如果某个用户帐号下要增加几个IP地址同时上网,那么新增的IP地址很可能是不连续的,因为相邻连续IP在早期已经被分配。所以增加的新IP地址,往往是跳跃的、不连续的,甚至有可能不在一个网段内。这种方式无法实现非连续IP地址的控制。3.利用新建链。在iptables表中新建链,可以实现对多个且不连续IP地址的流量控制。这也是最容易想到的方法。当某个帐户第一次登录时,新建两个链,一个链用于输入流量控制,一个链用于输出流量控制。在每个链里,增加两条控制规则,一条规则用于流量控制,一条规则用于当流量超过预定限制时丢弃多余的数据包。同时在FORWARD链,还应增加两条iptables控制规则,该条规则的目的是使凡是匹配该IP的数据包需要跳转到该新建的对应链中,然后受该链内部控制规则约束。对于同一帐号下后续上网的IP地址,在登录认证时,在FORWARD新增加两条跳转规则即可,在对应的链中实现带宽流量的控制。由此可见,这种方式会在iptables中增加很多的链和规则,势必影响iptables的工作效率。例如,假设某个帐号下分配了10个可用的IP地址,当这10个IP地址同时用来上网时,将会在nat表PRER0UTING链增加10条规则,在filter表FORWARD链增加20条规则,并新建两个自定义链,每个链包含2条控制规则,一共需要两条链和34条规则。过多的规则匹配和跳转,会消耗许多CPU和内存等宝贵的系统资源,而且增加了处理时间,降低了效率,并增加了出错的几率。
发明内容针对现有技术中存在的缺陷,本发明的目的是提供一种消耗系统资源少、效率高的同一帐户下非连续多IP地址动态共享同一带宽的方法及装置。为了实现上述目的,本发明采用的技术方案如下一种同一帐户下非连续多IP地址共享同一带宽的方法,该方法首先配置每个帐户下所有可用于上网的IP地址;当一个IP地址登陆上网时,判断该IP地址是否是其所在帐户下的第一个上网IP地址;如是,则在iptables规则表中增加与该IP地址对应的流量控制规则和与该IP地址所在帐户对应的流量控制规则,对该IP地址进行流量控制,再将该IP地址所在帐户下的所有其他IP地址加入到与该IP地址所在帐户对应的流量控制规则中;如否,则只在iptables规则表中增加与该IP地址对应的流量控制规则,共用与该IP地址所在帐户对应的流量控制规则,对该IP地址进行流量控制。如上所述的同一帐户下非连续多IP地址共享同一带宽的方法,其中,每个帐户下的所有IP地址不连续,或者部分IP地址连续、整体不连续。如上所述的同一帐户下非连续多IP地址共享同一带宽的方法,其中,判断IP地址是否是其所在帐户下的第一个上网IP地址的方法为首先在iptables规则表中查找与该IP地址所在帐户对应的流量控制规则是否存在,如果不存在,则该IP地址是其所在所在帐户下第一个上网的IP地址;如果存在,则再与该IP地址所在帐户对应的流量控制规则中查找该IP地址是否存在,如果存在,则该IP地址是其所在帐户下非第一个上网的IP地址。如上所述的同一帐户下非连续多IP地址共享同一带宽的方法,其中,所述在iptables规则表中增加与该IP地址对应的流量控制规则是指在nat表PRER0UTING链上增加的一条与该IP地址对应的地址转发规则。如上所述的同一帐户下非连续多IP地址共享同一带宽的方法,其中,所述在iptables规则表中增加的与该IP地址所在帐户对应的流量控制规则是指在filter表F0RWAND链上增加的两条地址转发规则,一条用于匹配源地址、一条用于匹配目的地址。如上所述的同一帐户下非连续多IP地址共享同一带宽的方法,其中,当某帐户下一个IP地址下网且该帐户下还有其他IP地址上网时,在iptables规则表中删除与该IP地址对应的流量控制规则。当某帐户下最后一个上网的IP地址下网时,在iptables规则表中删除与该IP地址对应的流量控制规则和与该帐户对应的流量控制规则。5一种同一帐户下非连续多IP地址共享同一带宽的装置,该装置包括用于配置每个帐户下所有可用于上网的IP地址的IP地址配置模块(11)、用于判断上网的IP地址是否是其所在帐户下第一个上网IP地址的IP地址判断模块(12),用于在iptables规则表中建立或删除流量控制规则的规则管理模块(13),用于将帐户下所有IP地址加入到iptables规则表中与该帐户对应的流量控制规则中的IP地址加入模块(14)。如上所述的同一帐户下非连续多IP地址共享同一带宽的装置,还包括用于编辑iptables规则表中流量控制规则的流量控制规则编辑模块(15)。如上所述的同一帐户下非连续多IP地址共享同一带宽的装置,以文件形式静态存放于磁盘,第一次使用时,将该装置从指定磁盘路径加载到内存,存放并常驻于Linux操作系统内核特定区域,直到手动卸载或者关机;当再次使用时,直接从该内存区域调用。本发明所述方法及装置,实现了在同一规则中对同一帐户下多个非连续IP地址进行流量控制,无需新建链,也无需跳转,因此占用系统资源少,处理效率高。图1是同一帐户下非连续多IP地址控制装置结构示意图;图2是同一帐户下非连续多IP地址共享同一带宽的上网流程示意图;图3是同一帐户下非连续多IP地址共享同一带宽的下网流程示意图。具体实施例方式下面结合具体实施方式和附图,对本发明进行详细描述。本发明的设计思想是由于iptables提供了很好的扩展接口,因此用户可以开发标准iptables没有但可以满足用户特定需求的装置。本发明便是基于iptables开发的一个扩展装置(非连续多IP地址控制装置),实现同一帐户下多个不连续IP地址在同一条规则里进行统一控制,从而在宏观上实现动态共享同一带宽的目的。图1出示了上述非连续多IP地址控制装置结构,该装置包括IP地址配置模块11、IP地址判断模块12、规则管理模块13、IP地址加入模块14。IP地址配置模块11用于设置每个帐户下所有可用IP地址,即设置在一个帐户下所有可以用于上网的IP地址。其中,所有IP地址不连续,或者部分IP地址连续、整体不连续。IP地址判断模块12用于判断上网的IP地址是否是其所在帐户的第一个上网IP地址,判断方法为首先在iptables规则表中查找与该IP地址所在帐户对应的流量控制规则是否存在,如果不存在,则该IP地址是其所在所在帐户下第一个上网的IP地址;如果存在,则再与该IP地址所在帐户对应的流量控制规则中查找该IP地址是否存在,如果存在,则该IP地址是其所在帐户下非第一个上网的IP地址。规则管理模块13用于在iptables规则表中建立或删除流量控制规则。当某帐户下的IP地址上网时,如果是该帐户下第一个上网的IP地址,规则管理模块13在iptables规则表的nat表PRER0UTING链增加一条与该IP地址对应的地址转发规则,在filter表FORWARD链增加两条与该帐户对应的地址转发规则,一条用于匹配源地址,另一条用于匹配目的地址;如果不是该帐户下第一个上网的IP地址,规则管理模块13只在nat表PRER0UTING链增加一条与该IP地址对应的地址转发规则。IP地址加入模块14用于将帐户下所有IP地址加入到iptables规则表中与该帐户对应的流量控制规则中。当某帐户下第一个IP地址成功登陆网络后,该模块便将该帐户下所有IP地址全部加入到iptables规则表中与该帐户对应的地址转发规则中。为了对规则管理模块13建立的规则进行编辑,本装置还包括用于通过iptables命令编辑流量控制规则的流量控制规则编辑模块14,可以添加、修改、删除或显示流量控制规则。对于一个新安装的或重新启动过的网关系统,本装置以文件形式静态存放于磁盘中。第一次使用时,将本装置从指定磁盘路径加载到内存,存放并常驻于Linux操作系统内核特定区域,直到手动卸载或者关机;当再次使用时,直接从该内存区域调用即可,无需再从磁盘载入。图2出示了采用图1所示装置对同一帐户下非连续多IP地址进行流量控制时的上网流程,包括以下步骤(1)IP地址配置模块11配置每个帐户下所有可用的IP地址,即配置每个帐户下有多少个IP地址可以用于上网。(2)当某个IP地址登陆上网后,IP地址判断模块12判断该IP地址是否是其所在帐户下第一个上网的IP地址,如是,则规则管理模块13在iptables规则表的nat表PRER0UTING链增加一条与该IP地址相对应的地址转发规则,在filter表F0RWAND链增加两条与该IP地址所在帐户对应的地址转发规则,然后IP地址加入模块14将该IP地址所在帐户下的所有其他IP地址加入到filter表F0RWAND链增加的两条规则中,由上述三条规则完成对该IP地址的流量控制。如果该IP地址不是其所在帐户下第一个上网的IP地址,即该IP地址所在帐户下已经有其他IP地址登录上网,则规则管理模块13只在nat表PRER0UTING链增加一条与该IP地址相对应的地址转发规则,与其他IP地址共用filter表F0RWAND链与该IP地址所在帐户对应的两条规则。图3出示了采用图1所示装置对同一帐户下非连续多IP地址进行流量控制时的下网流程。当某帐户下一个IP地址下网且该帐户下还有其他IP地址上网时,规则管理模块13在iptables规则表中删除与该IP地址对应的流量控制规则。当某帐户下最后一个上网的IP地址下网时,规则管理模块13在iptables规则表中删除与该IP地址对应的流量控制规则和与该帐户对应的流量控制规则。在具体处理上下网的过程中,可以利用shell脚本处理功能,使程序简洁、高效。并且避免了数据库的使用,也避免了建立内存表等操作,从而尽可能减少了对原系统某些部分的改动,保持系统的稳定性。下面以一个帐户A为例,对本发明进行举例说明。首先由IP地址配置模块11配置帐户A下所有可用于上网的IP地址,假设帐户A有10个可以用于上网的IP地址,分别IPAl至IPAlO,IPAl至IPAlO不连续。实施例1假设帐户A没有IP地址登陆上网。现IPAl请求登陆上网,通过验证后,IP地址判断模块12判断IPAl是否是帐户A第一个上网的IP地址,由于在iptables规则表中没有7与帐户A对应的流量控制规则,所以IPAl是帐户A的第一个上网的IP地址。规则管理模块12在iptables规则表的nat表PRER0UTING链增加一条与IPAl对应的地址转发规则,在filter表F0RWAND链上增加两条与帐户A对应的地址转发规则。然后IP地址加入模块14将帐户A下的其他IP地址(IPA2至IPA10)加入到filter表F0RWAND链上增加的两条与帐户A对应的地址转发规则中。实施例2在实施例1的基础上,假设IPA2请求登陆上网。通过验证后,IP地址判断模块12判断出IPA2是帐户A下非第一个上网的IP地址。规则管理模块12在iptables规则表的nat表PRER0UTING链增加一条与IPA2对应的地址转发规则。IPA2和IPAl共用filter表FORffAND链上与帐户A对应的地址转发规则,即在同样的规则中对IPAl和IPA2进行流量控制,无需在fiter表F0RWAND链再增加规则。由上述实施例可以看出假设帐户A下的10个IP地址同时上网,只需在nat表PRER0UTING链增加10条规则,在filter表F0RWAND链增加2条规则即可。12条规则便可实现IP数据包的过滤、限速和转发。与现有技术相比,不需要新建链,更不需要跳转操作,并大大减少了规则数,从而提高了处理效率。实施例3在实施例2的基础上,假设IPAl下网。由于IPA2仍在上网,IPAl并非是帐户A下最后一个下网的IP地址,所以规则管理模块12删除nat表PRER0UTING链与IPAl对应的地址转发规则。实施例4在实施例3的基础上,假设IPA2下网。由于IPA2是帐户A的最后一个下网IP,所以规则管理模块12删除nat表PRER0UTING链与IPA2对应的地址转发规则,并删除filter表F0RWAND链上与帐户A对应的地址转发规则。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。权利要求一种同一帐户下非连续多IP地址共享同一带宽的方法,其特征在于所述方法首先配置每个帐户下所有可用于上网的IP地址;当一个IP地址登陆上网时,判断该IP地址是否是其所在帐户下的第一个上网IP地址;如是,则在iptables规则表中增加与该IP地址对应的流量控制规则和与该IP地址所在帐户对应的流量控制规则,对该IP地址进行流量控制,再将该IP地址所在帐户下的所有其他IP地址加入到与该IP地址所在帐户对应的流量控制规则中;如否,则只在iptables规则表中增加与该IP地址对应的流量控制规则,共用与该IP地址所在帐户对应的流量控制规则,对该IP地址进行流量控制。2.如权利要求1所述的一种同一帐户下非连续多IP地址共享同一带宽的方法,其特征在于每个帐户下的所有IP地址不连续,或者部分IP地址连续、整体不连续。3.如权利要求1所述的一种同一帐户下非连续多IP地址共享同一带宽的方法,其特征在于判断IP地址是否是其所在帐户下的第一个上网IP地址的方法为首先在iptables规则表中查找与该IP地址所在帐户对应的流量控制规则是否存在,如果不存在,则该IP地址是其所在所在帐户下第一个上网的IP地址;如果存在,则再与该IP地址所在帐户对应的流量控制规则中查找该IP地址是否存在,如果存在,则该IP地址是其所在帐户下非第一个上网的IP地址。4.如权利要求1所述的一种同一帐户下非连续多IP地址共享同一带宽的方法,其特征在于所述在iptables规则表中增加与该IP地址对应的流量控制规则是指在nat表PREROUTING链上增加的一条与该IP地址对应的地址转发规则。5.如权利要求1所述的一种同一帐户下非连续多IP地址共享同一带宽的方法,其特征在于所述在iptables规则表中增加的与该IP地址所在帐户对应的流量控制规则是指在filter表FORWAND链上增加的两条地址转发规则,一条用于匹配源地址、一条用于匹配目的地址。6.如权利要求1至5之一所述的一种同一帐户下非连续多IP地址共享同一带宽的方法,其特征在于当某帐户下一个IP地址下网且该帐户下还有其他IP地址上网时,在iptables规则表中删除与该IP地址对应的流量控制规则。7.如权利要求1至5之一所述的一种同一帐户下非连续多IP地址共享同一带宽的方法,其特征在于当某帐户下最后一个上网的IP地址下网时,在iptables规则表中删除与该IP地址对应的流量控制规则和与该帐户对应的流量控制规则。8.—种同一帐户下非连续多IP地址共享同一带宽的装置,其特征在于所述装置包括用于配置每个帐户下所有可用于上网的IP地址的IP地址配置模块(11)、用于判断上网的IP地址是否是其所在帐户下第一个上网IP地址的IP地址判断模块(12),用于在iptables规则表中建立或删除流量控制规则的规则管理模块(13),用于将帐户下所有IP地址加入到iptables规则表中与该帐户对应的流量控制规则中的IP地址加入模块(14)。9.如权利要求8所述的一种同一帐户下非连续多IP地址共享同一带宽的装置,其特征在于所述装置还包括用于编辑iptables规则表中流量控制规则的流量控制规则编辑模块(15)。10.如权利要求8或9所述的一种同一帐户下非连续多IP地址共享同一带宽的装置,其特征在于所述装置以文件形式静态存放于磁盘,第一次使用时,将该装置从指定磁盘路径加载到内存,存放并常驻于Linux操作系统内核特定区域,直到手动卸载或者关机;当再次使用时,直接从该内存区域调用。全文摘要本发明公开了一种同一帐户下非连续多IP地址共享同一带宽的方法及装置,属于网络流量控制
技术领域
。该方法及装置首先配置每个帐户下所有可用于上网的IP地址;当某IP地址是其所在帐户下第一个上网IP地址时,在iptables规则表中增加与该IP地址对应的流量控制规则和与该IP地址所在帐户对应的流量控制规则,对该IP地址进行流量控制,再将该IP地址所在帐户下所有其他IP地址加入到与该IP地址所在帐户对应的流量控制规则中;当某IP地址不是其所在帐户下第一个上网IP地址时,在iptables规则表中增加与该IP地址对应的流量控制规则,并共用与该IP地址所在帐户对应的流量控制规则,对该IP地址进行流量控制。文档编号H04L29/12GK101958826SQ20091008904公开日2011年1月26日申请日期2009年7月20日优先权日2009年7月20日发明者唐科,王喆,董洪洋申请人:北大方正集团有限公司;北京北大方正宽带网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1