網(wǎng)絡地址轉換端口分配方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種網(wǎng)絡地址轉換端口分配方法及系統(tǒng);其方法包括:創(chuàng)建第一端口池緩存區(qū)、第二端口池緩存區(qū)、第一任務、第二任務;第一任務從第一端口池緩存區(qū)調度可用端口資源分配給內網(wǎng)用戶;第二任務調度內網(wǎng)用戶釋放的端口資源存儲到第二端口池緩存區(qū)。本發(fā)明的有益效果是:本發(fā)明的網(wǎng)絡地址轉換端口分配方法及系統(tǒng),通過建立雙端口池緩存區(qū)與雙任務進行循環(huán)操作,兩個任務互不干擾的進行端口資源調度,實現(xiàn)對端口資源的高效分配與回收,提升了NAT服務器的性能。
【專利說明】網(wǎng)絡地址轉換端口分配方法及系統(tǒng)
【技術領域】
[0001]本發(fā)明屬于數(shù)據(jù)通信【技術領域】,尤其涉及一種網(wǎng)絡地址轉換端口分配方法及系統(tǒng)。
【背景技術】
[0002]NAT (Network Address Translat1n,網(wǎng)絡地址轉換)是1994年提出的用于在專用網(wǎng)內部的主機分配到了本地IP地址(即僅在本專用網(wǎng)內使用的專用地址)后又與因特網(wǎng)上的主機通信(并不需要加密)的一種方法。這種方法需要在專用網(wǎng)連接到因特網(wǎng)的路由器上安裝NAT軟件。裝有NAT軟件的路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址。這樣,所有使用本地地址的主機在和外界通信時,都要在NAT路由器上將其本地地址轉換成全球IP地址,才能和因特網(wǎng)連接。另外,這種通過使用少量的公有IP地址代表較多的私有IP地址的方式,將有助于減緩可用的IP地址空間的枯竭。NAT不僅能解決了 IP地址不足的問題,而且還能夠有效地避免來自網(wǎng)絡外部的攻擊,隱藏并保護網(wǎng)絡內部的計算機。NAT的實現(xiàn)方式有三種,S卩靜態(tài)轉換Static Nat、動態(tài)轉換Dynamic Nat和端口多路復用OverLoad。靜態(tài)轉換是指將內部網(wǎng)絡的私有IP地址轉換為公有IP地址,IP地址對是一對一的,是一成不變的,某個私有IP地址只轉換為某個公有IP地址。借助于靜態(tài)轉換,可以實現(xiàn)外部網(wǎng)絡對內部網(wǎng)絡中某些特定設備(如服務器)的訪問。動態(tài)轉換是指將內部網(wǎng)絡的私有IP地址轉換為公用IP地址時,IP地址是不確定的,是隨機的,所有被授權訪問上Internet的私有IP地址可隨機轉換為任何指定的合法IP地址。也就是說,只要指定哪些內部地址可以進行轉換,以及用哪些合法地址作為外部地址時,就可以進行動態(tài)轉換。動態(tài)轉換可以使用多個合法外部地址集。當ISP提供的合法IP地址略少于網(wǎng)絡內部的計算機數(shù)量時??梢圆捎脛討B(tài)轉換的方式。端口多路復用(Port addressTranslat1n, PAT)是指改變外出數(shù)據(jù)包的源端口并進行端口轉換,即端口地址轉換(PAT,Port Address Translat1n).采用端口多路復用方式。內部網(wǎng)絡的所有主機均可共享一個合法外部IP地址實現(xiàn)對Internet的訪問,從而可以最大限度地節(jié)約IP地址資源。同時,又可隱藏網(wǎng)絡內部的所有主機,有效避免來自internet的攻擊。因此,目前網(wǎng)絡中應用最多的就是端口多路復用方式。NAT用于私網(wǎng)地址動態(tài)轉換為公網(wǎng)地址時,通常會將大量的私網(wǎng)地址轉換為一個或幾個公網(wǎng)地址,每一個私網(wǎng)用戶會分配到一個共用的公網(wǎng)地址及該地址下的一個端口號,并通過該地址和端口號對公網(wǎng)進行訪問,實現(xiàn)大量私網(wǎng)用戶對公網(wǎng)的訪問。NAT服務器在進行端口分配時,會采用五元組方式構造映射關系,即源地址、源端口、目的地址、目的端口、協(xié)議號只要其中任何一個不同,就不會造成資源沖突。五元組方式構造映射關系可以解決通常情況的資源沖突,但在某些比較極端的情況下,如常見的C/S模式的應用中,服務器的地址和端口固定或相對集中,則私網(wǎng)用戶源端口、目的地址、目的端口、協(xié)議號均相同,此時一個端口對應一個內網(wǎng)地址,一個公網(wǎng)地址只有65535個端口,加之其中很多端口還要保留為特殊應用,因此可以分配的數(shù)量非常有限,現(xiàn)有以下兩種技術來進行端口資源的獲取:NAT服務器采用遍歷的方法來獲取端口,獲取后將端口標志為已占用,此種方法會耗費大量的時間來進行遍歷,且內網(wǎng)用戶越多,性能越差,會嚴重影響NAT服務器的性能。NAT服務器采用隨機查找的方法來獲取端口(CN200810239058.6[1]),該技術會出現(xiàn)一個命中率的問題,在內網(wǎng)內網(wǎng)用戶較多的情況下依然要多次查找才能實現(xiàn)命中,且無法分配所有端口,資源有限的情況下再次減少可用資源。
【發(fā)明內容】
[0003]本發(fā)明的發(fā)明目的是:為了解決以上問題,本發(fā)明提出了一種網(wǎng)絡地址轉換端口分配方法及系統(tǒng),以期解決現(xiàn)有技術在某些條件下出現(xiàn)的端口映射性能下降和端口資源浪費的問題。
[0004]本發(fā)明的技術方案是:一種網(wǎng)絡地址轉換端口分配方法,包括以下步驟:
[0005]A、創(chuàng)建用于存儲端口資源的第一端口池緩存區(qū)和第二端口池緩存區(qū),并創(chuàng)建用于調度可用端口資源的第一任務以及用于調度釋放的端口資源的第二任務;
[0006]B、第一任務等待端口資源申請,當內網(wǎng)用戶發(fā)出端口資源申請時,第一任務從第一端口池緩存區(qū)中調度可用端口資源分配給內網(wǎng)用戶;
[0007]C、第二任務等待端口資源釋放,當內網(wǎng)用戶使用完端口資源后釋放時,第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū)。
[0008]進一步地,所述步驟B中第一任務從第一端口池緩存區(qū)中調度可用端口資源分配給內網(wǎng)用戶,具體為:所述第一任務還包括指針成員Pa,所述指針成員Pa指向第一端口池緩存區(qū)中存儲的可用端口資源,所述第一任務調取指針成員Pa指向的可用端口資源分配給內網(wǎng)用戶。
[0009]進一步地,所述步驟B還包括以下步驟:
[0010]B1、第一任務為內網(wǎng)用戶分配端口后,將指針成員Pa指向下一個可用端口資源,并判斷指針成員Pa指向的可用端口資源是否為空;若可用端口資源不為空,則第一任務繼續(xù)等待內網(wǎng)用戶發(fā)出端口申請;若可用端口資源為空,則繼續(xù)判斷第二端口池緩存區(qū)是否為空;若第二端口池緩存區(qū)不為空,則第一任務指針成員Pa與第二任務指針成員Pb進行交換;若第二端口池緩存區(qū)為空,則第一任務忽略所有端口資源申請,并等待第二任務發(fā)出通生口 ο
[0011]進一步地,所述步驟C中第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū),具體為:所述第二任務還包括指針成員Pb,所述第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲的端口資源。
[0012]進一步地,所述步驟C還包括以下步驟:
[0013]Cl、第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū)后,將指針成員Pb指向該端口資源,并判斷指針成員Pb指向的端口資源是否為空;若端口資源為空,則第二任務繼續(xù)等待內網(wǎng)用戶釋放端口資源?’若端口資源不為空,則第二任務向第一任務發(fā)送通告并等待內網(wǎng)用戶釋放端口資源。
[0014]進一步地,所述第一任務與第二任務進行交換具體為:第二任務調度釋放的端口資源存儲到第一端口池緩存區(qū),第一任務從第二端口池緩存區(qū)調度可用端口資源分配給內網(wǎng)用戶。
[0015]進一步地,所述第一端口池緩存區(qū)和第二端口池緩存區(qū)中存儲的端口資源都為鏈狀數(shù)據(jù)結構。
[0016]本發(fā)明還提出了一種網(wǎng)絡地址轉換端口分配系統(tǒng),包括:創(chuàng)建模塊,判斷模塊和調度模塊;
[0017]所述創(chuàng)建模塊用于創(chuàng)建用于存儲端口資源的第一端口池緩存區(qū)和第二端口池緩存區(qū),并創(chuàng)建用于調度可用端口資源的第一任務以及用于調度釋放的端口資源的第二任務;
[0018]所述判斷模塊用于在第一任務為內網(wǎng)用戶分配端口后判斷第一端口池緩存區(qū)內的端口資源是否為空及在第二任務調度釋放的端口資源后判斷第二端口池緩存區(qū)內的端口資源是否為空;
[0019]所述調度模塊用于根據(jù)第一任務和第二任務調度端口資源。
[0020]進一步地,所述第一任務還包括指針成員Pa,所述指針成員Pa指向第一端口池緩存區(qū)中存儲的可用端口資源,所述第一任務調取指針成員Pa指向的可用端口資源分配給內網(wǎng)用戶。
[0021]進一步地,所述第二任務還包括指針成員Pb,所述第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲的端口資源。
[0022]本發(fā)明的有益效果是:本發(fā)明的網(wǎng)絡地址轉換端口分配方法及系統(tǒng),通過建立雙端口池緩存區(qū)與雙任務進行循環(huán)操作,兩個任務互不干擾的進行端口資源調度,端口分配任務不會受端口回收任務的影響,分配過程中不會產生優(yōu)先級翻轉,不會出現(xiàn)端口分配失敗的情況,也不會因為用戶數(shù)量的增加導致端口分配速率下降,實現(xiàn)對端口資源的高效分配與回收,提升了 NAT服務器的性能。
【專利附圖】
【附圖說明】
[0023]圖1是本發(fā)明的網(wǎng)絡地址轉換端口分配方法流程示意圖。
[0024]圖2是本發(fā)明實施例中步驟SI的示意圖。
[0025]圖3是本發(fā)明實施例中第一任務和第二任務分別調度端口資源的示意圖。
[0026]圖4是本發(fā)明實施例中第一任務與第二任務交換前的示意圖。
[0027]圖5是本發(fā)明實施例中第一任務與第二任務交換后的示意圖。
[0028]圖6是本發(fā)明的網(wǎng)絡地址轉換端口分配系統(tǒng)示意圖。
【具體實施方式】
[0029]為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0030]如圖1所示,為本發(fā)明的網(wǎng)絡地址轉換端口分配方法流程示意圖。一種網(wǎng)絡地址轉換端口分配方法,包括以下步驟:
[0031]A、創(chuàng)建用于存儲端口資源的第一端口池緩存區(qū)和第二端口池緩存區(qū),并創(chuàng)建用于調度可用端口資源的第一任務以及用于調度釋放的端口資源的第二任務;
[0032]B、第一任務等待端口資源申請,當內網(wǎng)用戶發(fā)出端口資源申請時,第一任務從第一端口池緩存區(qū)中調度可用端口資源分配給內網(wǎng)用戶;
[0033]C、第二任務等待端口資源釋放,當內網(wǎng)用戶使用完端口資源后釋放時,第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū)。
[0034]其中,步驟B中第一任務從第一端口池緩存區(qū)中調度可用端口資源分配給內網(wǎng)用戶,具體為:所述第一任務還包括指針成員Pa,所述指針成員Pa指向第一端口池緩存區(qū)中存儲的可用端口資源,所述第一任務調取指針成員Pa指向的可用端口資源分配給內網(wǎng)用戶;
[0035]步驟C中第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū),具體為:所述第二任務還包括指針成員Pb,所述第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲的端口資源。
[0036]步驟B中,當任務的成員指針交換后,第一任務從第二端口池緩存區(qū)中調度可用端口資源分配給內網(wǎng)用戶。步驟C中,當任務交換后,第二任務從第一端口池緩存區(qū)中調度可用端口資源分配給內網(wǎng)用戶。
[0037]本發(fā)明的網(wǎng)絡地址轉換端口分配方法及系統(tǒng),通過建立雙端口池緩存區(qū)與雙任務進行循環(huán)操作,兩個任務互不干擾的進行端口資源調度,端口分配任務不會受端口回收任務的影響,分配過程中不會產生優(yōu)先級翻轉,不會出現(xiàn)端口分配失敗的情況,也不會因為用戶數(shù)量的增加導致端口分配速率下降,實現(xiàn)對端口資源的高效分配與回收,提升了 NAT服務器的性能。
[0038]在步驟A創(chuàng)建第一端口池緩存區(qū)、第二端口池緩存區(qū)、第一任務和第二任務中,本發(fā)明為了實現(xiàn)對端口資源進行合理高效的分配,保障NAT服務器在各種情況下均能高效的進行網(wǎng)絡地址轉換,使用戶充分高效的使用外網(wǎng)資源,創(chuàng)建第一端口池緩存區(qū)、第二端口池緩存區(qū)、第一任務和第二任務。第一端口池緩存區(qū)和第二端口池緩存區(qū)都為鏈狀數(shù)據(jù)結構,第一端口池緩存區(qū)及所述第二端口池緩存區(qū)都用于存儲端口資源;第一任務用于調度可用端口資源,它包括一個指針成員Pa,指針成員Pa用于指向第一端口池緩存區(qū)中存儲的可用端口資源;第二任務用于調度釋放的端口資源,它包括一個指針成員Pb,指針成員Pb用于指向第二端口池緩存區(qū)中存儲的端口資源。為了保證在不改變NAT協(xié)議規(guī)定的情況下,實現(xiàn)第一任務和第二任務分別對端口資源進行調度時,資源的調度不會受到釋放端口資源的干擾,本發(fā)明設定第一端口池緩存區(qū)為最大端口數(shù),設定第二端口池緩存區(qū)為空,設定第一任務的指針成員Pa指向第一端口池緩存區(qū)尾部的端口資源,設定第二任務的指針成員Pb指向第二端口池緩存區(qū)尾部的端口資源。
[0039]如圖2所示,為本發(fā)明實施例中步驟SI的示意圖。本發(fā)明實施例中設定第一端口池緩存區(qū)大小為0-65535,將序號O作為尾部,依次排列至65535 ;設定第二端口池緩存區(qū)為空(NULL);第一任務的指針成員Pa指向第一端口池緩存區(qū)中的端口資源O;第二任務的指針成員Pb指向為空。由于部分端口資源需要為特殊應用進行保留,本發(fā)明對第一端口池緩存區(qū)進行設定時可以過濾掉保留端口資源,而將第一端口池緩存區(qū)設定為端口數(shù)。第一端口池緩存區(qū)的端口序列可以為有序序列,也可以為無序序列;第一端口池緩存區(qū)首尾端口的序號也可以對換。本發(fā)明實施例中設定第一任務的指針成員Pa指向第一端口池緩存區(qū)尾部,設定第二任務的指針成員Pb指向第二端口池緩存區(qū)尾部,第一任務的優(yōu)先級高于第二任務。根據(jù)本發(fā)明的網(wǎng)絡地址轉換端口分配方法的不用應用需求,也可以設定第二任務的優(yōu)先級高于第一任務。
[0040]在步驟B第一任務等待端口資源申請,當內網(wǎng)用戶發(fā)出端口資源申請時,第一任務從第一端口池緩存區(qū)中調度可用端口資源分配給內網(wǎng)用戶中,本發(fā)明當沒有端口資源申請時,第一任務處于等待端口資源申請狀態(tài)。當內網(wǎng)用戶發(fā)出端口資源申請時,本發(fā)明的第一任務通過調用指針成員Pa從第一端口池緩存區(qū)中獲取端口資源,并將獲取得到的端口資源分配給內網(wǎng)用戶;分配完成后,第一端口池緩存區(qū)將該端口資源從第一端口池緩存區(qū)中刪除,第一任務將指針成員Pa指向第一端口池緩存區(qū)中下一個端口資源。
[0041]如圖3所示,為本發(fā)明實施例中第一任務和第二任務分別調度端口資源的示意圖。本發(fā)明實施例中第一任務利用指針成員Pa按照從O到65535依次從第一端口池緩存區(qū)中調度端口資源,并根據(jù)內網(wǎng)用戶發(fā)出的端口資源申請,將端口資源201分配給內網(wǎng)用戶;分配完成后,指針成員Pa指向端口資源200。
[0042]本發(fā)明的步驟B還包括以下步驟:
[0043]B1、第一任務為內網(wǎng)用戶分配端口后,將指針成員Pa指向下一個可用端口資源,并判斷指針成員Pa指向的可用端口資源是否為空;若可用端口資源不為空,則第一任務繼續(xù)等待內網(wǎng)用戶發(fā)出端口申請;若可用端口資源為空,則繼續(xù)判斷第二端口池緩存區(qū)是否為空;若第二端口池緩存區(qū)不為空,則第一任務與第二任務進行交換;若第二端口池緩存區(qū)為空,則第一任務忽略所有端口資源申請,并等待第二任務發(fā)出通告。第一任務與第二任務進行交換具體為:第二任務調度釋放的端口資源存儲到第一端口池緩存區(qū),并將指針成員Pb指向第一端口池緩存區(qū)中存儲的端口資源;第一任務從第二端口池緩存區(qū)調度可用端口資源分配給內網(wǎng)用戶,將指針成員Pa指向下一個可用端口資源。如圖4所示,為本發(fā)明實施例中第一任務與第二任務交換前的示意圖。第一任務的指針成員Pa指向第一端口池緩存區(qū)中的端口資源為空,第二任務的指針成員Pb指向第二端口池緩存區(qū)中的端口資源不為空;如圖5所示,為本發(fā)明實施例中第一任務與第二任務交換后的示意圖,第一任務通過調用指針成員Pa從第二端口池緩存區(qū)中獲取端口資源,并將獲取得到的端口資源分配給內網(wǎng)用戶,第二任務調度釋放的端口資源存儲到第一端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲的端口資源。
[0044]在步驟C第二任務等待端口資源釋放,當內網(wǎng)用戶使用完端口資源后釋放時,第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū)中,第二任務還包括指針成員Pb,當內網(wǎng)用戶使用完端口資源后釋放時,第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲的端口資源。在第二任務將指針成員Pb指向第二端口池緩存區(qū)尾部時,需要對第二任務的指針成員Pb指向的端口資源進行判斷,即判斷第二端口池緩存區(qū)是否為空;若第二任務的指針成員Pb指向的端口資源為空,則第二任務繼續(xù)等待內網(wǎng)用戶釋放端口資源;若第二任務的指針成員Pb指向的端口資源不為空,則第二任務向第一任務發(fā)送通告,表明此時第二端口池緩存區(qū)已經存儲有端口資源,并等待內網(wǎng)用戶釋放端口資源。
[0045]如圖6所示,為本發(fā)明的網(wǎng)絡地址轉換端口分配系統(tǒng)示意圖。本發(fā)明還提出了一種網(wǎng)絡地址轉換端口分配系統(tǒng),包括:創(chuàng)建模塊,判斷模塊和調度模塊。創(chuàng)建模塊用于創(chuàng)建第一端口池緩存區(qū)、第二端口池緩存區(qū)、第一任務和第二任務,所述第一端口池緩存區(qū)用于存儲端口資源,所述第二端口池緩存區(qū)用于存儲端口資源,所述第一任務用于調度可用端口資源,所述第二任務用于調度釋放的端口資源;判斷模塊用于在第一任務為內網(wǎng)用戶分配端口后判斷第一端口池緩存區(qū)內的端口資源是否為空及在第二任務調度釋放的端口資源后判斷第二端口池緩存區(qū)內的端口資源是否為空;調度模塊用于根據(jù)第一任務和第二任務調度端口資源。
[0046]本發(fā)明的網(wǎng)絡地址轉換端口分配系統(tǒng)首先利用創(chuàng)建模塊創(chuàng)建第一端口池緩存區(qū)、第二端口池緩存區(qū)、第一任務和第二任務,第一端口池緩存區(qū)及所述第二端口池緩存區(qū)都用于存儲端口資源,第一端口池緩存區(qū)和第二端口池緩存區(qū)內存儲的端口資源都為鏈狀數(shù)據(jù)結構,第一任務用于調度可用端口資源,它包括指針成員Pa,指針成員Pa用于指向第一端口池緩存區(qū)中存儲的可用端口資源;第二任務用于調度釋放的端口資源,它包括指針成員Pb,指針成員Pb用于指向第二端口池緩存區(qū)中存儲的端口資源;同時設定第一端口池緩存區(qū)為最大端口數(shù),設定第二端口池緩存區(qū)為空,設定第一任務的指針成員Pa指向第一端口池緩存區(qū)尾部的端口資源,設定第二任務的指針成員Pb指向第二端口池緩存區(qū)尾部端口資源。
[0047]當內網(wǎng)用戶發(fā)出端口資源申請時,本發(fā)明的調度模塊通過第一任務的指針成員Pa從第一端口池緩存區(qū)中獲取端口資源,并將獲取得到的端口資源分配給內網(wǎng)用戶;分配完成后,第一任務將該端口資源從第一端口池緩存區(qū)中刪除,并將指針成員Pa指向第一端口池緩存區(qū)中下一個端口資源。當內網(wǎng)用戶釋放端口資源后,調度模塊通過第二任務的指針成員Pb獲取被釋放的端口資源,并將獲取得到的被釋放端口資源添加到第二端口池緩存區(qū)尾部;添加完成后,第二任務將指針成員Pb指向第二端口池緩存區(qū)尾部,即指向該端口資源。第一任務將指針成員Pa指向第一端口池緩存區(qū)中下一個端口資源后,判斷模塊判斷下一個端口資源是否為空。若下一個端口資源為不為空,則第一任務繼續(xù)等待內網(wǎng)用戶發(fā)出端口資源申請;若下一個端口資源為空,則判斷模塊繼續(xù)判斷第二任務的指針成員Pb指向的端口資源是否為空。若第二任務的指針成員Pb指向的端口資源不為空,則將第一任務與第二任務進行交換,即調度模塊通過第二任務調度內網(wǎng)用戶釋放的端口資源,存儲到第一端口池緩存區(qū),并將第二任務的指針成員Pb指向第一端口池緩存區(qū)尾部;同時調度模塊將第一任務的指針成員Pa指向第二端口池緩存區(qū)尾部,并通過第一任務從第二端口池緩存區(qū)調度端口資源分配給內網(wǎng)用戶;若第二任務的指針成員Pb指向的端口資源為空,則第二任務向第一任務發(fā)送通告,拒絕所有端口資源申請,并等待內網(wǎng)用戶釋放端口資源。
[0048]本領域的普通技術人員將會意識到,這里所述的實施例是為了幫助讀者理解本發(fā)明的原理,應被理解為本發(fā)明的保護范圍并不局限于這樣的特別陳述和實施例。本領域的普通技術人員可以根據(jù)本發(fā)明公開的這些技術啟示做出各種不脫離本發(fā)明實質的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護范圍內。
【權利要求】
1.一種網(wǎng)絡地址轉換端口分配方法,其特征在于,包括以下步驟: A、創(chuàng)建用于存儲端口資源的第一端口池緩存區(qū)和第二端口池緩存區(qū),并創(chuàng)建用于調度可用端口資源的第一任務以及用于調度釋放的端口資源的第二任務; B、第一任務等待端口資源申請,當內網(wǎng)用戶發(fā)出端口資源申請時,第一任務從第一端口池緩存區(qū)或第二端口池緩存區(qū)中調度可用端口資源分配給內網(wǎng)用戶; C、第二任務等待端口資源釋放,當內網(wǎng)用戶使用完端口資源后釋放時,第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū)或第一端口池緩存區(qū)。
2.如權利要求1所述的網(wǎng)絡地址轉換端口分配方法,其特征在于:所述步驟B中第一任務從第一端口池緩存區(qū)中調度可用端口資源分配給內網(wǎng)用戶,具體為:所述第一任務還包括指針成員Pa,所述指針成員Pa指向第一端口池緩存區(qū)中存儲的可用端口資源,所述第一任務調取指針成員Pa指向的可用端口資源分配給內網(wǎng)用戶。
3.如權利要求2所述的網(wǎng)絡地址轉換端口分配方法,其特征在于:所述步驟B還包括以下步驟: B1、第一任務為內網(wǎng)用戶分配端口后,將指針成員Pa指向下一個可用端口資源,并判斷指針成員Pa指向的可用端口資源是否為空;若可用端口資源不為空,則第一任務繼續(xù)等待內網(wǎng)用戶發(fā)出端口申請;若可用端口資源為空,則繼續(xù)判斷第二端口池緩存區(qū)是否為空;若第二端口池緩存區(qū)不為空,則第一任務指針成員Pa與第二任務指針成員Pb進行交換;若第二端口池緩存區(qū)為空,則第一任務忽略所有端口資源申請,并等待第二任務發(fā)出通告。
4.如權利要求1所述的網(wǎng)絡地址轉換端口分配方法,其特征在于:所述步驟C中第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū),具體為:所述第二任務還包括指針成員Pb,所述第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲的端口資源。
5.如權利要求4所述的網(wǎng)絡地址轉換端口分配方法,其特征在于:所述步驟C還包括以下步驟: Cl、第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū)后,將指針成員Pb指向該端口資源,并判斷指針成員Pb指向的端口資源是否為空;若端口資源為空,則第二任務繼續(xù)等待內網(wǎng)用戶釋放端口資源;若端口資源不為空,則第二任務向第一任務發(fā)送通告并等待內網(wǎng)用戶釋放端口資源。
6.如權利要求1-5所述的網(wǎng)絡地址轉換端口分配方法,其特征在于,所述第一任務與第二任務進行交換具體為:第二任務調度釋放的端口資源存儲到第一端口池緩存區(qū),第一任務從第二端口池緩存區(qū)調度端口資源分配給內網(wǎng)用戶。
7.如權利要求1-6所述的網(wǎng)絡地址轉換端口分配方法,其特征在于:所述第一端口池緩存區(qū)和第二端口池緩存區(qū)中存儲的端口資源都為鏈狀數(shù)據(jù)結構。
8.—種網(wǎng)絡地址轉換端口分配系統(tǒng),其特征在于,包括:創(chuàng)建模塊,判斷模塊和調度模塊; 所述創(chuàng)建模塊創(chuàng)建用于存儲端口資源的第一端口池緩存區(qū)和第二端口池緩存區(qū),并創(chuàng)建用于調度可用端口資源的第一任務以及用于調度釋放的端口資源的第二任務; 所述判斷模塊用于在第一任務為內網(wǎng)用戶分配端口后判斷第一端口池緩存區(qū)內的端口資源是否為空及在第二任務調度釋放的端口資源后判斷第二端口池緩存區(qū)內的端口資源是否為空; 所述調度模塊用于根據(jù)第一任務和第二任務調度端口資源。
9.如權利要求8所述的網(wǎng)絡地址轉換端口分配系統(tǒng),其特征在于:所述第一任務還包括指針成員Pa,所述指針成員Pa指向第一端口池緩存區(qū)中存儲的可用端口資源,所述第一任務調取指針成員Pa指向的可用端口資源分配給內網(wǎng)用戶。
10.如權利要求8所述的網(wǎng)絡地址轉換端口分配系統(tǒng),其特征在于:所述第二任務還包括指針成員Pb,所述第二任務調度釋放的端口資源存儲到第二端口池緩存區(qū),并將指針成員Pb指向第二端口池緩存區(qū)中存儲的端口資源。
【文檔編號】H04L29/12GK104519150SQ201410851514
【公開日】2015年4月15日 申請日期:2014年12月31日 優(yōu)先權日:2014年12月31日
【發(fā)明者】馬聰 申請人:邁普通信技術股份有限公司