專利名稱:網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到數(shù)據(jù)通信傳輸領(lǐng)域,特別是涉及到一種網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出的實現(xiàn)方法。
背景技術(shù):
在數(shù)據(jù)通信系統(tǒng)中,網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT,Network AddressTranslation)技術(shù)可以隱藏各個局域網(wǎng)內(nèi)部的IP地址;并通過轉(zhuǎn)換局域網(wǎng)內(nèi)部的私有IP地址為合法IP地址后,訪問外部的Internet網(wǎng)絡(luò);同時還可以限制和管理外部網(wǎng)絡(luò)對內(nèi)部局域網(wǎng)的訪問,從而有效地保護內(nèi)部局域網(wǎng)的安全,起到對內(nèi)/外網(wǎng)絡(luò)數(shù)據(jù)交換的管理作用。此外,NAT技術(shù)還可以用于解決目前Ipv4地址資源不足的問題,因此在數(shù)據(jù)通信發(fā)展過程中起著重要的作用。
目前,在諸如路由器、Web流負載均衡設(shè)備、動態(tài)防火墻等網(wǎng)絡(luò)設(shè)備中都設(shè)置有NAT功能,對局域網(wǎng)內(nèi)的源IP地址和網(wǎng)間的合法IP地址進行雙向轉(zhuǎn)換。
NAT包括三種類型靜態(tài)NAT(Static NAT)、動態(tài)NAT(Pooled NAT)和網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT(Network Address Port Translation)。
其中靜態(tài)NAT是設(shè)置起來最為簡單和容易的一種,內(nèi)部網(wǎng)絡(luò)中的每個主機都被永久映射成外部網(wǎng)絡(luò)中的某個合法的IP地址。
動態(tài)NAT則是在外部網(wǎng)絡(luò)中定義了一系列的合法IP地址,采用動態(tài)分配的方法映射到內(nèi)部網(wǎng)絡(luò)。
網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT是指將局域網(wǎng)內(nèi)部的所有連接都映射到外部網(wǎng)絡(luò)的一個單獨合法的IP地址上,同時在該單獨合法的IP地址上附加一個由NAT統(tǒng)一分配的TCP/UDP端口號,用于把局域網(wǎng)內(nèi)部的數(shù)據(jù)包通過轉(zhuǎn)換由NAT統(tǒng)一分配的TCP/UDP端口發(fā)送出去。通過NAT給每個連接鏈路分配不同的TCP/UDP端口號來區(qū)分不同的連接鏈路。
目前NAT設(shè)備中一般都帶有多個數(shù)據(jù)輸入端口和一個數(shù)據(jù)輸出端口,通過在NAT設(shè)備中維護一個狀態(tài)表(NAT Table),將局域網(wǎng)內(nèi)部數(shù)據(jù)包的源IP地址轉(zhuǎn)換為合法IP地址,并將該數(shù)據(jù)包輸入的源TCP/UDP端口號轉(zhuǎn)換為NAT統(tǒng)一分配的TCP/UDP端口號后,輸出到外部網(wǎng)絡(luò)。
參照圖1,是局域網(wǎng)和外部網(wǎng)絡(luò)之間數(shù)據(jù)包轉(zhuǎn)換的示意圖當局域網(wǎng)內(nèi)部一臺源IP地址為10.0.0.10的主機發(fā)送一數(shù)據(jù)包到外部網(wǎng)絡(luò)時,首先把在該局域網(wǎng)內(nèi)封裝完成的源IP地址S=10.0.0.10,源TCP/UDP端口號Sport=3017,目的IP地址d=138.76.29.7和目的TCP/UDP端口號dpoft=23的數(shù)據(jù)包{S=10.0.0.10,Sport=3017;d=138.76.29.7,dporr=23}發(fā)往該局域網(wǎng)中的NAT設(shè)備;由該NAT設(shè)備對該數(shù)據(jù)包進行轉(zhuǎn)換,把該數(shù)據(jù)包中的源IP地址S=10.0.0.10轉(zhuǎn)換為合法IP地址S=138.76.28.4,把該數(shù)據(jù)包中的源TCP/UDP端口號Sport=3017轉(zhuǎn)換為NAT統(tǒng)一分配的TCP/UDP端口號Sport=1024;然后NAT設(shè)備把轉(zhuǎn)換后的數(shù)據(jù)包{S=138.76.28.4,Sport=1024;d=138.76.29.7,dport=23}后發(fā)往外部網(wǎng)絡(luò)。
當由外部網(wǎng)絡(luò)發(fā)送數(shù)據(jù)包給該局域網(wǎng)內(nèi)部的相應(yīng)主機時,數(shù)據(jù)包在經(jīng)NAT設(shè)備時要進行相反過程的處理,即把合法IP地址轉(zhuǎn)換為源IP地址。同樣參照圖1,當外部網(wǎng)絡(luò)中IP地址為138.76.29.7的主機發(fā)送數(shù)據(jù)包給局域網(wǎng)中私有IP地址為10.0.0.10的主機時,數(shù)據(jù)包為{S=138.76.29.7,Sport=23;d=138.76.28.4,dport=1024}到達該局域網(wǎng)中的NAT設(shè)備時,把合法IP地址d=138.76.28.4轉(zhuǎn)換為源IP地址d=10.0.0.10,把目的TCP/UDP端口號dport=1024轉(zhuǎn)換為相應(yīng)的源TCP/UDP端口號dporr=3017;然后NAT設(shè)備把轉(zhuǎn)換后的數(shù)據(jù)包{S=138.76.29.7,Sport=23;d=10.0.0.10,dport=3017}發(fā)送到主機10.0.0.10中。
在每個NAT設(shè)備中,所維護的狀態(tài)表中都包含有多個源IP地址和合法IP地址之間、多個源TCP/UDP端口號和NAT統(tǒng)一分配的TCP/UDP端口號之間的映射關(guān)系。每個NAT設(shè)備轉(zhuǎn)發(fā)每個數(shù)據(jù)包時,都要根據(jù)數(shù)據(jù)包的包頭信息進行查表操作,索引到相應(yīng)的TCP/UDP端口號和IP地址對數(shù)據(jù)包進行相應(yīng)轉(zhuǎn)換。
但是目前每個NAT設(shè)備都只設(shè)置一個由NAT統(tǒng)一分配的TCP/UDP端口作為數(shù)據(jù)輸出端口與內(nèi)部多個數(shù)據(jù)輸入端口對應(yīng),使得局域網(wǎng)內(nèi)的所有用戶只能共享一個數(shù)據(jù)輸出端口。當局域網(wǎng)內(nèi)有多個用戶同時發(fā)送數(shù)據(jù)包給NAT設(shè)備時,這就可能會引起由一個數(shù)據(jù)輸出端口提供的鏈路帶寬不足的問題,使多用戶的數(shù)據(jù)包在該數(shù)據(jù)輸出端口處發(fā)生擁塞,從而可能引起數(shù)據(jù)包轉(zhuǎn)換速度緩慢或丟包現(xiàn)象的發(fā)生,造成NAT設(shè)備性能的不穩(wěn)定。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提出一種在NAT設(shè)備中設(shè)置多個數(shù)據(jù)輸出端口,避免數(shù)據(jù)流量發(fā)生擁塞的網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法。
為解決上述問題,本發(fā)明提出了一種網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,包括下列步驟包括下列步驟(1)為網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備設(shè)置多個數(shù)據(jù)輸出端口;(2)建立上行數(shù)據(jù)包的包頭信息與每個數(shù)據(jù)輸出端口的映射關(guān)系記錄,所有映射關(guān)系記錄形成映射關(guān)系表;(3)根據(jù)每個上行數(shù)據(jù)包的包頭信息索引步驟(2)的映射關(guān)系表,查找到與該數(shù)據(jù)包的包頭信息對應(yīng)的數(shù)據(jù)輸出端口來輸出該數(shù)據(jù)包。
其中上述步驟(3)中進一步包括步驟(31)查看每個上行數(shù)據(jù)包的包頭信息;(32)根據(jù)步驟(31)中的包頭信息索引所述映射關(guān)系表,判斷是否能夠查找到與該包頭信息對應(yīng)的數(shù)據(jù)輸出端口,如果是,利用查找到的數(shù)據(jù)輸出端口輸出該上行數(shù)據(jù)包;如果否,在所述多個數(shù)據(jù)輸出端口中查找出當前數(shù)據(jù)流量最小的數(shù)據(jù)輸出端口輸出該上行數(shù)據(jù)包。
其中上述步驟(32)中進一步包括步驟(41)分別為每個數(shù)據(jù)輸出端口設(shè)置一個計數(shù)器;(42)每個數(shù)據(jù)輸出端口每增加一條映射關(guān)系記錄,對應(yīng)的計數(shù)器進行加1操作;(43)分別查看每個計數(shù)器當前的計數(shù)數(shù)值,查找出計數(shù)數(shù)值最小的計數(shù)器,把該計數(shù)器所屬的數(shù)據(jù)輸出端口作為當前數(shù)據(jù)流量最小的數(shù)據(jù)輸出端口。
其中上述步驟(43)中進一步包括步驟(61)建立計數(shù)數(shù)值最小的計數(shù)器所屬的數(shù)據(jù)輸出端口輸出的上行數(shù)據(jù)包的包頭信息與該數(shù)據(jù)輸出端口的映射關(guān)系記錄,并添加到所述映射關(guān)系表中;(62)對查找出的計數(shù)數(shù)值最小的計數(shù)器進行加1操作。
所述方法還包括以周期時間間隔對映射關(guān)系表進行維護,對在規(guī)定時間內(nèi)沒有被索引過的映射關(guān)系記錄進行刪除操作,所述刪除操作通過如下步驟實現(xiàn)(81)分別為映射關(guān)系表中的每條映射關(guān)系記錄設(shè)置狀態(tài)參數(shù),并把所有的狀態(tài)參數(shù)都設(shè)置為0;(82)以周期時間間隔對每條映射關(guān)系記錄的狀態(tài)參數(shù)進行加1操作;(83)每條映射關(guān)系記錄每次被索引時,將該映射關(guān)系記錄的狀態(tài)參數(shù)置0;(84)如果映射關(guān)系記錄的狀態(tài)參數(shù)大于等于一規(guī)定常數(shù),則從映射關(guān)系表中刪除該條映射關(guān)系記錄。
上述方法還包括對刪除的映射關(guān)系記錄所對應(yīng)的數(shù)據(jù)輸出端口上的計數(shù)器進行減1操作。
本發(fā)明有益效果由于本發(fā)明在NAT設(shè)備中設(shè)置了多個數(shù)據(jù)輸出端口,提供了多條數(shù)據(jù)輸出鏈路,從而解決了傳統(tǒng)由一個數(shù)據(jù)輸出端口輸出數(shù)據(jù)包而造成的帶寬不足、數(shù)據(jù)流擁塞等問題。同時多個用戶還可以在設(shè)置的多個數(shù)據(jù)輸出端口間進行復(fù)用,共享多個數(shù)據(jù)輸出端口提供的總帶寬。
圖1是現(xiàn)有技術(shù)中網(wǎng)絡(luò)地址端口轉(zhuǎn)換過程的示意圖;圖2是本發(fā)明網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法具體實施例的NAT設(shè)備簡單結(jié)構(gòu)示意圖;圖3是本發(fā)明網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法具體實施例最初始的映射關(guān)系表示意圖;
圖4是本發(fā)明網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法具體實施例方案的整體流程圖;圖5是本發(fā)明網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法具體實施例中對映射關(guān)系記錄進行刪除的流程圖。
具體實施例方式
NAT設(shè)備是指具有NAT功能的設(shè)備,為解決目前由于NAT設(shè)備中只具有一個數(shù)據(jù)輸出端口而造成多數(shù)據(jù)包同時輸出時,可能產(chǎn)生的擁塞現(xiàn)象,需要改進現(xiàn)有NAT設(shè)備的數(shù)據(jù)輸出端口的設(shè)置數(shù)目,如可以設(shè)置2個、3個、4個或更多的數(shù)據(jù)輸出端口。
首先為網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備設(shè)置多個數(shù)據(jù)輸出端口。參照圖2,是NAT設(shè)備設(shè)置4個數(shù)據(jù)輸出端口的簡單示意圖,圖中對4個數(shù)據(jù)輸出端口分別定義序列號,即數(shù)據(jù)輸出端口1(Port1)、數(shù)據(jù)輸出端口2(Port2)、數(shù)據(jù)輸出端口3(Port3)和數(shù)據(jù)輸出端口4(Port4);來對上行的數(shù)據(jù)包進行向外部網(wǎng)絡(luò)輸出,這里所述的上行數(shù)據(jù)包是指由內(nèi)部網(wǎng)絡(luò)向外部網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包,內(nèi)部網(wǎng)絡(luò)首先把封裝的數(shù)據(jù)包通過NAT設(shè)備的數(shù)據(jù)輸入端口輸入,經(jīng)過NAT設(shè)備進行IP地址轉(zhuǎn)換后,通過4個數(shù)據(jù)輸出端口其中之一輸出。
再次建立上行數(shù)據(jù)包的包頭信息與每個數(shù)據(jù)輸出端口的映射關(guān)系記錄。這里所有映射關(guān)系記錄形成映射關(guān)系表最初對該NAT設(shè)備的4個數(shù)據(jù)輸出端口對應(yīng)該NAT設(shè)備所處的內(nèi)部網(wǎng)絡(luò)常用的數(shù)據(jù)包屬性建立一個映射關(guān)系表。參照圖3,建立4條映射關(guān)系記錄,每條記錄包括數(shù)據(jù)包源IP地址、目的IP地址,數(shù)據(jù)包類型和數(shù)據(jù)輸出端口號的一一對應(yīng)關(guān)系;然后將建立的映射關(guān)系表存儲在內(nèi)存中。其中數(shù)據(jù)包源IP地址、目的IP地址,數(shù)據(jù)包類型等信息都包含在每個數(shù)據(jù)包的包頭信息中,所以每次對截獲的數(shù)據(jù)包只需要提取分析包頭信息,再根據(jù)得到的包頭信息索引映射關(guān)系表。同時為每條映射關(guān)系記錄設(shè)置一個狀態(tài)參數(shù),用來標識每一條映射關(guān)系記錄的使用狀態(tài),并首先對所有狀態(tài)參數(shù)都賦予同一初始值0。
為該NAT設(shè)備的每個數(shù)據(jù)輸出端口分別設(shè)置一個計數(shù)器,用來標識每個數(shù)據(jù)輸出端口的數(shù)據(jù)流量的大小,并根據(jù)每個數(shù)據(jù)輸出端口在映射關(guān)系表中對應(yīng)的映射關(guān)系記錄的數(shù)目,分別確定每個計數(shù)器的初始值。如果映射關(guān)系表為圖3所示,則數(shù)據(jù)輸出端口Port1、Port2、Port3和Port4上的計數(shù)器的初始值都為1,因為該映射關(guān)系表中與每個數(shù)據(jù)輸出端口對應(yīng)的映射關(guān)系記錄的數(shù)目都為一個。
對于后續(xù)的每一個上行數(shù)據(jù)包,根據(jù)該上行數(shù)據(jù)包的包頭信息索引映射關(guān)系表,查找到與該數(shù)據(jù)包的包頭信息對應(yīng)的數(shù)據(jù)輸出端口來輸出該數(shù)據(jù)包。
參照圖4,是本發(fā)明一種網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法的整體過程流程圖。在步驟10中,NAT設(shè)備對經(jīng)過自身的每一數(shù)據(jù)包進行截獲操作。
步驟20中,判斷截獲的每個數(shù)據(jù)包是否屬于上行數(shù)據(jù)包,判斷方式是根據(jù)截獲的數(shù)據(jù)包的數(shù)據(jù)輸入端口類型,如果數(shù)據(jù)輸入端口標志為LOCAL,就可以判斷為上行數(shù)據(jù)包;如果數(shù)據(jù)輸入端口標志為GLOBAL就是下行數(shù)據(jù)包。其中數(shù)據(jù)輸入端口標志LOCAL或GLOBAL,都是由NAT的配置確定的。如果判斷結(jié)果為是,執(zhí)行步驟30;如果結(jié)果為否,執(zhí)行步驟70。
步驟30中,讀取分析每個數(shù)據(jù)包的包頭信息,例如從每個數(shù)據(jù)包的包頭信息中提取出該數(shù)據(jù)包的源IP地址、目的IP地址和該數(shù)據(jù)包的類型信息等。
步驟40中,根據(jù)步驟30中得到的該數(shù)據(jù)包的源IP地址、目的IP地址和該數(shù)據(jù)包的類型信息,在存儲的映射關(guān)系表中索引是否有與該數(shù)據(jù)包的源IP地址、目的IP地址和該數(shù)據(jù)包的類型信息都相同的映射關(guān)系記錄;如果索引到,轉(zhuǎn)到步驟50;如果沒有索引到,轉(zhuǎn)到步驟80。
步驟50中,將步驟40中索引到的在映射關(guān)系表中與該數(shù)據(jù)包的源IP地址、目的IP地址和該數(shù)據(jù)包的類型信息都相同的映射關(guān)系記錄對應(yīng)的數(shù)據(jù)輸出端口號反饋給該數(shù)據(jù)包,并由該數(shù)據(jù)輸出端口輸出該數(shù)據(jù)包。
步驟60中,把步驟40中索引到的在映射關(guān)系表中與該數(shù)據(jù)包的源IP地址、目的IP地址和該數(shù)據(jù)包的類型信息都相同的映射關(guān)系記錄的狀態(tài)參數(shù)置0,用來表示該條映射關(guān)系記錄最近被索引過。
步驟70中,如果數(shù)據(jù)包為下行數(shù)據(jù)包(即從外部網(wǎng)絡(luò)傳輸?shù)絻?nèi)部網(wǎng)絡(luò)的數(shù)據(jù)包),按照NAT正常的轉(zhuǎn)換方式對數(shù)據(jù)包進行反向IP地址轉(zhuǎn)換。
步驟80中,分別查看每個計數(shù)器當前的計數(shù)數(shù)值,查找出計數(shù)數(shù)值最小的計數(shù)器,把該計數(shù)器所屬的數(shù)據(jù)輸出端口作為當前數(shù)據(jù)流量最小的數(shù)據(jù)輸出端口,并由該數(shù)據(jù)輸出端口輸出該數(shù)據(jù)包。
步驟90中,將該數(shù)據(jù)包的包頭信息(包括該數(shù)據(jù)包的源IP地址、目的IP地址和該數(shù)據(jù)包的類型信息)和步驟80中查找到的計數(shù)器計數(shù)數(shù)值最小的數(shù)據(jù)輸出端口建立一條映射關(guān)系記錄,并將該條映射關(guān)系記錄添加到映射關(guān)系表中。同時將該條映射關(guān)系記錄的狀態(tài)參數(shù)置0,用來表示該條映射關(guān)系記錄剛被索引過一次。
步驟100中,將步驟80中查找到的計數(shù)數(shù)值最小的計數(shù)器進行加1操作,用來表示又增加一條映射關(guān)系記錄與該計數(shù)器所屬的數(shù)據(jù)輸出端口相對應(yīng)。
如果步驟80中,經(jīng)過查看所有的計數(shù)器得到各個計數(shù)器的計數(shù)數(shù)值都相等,則按照數(shù)據(jù)輸出端口號順序從頭開始進行選擇。
根據(jù)圖2和圖3所示,當NAT設(shè)備接收到一個上行數(shù)據(jù)包,如果經(jīng)過提取該數(shù)據(jù)包的包頭信息,得到該數(shù)據(jù)包的源IP地址為10.0.0.1、目的IP地址為192.168.0.1,該數(shù)據(jù)包類型為TCP(Transmission ControlProtocol)數(shù)據(jù)包。根據(jù)這些包頭信息索引圖3所示的映射關(guān)系表,經(jīng)過索引,查找到對應(yīng)該數(shù)據(jù)包包頭信息的數(shù)據(jù)輸出端口為Port2,則將該數(shù)據(jù)包通過數(shù)據(jù)輸出端口Port2輸出。同時將索引到的這條映射關(guān)系記錄的狀態(tài)參數(shù)置0。
如果NAT設(shè)備接收到另外一個上行數(shù)據(jù)包,如果經(jīng)過提取該數(shù)據(jù)包的包頭信息,得到該數(shù)據(jù)包的源IP地址為10.0.0.3、目的IP地址為192.168.1.1,該數(shù)據(jù)包類型為UDP(User Datagram Protocol)數(shù)據(jù)包。根據(jù)這些包頭信息索引映射關(guān)系表,將查找不到對應(yīng)的數(shù)據(jù)輸出端口,進一步的操作是查看4個數(shù)據(jù)輸出端口上的計數(shù)器的計數(shù)數(shù)值,找出計數(shù)數(shù)值最小的計數(shù)器,并把該計數(shù)器所屬的數(shù)據(jù)輸出端口作為該數(shù)據(jù)包的輸出端口。因為圖3所示的映射關(guān)系表中各個數(shù)據(jù)輸出端口上的計數(shù)器的計數(shù)數(shù)值都為1,所以遵照數(shù)據(jù)輸出端口號順序進行選擇的原則,從Port1開始分配,把Port1分配給該數(shù)據(jù)包作為其數(shù)據(jù)輸出端口。
同時把這個數(shù)據(jù)包的源IP地址為10.0.0.3、目的IP地址為192.168.1.1,數(shù)據(jù)包類型為UDP的包頭信息與數(shù)據(jù)輸出端口Port1建立一條映射關(guān)系記錄;并把這條映射關(guān)系記錄添加到映射關(guān)系表中。進一步還要對Port1上的計數(shù)器進行加1操作。即完成上述操作后,Port1上的計數(shù)器現(xiàn)在的計數(shù)數(shù)值為2,表示在映射關(guān)系表中存在兩條與Port1對應(yīng)的映射關(guān)系記錄。
參照圖5,還可以進一步對映射關(guān)系表中的某些在規(guī)定時間內(nèi)沒有被索引過的映射關(guān)系記錄進行刪除操作。設(shè)置周期時間對映射關(guān)系表進行周期循環(huán)維護,每到達一周期時間,設(shè)置定時中斷,在中斷時間內(nèi)把映射關(guān)系表的維護狀態(tài)置為“可行”,對映射關(guān)系表進行更新維護,然后再將映射關(guān)系表的維護狀態(tài)置為“不可行”,以備在后續(xù)周期時間到來時,對映射關(guān)系表的維護狀態(tài)再置為“可行”,對映射關(guān)系表進行更新維護。
步驟160中,首先判斷映射關(guān)系表當前的維護狀態(tài)是否為“可行”;如果是,轉(zhuǎn)到步驟180,如果否,繼續(xù)執(zhí)行步驟160,處于等待狀態(tài),直到映射關(guān)系表的維護狀態(tài)為“可行”后,繼續(xù)向下進行。
步驟180中,逐條查看映射關(guān)系表中每一條映射關(guān)系記錄,首先對第一條映射關(guān)系記錄的狀態(tài)參數(shù)進行加1操作;步驟200中,對第一條映射關(guān)系記錄的狀態(tài)參數(shù)進行判斷,看其當前的狀態(tài)參數(shù)是否大于等于n,n為自然數(shù);如果是,執(zhí)行步驟220,如果否,對該第一條映射關(guān)系記錄不作處理,轉(zhuǎn)回到步驟160中處于等待狀態(tài)。
步驟220中,把該第一條映射關(guān)系記錄從映射關(guān)系表中刪除掉。
步驟240中,對步驟220中刪除的映射關(guān)系記錄所對應(yīng)的數(shù)據(jù)輸出端口上的計數(shù)器進行減1操作,以表示對應(yīng)該數(shù)據(jù)輸出端口的映射關(guān)系記錄減少一條。
步驟260中,繼續(xù)對映射關(guān)系表中的下一條映射關(guān)系記錄進行狀態(tài)參數(shù)的判決,轉(zhuǎn)回至步驟180中。
直到在該周期內(nèi),將映射關(guān)系表中的所有映射關(guān)系記錄全部檢查完畢,然后等待進入下一周期的更新維護。
假如設(shè)置周期時間為5秒鐘,進行一次對映射關(guān)系表的更新維護。每5秒鐘運行一次中斷,然后將映射關(guān)系表的維護狀態(tài)置為“可行”,進一步對如圖2所示的映射關(guān)系表進行維護,逐一查看每一條映射關(guān)系記錄的狀態(tài)參數(shù),并逐一對每一條映射關(guān)系記錄的狀態(tài)參數(shù)進行加1操作。如對{10.0.0.2;192.168.255.0;UDP數(shù)據(jù)包;Port4}這條映射關(guān)系記錄每周期進行加1操作,如果該條映射關(guān)系記錄在一段時間內(nèi)都沒有被索引過,其狀態(tài)參數(shù)的數(shù)值就會累加;然后每周期進行一次判斷,看該條映射關(guān)系記錄當前的狀態(tài)參數(shù)是否已經(jīng)大于等于某一自然數(shù)n,如果已經(jīng)大于等于n,則證明該條映射關(guān)系記錄已經(jīng)在大于等于5×n秒內(nèi)沒有被索引過(因為每條映射關(guān)系記錄每次被索引時,其狀態(tài)參數(shù)都會被置0),所以將該條映射關(guān)系記錄給予刪除處理。同時對Port4上的計數(shù)器進行減1操作,表示減少一條與Port4對應(yīng)的映射關(guān)系記錄。
本發(fā)明網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,通過在NAT設(shè)備中設(shè)置多個數(shù)據(jù)輸出端口,并在每個數(shù)據(jù)輸出端口上設(shè)置一計數(shù)器,以標識每個數(shù)據(jù)輸出端口數(shù)據(jù)流量的大??;并建立每個數(shù)據(jù)輸出端口和各個數(shù)據(jù)包包頭信息之間的映射關(guān)系記錄,組成映射關(guān)系表;并為映射關(guān)系表中每條映射關(guān)系記錄設(shè)置狀態(tài)參數(shù),以標識每條映射關(guān)系記錄當前的使用狀態(tài);并根據(jù)每條映射關(guān)系記錄的狀態(tài)參數(shù)的數(shù)值大小對每條映射關(guān)系記錄進行刪除操作?;谟成潢P(guān)系表這種動態(tài)添加和刪除的更新維護操作,來完成NAT設(shè)備多端口輸出上行數(shù)據(jù)包的目的,同時多個數(shù)據(jù)包可以動態(tài)共享多個數(shù)據(jù)輸出端口提供的總帶寬。解決了以往NAT設(shè)備中所有數(shù)據(jù)包只能通過單個數(shù)據(jù)輸出端口輸出而造成的流量擁塞問題。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,其特征在于,包括下列步驟(1)為網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備設(shè)置多個數(shù)據(jù)輸出端口;(2)建立上行數(shù)據(jù)包的包頭信息與每個數(shù)據(jù)輸出端口的映射關(guān)系記錄,所有映射關(guān)系記錄形成映射關(guān)系表;(3)根據(jù)每個上行數(shù)據(jù)包的包頭信息索引步驟(2)的映射關(guān)系表,查找到與該數(shù)據(jù)包的包頭信息對應(yīng)的數(shù)據(jù)輸出端口來輸出該數(shù)據(jù)包。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,其特征在于,所述步驟(2)中還包括將所述映射關(guān)系表進行存儲的步驟。
3.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,其特征在于,所述步驟(3)中進一步包括步驟(31)查看每個上行數(shù)據(jù)包的包頭信息;(32)根據(jù)步驟(31)中的包頭信息索引所述映射關(guān)系表,判斷是否能夠查找到與該包頭信息對應(yīng)的數(shù)據(jù)輸出端口,如果是,利用查找到的數(shù)據(jù)輸出端口輸出該上行數(shù)據(jù)包;如果否,在所述多個數(shù)據(jù)輸出端口中查找出當前數(shù)據(jù)流量最小的數(shù)據(jù)輸出端口輸出該上行數(shù)據(jù)包。
4.根據(jù)權(quán)利要求3所述的網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,其特征在于,所述步驟(32)中進一步包括步驟(41)分別為每個數(shù)據(jù)輸出端口設(shè)置一個計數(shù)器;(42)每個數(shù)據(jù)輸出端口每增加一條映射關(guān)系記錄,對應(yīng)的計數(shù)器進行加1操作;(43)分別查看每個計數(shù)器當前的計數(shù)數(shù)值,查找出計數(shù)數(shù)值最小的計數(shù)器,把該計數(shù)器所屬的數(shù)據(jù)輸出端口作為當前數(shù)據(jù)流量最小的數(shù)據(jù)輸出端口。
5.根據(jù)權(quán)利要求4所述的網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,其特征在于,所述步驟(43)中如果通過查看得到每個計數(shù)器當前的計數(shù)數(shù)值都相同,則按照數(shù)據(jù)輸出端口號順序來選取。
6.根據(jù)權(quán)利要求5所述的網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,其特征在于,所述步驟(43)中進一步包括步驟(61)建立計數(shù)數(shù)值最小的計數(shù)器所屬的數(shù)據(jù)輸出端口輸出的上行數(shù)據(jù)包的包頭信息與該數(shù)據(jù)輸出端口的映射關(guān)系記錄,并添加到所述映射關(guān)系表中;(62)對查找出的計數(shù)數(shù)值最小的計數(shù)器進行加1操作。
7.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,其特征在于,所述方法還包括以周期時間間隔對映射關(guān)系表進行維護,對在規(guī)定時間內(nèi)沒有被索引過的映射關(guān)系記錄進行刪除操作。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述刪除操作通過如下步驟實現(xiàn)(81)分別為映射關(guān)系表中的每條映射關(guān)系記錄設(shè)置狀態(tài)參數(shù),并把所有的狀態(tài)參數(shù)都設(shè)置為0;(82)以周期時間間隔對每條映射關(guān)系記錄的狀態(tài)參數(shù)進行加1操作;(83)每條映射關(guān)系記錄每次被索引時,將該映射關(guān)系記錄的狀態(tài)參數(shù)置0;(84)如果映射關(guān)系記錄的狀態(tài)參數(shù)大于等于一規(guī)定常數(shù),則從映射關(guān)系表中刪除該條映射關(guān)系記錄。
9.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,其特征在于,所述步驟(84)后還包括對刪除的映射關(guān)系記錄所對應(yīng)的數(shù)據(jù)輸出端口上的計數(shù)器進行減1操作。
10.根據(jù)權(quán)利要求1、3或6所述的網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,其特征在于,所述上行數(shù)據(jù)包為由內(nèi)部網(wǎng)絡(luò)向外部網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包;并所述包頭信息包括數(shù)據(jù)包的源IP地址、目的IP地址和數(shù)據(jù)包類型。
全文摘要
本發(fā)明公開了一種網(wǎng)絡(luò)地址轉(zhuǎn)換數(shù)據(jù)輸出方法,包括為網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備設(shè)置多個數(shù)據(jù)輸出端口的步驟;建立上行數(shù)據(jù)包的包頭信息與每個數(shù)據(jù)輸出端口的映射關(guān)系記錄,所有映射關(guān)系記錄形成映射關(guān)系表的步驟;根據(jù)每個上行數(shù)據(jù)包的包頭信息索引所述映射關(guān)系表,查找到與該數(shù)據(jù)包的包頭信息對應(yīng)的數(shù)據(jù)輸出端口來輸出該數(shù)據(jù)包的步驟。本發(fā)明能夠?qū)崿F(xiàn)多個用戶共享多個數(shù)據(jù)輸出端口提供的總帶寬,避免了數(shù)據(jù)流量的擁塞。
文檔編號H04L12/28GK1487704SQ0315585
公開日2004年4月7日 申請日期2003年8月26日 優(yōu)先權(quán)日2003年8月26日
發(fā)明者魏慶新, 舒九耀 申請人:北京朗通環(huán)球科技有限公司