專利名稱:一種增強(qiáng)的nat-pt協(xié)議方案的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬計算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體為一種能夠?qū)崿F(xiàn)IPv4網(wǎng)絡(luò)和IPv6網(wǎng)絡(luò)高效互訪的增強(qiáng)型NAT-PT協(xié)議。
雙向NAT-PT同時支持出站會話和入站會話。在雙向NAT-PT模型中,一個IPv6地址在會話建立前靜態(tài)地綁定到一個臨時IPv4地址,或者在會話建立的時候動態(tài)地映射到一個臨時IPv4地址。對于入站會話,在會話建立前,源節(jié)點發(fā)起一個DNS請求(假定所有IPv6節(jié)點的域名是全局唯一的)。NAT-PT網(wǎng)關(guān)獲得從DNS服務(wù)器返回的IPv6地址后,將其動態(tài)的綁定到一個臨時IPv4地址,或者查找靜態(tài)綁定表找到該V6地址所對應(yīng)的映射地址,之后,NAT-PT根據(jù)映射關(guān)系對IP包頭中的地址進(jìn)行轉(zhuǎn)換。
NAPT-PT(Network Address Port Translation-Protocol Translation)是一種改進(jìn)的NAT-PT模型。NAPT-PT的基本原理是對于從IPv6發(fā)起的會話,NAPT-PT在將IPv6地址映射成IPv4地址的同時,將IP包中客戶端端口映射成某個臨時IPv4地址的一個未用端口。這樣,每個臨時IPv4地址上最多可以同時建立達(dá)63000個會話(端口號0~1023保留),從而節(jié)省IPv4地址。
盡管雙向NAT-PT可以支持IPv4與IPv6節(jié)點的互訪,但是由于一個臨時IPv4地址只能綁定到一個IPv6節(jié)點上,對于大型網(wǎng)絡(luò)的互訪需要大量的臨時IPv4地址存放在臨時地址池中。這將使得IPv4地址資源緊張的問題更加嚴(yán)重。NAPT-PT采用端口復(fù)用技術(shù)可以節(jié)約大量的IPv4地址,但是其只支持IPv6節(jié)點訪問IPv4網(wǎng)絡(luò)。
為了便于斜述,先將本發(fā)明涉及的常用的術(shù)語與標(biāo)記介紹如下定義1.SA,S-port,DA,D-port分別表示源地址、源端口、目標(biāo)地址、目標(biāo)端口。它們是一個會話的參數(shù)。
定義2.會話(Session),入站會話(Inbound Session),出站會話(OutboundSession)會話定義為客戶與服務(wù)器一個交互過程的所有數(shù)據(jù)流,其含義約略相當(dāng)于一個TCP/UDP連接或ICMP查詢。在ENAT-PT中,它們被當(dāng)作一個處理單元來進(jìn)行地址翻譯。TCP/UDP會話可由參數(shù)(SA,S-port,DA,D-port)來標(biāo)識,而ICMP查詢會話則由(SA,ICMP query ID,DA)唯一的標(biāo)識。入站會話表示從V4節(jié)點發(fā)起的會話,而出站會話表示由V6節(jié)點發(fā)起的會話。會話的方向(入站或出站)由發(fā)起的節(jié)點決定,而非數(shù)據(jù)包的流動方向。
定義3.入站數(shù)據(jù)包(Inbound packet),出站數(shù)據(jù)包(Outbound packet)入站數(shù)據(jù)包表示流向發(fā)起會話的節(jié)點的數(shù)據(jù)包,而出站數(shù)據(jù)包表示從發(fā)起該會話的節(jié)點流出的數(shù)據(jù)包。例如一個telnet會話,出站數(shù)據(jù)包通常攜帶終端的鍵盤輸入信息,而入站數(shù)據(jù)包則攜帶服務(wù)器返回的顯示信息。
本發(fā)明提出的支持IPv4和IPv6兩類網(wǎng)絡(luò)互訪的協(xié)議,可記為ENAT-PT(EnhancedNAT-PT)協(xié)議。它分為三個部分(1)ENAT增強(qiáng)的NAT機(jī)制,處理入站會話;(2)NAPT處理出站會話;(3)PT實現(xiàn)IPv4和Ipv6兩種協(xié)議之間的轉(zhuǎn)換。
其中,NAPT和PT有現(xiàn)有的方案,遵循相關(guān)標(biāo)準(zhǔn)。ENAT的基本方法如下如
圖1所示,設(shè)H1為IPv4主機(jī),地址為ADDR1(V4地址);H2為IPv6主機(jī),地址為ADDR2(V6地址)。對于入站會話,會話建立前,源節(jié)點H1發(fā)起一個DNS請求(請求獲得H2的地址)到DNS服務(wù)器。ENAT-PT網(wǎng)關(guān)截獲DNS響應(yīng),并從地址池中取得一個未被綁定的臨時IPv4地址REG1(V4地址)與返回H2的地址ADDR2綁定到一起,同時將REG1作為H2的地址返回給H1。V4主機(jī)H1以REG1作為服務(wù)器地址發(fā)起會話請求。
對于以上DNS解析過程,ENAT與傳統(tǒng)的的NAT(僅指V4地址與V6地址的翻譯)的入站會話的過程完全相同。與傳統(tǒng)的NAT不同的是,ENAT-PT網(wǎng)關(guān)在會話建立后就釋放臨時IPv4地址,而非在會話結(jié)束后才釋放臨時地址,通過該方法可以實現(xiàn)臨時地址的復(fù)用。但是采用該方法可能使得一個臨時地址對應(yīng)多個V6節(jié)點。為了區(qū)分到不同V6節(jié)點的不同會話,ENAT引入會話參數(shù)并維護(hù)一個會話表。ENAT-PT網(wǎng)關(guān)截獲到某個會話的第一個數(shù)據(jù)包以后,在會話表中建立起一個新的表項,該表項的形式為V4主機(jī)地址、V4主機(jī)端口、映射地址、V6主機(jī)地址、V6主機(jī)端口。在本例中,假設(shè)V4主機(jī)獲得H2的映射地址(REG1)以后發(fā)起一個到V6的會話,源端口為PORT1,目標(biāo)端口為PORT2,則會話表中對應(yīng)該會話的表項為(ADDR1,PORT1,REG1,ADDR2,PORT2)。會話建立以后,臨時IPv4地址REG1與V6地址ADDR2的綁定關(guān)系即被釋放。對于該會話后續(xù)的數(shù)據(jù)包,ENAT-PT網(wǎng)關(guān)將查詢會話表,并根據(jù)會話參數(shù)查詢到V6節(jié)點的地址,然后對數(shù)據(jù)包頭中的地址進(jìn)行轉(zhuǎn)換。會話表中的表項在其所對應(yīng)的會話結(jié)束時被刪除。
臨時IPv4地址與V6地址的綁定關(guān)系在會話建立后立即被釋放,并可重新綁定到另一個V6地址,因此同一個臨時IPv4地址可以同時映射到任意多個不同的V6地址,從而大大的提高了臨時IPv4地址的利用率。
圖2是一個臨時IPv4地址的狀態(tài)圖。它表明了一個臨時IPv4地址被復(fù)用的詳細(xì)情況。臨時IPv4地址起始狀態(tài)為free。響應(yīng)一個DNS請求時臨時IPv4地址被綁定到一個V6地址,為bind狀態(tài)。會話建立以后,會話表中記錄了會話的相關(guān)信息,臨時IPv4地址被釋放,臨時IPv4地址狀態(tài)為using狀態(tài)(會話表中至少有一個表項包含了該映射地址),此時該臨時IPv4地址又可重新綁定到新的V6地址。當(dāng)新的V4節(jié)點進(jìn)行域名查詢時,該臨時IPv4地址又被綁定到新的V6節(jié)點,此時其狀態(tài)為bind and using。
根據(jù)上述方法,ENAT的具體步驟如下(1)4客戶機(jī)在需要訪問V6主機(jī)時使用DNS查詢V6的IP地址;(2)關(guān)截獲DNS的響應(yīng),從空閑的臨時地址池中選擇一個V4地址REG1,將DNS中V6主機(jī)的地址IV6替換為REG1,返回給V4客戶,同時建立地址綁定(IV6,REG1)放入綁定列表;(3)網(wǎng)關(guān)收到V4的數(shù)據(jù)報后,根據(jù)報文參數(shù)檢查會話表;(a)如果有該會話的會話項,則進(jìn)行協(xié)議轉(zhuǎn)換操作,將報文轉(zhuǎn)換為IPv6格式,將會話項中的IV6地址作為V6的目標(biāo)地址;(b)如果沒有相關(guān)會話項,則根據(jù)報文的IPv4目的地址查詢綁定列表,
①如果沒有相關(guān)綁定,則轉(zhuǎn)換失敗;②如果有綁定,(A)如果是TCP連接建立報文或UDP或ICMP報文則根據(jù)報文信息和綁定,在會話表中建立會話項(V4主機(jī)地址,V4主機(jī)端口,映射地址,V6主機(jī)地址,V6主機(jī)端口),釋放該綁定,并進(jìn)行協(xié)議轉(zhuǎn)換;(B)否則是錯誤或超時報文,丟棄;(c)如果是結(jié)束報文則,釋放會話項。
(4)網(wǎng)關(guān)收到V6的數(shù)據(jù)報后,根據(jù)報文參數(shù)檢查會話表。如果有會話項則進(jìn)行協(xié)議轉(zhuǎn)換,將報文轉(zhuǎn)換為IPv4格式,將會話項中的REG1地址作為V4的源地址。系統(tǒng)通過超時機(jī)制來回收資源當(dāng)綁定超時是,要釋放綁定,使得地址可重用。當(dāng)會話超時時釋放會話項。
ENAT僅適用于入站會話,而普通NAPT僅適用于出站會話。ENAT-PT結(jié)合兩者的功能,從而可以使用一個很小的地址池同時支持大量兩個方向的會話。這可以有兩種方法來實現(xiàn),一種是普通NAPT與ENAT采用相互獨立的臨時IPv4地址池,分別獨立的對入站會話和出站會話進(jìn)行處理。二是兩者使用相同的地址池和相同的會話表。由于采用分離的臨時地址池需要更多的地址并且要求區(qū)分入站會話和出站會話,引入了新的運算。在ENAP-PT中采用第二種方法。在該方法中需要對普通的NAPT進(jìn)行適當(dāng)?shù)男薷?。傳統(tǒng)的NAPT僅使用(源地址、源端口)作為參數(shù)進(jìn)行映射,而ENAT需要根據(jù)(源地址、源端口、目的地址、目的端口)進(jìn)行處理。通過擴(kuò)展NAPT,使其在進(jìn)行端口映射時采用(SA,S-port,DA,D-port)四個參數(shù)來映射一個數(shù)據(jù)包,從而統(tǒng)一了ENAT和NAPT對報文的處理過程。會話表的形式略有改動,需要加上“映射端口”一列。
協(xié)議轉(zhuǎn)換PT用于實現(xiàn)IPv4/v6報文協(xié)議的相互轉(zhuǎn)換。該部分遵循相關(guān)標(biāo)準(zhǔn)。顯著效果ENAT-PT成功的解決了IPv4、IPv6兩類網(wǎng)絡(luò)間的互訪,同時僅使用少量的IPv4地址就支持大網(wǎng)絡(luò)的互連。對于V6節(jié)點訪問V4網(wǎng)絡(luò)時,ENAT-PT模型采用修改過的NAPT-PT技術(shù),使得一個臨時IPv4地址可以支持63000個會話訪問IPv4網(wǎng)絡(luò)。采用ENAT支持IPv4節(jié)點訪問V6網(wǎng)絡(luò)。由于在ENAT中一個臨時IPv4地址在一個V4節(jié)點到V6的會話建立后就釋放了,該地址可以用作其它V4節(jié)點建立到V6網(wǎng)絡(luò)新的會話,從而實現(xiàn)地址復(fù)用。從理論上說ENAT只使用一個臨時IPv4地址就可以支持V4網(wǎng)絡(luò)中所有節(jié)點訪問V6網(wǎng)絡(luò)。由于在支持V4/V6網(wǎng)絡(luò)互訪的網(wǎng)絡(luò)地址轉(zhuǎn)換協(xié)議中要求DNS記錄的生存期為0,即要求V4節(jié)點每次在建立與V6節(jié)點的會話時要進(jìn)行DNS查詢。在現(xiàn)有的大量應(yīng)用中,有些應(yīng)用并沒有完全按照DNS協(xié)議的要求進(jìn)行設(shè)計,所以ENAT的效果有所退化,但其最終效果仍然比普通的NAT強(qiáng)很多。假設(shè)有1萬個V4節(jié)點的V4網(wǎng)絡(luò)與有2萬個V6節(jié)點的V6網(wǎng)絡(luò)互連,采用100個臨時IPv4地址。對于普通的NAT,只支持V4網(wǎng)絡(luò)中的所有節(jié)點同時訪問100個不同的IPv6節(jié)點,即V6網(wǎng)絡(luò)資源的可訪問率為100/20000=0.5%。但ENAT支持V4網(wǎng)絡(luò)中的每一個節(jié)點至少可以訪問100個不同的IPv6節(jié)點,即使每個V4節(jié)點訪問的V6節(jié)點不同,依然可以成功訪問。在這個網(wǎng)絡(luò)拓普中,ENAT理論上可以支持同時訪問100*10000=1,000,000個V6節(jié)點,即可以支持V4節(jié)點訪問所有V6節(jié)點。由于每個節(jié)點在一段時間內(nèi)訪問的節(jié)點數(shù)目有限,采用ENAT,使用一個100個V4臨時地址,在絕大部分情況下可以正常支持互訪,但采用普通的NAT顯然是不能完成這個工作的。
在ENAT-PT方案中由于引入了傳輸層的信息,在信息處理量上比普通的NAT要大,但由于需要處理的總體信息量不大,并且處理方法規(guī)整,通過采用合適的數(shù)據(jù)結(jié)構(gòu),對互訪的效率產(chǎn)生的影響極小。總之ENAT-PT是一個使用少量的IPv4地址就支持大IPv4、IPv6網(wǎng)絡(luò)互連的高效方法。
圖2為ENAT-PT模型下臨時IPv4地址的狀態(tài)轉(zhuǎn)換圖。
圖3為ENAT-PT入站會話操作圖示。圖中標(biāo)號H1為IPv4主機(jī),H2為Ipv6主機(jī),F(xiàn)ree初始狀態(tài),Bind地址被綁定到一個IPv6節(jié)點上,Using當(dāng)綁定的IPv6節(jié)點建立了會話,Bind and Using地址被綁定到一個IPv6節(jié)點上,同時有IPv6節(jié)點使用該地址建立了會話。
表1會話表(1)
對于其他的出站數(shù)據(jù)包(非第一個數(shù)據(jù)包),ENAT-PT網(wǎng)關(guān)根據(jù)數(shù)據(jù)包參數(shù)(SA,S-port,DA,D-port)與會話表中參數(shù)(V4主機(jī)地址,V4端口,映射地址,映射端口(V6端口))進(jìn)行匹配,并據(jù)此找到實際目標(biāo)主機(jī)(V6)地址FEDCBA98∷76543210。因此,出站數(shù)據(jù)包經(jīng)過ENAT-PT網(wǎng)關(guān)后將被轉(zhuǎn)換成以下形式SA=PREFIX202.120.225.9,S-port=1024,DA=FEDCBA98∷76543210,D-port=23.(S2)PREFIX∷/96是一個規(guī)定的V6地址前綴,長度為96位。PREFIX可任意指定,如aaaabbbbccccddddeeeefffff。在ENAT-PT網(wǎng)關(guān)所在的IPv6域中,所有包含此前綴的V6地址都被路由到ENAT-PT網(wǎng)關(guān)。(2)入站數(shù)據(jù)包(從V6主機(jī)返回的數(shù)據(jù)包)ENAT-PT網(wǎng)關(guān)截獲的入站數(shù)據(jù)包參數(shù)如下SA=FEDCBA98∷76543210,S-port=23,DA=PREFIX202.120.225.9,D-port=1024.(S3)ENAT-PT網(wǎng)關(guān)查詢會話表,方法是對入站數(shù)據(jù)包的特征參數(shù)(SA,S-port,DA,D-port)和表項(V6主機(jī)地址,V6端口,V4主機(jī)地址,V4端口)進(jìn)行匹配,以查找SA(V6地址)所映射的臨時IPv4地址。該臨時IPv4地址將作為轉(zhuǎn)換后數(shù)據(jù)包的源地址,目標(biāo)地址DA則被去掉前綴PREFIX,端口號保持不變。入站數(shù)據(jù)包中的地址信息將被ENAT-PT網(wǎng)關(guān)轉(zhuǎn)換成以下形式SA=202.120.224.2,S-port=23,DA=202.120.225.9,D-port=1024.(S4)會話2節(jié)點A發(fā)起到節(jié)點C的會話當(dāng)一個臨時IPv4地址被釋放以后即可被綁定到另一個V6地址。假設(shè)節(jié)點A在發(fā)起第一個連接之后又發(fā)起另一個到V6節(jié)點C(地址FEDCBA98∷76543211)的連接(如圖3)。網(wǎng)關(guān)返回節(jié)點C的映射地址202.120.224.2給節(jié)點A(臨時IPv4地址狀態(tài)為bind and using,見圖2),此會話參數(shù)為SA=202.120.225.9,S-port=2002,DA=202.120.224.2,D-port=80.(S5)ENAT-PT網(wǎng)關(guān)在截獲此會話第一個數(shù)據(jù)包以后,會話表如下。
表2會話表(2)
由于記錄了會話的參數(shù),ENAT-PT網(wǎng)關(guān)有足夠的信息分辨兩個會話的數(shù)據(jù)包,并正確地進(jìn)行地址轉(zhuǎn)換和轉(zhuǎn)發(fā)。出站數(shù)據(jù)包將被轉(zhuǎn)換成SA=PREFIX202.120.225.9,S-port=2002,DA=FEDCBA98∷76543211,D-port=80.(S6)入站數(shù)據(jù)包參數(shù)為SA=FEDCBA98∷76543211,S-port=80,DA=PREFIX202.120.225.9,D-port=2002(S7)它們將被轉(zhuǎn)換為如下形式SA=202.120.224.2,S-port=80,DA=202.120.225.9,D-port=2002.(S8)NAPT與ENAT的協(xié)作會話3節(jié)點B發(fā)起到節(jié)點A的會話假設(shè)V6節(jié)點B發(fā)起一個到V4節(jié)點A的連接,參數(shù)如下SA=FEDCBA98∷76543210,S-port=2300,DA=PREFIX202.120.225.9,D-port=80.(S9)由于是V6到V4的會話,將采用NAPT進(jìn)行處理。網(wǎng)關(guān)選擇一個可用的臨時IPv4地址進(jìn)行映射,在該例中節(jié)點B的地址被映射到臨時IPv4地址202.120.224.2,網(wǎng)關(guān)將選擇一個未用的端口,例如1024作為客戶端(節(jié)點B)的源端口,進(jìn)行會話表,見表3。對于出站數(shù)據(jù)包,會話參數(shù)見(S9)式。轉(zhuǎn)換后參數(shù)如下
SA=202.120.224.2,S-port=1024,DA=202.120.225.9,D-port=80.(S10)入站數(shù)據(jù)包參數(shù)為SA=202.120.225.9,S-port=80,DA=202.120.224.2,D-port=1024.(S11)轉(zhuǎn)換后參數(shù)為SA=PREFIX202.120.225.9,S-port=2002,DA=FEDCBA98∷76543210,D-port=2300.(S12)Table 3會話表(3)
權(quán)利要求
1.一種支持IPv4和Ipv6兩類網(wǎng)絡(luò)互訪的ENAT-PT協(xié)議,其特征在于由三個部分組成(1)ENAT,增強(qiáng)的NAT機(jī)制,處理入站會話;(2)NAPT,處理出站會話;(3)PT,兩種協(xié)議之間的轉(zhuǎn)換;其中,ENAT的基本方法如下會話建立前,源節(jié)點H1發(fā)起一個DNS請求到DNS服務(wù)器請求獲得H2的地址,ENAT-PT網(wǎng)關(guān)截獲DNS響應(yīng),并從地址池中取得一個未被綁定的臨時IPv4地址REG1與返回H2的地址ADDR2綁定到一起,同時將REG1作為H2的地址返回給H1,V4主機(jī)H1以REG1作為服務(wù)器地址發(fā)起會話請求,ENAT-PT網(wǎng)關(guān)在會話建立后就釋放臨時IPv4地址,而非在會話結(jié)束后才釋放臨時地址。
2.根據(jù)權(quán)利要求1所述的ENAT-PT協(xié)議,其特征在于為了區(qū)分到不同V6節(jié)點的不同會話,ENAT引入會話參數(shù)并維護(hù)一個會話表;ENAT-PT網(wǎng)關(guān)截獲到某個會話的第一個數(shù)據(jù)包以后,在會話表中建立起一個新的表項,該表項的形式為V4主機(jī)地址、V4主機(jī)端口、映射地址、V6主機(jī)地址、V6主機(jī)端口。
3.根據(jù)權(quán)利要求2所述的ENAT-PT協(xié)議,其特征在于ENAT的具體步驟如下(1)V4客戶機(jī)在需要訪問V6主機(jī)時使用DNS查詢V6的IP地址;(2)截獲DNS的響應(yīng),從空閑的臨時地址池中選擇一個V4地址REG1,將DNS中V6主機(jī)的地址IV6替換為REG1,返回給V4客戶,同時建立地址綁定(IV6,REG1)放入綁定列表;(3)關(guān)收到V4的數(shù)據(jù)報后,根據(jù)報文參數(shù)檢查會話表,(a)如果有該會話的會話項,則進(jìn)行協(xié)議轉(zhuǎn)換操作,將報文轉(zhuǎn)換為IPv6格式,將會話項中的IV6地址作為V6的目標(biāo)地址;(b)如果沒有相關(guān)會話項,則根據(jù)報文的IPv4目的地址查詢綁定列表,①如果沒有相關(guān)綁定,則轉(zhuǎn)換失敗;②如果有綁定,(A)如果是TCP連接建立報文或UDP或ICMP報文則根據(jù)報文信息和綁定,在會話表中建立會話項(V4主機(jī)地址,V4主機(jī)端口,映射地址,V6主機(jī)地址,V6主機(jī)端口),釋放該綁定,并進(jìn)行協(xié)議轉(zhuǎn)換;(B)否則是錯誤或超時報文,丟棄;(c)如果是結(jié)束報文則,釋放會話項;(4)網(wǎng)關(guān)收到V6的數(shù)據(jù)報后,根據(jù)報文參數(shù)檢查會話表,如果有會話項則進(jìn)行協(xié)議轉(zhuǎn)換,將報文轉(zhuǎn)換為IPv4格式,將會話項中的REG1地址作為V4的源地址,系統(tǒng)通過超時機(jī)制來回收資源當(dāng)綁定超時是,要釋放綁定,使得地址可重用,當(dāng)會話超時時釋放會話項。
4.根據(jù)權(quán)利要求3所述的ENAT-PT協(xié)議,其特征在于通過擴(kuò)展NAPT的映射參數(shù),使ENAT在進(jìn)行端口映射時采用源地址、源端口、目的地址、目的端口四個參數(shù)來映射一個數(shù)據(jù)包,從而統(tǒng)一ENAT和NAPT對報文的處理過程。
全文摘要
本發(fā)明屬計算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體為一種能夠?qū)崿F(xiàn)IPV4和IPV6兩類網(wǎng)絡(luò)高效互訪的ENAT-PT協(xié)議,由ENAT、NAPT、PT三部分構(gòu)成。它成功地解決了IPV4網(wǎng)絡(luò)和IPV6網(wǎng)絡(luò)的互訪,并可用少量的IPV4地址就支持網(wǎng)絡(luò)互連。
文檔編號H04L29/02GK1380773SQ0211148
公開日2002年11月20日 申請日期2002年4月25日 優(yōu)先權(quán)日2002年4月25日
發(fā)明者凌力 申請人:復(fù)旦大學(xué)