專利名稱:一種基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,尤其涉及一種基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn) 換方法及系統(tǒng)。
背景技術(shù):
通過使用NAT (網(wǎng)絡(luò)地址轉(zhuǎn)換)技術(shù), 一個組織可以重用一個或多個 注冊過的全球唯一的IP地址,這可以在一定程度上緩解互聯(lián)網(wǎng)絡(luò)IP地址不 足的壓力。圖1是傳統(tǒng)的NAT功能實現(xiàn)方式。數(shù)據(jù)包轉(zhuǎn)發(fā)單元101:數(shù)據(jù)包轉(zhuǎn)發(fā)單元101接收到輸入的原始數(shù)據(jù)報文 107,進(jìn)行相應(yīng)的業(yè)務(wù)處理和路由轉(zhuǎn)發(fā)等功能的實現(xiàn);對于需要進(jìn)行NAT處 理的數(shù)據(jù)報文,送到NAT業(yè)務(wù)處理單元102;NAT業(yè)務(wù)處理單元102: NAT業(yè)務(wù)處理單元102從數(shù)據(jù)包轉(zhuǎn)發(fā)單元101 接收到需要進(jìn)行NAT處理的原始數(shù)據(jù)報文107,查找對應(yīng)的NAT轉(zhuǎn)換條目 信息109,進(jìn)行源IP地址或者目的IP地址轉(zhuǎn)換,將轉(zhuǎn)換后數(shù)據(jù)報文108再 次送到數(shù)據(jù)包轉(zhuǎn)發(fā)單元101進(jìn)行轉(zhuǎn)發(fā)處理。當(dāng)查找不到相應(yīng)的轉(zhuǎn)換條目信息 時,需要將相應(yīng)的原始數(shù)據(jù)報文107送到協(xié)議處理單元105生成轉(zhuǎn)換條目;CPU隊列單元103:該隊列是NAT業(yè)務(wù)處理單元102和協(xié)議處理單元 105的接口,用于原始數(shù)據(jù)報文107的緩存,協(xié)議處理單元105通過隊列讀 取單元104進(jìn)行數(shù)據(jù)報文的讀取。通常情況下NAT業(yè)務(wù)處理單元102是由 專用處理器、網(wǎng)絡(luò)處理器或ASIC實現(xiàn)的,而協(xié)議處理單元105是由通用處 理器實現(xiàn)的;隊列讀取單元104:該邏輯單元用于從CPU隊列單元103讀取數(shù)據(jù)報文, 并送給協(xié)議處理單元105進(jìn)行處理;協(xié)議處理單元105:接收到需要處理的原始數(shù)據(jù)報文107后,根據(jù)報文 的內(nèi)容,包括源IP、目的IP、協(xié)議類型、協(xié)議狀態(tài)等信息,生成對應(yīng)該數(shù) 據(jù)報文的NAT轉(zhuǎn)換條目信息109,并寫入到存儲單元106中;存儲單元106:該硬件存儲單元保存協(xié)議處理單元105生成的NAT轉(zhuǎn) 換條目信息109,供NAT業(yè)務(wù)處理單元102根據(jù)原始數(shù)據(jù)報文107的內(nèi)容 進(jìn)行查找;,原始數(shù)據(jù)報文107:該數(shù)據(jù)報文是指輸入到數(shù)據(jù)包轉(zhuǎn)發(fā)單元101的數(shù)據(jù) 報文,可能被應(yīng)用到各種業(yè)務(wù)處理中;轉(zhuǎn)換后數(shù)據(jù)報文108:經(jīng)過NAT業(yè)務(wù)處理單元102進(jìn)行過NAT轉(zhuǎn)換(包 括源轉(zhuǎn)換和目的轉(zhuǎn)換)的數(shù)據(jù)報文,該報文的IP地址和協(xié)議端口內(nèi)容是根 據(jù)對應(yīng)的NAT轉(zhuǎn)換條目信息109從原始數(shù)據(jù)報文107轉(zhuǎn)換而來的;NAT轉(zhuǎn)換條目信息109:該轉(zhuǎn)換信息由協(xié)議處理單元105生成,并儲存 到存儲單元106中,原始數(shù)據(jù)報文107在NAT業(yè)務(wù)處理單元102中進(jìn)行NAT 轉(zhuǎn)換操作的時候,將會查找對應(yīng)的轉(zhuǎn)換信息。在這種傳統(tǒng)的網(wǎng)絡(luò)地址轉(zhuǎn)換實現(xiàn)方式中,有一個最大的缺陷上送的數(shù) 據(jù)報文沒有區(qū)分優(yōu)先級,在CPU隊列的緩存空間不足時,將無法即時滿足 重要用戶或重要數(shù)據(jù)報文的NAT處理。眾所周知,在路由器結(jié)構(gòu)中,數(shù)據(jù)包轉(zhuǎn)發(fā)單元101和NAT業(yè)務(wù)處理單 元102通常是在專用處理器、網(wǎng)絡(luò)處理器或ASIC中實現(xiàn)的,而協(xié)議處理單 元105通常是在通用處理器中實現(xiàn)的,這兩個部分在處理能力上存在較大差 別,前者的高速的處理能力使得在將原始數(shù)據(jù)報文107上送協(xié)議處理單元 105時,經(jīng)常會出現(xiàn)CPU隊列單元103堵滿的情況,在隊列堵滿時,再上 送的數(shù)據(jù)報文會被丟棄掉,即使后面需要上送的是高優(yōu)先級的數(shù)據(jù)報文也不 例外。這樣產(chǎn)生的后果是,有些高優(yōu)先級的用戶在訪問外部網(wǎng)絡(luò)時會由于低 優(yōu)先級用戶的堵塞而無法連接。發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是提供一種基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換方法及系統(tǒng),改善了數(shù)據(jù)報文上送的方式,更好的保證了高優(yōu)先級數(shù)據(jù)報文的上送和相應(yīng)的NAT轉(zhuǎn)換條目信息的生成,保證了高優(yōu)先級用戶的應(yīng)用。為了解決上述問題,本發(fā)明提供了 一種基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換 方法,包括NAT業(yè)務(wù)處理單元、CPU隊列單元、隊列讀取單元,包括以下 步驟,a、 NAT業(yè)務(wù)處理單元將接收的需要進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換NAT處理的數(shù) 據(jù)報文,分成不同優(yōu)先級的多個隊列,并將不同級別的數(shù)據(jù)報文分別送到 CPU隊列單元的對應(yīng)的隊列,其中該數(shù)據(jù)報文是滿足NAT處理條件的數(shù)據(jù) 報文;b、 隊列讀取單元讀取CPU隊列單元中級別最高的隊列的數(shù)據(jù)報文并上 送,進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,直至該級別最高的隊列中數(shù)據(jù)報文讀空為止,再進(jìn) 行下一級別的隊列中數(shù)據(jù)報文的讀取并上送,進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,依此類推。進(jìn)一步地,上述方法還可包括,所述步驟a中還包括,數(shù)據(jù)包轉(zhuǎn)發(fā)單元接收需要進(jìn)行轉(zhuǎn)發(fā)處理的數(shù)據(jù)報文,進(jìn)行相應(yīng)的業(yè)務(wù)處 理和路由轉(zhuǎn)發(fā),對于需要進(jìn)行NAT處理的數(shù)據(jù)報文,送到NAT業(yè)務(wù)處理單元;NAT業(yè)務(wù)處理單元對輸入的數(shù)據(jù)報文進(jìn)行分析,判斷數(shù)據(jù)報文是否滿 足NAT處理條件,如果是,則根據(jù)相應(yīng)的NAT轉(zhuǎn)換條目信息進(jìn)行轉(zhuǎn)換,對 于無法找到NAT轉(zhuǎn)換條目信息的數(shù)據(jù)報文,NAT業(yè)務(wù)處理單元對該數(shù)據(jù)報 文的優(yōu)先級進(jìn)行分析,并將數(shù)據(jù)報文分成不同優(yōu)先級的多個隊列,將不同級 別的數(shù)據(jù)報文分別送到CPU隊列單元中對應(yīng)的隊列。進(jìn)一步地,上述方法還可包括,所述NAT業(yè)務(wù)處理單元對滿足NAT處 理條件的數(shù)據(jù)報文的優(yōu)先級進(jìn)行分析,包括對發(fā)送數(shù)據(jù)報文的用戶進(jìn)行區(qū) 分,根據(jù)用戶的優(yōu)先級確定數(shù)據(jù)報文的優(yōu)先級;和/或?qū)?shù)據(jù)報文的應(yīng)用進(jìn) 行區(qū)分,根據(jù)數(shù)據(jù)報文的應(yīng)用的優(yōu)先級確定數(shù)據(jù)報文的優(yōu)先級;和/或?qū)?shù) 據(jù)報文攜帶的優(yōu)先級進(jìn)行區(qū)分,根據(jù)數(shù)據(jù)報文攜帶的優(yōu)先級確定數(shù)據(jù)報文的 優(yōu)先級。進(jìn)一步地,上述方法還可包括,所述步驟a中進(jìn)一步包括,NAT業(yè)務(wù)處理單元對輸入數(shù)據(jù)報文進(jìn)行分析,對不滿足NAT處理條件 的數(shù)據(jù)報文送回到數(shù)據(jù)包轉(zhuǎn)發(fā)單元進(jìn)行數(shù)據(jù)報文的普通轉(zhuǎn)發(fā)。進(jìn)一步地,上述方法還可包括,所述步驟b中還包括,隊列讀取單元優(yōu)先讀取CPU隊列單元中級別最高的隊列的數(shù)據(jù)報文并 將其送到協(xié)議處理單元,如果該級別最高的隊列有數(shù)據(jù)報文,則繼續(xù)讀取, 直到該級別最高的隊列為空,然后讀取下一級別隊列的數(shù)據(jù)報文,依此類推;協(xié)議處理單元收到數(shù)據(jù)報文后,生成相應(yīng)的NAT轉(zhuǎn)換條目信息,存儲 于存儲單元中。本發(fā)明還提供了 一種基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng),包括優(yōu)先級 NAT業(yè)務(wù)處理單元、CPU隊列單元、隊列讀取單元,其中,優(yōu)先級NAT業(yè)務(wù)處理單元,用于將接收的需要進(jìn)行NAT處理并滿足 NAT處理條件的數(shù)據(jù)報文,分成不同優(yōu)先級的多個隊列,并將分別送到CPU 隊列單元中的對應(yīng)隊列;CPU隊列單元,其中包括不同的優(yōu)先級的多個隊列,用于將優(yōu)先級NAT 業(yè)務(wù)處理單元發(fā)送的不同級別的數(shù)據(jù)報文存儲于相應(yīng)優(yōu)先級的隊列;隊列讀取單元,用于讀取CPU隊列單元中發(fā)送的級別最高的隊列的數(shù) 據(jù)報文并上送,進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,直至該級別最高的隊列中數(shù)據(jù)報文讀空 為止,再進(jìn)行下一級別的隊列中數(shù)據(jù)報文的讀取并上送,進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換, 依此類推。進(jìn)一步地,上述網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng)還可包括,所述優(yōu)先級NAT業(yè)務(wù)處 理單元,還用于接收數(shù)據(jù)包轉(zhuǎn)發(fā)單元發(fā)送的需要進(jìn)行NAT處理的數(shù)據(jù)報文, 查找對應(yīng)的NAT轉(zhuǎn)換條目信息,進(jìn)行源轉(zhuǎn)換或者目的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù) 據(jù)報文再次送到數(shù)據(jù)包轉(zhuǎn)發(fā)單元進(jìn)行轉(zhuǎn)發(fā)處理,當(dāng)查找不到相應(yīng)的轉(zhuǎn)換條目 時,需要將相應(yīng)的數(shù)據(jù)報文通過CPU隊列單元送到協(xié)議處理單元生成NAT 轉(zhuǎn)換條目信息。進(jìn)一步地,上述網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng)還可包括,所述優(yōu)先級NAT業(yè)務(wù)處 理單元將接收的需要進(jìn)行NAT處理并滿足NAT處理條件的數(shù)據(jù)報文,區(qū)分 不同的優(yōu)先級,分別送到CPU隊列單元中的對應(yīng)隊列,包括,對發(fā)送數(shù)據(jù)報文的用戶進(jìn)行區(qū)分,根據(jù)用戶的優(yōu)先級將數(shù)據(jù)報文分類,分別送到CPU隊列單元中的對應(yīng)隊列;和/或?qū)?shù)據(jù)報文的應(yīng)用進(jìn)行區(qū)分, 根據(jù)數(shù)據(jù)報文的應(yīng)用的優(yōu)先級將數(shù)據(jù)報文分類,分別送到CPU隊列單元中 的對應(yīng)隊列;和/或?qū)?shù)據(jù)報文攜帶的優(yōu)先級進(jìn)行區(qū)分,根據(jù)數(shù)據(jù)報文攜帶 的優(yōu)先級將數(shù)據(jù)報文分類,分別送到CPU隊列單元中的對應(yīng)隊列。進(jìn)一步地,上述網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng)還可包括,所述隊列讀取單元,還用 于讀取CPU隊列單元的數(shù)據(jù)報文,并將讀取的數(shù)據(jù)報文發(fā)送給協(xié)議處理單 元。進(jìn)一步地,上述網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng)還可包括,數(shù)據(jù)包轉(zhuǎn)發(fā)單元、協(xié)議處 理單元、存儲單元,其中,數(shù)據(jù)包轉(zhuǎn)發(fā)單元,用于接收輸入的原始數(shù)據(jù)報文,進(jìn)行相應(yīng)的業(yè)務(wù)處理 和路由轉(zhuǎn)發(fā),對于需要進(jìn)行NAT處理的數(shù)據(jù)報文,送到優(yōu)先級NAT業(yè)務(wù)處 理單元;接收優(yōu)先級NAT業(yè)務(wù)處理單元發(fā)送的轉(zhuǎn)換后的數(shù)據(jù)報文并發(fā)送;協(xié)議處理單元,用于接收隊列讀取單元發(fā)送的數(shù)據(jù)報文,根據(jù)數(shù)據(jù)報文 的內(nèi)容,包括源IP、目的IP、協(xié)議類型、協(xié)議狀態(tài)的信息,生成對應(yīng)該數(shù) 據(jù)報文的NAT轉(zhuǎn)換條目信息,并寫入存儲單元;存儲單元,用于保存協(xié)議處理單元生成的NAT轉(zhuǎn)換條目信息,為優(yōu)先 級NAT業(yè)務(wù)處理單元提供生成的NAT轉(zhuǎn)換條目信息。與現(xiàn)有技術(shù)相比,應(yīng)用本發(fā)明,克服現(xiàn)有實現(xiàn)方式中無法對NAT用戶 和NAT數(shù)據(jù)報文區(qū)分優(yōu)先級進(jìn)行轉(zhuǎn)換條目生成的缺陷,改善了數(shù)據(jù)報文上 送的方式,更好的保證了高優(yōu)先級數(shù)據(jù)報文的上送和相應(yīng)的NAT轉(zhuǎn)換條目 信息的生成,保證了高優(yōu)先級用戶的應(yīng)用,本發(fā)明修改方式很筒單,但是從 很大程度上保證了系統(tǒng)對高優(yōu)先級用戶和高優(yōu)先級業(yè)務(wù)的支持。
圖1是傳統(tǒng)的NAT功能實現(xiàn)框圖;圖2是本發(fā)明的基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換方法的流程圖; 圖3是本發(fā)明的基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng)的結(jié)構(gòu)圖;圖4是本發(fā)明改進(jìn)的NAT處理方式的實現(xiàn)效果示意圖5是本發(fā)明中CPU隊列的實現(xiàn)框圖6是本發(fā)明中CPU隊列入隊列方向流程圖7是本發(fā)明中CPU隊列出隊列方向流程圖。
具體實施例方式
下面結(jié)合附圖和具體實施方式
對本發(fā)明作進(jìn)一步說明。
本發(fā)明對CPU單元和NAT業(yè)務(wù)處理單元上送數(shù)據(jù)報文的流程進(jìn)行了修 改,在將數(shù)據(jù)報文上送CPU隊列單元的時候,可以根據(jù)用戶的級別或者數(shù) 據(jù)報文的性質(zhì)區(qū)分優(yōu)先級,保證高優(yōu)先級用戶的數(shù)據(jù)報文或者高優(yōu)先級的數(shù) 據(jù)報文可以上送到協(xié)議處理單元生成NAT轉(zhuǎn)換條目信息,從而更好的保證 系統(tǒng)對高優(yōu)先級用戶和高優(yōu)先級業(yè)務(wù)的支持。
本發(fā)明的基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換方法,主要構(gòu)思是在NAT 業(yè)務(wù)處理單元中,將接收的需要進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換NAT處理并滿足NAT處 理條件的數(shù)據(jù)報文,根據(jù)用戶的級別或者數(shù)據(jù)報文的性質(zhì)確定數(shù)據(jù)報文的優(yōu) 先級,分成不同優(yōu)先級的多個隊列,在數(shù)據(jù)報文上送CPU隊列單元時,將 不同級別的數(shù)據(jù)報文分別送到CPU隊列單元中對應(yīng)的隊列,在讀取隊列時, 只要高優(yōu)先級的隊列中有數(shù)據(jù)報文,就進(jìn)行該隊列的讀操作,而不理會低優(yōu) 先級隊列的數(shù)據(jù)報文,直到高優(yōu)先級隊列被讀空,才去查找低優(yōu)先級的隊列 是否有數(shù)據(jù)報文并讀??;這在很大程度上,保證了高優(yōu)先級數(shù)據(jù)報文的上送 和相應(yīng)的NAT轉(zhuǎn)換條目信息的生成。
本發(fā)明的基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換方法,如圖2所示,包括以下 步驟,
步驟210:數(shù)據(jù)包轉(zhuǎn)發(fā)單元接收需要進(jìn)行轉(zhuǎn)發(fā)處理的數(shù)據(jù)報文,進(jìn)行相 應(yīng)的業(yè)務(wù)處理和路由轉(zhuǎn)發(fā),對于需要進(jìn)行NAT處理的數(shù)據(jù)報文,送到優(yōu)先 級NAT業(yè)務(wù)處理單元;
步驟220:優(yōu)先級NAT業(yè)務(wù)處理單元對輸入的數(shù)據(jù)報文進(jìn)行分析,判 斷數(shù)據(jù)報文是否滿足NAT處理條件,如果是,則執(zhí)行步驟240,否則執(zhí)行步驟230;
步驟230:優(yōu)先級NAT業(yè)務(wù)處理單元將不滿足NAT處理條件的數(shù)據(jù)報 文送回到數(shù)據(jù)包轉(zhuǎn)發(fā)單元進(jìn)行數(shù)據(jù)報文的普通轉(zhuǎn)發(fā),結(jié)束流程;
步驟240:優(yōu)先級NAT業(yè)務(wù)處理單元根據(jù)相應(yīng)的NAT轉(zhuǎn)換條目信息進(jìn) 行轉(zhuǎn)換,對于無法找到NAT轉(zhuǎn)換條目信息的數(shù)據(jù)報文,優(yōu)先級NAT業(yè)務(wù)處 理單元對滿足NAT處理條件的數(shù)據(jù)報文的優(yōu)先級進(jìn)行分析,將不同級別的 數(shù)據(jù)報文分別送到CPU隊列單元中對應(yīng)的隊列中;
優(yōu)先級NAT業(yè)務(wù)處理單元對滿足NAT處理條件的數(shù)據(jù)報文的優(yōu)先級進(jìn) 行分析,將高優(yōu)先級的數(shù)據(jù)報文送到CPU隊列單元中高優(yōu)先級的隊列中, 低優(yōu)先級的數(shù)據(jù)報文送到CPU隊列單元中低優(yōu)先級的隊列中。
優(yōu)先級NAT業(yè)務(wù)處理單元對滿足NAT處理條件的數(shù)據(jù)報文的優(yōu)先級進(jìn) 行分析,包括對發(fā)送數(shù)據(jù)報文的用戶進(jìn)行區(qū)分,根據(jù)用戶的優(yōu)先級確定數(shù)據(jù) 報文的優(yōu)先級;和/或?qū)?shù)據(jù)報文的應(yīng)用(TOS服務(wù)類型)進(jìn)行區(qū)分,根據(jù) 數(shù)據(jù)報文的應(yīng)用的優(yōu)先級確定數(shù)據(jù)報文的優(yōu)先級;和/或?qū)?shù)據(jù)報文攜帶的 優(yōu)先級(DSCP差異化服務(wù)編碼點)進(jìn)行區(qū)分,根據(jù)數(shù)據(jù)報文攜帶的優(yōu)先級 (DSCP差異化服務(wù)編碼點)確定數(shù)據(jù)報文的優(yōu)先級(本發(fā)明并不限于以上 幾種數(shù)據(jù)報文的優(yōu)先級確定方法)。
其中數(shù)據(jù)報文的優(yōu)先級的判斷方式可以根據(jù)配置來進(jìn)行選擇,或者根據(jù) 數(shù)據(jù)報文對應(yīng)用戶的性質(zhì)(高付費),或者根據(jù)數(shù)據(jù)報文本身應(yīng)用的性質(zhì)(語 音/視頻等)來判斷數(shù)據(jù)報文的優(yōu)先級。
步驟250:隊列讀取單元優(yōu)先讀取CPU隊列單元中級別最高的隊列的數(shù) 據(jù)報文并將其送到協(xié)議處理單元,如果該級別最高的隊列有數(shù)據(jù)報文,則繼 續(xù)讀取,直到該級別最高的隊列為空,然后讀取下一級別隊列的數(shù)據(jù)報文, 依此類推;
步驟260:協(xié)議處理單元收到數(shù)據(jù)報文后,生成相應(yīng)的NAT轉(zhuǎn)換條目 信息,存儲于存儲單元中。
如圖3所示,基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng),包括,數(shù)據(jù)包轉(zhuǎn)發(fā) 單元、優(yōu)先級NAT業(yè)務(wù)處理單元、協(xié)議處理單元、存儲單元、CPU隊列單元、隊列讀取單元,其中,
數(shù)據(jù)包轉(zhuǎn)發(fā)單元用于接收輸入的原始數(shù)據(jù)報文,進(jìn)行相應(yīng)的業(yè)務(wù)處理 和路由轉(zhuǎn)發(fā)等功能,對于需要進(jìn)行NAT處理的原始數(shù)據(jù)報文,送到優(yōu)先級 NAT業(yè)務(wù)處理單元;接收優(yōu)先級NAT業(yè)務(wù)處理單元發(fā)送的轉(zhuǎn)換后的數(shù)據(jù)報 文并發(fā)送;(對于需要進(jìn)行NAT處理的數(shù)據(jù)報文,送到優(yōu)先級NAT業(yè)務(wù)處 理單元,與傳統(tǒng)的處理方式相同);
優(yōu)先級NAT業(yè)務(wù)處理單元(優(yōu)先級NAT業(yè)務(wù)處理單元在傳統(tǒng)的NAT 業(yè)務(wù)處理單元基礎(chǔ)上衍生得到)用于接收數(shù)據(jù)包轉(zhuǎn)發(fā)單元發(fā)送的需要進(jìn)行 NAT處理的數(shù)據(jù)報文,查找對應(yīng)的NAT轉(zhuǎn)換條目信息,進(jìn)行源轉(zhuǎn)換或者目 的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)^J艮文再次送到數(shù)據(jù)包轉(zhuǎn)發(fā)單元進(jìn)行轉(zhuǎn)發(fā)處理,當(dāng)查 找不到相應(yīng)的轉(zhuǎn)換條目時,需要將相應(yīng)的原始數(shù)據(jù)報文通過CPU隊列單元 送到協(xié)議處理單元生成NAT轉(zhuǎn)換條目信息;對于需要上送協(xié)議處理單元的 數(shù)據(jù)報文,先要根據(jù)用戶的級別或者數(shù)據(jù)報文的性質(zhì)區(qū)分其優(yōu)先級,將不同 優(yōu)先級的數(shù)據(jù)報文分別送到CPU隊列單元中的對應(yīng)隊列;
所述優(yōu)先級NAT業(yè)務(wù)處理單元將接收的需要進(jìn)行NAT處理并滿足 NAT處理條件的數(shù)據(jù)報文,區(qū)分不同的優(yōu)先級,分別送到CPU隊列單元中 的對應(yīng)隊列,包括,
根據(jù)用戶的優(yōu)先級將數(shù)據(jù)報文分類,分別送到CPU隊列單元中的對應(yīng) 隊列;和/或?qū)?shù)據(jù)報文的應(yīng)用進(jìn)行區(qū)分,根據(jù)數(shù)據(jù)報文的應(yīng)用的優(yōu)先級將 數(shù)據(jù)報文分類,分別送到CPU隊列單元中的對應(yīng)隊列;和/或?qū)?shù)據(jù)報文攜 帶的優(yōu)先級進(jìn)行區(qū)分,根據(jù)數(shù)據(jù)報文攜帶的優(yōu)先級將數(shù)據(jù)報文分類,分別送 到CPU隊列單元中的對應(yīng)隊列。
CPU隊列單元其中包括不同的優(yōu)先級的多個隊列,用于將優(yōu)先級NAT 業(yè)務(wù)處理單元發(fā)送的不同級別的數(shù)據(jù)報文存儲于相應(yīng)優(yōu)先級的隊列;在讀取 側(cè),如果高優(yōu)先級的隊列中有數(shù)據(jù)報文,則始終讀取該隊列,直到高優(yōu)先級 的隊列都空,才進(jìn)行下一級別隊列的讀取操作,這個判斷過程在本隊列模塊 中完成,不需要對外部模塊進(jìn)行修改;
隊列讀取單元,用于讀取CPU隊列單元的數(shù)據(jù)報文,并將讀取的數(shù)據(jù) ^^文發(fā)送給協(xié)議處理單元;協(xié)議處理單元用于接收隊列讀取單元發(fā)送的數(shù)據(jù)報文,根據(jù)數(shù)據(jù)報文 的內(nèi)容,包括源IP、目的IP、協(xié)議類型、協(xié)議狀態(tài)等信息,生成對應(yīng)該數(shù) 據(jù)報文的NAT轉(zhuǎn)換條目信息,并寫入存儲單元;
存儲單元用于保存協(xié)議處理單元生成的NAT轉(zhuǎn)換條目信息,為優(yōu)先 級NAT業(yè)務(wù)處理單元提供生成的NAT轉(zhuǎn)換條目信息。
圖4描述了本發(fā)明改進(jìn)的NAT處理方式的實現(xiàn)效果
當(dāng)有大量的高優(yōu)先級數(shù)據(jù)報文301和低優(yōu)先級數(shù)據(jù)報文302上送到CPU 隊列單元202時,根據(jù)不同的優(yōu)先級分別進(jìn)入到對應(yīng)的隊列中,由于在讀取 的時候,優(yōu)先讀取高優(yōu)先級隊列,因此,有可能導(dǎo)致低優(yōu)先級的隊列堵塞, 從而導(dǎo)致低優(yōu)先級數(shù)據(jù)報文302被部分丟棄。因此,大量的高優(yōu)先級數(shù)據(jù)報 文301和少量的低優(yōu)先級數(shù)據(jù)報文302到達(dá)隊列讀取單元104,并進(jìn)入到協(xié) 議處理單元105用來生成NAT轉(zhuǎn)換條目信息。
圖5是本發(fā)明中CPU隊列的實現(xiàn)框圖
高優(yōu)先級隊列401: —個普通的數(shù)據(jù)緩沖單元,用于高優(yōu)先級數(shù)據(jù)報文 的數(shù)據(jù)存儲,放置在CPU隊列單元202內(nèi)部;
次高優(yōu)先級隊列402:與高優(yōu)先級隊列401—樣,作為數(shù)據(jù)緩沖,用于 次高優(yōu)先級數(shù)據(jù)報文的數(shù)據(jù)存儲,放置在CPU隊列單元202內(nèi)部;
低優(yōu)先級隊列403:用于低優(yōu)先級數(shù)據(jù)報文的數(shù)據(jù)存儲,放置在CPU 隊列單元202內(nèi)部;
數(shù)據(jù)控制和緩沖單元404:該單元是隊列讀取單元104與各個優(yōu)先級隊 列的接口 ,對各個優(yōu)先級隊列進(jìn)行讀取操作,并且這種讀取不是輪詢方式的。 當(dāng)隊列讀取單元104有讀取操作時,數(shù)據(jù)控制和緩沖單元404首先對高優(yōu)先 級隊列401進(jìn)行檢查,如果該隊列有數(shù)據(jù),則對其進(jìn)行讀取操作,直到該隊 列為空,才對次高優(yōu)先級隊列402進(jìn)行讀取操作,依此類推,直到其它的隊 列都為空,才會對低優(yōu)先級隊列403進(jìn)行讀取操作。這樣就相對較好的保證 了高優(yōu)先級數(shù)據(jù)報文的順利傳遞。
在這種實現(xiàn)方式下,所有的修改都是在CPU隊列單元202內(nèi)部進(jìn)行的, 對于隊列讀取單元104并不需要進(jìn)行修改。圖6是本發(fā)明中CPU隊列入隊列方向流程圖
報文處理主流程501:這里指的是數(shù)據(jù)報文轉(zhuǎn)發(fā)處理的主流程,包括所 有業(yè)務(wù)的處理流程;
區(qū)分優(yōu)先級選擇模式502:在進(jìn)行數(shù)據(jù)報文的優(yōu)先級區(qū)分時,即可以根 據(jù)數(shù)據(jù)報文所攜帶的優(yōu)先級信息,又可以根據(jù)數(shù)據(jù)報文所屬用戶的等級來區(qū) 分,即該數(shù)據(jù)報文所屬用戶對應(yīng)的列表的優(yōu)先級,這里可以進(jìn)行區(qū)分模式的
選擇;
用戶列表模式處理503:在用戶列表模式下,數(shù)據(jù)報文的優(yōu)先級按照該 用戶所屬列表的優(yōu)先級來提取,該用戶所屬的優(yōu)先級是可以修改的;
報文模式處理504:在報文模式下,該數(shù)據(jù)報文的優(yōu)先級從數(shù)據(jù)報文的 優(yōu)先級字段直接提??;
優(yōu)先級隊列選擇505:按照前面提取的優(yōu)先級,分別將數(shù)據(jù)報文送到對 應(yīng)的隊列;
發(fā)送數(shù)據(jù)報文506:數(shù)據(jù)控制和緩沖單元404從各個隊列中將數(shù)據(jù)報文 讀出,并發(fā)送到隊列讀取單元104。
圖7是本發(fā)明中CPU隊列出隊列方向流程圖
空閑601:沒有讀#:作時,等待;
高優(yōu)先級隊列非空602:在進(jìn)行讀操作時,先對高優(yōu)先級隊列401進(jìn)行 判斷,如果該隊列非空,則對該隊列進(jìn)行讀操作,跳轉(zhuǎn)到讀取當(dāng)前數(shù)據(jù)報文 605,如果當(dāng)前隊列為空,跳轉(zhuǎn)到次高優(yōu)先級隊列非空603,對次高優(yōu)先級 隊列402進(jìn)行判斷;
次高優(yōu)先級隊列非空603:如果該隊列非空,則對該隊列進(jìn)行讀操作, 跳轉(zhuǎn)到讀取當(dāng)前數(shù)據(jù)報文605,如果當(dāng)前隊列為空,則繼續(xù)對較低優(yōu)先級的 隊列進(jìn)行判斷;
低優(yōu)先級隊列非空604:如果其它優(yōu)先級的隊列都為空,則會在讀操作 時跳轉(zhuǎn)到本流程,對低優(yōu)先級隊列403進(jìn)行判斷并讀取,如果該隊列也為空, 則所有隊列中都沒有數(shù)據(jù)報文可讀,直接跳回空閑601狀態(tài)進(jìn)行等待;
讀取當(dāng)前數(shù)據(jù)報文605:進(jìn)行讀才喿作,從對應(yīng)隊列中讀取數(shù)據(jù)報文。綜上,本發(fā)明修改了 CPU隊列的實現(xiàn)方式,以及數(shù)據(jù)報文上送CPU隊 列的實現(xiàn)方式,對CPU隊列和上送的數(shù)據(jù)報文區(qū)分了優(yōu)先級,實現(xiàn)了一種基
于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換方法,改善了數(shù)據(jù)報文上送的效果,更好的保 證了高優(yōu)先級數(shù)據(jù)報文的上送和條目的生成。該方法可以應(yīng)用于基于網(wǎng)絡(luò)處
理器或者ASIC的數(shù)據(jù)報文轉(zhuǎn)發(fā)裝置和NAT設(shè)備中。 本發(fā)明的變更設(shè)計及其它用途
本發(fā)明的結(jié)構(gòu)(方法)在作以下的變更后,還可以提供相近的功效
對于優(yōu)先級CPU隊列202中CPU隊列個數(shù)的設(shè)置,可以根據(jù)一定的算 法進(jìn)行調(diào)整,進(jìn)而達(dá)到不同的效果。隊列的個數(shù)越多,對用戶和數(shù)據(jù)報文的 優(yōu)先級劃分越詳細(xì)。
本發(fā)明還可以運用在以下的產(chǎn)品(方法)中
本發(fā)明可以應(yīng)用于基于"網(wǎng)絡(luò)處理器+ CPU"的數(shù)據(jù)報文轉(zhuǎn)發(fā)架構(gòu)中, 也可以應(yīng)用于"ASIC (特定用途集成電路)+CPU"的數(shù)據(jù)報文轉(zhuǎn)發(fā)架構(gòu) 中,同樣可以應(yīng)用于其它基于"硬件數(shù)據(jù)報文轉(zhuǎn)發(fā)+ CPU"的數(shù)據(jù)產(chǎn)品中。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護(hù)范圍并不 局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到 的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范 圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1、一種基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換方法,包括NAT業(yè)務(wù)處理單元、CPU隊列單元、隊列讀取單元,其特征在于,包括以下步驟,a、NAT業(yè)務(wù)處理單元將接收的需要進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換NAT處理的數(shù)據(jù)報文,分成不同優(yōu)先級的多個隊列,并將不同級別的數(shù)據(jù)報文分別送到CPU隊列單元的對應(yīng)的隊列,其中該數(shù)據(jù)報文是滿足NAT處理條件的數(shù)據(jù)報文;b、隊列讀取單元讀取CPU隊列單元中級別最高的隊列的數(shù)據(jù)報文并上送,進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,直至該級別最高的隊列中數(shù)據(jù)報文讀空為止,再進(jìn)行下一級別的隊列中數(shù)據(jù)報文的讀取并上送,進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,依此類推。
2、 如權(quán)利要求l所述的方法,其特征在于, 所述步驟a中還包括,數(shù)據(jù)包轉(zhuǎn)發(fā)單元接收需要進(jìn)行轉(zhuǎn)發(fā)處理的數(shù)據(jù)報文,進(jìn)行相應(yīng)的業(yè)務(wù)處 理和路由轉(zhuǎn)發(fā),對于需要進(jìn)行NAT處理的數(shù)據(jù)報文,送到NAT業(yè)務(wù)處理單 元;NAT業(yè)務(wù)處理單元對輸入的數(shù)據(jù)報文進(jìn)行分析,判斷數(shù)據(jù)報文是否滿 足NAT處理條件,如果是,則根據(jù)相應(yīng)的NAT轉(zhuǎn)換條目信息進(jìn)行轉(zhuǎn)換,對 于無法找到NAT轉(zhuǎn)換條目信息的數(shù)據(jù)報文,NAT業(yè)務(wù)處理單元對該數(shù)據(jù)報 文的優(yōu)先級進(jìn)行分析,并將數(shù)據(jù)報文分成不同優(yōu)先級的多個隊列,將不同級 別的數(shù)據(jù)報文分別送到CPU隊列單元中對應(yīng)的隊列。
3、 如權(quán)利要求2所述的方法,其特征在于, 所述NAT業(yè)務(wù)處理單元對滿足NAT處理條件的數(shù)據(jù)報文的優(yōu)先級進(jìn)行 分析,包括對發(fā)送數(shù)據(jù)報文的用戶進(jìn)行區(qū)分,根據(jù)用戶的優(yōu)先級確定數(shù)據(jù)報 文的優(yōu)先級;和/或?qū)?shù)據(jù)報文的應(yīng)用進(jìn)行區(qū)分,根據(jù)數(shù)據(jù)報文的應(yīng)用的優(yōu) 先級確定數(shù)據(jù)報文的優(yōu)先級;和/或?qū)?shù)據(jù)報文攜帶的優(yōu)先級進(jìn)行區(qū)分,根 據(jù)數(shù)據(jù)報文攜帶的優(yōu)先級確定數(shù)據(jù)報文的優(yōu)先級。
4、 如權(quán)利要求2所述的方法,其特征在于,所述步驟a中進(jìn)一步包括,NAT業(yè)務(wù)處理單元對輸入數(shù)據(jù)報文進(jìn)行分析,對不滿足NAT處理條件 的數(shù)據(jù)報文送回到數(shù)據(jù)包轉(zhuǎn)發(fā)單元進(jìn)行數(shù)據(jù)報文的普通轉(zhuǎn)發(fā)。
5、 如權(quán)利要求l所述的方法,其特征在于, 所述步驟b中還包括,隊列讀取單元優(yōu)先讀取CPU隊列單元中級別最高的隊列的數(shù)據(jù)報文并 將其送到協(xié)議處理單元,如果該級別最高的隊列有數(shù)據(jù)^^文,則繼續(xù)讀取, 直到該級別最高的隊列為空,然后讀取下一級別隊列的數(shù)據(jù)報文,依此類推;協(xié)議處理單元收到數(shù)據(jù)報文后,生成相應(yīng)的NAT轉(zhuǎn)換條目信息,存儲 于存儲單元中。
6、 一種基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng),其特征在于,包括優(yōu)先級NAT業(yè)務(wù)處理單元、CPU隊列單元、隊列讀取單元,其中,優(yōu)先級NAT業(yè)務(wù)處理單元,用于將接收的需要進(jìn)行NAT處理并滿足 NAT處理條件的數(shù)據(jù)報文,分成不同優(yōu)先級的多個隊列,并將分別送到CPU 隊列單元中的對應(yīng)隊列;CPU隊列單元,其中包括不同的優(yōu)先級的多個隊列,用于將優(yōu)先級NAT 業(yè)務(wù)處理單元發(fā)送的不同級別的數(shù)據(jù)報文存儲于相應(yīng)優(yōu)先級的隊列;隊列讀取單元,用于讀取CPU隊列單元中發(fā)送的級別最高的隊列的數(shù) 據(jù)報文并上送,進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,直至該級別最高的隊列中數(shù)據(jù)報文讀空 為止,再進(jìn)行下一級別的隊列中數(shù)據(jù)報文的讀取并上送,進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換, 依此類推。
7、 如權(quán)利要求6所述的網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng),其特征在于,所述優(yōu)先級NAT業(yè)務(wù)處理單元,還用于接收數(shù)據(jù)包轉(zhuǎn)發(fā)單元發(fā)送的需 要進(jìn)行NAT處理的數(shù)據(jù)報文,查找對應(yīng)的NAT轉(zhuǎn)換條目信息,進(jìn)行源轉(zhuǎn)換 或者目的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)報文再次送到數(shù)據(jù)包轉(zhuǎn)發(fā)單元進(jìn)行轉(zhuǎn)發(fā)處 理,當(dāng)查找不到相應(yīng)的轉(zhuǎn)換條目時,需要將相應(yīng)的數(shù)據(jù)報文通過CPU隊列 單元送到協(xié)議處理單元生成NAT轉(zhuǎn)換條目信息。
8、 如權(quán)利要求6或7所述的網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng),其特征在于,所述優(yōu)先級NAT業(yè)務(wù)處理單元將接收的需要進(jìn)行NAT處理并滿足 NAT處理條件的數(shù)據(jù)報文,區(qū)分不同的優(yōu)先級,分別送到CPU隊列單元中 的對應(yīng)隊列,包括,對發(fā)送數(shù)據(jù)報文的用戶進(jìn)行區(qū)分,根據(jù)用戶的優(yōu)先級將數(shù)據(jù)報文分類, 分別送到CPU隊列單元中的對應(yīng)隊列;和/或?qū)?shù)據(jù)報文的應(yīng)用進(jìn)行區(qū)分, 根據(jù)數(shù)據(jù)報文的應(yīng)用的優(yōu)先級將數(shù)據(jù)報文分類,分別送到CPU隊列單元中 的對應(yīng)隊列;和/或?qū)?shù)據(jù)報文攜帶的優(yōu)先級進(jìn)行區(qū)分,根據(jù)數(shù)據(jù)報文攜帶 的優(yōu)先級將數(shù)據(jù)報文分類,分別送到CPU隊列單元中的對應(yīng)隊列。
9、 如權(quán)利要求6所述的網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng),其特征在于,所述隊列讀取單元,還用于讀取CPU隊列單元的數(shù)據(jù)報文,并將讀取 的數(shù)據(jù)報文發(fā)送給協(xié)議處理單元。
10、 如權(quán)利要求6所述的網(wǎng)絡(luò)地址轉(zhuǎn)換系統(tǒng),其特征在于,還包括數(shù)據(jù)包轉(zhuǎn)發(fā)單元、協(xié)議處理單元、存儲單元,其中,數(shù)據(jù)包轉(zhuǎn)發(fā)單元,用于接收輸入的原始數(shù)據(jù)報文,進(jìn)行相應(yīng)的業(yè)務(wù)處理 和路由轉(zhuǎn)發(fā),對于需要進(jìn)行NAT處理的數(shù)據(jù)報文,送到優(yōu)先級NAT業(yè)務(wù)處 理單元;接收優(yōu)先級NAT業(yè)務(wù)處理單元發(fā)送的轉(zhuǎn)換后的數(shù)據(jù)報文并發(fā)送;協(xié)議處理單元,用于接收隊列讀取單元發(fā)送的數(shù)據(jù)報文,根據(jù)數(shù)據(jù)報文 的內(nèi)容,包括源IP、目的IP、協(xié)議類型、協(xié)議狀態(tài)的信息,生成對應(yīng)該數(shù) 據(jù)報文的NAT轉(zhuǎn)換條目信息,并寫入存儲單元;存儲單元,用于保存協(xié)議處理單元生成的NAT轉(zhuǎn)換條目信息,為優(yōu)先 級NAT業(yè)務(wù)處理單元提供生成的NAT轉(zhuǎn)換條目信息。
全文摘要
本發(fā)明公開了一種基于優(yōu)先級隊列的網(wǎng)絡(luò)地址轉(zhuǎn)換方法及系統(tǒng),包括,首先NAT業(yè)務(wù)處理單元將接收的需要進(jìn)行NAT處理的數(shù)據(jù)報文,分成不同優(yōu)先級的多個隊列,并將不同級別的數(shù)據(jù)報文分別送到CPU隊列單元的對應(yīng)的隊列,其中該數(shù)據(jù)報文是滿足NAT處理條件的數(shù)據(jù)報文;然后隊列讀取單元讀取CPU隊列單元中級別最高的隊列的數(shù)據(jù)報文并上送,進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,直至該級別最高的隊列中數(shù)據(jù)報文讀空為止,再進(jìn)行下一級別的隊列中數(shù)據(jù)報文的讀取并上送,進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換,依此類推。應(yīng)用本發(fā)明,改善了數(shù)據(jù)報文上送的方式,更好的保證了高優(yōu)先級數(shù)據(jù)報文的上送和相應(yīng)的NAT轉(zhuǎn)換條目信息的生成,保證了高優(yōu)先級用戶的應(yīng)用。
文檔編號H04L12/56GK101242360SQ20081000659
公開日2008年8月13日 申請日期2008年3月13日 優(yōu)先權(quán)日2008年3月13日
發(fā)明者焱 楊 申請人:中興通訊股份有限公司