專利名稱:在地址轉(zhuǎn)換表中映射源端口的方法及網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種在地址轉(zhuǎn)換表中映射源端口的
方法及網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation, NAT )設(shè)備。
背景技術(shù):
隨著上網(wǎng)用戶不斷增加,公共因特網(wǎng)協(xié)議(Internet Protocol, IP )地址日 益緊缺。例如,占世界人口 56。/。的亞洲只有9%的地址,且中國人均僅有0.06 個IP地址。NAT技術(shù)便是解決IP地址短缺問題的最主要的技術(shù)手段。
NAT技術(shù)將多個內(nèi)網(wǎng)IP地址轉(zhuǎn)換成一個或者幾個公網(wǎng)IP地址,并通過 在NAT設(shè)備內(nèi)部管理一張保存有地址轉(zhuǎn)換對應(yīng)關(guān)系的轉(zhuǎn)換關(guān)系表進行內(nèi)外 網(wǎng)通信,實現(xiàn)了私有網(wǎng)絡(luò)訪問外部網(wǎng)絡(luò)的功能,同時又可以極大的減少使用 全局IP地址,達到節(jié)約IP地址的目的。
但是,由于NAT技術(shù)將多個內(nèi)網(wǎng)IP地址轉(zhuǎn)換成一個或者幾個公網(wǎng)IP地 址,使得公網(wǎng)IP地址的沖突非常大。為了處理這種沖突,NAT設(shè)備采用更換 IP、端口的方式來解決沖突,盡量利用現(xiàn)有資源盡可能多的實現(xiàn)地址轉(zhuǎn)換。 舉個簡單的例子,內(nèi)網(wǎng)用戶通過一個公網(wǎng)地址A上網(wǎng),訪問其他的公網(wǎng)地址。 發(fā)出去的報文目的地址不會被修改,因而內(nèi)網(wǎng)發(fā)送的報文最終能夠達到目的 地。但外網(wǎng)返回給內(nèi)網(wǎng)所有的用戶的報文的目的地址都是該公網(wǎng)地址A。 NAT 設(shè)備必須用該公網(wǎng)地址A以外的信息如端口來查找外網(wǎng)發(fā)送的報文是發(fā)給具 體哪個用戶,然后將目的地址修改成對應(yīng)的內(nèi)網(wǎng)用戶的IP地址,將外網(wǎng)發(fā)送 的報文順利的送達內(nèi)網(wǎng)的用戶。地址轉(zhuǎn)換關(guān)系表里面就記錄了地址轉(zhuǎn)換前的 IP地址、端口和地址轉(zhuǎn)換后的IP地址、端口的對應(yīng)關(guān)系,其中,不同的端口 代表去往不同的內(nèi)網(wǎng)用戶。如圖l所示,內(nèi)網(wǎng)用戶192.168.1.2從218.66.13.74這個公網(wǎng)IP地址出去 訪問61.233.3.211,從外網(wǎng)返回的報文目的地址自然就是218.66.13,74, NAT 設(shè)備根據(jù)返回的報文的源端口 1080,在地址轉(zhuǎn)換表里面查找得到對應(yīng)的地址 192.168.1.2。此時,NAT設(shè)備將目的地址修改為192.168.1.2并發(fā)送報文。當(dāng) 192.168.1.3也訪問61.233.3.211時,其IP地址同樣被轉(zhuǎn)換為218.66.13.74。此 時,地址轉(zhuǎn)換表里存在兩個218.66.13.74記錄,如果當(dāng)前記錄繼續(xù)使用1080 的端口,那么當(dāng)前記錄就會和前面的記錄沖突。因此,NAT設(shè)備將源端口修 改為1081,返回的報文中源端口如果是1081,就會查找到相應(yīng)的記錄,并 據(jù)此將報文的目的地址》務(wù)改成192.168.1.3。這樣,這兩個內(nèi)網(wǎng)用戶都可以順 利的訪問61.233.3.211 了。
圖1所示拓樸環(huán)境的應(yīng)用中,地址轉(zhuǎn)換關(guān)系表采用兩元組(源地址,源 端口)的方式組織,記錄內(nèi)容包括轉(zhuǎn)換前的源地址、源端口及轉(zhuǎn)換后的源 地址、源端口。但是,由于這里只有一個公網(wǎng)IP地址,端口只有65535個(16 位大小的字段),因此,地址轉(zhuǎn)換關(guān)系表僅能記錄65535個這樣的連接。也 就是說, 一個公網(wǎng)IP地址最多只能支持65535個用戶。并且,實際應(yīng)用中, 還需要保留大量端口以滿足一些特殊應(yīng)用,這樣,實際可使用的端口數(shù)量遠 遠小于65535個。而這樣的容量很難滿足現(xiàn)在的需要。
為了解決這個問題,大部分的NAT實現(xiàn)都采用五元組(源地址,源端口 , 目的地址,目的端口,協(xié)議)的方式組織地址轉(zhuǎn)換關(guān)系表。由于增加了目的 地址和目的端口、協(xié)議,因此,在源地址、源端口一致的情況下,只要目的 地址、目的端口或者協(xié)議中任何一個不同都不會沖突。沖突的概率相對于兩 元組小很多,允許的連接數(shù)量也會隨之?dāng)U大。然而,在某些極端情況下,五 元組方式下轉(zhuǎn)換地址時產(chǎn)生的沖突仍然很大。比如常見的c/s模式的應(yīng)用,大 量客戶端訪問服務(wù)器,而服務(wù)器的服務(wù)端口固定。也就是說,所有連接的目 的地址和目的端口都是一樣的。這時,出口資源只有一個公網(wǎng)IP地址的情況 下,五元組中有四個鍵值都是相同的,只有源端口可以區(qū)分連接,只要源端口一致就會產(chǎn)生沖突。這種情況下,客戶端越多,沖突的次數(shù)越多,易導(dǎo)致 出現(xiàn)大量的端口沖突。
現(xiàn)有技術(shù)中,采用遞增端口或輪換IP地址方式解決五元組方式下的地址 轉(zhuǎn)換沖突問題。
遞增端口的方式即每次沖突時將端口號加1重新查找沖突,是最簡單最 直接的方法。但是,這種方法隨著沖突次數(shù)的增加,復(fù)雜度也大大增加了。
如圖2所示,如果第一個連接沒有沖突只需要查找一次,第二個連接開始發(fā) 現(xiàn)沖突,需要查找兩次,第三個連接發(fā)現(xiàn)沖突需要查找三次,依此類推。每 出現(xiàn)一路新連接,查詢到?jīng)]有被使用的資源的次數(shù)就會遞增一次,那么第n 次查找的復(fù)雜度就是(1+2+3+......n)。這種查找將消耗大量的時間,并降低
新建連接的效率。
輪換IP地址的方式是在遞增端口的基礎(chǔ)上更改源IP地址,而這種方式 在實際中也不能解決根本問題。因為在可選源IP地址數(shù)量有限的情況下,沖 突的連接大于可選源IP地址數(shù)量的時候,仍然要通過遞增端口的方式來查找。 由于地址轉(zhuǎn)換表本身是個龐大的數(shù)據(jù)集合,沖突查找需要遍歷所有表項,大 大增加了計算量。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種在地址轉(zhuǎn)換表中映射源端口的方法及網(wǎng)絡(luò) 地址轉(zhuǎn)換設(shè)備,以解決極端情況下映射源端口的復(fù)雜度隨著沖突次數(shù)增加 的問題。
為實現(xiàn)上述目的,本發(fā)明提供了一種在地址轉(zhuǎn)換表中映射源端口的方 法,包括
將網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的源端口資源分區(qū);
在接收到的IP報文中的端口已被占用的情況下,將所述IP報文中的 端口映射到與所述IP報文中的端口相差整數(shù)個區(qū)間的源端口 ,所迷區(qū)間經(jīng)資源分區(qū)獲得。
本發(fā)明還提供了一種網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,包括
分區(qū)單元,用于將網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的源端口資源分區(qū);
接收單元,用于接收IP報文;
映射單元,用于在所述接收單元接收到的IP報文中的端口已被占用 的情況下,將所述IP報文中的端口映射到與所述IP報文中的端口相差整 數(shù)個區(qū)間的源端口,所述區(qū)間經(jīng)資源分區(qū)獲得。
所述分區(qū)單元可將所述源端口資源劃分為區(qū)間長度為100個或128個 端口的至少兩個源端口區(qū)間。
上述方案中,NAT設(shè)備通過將源端口資源分區(qū),并在首次沖突后,將 所述IP報文中的端口映射到與IP報文中的端口相差整數(shù)個區(qū)間的源端口 , 保證了每次沖突后查找的端口都落在不同的區(qū)間里面,解決了極端情況下 映射源端口的復(fù)雜度隨著沖突次數(shù)增加的問題,大大減少了查找次數(shù),提 高了查找有效源端口的命中率。并且,且NAT設(shè)備源端口的利用率也從 固定范圍擴大到了全部端口 ,提高了新建連接的效率,減少了極端情況出 現(xiàn)時出現(xiàn)無法建立連接的可能。
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
圖1為現(xiàn)有技術(shù)中的網(wǎng)絡(luò)拓樸示意圖2為現(xiàn)有技術(shù)中通過遞增端口映射源端口的示意圖3為本發(fā)明在地址轉(zhuǎn)換表中映射源端口的方法實施例的流程圖4為本發(fā)明在地址轉(zhuǎn)換表中映射源端口的方法實施例中區(qū)間長度為
128個端口且轉(zhuǎn)換前端口為1000時映射到的源端口示意圖5為本發(fā)明在地址轉(zhuǎn)換表中映射源端口的方法實施例中區(qū)間長度為
128個端口且轉(zhuǎn)換前端口為1001時映射到的源端口示意圖;圖6為本發(fā)明網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備實施例的結(jié)構(gòu)示意圖。
具體實施例方式
圖3為本發(fā)明在地址轉(zhuǎn)換表中映射源端口的方法實施例的流程圖,包
括
步驟31、 NAT設(shè)備將NAT設(shè)備的源端口資源分區(qū);具體可按源端口 資源的端口號大小順序分區(qū);也可按端口號的尾數(shù)分區(qū),如將端口號尾數(shù) 為1的端口分為一個區(qū)間。
步驟32、在接收到的IP報文中的端口已被占用的情況下,將所述IP 報文中的端口映射到與所述IP報文中的端口相差整數(shù)個區(qū)間的源端口 , 所述區(qū)間經(jīng)資源分區(qū)獲得。例如,將所述IP報文中的端口映射到端口號 為H的源端口;其中,H=h + mxl; h為所述IP l艮文中端口的端口號,m 可為已記錄的內(nèi)網(wǎng)IP地址數(shù)量,也可為隨機數(shù),l為源端口資源的區(qū)間長 度。
本實施例中,NAT設(shè)備通過將源端口資源分區(qū),并在首次沖突后,將 所述IP報文中的端口映射到與IP報文中的端口相差整數(shù)個區(qū)間的源端口 , 保證了每次沖突后查找的端口都落在不同的區(qū)間里面,大大減少了查找次 數(shù),提高了查找有效源端口的命中率。并且,且NAT設(shè)備源端口的利用 率也從固定范圍擴大到了全部端口 ,提高了新建連接的效率,減少了極端 情況出現(xiàn)時出現(xiàn)無法建立連接的可能。并且,在第一次端口遷移的時候命 中,從而避免了首次端口遷移的存在,減少首次端口遷移的沖突。
上述步驟31中,在五元組的沖突查找方式的基礎(chǔ)上,將NAT設(shè)備上 可用的源端口分為多個區(qū)間,例如100個端口 一個區(qū)間,有效端口是655 34個,總共656個區(qū)間。此時,上述步驟32中,NAT設(shè)備將端口號為h + mx 100的端口作為NAT設(shè)備進行地址轉(zhuǎn)換后的新的源端口 ,保證了每 次沖突查找的端口都落在不同的區(qū)間里面,減少了首次端口遷移的沖突。以源端口區(qū)間長度為128個端口為例,映射到的源端口如圖4所示。 假設(shè)可用的源端口為1000- 65512,共有55513個,則可分為434個區(qū)間。 當(dāng)NAT設(shè)備接收到來自內(nèi)網(wǎng)192.168.1.1的IP報文,且IP報文中的端口 為1000時,查找端口 1000所在的區(qū)間,由于不存在沖突,因此,進行地 址轉(zhuǎn)換時端口不變。當(dāng)NAT設(shè)備接收到來自內(nèi)網(wǎng)192.168.1.2的IP報文, 且IP才艮文中的端口為1000時,查找端口 1000所在的區(qū)間,此時,端口 1 000已凈皮192.168.1.1占用,且已記錄的內(nèi)網(wǎng)地址有一個,因此,將端口 1 000修改為1000+1 x 128=1128,即,將192.168.1.2的端口 1000映射到N AT設(shè)備的源端口 1128。當(dāng)NAT設(shè)備接收到來自內(nèi)網(wǎng)192.168.1.3的IP報 文,且IP報文中的端口仍為1000時,查找端口 1000所在的區(qū)間,此時, 端口 1000已被192.168.1.1占用,且已記錄的內(nèi)網(wǎng)地址有兩個,因此,將 端口 1000修改為1000+2 x 128=1256,即,將192.168.1.3的端口 1000映 射到NAT設(shè)備的源端口 1256。當(dāng)NAT設(shè)備接收到來自內(nèi)網(wǎng)192.168.1.4 的IP報文,且IP才艮文中的端口仍為1000時,查找端口 1000所在的區(qū)間, 此時,端口 1000已被192.168.1.1占用,且已記錄的內(nèi)網(wǎng)地址有三個,因 此,將端口 1000修改為1000+3 x 128=1384,即,將192.168.1.4的端口 1 000映射到NAT設(shè)備的源端口 1384。當(dāng)繼續(xù)受到內(nèi)網(wǎng)其他主機發(fā)送的IP 報文時,依此類推,進行端口映射。當(dāng)上述過程使用C語言實現(xiàn)時,包括 "static unsigned short port = 0; 〃源端口
unsigned short portrange =128; 〃區(qū)間大小
srcport = (srcport % portrange) + (port % (64000/portrange))* portr ange; 〃選取起始端口
port++; 〃移動區(qū)間位置"
這樣,除了第一個IP報文沒有沖突,后面的IP報文的首次查找都會 有沖突,在使用分區(qū)查找后,只需要再一次查找即可命中,大大提高了有 效端口的命中率。并且,當(dāng)后續(xù)接收到內(nèi)網(wǎng)其他主機發(fā)送的IP報文中,端口為1001時, 源端口映射如圖5所示。映射到的源端口依次類推為1001、 1129、 1257、
1385.......。當(dāng)后續(xù)接收到內(nèi)網(wǎng)其他主機發(fā)送的IP報文中,端口為1003
時,映射到的源端口依次類推為1003、 1131、 1259、 1387、……,等等。 使NAT設(shè)備上可用端口的利用從固定范圍擴大到了全部端口,大大提高 了端口的利用率以及建立新連接的效率。
圖6為本發(fā)明網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備實施例的結(jié)構(gòu)示意圖,NAT設(shè)備包 括分區(qū)單元61、接收單元62及映射單元63。分區(qū)單元61用于將NAT 設(shè)備的源端口資源分區(qū);接收單元62用于接收IP報文;在接收單元62 接收到的IP報文中的端口已被占用的情況下,映射單元63將所述IP報文 中的端口映射到與IP報文中的端口相差整數(shù)個區(qū)間的源端口 ,所述區(qū)間 經(jīng)資源分區(qū)獲得。如所述IP報文中的端口映射到端口號為H的源端口; 其中,H=h + mxl; h為所述IP報文中端口的端口號,m可為隨機數(shù),也 可為已記錄的內(nèi)網(wǎng)IP地址數(shù)量,l為源端口資源的區(qū)間長度。
所述分區(qū)單元61將所述源端口資源劃分為區(qū)間長度為100個端口的 至少兩個源端口區(qū)間時;所述映射單元63將所述IP才艮文中的端口映射到 端口號為H=h + mx 100的源端口 。所述分區(qū)單元61將所述源端口資源劃 分為區(qū)間長度為128個端口的至少兩個源端口區(qū)間時;所述映射單元63 將所述IP才艮文中的端口映射到端口號為H=h + mx 128的源端口。
上述方法和設(shè)備實施例中,NAT設(shè)備通過將源端口資源分區(qū),并在首 次沖突后,將所述IP報文中的端口映射到端口號為H:h + mxl的源端口, 保證了每次沖突后查找的端口都落在不同的區(qū)間里面,大大減少了查找次 數(shù),提高了查找有效源端口的命中率。并且,且NAT設(shè)備源端口的利用 率也從固定范圍擴大到了全部端口,提高了新建連接的效率,減少了極端 情況出現(xiàn)時出現(xiàn)無法建立連接的可能。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀
取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述 的存儲介質(zhì)包括ROM、 RAM、磁碟或者光盤等各種可以存儲程序代碼的介 質(zhì)。
最后應(yīng)說明的是以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其 限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù) 人員應(yīng)當(dāng)理解其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或 者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技 術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。
權(quán)利要求
1、一種在地址轉(zhuǎn)換表中映射源端口的方法,其特征在于,包括將網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的源端口資源分區(qū);在接收到的IP報文中的端口已被占用的情況下,將所述IP報文中的端口映射到與所述IP報文中的端口相差整數(shù)個區(qū)間的源端口,所述區(qū)間經(jīng)資源分區(qū)獲得。
2、 根據(jù)權(quán)利要求1所述在地址轉(zhuǎn)換表中映射源端口的方法,其特征 在于,將網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的源端口資源分區(qū)包括按所述源端口資源的 端口號大小順序分區(qū);在所述IP報文中的端口已被占用的情況下,將所述IP報文中的端口 映射到端口號與所述IP報文中的端口的端口號相差整數(shù)個區(qū)間的源端口 。
3、 根據(jù)權(quán)利要求1或2所述在地址轉(zhuǎn)換表中映射源端口的方法,其 特征在于,所述整數(shù)為已記錄的內(nèi)網(wǎng)IP地址數(shù)量。
4、 根據(jù)權(quán)利要求1或2所述在地址轉(zhuǎn)換表中映射源端口的方法,其 特征在于,所述整數(shù)為隨機數(shù)。
5、 根據(jù)權(quán)利要求1或2所述在地址轉(zhuǎn)換表中映射源端口的方法,其 特征在于,將網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的源端口資源分區(qū)包括將所述源端口資 源劃分為區(qū)間長度為100個或128個端口的至少兩個源端口區(qū)間。
6、 一種網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,其特征在于,包括分區(qū)單元,用于將網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的源端口資源分區(qū); 接收單元,用于接收IP報文;映射單元,用于在所述接收單元接收到的IP報文中的端口已被占用 的情況下,將所述IP報文中的端口映射到與所述IP報文中的端口相差整 數(shù)個區(qū)間的源端口,所述區(qū)間經(jīng)資源分區(qū)獲得。
7、 根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,其特征在于,所述分 區(qū)單元按所述源端口資源的端口號大小順序分區(qū);所述映射單元在所述IP報文中的端口已被占用的情況下,將所述IP報文中的端口映射到端口號 與所述IP報文中的端口的端口號相差整數(shù)個區(qū)間的源端口 。
8、 根據(jù)權(quán)利要求6或7所述的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,其特征在于,所 述整數(shù)為已記錄的內(nèi)網(wǎng)IP地址數(shù)量。
9、 根據(jù)權(quán)利要求6或7所述的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,其特征在于,所 述整數(shù)為隨機數(shù)。
10、 根據(jù)權(quán)利要求6或7所述的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,其特征在于,所 述分區(qū)單元還用于將所述源端口資源劃分為區(qū)間長度為100個或128個端 口的至少兩個源端口區(qū)間。
全文摘要
本發(fā)明涉及一種在地址轉(zhuǎn)換表中映射源端口的方法及網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,方法包括將網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備的源端口資源分區(qū);在接收到的IP報文中的端口已被占用的情況下,將所述IP報文中的端口映射到與所述IP報文中的端口相差整數(shù)個區(qū)間的源端口,所述區(qū)間經(jīng)資源分區(qū)獲得。網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備包括分區(qū)單元、接收單元及映射單元。NAT設(shè)備通過將源端口資源分區(qū),解決了極端情況下映射源端口的復(fù)雜度隨著沖突次數(shù)增加的問題,大大減少了查找次數(shù),提高了查找有效源端口的命中率。并且,且NAT設(shè)備源端口的利用率也從固定范圍擴大到了全部端口。
文檔編號H04L29/12GK101420465SQ200810239058
公開日2009年4月29日 申請日期2008年12月5日 優(yōu)先權(quán)日2008年12月5日
發(fā)明者寧 朱 申請人:北京星網(wǎng)銳捷網(wǎng)絡(luò)技術(shù)有限公司