r>[0034]首先,介紹一下NAT功能實現(xiàn)原理,參考圖3所示,為NAT功能在網(wǎng)絡(luò)設(shè)備中的實現(xiàn)的原理圖,NAT實現(xiàn)過程中,第一個正向報文到達NAT設(shè)備后會去匹配已經(jīng)設(shè)置好的NAT策略,本例中策略為“來自192.168.1.0/24網(wǎng)段的報文都要進行源地址轉(zhuǎn)換,轉(zhuǎn)換為10.10.0.100”,如果報文能匹配上已有的NAT策略,設(shè)備將做如下兩件事情:
[0035]一是按照策略描述對報文進行地址轉(zhuǎn)換,同時進行源端口轉(zhuǎn)換。該過程中,地址轉(zhuǎn)換是根據(jù)用戶配置的NAT策略確定轉(zhuǎn)換后的地址;源端口轉(zhuǎn)換后是由NAT設(shè)備根據(jù)一定算法自行分配,以便配合實現(xiàn)多對一的地址轉(zhuǎn)換;目的端口不允許轉(zhuǎn)換。
[0036]二是同時生成關(guān)于該報文四元組的會話表項,包括了正反兩個方向的表項,該表項描述了關(guān)于當(dāng)前報文轉(zhuǎn)換前后四元組的后續(xù)所有的正反向報文的地址轉(zhuǎn)換行為。因此,主機A和主機B之間第一個正向報文之后的其它報文都是依賴于會話表項進行地址轉(zhuǎn)換。當(dāng)后續(xù)正向報文到達NAT設(shè)備時,如果對應(yīng)的NAT會話表項被意外刪除或者超時刪除,報文查不到對應(yīng)表項,將重新匹配NAT策略并重新生成NAT會話表項。而反向報文由于沒有可匹配的NAT策略則只能依賴會話表項,當(dāng)后續(xù)反向報文到達NAT設(shè)備時,如果報文查不到對應(yīng)的NAT表項將無法進行正確的地址轉(zhuǎn)換,反向報文最終無法到達主機A。
[0037]在上述內(nèi)容以及【背景技術(shù)】的說明下,通過分析可知,分布式系統(tǒng)的網(wǎng)絡(luò)設(shè)備同時有兩塊或者兩塊以上業(yè)務(wù)板工作時,NAT功能存在以下兩個問題,也正是本發(fā)明要解決的問題。
[0038]問題1:如圖4所示,主機A發(fā)出的第一個正向報文到達業(yè)務(wù)板I后,匹配上NAT策略,進行源地址和源端口轉(zhuǎn)換,同時創(chuàng)建相應(yīng)的NAT會話表項。源地址和源端口的轉(zhuǎn)換導(dǎo)致報文四元組的變化,轉(zhuǎn)換后的正向報文四元組與轉(zhuǎn)換前的正向報文四元組相比,可能算出不同的hash值。而主機C應(yīng)答時產(chǎn)生的反向報文恰好與轉(zhuǎn)換后的正向報文四元組相同(源和目的是顛倒的),會算出相同的hash值,從而導(dǎo)致主機C發(fā)出的反向報文與轉(zhuǎn)換前的正向報文hash值不同,使得反向報文被分流到另一塊業(yè)務(wù)板,即業(yè)務(wù)板2。由于反向報文在業(yè)務(wù)板2上查不到相應(yīng)的NAT會話表項(因為表項在業(yè)務(wù)板I上),最終無法到達主機A。
[0039]問題2:如圖5所示,來自主機A的正向報文和來自主機D的正向報文分別到達業(yè)務(wù)板I和業(yè)務(wù)板2后,都能匹配到相同的NAT規(guī)則,源地址都被轉(zhuǎn)換為10.10.0.100,由于業(yè)務(wù)板I的NAT功能實現(xiàn)和業(yè)務(wù)板2的NAT功能實現(xiàn)是相互獨立的,無法保證多對一地址轉(zhuǎn)換使用不同的源端口轉(zhuǎn)換,即二者可能使用相同的源端口(本例中都轉(zhuǎn)換為6000),這導(dǎo)致NAT轉(zhuǎn)換后主機A的正向報文和NAT轉(zhuǎn)換后主機B的正向報文具有完全相同的四元組(Sour: 10.10.0.100:6000,Dest: 10.10.0.200:80),而且二者到達主機 C 后產(chǎn)生的反向應(yīng)答報文也具有相同的四元組(Sour: 10.10.0.200:80,Dest: 10.10.0.100:6000),根據(jù)此四元組計算的hash值也必定相同,假設(shè)都分流到業(yè)務(wù)板2,因此發(fā)送給主機A的反向報文也被分流到業(yè)務(wù)板2上。由于業(yè)務(wù)板2上的NAT會話表項是根據(jù)主機D的正向報文生成的,報文匹配該表項進行地址轉(zhuǎn)換后發(fā)送給主機D,最終導(dǎo)致應(yīng)該發(fā)送給主機A的反向報文被發(fā)送到了主機D。
[0040]問題I是由于業(yè)務(wù)板的分流原理和報文地址轉(zhuǎn)換可能導(dǎo)致正向報文和反向報文分流到不同的業(yè)務(wù)板,導(dǎo)致反向報文無法找到正向報文創(chuàng)建的NAT會話表項。問題2是由于多塊業(yè)務(wù)板獨立實現(xiàn)NAT功能,當(dāng)分別在不同業(yè)務(wù)板上進行NAT處理且具有不同四元組的IP報文,經(jīng)過地址轉(zhuǎn)換后具有相同的源IP地址、相同的目的IP地址和相同的目的端口號時,每塊業(yè)務(wù)板進行源端口轉(zhuǎn)換的過程中都不知道其他業(yè)務(wù)板是否用了和自己相同的源端口號,即多對一的NAT時無法保證“四元組不同的兩個或多個報文經(jīng)過地址轉(zhuǎn)換后它們的四元組也不能相同”的約束條件,因此不同地址的報文在不同業(yè)務(wù)板進行NAT轉(zhuǎn),轉(zhuǎn)換為同一地址的同時,可能也轉(zhuǎn)換了相同的源端口號,導(dǎo)致NAT設(shè)備收到反向報文時無法區(qū)分轉(zhuǎn)換前的正向報文的地址。
[0041]結(jié)合上述問題,本發(fā)明提供分布式系統(tǒng)中多業(yè)務(wù)板分流時的NAT處理方法實施例,參考圖6所示的流程圖,本實施例主要包括:
[0042]接口板接收IP報文后,根據(jù)該IP報文的四元組信息(源IP地址、源端口號、目的IP地址、目的端口號)進行hash運算,根據(jù)計算出的hash值選擇一塊業(yè)務(wù)板,將該IP報文發(fā)送到選擇的業(yè)務(wù)板,由NAT模塊進行NAT處理,主要包括以下步驟:
[0043]SI 1、根據(jù)正向IP報文匹配的NAT策略對所述報文的IP地址進行地址轉(zhuǎn)換;
[0044]S12、根據(jù)預(yù)設(shè)的hash約束條件對所述IP報文的源端口號進行轉(zhuǎn)換;
[0045]其中所述預(yù)設(shè)的hash約束條件包括:所述IP報文地址轉(zhuǎn)換和端口轉(zhuǎn)換后的報文四元組的hash值與所述IP報文地址轉(zhuǎn)換和端口轉(zhuǎn)換前的報文四元組的hash值相等;用公式表示如下:
[0046]Hash(sourIPl, sourPortl, destIPl, destPortl)
[0047]= Hash(sourIP2, sourPort2, destIP2, destPort2) (I)
[0048]標(biāo)號為I的表示NAT轉(zhuǎn)換前的四元組,標(biāo)號為2的表示NAT轉(zhuǎn)換后的四元組,根據(jù)NAT的實現(xiàn)原理,轉(zhuǎn)換后的四元組中只有源端口號是NAT設(shè)備可以自行支配的,因此,上面的等式可以轉(zhuǎn)化如下:
[0049]Hash(sourIPl, sourPortl, destIPl, destPortl)
[0050]= Hash(sourIP2, X, destIP2, destPort2) (2)
[0051]根據(jù)hash分流算法的特點可知,該方程解出的X(轉(zhuǎn)換后的端口號)不唯一。因此,利用式(2),NAT設(shè)備可以找到不止一個端口號可以使得轉(zhuǎn)換后報文四元組與轉(zhuǎn)換前報文四元組具有相同的hash值,在保證等式成立的條件下,所選取的端口可以使得報文進行NAT后的反向報文能回到本業(yè)務(wù)板。
[0052]S13、根據(jù)所述IP報文的IP地址和源端口號的轉(zhuǎn)換過程創(chuàng)建該IP報文的NAT會話表項并轉(zhuǎn)發(fā)該報文。
[0053]NAT設(shè)備對所述IP報文執(zhí)行完NAT處理后,根據(jù)IP報文四元組的轉(zhuǎn)換過程創(chuàng)建該IP報文的NAT會話表項,然后將攜帶轉(zhuǎn)換后的四元組信息的IP報文轉(zhuǎn)發(fā)給接口板,由接口板向外發(fā)送。
[0054]本實施例提供的技術(shù)方案中,對IP報文的IP地址進行轉(zhuǎn)換,之后對源端口號進行轉(zhuǎn)換,轉(zhuǎn)換時在IP報文地址轉(zhuǎn)換和源端口轉(zhuǎn)換后的報文四元組的hash值與IP報文地址轉(zhuǎn)換和源端口轉(zhuǎn)換前的報文四元組的hash值相等的條件下進行,這樣可以保證同一主機的正向報文和反向報文被分配到同一業(yè)務(wù)板。保證反向報文能夠查找到根據(jù)正向報文創(chuàng)建的會話表項。同時,當(dāng)分別在不同業(yè)務(wù)板上進行NAT處理且具有不同四元組的IP報文,經(jīng)過地址轉(zhuǎn)換后具有相同的源IP地址、相同的目的IP地址和相同的目的端口號時,由于不同的業(yè)務(wù)板對應(yīng)不同的hash值,使得不同業(yè)務(wù)板對應(yīng)的轉(zhuǎn)換后的源端口號是不同的,即四元組不同的兩個或多個報文經(jīng)過地址轉(zhuǎn)換后它們的四元組也不同,從而保證多對一 NAT時,反向報文能夠根據(jù)端口號正確的回到原主機。
[0055]另外,本發(fā)明實施例中,除了改變業(yè)務(wù)板NAT模塊的處理方式外,對其他的模塊(比如接口板、主控板等)沒有任何影響,業(yè)務(wù)板之間不需要做板間表項同步等,在現(xiàn)有系統(tǒng)架構(gòu)下,本方案實施簡單,性能優(yōu)越,占用系統(tǒng)資源較少。
[0056]根據(jù)上述實施例的描述,下面對上述實施例提供的技術(shù)方案解決上述問題2的過程進行反向論證,引用前述的表述方式,過程如下:
[0057]已知條件:有兩個不同四元組的報文(IP報文)——報文I和報文2分別在業(yè)務(wù)板I和業(yè)務(wù)板2上做NAT轉(zhuǎn)換,且地址轉(zhuǎn)換后具有相同的源IP地址、相同的目