專利名稱:一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及一種網(wǎng)絡數(shù)據(jù)管理方法,尤其涉及一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法及系統(tǒng)。
背景技術:
流管理是一種重要的管控手段,可以為用戶提供關于流的詳細信息,是眾多有關流應用的基礎。流管理按抽樣方式分包括:逐包處理和抽樣處理。抽樣處理時只對一部分的流進行管理,無論采用何種抽樣方式都不可避免的存在信息損耗,帶來監(jiān)管上的漏洞,因此實際應用中往往采用逐包。流管理中逐包處理基本要求有:每個包的處理達到線速度;流管理的信息需要及時的反饋給用戶;同時監(jiān)控數(shù)百萬條流。TCP是面向連接的,正常的TCP流包括SYN包、中間包和FIN/RST包,當鏈路中存有大量的短時以及不規(guī)則流時,將導致表項空間爆炸,需要清理超時流。超時流包括活動超時流和不活的超時流兩種,活動超時流是指從流的SYN包算起的連接時間超過某個門限,不活動流指一條流長時間沒有新包`到達,距離最后一個包到達時間超過某個門限。對超時門限的需要根據(jù)實際網(wǎng)絡和用戶需求來設定,設定太短則將一些活動流錯誤的刪除;如果太長則方法很有可能淹沒于SYN包。處理活動超時流用包觸發(fā)方式和普通的包處理相同,將新包的到達減去這個包對應流的起始時間與閾值比較,判斷該流是否超時,超時即刪除該流,否則更新該流所對應表項。而對于不活動流,因為長時間沒有新包到達,無法采用包觸發(fā)方式的刪除,需要事件觸發(fā)將其刪除,即定時地在流表中查找不活動超時流并將其刪除。事件觸發(fā)需要在整個存儲空間中對所有進行查找,會消耗大量的處理時間,查找和刪除都需要對存儲器讀寫操作,需要中斷正常的包處理,因此怎樣合理高效的刪除不活動超時流成為流管理的一個難點。本文中的分時復用輔助變量法主要就是為了處理不活動超時流提出來的。流管理的方法可以將其分為兩類。1、快速輔助存儲法??焖佥o助存儲法是指在原來的主存儲器外再增加輔存儲器,將原來主存儲器的部分常用信息存放在輔存儲器(SRAM)中,處理中間包時避免訪存SDRAM,或者將流有效和包到達信息存放在SRAM,加速不活動超時流的處理??焖佥o助存儲法處理不活躍超時流效率高,代價也是顯而易見的,在當前網(wǎng)絡設備中額外增加一個存儲單元,是一件多么“奢侈”的事,并且現(xiàn)在隨著電子技術的發(fā)展,SRAM的速率已經(jīng)遠遠達不到SDRAM的速率,因此此方法并沒有得到廣泛的應用。2、雙向鏈表法。雙向鏈表法在原有的數(shù)據(jù)部分加入前向和后向指針,將原來散落在存儲空間的數(shù)據(jù)連接起來,鏈表按最后一個包到達順序排序,則最舊的流在鏈表的前面,最新的到達包對應的流在鏈表的末尾,查找不活動超時流是按流表順序從前往后即可,當發(fā)現(xiàn)一個不超時活動流時停止查找。雖然按時序排列雙向鏈表在處理不活動超時流時效率很高,但其增加了更新操作的時間消耗,本質(zhì)上是將原來遍歷鏈表時的搜索時間分解到每次更新操作當中。雙向鏈表適合軟件處理,適合以網(wǎng)絡處理器為中心的架構,難以應用到FPGA為處理核心的架構中。
發(fā)明內(nèi)容
本發(fā)明針對以上問題的提出,而研制的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法,具有如下步驟:S100.接收分光設備復制的鏈路流量,逐包進行解析,提取每個包的五元組;記錄每個包到達的時間;S200.將所述每個 五元組哈希成流ID ;判斷當前五元組對應的包是否為SYN包;S300.從SD Ram和Block Ram中讀出當前包的表項數(shù)據(jù);與所述與該包對應的五元組比較:五元組對應的包是否與表項匹配。S400.若匹配,將包信息寫入對應的表項位置;S500.將所述 Block Ram 中 live 和 enable 數(shù)組清空;S501.將不活動流處理周期設為T,在(ΓΤ/2時間段,將live數(shù)組與enable數(shù)組的前半段對應;當SYN包到達時,將enable和live對應位置I,;當中間包到達時,將live對應位置I ;當enable和live對應位置O ;S502.在T/2時亥lj,比較live和與live數(shù)組對應的enable數(shù)組的前半段,enable與live的對應位分別為I和O時,則該流為不活動超時流:上報不活動超時流信息,將live和enable對應位置0,處理完后將所有的live位清O ;S503.在T/2T時間段,將live數(shù)組與enable數(shù)組的后半段對應,重復步驟S501 ;S504.在T/2時刻,比較live和enable數(shù)組后半段,重復步驟S502 ;S505.重復所述步驟S501-S504,直至完成所有包的處理。所述步驟S200中,所述的流ID位數(shù)根據(jù)存儲表項決定。所述查找分為一級空間查找和二級空間查找,一級空間查找失敗,根據(jù)流ID生成新的地址,在第二級空間繼續(xù)查找。所述步驟S300中:對于SYN包,尋找對應的空白表項,成功則返回地址;對于其它類型的包,尋找對應已經(jīng)建立的表項,成功則返回地址。步驟S400中,對于SYN包:將信息寫入對應的表項;同時將Block Ram中的enable和live位同時置為有效;對于FIN/RST包,將Block Ram中enable位置為無效;對于中間報文,至少在表項中寫入更新相應的報文數(shù)、字節(jié)數(shù)和最后報文到達時的信息;同時將live位置有效。還具有步驟S700.將流表項信息封裝成netf low格式輸出。一種使用如權利要求6所述的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理系統(tǒng),具有:包信息提取單元,解析鏈路的包并提取包的基本信息,同時記錄包的到達時間;哈希生成單元,對五元組進行哈希計算,得出包對應流ID ;查找單元負責根據(jù)生產(chǎn)的流ID查找對應的流表項;表項建立單元,處理SYN包,在對應的空表項位置建立流表項;表項更新單元,處理流中間數(shù)據(jù),讀取對應的流表項信息,更新數(shù)據(jù)并寫回原地址;表項刪除單元負責處理FIN/RST包,將包對應的流表項置為無效;不活動超時流維護單元負責定時地查找不活動超時流并將其刪除;輸出單兀負責將表項信息及時輸出。由于采用了上述技術方案,本發(fā)明提供的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法和系統(tǒng),通過一種簡單的算法,完成了在流管理中的逐包處理,有效的對不活動超時流進行管控,算法效率高,耗時時間短。而且采用了 FPGA為處理核心,成本低廉,十分便于推廣和使用。
為了更清楚的說明本發(fā)明的實施例或現(xiàn)有技術的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖做一簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例提供的基于單向并行多鏈表的流管理方法主框圖;圖2為本發(fā)明實施例提供的SDRAM中表項圖;圖3為本發(fā)明實施例提供的FPGA中Block_ram中存儲示意圖;圖4為本發(fā)明實施例提供的待處理表項信息表圖;圖5為本發(fā)明實施例提供的已處理信表項息表具體實施例方式為使本發(fā)明的實施例的目的、技術方案和優(yōu)點更加清楚,下面結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚完整的描述:一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法,主要具有如下步驟:如圖1所示:S100.SI接口是復制流量入口,該接口外部與分光設備相連,接收分光設備復制的鏈路流量,逐包進行解析,提取每個包的五元組。同時,記錄包的到達時間。S2接口將解析五元組送入哈希單元。S200.哈希單元將S2接口得到的五元組哈希成流ID,其位數(shù)根據(jù)存儲表項數(shù)決定,同時將是否為SYN包的判決結果一并通過S3送入查找單元。S300.所述查找單元分別從SDRam和Block Ram中讀出當前包的表項數(shù)據(jù);與所述與該包對應的五元組比較:五元組對應的包是否與表項匹配。對于SYN包,尋找對應的空白表項,如果匹配成功,則返回地址;對于其它類型的包,尋找對應已經(jīng)建立的表項,成功則返回地址。進一步的,為了處理哈希沖突,所述查找分為一級空間查找和二級空間查找,一級空間查找失敗,根據(jù)流ID生成新的地址,在第二級空間繼續(xù)查找。S400.如果匹配成功,則所述表項處理單元負責建立、更新和刪除表項。將所述提取的信息和查找得到的表項信息綜合處理。主要包括:對SDRAM和Block_ram兩部分的寫入操作。對于SYN包將信息通過S7接口寫入對應的表項位置,同時通過S8接口將Block_ram中的enable和live位同時置有效;FIN/RST包通過S8接口將Block_ram中enable位置為無效,表示刪除改表項,中間報文則通過S7接口寫入更新相應的報文數(shù)、字節(jié)數(shù)最后報文到達時等信息,同時通過S8接口將live位置有效。當完成上述準備工作后,所述不活動超時流維護單元開始處理、查找和刪除不活動的超時流。Block_ram主要存儲enable和live數(shù)組,分別表示對應表項是否存在和該表項當前時間段是否有新包到達,live數(shù)組的空間大小只有enable數(shù)組的一半,其實際的存儲結構如圖3所示。將不活動流處理周期設為T,處理不活動超時流具體處理步驟如下:S500.將所述 Block Ram 中 live 和 enable 數(shù)組清空;S501.在(ΓΤ/2時間段,將live數(shù)組與enable數(shù)組的前半段對應;當SYN包到達時,將enable和live對應位置I ;當中間包到達時,將live對應位置I ;當enable和live對應位置O ;S502.在T/2時亥lj,比較live和與live數(shù)組對應的enable數(shù)組的前半段,enable與live的對應位分別為I和O時,則該流為不活動超時流:上報不活動超時流信息,將live和enable對應位置0,處理完后將所有的live位清O ;S503.在T/2 T時間段,將live數(shù)組與enable數(shù)組的后半段對應,重復步驟S501 ;S504.在T/2時刻,比較live和enable數(shù)組后半段,重復步驟S502 ;S505.重復所述步驟S501-S504,直至完成所有包的處理。進一步的,當當刪除表項、遍歷不活動超時流以及用戶需求時,所述的輸出單元進行步驟S700.將流表項信息封裝成netflow格式輸出。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內(nèi),根據(jù)本發(fā)明的技術方案及其發(fā)明構思加以等同替換或改變,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法,具有如下步驟: S100.接收分光設備復制的鏈路流量,逐包進行解析,提取每個包的五元組;記錄每個包到達的時間; S200.將所述每個五元組哈希成流ID ;判斷當前五元組對應的包是否為SYN包; S300.從SD Ram和Block Ram中讀出當前包的表項數(shù)據(jù);與所述與該包對應的五元組比較:五元組對應的包是否與表項匹配。
S400.若匹配,將包信息寫入對應的表項位置;所述BlockRam中l(wèi)ive和enable數(shù)組清空;不活動流處理周期設為T,在(ΓΤ/2時間段,將live數(shù)組與enable數(shù)組的前半段對應; 當SYN包到達時,將enable和live對應位置I,; 當中間包到達時, 將live對應位置I ; 當enable和live對應位置O ;T/2時刻,比較live和與live數(shù)組對應的enable數(shù)組的前半段,enable與live的對應位分別為I和O時,則該流為不活動超時流:上報不活動超時流信息,將live和enable對應位置0,處理完后將所有的live位清O ;T/2 T時間段,將live數(shù)組與enable數(shù)組的后半段對應,重復步驟S501;T/2時刻,比較live和enable數(shù)組后半段,重復步驟S502;復所述步驟S501-S504,直至完成所有包的處理。
2.根據(jù)權利要求1所述的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法,其特征還在于:所述步驟S200中,所述的流ID位數(shù)根據(jù)存儲表項決定。
3.根據(jù)權利要求1所述的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法,其特征還在于:所述查找分為一級空間查找和二級空間查找,一級空間查找失敗,根據(jù)流ID生成新的地址,在第二級空間繼續(xù)查找。
4.根據(jù)權利要求1所述的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法,其特征還在于:所述步驟S300中: 對于SYN包,尋找對應的空白表項,成功則返回地址;對于其它類型的包,尋找對應已經(jīng)建立的表項,成功則返回地址。
5.根據(jù)權利要求1所述的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法,其特征還在于:步驟S400中, 對于SYN包:將信息寫入對應的表項;同時將Block Ram中的enable和live位同時置為有效; 對于FIN/RST包,將Block Ram中enable位置為無效; 對于中間報文,至少在表項中寫入更新相應的報文數(shù)、字節(jié)數(shù)和最后報文到達時的信息;同時將live位置有效。
6.根據(jù)上述任意一項權利要求所述的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法,其特征還在于:還具有步驟S700.將流表項信息封裝成netflow格式輸出。
7.一種使用如權利要求6所述的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理系統(tǒng),具有:包信息提取單元,解析鏈路的包并提取包的基本信息,同時記錄包的到達時間; 哈希生成單元,對五元組進行哈希計算,得出包對應流ID ;查找單元負責根據(jù)生產(chǎn)的流ID查找對應的流表項; 表項建立單元,處理SYN包,在對應的空表項位置建立流表項; 表項更新單元,處理流中間數(shù)據(jù),讀取對應的流表項信息,更新數(shù)據(jù)并寫回原地址;表項刪除單元;負責處理FIN/RST包,將包對應的流表項置為無效;不活動超時流維護單元負責定時地查找不活動超時流并將其刪除; 輸出單兀負責將表項信息及時輸出。
8.根據(jù)權利要求7所述的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理系統(tǒng),其特征還在于:所述包信息提取單元、哈希生成單元、表項建立單元、表項更新單元、表項刪除單元和輸出單元集成在FPGA中 。
全文摘要
本發(fā)明公開了一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法,具有如下步驟S100.接收分光設備復制的鏈路流量,逐包進行解析,提取每個包的五元組;記錄每個包到達的時間;S200.將所述每個五元組哈希成流ID;判斷當前五元組對應的包是否為SYN包;S300.從SD Ram和Block Ram中讀出當前包的表項數(shù)據(jù);與所述與該包對應的五元組比較五元組對應的包是否與表項匹配。本發(fā)明提供的一種基于單向并行多鏈表的網(wǎng)絡數(shù)據(jù)管理方法和系統(tǒng),通過一種簡單的算法,完成了在流管理中的逐包處理,有效的對不活動超時流進行管控,算法效率高,耗時時間短。而且采用了FPGA為處理核心,成本低廉,十分便于推廣和使用。
文檔編號H04L12/883GK103095595SQ20121059357
公開日2013年5月8日 申請日期2012年12月30日 優(yōu)先權日2012年12月30日
發(fā)明者張建輝, 葉荻秋, 卜佑軍, 李玉峰, 馬海龍, 奚東志 申請人:大連環(huán)宇移動科技有限公司, 中國人民解放軍信息工程大學