新四季網

協議解析方法、設備及系統的製作方法

2023-12-07 01:33:41 1

專利名稱:協議解析方法、設備及系統的製作方法
技術領域:
本發明涉及報文解析技術,尤其涉及一種協議解析方法、設備及系統。
背景技術:
隨著網際網路業務的爆炸性發展及寬帶業務的迅猛增長,運營商在業務的動態感知、策略控制、業務質量(Quality of Service, QoS)保障以及網絡與業務的安全保障等領域面臨巨大挑戰,促使了深度包檢測(Deep Packet Inspection, DPI)、入侵檢測系統(Intrusion Detection System, IDS) 等網絡安全管理技術的快速發展。協議解析是實現這些網絡安全管理技術的基礎和關鍵。協議解析是從網絡通信協議特有的規則性出發,對數據包的數據和結構進行解碼分析的過程,通過協議解析可獲得數據包中深層次的數據,從而為分析數據包提供精確、詳細的信息。例如,在DPI技術中,通過對網絡數據包的應用層進行協議解析,可精確、快速的識別所承載的協議及所關心的特定報文內容;在IDS中,通過對數據包進行協議解析來有效識別利用協議的攻擊行為,克服了傳統的採用埠或特徵欄位來識別攻擊行為的缺陷,提高了誤報率。圖I為現有的協議解析方法的一種流程示意圖。如圖I所示,執行協議解析方法包括步驟SlOl,通過採用狀態機查找協議字符流中的關鍵字;步驟S102,判斷字符流中的字符與狀態機中的狀態是否匹配,若不匹配,則執行步驟S103,若匹配,則執行步驟S104 ;S103,從該不匹配的字符開始查找回車換行符,S卩「/r/n」字符,然後跳轉到該回車換行符的下一字符開始,採用狀態機繼續查找該協議字符流中的關鍵字;步驟S104,字符流中若干連續字符與狀態機某一分支完全匹配時,判定該連續字符為關鍵字;步驟S105,從關鍵字開始查找「\r\n」字符,則該關鍵字至「\r\n」之間部分為協議單元內容;步驟S106,判斷是否查找完所有關鍵字及其對應協議內容,若否,則重複執行上述步驟;若是,則完成協議解析。當基於硬體實施上述協議解析方法時,狀態機僅完成匹配工作,具體的解析過程均需由設備硬體來實現,所以當解析的協議內容或類型發生變化時,需對硬體進行較大改動才能完成解析升級。

發明內容
本發明實施例提供一種協議解析方法、設備及系統,用以一定程度上實現硬體結構與協議解析流程的解耦。根據本發明實施例的一方面,提供一種協議解析方法,包括獲取待解析的數據包,以及指令狀態機的當前節點的數據表項,其中,所述指令狀態機包括匹配節點和指令節點;若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點,對所述待解析的數據包的當前字符與匹配字符進行匹配處理;若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動指令執行引擎對所述指令節點進行解析以獲取所述指令節點對應的指令類型,並根據所述指令類型對所述待解析的數據包的當前字符進行操作處理。
根據本發明實施例的另一方面,提供一種協議解析設備,包括解析引擎和指令執行引擎,其中所述解析引擎用於獲取待解析的數據包,及指令狀態機的當前節點的數據表項,其中,所述指令狀態機包括匹配節點和指令節點;若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點,對所述待解析的數據包的當前字符與匹配字符進行匹配處理;若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動所述指令執行引擎執行處理;所述指令執行引擎用於響應所述解析引擎的驅動,對所述指令節點進行解析以獲取所述指令節點對應的指令類型,並根據所述指令類型對所述待解析的數據包進行操作處理。根據本發明實施例的又一方面,還提供一種協議解析系統,包括指令狀態機編譯器和本發明實施提供的協議解析設備,其中所述指令狀態機編譯器用於向所述協議解析設備提供指令狀態機的數據表項。根據本發明實施例的協議解析方法、設備及系統,通過根據待解析的協議標準生成包括匹配節點和指令節點的指令狀態機數據表項並根據指令狀態機數據表項的匹配節點和指令節點對待解析報文中的字符進行匹配處理或執行與指令節點對應的操作處理,即通過指令狀態機數據表項來描述協議解析的全過程,並由硬體結構實現協議解析架構。因此,在硬體上基於指令狀態機數據表項對報文進行解析時,硬體結構只需按照指令狀態機數據表項的結構執行匹配操作和/或與指令節點對應的具體操作,例如計算和判斷等與具體的協議無關,實現了硬體結構與協議的解耦。從而,當解析的協議需要長級、擴展或維護時,只需更新指令狀態機數據表項即可,而無需對硬體部分進行改動,實現了硬體熱升級,提升了靈活性、可升級性和可維護性。


為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖I為現有的協議解析方法的一種流程示意圖;圖2A為本發明實施例的協議解析設備的一種結構示意圖;圖2B為本發明實施例的協議解析設備的另一種結構示意圖;圖3為本發明實施例的一種協議解析系統的架構示意圖; 圖4為本發明實施例的協議解析方法的流程示意圖;圖5為本發明實施例的一種基於指令狀態機數據表項執行協議解析的流程示意圖;圖6為本發明實施例的指令狀態機數據表項生成的流程示意圖;圖7為本發明實施例的一種並列結構的狀態機的示意圖8為本發明實施例的一種判斷結構的狀態機的示意圖;圖9為本發明實施例的一種指令狀態機示例的示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。請參閱圖2A,圖2A為本發明實施例的協議解析設備的一種結構示意圖。如圖2A所示,該協議解析設備包括解析引擎21和指令執行引擎22,其中
所述解析引擎21用於獲取待解析的數據包,及指令狀態機的當前節點的數據表項,其中,所述指令狀態機包括匹配節點和指令節點;若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點,對所述待解析的數據包的當前字符與匹配字符進行匹配處理;若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動所述指令執行引擎22執行處理;所述指令執行引擎用於響應所述解析引擎的驅動,對所述指令節點進行解析以獲取所述指令節點對應的指令類型,並根據所述指令類型對所述待解析的數據包進行操作處理。根據上述實施例的協議解析設備,由於不同的解析操作對應不同的指令節點,通過指令狀態機數據表項即可描述協議解析的全過程,根據指令狀態機數據表項觸發硬體結構實現協議解析操作,使得執行解析操作的硬體結構與具體的協議無關,實現了硬體與協議的解耦。此外,當解析需要升級主、擴展或維護時,只需要對軟體實現的指令狀態機數據表項進行更新即可,提升了靈活性、可升級性和可維護性。而且,解析引擎對於報文和指令的並行處理提高了解析速度,通過單獨的指令執行引擎執行解析操作,還可支持多種協議格式,例如包括基於文本的協議和二進位編碼協議等,提聞了應用的廣泛性。進一步地,在上述實施例的協議解析設備中,所述指令節點所對應的指令類型包括提取指令、計算指令、轉換指令和判斷指令中的一個或多個;相應地,所述指令執行引擎具體用於根據所述提取指令,從所述待解析的數據包中提取自當前字符開始的一個或多個字符;和/或根據所述計算指令,按照預設規則對所述待解析的數據包進行計算操作;和/或根據所述轉換指令,對所述待解析的數據包進行格式轉換操作;和/或根據所述判斷指令,對所述待解析的數據包進行判斷操作並生成判斷結果。根據上述實施例的協議解析設備,由於指令執行引擎可根據指令類型執行提取操作、計算操作、轉換操作和/或判斷操作等,實現了靈活的、多元化的協議解析。進一步地,如果所述待解析的數據包與上一個關聯數據包為跨包報文相關的數據包,所述解析引擎具體用於獲取上一個關聯數據包結束時所在的指令狀態機的數據表項地址、跨包報文長度信息以及對上一個關聯數據包進行協議解析的操作處理的結果;若所述待解析的數據包的當前字符是所述待解析的數據包的第一個字符,則根據所述數據表項地址對應的數據表項,確定所述指令狀態機的當前節點的數據表項;若所述待解析的數據包的當前字符不是所述待解析的數據包的第一個字符,則根據指令狀態機的上一個節點的數據表項中的跳轉節點地址對應的數據表項,確定所述指令狀態機的當前節點的數據表項;若所述數據表項所表示的指令狀態機的當前節點為匹配節點,根據所述匹配節點和所述跨包報文長度信息,對所述待解析的數據包的當前字符與匹配字符進行匹配處理;若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動所述指令執行引擎執行處理;相應地,所述指令執行引擎具體用於響應所述解析引擎的驅動,根據所述指令類型和所述對上一個關聯數據包進行協議解析的操作處理的結果,對所述待解析的數據包進行操作處理。 進一步地,在上述實施例的協議解析設備中,如果所述待解析的數據包為跨包報文相關的數據包,則所述解析引擎還用於對所述操作處理的結果進行存儲,並存儲所述數據包結束時所在的指令狀態機的數據表項地址和跨包報文長度信息。根據上述實施例的協議解析設備,實現了對跨包報文的有效解析。請參閱圖2B,圖2B為本發明實施例的協議解析設備的另一種結構示意圖。如圖2B所示,該協議解析設備除包括解析引擎21和指令執行引擎22之外,還包括結果上報模塊23,用於對從所述解析引擎21或所述指令執行引擎22接收的操作處理的結果按照預定格式上報;相應地,所述指令執行引擎22還用於將所述操作處理的結果發送至所述結果上報模塊23或所述解析引擎21,並由所述解析引擎21將所述操作處理的結果發送至所述結果上報模塊23。根據上述實施例的協議解析設備,提供了不同的結果上報機制,並且,由於操作處理的結果可經由解析引擎發送至結果上報模塊,因此可根據需要由解析引擎對操作處理的結果進行排序等處理後,按照預設規則上報結果。進一步地,在上述實施例的協議解析設備中,還包括狀態機表項管理模塊24,用於所述指令狀態機數據表項載入存儲區,和/或用於對存儲的所述指令狀態機數據表項進行更新。根據上述實施例的協議解析設備,實現了對指令狀態機數據表項的統一管理及更新。進一步地,在上述實施例的協議解析設備中,還包括存儲區,所述存儲區包括主存儲區和備存儲區;相應地,所述狀態機表項管理模塊還用於對所述存儲區存儲的所述指令狀態機數據表項進行更新,具體用於將更新的指令狀態機數據表項載入到所述備存儲區,並將所述備存儲區與所述主存儲區切換,以由所述備存儲區將所述更新的指令狀態機數據表項加載至所述解析引擎。根據上述實施例的協議解析設備,由於存儲區包括主存儲區和備存儲區,一方面,提高了存儲區的可靠性,另一方面,通過首先將更新的指令狀態機數據表項載入到所述備存儲區,並將所述備存儲區與所述主存儲區切換來完成數據表項的更新,使得在數據表項的更新過程中,可不間斷協議解析,避免了因對單存儲區的指令狀態機數據表項進行數據更新過程中導致協議解析設備不可用。
圖3為本發明實施例的一種協議解析系統的架構示意圖。如圖3所示,該協議解析系統包括指令狀態機編譯器31和本發明實施例提供的任一協議解析設備32,其中,指令狀態機編譯器31用於向所述協議解析設備32提供指令狀態機的數據表項。進一步地,所述指令狀態機編譯器31具體用於讀入並解析協議描述文件,所述協議描述文件包括流程結構、匹配特徵和操作特徵;根據所述流程結構,將所述匹配特徵編譯為所述匹配節點,將所述操作特徵編譯為所述指令節點,形成指令狀態機並轉換為所述指令狀態機的數據表項;將所述指令狀態機的數據表項載入到存儲區。根據本發明實施例的協議解析系統,由於不同的解析操作對應不同的指令節點,通過指令狀態機數據表項即可描述協議解析的全過程,根據指令狀態機數據表項觸發硬體結構實現協議解析操作,使得執行解析操作的硬體結構與具體的協議無關,實現了硬體與協議的解耦。此外,當解析需要升級主、擴展或維護時,只需要對軟體實現的指令狀態機數據表項進行更新即可,提升了靈活性、可升級性和可維護性。圖4為本發明實施例的協議解析方法的流程示意圖。如圖4所示,該協議解析方 法包括以下步驟步驟S401,獲取待解析的數據包,以及指令狀態機的當前節點的數據表項,其中,所述指令狀態機包括匹配節點和指令節點;步驟S402,若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點,對所述待解析的數據包的當前字符與匹配字符進行匹配處理;步驟S403,若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動指令執行引擎對所述指令節點進行解析以獲取所述指令節點對應的指令類型,並根據所述指令類型對所述待解析的數據包進行操作處理。具體地,圖5為本發明實施例的一種基於指令狀態機數據表項執行協議解析的流程示意圖。如圖5所示,包括以下步驟步驟S501,接收輸入的待解析報文;步驟S502,讀入指令狀態機數據表項;解析開始時,讀入指令狀態機數據表項的根節點;步驟S503,判斷當前節點類型,若為匹配節點則執行步驟S504,若為指令結點則執行步驟S505,若為結束節點則解析結束;步驟S504,對待解析報文的當前字符進行匹配處理,即將待解析報文的當前字符與當前匹配節點的匹配字符進行比較,如果匹配成功,則從指令狀態機數據表項中讀取匹配成功時跳轉節點地址,跳轉到相應節點,並執行步驟S506 ;如果匹配失敗,則從指令狀態機數據表項中讀取匹配失敗時跳轉節點地址,跳轉到相應節點,並執行步驟S506 ;步驟S505,將指令節點和待解析報文的當前字符傳入指令執行引擎,以由指令執行引擎對待解析報文的當前字符執行解析操作,並執行步驟S506;其中,指令執行引擎例如包括輸入單元和指令解析及執行單元,輸入單元用於接收解析引擎傳入的指令節點和傳入的報文數據;指令解析及執行單元用於解析指令節點數據,獲得該指令是執行哪種操作的信息,將報文數據傳入與執行操作相應的處理單元,進行提取、計算、轉換或判斷等操作,並在操作完成後將結果返回給解析引擎;步驟S506,判斷待解析報文是否結束,若是,則解析結束,若否,則返回執行步驟S502。根據上述實施例的協議解析方法,由於不同的解析操作對應不同的指令節點,通過指令狀態機數據表項即可描述協議解析的全過程,根據指令狀態機數據表項觸發硬體結構實現協議解析操作,使得執行解析操作的硬體結構與具體的協議無關,實現了硬體與協議的解耦。此外,當解析需要升級主、擴展或維護時,只需要對軟體實現的指令狀態機數據表項進行更新即可,提升了靈活性、可升級性和可維護性。而且,解析引擎對於報文和指令的並行處理提高了解析速度,通過單獨的指令執行引擎執行解析操作,還可支持多種協議格式,例如包括基於文本的協議和二進位編碼協議等,提高了應用的廣泛性。進一步地,在上述實施例的協議解析方法中,還包括 讀入並解析協議描述文件,所述協議描述文件包括流程結構、匹配特徵和操作特徵;根據所述流程結構,將所述匹配特徵編譯為所述匹配節點,將所述操作特徵編譯為所述指令節點,形成指令狀態機並轉換為所述指令狀態機的數據表項;將所述指令狀態機的數據表項載入到第一存儲區。 圖6為本發明實施例的指令狀態機數據表項生成的流程示意圖。如圖6所示,指令狀態機編譯器通過對協議標準進行協議分析(步驟S601),提取匹配特徵(步驟S602)及操作特徵(步驟S603)並以特徵語句表示,以結構語句表示解析流程,解析協議描述文件(步驟S604),根據協議描述文件生成指令狀態機(步驟S605),並輸出數據表項(步驟S606)。其中,匹配特徵是指協議中能夠標識協議單元的字符串或二進位編碼,通過匹配特徵能唯一確定協議的特徵單元。匹配特徵根據是否編碼可分兩種形式一種是基於文本的特徵,即協議中定義的協議單元名即為特徵內容,例如=HTTP協議中的頭域名「HOST」,在報文中即為「HOST」的ASCII碼值;另一種是基於二進位編碼的特徵,即協議中的協議單元名在報文封裝時經過編碼操作,例如MMS協議中的頭域名「Bcc」編碼為0x01,則報文中其值為0x01。採用特徵語句來表示匹配特徵,其形式為匹配特徵語句=匹配特徵標識符+匹配字符串+是否大小寫敏感。一種實現形式例如為match( 「abc」,insense),其中,match為匹配特徵標識符,「abc」為匹配字符串,insense表示大小寫不敏感。此外,以上各部分可根據系統需求採用多種其他表現形式。在匹配過程中,忽略協議規定的不相關或無意義字符。操作特徵例如分為以下四種類型一、提取有兩種提取方式,一是提取報文中的內容直到結束符,結束符根據協議單元的定義設定,可以為一個或多字符;另一種是提取一定長度的報文內容,長度則由計算操作獲得;二、計算對協議單元內容按協議規定進行計算;三、轉換將協議單元內容進行格式轉換,包括整型、浮點型、字符型、枚舉型及各種數制的格式的轉換,如將表示十進位數的ASCII轉換為二進位,將表示十六進位的ASCII轉換為二進位;四、判斷將協議單元的內容與給定數值、字符或範圍進行比較獲得比較結果。採用特徵語句來表示操作特徵,其形式為操作特徵語句=操作標識符([* (操作參數)])其中,操作標識符表明了哪種操作,操作參數可由0個、I個或多個組成。例如EXTRACT (\x20),其中,EXTRACT表示操作類型為提取操作,\x20表示提取的內容為從當前字符到\x20為止。
結構語句例如包括並列結構語句、順序結構語句和判斷結構語句,相應地,解析流程可分為並列結構、順序結構及判斷結構。具體地,圖7為本發明實施例的一種並列結構的狀態機的示意圖。如圖7所示,並列結構指協議單元不存在前後關係,解析時將這種協議單元放在一個並列結構中,以不同的分支(如圖7中所示的分支I和分支2)表示不同的協議單元;根據結束符判斷是否結束此並列結構,如果匹配結束符則跳出,進行後續解析,否則跳回結構的起點,繼續進行解析。並列結構語句可表示為塊名(結束符)
{
描述語句序列I
or
描述語句序列2
or
描述語句序列n
}具體示例如下,用於表示協議單元host與協議單元date是一個並列結構,當遇到\x0D\x0A時跳出此結構
Header part(\xOD\xOA)
{
MATCH(「host」,insense);
EXTRACT(\xOD\xOA);
or
MATCH(「date」, insense);
EXTRACT(\xOD\xOA);
}順序結構是解析過程的默認結構,不需特殊標識,按語句或塊的先後順序進行解析。圖8為本發明實施例的一種判斷結構的狀態機的示意圖。如圖8所示,對於需要根據某些協議內容的判斷來決定解析操作的情況,採用判斷結構,根據判斷的結果進行分支處理,例如當判斷結果為是時,執行分支1,當判斷結果為否時,執行分支2。判斷結構語句可表示為
}具體示例如下,其中TESTFLAG(CHUNKED)為表示判斷的指令,用於表示根據指令
執行的結果跳到不同的分支
If ( TESTFLAG(CHUNKED))
{
解析操作I;
}
Else
{
解析操作2;
}按照上述方式生成描述文件後,指令狀態機根據描述文件的流程結構,將匹配特徵編譯為匹配節點,將操作特徵編譯為指令節點,生成指令狀態機,並轉換為表項數據結構。更為具體地,生成指令狀態機包括以下流程步驟I :讀入解析描述文件;步驟2 :如果解析描述文件為空或內容已讀完,結束生成過程;否則,讀入一條描述語句,轉步驟3 ;步驟3 :如果解析語句為結構語句,則生成相應的順序、並列、分支結構,轉步驟2 ;否則轉步驟4 ;步驟4 :如果語句為匹配特徵語句,轉步驟5 ;如果語句為操作特徵語句,轉步驟7 ;步驟5 :如果匹配特徵語句中字符串為空或已處理完所有字符串,轉步驟2 ;否則,讀入一個字符,轉步驟6 ;步驟6 :對於當前字符,如果已經有從當前匹配節點相同的跳轉,轉步驟5 ;否則,對當前字符建立新的匹配節點;轉步驟5 ;步驟7 :根據操作特徵語句生成指令節點,轉步驟2。
例如,對於如下協議描述文件,按照上述流程生成的指令狀態機例如圖8所示。
Header part(\xOD\xOA)
{
MATCH(「host」,insense);
EXTRACT(\xOD\xOA);
or MATCH(「date」, insense);
EXTRACT(\xOD\xOA);
}圖9為本發明實施例的一種指令狀態機示例的示意圖。其中,標記0-10均為描述文件中的節點,以實現表示的節點(節點0、1、2、3、5、6、7、8和10)為匹配節點,以虛線表示的節點(節點4和9)為指令節點。生成指令狀態機後,將指令狀態機中的每個節點按照節點類型轉換為表項結構,並根據節點間的關係填充相應的地址。更為具體地,匹配節點的結構例如表I所示,其中地址I為匹配成功時跳轉節點地址,地址2為匹配失敗時跳轉節點地址表I
節點地址節點標識節點屬性匹配字符地址I地址2~指令節點的結構例如表2所示表2
節點地址節點標誌指令類型~指令操作參數跳轉節點地址此外,根據不同的實現方式,可將生成的指令狀態機數據表項轉換成不同的存儲格式。例如若使用現場可編程門陣列(Field-Programmable Gate Array, FPGA),則可以根據FPGA的特點轉換成特定格式存儲;若使用專用標準產品(Application SpecificStandard Parts, ASSP)或專用集成電路(Application Specific Integrated Circuit,ASIC),則可以轉換成晶片能識別的指令進行存儲。通過採用上述數據格式,可將匹配的中間狀態進行記錄,從而支持跨包的協議解析。進一步地,上述生成的指令狀態機數據表項例如通過協議解析設備的狀態機表項管理模塊(圖2B中示出)加載,並提供給解析引擎。具體地,狀態機表項模塊例如將指令狀態機編譯器生成的指令狀態機數據表項加載到指定的內存區域,此內存區域可以為晶片的內部存儲區域或外部存儲區域。以基於圖9所示的指令狀態機進行協議解析為例,對解析引擎執行協議解析的具體流程進行詳細說明,例如將節點4的指令設置為提取當前位置到\xOD\xOA之間字符,將節點9的指令設置為丟棄當前位置到\xOD\xOA之間字符,報文為host:abc\xOD\xOAcookie:def\xOD\xOAdate:Tue,15Nov 199408:12:31GMT\x0D\x0A\x0D\x0A其中,以\xXX表示的字符表示以十六進位表示字符。解析過程如下SI :讀入報文字符「h」和指令狀態機根節點,即節點0,進行匹配,並讀取當前節點所指向的下一節點,從節點0跳到節點I ;S2 :讀入報文字符「O」,進行匹配,從節點I跳到節點2 ; S3 :讀入報文字符「S」,進行匹配,從節點2跳到節點3 ;S4 :讀入報文字符「t」,進行匹配,「host」匹配成功,跳到節點4 ;S5 :將指令節點4送入指令執行引擎進行解析、執行,報文「 abc\X0D\X0A」部分被提取;S6 :從節點4跳到節點8,沒有遇到結束符,跳到節點0 ;S7 :讀入報文字符「C」,進行匹配,沒有匹配成功,跳到節點9 ;S8 :將指令節點9送入指令執行引擎進行解析、執行,報文「 def\X0D\X0A」部分被丟棄;S9 :從節點9跳到節點8,沒有遇到結束符,跳到節點0 ;SlO :引擎讀入報文字符「d」,進行匹配,跳到節點5 ;Sll :引擎讀入報文字符「a」,進行匹配,跳到節點6 ;S12 :引擎讀入報文字符「t」,進行匹配,跳到節點7 ;S13 :引擎讀入報文字符「e」,進行匹配,「date」匹配成功,跳到節點4 ;S14:引擎將指令節點4送入指令執行引擎進行解析、執行,報文「Tue,15 Nov1994 08:12:31 GMT\x0D\x0A」 部分被提取;S15 :從節點4跳到節點8,遇到結束符\x0D\x0A,跳到當前節點所指向的下一節點,即節點10,完成解析。進一步地,在上述實施例的協議解析方法中,根據所述指令類型對所述待解析報文的當前字符進行操作處理之後還包括對按照預定格式上報操作處理的結果。具體地,協議解析設備還包括一個結果上報模塊(圖2B中示出)。指令執行引擎將操作處理的結果返回給結果上報模塊,以由結果上報模塊將操作處理的結果按照預定格式上報。此外,若需按照預定順序上報操作處理的結果時,指令執行引擎還可將操作處理的結果返回給解析引擎,由解析引擎接收指令執行引擎返回的操作結果,對操作處理的結果按照預定順序進行排序,並將排序後的操作處理的結果發送至結果上報模塊,由結果上報模塊上報。結果上報模塊用於指定結果的上報格式,並按上報格式將解析結果上報。作為一種應用,可將上報格式定義為協議單元標識碼+協議單元內容,此外也可根據需要定義為任意上報格式。進一步地,在上述實施例的協議解析方法中,如果所述待解析的數據包與上一個關聯數據包為跨包報文相關的數據包,所述方法還包括從第二存儲區中獲取上一個關聯數據包結束時所在的指令狀態機的數據表項地址、跨包報文長度信息以及對上一個關聯數據包進行協議解析的操作處理的結果;
相應地,獲取指令狀態機的當前節點的數據表項包括若所述待解析的數據包的當前字符是所述待解析的數據包的第一個字符,則根據所述數據表項地址對應的數據表項,確定所述指令狀態機的當前節點的數據表項;若所述待解析的數據包的當前字符不是所述待解析的數據包的第一個字符,則根據指令狀態機的上一個節點的數據表項中的跳轉節點地址對應的數據表項,確定所述指令狀態機的當前節點的數據表項相應地,若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點,對所述待解析的數據包的當前字符與匹配字符進行匹配處理包括若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點和所述跨包報文長度信息,對所述待解析的數據包的當前字符與匹配字符進行匹配處理;具體地,例如需對跨包報文中的某一個域中的字符進行匹配,該域的一部分包括在上一個關聯數據包中,另一部分包括在當前待解析的數據包,則根據跨包報文長度信息中該域的總字符數和已解析字符數確定,在已對上一關聯數據包進行部分字符進行匹配處理後,仍需對當前待解析的數據包中的前多少個字符進行匹配處理;相應地,若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動指令執行引擎對所述指令節點進行解析以獲取所述指令節點對應的指令類型,並根據所述指令類型對所述待解析的數據包進行操作處理包括若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動指令執行引擎對所述指令節點進行解析以獲取所述指令節點對應的指令類型,根據所述指令類型和所述對上一個關聯數據包進行協議解析的操作處理的結果,對所述待解析的數據包進行操作處理。具體地,例如對於一個判斷指令,需判斷該跨包報文是否為CHUNKED報文,並且不同的判斷結果對應不同的後續解析流程;其中,該跨包報文的頭部包括在上一個關聯數據包中,對於該報文是否為CHUNKED報文的解析已在上一個關聯數據包的解析過程中完成,則此時需根據存儲的解析結果完成此判斷,從而確定後續解析流程為數據表項中的哪一個分支。進一步地,在上述實施例的協議解析方法中,如果所述待解析的數據包為跨包報文相關的數據包,解析引擎將指令執行引擎對數據包進行相應操作獲得的操作結果作為解析的中間結果,解析引擎設置相應的寄存器或其它存儲結構(即上述第二存儲區),將結果存入其中,供該跨包報文的後續數據包解析使用。此外,解析引擎還存儲所述數據包結束時所在的指令狀態機的數據表項地址和跨包報文長度信息,其中該跨包報文長度信息例如包括跨包報文的總長度和已完成解析的長度。根據上述實施例的協議解析方法能夠支持跨包解析。本領域普通技術人員可以理解實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬體來完成。前述的程序可以存儲於一計算機可讀取存儲介質中。該程序在執行時,執行包括上述各方法實施例的步驟;而前述的存儲介質包括R0M、RAM、磁碟或者光碟等各種可以存儲程序代碼的介質。最後應說明的是以上實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的精神和範圍。權利要求
1.一種協議解析方法,其特徵在於,包括 獲取待解析的數據包,以及指令狀態機的當前節點的數據表項,其中,所述指令狀態機包括匹配節點和指令節點; 若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點,對所述待解析的數據包的當前字符與匹配字符進行匹配處理; 若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動指令執行引擎對所述指令節點進行解析以獲取所述指令節點對應的指令類型,並根據所述指令類型對所述待解析的數據包進行操作處理。
2.根據權利要求I所述的協議解析方法,其特徵在於,還包括 讀入並解析協議描述文件,所述協議描述文件包括流程結構、匹配特徵和操作特徵;根據所述流程結構,將所述匹配特徵編譯為所述匹配節點,將所述操作特徵編譯為所述指令節點,形成指令狀態機並轉換為所述指令狀態機的數據表項; 將所述指令狀態機的數據表項載入到第一存儲區。
3.根據權利要求I或2所述的協議解析方法,其特徵在於,所述指令節點所對應的指令類型包括提取指令、計算指令、轉換指令和判斷指令中的一個或多個; 相應地,根據所述指令類型對所述待解析的數據包進行操作處理包括 根據所述提取指令,從所述待解析的數據包中提取自當前字符開始的一個或多個字符;和/或 根據所述計算指令,按照預設規則對所述待解析的數據包進行計算操作;和/或 根據所述轉換指令,對所述待解析的數據包進行格式轉換操作;和/或 根據所述判斷指令,對所述待解析的數據包進行判斷操作並生成判斷結果。
4.根據權利要求2所述的協議解析方法,其特徵在於,所述流程結構包括並列結構、順頁序結構和判斷結構。
5.根據權利要求I或2所述的協議解析方法,其特徵在於,所述指令狀態機的匹配節點的數據表項包括所述匹配節點的節點地址、節點標誌、節點屬性、匹配字符、匹配成功時跳轉節點地址以及匹配失敗時跳轉節點地址。
6.根據權利要求I或2所述的協議解析方法,其特徵在於,所述指令狀態機的指令節點的數據表項包括所述指令節點的節點地址、節點標誌、指令類型、指令操作參數以及跳轉節點地址。
7.根據權利要求I或2所述的協議解析方法,其特徵在於,根據所述指令類型對所述待解析的數據包進行操作處理之後還包括按照預定格式上報操作處理結果。
8.根據權利要求I或2所述的協議解析方法,其特徵在於,如果所述待解析的數據包與上一個關聯數據包為跨包報文相關的數據包,所述方法還包括從第二存儲區中獲取上一個關聯數據包結束時所在的指令狀態機的數據表項地址、跨包報文長度信息以及對上一個關聯數據包進行協議解析的操作處理的結果; 相應地,獲取指令狀態機的當前節點的數據表項包括 若所述待解析的數據包的當前字符是所述待解析的數據包的第一個字符,則根據所述數據表項地址對應的數據表項,確定所述指令狀態機的當前節點的數據表項; 若所述待解析的數據包的當前字符不是所述待解析的數據包的第一個字符,則根據指令狀態機的上一個節點的數據表項中的跳轉節點地址對應的數據表項,確定所述指令狀態機的當前節點的數據表項; 相應地,若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點,根據所述匹配節點,對所述待解析的數據包的當前字符與匹配字符進行匹配處理包括 若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點和所述跨包報文長度信息,對所述待解析的數據包的當前字符與匹配字符進行匹配處理; 相應地,若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動指令執行引擎對所述指令節點進行解析以獲取所述指令節點對應的指令類型,並根據所述指令類型對所述待解析的數據包進行操作處理包括 若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動指令執行引擎對所述指令節點進行解析以獲取所述指令節點對應的指令類型,根據所述指令類型和所述對上一個關聯數據包進行協議解析的操作處理的結果,對所述待解析的數據包進行操作處理。
9.根據權利要求8所述的協議解析方法,其特徵在於,如果所述待解析的數據包為跨包報文相關的數據包,還包括 將所述操作處理的結果存儲於所述第二存儲區,並存儲所述數據包結束時所在的指令狀態機的數據表項地址和跨包報文長度信息於所述第二存儲區。
10.一種協議解析設備,其特徵在於,包括解析引擎和指令執行引擎,其中 所述解析引擎用於獲取待解析的數據包,及指令狀態機的當前節點的數據表項,其中,所述指令狀態機包括匹配節點和指令節點;若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點,對所述待解析的數據包的當前字符與匹配字符進行匹配處理;若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動所述指令執行引擎執行處理; 所述指令執行引擎用於響應所述解析引擎的驅動,對所述指令節點進行解析以獲取所述指令節點對應的指令類型,並根據所述指令類型對所述待解析的數據包進行操作處理。
11.根據權利要求10所述的協議解析設備,其特徵在於,所述指令節點所對應的指令類型包括提取指令、計算指令、轉換指令和判斷指令中的一個或多個; 相應地,所述指令執行引擎具體用於根據所述提取指令,從所述待解析的數據包中提取自當前字符開始的一個或多個字符;和/或根據所述計算指令,按照預設規則對所述待解析的數據包進行計算操作;和/或根據所述轉換指令,對所述待解析的數據包進行格式轉換操作;和/或根據所述判斷指令,對所述待解析的數據包進行判斷操作並生成判斷結果。
12.根據權利要求10或11所述的協議解析設備,其特徵在於,還包括 結果上報模塊,用於對從所述解析引擎或所述指令執行引擎接收的操作處理的結果按照預定格式上報; 相應地,所述指令執行引擎還用於將所述操作處理的結果發送至所述結果上報模塊或所述解析引擎,並由所述解析引擎將所述操作處理的結果發送至所述結果上報模塊。
13.根據權利要求10或11所述的協議解析設備,其特徵在於,如果所述待解析的數據包與上一個關聯數據包為跨包報文相關的數據包,所述解析引擎具體用於獲取上一個關聯數據包結束時所在的指令狀態機的數據表項地址、跨包報文長度信息以及對上一個關聯數據包進行協議解析的操作處理的結果;若所述待解析的數據包的當前字符是所述待解析的數據包的第一個字符,則根據所述數據表項地址對應的數據表項,確定所述指令狀態機的當前節點的數據表項;若所述待解析的數據包的當前字符不是所述待解析的數據包的第一個字符,則根據指令狀態機的上一個節點的數據表項中的跳轉節點地址對應的數據表項,確定所述指令狀態機的當前節點的數據表項;若所述數據表項所表示的指令狀態機的當前節點為匹配節點,根據所述匹配節點和所述跨包報文長度信息,對所述待解析的數據包的當前字符與匹配字符進行匹配處理;若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動所述指令執行引擎執行處理; 相應地,所述指令執行引擎具體用於響應所述解析引擎的驅動,根據所述指令類型和所述對上一個關聯數據包進行協議解析的操作處理的結果,對所述待解析的數據包進行操作處理。
14.根據權利要求13所述的協議解析設備,其特徵在於,如果所述待解析的數據包為跨包報文相關的數據包,則所述解析引擎還用於對所述操作處理的結果進行存儲,並存儲所述數據包結束時所在的指令狀態機的數據表項地址和跨包報文長度信息。
15.根據權利要求10或11所述的協議解析設備,其特徵在於,還包括 狀態機表項管理模塊,用於所述指令狀態機數據表項載入存儲區,和/或用於對存儲的所述指令狀態機數據表項進行更新。
16.根據權利要求15所述的協議解析設備,其特徵在於,還包括 存儲區,所述存儲區包括主存儲區和備存儲區; 相應地,所述狀態機表項管理模塊還用於對所述存儲區存儲的所述指令狀態機數據表項進行更新,具體用於將更新的指令狀態機數據表項載入到所述備存儲區,並將所述備存儲區與所述主存儲區切換,以由所述備存儲區將所述更新的指令狀態機數據表項加載至所述解析引擎。
17.一種協議解析系統,其特徵在於,包括指令狀態機編譯器和權利要求10-16任一所述的協議解析設備,其中 所述指令狀態機編譯器用於向所述協議解析設備提供指令狀態機的數據表項。
18.根據權利要求17所述的協議解析系統,其特徵在於,所述指令狀態機編譯器具體用於讀入並解析協議描述文件,所述協議描述文件包括流程結構、匹配特徵和操作特徵;根據所述流程結構,將所述匹配特徵編譯為所述匹配節點,將所述操作特徵編譯為所述指令節點,形成指令狀態機並轉換為所述指令狀態機的數據表項;將所述指令狀態機的數據表項載入到存儲區。
全文摘要
本發明提供一種協議解析方法、設備及系統。該方法包括獲取待解析的數據包,以及指令狀態機的當前節點的數據表項,其中,所述指令狀態機包括匹配節點和指令節點;若所述數據表項所表示的指令狀態機的當前節點為匹配節點,則根據所述匹配節點,對所述待解析的數據包的當前字符與匹配字符進行匹配處理;若所述數據表項所表示的指令狀態機的當前節點為指令節點,則驅動指令執行引擎對所述指令節點進行解析以獲取所述指令節點對應的指令類型,並根據所述指令類型對所述待解析的數據包進行操作處理。該方法、設備及系統能夠實現硬體結構與解析流程解耦。
文檔編號H04L29/06GK102647414SQ20121009034
公開日2012年8月22日 申請日期2012年3月30日 優先權日2012年3月30日
發明者曾佳, 田聃, 耿玉磊, 迪帕克, 郭智 申請人:華為技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀