1.一種基于分布式系統(tǒng)的NAT會話管理方法,其特征在于,包括以下步驟:
(1)創(chuàng)建NAT會話:將會話發(fā)起方向IP報(bào)文中的五元組信息作為會話發(fā)起方向鍵值,結(jié)合NAT規(guī)則計(jì)算出會話回應(yīng)方向鍵值;根據(jù)發(fā)起方向鍵值和回應(yīng)方向鍵值分別計(jì)算出hash桶索引,再將發(fā)起方向鍵值和回應(yīng)方向鍵值分別加入到對應(yīng)hash桶中,形成NAT會話;最后將該NAT會話加入到一個(gè)雙向鏈表中,完成NAT會話的創(chuàng)建;
(2)對創(chuàng)建的NAT會話進(jìn)行保持更新:將收到IP報(bào)文中的五元組信息作為查詢鍵值,并由該查詢鍵值計(jì)算出hash桶索引值,再到對應(yīng)hash桶中查詢對應(yīng)的會話鍵值;通過查詢到的會話鍵值得到對應(yīng)的NAT會話,將會話中當(dāng)前時(shí)間更新為系統(tǒng)時(shí)間,完成對已創(chuàng)建NAT會話的保持更新,以確保該會話在有通信流量時(shí)不被老化刪除;
(3)對更新后的NAT會話進(jìn)行老化操作:采用一個(gè)老化指示指針指向雙向鏈表開始處,并每間隔一段時(shí)間從指針指示處延著該雙向鏈表對其中的NAT會話進(jìn)行老化檢查;在檢查每條會話時(shí),將當(dāng)前時(shí)間加上老化時(shí)間大于系統(tǒng)時(shí)間的會話進(jìn)行老化處理,同時(shí)保留其他會話,并更新所述指示指針位置,完成對更新后的NAT會話的老化操作;
(4)查詢老化操作后的NAT會話:采用一個(gè)查詢指示指針指向雙向鏈表開始處,并每間隔一段時(shí)間判斷是否有查詢動作需要執(zhí)行;如果需要執(zhí)行查詢動作,便從指針指示處延著雙向鏈表對其中的NAT會話進(jìn)行查詢,更新所述指示指針位置,完成對老化檢查后的NAT會話的查詢操作。
2.根據(jù)權(quán)利要求1所述的基于分布式系統(tǒng)的NAT會話管理方法,其特征在于,所述步驟(1)的創(chuàng)建NAT會話的具體方法為,
(11)NAT設(shè)備接收到報(bào)文時(shí),提取出報(bào)文中的IP五元組信息作為會話發(fā)起方向鍵值,并將其保存到會話發(fā)起方向鍵值中,所述IP五元組為源IP、目的IP、源端口、目的端口和協(xié)議號;
(12)對接收到的報(bào)文使用會話進(jìn)行NAT規(guī)則匹配;
(13)根據(jù)NAT規(guī)則匹配結(jié)果,判斷該報(bào)文是否需要進(jìn)行NAT轉(zhuǎn)換,如果不需要做NAT轉(zhuǎn)換,則進(jìn)入正常轉(zhuǎn)發(fā)流程;如果需要進(jìn)行NAT轉(zhuǎn)換,則進(jìn)入下一步;
(14)根據(jù)NAT轉(zhuǎn)換規(guī)則對IP五元組中的源IP、源端口或目的IP、目的端口進(jìn)行轉(zhuǎn)換,選擇轉(zhuǎn)換后的IP和端口,通過選擇的IP和端口得到該報(bào)文對應(yīng)的會話回應(yīng)方向鍵值;
(15)根據(jù)會話發(fā)起方向鍵值和會話回應(yīng)方向鍵值分別計(jì)算出hash桶索引值會話發(fā)起方向hash索引和會話回應(yīng)方向hash索引;
(16)根據(jù)計(jì)算出的hash桶索引,分別將會話發(fā)起方向鍵值和會話回應(yīng)方向鍵值加入到對應(yīng)的hash桶中;
(17)將會話發(fā)起方向鍵值和會話回應(yīng)方向鍵值對應(yīng)的會話加入到雙向鏈表中,便于老化和查詢操作。
3.根據(jù)權(quán)利要求2所述的基于分布式系統(tǒng)的NAT會話管理方法,其特征在于,所述步驟(2)對創(chuàng)建的NAT會話進(jìn)行保持更新方法為,
(21)NAT設(shè)備接收到報(bào)文時(shí),提取報(bào)文中的IP五元組信息作為會話鍵值,并保存到會話鍵值中;
(22)用會話鍵值計(jì)算出hash桶索引值,并到該hash桶中查詢該會話鍵值;
(23)判斷該hash桶中是否查詢到該會話鍵值,如果未查詢到該會話鍵值,則返回會話創(chuàng)建流程,重新創(chuàng)建NAT會話;如果查詢到該會話鍵值,則進(jìn)入下一步;
(24)獲取當(dāng)前系統(tǒng)時(shí)間,并將該會話鍵值對應(yīng)會話中的當(dāng)前時(shí)間更新為當(dāng)前系統(tǒng)時(shí)間,保證會話不被老化刪除。
4.根據(jù)權(quán)利要求3所述的基于分布式系統(tǒng)的NAT會話管理方法,其特征在于,所述步驟(3)對更新后的NAT會話進(jìn)行老化操作方法為,
(31)將老化指示指針指向雙向鏈表開始處;
(32)將每次老化檢查的會話條數(shù)最大值設(shè)置為max,將已檢查會話條數(shù)設(shè)置為0;
(33)判斷進(jìn)行老化檢查的會話條數(shù)是否大于等于最大值max或雙向鏈表中是否已無會話;如果是,則進(jìn)入步驟(34);如果否,則進(jìn)入步驟(35);
(34)延時(shí)一段時(shí)間后返回步驟(32)進(jìn)行下一次老化檢查;
(35)獲取老化指示指針?biāo)赶驎挼漠?dāng)前時(shí)間、老化時(shí)間和系統(tǒng)時(shí)間;
(36)判斷會話當(dāng)前時(shí)間與會話老化時(shí)間之和是否小于系統(tǒng)時(shí)間,如果是,則進(jìn)入步驟(37);如果否,則進(jìn)入步驟(38)說明該會話已較長時(shí)間無流量通過,
(37)將該會話老化刪除,并釋放相關(guān)資源,更新老化指示指針,使老化指示指針指向雙向鏈表中的下一條會話;
(38)不對該會話進(jìn)行老化刪除操作,直接更新老化指示指針,使老化指示指針指向雙向鏈表中的下一條會話;
(39)返回步驟(33),循環(huán)對會話進(jìn)行老化檢查操作。
5.根據(jù)權(quán)利要求4所述的基于分布式系統(tǒng)的NAT會話管理方法,其特征在于,所述步驟(4)查詢老化操作后的NAT會話方法為,
(41)將會話查詢指示指針指向雙向鏈表開始處;
(42)判斷當(dāng)前是否需要進(jìn)行查詢操作,如果不需要執(zhí)行查詢操作,則進(jìn)入步驟(43);如果需要執(zhí)行查詢操作,則進(jìn)入步驟(44);
(43)延時(shí)一段時(shí)間后返回步驟(42);
(44)設(shè)置每次能查詢的會話條數(shù)最大值為max,設(shè)置已查詢的會話條數(shù)為0;
(45)判斷已查詢會話條數(shù)是否大于等于最大值max或雙向鏈表中是否已無會話,如果是,則返回步驟(43);如果否,則進(jìn)入步驟(46);
(46)獲取查詢指示指針當(dāng)前所指向會話的信息,完成當(dāng)前會話的查詢;
(47)更新查詢指示指針,使其指向雙向鏈表中的下一條會話;
(48)返回步驟(45),對雙向鏈表中的其他會話進(jìn)行查詢。