專利名稱:協議解析的方法和裝置的制作方法
技術領域:
本發明涉及通信領域,并且具體地,涉及解析協議的方法和裝置。
背景技術:
協議解析是指對網絡數據包的內容進行詳細分析的過程。協議解析從網絡通信協議特有的規則性出發,對數據包的數據、結構進行解碼分析,獲得深層次的數據,為分析數據包提供精確、詳細的信息。隨著網絡業務的爆炸性發展及寬帶業務迅猛增長,運營商在業務的動態感知、策略控制、業務質量(Quality of Service,QoS)保障以及網絡與業務的安全保障等領域面臨巨大挑戰,因此促使了深度包檢測(Deep Packet Inspection, DPI)、入侵檢測(Intrusiondetection system, IDS)、網絡安全等網絡應用的快速發展,而在這些業務中協議解析是關·鍵技術之一。例如,在DPI中,通過協議解析,可更精確、快速的識別所承載的協議及所關心的特定報文內容;在IDS中,利用協議解析可有效識別利用協議的攻擊行為。現有的協議解析方法通常包括兩個過程,首先對協議字符流中的關鍵字進行匹配,然后對匹配成功的關鍵字進行解析操作。隨著網絡速度的提高、協議類型的增加以及協議的快速更新,對協議解析的速度與靈活性的要求越來越高,而上述協議解析方法中,針對不同的協議解析需求,需要開發不同的硬件電路實現解析功能,因此靈活性差。此外,上述協議解析方法的兩個過程只能串行進行,導致解析速度難以提高。
發明內容
本發明實施例提供協議解析的方法和裝置,能夠實現協議解析過程的靈活配置,并提聞協議解析的速度。第一方面,提供了一種協議解析的方法,包括根據協議的解析需求,將該協議的分割方式編譯為結構分割狀態機,將該協議的識別方式編譯為結構識別狀態機,并將該協議的解析方式編譯為結構解析狀態機;加載該結構分割狀態機、該結構識別狀態機和該結構解析狀態機;根據該結構分割狀態機、該結構識別狀態機和該結構解析狀態機,對采用該協議的報文進行解析處理。結合第一方面,在第一種可能的實現方式中,該根據協議的解析需求,將該協議的劃分方式編譯為結構分割狀態機,將該協議的識別方式編譯為結構識別狀態機,并將該協議的解析方式編譯為結構解析狀態機,包括根據該協議的解析需求,將該協議分割為多個協議單元的分割方式編譯為該結構分割狀態機,并將該多個協議單元的類型識別方式編譯為該結構識別狀態機,并將每個協議單元的解析方式編譯為該結構解析狀態機。結合第一方面的第一種可能的實現方式,在第二種可能的實現方式中,該協議分割為多個協議單元的分割方式包括根據該協議的格式,確定該多個協議單元的順序以及該多個協議單元之間的分隔符;根據該多個協議單元的順序以及該多個協議單元之間的分隔符,將該協議分割為該多個協議單兀。
結合第一方面的第一種可能的實現方式或第一方面的第二種可能的實現方式,在第三種可能的實現方式中,該根據該結構分割狀態機、該結構識別狀態機和該結構解析狀態機,對采用該協議的報文進行解析處理,包括根據該結構分割狀態機、該結構識別狀態機和該結構解析狀態機,并行地進行對該報文中的多個功能單元的分割、類型識別以及解析,其中該功能單元與該協議單元--對應。結合第一方面的第三種可能的實現方式,在第一方面的第四種可能的實現方式中,該根據該結構分割狀態機、該結構識別狀態機和該結構解析狀態機,并行地進行對該報文中的多個功能單元的分割、類型識別以及解析,包括根據該結構狀態機的入口地址讀取該結構分割狀態機的節點的指令信息,并根據該結構分割狀態機的節點的指令信息,進行對該報文中的多個功能單元的分割,以及根據該結構識別狀態機的入口地址讀取該結構識別狀態機的節點的指令信息,并根據該結構識別狀態機的節點的指令信息,確定該功能單元的類型,以及根據該結構解析狀態機的入口地址讀取該結構解析狀態機的節點的指令信息,并根據該結構解析狀態機的節點的指令信息,對確定類型后的該功能單元執行解析操作。
結合第一方面或第一方面的第一種可能的實現方式或第一方面的第二種可能的實現方式或第一方面的第三種可能的實現方式或第一方面的第四種可能的實現方式,在第五種可能的實現方式中,還包括根據新增的解析規則,對該結構解析狀態機進行更新。結合第一方面的第五種可能的實現方式,在第六種可能的實現方式中,該根據新增的解析需求,對該結構解析狀態機進行更新,包括根據該新增的解析規則,將與該新增的解析規則指示的協議單元的解析方式編譯為新增結構解析狀態機;確定該新增結構解析狀態機的入口地址,并根據該新增結構解析狀態機的入口地址存儲該新增結構解析狀態機;在入口備份數據中記錄該新增結構解析狀態機的入口地址;將入口主數據中的該結構解析狀態機的入口地址加載到該入口備份數據中;將該入口備份數據切換為新的入口主數據。第二方面,提供了一種用于協議解析的裝置,包括解析編譯器、表項管理模塊、并行解析模塊和解析控制模塊,其中,該解析編譯器,用于根據協議的解析需求,將該協議的分割方式編譯為結構分割狀態機,將該協議的識別方式編譯為結構識別狀態機,并將該協議的解析方式編譯為結構解析狀態機;該表項管理模塊,用于將該結構分割狀態機、該結構識別狀態機和該結構解析狀態機加載到該并行解析模塊;該解析控制模塊,用于控制該并行解析模塊根據該結構分割狀態機、該結構識別狀態機和該結構解析狀態機,對采用該協議的報文進行解析處理。結合第二方面,在第一種可能的實現方式中,該解析編譯器具體用于根據該協議的解析需求,將該協議分割為多個協議單元的分割方式編譯為該結構分割狀態機,并將該多個協議單元的類型識別方式編譯為該結構識別狀態機,并將每個協議單元的解析方式編譯為該結構解析狀態機。結合第二方面或第二方面的第一種可能的實現方式,在第二種可能的實現方式中,該解析控制模塊具體用于控制該并行解析模塊根據該結構分割狀態機、該結構識別狀態機和該結構解析狀態機,并行地進行對該報文中的多個功能單元的分割、類型識別以及解析,其中該功能單元與該協議單元--對應。
結合第二方面的第二種可能的實現方式,在第三種可能的實現方式中,該并行解析模塊包括結構分割子模塊、結構識別子模塊以及結構解析子模塊;該表項管理模塊具體用于將該結構分割狀態機加載到該結構分割子模塊,并將該結構識別狀態機加載到該結構識別子模塊,并將該結構解析狀態機加載到該結構解析子模塊;該解析控制模塊具體用于控制該結構分割子模塊、該結構識別子模塊以及該結構解析子模塊并行地進行對該報文中的多個功能單元的分割、類型識別以及解析。
結合第二方面的第三種可能的實現方式,在第四種可能的實現方式中,還包括至少一個解析引擎,該結構分割子模塊具體用于根據該結構狀態機的入口地址讀取該結構分割狀態機的節點的指令信息,并向該解析控制模塊發送該結構分割狀態機的節點的指令信息;該解析控制模塊具體用于向該至少一個解析引擎發送該結構分割狀態機的節點的指令信息;該至少一個解析引擎用于根據該結構分割狀態機的節點的指令信息,進行對該報文中的多個功能單元的分割;該結構識別子模塊具體用于根據該結構識別狀態機的入口地址讀取該結構識別狀態機的節點的指令信息,并向該解析控制模塊發送該結構識別狀態機的節點的指令信息;該解析控制模塊具體用于向該至少一個解析引擎發送該結構識別狀態機的節點的指令信息;該至少一個解析引擎用于根據該結構識別狀態機的節點的指令信息,確定每個功能單元的類型;該結構解析子模塊具體用于根據該結構解析狀態機的入口地址讀取該結構解析狀態機的節點的指令信息,并向該解析控制模塊發送該結構解析狀態機的節點的指令信息;該解析控制模塊具體用于向該至少一個解析引擎發送該結構解析狀態機的節點的指令信息;該至少一個解析引擎用于根據該結構解析狀態機的節點的指令信息,對確定類型后的該功能單元執行解析操作。結合第二方面或第二方面的第一種可能的實現方式或第二方面的第二種可能的實現方式或第二方面的第三種可能的實現方式或第二方面的第四種可能的實現方式,在第五種可能的實現方式中,該表項管理模塊還用于根據新增的解析規則,對該結構解析狀態機進行更新。結合第二方面的第五種可能的實現方式,在第六種可能的實現方式中,該表項管理模塊具體用于根據該新增的解析規則,將與該新增的解析規則指示的協議單元的解析方式編譯為新增結構解析狀態機;確定該新增結構解析狀態機的入口地址,并根據該新增結構解析狀態機的入口地址存儲該新增結構解析狀態機;在入口備份數據中記錄該新增結構解析狀態機的入口地址;將入口主數據中的該結構解析狀態機的入口地址加載到該入口備份數據中;將該入口備份數據切換為新的入口主數據。本發明實施例中,通過根據協議的解析需求,將協議的分割方式編譯為結構分割狀態機,將協議的識別方式編譯為結構識別狀態機,并將協議的解析方式編譯為結構解析狀態機,并根據結構分割狀態機、結構識別狀態機和結構解析狀態機對采用該協議的報文進行解析處理,使得通過狀態機驅動硬件就能夠執行協議解析過程,從而能夠將硬件架構與具體的協議解耦,能夠實現協議解析過程的靈活配置。而且,通過狀態機實現協議解析過程,使得各個狀態機驅動的處理過程能夠并行執行,從而能夠提高協議解析的速度。
為了更清楚地說明本發明實施例的技術方案,下面將對本發明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖I是根據本發明實施例的協議解析的方法的示意性流程圖。圖2是根據本發明實施例的編譯結構分割狀態機的一個例子的示意圖。圖3是根據本發明實施例的編譯結構識別狀態機的一個例子的示意圖。圖4是根據本發明實施例的編譯結構解析狀態機的一個例子的示意圖。圖5是根據本發明一個實施例的報文的協議解析過程的示意性流程圖。圖6是根據本發明實施例的更新結構解析狀態機的過程的示意性流程圖。 圖7是根據本發明實施例的更新結構解析狀態機的一個例子的示意圖。圖8是根據本發明實施例的用于協議解析的裝置的示意框圖。圖9是根據本發明另一實施例的用于協議解析的裝置的示意框圖。圖10是根據本發明實施例的裝置執行協議解析的過程的示意圖。圖11是根據本發明實施例的用于協議解析的裝置的一個例子的示意框圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明的一部分實施例,而不是全部實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都應屬于本發明保護的范圍。圖I是根據本發明實施例的協議解析的方法的示意性流程圖。圖I的方法由用于協議解析的裝置執行。110,根據協議的解析需求,將協議的分割方式編譯為結構分割狀態機,將協議的識別方式編譯為結構識別狀態機,并將協議的解析方式編譯為結構解析狀態機。本發明實施例中,協議可以包括基于文本的協議或基于二進制的協議等,例如該協議可以是超文本傳輸協議(HyperText Transfer Protocol, HTTP)。120,加載結構分割狀態機、結構識別狀態機和結構解析狀態機。130,根據結構分割狀態機、結構識別狀態機和結構解析狀態機,對采用該協議的報文進行解析處理。協議解析的過程可以包括分割過程、識別過程和解析過程,因此協議解析的方式可以包括分割方式、識別方式和解析方式。用于協議解析的裝置可以根據協議的解析需求,將協議的分割方式、識別方式和解析方式編譯分別為結構分割狀態機、結構識別狀態機和結構解析狀態機,將結構分割狀態機、結構識別狀態機和結構解析狀態機加載到硬件,也就是將結構分割狀態機表項、結構識別狀態機表項和結構解析狀態機表項加載到硬件,從而可以通過各個狀態機驅動硬件執行對報文的協議解析的過程。這樣,對于不同的協議,通過改變狀態機的結構就能夠完成協議解析過程,無需改動硬件架構,從而將硬件架構與具體的協議解耦,能夠實現協議解析過程的靈活配置。另外,通過狀態機驅動硬件執行協議解析過程,使得各個狀態機驅動的處理過程能夠并行執行,從而能夠提高協議解析的速度。
本發明實施例中,通過根據協議的解析需求,將協議的分割方式編譯為結構分割狀態機,將協議的識別方式編譯為結構識別狀態機,并將協議的解析方式編譯為結構解析狀態機,并根據結構分割狀態機、結構識別狀態機和結構解析狀態機對采用該協議的報文進行解析處理,使得通過狀態機驅動硬件就能夠執行協議解析過程,從而能夠將硬件架構與具體的協議解耦,能夠實現協議解析過程的靈活配置。而且,通過狀態機實現協議解析過程,使得各個狀態機驅動的處理過程能夠并行執行,從而能夠提高協議解析的速度。可選地,作為一個實施例,在步驟110中,可根據協議的解析需求,將協議分割為多個協議單元的分割方式編譯為結構分割狀態機,并將多個協議單元的類型識別方式編譯為結構識別狀態機,并將每個協議單元的解析方式編譯為結構解析狀態機。將協議分割為多個協議單元后,并不知道各個協議單元的域類型,因此需要對各個協議單元的類型進行識別,對各個協議單元的類型識別后,可以對各個協議單元進行具體的解析。因此,可以將協議單元的分割方式、類型識別方式和解析方式分別編譯為結構分割狀態機、結構識別狀態機和結構解析狀態機。
協議單元的類型識別方式可以是確定協議單元中的關鍵字;根據協議單元中的關鍵字,確定協議單元的類型。此外,協議單元的類型識別方式還可以是現有技術中的其它方式,本發明實施例對此不作限定。可選地,作為另一實施例,在步驟110中,協議分割為多個協議單元的分割方式可以是根據協議的格式,確定多個協議單元的順序以及多個協議單元之間的分隔符;根據多個協議單元的順序以及多個協議單元之間的分隔符,將協議分割為多個協議單元。可選地,作為另一實施例,在步驟130中,可以根據結構分割狀態機、結構識別狀態機和結構解析狀態機,并行地進行對報文中的多個功能單元的分割、類型識別以及解析,其中功能單元與協議單元一一對應。可選地,作為另一實施例,在步驟130中,可以根據結構狀態機的入口地址讀取結構分割狀態機的節點的指令信息,并根據結構分割狀態機的節點的指令信息,進行對報文中的多個功能單元的分割;可以根據結構識別狀態機的入口地址讀取結構識別狀態機的節點的指令信息,并根據結構識別狀態機的節點的指令信息,確定功能單元的類型;根據結構解析狀態機的入口地址讀取結構解析狀態機的節點的指令信息,并根據結構解析狀態機的節點的指令信息,對確定類型后的功能單元執行解析操作。結構分割狀態機的每個節點可以存儲指令信息,指令信息可以包括操作碼和相應的操作參數,讀取指令信息后,可以對指令信息進行解碼,根據指令信息包括的操作碼和相應的操作參數執行相應的操作。結構識別狀態機的每個節點可以存儲指令信息,指令信息可以包括操作碼和相應的操作參數,讀取指令信息后,可以對指令信息進行解碼,根據指令信息包括的操作碼和相應的操作參數對功能單元執行相應的操作,例如匹配操作。結構解析狀態機的每個節點可以存儲指令信息,指令信息可以包括操作碼和相應的操作參數,讀取指令信息后,可以對指令信息進行解碼,根據指令信息包括的操作碼和相應的操作參數對確定類型后的功能單元執行相應的操作,例如內容提取操作、計算操作、判斷操作、轉換操作或寄存器設置操作等。在本發明實施例中,對報文中的多個功能單元的分割、類型識別和解析可以并行地進行,例如,當結構分割狀態機分割出一個功能單元后,結構識別狀態機即可對該功能單元進行類型識別,當結構識別狀態機確定該功能單元的類型后,結構解析狀態機即可對該功能單元進行解析操作。而與此同時,結構分割狀態機可以分割出下一個功能單元,結構識別狀態機可以對下一個功能單元進行類型識別,依次類推。因此,對功能單元進行分割、類型識別和解析可以是并行地執行,從而能夠提高解析速度。可選地,作為另一實施例,可以根據新增的解析規則,對結構解析狀態機進行更新。可選地,作為另一實施例,可以根據新增的解析規則,將與新增的解析規則指示的協議單元的解析方式編譯為新增結構解析狀態機;確定新增結構解析狀態機的入口地址,并根據新增結構解析狀態機的入口地址存儲新增結構解析狀態機;在入口備份數據中記錄新增結構解析狀態機的入口地址;將入口主數據中的結構解析狀態機的入口地址加載到入口備份數據中;將入口備份數據切換為新的入口主數據。下面將結合具體的例子詳細描述本發明實施例。應注意,這些例子只是為了幫助·本領域技術人員更好地理解本發明實施例,而非限制本發明實施例的范圍。圖2是根據本發明實施例的編譯結構分割狀態機的一個例子的示意圖。用于協議解析的裝置可以將協議分割為多個協議單元的分割方式編譯為結構分割狀態機。協議分割為多個協議單元的分割方式可以包括根據協議的格式,確定多個協議單元的順序以及多個協議單元之間的分隔符;根據多個協議單元的順序以及多個協議單元之間的分隔符,將協議分割為多個協議單兀。在圖2中,以該協議為HTTP為例進行說明。如圖2所示,用于協議解析的裝置可以根據HTTP中各個協議單元的順序以及各個協議單元之間的分隔符,將HTTP分割為多個協議單元方法名(Method)、通用資源標識符(Uniform Resource Identifier, URI )、HTTP 版本號(Version)、頭域和實體(body)。用于協議解析的裝置可以將HTTP的分割方式編譯為結構分割狀態機。在編譯結構分割狀態機后,用于協議解析的裝置可以將結構分割狀態機的入口地址(也就是起始地址)存儲在入口表中。這樣,在后續的過程中,可以根據入口表中存儲的結構分割狀態機的入口地址,獲取結構分割狀態機。圖3是根據本發明實施例的編譯結構識別狀態機的一個例子的示意圖。用于協議解析的裝置可以將多個協議單元的類型識別方式編譯為結構識別狀態機。多個協議單元的類型識別方式可以包括確定每個協議單元中的關鍵字;根據每個協議單元中的關鍵字,確定每個協議單元的類型。結構識別狀態機的編譯過程的可以如下步驟I :所有協議單元是否編譯完成,如完成,則編譯過程結束;如未完成,則轉到步驟2。步驟2 :本協議單元是否需要識別,如需要識別該協議單元的類型,則轉到步驟3。此外,如果不需要識別該協議單元的類型,則跳過該協議單元,判斷下一協議單元是否需要識別。步驟3 :將該協議單元中需要識別的字符串編譯為結構識別狀態機,結構識別狀態機中每個節點表示一個字符的匹配。
步驟4 :生成上報ID (Identity, ID)節點,更新入口表;如果需要繼續識別協議單元的類型,則轉到步驟I。上報ID節點可以輸出協議單元的ID。入口表可以用于存儲結構識別狀態機的入口地址,并可以存儲各個協議單元的ID。協議單元的ID與該協議單元對應的結構識別狀態機的入口地址是相對應的.在圖3中,以該協議為HTTP為例進行說明。假設HTTP中需要識別的頭域為“host”和“date”,則頭域“host”和“date”分別對應的結構識別狀態機可以如圖3所示,其中節點I至節點6為匹配節點,用于字符串的匹配,節點7和節點8的功能為字符串匹配成功后分別將頭域“host”和“date”的ID進行上報。此外,用于協議解析的裝置可以在入口表中存儲結構識別狀態機的入口地址。如 圖3所示,假設頭域host和data的ID為“4”,那么頭域對應的結構識別狀態機的入口地址可以指向節點O ;假設實體(body)的ID為“5”以及body對應的結構識別狀態機包括節點9,那么body對應的結構識別狀態機的入口地址可以指向節點9。圖4是根據本發明實施例的編譯結構解析狀態機的一個例子的示意圖。用于協議解析的裝置可以將每個協議單元的解析方式編譯為結構解析狀態機。在圖4中,以該協議為HTTP為例進行說明。如圖4所示,假設對HTTP中的頭域“Transfer-enconding”的解析方式為確定頭域“Transfer-enconding”中是否存在字符串“chunked”,如果存在該字符串,則設置相應的寄存器的值。那么頭域“Transfer-enconding”對應的結構解析狀態機可以如圖4所示,其中節點O至節點6執行“chunked”的匹配過程,在匹配成功后,節點7執行寄存器的設置過程。再例如,如圖4所示,頭域“host”對應的結構解析狀態機可以包括節點8至節點9,具體的解析方式可以根據實際的解析需求進行定義。入口表可以存儲各個協議單元的ID以及結構解析狀態機的入口地址,協議單元的ID與該協議單元對應的結構解析狀態機的入口地址是相對應的。例如,如圖4所示,假設頭域 “Transfer-enconding” 的 ID 為 “ I ”,那么頭域 “Transfer-enconding” 對應的結構解析狀態機的入口地址可以指向節點O。假設頭域“host”的ID為“2”,那么頭域“host”對應的結構解析狀態機的入口地址可以指向節點8。圖5是根據本發明一個實施例的報文的協議解析過程的示意性流程圖。用于協議解析的裝置可以根據結構分割狀態機、結構識別狀態機和結構解析狀態機,對采用該協議的報文進行解析處理。在圖5中,以協議為HTTP為例進行說明,則需要對采用HTTP的報文進行解析處理。在圖5中,數字I至7可以表示對該報文解析處理的執行過程。(I)結構分割可以根據結構分割狀態機,驅動硬件對采用該協議的報文進行分割,將該報文分割為多個功能單元,功能單元與協議單元是一一對應的。結構分割的過程可以如下a :判斷報文的結構分割過程是否結束。如果是,則結束該過程。如果否,則轉到b。
b :讀取結構分割狀態機的節點的指令信息,根據指令信息對報文進行分割處理;c :將分割的結果存儲在報文單元緩存中,也就是將分割得到的各個功能單元存儲在報文單元緩存中,并保存相應的功能單元的ID。轉到a。如圖5所示,該報文可以被分割為多個功能單元GET、URI、Http/1. I、host和Content-type等。這些功能單元以及相應的ID可以被存儲在報文單元緩存中。(2)結構識別可以根據結構識別狀態機,驅動硬件對該報文的功能單元進行識別,確定功能單元的類型。結構識別的過程可以如下
e :判斷報文單元緩存是否處理完成。如果是,則結束該過程。如果否,則轉到f。f :讀取報文單元緩存中的功能單元的ID,根據功能單元的ID確定結構識別狀態機的入口地址。g:根據結構識別狀態機的入口地址,讀取結構識別狀態機的節點的指令信息,根據指令信息確定功能單元的類型。例如,可以對功能單元進行關鍵字匹配,從而確定功能單元的類型。h :將確定類型后的功能單元的ID存儲在識別域緩存中。轉到e。例如,如圖5所示,可以讀取功能單元“GET”的ID,確定功能單元“GET”對應的結構識別狀態機,從而對功能單元“GET”進行識別,并將確定類型的功能單元“GET”的ID存儲在識別緩存域中。還可以根據功能單元“Host”對應的結構識別狀態機確定功能單元“Host”的類型,將確定類型的功能單元“Host”的ID存儲在識別域緩存中。(3)結構解析i :判斷識別域緩存中的數據是否處理完成。如果是,則結束該過程。如果否,則轉到j。j :讀取識別域緩存中的功能單元的ID,根據功能單元的ID確定結構解析狀態機的入口地址。k :根據結構解析狀態機的入口地址,讀取結構解析狀態機的節點的指令信息,根據指令信息對功能單元進行解析處理。I :將解析處理的結果上報。轉到i。例如,如圖5所示,可以讀取功能單元“GET”的ID,確定功能單元“GET”對應的結構解析狀態機的入口地址,從而對功能單元“GET”進行解析操作。還可以根據功能單元“Host”對應的結構解析狀態機,對功能單元“Host”進行解析操作。由此可見,由于是根據結構分割狀態機、結構識別狀態機以及結構解析狀態機對報文的各個功能單元進行分割、類型識別以及解析,因此能夠將硬件架構與具體的協議解耦,能夠實現解析過程的靈活配置。此外,由于通過狀態機執行解析處理的各個過程,因此對各個功能單元的分割、類型識別以及解析可以并行地執行的,從而能夠提高協議解析的速度。圖6是根據本發明實施例的更新結構解析狀態機的過程的示意性流程圖。由于各個協議單元的結構解析狀態機之間是獨立編譯的,根據入口表可以確定每個結構解析狀態機的入口地址,因此可以通過更新入口表的方式對結構解析狀態機進行更新。存儲空間可以包括入口表區和狀態表區。狀態表區可以用于存儲狀態表,即各個狀態機的表項。入口表區可以分為主存儲區 和備份區。主存儲區可以用于存儲各個狀態機的入口表,即入口主數據。備份區可以用于存儲入口備份數據。601,判斷是否所有新增的解析規則處理完成。如果有新增的解析規則還未處理,則轉到步驟602。如果所有新增的解析規則處理完成,則轉到步驟606。602,讀取未處理的解析規則。603,根據未處理的解析規則,將該解析規則指示的協議單元的解析方式編譯為新增結構解析狀態機,并根據地址管理表為該新增結構解析狀態機分配入口地址。可以根據入口地址將新增結構解析狀態機存放至該入口地址對應的狀態表區中。604,對地址管理表進行更新。605,將新增結構解析狀態機的入口地址存儲在備份區。606,如果所有新增的解析規則處理完成,則打包輸出更新后的入口主數據。可以將原來的主存儲區的入口主數據加載到備份區中,這樣,備份區中存儲著新增結構解析狀態機的入口地址以及原有的結構解析狀態機的入口地址,即備份區中的數據切換為更新后的入口主數據,將更新后的入口主數據輸出。也就是,將備份區切換為新的主存儲區。607,打包輸出更新后的狀態表的數據。這樣,就能夠完成結構解析狀態機的更新過程。在更新過程中,僅需要切換入口表區的新舊數據,不必對存儲空間的全部數據進行切換,能夠節省對整個存儲空間進行備份的空間,從而能夠實現無備份空間的熱升級。圖7是根據本發明實施例的更新結構解析狀態機的一個例子的示意圖。如圖7所示,原來的主存儲區存有舊入口表,舊入口表中包括入口地址I、入口地址2和入口地址3。如果出現新增的解析規則,則根據新增的解析規則編譯新增結構解析狀態機后,可以為該新增結構解析狀態機分配入口地址4,該入口地址4對應于狀態表區存儲的狀態表中的NEWADD部分,因此可以新增結構解析狀態機存儲在NEWADD部分。在備份區的新入口表中記錄入口地址4,并且將舊入口表中的入口地址I至入口地址3加載到備份區的新入口表。將備份區切換為新的主存儲區,這樣就完成了結構解析狀態機的更新過程。圖8是根據本發明實施例的用于協議解析的裝置的示意框圖。圖8的裝置800包括解析編譯器810、表項管理模塊820、并行解析模塊830和解析控制模塊840。解析編譯器810根據協議的解析需求,將協議的分割方式編譯為結構分割狀態機,將協議的識別方式編譯為結構識別狀態機,并將協議的解析方式編譯為結構解析狀態機。表項管理器820將結構分割狀態機、結構識別狀態機和結構解析狀態機加載到并行解析模塊830。解析控制模塊840控制并行解析模塊830根據結構分割狀態機、結構識別狀態機和結構解析狀態機,對采用該協議的報文進行解析處理。本發明實施例中,通過根據協議的解析需求,將協議的分割方式編譯為結構分割狀態機,將協議的識別方式編譯為結構識別狀態機,并將協議的解析方式編譯為結構解析狀態機,并根據結構分割狀態機、結構識別狀態機和結構解析狀態機對采用該協議的報文進行解析處理,使得通過狀態機驅動硬件就能夠執行協議解析過程,從而能夠將硬件架構與具體的協議解耦,能夠實現協議解析過程的靈活配置。而且,通過狀態機實現協議解析過程,使得各個狀態機驅動的處理過程能夠并行執行,從而能夠提高協議解析的速度。裝置800的其它功能和操作可參照上面圖I至圖7的方法實施例的具體過程,為了避免重復,此處不再贅述。可選地,作為一個實施例,解析編譯器810可根據協議的解析需求,將該協議分割為多個協議單元的分割方式編譯為結構分割狀態機,并將多個協議單元的類型識別方式編譯為結構識別狀態機,并將每個協議單元的解析方式編譯為結構解析狀態機。可選地,作為另一實施例,解析控制模塊840可控制并行解析模塊830根據結構分割狀態機、結構識別狀態機和結構解析狀態機,并行地進行對報文中的多個功能單元的分害I]、類型識別以及解析,其中功能單元與協議單元一一對應。·
可選地,作為另一實施例,圖9是根據本發明另一實施例的用于協議解析的裝置的示意框圖。如圖9所示,并行解析模塊830可包括結構分割子模塊850、結構識別子模塊860以及結構解析子模塊870。表項管理模塊820可將結構分割狀態機加載到結構分割子模塊850,并將結構識別狀態機加載到結構識別子模塊860,并將結構解析狀態機加載到結構解析子模塊870。解析控制模塊840可控制結構分割子模塊850、結構識別子模塊860以及結構解析子模塊870并行地進行對報文中的多個功能單元的分割、類型識別以及解析。本發明實施例中,通過控制結構分割子模塊、結構識別子模塊和結構解析子模塊并行地進行對報文中的多個功能單元的分割、類型識別以及解析,能夠提高協議解析的速度。可選地,作為另一實施例,如圖9所示,裝置800還可包括至少一個解析引擎880。結構分割子模塊850可根據結構狀態機的入口地址讀取結構分割狀態機的節點的指令信息,并向解析控制模塊840發送結構分割狀態機的節點的指令信息;解析控制模塊840可向解析引擎880發送所述結構分割狀態機的節點的指令信息;解析引擎880可根據結構分割狀態機的節點的指令信息,進行對報文中的多個功能單元的分割。結構識別子模塊860可根據結構識別狀態機的入口地址讀取結構識別狀態機的節點的指令信息,并向解析控制模塊840發送結構識別狀態機的節點的指令信息;解析控制模塊840可向解析引擎880發送結構識別狀態機的節點的指令信息;解析引擎880可根據結構識別狀態機的節點的指令信息,確定每個功能單元的類型。結構解析子模塊870可根據結構解析狀態機的入口地址讀取結構解析狀態機的節點的指令信息,并向解析控制模塊840發送結構解析狀態機的節點的指令信息;解析控制模塊840可向解析引擎880發送結構解析狀態機的節點的指令信息;解析引擎880可根據結構解析狀態機的節點的指令信息,對確定類型后的功能單元執行解析操作。應注意,為了描述的方便,圖9中只示出了一個解析引擎,但本發明實施例中,解析引擎的數目還可以更多。這樣,通過解析控制模塊對多個解析引擎進行調度,從而能夠實現多個解析引擎的并行操作。可選地,作為另一實施例,表項管理模塊820還可根據新增的解析規則,對結構解析狀態機進行更新。可選地,作為另一實施例,表項管理模塊820可根據新增的解析規則,將與新增的解析規則指示的協議單元的解析方式編譯為新增結構解析狀態機;確定新增結構解析狀態機的入口地址,并根據新增結構解析狀態機的入口地址存儲新增結構解析狀態機;在入口備份數據中記錄新增結構解析狀態機的入口地址;將入口主數據中的結構解析狀態機的入口地址加載到入口備份數據中;將入口備份數據切換為新的入口主數據。圖10是根據本發明實施例的裝置800執行協議解析的過程的示意圖。圖10中的具體的過程可參照上面圖8和圖9的實施例以及圖I至圖7的方法實施例,為了避免重復,此處不再贅述。圖11是根據本發明實施例的用于協議解析的裝置的一個例子的示意框圖。如圖11所示,裝置900可以是裝置800的一個非限制性的實施例。裝置900可以通過現場可編程門陣列(Field-Programmable Gate Array, FPGA)實現。 在裝置900中,解析編譯器810a根據協議的解析需求,將協議的分割方式編譯為結構分割狀態機,將協議的識別方式編譯為結構識別狀態機,并將協議的解析方式編譯為結構解析狀態機。并行解析模塊830a可包括結構分割子模塊850a、結構識別子模塊860a和結構解析子模塊870a。表項管理器820a將結構分割狀態機加載到結構分割子模塊850a,并將結構識別狀態機加載到結構識別子模塊860a,并將結構解析狀態機加載到結構解析子模塊870a。解析控制模塊840a可管理解析流程,調度控制結構分割子模塊850a、結構識別子模塊860a和結構解析子模塊870a對報文進行解析處理。例如,結構分割子模塊850a可根據結構分割狀態機執行對報文中的多個功能單元的分割,結構識別子模塊860a可根據結構識別狀態機執行對功能單元的類型識別,結構解析子模塊870a可根據結構解析狀態機執行對功能單元的解析。裝置900中可包括多個解析引擎,例如裝置900中的解析引擎880_1至解析引擎880-n,其中η表示解析引擎的數目,η為正整數。解析控制模塊840a可對調度解析引擎880-1至解析引擎880-n執行對報文的多個功能單元的分割、類型識別和解析各過程中的具體操作,例如匹配操作、內容提取操作、計算操作、判斷操作、轉換操作或寄存器設置等操作。本發明實施例中,通過解析編譯器根據協議的解析需求,將協議的分割方式編譯為結構分割狀態機,將協議的識別方式編譯為結構識別狀態機,并將協議的解析方式編譯為結構解析狀態機,解析控制模塊控制并行解析模塊根據結構分割狀態機、結構識別狀態機和結構解析狀態機對采用該協議的報文進行解析處理,使得通過狀態機驅動硬件就能夠執行協議解析過程,從而能夠將硬件架構與具體的協議解耦,能夠實現協議解析過程的靈活配置。而且,通過狀態機實現協議解析過程,使得各個狀態機驅動的處理過程能夠并行執行,從而能夠提高協議解析的速度。本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結合來實現。這些功能究竟以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的范圍。所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。在本申請所提供的幾個實施例中,應該理解到,所揭露的系統、裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。 另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。所述功能如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。以上所述,僅為本發明的具體實施方式
,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應以所述權利要求的保護范圍為準。
權利要求
1.一種協議解析的方法,其特征在于,包括 根據協議的解析需求,將所述協議的分割方式編譯為結構分割狀態機,將所述協議的識別方式編譯為結構識別狀態機,并將所述協議的解析方式編譯為結構解析狀態機; 加載所述結構分割狀態機、所述結構識別狀態機和所述結構解析狀態機; 根據所述結構分割狀態機、所述結構識別狀態機和所述結構解析狀態機,對采用所述協議的報文進行解析處理。
2.根據權利要求I所述的方法,其特征在于,所述根據協議的解析需求,將所述協議的劃分方式編譯為結構分割狀態機,將所述協議的識別方式編譯為結構識別狀態機,并將所述協議的解析方式編譯為結構解析狀態機,包括 根據所述協議的解析需求,將所述協議分割為多個協議單元的分割方式編譯為所述結構分割狀態機,并將所述多個協議單元的類型識別方式編譯為所述結構識別狀態機,并將每個協議單元的解析方式編譯為所述結構解析狀態機。
3.根據權利要求2所述的方法,其特征在于,所述協議分割為多個協議單元的分割方式包括 根據所述協議的格式,確定所述多個協議單元的順序以及所述多個協議單元之間的分隔符; 根據所述多個協議單元的順序以及所述多個協議單元之間的分隔符,將所述協議分割為所述多個協議單元。
4.根據權利要求2或3所述的方法,其特征在于,所述根據所述結構分割狀態機、所述結構識別狀態機和所述結構解析狀態機,對采用所述協議的報文進行解析處理,包括 根據所述結構分割狀態機、所述結構識別狀態機和所述結構解析狀態機,并行地進行對所述報文中的多個功能單元的分割、類型識別以及解析,其中所述功能單元與所述協議單元--對應。
5.根據權利要求4所述的方法,其特征在于,所述根據所述結構分割狀態機、所述結構識別狀態機和所述結構解析狀態機,并行地進行對所述報文中的多個功能單元的分割、類型識別以及解析,包括 根據所述結構狀態機的入口地址讀取所述結構分割狀態機的節點的指令信息,并根據所述結構分割狀態機的節點的指令信息,進行對所述報文中的多個功能單元的分割,以及 根據所述結構識別狀態機的入口地址讀取所述結構識別狀態機的節點的指令信息,并根據所述結構識別狀態機的節點的指令信息,確定所述功能單元的類型,以及 根據所述結構解析狀態機的入口地址讀取所述結構解析狀態機的節點的指令信息,并根據所述結構解析狀態機的節點的指令信息,對確定類型后的所述功能單元執行解析操作。
6.根據權利要求I至5中任一項所述的方法,其特征在于,還包括 根據新增的解析規則,對所述結構解析狀態機進行更新。
7.根據權利要求6所述的方法,其特征在于,所述根據新增的解析需求,對所述結構解析狀態機進行更新,包括 根據所述新增的解析規則,將與所述新增的解析規則指示的協議單元的解析方式編譯為新增結構解析狀態機;確定所述新增結構解析狀態機的入口地址,并根據所述新增結構解析狀態機的入口地址存儲所述新增結構解析狀態機; 在入口備份數據中記錄所述新增結構解析狀態機的入口地址; 將入口主數據中的所述結構解析狀態機的入口地址加載到所述入口備份數據中; 將所述入口備份數據切換為新的入口主數據。
8.一種用于協議解析的裝置,其特征在于,包括 解析編譯器、表項管理模塊、并行解析模塊和解析控制模塊,其中, 所述解析編譯器,用于根據協議的解析需求,將所述協議的分割方式編譯為結構分割狀態機,將所述協議的識別方式編譯為結構識別狀態機,并將所述協議的解析方式編譯為結構解析狀態機; 所述表項管理模塊,用于將所述結構分割狀態機、所述結構識別狀態機和所述結構解析狀態機加載到所述并行解析模塊; 所述解析控制模塊,用于控制所述并行解析模塊根據所述結構分割狀態機、所述結構識別狀態機和所述結構解析狀態機,對采用所述協議的報文進行解析處理。
9.根據權利要求8所述的裝置,其特征在于,所述解析編譯器具體用于根據所述協議的解析需求,將所述協議分割為多個協議單元的分割方式編譯為所述結構分割狀態機,并將所述多個協議單元的類型識別方式編譯為所述結構識別狀態機,并將每個協議單元的解析方式編譯為所述結構解析狀態機。
10.根據權利要求8或9所述的裝置,其特征在于,所述解析控制模塊具體用于控制所述并行解析模塊根據所述結構分割狀態機、所述結構識別狀態機和所述結構解析狀態機,并行地進行對所述報文中的多個功能單元的分割、類型識別以及解析,其中所述功能單元與所述協議單兀對應。
11.根據權利要求10所述的裝置,其特征在于,所述并行解析模塊包括結構分割子模塊、結構識別子模塊以及結構解析子模塊; 所述表項管理模塊具體用于將所述結構分割狀態機加載到所述結構分割子模塊,并將所述結構識別狀態機加載到所述結構識別子模塊,并將所述結構解析狀態機加載到所述結構解析子模塊; 所述解析控制模塊具體用于控制所述結構分割子模塊、所述結構識別子模塊以及所述結構解析子模塊并行地進行對所述報文中的多個功能單元的分割、類型識別以及解析。
12.根據權利要求11所述的裝置,其特征在于,還包括至少一個解析引擎, 所述結構分割子模塊具體用于根據所述結構狀態機的入口地址讀取所述結構分割狀態機的節點的指令信息,并向所述解析控制模塊發送所述結構分割狀態機的節點的指令信息;所述解析控制模塊具體用于向所述至少一個解析引擎發送所述結構分割狀態機的節點的指令信息;所述至少一個解析引擎用于根據所述結構分割狀態機的節點的指令信息,進行對所述報文中的多個功能單元的分割; 所述結構識別子模塊具體用于根據所述結構識別狀態機的入口地址讀取所述結構識別狀態機的節點的指令信息,并向所述解析控制模塊發送所述結構識別狀態機的節點的指令信息;所述解析控制模塊具體用于向所述至少一個解析引擎發送所述結構識別狀態機的節點的指令信息;所述至少一個解析引擎用于根據所述結構識別狀態機的節點的指令信息,確定每個功能單元的類型; 所述結構解析子模塊具體用于根據所述結構解析狀態機的入口地址讀取所述結構解析狀態機的節點的指令信息,并向所述解析控制模塊發送所述結構解析狀態機的節點的指令信息;所述解析控制模塊具體用于向所述至少一個解析引擎發送所述結構解析狀態機的節點的指令信息;所述至少一個解析引擎用于根據所述結構解析狀態機的節點的指令信息,對確定類型后的所述功能單元執行解析操作。
13.根據權利要求8至12中任一項所述的裝置,其特征在于,所述表項管理模塊還用于根據新增的解析規則,對所述結構解析狀態機進行更新。
14.根據權利要求13所述的裝置,其特征在于,所述表項管理模塊具體用于根據所述新增的解析規則,將與所述新增的解析規則指示的協議單元的解析方式編譯為新增結構解析狀態機;確定所述新增結構解析狀態機的入口地址,并根據所述新增結構解析狀態機的入口地址存儲所述新增結構解析狀態機;在入口備份數據中記錄所述新增結構解析狀態機的入口地址;將入口主數據中的所述結構解析狀態機的入口地址加載到所述入口備份數據中;將所述入口備份數據切換為新的入口主數據。
全文摘要
本發明提供了協議解析的方法和裝置。該方法包括根據協議的解析需求,將該協議的分割方式編譯為結構分割狀態機,將該協議的識別方式編譯為結構識別狀態機,并將該協議的解析方式編譯為結構解析狀態機;加載該結構分割狀態機、該結構識別狀態機和該結構解析狀態機;根據該結構分割狀態機、該結構識別狀態機和該結構解析狀態機,對采用該協議的報文進行解析處理。本發明實施例通過根據結構分割狀態機、結構識別狀態機和結構解析狀態機對報文進行解析處理,能夠將硬件架構與具體的協議解耦,能夠實現協議解析過程的靈活配置。而且通過狀態機實現協議解析過程,使得各個狀態機驅動的處理過程能夠并行執行,從而能夠提高協議解析的速度。
文檔編號H04L12/70GK102916967SQ20121042069
公開日2013年2月6日 申請日期2012年10月29日 優先權日2012年10月29日
發明者耿玉磊, 徐文廣, 吳富強 申請人:華為技術有限公司