本發(fā)明涉及網(wǎng)絡(luò)協(xié)議解析技術(shù)領(lǐng)域,特別涉及一種可擴(kuò)展的網(wǎng)絡(luò)協(xié)議解析系統(tǒng)及方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,骨干網(wǎng)的流量采集和處理也越來越多的應(yīng)用在政府網(wǎng)絡(luò)管理、大數(shù)據(jù)分析等領(lǐng)域,骨干網(wǎng)的流量采集對(duì)網(wǎng)絡(luò)數(shù)據(jù)的實(shí)時(shí)處理能力有很高的要求,而且骨干網(wǎng)流量的協(xié)議種類繁多,網(wǎng)絡(luò)設(shè)備需要同時(shí)滿足處理性能和可擴(kuò)展性的要求。
通用的網(wǎng)絡(luò)協(xié)議處理流程,一般按照協(xié)議棧的層次結(jié)構(gòu)依次進(jìn)行解析,但骨干網(wǎng)的網(wǎng)絡(luò)環(huán)境復(fù)雜,常常出現(xiàn)設(shè)計(jì)中未考慮的網(wǎng)絡(luò)協(xié)議和協(xié)議組合(如隧道報(bào)文等),許多基于ASIC芯片的網(wǎng)絡(luò)設(shè)備能夠在設(shè)計(jì)時(shí)實(shí)現(xiàn)處理某種已知格式協(xié)議組合的功能,但設(shè)備上線運(yùn)行后出現(xiàn)的新協(xié)議卻難以得到及時(shí)支持。
通用CPU和軟件能夠解決新協(xié)議解析的靈活性問題,出現(xiàn)新協(xié)議時(shí)只需要改寫代碼并重新編譯,開發(fā)周期短,但其在萬兆及以上的網(wǎng)絡(luò)報(bào)文處理方面存在嚴(yán)重的性能問題。
因此考慮一種基于FPGA的可擴(kuò)展網(wǎng)絡(luò)協(xié)議解析單元,以解決骨干網(wǎng)報(bào)文解析的性能和靈活性問題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提出一種可擴(kuò)展的網(wǎng)絡(luò)協(xié)議解析系統(tǒng)及方法。
本發(fā)明提出一種可擴(kuò)展的網(wǎng)絡(luò)協(xié)議解析方法,包括:
步驟1,獲取待解析的網(wǎng)絡(luò)協(xié)議報(bào)文,根據(jù)協(xié)議查找表對(duì)所述待解析的網(wǎng)絡(luò)報(bào)文中的指令進(jìn)行譯碼,將譯碼結(jié)果進(jìn)行儲(chǔ)存;
步驟2,控制邏輯將所述譯碼結(jié)果進(jìn)行解析,將所述解析結(jié)果進(jìn)行儲(chǔ)存,解析結(jié)束后通過協(xié)議類型編碼表獲取下一層網(wǎng)絡(luò)協(xié)議報(bào)文的指令。
設(shè)置輸入報(bào)文RAM,通過所述輸入報(bào)文RAM儲(chǔ)存所述待解析的網(wǎng)絡(luò)協(xié)議報(bào)文。
設(shè)置報(bào)文解析狀態(tài)機(jī),所述報(bào)文解析狀態(tài)機(jī)控制可擴(kuò)展的網(wǎng)絡(luò)協(xié)議解析方法的解析流程。
設(shè)置報(bào)文解析寄存器組,所述報(bào)文解析寄存器組儲(chǔ)存所述譯碼結(jié)果以及網(wǎng)絡(luò)協(xié)議報(bào)文解析所需的變量。
設(shè)置輸出信息RAM,所述輸出信息RAM儲(chǔ)存所述解析結(jié)果。
本發(fā)明還提出一種可擴(kuò)展的網(wǎng)絡(luò)協(xié)議解析系統(tǒng),包括:
譯碼模塊,用于獲取待解析的網(wǎng)絡(luò)協(xié)議報(bào)文,根據(jù)協(xié)議查找表對(duì)所述待解析的網(wǎng)絡(luò)報(bào)文中的指令進(jìn)行譯碼,將譯碼結(jié)果進(jìn)行儲(chǔ)存;
解析模塊,用于控制邏輯將所述譯碼結(jié)果進(jìn)行解析,將所述解析結(jié)果進(jìn)行儲(chǔ)存,解析結(jié)束后通過協(xié)議類型編碼表獲取下一層網(wǎng)絡(luò)協(xié)議報(bào)文的指令。
輸入報(bào)文RAM,通過所述輸入報(bào)文RAM儲(chǔ)存所述待解析的網(wǎng)絡(luò)協(xié)議報(bào)文。
報(bào)文解析狀態(tài)機(jī),所述報(bào)文解析狀態(tài)機(jī)控制可擴(kuò)展的網(wǎng)絡(luò)協(xié)議解析方法的解析流程。
報(bào)文解析寄存器組,所述報(bào)文解析寄存器組儲(chǔ)存所述譯碼結(jié)果以及網(wǎng)絡(luò)協(xié)議報(bào)文解析所需的變量。
輸出信息RAM,所述輸出信息RAM儲(chǔ)存所述解析結(jié)果。
由以上方案可知,本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明利用FPGA,在保證骨干網(wǎng)數(shù)據(jù)處理能力的前提下,提供了一種易于添加新的網(wǎng)絡(luò)協(xié)議解析功能的方法,避免了傳統(tǒng)高速網(wǎng)絡(luò)處理設(shè)備在遇到新網(wǎng)絡(luò)協(xié)議時(shí)更新周期長的問題。
附圖說明
圖1為本發(fā)明具體應(yīng)用環(huán)境圖;
圖2為本發(fā)明系統(tǒng)的整體架構(gòu)圖;
圖3為本發(fā)明的協(xié)議解析流程圖;
圖4為本發(fā)明的協(xié)議解析指令圖;
圖5為本發(fā)明的可擴(kuò)展的網(wǎng)絡(luò)協(xié)議解析指令圖;
圖6為本發(fā)明的另一種指令擴(kuò)展方案圖。
具體實(shí)施方式
本發(fā)明具體應(yīng)用環(huán)境,如圖1所示:
1前端需要有網(wǎng)絡(luò)接口控制器,能夠提供最外層為鏈路層或以上層次的報(bào)文。
2需要有主機(jī)或用戶接口傳輸控制信息和狀態(tài)信息。
3網(wǎng)絡(luò)協(xié)議識(shí)別結(jié)果可送給后續(xù)模塊做進(jìn)一步處理,如規(guī)則過濾、報(bào)文轉(zhuǎn)發(fā)等。
本發(fā)明系統(tǒng)的整體架構(gòu),如圖2所示:
輸入報(bào)文RAM:用于存放待解析的報(bào)文。
報(bào)文解析狀態(tài)機(jī):用于控制整個(gè)報(bào)文的解析流程。
協(xié)議類型編碼表:每種協(xié)議報(bào)文對(duì)應(yīng)一條編碼指令,可通過協(xié)議類型編碼表獲取下一層協(xié)議的編碼指令。
協(xié)議查找表:解析協(xié)議編碼指令,得到的結(jié)果用于解析報(bào)文。
報(bào)文解析寄存器組:存放協(xié)議編碼指令的譯碼結(jié)果以及其他報(bào)文解析所需的變量。
控制邏輯:解析報(bào)文并提取信息。
輸出信息RAM:存放報(bào)文解析的結(jié)果。如IP地址、協(xié)議類型、應(yīng)用層數(shù)據(jù)位置等。
本發(fā)明的協(xié)議解析流程(即控制邏輯),如圖3所示:
取得協(xié)議解析指令后,利用協(xié)議查找表對(duì)指令進(jìn)行譯碼,再將譯碼后的操作信息加載到報(bào)文解析寄存器組中,之后控制邏輯利用報(bào)文解析寄存器組中的信息對(duì)報(bào)文進(jìn)行解析,解析結(jié)果存放在輸出信息RAM中,解析結(jié)束后通過協(xié)議類型編碼表得到下一層協(xié)議報(bào)文的解析指令。
本發(fā)明的協(xié)議解析指令,如圖4所示:
協(xié)議解析指令包括直接操作(終止識(shí)別標(biāo)記、未識(shí)別協(xié)議標(biāo)記)和查表操作(協(xié)議組號(hào)、協(xié)議分類號(hào)、協(xié)議號(hào))
對(duì)具有相同協(xié)議字段和協(xié)議頭長度的協(xié)議進(jìn)行分組,可以減少協(xié)議類型編碼表和協(xié)議信息查找表的項(xiàng)數(shù)。
本發(fā)明的可擴(kuò)展的網(wǎng)絡(luò)協(xié)議解析指令,如圖5所示:
使用可寫的CAM和RAM組成協(xié)議類型編碼表和協(xié)議信息查找表,則可通過用戶配置接口對(duì)這些表進(jìn)行修改和添加,以添加新的協(xié)議報(bào)文識(shí)別功能。
同時(shí)此實(shí)施例還包括一個(gè)軟件工具將每種協(xié)議格式編碼為表中的內(nèi)容,并通過用戶配置接口下發(fā)到FPGA中。
本發(fā)明的另一種指令擴(kuò)展方案,如圖6所示:
包含一個(gè)協(xié)議解析數(shù)據(jù)庫,存放處理已知協(xié)議的代碼。
代碼描述了協(xié)議類型編碼表和協(xié)議信息查找表的內(nèi)容。
代碼需要按照給定的編程模版編寫,以便工具能夠自動(dòng)將新協(xié)議的代碼插入到原有的網(wǎng)絡(luò)協(xié)議解析單元代碼中。
此實(shí)施例中,可將前一實(shí)施例中的部分CAM和RAM替換成寄存器或常量代碼,以減少FPGA中的資源消耗,代價(jià)是代碼需要重新編譯并需要使用FPGA的在線升級(jí)功能。
還包括實(shí)現(xiàn)數(shù)據(jù)庫搜索和代碼自動(dòng)插入功能的軟件工具。
本發(fā)明還提出一種可擴(kuò)展的網(wǎng)絡(luò)協(xié)議解析系統(tǒng),包括:
譯碼模塊,用于獲取待解析的網(wǎng)絡(luò)協(xié)議報(bào)文,根據(jù)協(xié)議查找表對(duì)所述待解析的網(wǎng)絡(luò)報(bào)文中的指令進(jìn)行譯碼,將譯碼結(jié)果進(jìn)行儲(chǔ)存;
解析模塊,用于控制邏輯將所述譯碼結(jié)果進(jìn)行解析,將所述解析結(jié)果進(jìn)行儲(chǔ)存,解析結(jié)束后通過協(xié)議類型編碼表獲取下一層網(wǎng)絡(luò)協(xié)議報(bào)文的指令。
輸入報(bào)文RAM,通過所述輸入報(bào)文RAM儲(chǔ)存所述待解析的網(wǎng)絡(luò)協(xié)議報(bào)文。
報(bào)文解析狀態(tài)機(jī),所述報(bào)文解析狀態(tài)機(jī)控制可擴(kuò)展的網(wǎng)絡(luò)協(xié)議解析方法的解析流程。
報(bào)文解析寄存器組,所述報(bào)文解析寄存器組儲(chǔ)存所述譯碼結(jié)果以及網(wǎng)絡(luò)協(xié)議報(bào)文解析所需的變量。
輸出信息RAM,所述輸出信息RAM儲(chǔ)存所述解析結(jié)果。