專利名稱::一種多wan口設備負載均衡的實現(xiàn)方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種多WAN口設備負載均衡的實現(xiàn)方法,具體與Iinux網(wǎng)絡協(xié)議棧、Netfilter/Iptables的編譯安裝與修改、策略路由和高級路由的使用有關(guān)。
背景技術(shù):
:在現(xiàn)有技術(shù)中,有很多WAN口設備,把原本“一對多”的WAN接入方式變成“多對多”的方式,滿足了用戶更多帶寬等需求。多WAN口設備主要用于增加帶寬、線路備份等方面。允許用戶以更經(jīng)濟的成本成倍增加帶寬。而當前很多WAN口設備不具備按比例進行自動負載均衡的功能,正常情況下只使用一個WAN口進行數(shù)據(jù)傳輸,其他WAN口單純作為備用。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是提供一種多WAN口設備負載均衡的實現(xiàn)方法,實現(xiàn)基于LINUX系統(tǒng)的多WAN口設備按比例進行負載均衡的功能。為達到發(fā)明目的,本發(fā)明采用如下技術(shù)方案一種多WAN口設備負載均衡的實現(xiàn)方法,首先,為每個WAN口創(chuàng)建路由表;然后,在路由查找之前將數(shù)據(jù)包送到連接跟蹤標記模塊,得到該數(shù)據(jù)包的MARK值,并賦值給數(shù)據(jù)包的mark字段;之后,在路由查找模塊中,根據(jù)mark字段,使用不同的路由表為數(shù)據(jù)包進行路由判斷;最后,根據(jù)上一步驟的路由判斷,處理數(shù)據(jù)包,轉(zhuǎn)發(fā)或本地接收等。進一步地,連接跟蹤標記模塊按如下步驟完成工作步驟A,判斷數(shù)據(jù)包所屬的連接是否已經(jīng)被標記,如果被標記,則取出該標記值,賦給數(shù)據(jù)包的mark字段;否則,轉(zhuǎn)入步驟B;步驟B,進入到該步驟的數(shù)據(jù)包按如下方式被標記假設有η個WAN口,負載比例為NIΝ2…Νη,則每連續(xù)Ν1+Ν2+…+Nn個數(shù)據(jù)包中,其中NI個數(shù)據(jù)包被標記為Ml,Ν2個數(shù)據(jù)包被標記為M2,…,Nn個數(shù)據(jù)包被標記為Mn(注NI,Ν2,…,Νη,Μ1,M2,...,Mn均為自然數(shù));步驟C,將數(shù)據(jù)包的標記值保存到連接跟蹤表中。進一步地,路由查找的時候,根據(jù)數(shù)據(jù)包中標記值(即mark字段),使用不同的路由表進行路由判斷,從而將數(shù)據(jù)包導向不同的WAN口。采用上述技術(shù)方案,本發(fā)明能夠?qū)崿F(xiàn)基于LINUX系統(tǒng)的多WAN口設備按比例進行負載均衡的功能。此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中圖I為本發(fā)明方法的流程框圖。具體實施例方式為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖和實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖I所示的本發(fā)明的實施方式,Netfilter/Iptables是LINUX2.4.x/2.6.x內(nèi)核集成的IP信息包過濾系統(tǒng),分為Netfilter與Iptables兩部分。其中Netfilter是LINUX內(nèi)核IP協(xié)議棧中的一系列函數(shù)調(diào)用入口,設置在報文處理的路徑上,它會在路由查找之前執(zhí)行處理過程。LINUX網(wǎng)絡協(xié)議棧是一個層次架構(gòu)的軟件架構(gòu),層與層之間通過預定的接口傳遞報文,網(wǎng)絡報文中包含了協(xié)議各層使用到的各種信息,在LINUX的2.4與2.6版本中采用結(jié)構(gòu)sk_buff來存儲報文數(shù)據(jù)。在該結(jié)構(gòu)里有一個變量mark。該變量不是包本身的一部分,而是包在穿越系統(tǒng)過程中由內(nèi)核分配的與包相關(guān)聯(lián)的一個字段。該字段只能在本地的mangle表里使用,可以與本地的高級路由功能聯(lián)用,以使不同的包應用不同的策略。連接跟蹤即跟蹤并記錄連接狀態(tài),Linux為每一個經(jīng)過網(wǎng)絡協(xié)議棧的數(shù)據(jù)包,生成一個新的連接記錄項,此后所有屬于該連接的數(shù)據(jù)包都被唯一地分配給這個連接,并標識連接狀態(tài)。連接跟蹤是防火墻模塊的狀態(tài)檢測的基礎(chǔ),同時也是地址轉(zhuǎn)換中實現(xiàn)SNAT與DNAT的前提。C0NNMARK是netfilter/iptables中的一個特性,實現(xiàn)了往連接跟蹤記錄上打標記的方法(即sk_buff中的mark字段)。從2.2版本開始,Linux加入了高級路由機制,基于該機制Linux系統(tǒng)可以有多達256個路由表,且每個路由表都各自獨立。同時Linux內(nèi)包含一個路由策略數(shù)據(jù)庫,我們可以在該庫里添加一些路由規(guī)則來確定“哪類數(shù)據(jù)包”應該“根據(jù)哪個路由表”來傳輸。在此,我們可以使用數(shù)據(jù)包中的mark字段作為匹配條件。下面一個雙WAN口的實施實例,其按21分配負載(1)使用ip工具為兩個wan口建立各自的獨立路由表,編號分別為150與151;(2)修改iptables中的MARK模塊,到達該模塊處理的數(shù)據(jù)包,第一個標記為150,第二個標記為150,第三個標記為151,第四個150,第五個標記為150,第六個標記為151,如此循環(huán);(3)應用如下兩條策略路由,標記(MARK值)為150的連接使用路由表150,標記為151的使用路由表151ipruleaddfwmark150table150ipruleaddfwmark151table151;(4)按如下添加數(shù)據(jù)包處理規(guī)則,第一條規(guī)則從連接跟蹤記錄表中取出當前數(shù)據(jù)包所屬連接的MARK值,并記錄在該數(shù)據(jù)包中;第二條規(guī)則則判斷當前數(shù)據(jù)包所處的連接是否已打上標記,是則將數(shù)據(jù)包直接放回協(xié)議棧,否則繼續(xù)執(zhí)行第三條規(guī)則;第三條規(guī)則將數(shù)據(jù)包放入步驟(I)所述的MARK模塊,對數(shù)據(jù)包進行循環(huán)標記;第四條規(guī)則用于保存該數(shù)據(jù)包所處連接記錄信息,包括MARK值iptables_tmangle-APREROUTING-jCONNMARK-restore-markiptables_tmangle-APREROUTING_mmark!—mark0-jRETURNiptables_tmangle-APREROUTING-jMARK—set-mark150iptables_tmangle-APREROUTING-jCONNMARK—save-mark。本發(fā)明能夠?qū)崿F(xiàn)基于LINUX系統(tǒng)的多WAN口設備按比例進行負載均衡的功能。上述說明示出并描述了本發(fā)明的優(yōu)選實施例,如前所述,應當理解本發(fā)明并非局限于本文所披露的形式,不應看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。權(quán)利要求1.一種多WAN口設備負載均衡的實現(xiàn)方法,其特征在于首先,為每個WAN口創(chuàng)建路由表;然后,在路由查找之前將數(shù)據(jù)包送到連接跟蹤標記模塊,得到該數(shù)據(jù)包的MARK值,并賦值給數(shù)據(jù)包的mark字段;之后,在路由查找模塊中,根據(jù)mark字段,使用不同的路由表為數(shù)據(jù)包進行路由判斷;最后,根據(jù)上一步驟的路由判斷,處理數(shù)據(jù)包,轉(zhuǎn)發(fā)或本地接收。2.如權(quán)利要求I所述的一種多WAN口設備負載均衡的實現(xiàn)方法,其特征在于連接跟蹤標記模塊按如下步驟完成工作步驟A,判斷數(shù)據(jù)包所屬的連接是否已經(jīng)被標記,如果被標記,則取出該標記值,賦給數(shù)據(jù)包的mark字段;否則,轉(zhuǎn)入步驟B;步驟B,進入到該步驟的數(shù)據(jù)包按如下方式被標記假設有η個WAN口,負載比例為NIΝ2…Νη,則每連續(xù)Ν1+Ν2+…+Nn個數(shù)據(jù)包中,其中NI個數(shù)據(jù)包被標記為Ml,Ν2個數(shù)據(jù)包被標記為M2,…,Nn個數(shù)據(jù)包被標記為Mn,其中,NI,Ν2,…,Nn,Ml,M2,…,Mn均為自然數(shù);步驟C,將數(shù)據(jù)包的標記值保存到連接跟蹤表中。3.如權(quán)利要求I所述的一種多WAN口設備負載均衡的實現(xiàn)方法,其特征在于路由查找的時候,根據(jù)數(shù)據(jù)包中標記值,即mark字段,使用不同的路由表進行路由判斷,從而將數(shù)據(jù)包導向不同的WAN口。全文摘要一種多WAN口設備負載均衡的實現(xiàn)方法,首先,為每個WAN口創(chuàng)建路由表;然后,在路由查找之前將數(shù)據(jù)包送到連接跟蹤標記模塊,得到該數(shù)據(jù)包的MARK值,并賦值給數(shù)據(jù)包的mark字段;之后,在路由查找模塊中,根據(jù)mark字段,使用不同的路由表為數(shù)據(jù)包進行路由判斷;最后,根據(jù)上一步驟的路由判斷,處理數(shù)據(jù)包,轉(zhuǎn)發(fā)或本地接收等;本發(fā)明能夠?qū)崿F(xiàn)基于LINUX系統(tǒng)的多WAN口設備按比例進行負載均衡的功能。文檔編號H04L12/757GK102882802SQ20121040632公開日2013年1月16日申請日期2012年10月23日優(yōu)先權(quán)日2012年10月23日發(fā)明者許財義申請人:廈門四信通信科技有限公司