專利名稱:在pat模式下同時支持一對一和多對多的地址轉(zhuǎn)換方法
技術領域:
本發(fā)明涉及網(wǎng)絡系統(tǒng)中的地址轉(zhuǎn)換方法。
目前,互聯(lián)網(wǎng)地址分配組織規(guī)定以下的三類網(wǎng)絡地址保留用做私有地址從10.0.0.0到10.255.255.255、從172.16.0.0到172.31.255.255以及從192.168.0.0到192.168.255.255。在局域網(wǎng)內(nèi)部,使用上述范圍的“私有地址”作為局域網(wǎng)內(nèi)部的地址。通過地址轉(zhuǎn)換技術,可以使這個內(nèi)部局域網(wǎng)的主機訪問Internet。所述的地址轉(zhuǎn)換技術需要用戶配置地址池和轉(zhuǎn)換方式。地址池是由一些外部地址,即合法的Internet地址組合而成,局域網(wǎng)內(nèi)部的數(shù)據(jù)包通過地址轉(zhuǎn)換發(fā)往外部網(wǎng)絡時,將會選擇地址池中的某個地址作為轉(zhuǎn)換后的源地址。這樣,使局域網(wǎng)內(nèi)部的主機不需要都擁有合法的公有IP地址就可以訪問Internet,大大節(jié)約了合法的IP地址。
地址轉(zhuǎn)換有NAT和端口地址轉(zhuǎn)換(PAT,port address tranlation)兩種方式。NAT方式即通常的一對一的地址轉(zhuǎn)換,在這種方式下,每一個內(nèi)部主機要占用地址池中的一個IP地址,當?shù)刂烦貎?nèi)的地址被用盡時,就不能允許其它主機訪問Internet。因此,NAT方式只允許若干個主機同時訪問Internet,其數(shù)目限于地址池的大小。PAT方式的地址轉(zhuǎn)換使用了TCP/UDP的端口信息,用“地址+端口”來區(qū)分局域網(wǎng)內(nèi)部的主機對外發(fā)起的不同連接,即要轉(zhuǎn)換數(shù)據(jù)包中的源地址也要轉(zhuǎn)換端口信息,因此局域網(wǎng)內(nèi)部的許多主機可以共享一個IP地址訪問Internet,這樣能允許更多的內(nèi)部主機同時訪問Internet。顯然,PAT方式的地址轉(zhuǎn)換只適合TCP/UDP協(xié)議。
對于有些特殊的應用協(xié)議,如NetBios(NetBIOS over TCP/IP,基于TCP/IP的網(wǎng)絡基本輸入輸出系統(tǒng))協(xié)議,要求在兩個主機之間只能建立一對一的連接,即在PAT轉(zhuǎn)換方式下,如果根據(jù)“地址+端口”來區(qū)分內(nèi)部局域網(wǎng)的主機對外發(fā)起的不同連接將會導致訪問失敗。因此,在實際應用環(huán)境下,對于配置為PAT方式的地址轉(zhuǎn)換,同時又要求支持類似NetBios協(xié)議的一對一的地址轉(zhuǎn)換,這在現(xiàn)有的地址轉(zhuǎn)換方法中是無法實現(xiàn)的。
為達到上述目的,本發(fā)明提供的在PAT模式下同時支持一對一和多對多的地址轉(zhuǎn)換方法,包括步驟1確定地址轉(zhuǎn)換所支持的應用協(xié)議類型和該協(xié)議所對應的地址轉(zhuǎn)換應采用的散列(HASH)算法,;步驟2建立一個數(shù)組,將該數(shù)組分為兩部分,分別為一對一轉(zhuǎn)換部分和端口地址轉(zhuǎn)換(PAT)部分,其中,一對一地址轉(zhuǎn)換部分用于存儲指向一對一地址轉(zhuǎn)換單元的索引指針,端口地址轉(zhuǎn)換部分用于存儲指向端口地址轉(zhuǎn)換單元的索引指針;步驟3當對傳送的報文進行地址轉(zhuǎn)換時,如果報文對應的應用協(xié)議需要一對一的地址轉(zhuǎn)換,根據(jù)該報文應用協(xié)議所對應的散列算法在索引數(shù)組的一對一轉(zhuǎn)換部分找到指向地址轉(zhuǎn)換記錄的索引指針,從而完成一對一的地址轉(zhuǎn)換;如果報文對應的應用協(xié)議需要支持PAT方式的地址轉(zhuǎn)換,根據(jù)報文協(xié)議對應的散列算法在索引數(shù)組的端口地址轉(zhuǎn)換部分找到指向端口地址轉(zhuǎn)換單元的索引指針,從而完成IP地址和端口的轉(zhuǎn)換。
步驟2所述數(shù)組為二維數(shù)組,數(shù)組的一維下標為公網(wǎng)IP地址池的IP地址,另一維下標,對于數(shù)組的一對一轉(zhuǎn)換部分,為支持一對一轉(zhuǎn)換的協(xié)議類型;對于端口地址轉(zhuǎn)換部分,為與公網(wǎng)端口號有一一對應關系的標識。
所述步驟3還包括根據(jù)報文的IP協(xié)議號和端口號確定應用協(xié)議類型,再根據(jù)應用協(xié)議類型確定其對應的散列算法。
當報文由私網(wǎng)發(fā)往Internet時,地址轉(zhuǎn)換將私網(wǎng)IP地址轉(zhuǎn)換為公網(wǎng)IP地址,對此,步驟3所述完成一對一的地址轉(zhuǎn)換通過下述過程實現(xiàn)按照報文的協(xié)議類型在數(shù)組的一對一轉(zhuǎn)換部分確定數(shù)組的一維,在該維的公網(wǎng)IP地址中,采用協(xié)議對應的散列算法確定其中的一個地址為轉(zhuǎn)移后的地址。
當報文由私網(wǎng)發(fā)往Internet時,地址轉(zhuǎn)換將私網(wǎng)IP地址轉(zhuǎn)換為公網(wǎng)IP地址,對此,步驟3所述完成IP地址和端口的轉(zhuǎn)換通過下述過程實現(xiàn)在數(shù)組的端口地址轉(zhuǎn)換部分,采用協(xié)議對應的散列算法在數(shù)組的由公網(wǎng)IP地址標識的一維中,確定其中的一個地址為轉(zhuǎn)移后的地址,再利用該散列算法在數(shù)組的另一維中確定轉(zhuǎn)換后的新端口。
步驟3還包括當報文IP地址的轉(zhuǎn)換是首次從私網(wǎng)IP地址向公網(wǎng)IP地址的轉(zhuǎn)換時,建立該轉(zhuǎn)換對應的轉(zhuǎn)換單元,所述轉(zhuǎn)換單元用于存儲IP地址轉(zhuǎn)換信息,該信息包括報文的私網(wǎng)IP地址、私網(wǎng)端口號,轉(zhuǎn)換后的公網(wǎng)IP地址、公網(wǎng)端口號,報文的協(xié)議類型。
當報文IP地址的轉(zhuǎn)換是從公網(wǎng)IP地址向私網(wǎng)IP地址的轉(zhuǎn)換時,步驟3所述完成一對一的IP地址轉(zhuǎn)換,以及完成IP地址和端口的轉(zhuǎn)換通過下述過程實現(xiàn)根據(jù)報文采用的協(xié)議及其對應的散列算法,在數(shù)組中找到對應的數(shù)組元素,根據(jù)該數(shù)組元素存儲的索引指針,找到該指針指向的轉(zhuǎn)換單元,根據(jù)轉(zhuǎn)換單元找到轉(zhuǎn)換后的私網(wǎng)IP地址和私網(wǎng)端口號。
本發(fā)明提供的另一種在PAT模式下同時支持一對一和多對多的地址轉(zhuǎn)換方法,包括步驟A1確定地址轉(zhuǎn)換所支持的應用協(xié)議類型和該協(xié)議所對應的地址轉(zhuǎn)換應采用的散列(HASH)算法;步驟A2建立一對一轉(zhuǎn)換表和端口地址轉(zhuǎn)換(PAT)表,其中,一對一地址轉(zhuǎn)換表用于存儲指向一對一地址轉(zhuǎn)換單元的索引指針,端口地址轉(zhuǎn)換表用于存儲指向端口地址轉(zhuǎn)換單元的索引指針;步驟A3當對傳送的報文進行地址轉(zhuǎn)換時,如果報文對應的應用協(xié)議需要一對一的地址轉(zhuǎn)換,根據(jù)該報文應用協(xié)議所對應的散列算法在一對一轉(zhuǎn)換表找到指向地址轉(zhuǎn)換記錄的索引指針,從而完成一對一的地址轉(zhuǎn)換;如果報文對應的應用協(xié)議需要支持PAT方式的地址轉(zhuǎn)換,根據(jù)報文協(xié)議對應的散列算法在端口地址轉(zhuǎn)換表找到指向端口地址轉(zhuǎn)換單元的索引指針,從而完成IP地址和端口的轉(zhuǎn)換。
采用上述方案,與一對一IP地址轉(zhuǎn)換方式相比,其優(yōu)點在于
(1)節(jié)約IP地址資源的效果好。如果某一個IP地址被分配用于一對一的地址轉(zhuǎn)換,則該地址不能再被復用;如果地址池資源被耗盡,由于沒有IP地址可用,不能進行后續(xù)報文的地址轉(zhuǎn)換。用本發(fā)明的方法,不同類型的協(xié)議的報文仍可復用該地址,即使這些協(xié)議需要一對一的地址轉(zhuǎn)換,仍可成功復用;如果某種協(xié)議報文需要一對一的地址轉(zhuǎn)換,地址池長度才限制該種協(xié)議的連接總數(shù),可支持的最大連接數(shù)等于地址池長度;如果一種協(xié)議的連接總數(shù)已達到上限,并不影響其它協(xié)議的地址轉(zhuǎn)換。
(2)具有更好的安全性。如果采用一對一的IP地址轉(zhuǎn)換方式,某一個地址被專門分配用于一對一的地址轉(zhuǎn)換,由于不區(qū)分協(xié)議類型,那么各種協(xié)議的報文均可通過此地址從外部進入內(nèi)部網(wǎng)絡。采用本發(fā)明的方法,由于不同的協(xié)議使用的散列算法各不相同,只有相應協(xié)議的報文根據(jù)其對應的散列算法才能查找到對應的地址轉(zhuǎn)換單元,使報文進入內(nèi)部網(wǎng)絡。這樣,PAT方式的地址轉(zhuǎn)換具有更好的安全性。
(3)使用本發(fā)明的方法能適應不同協(xié)議的IP地址轉(zhuǎn)換要求。
圖1是本發(fā)明所述方法的實施例流程圖。圖1所述的方法采用與報文協(xié)議相關的散列算法,將PAT方式的地址轉(zhuǎn)換和一對一的轉(zhuǎn)換散列到同一個數(shù)據(jù)結構內(nèi)使用了不同的散列算法,具體采用哪一種散列算法,取決于應用協(xié)議的類型。
按照圖1,首先在步驟1確定地址轉(zhuǎn)換所支持的協(xié)議類型和協(xié)議類型所對應的IP地址轉(zhuǎn)換采用的散列(HASH)算法,以及確定IP地址轉(zhuǎn)換使用的公網(wǎng)IP地址池和公網(wǎng)端口的集合;為實現(xiàn)步驟1,體現(xiàn)“應用協(xié)議的注冊性”,在步驟1的實現(xiàn)中,在路由器上創(chuàng)建應用協(xié)議注冊表,這是一個全局的表,其中每條記錄唯一標識了一種應用協(xié)議,同時在該記錄內(nèi)記錄的信息還包括IP協(xié)議號、知名端口號,以便根據(jù)IP協(xié)議號和知名端口號可以識別應用協(xié)議的類型。同時,在每一條記錄內(nèi)為每一種應用協(xié)議注冊一個散列算法的標識,以便在地址轉(zhuǎn)換過程中,根據(jù)協(xié)議內(nèi)注冊的算法標識選用不同的散列算法,確保正確查找到該應用協(xié)議的轉(zhuǎn)換單元的索引指針。
在步驟2建立一個二維數(shù)組,將該數(shù)組分為兩部分,分別為一對一轉(zhuǎn)換部分和端口地址轉(zhuǎn)換(PAT)部分,所述端口地址轉(zhuǎn)換(PAT)部分即為多對多地址轉(zhuǎn)換部分;其中,一對一地址轉(zhuǎn)換部分用于存儲指向一對一地址轉(zhuǎn)換單元的索引指針,端口地址轉(zhuǎn)換部分用于存儲指向端口地址轉(zhuǎn)換單元的索引指針,參考圖2。圖2中,索引表的右半部分用于索引PAT方式地址轉(zhuǎn)換單元,左半部分用于索引一對一地址轉(zhuǎn)換單元。圖2中,數(shù)組的一維下標(行下標)為公網(wǎng)IP地址池的IP地址,另一維下標(列下標),對于數(shù)組的一對一轉(zhuǎn)換部分,為支持一對一轉(zhuǎn)換的協(xié)議類型;對于端口地址轉(zhuǎn)換部分,為與公網(wǎng)端口號有一一對應關系的標識,該標識在本例中直接采用公網(wǎng)端口號。實際中,對于端口地址轉(zhuǎn)換部分,上述另一維下標也可以為與公網(wǎng)端口號沒有一一對應關系的標識,這時,采用其它方式獲取公網(wǎng)端口號。
在PAT方式下進行一對一的地址轉(zhuǎn)換,使用數(shù)組的左半部分來存儲轉(zhuǎn)換單元的索引指針。由于一對一的地址轉(zhuǎn)換只區(qū)分地址,即只用到了索引數(shù)組的第一維Index1,而第二維Index2沒有變化,因此要在注冊散列算法時指定使用哪一列索引轉(zhuǎn)換單元。當有來自內(nèi)部主機的訪問時,將在第對應的那一列內(nèi)查找空的索引位置,如果找到,就創(chuàng)建地址轉(zhuǎn)換單元完成一對一的地址轉(zhuǎn)換;如果沒有空的索引位置,表明地址池中的地址已經(jīng)分配完,不能繼續(xù)再進行一對一的地址轉(zhuǎn)換。
對“地址+端口”模式的PAT轉(zhuǎn)換,指向地址轉(zhuǎn)換單元的指針被散列到數(shù)組的右半部分,要使用PAT模式對應的散列算法來定位二維數(shù)組的Index1和Index2,然后根據(jù)Index1獲取轉(zhuǎn)換后的IP地址,根據(jù)Index2計算出轉(zhuǎn)換后的新端口。
在本實施例中,為一對一地址轉(zhuǎn)換預留了多列索引指針的存儲空間,由于一對一的地址轉(zhuǎn)換只需要索引數(shù)組內(nèi)的一列來索引,這樣可以支持多種協(xié)議進行一對一轉(zhuǎn)換。換句話說,如果有另一種協(xié)議需要一對一轉(zhuǎn)換,只要為該協(xié)議再分配一列來容納該協(xié)議的指向轉(zhuǎn)換單元的指針就可以了。例如要支持ILS(Internet Locator Service,Internet定位服務)協(xié)議,那么可以把第二列分配給該協(xié)議用于索引散列表。
基于上述步驟,在步驟3當對傳送的報文進行IP地址轉(zhuǎn)換時,首先要根據(jù)報文的IP協(xié)議號和端口號確定協(xié)議類型,再根據(jù)協(xié)議類型確定其對應的散列算法。即,在收到IP報文后,根據(jù)報文的IP協(xié)議號和端口號在應用協(xié)議注冊表查找協(xié)議的類型,如果查找到是已注冊的協(xié)議,則從該協(xié)議對應記錄中取得對應的散列算法標識,用該標識對應的散列算法查找二維數(shù)組中的轉(zhuǎn)換單元指針;如果是未注冊的協(xié)議,則使用默認的散列算法進行查找。
如果報文采用的協(xié)議支持一對一轉(zhuǎn)換,在數(shù)組的一對一轉(zhuǎn)換部分根據(jù)報文協(xié)議對應的散列算法找到指向一對一地址轉(zhuǎn)換單元的索引指針,從而完成一對一的IP地址轉(zhuǎn)換;如果報文采用的協(xié)議支持端口地址轉(zhuǎn)換,在數(shù)組的端口地址轉(zhuǎn)換部分根據(jù)報文協(xié)議對應的散列算法找到指向端口地址轉(zhuǎn)換單元的索引指針,從而完成IP地址和端口的轉(zhuǎn)換。
在上述轉(zhuǎn)換過程中,當報文IP地址的轉(zhuǎn)換是從私網(wǎng)IP地址向公網(wǎng)IP地址的轉(zhuǎn)換時,完成一對一的IP地址轉(zhuǎn)換通過下述過程實現(xiàn)按照報文的協(xié)議類型在數(shù)組的一對一轉(zhuǎn)換部分確定數(shù)組的一維,在該維的公網(wǎng)IP地址中,采用協(xié)議對應的散列算法確定其中的一個地址為轉(zhuǎn)移后的地址。
當報文IP地址的轉(zhuǎn)換是從私網(wǎng)IP地址向公網(wǎng)IP地址的轉(zhuǎn)換時,完成IP地址和端口的轉(zhuǎn)換通過下述過程實現(xiàn)在數(shù)組的端口地址轉(zhuǎn)換部分,采用協(xié)議對應的散列算法在數(shù)組的由公網(wǎng)IP地址標識的一維中,確定其中的一個地址為轉(zhuǎn)移后的地址;再利用該散列算法在數(shù)組的另一維中確定轉(zhuǎn)換后的新端口。
本例中,無論是一對一模式的IP地址轉(zhuǎn)換,還是PAT模式的IP地址轉(zhuǎn)換,當報文IP地址的轉(zhuǎn)換是首次從私網(wǎng)IP地址向公網(wǎng)IP地址的轉(zhuǎn)換時,建立該轉(zhuǎn)換對應的轉(zhuǎn)換單元,所述轉(zhuǎn)換單元用于存儲IP地址轉(zhuǎn)換信息,該信息包括報文的私網(wǎng)IP地址、私網(wǎng)端口號,轉(zhuǎn)換后的公網(wǎng)IP地址、公網(wǎng)端口號,報文的協(xié)議類型、轉(zhuǎn)換時間等。
當報文IP地址的轉(zhuǎn)換是從公網(wǎng)IP地址向私網(wǎng)IP地址的轉(zhuǎn)換時,完成一對一的IP地址轉(zhuǎn)換,以及完成IP地址和端口的轉(zhuǎn)換通過下述過程實現(xiàn)根據(jù)報文采用的協(xié)議及其對應的散列算法,在數(shù)組中找到對應的數(shù)組元素,根據(jù)該數(shù)組元素存儲的索引指針,找到該指針指向的轉(zhuǎn)換單元,根據(jù)轉(zhuǎn)換單元找到轉(zhuǎn)換后的私網(wǎng)IP地址和私網(wǎng)端口號,從而完成轉(zhuǎn)換。
下面通過圖1所述實施例的具體地址轉(zhuǎn)換應用對本發(fā)明作進一步說明。假定NAT轉(zhuǎn)換WWW、TELNET、NetBios、ILS四種應用協(xié)議的報文,這四種應用協(xié)議使用的協(xié)議號和知名端口號如下WWWTCP協(xié)議,端口號80;TELNET;TCP協(xié)議,端口號23;NetBiosUDP協(xié)議,端口號137;ILSTCP協(xié)議,端口號389;通過分析這幾種協(xié)議,可以確定,WWW、TELNET可以使用PAT方式的地址轉(zhuǎn)換;NetBios、ILS由于協(xié)議的特殊性需要進行一對一的地址轉(zhuǎn)換,無法進行PAT方式的轉(zhuǎn)換(使用PAT方式的地址轉(zhuǎn)換沒有實際意義)。按照上述確定的內(nèi)容,首先應完成下述三個步驟的工作(1)注冊應用協(xié)議。在路由器啟動時,創(chuàng)建“應用協(xié)議注冊表”,這是一個全局的表,其中每個注冊表項唯一標識了一種應用協(xié)議。在該表項內(nèi)記錄了協(xié)議號、知名端口號及該協(xié)議使用的地址轉(zhuǎn)換散列算法(HASH算法);
(2)配置地址轉(zhuǎn)換。配置地址轉(zhuǎn)換將接入列表(access-list)與地址池相關聯(lián),確定了有哪些合法的公網(wǎng)地址可供地址轉(zhuǎn)換使用,這時創(chuàng)建二維索引數(shù)組。
(3)對報文進行地址轉(zhuǎn)換。根據(jù)報文的轉(zhuǎn)發(fā)方向,地址轉(zhuǎn)換可分為從內(nèi)部私網(wǎng)向外部公網(wǎng)轉(zhuǎn)發(fā)的流程和從外部公網(wǎng)向內(nèi)部私網(wǎng)轉(zhuǎn)發(fā)的流程,這兩個地址轉(zhuǎn)換過程是對稱的。
當數(shù)據(jù)報文由私網(wǎng)向公網(wǎng)轉(zhuǎn)發(fā)時步驟21地址轉(zhuǎn)換模塊收到IP層轉(zhuǎn)來的報文后,根據(jù)訪問控制列表判斷是否要對該報文進行地址轉(zhuǎn)換,如果不需要轉(zhuǎn)換就直接轉(zhuǎn)發(fā),如果需要轉(zhuǎn)換則進入步驟22;步驟22查找應用協(xié)議注冊表。對于內(nèi)部主機訪問Internet服務器,只需要根據(jù)IP協(xié)議號和目的端口查找應用協(xié)議注冊表項。例如如果是WWW報文,取報文內(nèi)的IP協(xié)議號和目的端口號(應為知名端口80),在協(xié)議注冊表內(nèi)進行查找。
步驟23確定散列算法。在步驟22內(nèi)查找到應用協(xié)議的注冊表項,該表項內(nèi)記錄了此種協(xié)議應使用的散列算法標識。例如WWW協(xié)議的散列算法標識為PAT方式的地址轉(zhuǎn)換,而NetBios協(xié)議的散列算法標識為NAT NetBios(該散列算法標識指定了使用一對一方式的地址轉(zhuǎn)換,且定義了散列位置,假定指定二維數(shù)組中的第一列來存儲),ILS協(xié)議的散列算法標識為NAT_ILS(也指定了一對一方式的地址轉(zhuǎn)換,指定二維數(shù)組的第二列來存儲),如果沒有查找到協(xié)議注冊表項,使用默認的散列算法,實際使用了PAT散列。換句話說,可以不注冊WWW協(xié)議,最后使用的散列算法仍然是PAT方式。
步驟24查找轉(zhuǎn)換單元。取報文的源地址(端口)信息,根據(jù)步驟23中確定的散列算法標識去查找地址轉(zhuǎn)換單元,如果未找到,就根據(jù)配置的地址轉(zhuǎn)換創(chuàng)建一個新的地址轉(zhuǎn)換單元,創(chuàng)建時也使用了步驟23確定的散列算法標識。該地址轉(zhuǎn)換單元內(nèi)記錄了私有的地址(端口)和合法的Internet地址(端口)信息。
步驟25根據(jù)地址轉(zhuǎn)換單元記錄的信息,將報文的源地址轉(zhuǎn)換為合法的Internet地址。
當數(shù)據(jù)報文由公網(wǎng)向私網(wǎng)轉(zhuǎn)發(fā)的流程時步驟31查找應用協(xié)議注冊表。由于報文是從Internet服務器發(fā)往內(nèi)部主機的,報文的源端口應為知名端口,取報文IP協(xié)議號和源端口查找應用協(xié)議注冊表項。
步驟32確定散列算法。
步驟33取根據(jù)報文的目的地址、目的端口和上一步確定的地址轉(zhuǎn)換散列算法到地址轉(zhuǎn)換單元里面查找地址轉(zhuǎn)換記錄,如果沒有相應的地址轉(zhuǎn)換散列表,則不進行NAT轉(zhuǎn)換,將報文直接轉(zhuǎn)發(fā)。
步驟34如果查找到了相應的地址轉(zhuǎn)換單元,根據(jù)地址轉(zhuǎn)換單元記錄的信息,將報文的目的地址和端口轉(zhuǎn)換為私網(wǎng)地址。
需要說明的是,在本發(fā)明的具體實施中,所述二維數(shù)組也可以用兩張表代替,在基于上二表的在PAT模式下同時支持一對一和多對多的地址轉(zhuǎn)換方法中,其包括的內(nèi)容為
首先確定地址轉(zhuǎn)換所支持的應用協(xié)議類型和該協(xié)議所對應的地址轉(zhuǎn)換應采用的散列(HASH)算法;然后建立一對一轉(zhuǎn)換表和端口地址轉(zhuǎn)換(PAT)表,其中,一對一地址轉(zhuǎn)換表用于存儲指向一對一地址轉(zhuǎn)換單元的索引指針,端口地址轉(zhuǎn)換表用于存儲指向端口地址轉(zhuǎn)換單元的索引指針;這樣,當對傳送的報文進行地址轉(zhuǎn)換時,根據(jù)報文的IP協(xié)議號和端口號確定應用協(xié)議類型,再根據(jù)應用協(xié)議類型確定其對應的散列算法,如果報文對應的應用協(xié)議需要一對一的地址轉(zhuǎn)換,根據(jù)該報文應用協(xié)議所對應的散列算法在一對一轉(zhuǎn)換表找到指向地址轉(zhuǎn)換記錄的索引指針,從而完成一對一的地址轉(zhuǎn)換;如果報文對應的應用協(xié)議需要支持PAT方式的地址轉(zhuǎn)換,根據(jù)報文協(xié)議對應的散列算法在端口地址轉(zhuǎn)換表找到指向端口地址轉(zhuǎn)換單元的索引指針,從而完成IP地址和端口的轉(zhuǎn)換。
對于上述一對一轉(zhuǎn)換表來說,該表的一維下標為公網(wǎng)IP地址池的IP地址,另一維下標,為支持一對一轉(zhuǎn)換的協(xié)議類型;對于端口地址轉(zhuǎn)換表,該表的一維下標為公網(wǎng)IP地址池的IP地址,另一維下標為公網(wǎng)端口號,當然也可以為與公網(wǎng)端口號有一一對應關系的標識或者其它與公網(wǎng)端口號沒有一一對應關系的標識,在該標識與公網(wǎng)端口號沒有關系時,采用其它的方法獲取公網(wǎng)端口號。
權利要求
1.在PAT模式下同時支持一對一和多對多的地址轉(zhuǎn)換方法,包括步驟1確定地址轉(zhuǎn)換所支持的應用協(xié)議類型和該協(xié)議所對應的地址轉(zhuǎn)換應采用的散列(HASH)算法;步驟2建立一個數(shù)組,將該數(shù)組分為兩部分,分別為一對一轉(zhuǎn)換部分和端口地址轉(zhuǎn)換(PAT)部分,其中,一對一地址轉(zhuǎn)換部分用于存儲指向一對一地址轉(zhuǎn)換單元的索引指針,端口地址轉(zhuǎn)換部分用于存儲指向端口地址轉(zhuǎn)換單元的索引指針;步驟3當對傳送的報文進行地址轉(zhuǎn)換時,如果報文對應的應用協(xié)議需要一對一的地址轉(zhuǎn)換,根據(jù)該報文應用協(xié)議所對應的散列算法在索引數(shù)組的一對一轉(zhuǎn)換部分找到指向地址轉(zhuǎn)換記錄的索引指針,從而完成一對一的地址轉(zhuǎn)換;如果報文對應的應用協(xié)議需要支持PAT方式的地址轉(zhuǎn)換,根據(jù)報文協(xié)議對應的散列算法在索引數(shù)組的端口地址轉(zhuǎn)換部分找到指向端口地址轉(zhuǎn)換單元的索引指針,從而完成IP地址和端口的轉(zhuǎn)換。
2.根據(jù)權利要求1所述的同時支持一對一和多對多的地址轉(zhuǎn)換方法,其特征在于步驟2所述數(shù)組為二維數(shù)組,數(shù)組的一維下標為公網(wǎng)IP地址池的IP地址,另一維下標,對于數(shù)組的一對一轉(zhuǎn)換部分,為支持一對一轉(zhuǎn)換的協(xié)議類型;對于端口地址轉(zhuǎn)換部分,為與公網(wǎng)端口號有一一對應關系的標識。
3.根據(jù)權利要求2所述的同時支持一對一和多對多的地址轉(zhuǎn)換方法,其特征在于所述步驟3還包括根據(jù)報文的IP協(xié)議號和端口號確定應用協(xié)議類型,再根據(jù)應用協(xié)議類型確定其對應的散列算法。
4.根據(jù)權利要求3所述的同時支持一對一和多對多的地址轉(zhuǎn)換方法,其特征在于,當報文由私網(wǎng)發(fā)往Internet時,地址轉(zhuǎn)換將私網(wǎng)IP地址轉(zhuǎn)換為公網(wǎng)IP地址,對此,步驟3所述完成一對一的地址轉(zhuǎn)換通過下述過程實現(xiàn)按照報文的協(xié)議類型在數(shù)組的一對一轉(zhuǎn)換部分確定數(shù)組的一維,在該維的公網(wǎng)IP地址中,采用協(xié)議對應的散列算法確定其中的一個地址為轉(zhuǎn)移后的地址。
5.根據(jù)權利要求3所述的同時支持一對一和多對多的地址轉(zhuǎn)換方法,其特征在于,當報文IP地址的轉(zhuǎn)換是從私網(wǎng)IP地址向公網(wǎng)IP地址的轉(zhuǎn)換時,步驟3所述完成IP地址和端口的轉(zhuǎn)換通過下述過程實現(xiàn)在數(shù)組的端口地址轉(zhuǎn)換部分,采用協(xié)議對應的散列算法在數(shù)組的由公網(wǎng)IP地址標識的一維中,確定其中的一個地址為轉(zhuǎn)換后的地址,再利用該散列算法在數(shù)組的另一維中確定轉(zhuǎn)換后的新端口。
6.根據(jù)權利要求4或5所述的同時支持一對一和多對多的地址轉(zhuǎn)換方法,其特征在于步驟3還包括當報文IP地址的轉(zhuǎn)換是首次從私網(wǎng)IP地址向公網(wǎng)IP地址的轉(zhuǎn)換時,建立該轉(zhuǎn)換對應的轉(zhuǎn)換單元,所述轉(zhuǎn)換單元用于存儲IP地址轉(zhuǎn)換信息,該信息包括報文的私網(wǎng)IP地址、私網(wǎng)端口號,轉(zhuǎn)換后的公網(wǎng)IP地址、公網(wǎng)端口號,報文的協(xié)議類型。
7.根據(jù)權利要求6所述的同時支持一對一和多對多的地址轉(zhuǎn)換方法,其特征在于,當報文IP地址的轉(zhuǎn)換是從公網(wǎng)IP地址向私網(wǎng)IP地址的轉(zhuǎn)換時,步驟3所述完成一對一的IP地址轉(zhuǎn)換,以及完成IP地址和端口的轉(zhuǎn)換通過下述過程實現(xiàn)根據(jù)報文采用的協(xié)議及其對應的散列算法,在數(shù)組中找到對應的數(shù)組元素,根據(jù)該數(shù)組元素存儲的索引指針,找到該指針指向的轉(zhuǎn)換單元,根據(jù)轉(zhuǎn)換單元找到轉(zhuǎn)換后的私網(wǎng)IP地址和私網(wǎng)端口號。
8.在PAT模式下同時支持一對一和多對多的地址轉(zhuǎn)換方法,包括步驟A1確定地址轉(zhuǎn)換所支持的應用協(xié)議類型和該協(xié)議所對應的地址轉(zhuǎn)換應采用的散列(HASH)算法;步驟A2建立一對一轉(zhuǎn)換表和端口地址轉(zhuǎn)換(PAT)表,其中,一對一地址轉(zhuǎn)換表用于存儲指向一對一地址轉(zhuǎn)換單元的索引指針,端口地址轉(zhuǎn)換表用于存儲指向端口地址轉(zhuǎn)換單元的索引指針;步驟A3當對傳送的報文進行地址轉(zhuǎn)換時,如果報文對應的應用協(xié)議需要一對一的地址轉(zhuǎn)換,根據(jù)該報文應用協(xié)議所對應的散列算法在一對一轉(zhuǎn)換表找到指向地址轉(zhuǎn)換記錄的索引指針,從而完成一對一的地址轉(zhuǎn)換;如果報文對應的應用協(xié)議需要支持PAT方式的地址轉(zhuǎn)換,根據(jù)報文協(xié)議對應的散列算法在端口地址轉(zhuǎn)換表找到指向端口地址轉(zhuǎn)換單元的索引指針,從而完成IP地址和端口的轉(zhuǎn)換。
9.根據(jù)權利要求8所述的同時支持一對一和多對多的地址轉(zhuǎn)換方法,其特征在于對于一對一轉(zhuǎn)換表,該表的一維下標為公網(wǎng)IP地址池的IP地址,另一維下標,為支持一對一轉(zhuǎn)換的協(xié)議類型;對于端口地址轉(zhuǎn)換表,該表的一維下標為公網(wǎng)IP地址池的IP地址,為與公網(wǎng)端口號有一一對應關系的標識。
10.根據(jù)權利要求9所述的同時支持一對一和多對多的地址轉(zhuǎn)換方法,其特征在于所述步驟A3還包括根據(jù)報文的IP協(xié)議號和端口號確定應用協(xié)議類型,再根據(jù)應用協(xié)議類型確定其對應的散列算法。
全文摘要
本發(fā)明公開了一種在PAT模式下同時支持一對一和多對多的地址轉(zhuǎn)換方法,該方法首先確定IP地址轉(zhuǎn)換所支持的協(xié)議類型及其對應的IP地址轉(zhuǎn)換采用的散列算法,以及確定IP地址轉(zhuǎn)換使用的公網(wǎng)IP地址池和公網(wǎng)端口的集合;其次,建立一個用于存儲分別指向一對一地址轉(zhuǎn)換單元和端口地址轉(zhuǎn)換單元的索引指針的二維數(shù)組,這樣,當對傳送的報文進行IP地址轉(zhuǎn)換時,根據(jù)報文采用的協(xié)議對應的散列算法在上述數(shù)組中找到指向相應地址轉(zhuǎn)換單元的索引指針,從而完成IP地址轉(zhuǎn)換;上述方案能適應不同協(xié)議的地址轉(zhuǎn)換要求。
文檔編號H04L12/28GK1477825SQ02128928
公開日2004年2月25日 申請日期2002年8月21日 優(yōu)先權日2002年8月21日
發(fā)明者王寧, 瞿祥明, 于光輝, 李健, 王 寧 申請人:華為技術有限公司