一种多wan口设备负载均衡的实现方法

文档序号:7863606阅读:744来源:国知局

专利名称::一种多wan口设备负载均衡的实现方法
技术领域
:本发明涉及一种多WAN口设备负载均衡的实现方法,具体与Iinux网络协议栈、Netfilter/Iptables的编译安装与修改、策略路由和高级路由的使用有关。
背景技术
:在现有技术中,有很多WAN口设备,把原本“一对多”的WAN接入方式变成“多对多”的方式,满足了用户更多带宽等需求。多WAN口设备主要用于增加带宽、线路备份等方面。允许用户以更经济的成本成倍增加带宽。而当前很多WAN口设备不具备按比例进行自动负载均衡的功能,正常情况下只使用一个WAN口进行数据传输,其他WAN口单纯作为备用。
发明内容本发明所要解决的技术问题是提供一种多WAN口设备负载均衡的实现方法,实现基于LINUX系统的多WAN口设备按比例进行负载均衡的功能。为达到发明目的,本发明采用如下技术方案一种多WAN口设备负载均衡的实现方法,首先,为每个WAN口创建路由表;然后,在路由查找之前将数据包送到连接跟踪标记模块,得到该数据包的MARK值,并赋值给数据包的mark字段;之后,在路由查找模块中,根据mark字段,使用不同的路由表为数据包进行路由判断;最后,根据上一步骤的路由判断,处理数据包,转发或本地接收等。进一步地,连接跟踪标记模块按如下步骤完成工作步骤A,判断数据包所属的连接是否已经被标记,如果被标记,则取出该标记值,赋给数据包的mark字段;否则,转入步骤B;步骤B,进入到该步骤的数据包按如下方式被标记假设有η个WAN口,负载比例为NIΝ2…Νη,则每连续Ν1+Ν2+…+Nn个数据包中,其中NI个数据包被标记为Ml,Ν2个数据包被标记为M2,…,Nn个数据包被标记为Mn(注NI,Ν2,…,Νη,Μ1,M2,...,Mn均为自然数);步骤C,将数据包的标记值保存到连接跟踪表中。进一步地,路由查找的时候,根据数据包中标记值(即mark字段),使用不同的路由表进行路由判断,从而将数据包导向不同的WAN口。采用上述技术方案,本发明能够实现基于LINUX系统的多WAN口设备按比例进行负载均衡的功能。此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图I为本发明方法的流程框图。具体实施例方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。如图I所示的本发明的实施方式,Netfilter/Iptables是LINUX2.4.x/2.6.x内核集成的IP信息包过滤系统,分为Netfilter与Iptables两部分。其中Netfilter是LINUX内核IP协议栈中的一系列函数调用入口,设置在报文处理的路径上,它会在路由查找之前执行处理过程。LINUX网络协议栈是一个层次架构的软件架构,层与层之间通过预定的接口传递报文,网络报文中包含了协议各层使用到的各种信息,在LINUX的2.4与2.6版本中采用结构sk_buff来存储报文数据。在该结构里有一个变量mark。该变量不是包本身的一部分,而是包在穿越系统过程中由内核分配的与包相关联的一个字段。该字段只能在本地的mangle表里使用,可以与本地的高级路由功能联用,以使不同的包应用不同的策略。连接跟踪即跟踪并记录连接状态,Linux为每一个经过网络协议栈的数据包,生成一个新的连接记录项,此后所有属于该连接的数据包都被唯一地分配给这个连接,并标识连接状态。连接跟踪是防火墙模块的状态检测的基础,同时也是地址转换中实现SNAT与DNAT的前提。C0NNMARK是netfilter/iptables中的一个特性,实现了往连接跟踪记录上打标记的方法(即sk_buff中的mark字段)。从2.2版本开始,Linux加入了高级路由机制,基于该机制Linux系统可以有多达256个路由表,且每个路由表都各自独立。同时Linux内包含一个路由策略数据库,我们可以在该库里添加一些路由规则来确定“哪类数据包”应该“根据哪个路由表”来传输。在此,我们可以使用数据包中的mark字段作为匹配条件。下面一个双WAN口的实施实例,其按21分配负载(1)使用ip工具为两个wan口建立各自的独立路由表,编号分别为150与151;(2)修改iptables中的MARK模块,到达该模块处理的数据包,第一个标记为150,第二个标记为150,第三个标记为151,第四个150,第五个标记为150,第六个标记为151,如此循环;(3)应用如下两条策略路由,标记(MARK值)为150的连接使用路由表150,标记为151的使用路由表151ipruleaddfwmark150table150ipruleaddfwmark151table151;(4)按如下添加数据包处理规则,第一条规则从连接跟踪记录表中取出当前数据包所属连接的MARK值,并记录在该数据包中;第二条规则则判断当前数据包所处的连接是否已打上标记,是则将数据包直接放回协议栈,否则继续执行第三条规则;第三条规则将数据包放入步骤(I)所述的MARK模块,对数据包进行循环标记;第四条规则用于保存该数据包所处连接记录信息,包括MARK值iptables_tmangle-APREROUTING-jCONNMARK-restore-markiptables_tmangle-APREROUTING_mmark!—mark0-jRETURNiptables_tmangle-APREROUTING-jMARK—set-mark150iptables_tmangle-APREROUTING-jCONNMARK—save-mark。本发明能够实现基于LINUX系统的多WAN口设备按比例进行负载均衡的功能。上述说明示出并描述了本发明的优选实施例,如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。权利要求1.一种多WAN口设备负载均衡的实现方法,其特征在于首先,为每个WAN口创建路由表;然后,在路由查找之前将数据包送到连接跟踪标记模块,得到该数据包的MARK值,并赋值给数据包的mark字段;之后,在路由查找模块中,根据mark字段,使用不同的路由表为数据包进行路由判断;最后,根据上一步骤的路由判断,处理数据包,转发或本地接收。2.如权利要求I所述的一种多WAN口设备负载均衡的实现方法,其特征在于连接跟踪标记模块按如下步骤完成工作步骤A,判断数据包所属的连接是否已经被标记,如果被标记,则取出该标记值,赋给数据包的mark字段;否则,转入步骤B;步骤B,进入到该步骤的数据包按如下方式被标记假设有η个WAN口,负载比例为NIΝ2…Νη,则每连续Ν1+Ν2+…+Nn个数据包中,其中NI个数据包被标记为Ml,Ν2个数据包被标记为M2,…,Nn个数据包被标记为Mn,其中,NI,Ν2,…,Nn,Ml,M2,…,Mn均为自然数;步骤C,将数据包的标记值保存到连接跟踪表中。3.如权利要求I所述的一种多WAN口设备负载均衡的实现方法,其特征在于路由查找的时候,根据数据包中标记值,即mark字段,使用不同的路由表进行路由判断,从而将数据包导向不同的WAN口。全文摘要一种多WAN口设备负载均衡的实现方法,首先,为每个WAN口创建路由表;然后,在路由查找之前将数据包送到连接跟踪标记模块,得到该数据包的MARK值,并赋值给数据包的mark字段;之后,在路由查找模块中,根据mark字段,使用不同的路由表为数据包进行路由判断;最后,根据上一步骤的路由判断,处理数据包,转发或本地接收等;本发明能够实现基于LINUX系统的多WAN口设备按比例进行负载均衡的功能。文档编号H04L12/757GK102882802SQ20121040632公开日2013年1月16日申请日期2012年10月23日优先权日2012年10月23日发明者许财义申请人:厦门四信通信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1