進(jìn)的數(shù)據(jù)結(jié)構(gòu)(NAT處理表)和合理的NAT處理流程,最大限度的提升通用性和處理性能;而且還具有NAT處理靈活、處理速度快、成本低、功耗低的優(yōu)點(diǎn),具有良好的經(jīng)濟(jì)和社會效益。
[0024]本發(fā)明可廣泛應(yīng)用于各種NAT處理系統(tǒng)。
【附圖說明】
[0025]下面結(jié)合附圖對本發(fā)明的【具體實施方式】作進(jìn)一步說明:
圖1是本發(fā)明基于SOPC的NAT的實現(xiàn)方法一種實施例的方法流程圖; 圖2是本發(fā)明私網(wǎng)NAT處理表一種實施例的結(jié)構(gòu)及邏輯關(guān)系圖;
圖3是本發(fā)明公網(wǎng)NAT處理表一種實施例的結(jié)構(gòu)及邏輯關(guān)系圖;
圖4是本發(fā)明基于SOPC的NAT的實現(xiàn)裝置一種實施例的系統(tǒng)結(jié)構(gòu)框圖。
【具體實施方式】
[0026]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
[0027]該實施例中,一種基于SOPC的NAT的實現(xiàn)裝置以FPGA為載體,設(shè)計方案結(jié)構(gòu)框圖如圖4所示。該方案由兩部分組成,一部分是外部存儲器主要用來存儲和查詢網(wǎng)絡(luò)地址轉(zhuǎn)換表以及作為處理器的外部存儲器,另一部分則主要完成NAT功能的實現(xiàn),主要包括處理器模塊、學(xué)習(xí)/處理模塊、以太網(wǎng)接口模塊、提取模塊、數(shù)據(jù)緩沖模塊、NAT處理模塊、NAT逆處理模塊,這些功能模塊都是用FPGA來實現(xiàn)。
[0028]本方案支持TCP、UDP、ICMP協(xié)議的NAT處理。由于NAT轉(zhuǎn)換表的存儲、管理和查找用邏輯實現(xiàn)比較繁瑣且耗費(fèi)資源,特別是當(dāng)NAT配置復(fù)雜、表項龐大的時候幾乎不可實現(xiàn),故這部分的功能在FPGA內(nèi)部以嵌入式CPU核的方式來進(jìn)行實現(xiàn)。其包括:
1.處理器模塊
處理器模塊與學(xué)習(xí)/處理模塊和外部存儲相連,主要有三個作用:一、在靜態(tài)NAT模式下,接收配置下發(fā)通道的數(shù)據(jù),并根據(jù)配置數(shù)據(jù)建立NAT處理表;二、在動態(tài)NAT模式下,根據(jù)學(xué)習(xí)/處理模塊輸出的私網(wǎng)數(shù)據(jù)包信息進(jìn)行動態(tài)分配公網(wǎng)IP、端口號,并用該信息建立NAT處理表;三、對學(xué)習(xí)/處理模塊輸出的數(shù)據(jù)包信息進(jìn)行查表處理,并將處理結(jié)果返回給學(xué)習(xí)/處理模塊。
[0029]本實例中處理器模塊采用xiIinx提供的軟核CPU microblaze和相應(yīng)外設(shè)構(gòu)成。CPU采用了兩個microblaze核,一個主要用于NAT處理表的更新及維護(hù)以及系統(tǒng)管理,另一個主要用于NAT處理。
[0030]2.學(xué)習(xí)/處理模塊
學(xué)習(xí)/處理模塊與提取模塊和處理器模塊相連,主要有兩個作用:一、接收提取模塊的輸出,檢查學(xué)習(xí)內(nèi)容中是否有符合項,如果有符合項則將存儲的對應(yīng)結(jié)果輸出給NAT處理模塊,如果沒有符合項則將接收的數(shù)據(jù)直接提交給處理器模塊,并記錄該數(shù)據(jù),以便在學(xué)習(xí)過程中與處理結(jié)果建立一一對應(yīng)關(guān)系。二、學(xué)習(xí)處理器輸出的數(shù)據(jù)包處理結(jié)果,即將數(shù)據(jù)包信息輸入與數(shù)據(jù)包處理結(jié)果間建立一一對應(yīng)的關(guān)系,以便對后續(xù)數(shù)據(jù)包中有相同輸入條件的數(shù)據(jù)包直接進(jìn)行處理,以減輕處理器的負(fù)荷,提高數(shù)據(jù)包的處理能力,然后將結(jié)果輸出給NAT處理模塊。
[0031 ] 該實施例中,學(xué)習(xí)/處理模塊主要包括CAM模塊、存儲模塊、管理模塊、計數(shù)器組等。
[0032]CAM模塊有兩種實現(xiàn)方法,基于查找表實現(xiàn)和基于BL0CKRAM實現(xiàn),需根據(jù)邏輯資源的使用情況權(quán)衡。CAM模塊的功能是實現(xiàn)數(shù)據(jù)的快速匹配,用于判斷學(xué)習(xí)內(nèi)容中是否有符合項。CAM模塊的表項數(shù)可參數(shù)設(shè)置,可根據(jù)具體應(yīng)用環(huán)境需要進(jìn)行設(shè)置,本實例中采用的表項數(shù)為32。增加表項可大幅提高學(xué)習(xí)/處理能力,但所消耗的邏輯資源成指數(shù)增長。
[0033]存儲模塊也有兩種實現(xiàn)方法,基于查找表實現(xiàn)和基于BL0CKRAM實現(xiàn),需根據(jù)邏輯資源的使用情況權(quán)衡。存儲模塊的功能是用于存儲學(xué)習(xí)到的處理結(jié)果,并在存儲單元數(shù)量上與CAM模塊的表項數(shù)相同、在地址關(guān)系上--對應(yīng)。本實例中存儲單元數(shù)量為32。
[0034]管理模塊主要實現(xiàn)對CAM模塊的寫入、查詢的控制功能,對存儲模塊的讀寫控制功能,對計數(shù)器組的計數(shù)啟動、清零控制功能,此外還實現(xiàn)學(xué)習(xí)控制功能和處理控制功能。
[0035]學(xué)習(xí)控制功能如下:首先根據(jù)表項數(shù)建立標(biāo)識組,每個標(biāo)識組單元唯一指示一個表項,初始時標(biāo)識組單元全部置為無效,當(dāng)檢測到處理器輸出的有效結(jié)果時,首先在標(biāo)識組找出一個無效單元,如果沒有無效單元則找出計數(shù)器組中計數(shù)值最大的計數(shù)器所對應(yīng)的標(biāo)識組單元,并將該標(biāo)識組單元有效位置位,同時將該結(jié)果的輸入縮減后存入CAM的對應(yīng)單元,結(jié)果存入存儲模塊相應(yīng)單元,且清零計數(shù)器組中對應(yīng)的計數(shù)器,并啟動該計數(shù)器。當(dāng)計數(shù)器組中的計數(shù)器值超過閾值時,將對應(yīng)標(biāo)識組單元有效位復(fù)位,同時關(guān)閉該計數(shù)器并計數(shù)值清零。
[0036]處理控制功能如下:將提取模塊的輸出經(jīng)過縮減后進(jìn)行CAM查詢,如果存在匹配單元且該單元對應(yīng)的標(biāo)識組單元有效位置位,則將計數(shù)器組中對應(yīng)位置的計數(shù)器清零,并將存儲模塊對應(yīng)位置的內(nèi)容作為處理結(jié)果輸出給NAT處理模塊,否則將提取模塊的輸出提交給處理器模塊,并暫存該數(shù)據(jù)。
[0037]計數(shù)器組實現(xiàn)CAM單元的老化時間計數(shù),并在數(shù)量上與CAM模塊的表項數(shù)相同、并與CAM模塊的表項一一對應(yīng)。本實例中計數(shù)器組的數(shù)量為32。
[0038]3.以太網(wǎng)接口
包括用于連接私網(wǎng)的私網(wǎng)以太網(wǎng)接口和用于連接公網(wǎng)的以太網(wǎng)接口,以太網(wǎng)接口模塊根據(jù)實際需求實現(xiàn)以太網(wǎng)PHY、MAC功能。
[0039]4.提取模塊
提取模塊與以太網(wǎng)接口模塊相連,主要完成數(shù)據(jù)包信息的提取。提取的控制流信號包括源MAC地址、以太網(wǎng)協(xié)議類型、IP協(xié)議類型、以太網(wǎng)源IP、以太網(wǎng)目的IP、ICMP標(biāo)識符(ICMP)、ICMP 序列號(ICMP)、源端口號(TCP、UDP)、目的端口(TCP、UDP)、IP 包的 16 位標(biāo)識、IP包的3位標(biāo)志及13位片偏移、IP首部檢驗和、ICMP/TCP/UDP的檢驗和等。其中源IP、目的IP、源端口號(TCP、UDP)、目的端口(TCP、UDP)、IP包的16位標(biāo)識、IP包的3位標(biāo)志及13位片偏移及協(xié)議類型輸出給學(xué)習(xí)/處理模塊;其余的直接輸出給NAT處理模塊或者NAT逆處理模塊。
[0040]5.數(shù)據(jù)緩沖模塊
數(shù)據(jù)緩沖模塊基于BL0CKRAM實現(xiàn),用于實現(xiàn)數(shù)據(jù)包的緩存,還可以消除由于NAT處理過程的時延抖動造成數(shù)據(jù)包的累積。
[0041]6.NAT處理模塊
NAT模塊與提取模塊、數(shù)據(jù)緩沖模塊和學(xué)習(xí)/處理模塊相連,主要有兩個作用:一、接收提取模塊的輸出,并結(jié)合數(shù)據(jù)緩沖模塊中的數(shù)據(jù)包內(nèi)容,實現(xiàn)私網(wǎng)NAT IP的ARP功能及ICMP 功能及 ICMP 的 NAT 功能(ICMP 是(Internet Control Message Protocol) Internet控制報文協(xié)議。它是TCP/IP協(xié)議族的一個子協(xié)議,用于在IP主機(jī)、路由器之間傳遞控制消息。);二、接收學(xué)習(xí)/處理模塊的輸出,并結(jié)合提取模塊的輸出、數(shù)據(jù)緩沖模塊中的數(shù)據(jù)包內(nèi)容,實現(xiàn)私網(wǎng)到公網(wǎng)TCP、UDP數(shù)據(jù)包的源IP、源端口替換,實現(xiàn)私網(wǎng)到公網(wǎng)的NAT處理,并重新計算IP首部校驗和、TCP校驗和、UDP校驗和。
[0042]7.NAT逆處理模塊
NAT逆處理模塊實現(xiàn)公網(wǎng)數(shù)據(jù)到私網(wǎng)的NAT處理,與NAT處理模塊大部分功能相同,除了以下兩點(diǎn):一、沒有ICMP的NAT功能;二、公網(wǎng)到私網(wǎng)TCP、UDP數(shù)據(jù)包替換的是目的IP、目的端口。
[0043]本實施例中,從私網(wǎng)來的千兆以太網(wǎng)數(shù)據(jù)包通過FPGA中的SGMII接口進(jìn)入FPGA中,由以太網(wǎng)接口模塊對數(shù)據(jù)包進(jìn)行接收、緩存;然后提取模塊從數(shù)據(jù)包中提取必要的信息,如源IP地址、目的IP地址、TCP、UDP端口號,協(xié)議類型等;然后將數(shù)據(jù)包存入數(shù)據(jù)緩沖模塊,并將提取的數(shù)據(jù)包信息提交給學(xué)習(xí)處理模塊;學(xué)習(xí)/處理模塊檢查自己能否處理此信息,如果不能處理這些信息則將接收到的信息提交給處理器,如果能處理,則根據(jù)學(xué)習(xí)到的內(nèi)容進(jìn)行處理,并將處理結(jié)果提交給NAT處理模塊;處理器接收到數(shù)據(jù)包信息后,根據(jù)預(yù)設(shè)的規(guī)則進(jìn)行處理,并將處理結(jié)果返回給學(xué)習(xí)/處理模塊;學(xué)習(xí)/處理模塊學(xué)習(xí)處理結(jié)果,并將處理結(jié)果提交給NAT處理模塊;NAT處理模塊接收到處理結(jié)果后,從數(shù)據(jù)緩沖模塊中讀出數(shù)據(jù)包并根據(jù)處理結(jié)果對數(shù)據(jù)進(jìn)行NAT處理,然后提交給以太網(wǎng)接口模塊;以太網(wǎng)接口模塊將數(shù)據(jù)包緩存并發(fā)送到公網(wǎng)或私網(wǎng)上。反之從公網(wǎng)過來的數(shù)據(jù)包也通過相應(yīng)的流程進(jìn)行NAT逆處理。
[0044]一種基于SOPC的NAT實現(xiàn)方法可分為數(shù)據(jù)流步驟和控制流步驟。
[0045]一、控制流步驟包括步驟:
P1,處理器模塊從配置下發(fā)通道接收配置數(shù)據(jù)。
[0046]當(dāng)配置下發(fā)通道接收到外部外部發(fā)送過來的配置數(shù)據(jù)時,將產(chǎn)生中斷信號。處理器模塊接收到中斷后,將讀取配置數(shù)據(jù),并與本地保存的配置數(shù)據(jù)比較,只對更新的內(nèi)容進(jìn)行更改。初始時,本地配置數(shù)據(jù)為初始默認(rèn)配置。
[0047]P2,處理器模塊更新、維護(hù)NAT處理表(NAT處理表存儲在外部存儲器中)。
[0048]在以下三種情況下,需要對NAT處理表進(jìn)行更新、維護(hù)。第一、配置下發(fā)通道接收到下發(fā)數(shù)據(jù),并且存在NAT處理表相關(guān)內(nèi)容的更改;第二、有新分配IP、端口發(fā)生;第三、定時刷新標(biāo)志位置位。NAT處理表分為私網(wǎng)NAT處理表和公網(wǎng)NAT處理表,私網(wǎng)NAT處理表結(jié)構(gòu)及其邏輯關(guān)系如圖2所示,公網(wǎng)NAT處理表的結(jié)構(gòu)及邏輯關(guān)系如圖3所示。
[0049]如圖2所示,私網(wǎng)NAT處理表、公網(wǎng)NAT處理表都包含端口查找表和IP查找表。其中端口查找表表項數(shù)固定為65536項,即全端口范圍。IP查找表表項也固定,表項數(shù)視應(yīng)用需求的復(fù)雜度而定,通常取8、16、32,如果僅是單個公網(wǎng)IP的簡單NAT處理(例如五元組NAT),可省去IP查找表。IP查找表在NAT處理表的更新、維護(hù)過程中動態(tài)分配和回收。私網(wǎng)IP查找表按源IP排序放置,公網(wǎng)IP查找表按遠(yuǎn)程IP排序放置,以提高查找速度。
[0050]私網(wǎng)端口查找表包含10項,即有效標(biāo)識、指針