一種IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換的方法及設(shè)備的制作方法
【專利摘要】一種IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換的方法及設(shè)備,包括:接收到IP報文后,根據(jù)IP報文信息所構(gòu)造的五元組到連接跟蹤表查找對應(yīng)的連接記錄,如未查找到,為IP報文生成新的連接記錄,其中,五元組包含第一協(xié)議的IP地址和端口;對IP報文進行跨協(xié)議棧地址轉(zhuǎn)換,將第一協(xié)議的IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,其中,第一協(xié)議和第二協(xié)議分別為IPv4協(xié)議和IPv6協(xié)議中的一種且互不相同;根據(jù)第二協(xié)議的IP地址和端口構(gòu)造IP報文的另一方向的五元組,將根據(jù)IP報文信息所構(gòu)造的五元組及另一方向的五元組寫入新的連接記錄并掛載到連接跟蹤表中。本發(fā)明還提供了相應(yīng)的設(shè)備。本發(fā)明可以實現(xiàn)高效查找的跨協(xié)議地址轉(zhuǎn)換并節(jié)約存儲空間。
【專利說明】—種IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換的方法及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)技術(shù),更具體地,涉及一種IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換的方法和設(shè)備。
【背景技術(shù)】
[0002]IPv6協(xié)議棧作為替代IPv4協(xié)議的下一代IP協(xié)議,在世界范圍中得到了廣泛的推廣和實施,但對于使用IPv4協(xié)議棧作為主流選擇的用戶來說,如何實現(xiàn)IPv4環(huán)境向IPv6環(huán)境的平滑過渡成為了更加重要與實際的問題。
[0003]目前提出的IPv4地址與IPv6地址轉(zhuǎn)換的方式,分為有狀態(tài)轉(zhuǎn)換以及無狀態(tài)轉(zhuǎn)換兩種。其中有狀態(tài)轉(zhuǎn)換是指維護了 IPv4地址及端口,與IPv6地址及端口的映射關(guān)系,轉(zhuǎn)換是基于這種映射關(guān)系來進行的。無狀態(tài)是指根據(jù)指定的映射算法,實現(xiàn)不同協(xié)議棧地址的轉(zhuǎn)換,不用維護映射關(guān)系。其中,由于有狀態(tài)轉(zhuǎn)換可實現(xiàn)映射地址的重用,在實際的使用場景中更具有實用意義。
[0004]目前實現(xiàn)IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換時,都需要單獨維護類似于轉(zhuǎn)換前與轉(zhuǎn)換后地址的映射表,在流量很大的情況下,對設(shè)備的存儲要求也變得更高。同時如果查找方式不夠高效,也容易成為設(shè)備的性能瓶頸。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問題是提供一種可節(jié)約存儲空間的IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換的方法
[0006]本發(fā)明要解決的另一技術(shù)問題是提供一種IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換的方法,應(yīng)用于網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,包括:
[0007]接收到IP報文后,根據(jù)所述IP報文信息所構(gòu)造的五元組到連接跟蹤表查找對應(yīng)的連接記錄,如未查找到,為所述IP報文生成新的連接記錄,其中,所述五元組包含第一協(xié)議的IP地址和端口 ;
[0008]對所述IP報文進行跨協(xié)議棧地址轉(zhuǎn)換,將第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,其中,第一協(xié)議和第二協(xié)議分別為IPv4協(xié)議和IPv6協(xié)議中的一種且互不相同;
[0009]根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組,將根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組寫入所述新的連接記錄并掛載到所述連接跟蹤表中。
[0010]較佳地,
[0011]所述方法還包括:
[0012]接收到IP報文后,根據(jù)所述IP報文信息所構(gòu)造的五元組到連接跟蹤表查找對應(yīng)的連接記錄;
[0013]如查找到,對所述IP報文進行跨協(xié)議棧地址轉(zhuǎn)換時,從查找到的連接記錄中獲取所述IP報文的另一方向的五元組,將所述IP報文中的IP地址和端口轉(zhuǎn)換為所述另一方向的五元組中另一協(xié)議的相應(yīng)IP地址和端口。
[0014]較佳地,
[0015]將第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,包括:
[0016]將第一協(xié)議的目的IP地址和目的端口轉(zhuǎn)換為第二協(xié)議的目的IP地址和目的端口,將第一協(xié)議的源IP地址和源端口轉(zhuǎn)換為第二協(xié)議的源IP地址的源端口 ;其中,所述第二協(xié)議的源端口是從可選的第二協(xié)議的源端口中選擇得到的。
[0017]較佳地,
[0018]根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組,包括:
[0019]根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造一個另一方向的五元組并進行沖突校驗,如無沖突,將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組;如有沖突,則重新選擇一個轉(zhuǎn)換后的第二協(xié)議的源端口,重新構(gòu)造一個另一方向的五元組并進行沖突校驗,如此循環(huán)處理,直到構(gòu)造的另一方向的五元組的沖突校驗結(jié)果為無沖突時,再將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組;
[0020]其中,所述沖突校驗是判斷所述連接跟蹤表中是否已存在與當(dāng)前構(gòu)造的另一方向的五元組相同的五元組,如存在,則有沖突,如不存在,則無沖突。
[0021]較佳地,
[0022]所述連接跟蹤表為哈希表,所述哈希表中的每一哈希值對應(yīng)一個鏈表;
[0023]將根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組寫入所述新的連接記錄并掛載到所述連接跟蹤表中,包括:
[0024]將兩個五元組寫入所述新的連接記錄進行存儲,獲取所述兩個五元組的地址信息,所述兩個五元組包括根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組;
[0025]分別計算所述兩個五元組的哈希值,將所述兩個五元組的地址信息分別插入到各自哈希值對應(yīng)的鏈表中;
[0026]其中,計算所述兩個五元組的哈希值時,使用的哈希算法兼容IPv4類型和IPv6類型的五元組。
[0027]相應(yīng)地,本發(fā)明提供的可實現(xiàn)IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備包括:
[0028]連接跟蹤查找單元,用于在接收到IP報文后,根據(jù)所述IP報文信息所構(gòu)造的五元組到連接跟蹤表查找對應(yīng)的連接記錄,將查找結(jié)果通知報文轉(zhuǎn)換單元和連接記錄生成單元,所述五元組包含第一協(xié)議的IP地址和端口 ;
[0029]所述報文轉(zhuǎn)換單元,用于在所述查找結(jié)果為未查找到時,將所述IP報文中第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,其中,第一協(xié)議和第二協(xié)議分別為IPv4協(xié)議和IPv6協(xié)議中的一種且互不相同;
[0030]所述連接記錄生成單元,用于在查找結(jié)果為未查找到時,為所述IP報文生成新的連接記錄,并根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組,將根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組寫入所述新的連接記錄中;
[0031]連接跟蹤表維護單元,用于對連接跟蹤表進行維護,在新的連接記錄生成完成后,將寫入其中的兩個五元組均掛載到連接跟蹤表中。
[0032]較佳地,
[0033]所述報文轉(zhuǎn)換單元還用于在所述查找結(jié)果為查找到時,從查找到的連接記錄中獲取所述IP報文的另一方向的五元組,將所述IP報文中的IP地址和端口轉(zhuǎn)換為所述另一方向的五元組中另一協(xié)議的相應(yīng)IP地址和端口。
[0034]較佳地,
[0035]所述報文轉(zhuǎn)換單元將第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,包括:
[0036]將第一協(xié)議的目的IP地址和目的端口轉(zhuǎn)換為第二協(xié)議的目的IP地址和目的端口,將第一協(xié)議的源IP地址和源端口轉(zhuǎn)換為第二協(xié)議的源IP地址的源端口 ;其中,所述第二協(xié)議的源端口是從可選的第二協(xié)議的源端口中選擇得到的。
[0037]較佳地,
[0038]所述連接記錄生成單元根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組,包括:
[0039]根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造一個另一方向的五元組并進行沖突校驗,如無沖突,將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組;如有沖突,則重新選擇一個轉(zhuǎn)換后的第二協(xié)議的源端口,重新構(gòu)造一個另一方向的五元組并進行沖突校驗,如此循環(huán)處理,直到構(gòu)造的另一方向的五元組的沖突校驗結(jié)果為無沖突時,再將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組;
[0040]其中,所述沖突校驗是判斷所述連接跟蹤表中是否已存在與當(dāng)前構(gòu)造的另一方向的五元組相同的五元組,如存在,則有沖突,如不存在,則無沖突。
[0041]較佳地,
[0042]所述連接跟蹤表維護單元維護的連接跟蹤表為哈希表,所述哈希表中的每一哈希值對應(yīng)一個鏈表;
[0043]所述連接跟蹤表維護單元將寫入新生成的連接記錄中的兩個五元組掛載到連接跟蹤表中,包括:
[0044]確定所述兩個五元組在所述新生成的連接記錄中的地址信息;
[0045]分別計算所述兩個五元組的哈希值,將所述兩個五元組的地址信息分別插入到各自哈希值對應(yīng)的鏈表中;
[0046]其中,計算所述兩個五元組的哈希值時,使用的哈希算法兼容IPv4類型和IPv6類型的五元組。
[0047]上述方案實現(xiàn)了 IPv4地址與IPv6報文地址有狀態(tài)的轉(zhuǎn)換。同時,由于IPv4地址與IPv6地址之間的映射關(guān)系的維護是復(fù)用已有的連接跟蹤機制來實現(xiàn)的,節(jié)約了存儲空間。由于連接跟蹤表是采用hash表的形式進行存儲的,報文在查到連接跟蹤的同時也查到了對應(yīng)的映射關(guān)系,沒有增加多余的查找復(fù)雜度,保證了查找的高效性。使用戶不用改變已有的環(huán)境和拓?fù)?,就能訪問位于另一協(xié)議棧網(wǎng)絡(luò)環(huán)境中的主機及服務(wù)。
【專利附圖】
【附圖說明】
[0048]圖1A和圖1B分別是現(xiàn)有IPv4協(xié)議報文和IPv6協(xié)議報文的連接記錄中的五元組結(jié)構(gòu)的不意圖;
[0049]圖2是作為連接跟蹤表的哈希表的結(jié)構(gòu)示意圖;
[0050]圖3是本發(fā)明實施例方法中,接收到IP報文后沒有查找到相應(yīng)連接記錄時的處理流程圖;
[0051]圖4是本發(fā)明實施例方法中,接收到IP報文后查找到相應(yīng)連接記錄時的處理流程圖;
[0052]圖5是本發(fā)明實施例NAT設(shè)備的模塊圖。
【具體實施方式】
[0053]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下文中將結(jié)合附圖對本發(fā)明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
[0054]實施例
[0055]本實施例中,IPv4地址與IPv6地址的有狀態(tài)轉(zhuǎn)換基于報文的連接跟蹤機制實現(xiàn)。
[0056]連接跟蹤(conntrack)作為網(wǎng)絡(luò)層通用的連接管理方式。所謂連接跟蹤,就是跟蹤并記錄連接狀態(tài)。對于收到一個連接的IP報文,連接跟蹤機制首先要進行連接記錄(Connect1n entry)的查找,查找時根據(jù)IP報文網(wǎng)絡(luò)層以及傳輸層頭部信息中的五元組,到連接跟蹤表中進行查找該五元組。如沒有查找到,為該連接生成一個連接記錄(Connect1n entry)。此后,所有屬于此連接的IP報文都被唯一地分配給這個連接。在一個連接記錄中,記錄有IP報文的兩個方向的五元組、記錄生存時間、連接在當(dāng)前時間點的狀態(tài)等信息。一般將根據(jù)連接的首個IP報文信息所構(gòu)造的五元組稱為正向五元組,根據(jù)該首個IP報文的應(yīng)答報文信息所構(gòu)造的五元組稱為反向五元組。兩個五元組中均包括傳輸層協(xié)議號、源IP地址、源端口、目的IP地址和目的端口,其中,反向五元組中的源IP地址、源端口從正向五元組中的目的IP地址和目的端口得到,反向五元組中的目的IP地址和目的端口從正向五元組中的源IP地址和源端口得到。關(guān)于IPv4協(xié)議報文和IPv6協(xié)議報文的連接記錄及其中的五元組可參見圖1A和圖1B所示的結(jié)構(gòu)。
[0057]為了方便查找和對比,連接記錄中的兩個五元組需要掛載在一個連接跟蹤表中以實現(xiàn)高效的查詢。連接跟蹤表可以用哈希表實現(xiàn)但不局限于此,圖2所示是以哈希表作為連接跟蹤表的一個示例,在該哈希表中,為每個哈希值建有一個鏈表,鏈表中的每一節(jié)點都保存有一個指針,指向具有該哈希值的一個五元組。所謂的掛載即計算兩個五元組的哈希值,將兩個五元組在連接記錄中的地址信息(如五元組數(shù)據(jù)結(jié)構(gòu)的頭結(jié)點的地址)插入在各自哈希值對應(yīng)的鏈表中。接收到該連接的后續(xù)報文后,根據(jù)后續(xù)報文所構(gòu)造的五元組計算哈希值,到該哈希值對應(yīng)的鏈表查找到該五元組,也即查找到該連接的連接記錄。
[0058]本實施例復(fù)用連接跟蹤表作為映射關(guān)系表,復(fù)用連接記錄作為存儲不同協(xié)議IP地址和端口的映射關(guān)系的結(jié)構(gòu)。在本發(fā)明實施方案中,除特別指出外,IP報文均是指需要進行跨協(xié)議棧地址轉(zhuǎn)換的IP報文。對于不需要進行跨協(xié)議IP地址轉(zhuǎn)換的報文,按照常規(guī)方式處理即可。
[0059]圖3所示是本實施例的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備(NAT)接收到IP報文,沒有查找到相應(yīng)連接記錄時的處理流程,包括:
[0060]步驟110,接收到IP報文后,根據(jù)所述IP報文信息所構(gòu)造的五元組到連接跟蹤表查找對應(yīng)的連接記錄,其中,所述五元組包含第一協(xié)議的IP地址和端口 ;
[0061]接收到的IP報文中的五元組可能是正向五元組,也可能是反向五元組。
[0062]步驟120,為所述IP報文生成新的連接記錄;
[0063]步驟130,對所述IP報文進行跨協(xié)議棧地址轉(zhuǎn)換,將第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,其中,第一協(xié)議和第二協(xié)議分別為IPv4協(xié)議和IPv6協(xié)議中的一種且互不相同;
[0064]文中也將五元組中的源IP地址和目的IP地址統(tǒng)稱為五元組中的IP地址,將五元組中的源端口和目的端口統(tǒng)稱為五元組中的端口。
[0065]在本步驟中,將第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,包括:
[0066]將第一協(xié)議的目的IP地址和目的端口轉(zhuǎn)換為第二協(xié)議的目的IP地址和目的端口 ;其中,目的地址的轉(zhuǎn)換方式可以根據(jù)用戶配置決定,目的端口一般不進行改動,除非用戶指定需要進行變動。為了保證轉(zhuǎn)換后的目的地址是可路由的,NAT設(shè)備會查找路由,并記錄出接口以及下一跳信息;
[0067]將第一協(xié)議的源IP地址和源端口轉(zhuǎn)換為第二協(xié)議的源IP地址的源端口;其中,源地址的轉(zhuǎn)換方式可以根據(jù)用戶配置決定,而第二協(xié)議的源端口是唯一沒有被用戶指定的,可以從可選的第二協(xié)議的源端口中選擇得到的。
[0068]步驟140,根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組;
[0069]源IP地址、源端口、目的IP地址,目的端口以及傳輸層協(xié)議號是五元組的基本元素,為了保證五元組的唯一性,根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造一個另一方向的五元組后,要進行沖突校驗,如無沖突,將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組;如有沖突,則重新選擇一個轉(zhuǎn)換后的第二協(xié)議的源端口,重新構(gòu)造一個另一方向的五元組并進行沖突校驗,如此循環(huán)處理,直到構(gòu)造的另一方向的五元組的沖突校驗結(jié)果為無沖突時,再將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組。其中,所述沖突校驗是判斷所述連接跟蹤表中是否已存在與當(dāng)前構(gòu)造的另一方向的五元組相同的五元組,如存在,則有沖突,如不存在,則無沖突。
[0070]步驟150,將根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組寫入所述新的連接記錄并掛載到所述連接跟蹤表中。
[0071 ] 本實施例中,所述連接跟蹤表為哈希表,所述哈希表中的每一哈希值對應(yīng)一個鏈表;將根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組寫入所述新的連接記錄并掛載到所述連接跟蹤表中,包括:
[0072]將兩個五元組寫入所述新的連接記錄進行存儲,獲取所述兩個五元組的地址信息,所述兩個五元組包括根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組;
[0073]分別計算所述兩個五元組的哈希值,將所述兩個五元組的地址信息分別插入到各自哈希值對應(yīng)的鏈表中;其中,計算所述兩個五元組的哈希值時,使用的哈希算法兼容IPv4類型和IPv6類型的五元組。
[0074]需要說明的是,雖然上述流程展現(xiàn)了一些處理之間的順序,但這只是示例性的。例如,上述對IP報文執(zhí)行的跨協(xié)議棧地址轉(zhuǎn)換的處理,和構(gòu)造IP報文的另一方向的五元組,寫入所述新的連接記錄并掛載到所述連接跟蹤表的處理之間的順序可以調(diào),本發(fā)明對此并不限制。而對兩個五元組所執(zhí)行的寫入所述新的連接記錄并掛載到所述連接跟蹤表的操作也不必同時進行,可以有先后順序。等等。
[0075]上述圖3所示的處理后,IP報文的IPv4地址和IPv6地址之間的映射關(guān)系被保存在了連接記錄中,即連接記錄中保存了不同協(xié)議的IP地址和端口。因而根據(jù)該連接后續(xù)IP報文中的五元組,可以查找連接跟蹤表獲取該映射關(guān)系,從而完成地址轉(zhuǎn)換。
[0076]圖4所示是本實施例的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備(NAT)接收到IP報文,查找到相應(yīng)連接記錄時的處理流程,包括:
[0077]步驟210,接收到IP報文后,根據(jù)所述IP報文信息所構(gòu)造的五元組到連接跟蹤表查找到對應(yīng)的連接記錄;
[0078]步驟組220,對所述IP報文進行跨協(xié)議棧地址轉(zhuǎn)換時,從查找到的連接記錄中獲取所述IP報文的另一方向的五元組,將所述IP報文中的IP地址和端口轉(zhuǎn)換為所述另一方向的五元組中另一協(xié)議的相應(yīng)IP地址和端口。
[0079]以IPv4協(xié)議報文為例,該IP報文中的IP地址和端口包括基于IPv4協(xié)議的源地址和相應(yīng)源端口,以及基于IPv4協(xié)議的目的地址和相應(yīng)目的端口。在該IP報文的另一方向的五元組中,保存有該IP報文應(yīng)答報文的基于IPv6協(xié)議的源地址和相應(yīng)源端口,以及基于IPv6協(xié)議的目的地址和相應(yīng)目的端口。該IP報文及其應(yīng)答報文中的源地址、端口及目的地址、端口是互換的。因此,在轉(zhuǎn)換時,將該IP報文中的基于IPv4協(xié)議的源地址和相應(yīng)源端口轉(zhuǎn)換為該另一方向的五元組中的基于IPv6協(xié)議的目的地址和相應(yīng)目的端口,將該IP報文中的基于IPv4協(xié)議的目的地址和相應(yīng)目的端口轉(zhuǎn)換為該另一方向的五元組中的基于IPv6協(xié)議的源地址和相應(yīng)源端口。
[0080]本實施例NAT設(shè)備進行的網(wǎng)絡(luò)地址轉(zhuǎn)換,除了跨協(xié)議棧地址轉(zhuǎn)換外,還可以進行其他網(wǎng)絡(luò)地址轉(zhuǎn)換如公、私網(wǎng)地址的轉(zhuǎn)換等。
[0081]相應(yīng)地,本實施例提供的可實現(xiàn)IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,如圖5所示,包括:
[0082]連接跟蹤查找單元10,用于在接收到IP報文后,根據(jù)所述IP報文信息所構(gòu)造的五元組到連接跟蹤表查找對應(yīng)的連接記錄,將查找結(jié)果通知報文轉(zhuǎn)換單元和連接記錄生成單元,所述五元組包含第一協(xié)議的IP地址和端口 ;
[0083]報文轉(zhuǎn)換單元20,用于在所述查找結(jié)果為未查找到時,將所述IP報文中第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,其中,第一協(xié)議和第二協(xié)議分別為IPv4協(xié)議和IPv6協(xié)議中的一種且互不相同;
[0084]連接記錄生成單元30,用于在查找結(jié)果為未查找到時,為所述IP報文生成新的連接記錄,并根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組,將根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組寫入所述新的連接記錄中;
[0085]連接跟蹤表維護單元40,用于對連接跟蹤表進行維護,在新的連接記錄生成完成后,將寫入其中的兩個五元組均掛載到連接跟蹤表中。
[0086]較佳地,報文轉(zhuǎn)換單元20還用于在所述查找結(jié)果為查找到時,從查找到的連接記錄中獲取所述IP報文的另一方向的五元組,將所述IP報文中的IP地址和端口轉(zhuǎn)換為所述另一方向的五兀組中另一協(xié)議的相應(yīng)IP地址和端口。
[0087]較佳地,報文轉(zhuǎn)換單元20將第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,包括:將第一協(xié)議的目的IP地址和目的端口轉(zhuǎn)換為第二協(xié)議的目的IP地址和目的端口,將第一協(xié)議的源IP地址和源端口轉(zhuǎn)換為第二協(xié)議的源IP地址的源端口 ;其中,所述第二協(xié)議的源端口是從可選的第二協(xié)議的源端口中選擇得到的。
[0088]較佳的,連接記錄生成單元30根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組,包括:根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造一個另一方向的五元組并進行沖突校驗,如無沖突,將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組;如有沖突,則重新選擇一個轉(zhuǎn)換后的第二協(xié)議的源端口,重新構(gòu)造一個另一方向的五元組并進行沖突校驗,如此循環(huán)處理,直到構(gòu)造的另一方向的五元組的沖突校驗結(jié)果為無沖突時,再將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組;其中,所述沖突校驗是判斷所述連接跟蹤表中是否已存在與當(dāng)前構(gòu)造的另一方向的五元組相同的五元組,如存在,則有沖突,如不存在,則無沖突。
[0089]較佳地,連接跟蹤表維護單元維護的連接跟蹤表為哈希表,所述哈希表中的每一哈希值對應(yīng)一個鏈表;所述連接跟蹤表維護單元將寫入新生成的連接記錄中的兩個五元組掛載到連接跟蹤表中,包括:確定所述兩個五元組在所述新生成的連接記錄中的地址信息;分別計算所述兩個五元組的哈希值,將所述兩個五元組的地址信息分別插入到各自哈希值對應(yīng)的鏈表中;其中,計算所述兩個五元組的哈希值時,使用的哈希算法兼容IPv4類型和IPv6類型的五元組。
[0090]上述實施方案可以支持IPv4協(xié)議端發(fā)起的會話,也支持IPv6協(xié)議端發(fā)起的會話,能將會話報文轉(zhuǎn)換為目的協(xié)議棧類型的報文,滿足位于不同網(wǎng)絡(luò)協(xié)議棧的用戶互訪的需求,實現(xiàn)兩種協(xié)議棧的無縫銜接,從而逐步達到從IPv4網(wǎng)絡(luò)環(huán)境向IPv6網(wǎng)絡(luò)環(huán)境過渡的目標(biāo)。
[0091]上述實施方案是基于網(wǎng)絡(luò)層的連接跟蹤機制實現(xiàn)的,在連接跟蹤機制的基礎(chǔ)上,不需要另外的空間來進行映射關(guān)系的存儲,也不需要其他的步驟來進行映射關(guān)系的查詢,對設(shè)備的性能不會有大的影響,是一種高效使用的轉(zhuǎn)換方式。并且,能通過調(diào)整轉(zhuǎn)換后的源端口避免沖突,可以滿足用戶關(guān)于映射地址可以重用的要求。
[0092]本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關(guān)硬件完成,所述程序可以存儲于計算機可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤等。可選地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現(xiàn),相應(yīng)地,上述實施例中的各模塊/單元可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。
[0093]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換的方法,應(yīng)用于網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,包括: 接收到IP報文后,根據(jù)所述IP報文信息所構(gòu)造的五元組到連接跟蹤表查找對應(yīng)的連接記錄,如未查找到,為所述IP報文生成新的連接記錄,其中,所述五元組包含第一協(xié)議的IP地址和端口 ; 對所述IP報文進行跨協(xié)議棧地址轉(zhuǎn)換,將第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,其中,第一協(xié)議和第二協(xié)議分別為IPv4協(xié)議和IPv6協(xié)議中的一種且互不相同; 根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組,將根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組寫入所述新的連接記錄并掛載到所述連接跟蹤表中。
2.如權(quán)利要求1所述的方法,其特征在于,還包括: 接收到IP報文后,根據(jù)所述IP報文信息所構(gòu)造的五元組到連接跟蹤表查找對應(yīng)的連接記錄; 如查找到,對所述IP報文進行跨協(xié)議棧地址轉(zhuǎn)換時,從查找到的連接記錄中獲取所述IP報文的另一方向的五元組,將所述IP報文中的IP地址和端口轉(zhuǎn)換為所述另一方向的五元組中另一協(xié)議的相應(yīng)IP地址和端口。
3.如權(quán)利要求1或2所述的方法,其特征在于: 將第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,包括: 將第一協(xié)議的目的IP地址和目的端口轉(zhuǎn)換為第二協(xié)議的目的IP地址和目的端口,將第一協(xié)議的源IP地址和源端口轉(zhuǎn)換為第二協(xié)議的源IP地址的源端口;其中,所述第二協(xié)議的源端口是從可選的第二協(xié)議的源端口中選擇得到的。
4.如權(quán)利要求3所述的方法,其特征在于: 根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組,包括:根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造一個另一方向的五元組并進行沖突校驗,如無沖突,將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組;如有沖突,則重新選擇一個轉(zhuǎn)換后的第二協(xié)議的源端口,重新構(gòu)造一個另一方向的五元組并進行沖突校驗,如此循環(huán)處理,直到構(gòu)造的另一方向的五元組的沖突校驗結(jié)果為無沖突時,再將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組; 其中,所述沖突校驗是判斷所述連接跟蹤表中是否已存在與當(dāng)前構(gòu)造的另一方向的五元組相同的五元組,如存在,則有沖突,如不存在,則無沖突。
5.如權(quán)利要求1或2或4所述的方法,其特征在于: 所述連接跟蹤表為哈希表,所述哈希表中的每一哈希值對應(yīng)一個鏈表; 將根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組寫入所述新的連接記錄并掛載到所述連接跟蹤表中,包括: 將兩個五元組寫入所述新的連接記錄進行存儲,獲取所述兩個五元組的地址信息,所述兩個五元組包括根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組; 分別計算所述兩個五元組的哈希值,將所述兩個五元組的地址信息分別插入到各自哈希值對應(yīng)的鏈表中; 其中,計算所述兩個五元組的哈希值時,使用的哈希算法兼容IPv4類型和IPv6類型的五元組。
6.一種可實現(xiàn)IPv4地址與IPv6地址有狀態(tài)轉(zhuǎn)換的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,其特征在于,包括: 連接跟蹤查找單元,用于在接收到IP報文后,根據(jù)所述IP報文信息所構(gòu)造的五元組到連接跟蹤表查找對應(yīng)的連接記錄,將查找結(jié)果通知報文轉(zhuǎn)換單元和連接記錄生成單元,所述五元組包含第一協(xié)議的IP地址和端口 ; 所述報文轉(zhuǎn)換單元,用于在所述查找結(jié)果為未查找到時,將所述IP報文中第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,其中,第一協(xié)議和第二協(xié)議分別為IPv4協(xié)議和IPv6協(xié)議中的一種且互不相同; 所述連接記錄生成單元,用于在查找結(jié)果為未查找到時,為所述IP報文生成新的連接記錄,并根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組,將根據(jù)所述IP報文信息所構(gòu)造的五元組及所述另一方向的五元組寫入所述新的連接記錄中; 連接跟蹤表維護單元,用于對連接跟蹤表進行維護,在新的連接記錄生成完成后,將寫入其中的兩個五元組均掛載到連接跟蹤表中。
7.如權(quán)利要求6所述的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,其特征在于: 所述報文轉(zhuǎn)換單元還用于在所述查找結(jié)果為查找到時,從查找到的連接記錄中獲取所述IP報文的另一方向的五元組,將所述IP報文中的IP地址和端口轉(zhuǎn)換為所述另一方向的五元組中另一協(xié)議的相應(yīng)IP地址和端口。
8.如權(quán)利要求6或7所述的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,其特征在于: 所述報文轉(zhuǎn)換單元將第一協(xié)議的所述IP地址和端口轉(zhuǎn)換為第二協(xié)議的IP地址和端口,包括: 將第一協(xié)議的目的IP地址和目的端口轉(zhuǎn)換為第二協(xié)議的目的IP地址和目的端口,將第一協(xié)議的源IP地址和源端口轉(zhuǎn)換為第二協(xié)議的源IP地址的源端口 ;其中,所述第二協(xié)議的源端口是從可選的第二協(xié)議的源端口中選擇得到的。
9.如權(quán)利要求8所述的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,其特征在于: 所述連接記錄生成單元根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造所述IP報文的另一方向的五元組,包括: 根據(jù)第二協(xié)議的所述IP地址和端口構(gòu)造一個另一方向的五元組并進行沖突校驗,如無沖突,將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組;如有沖突,則重新選擇一個轉(zhuǎn)換后的第二協(xié)議的源端口,重新構(gòu)造一個另一方向的五元組并進行沖突校驗,如此循環(huán)處理,直到構(gòu)造的另一方向的五元組的沖突校驗結(jié)果為無沖突時,再將當(dāng)前構(gòu)造的另一方向的五元組作為所述IP報文的另一方向的五元組; 其中,所述沖突校驗是判斷所述連接跟蹤表中是否已存在與當(dāng)前構(gòu)造的另一方向的五元組相同的五元組,如存在,則有沖突,如不存在,則無沖突。
10.如權(quán)利要求6或7或9所述的網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備,其特征在于: 所述連接跟蹤表維護單元維護的連接跟蹤表為哈希表,所述哈希表中的每一哈希值對應(yīng)一個鏈表; 所述連接跟蹤表維護單元將寫入新生成的連接記錄中的兩個五元組掛載到連接跟蹤表中,包括: 確定所述兩個五元組在所述新生成的連接記錄中的地址信息; 分別計算所述兩個五元組的哈希值,將所述兩個五元組的地址信息分別插入到各自哈希值對應(yīng)的鏈表中; 其中,計算所述兩個五元組的哈希值時,使用的哈希算法兼容IPv4類型和IPv6類型的五元組。
【文檔編號】H04L12/749GK104243631SQ201410539660
【公開日】2014年12月24日 申請日期:2014年10月13日 優(yōu)先權(quán)日:2014年10月13日
【發(fā)明者】姜殊佳 申請人:北京太一星晨信息技術(shù)有限公司