国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      兼顧匹配策略的處理分段報文串模式匹配的方法及裝置的制作方法

      文檔序號:7647163閱讀:142來源:國知局
      專利名稱:兼顧匹配策略的處理分段報文串模式匹配的方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及兼顧匹配策略的處理分段報文串模式匹配的方法及裝置,屬于通信技術(shù)領(lǐng)域。
      背景技術(shù)
      如圖1和圖2所示的系統(tǒng)中,網(wǎng)關(guān)設(shè)備和旁路設(shè)備需要通過模式匹配(Pattern Matching,簡稱PM)方法來實現(xiàn)網(wǎng)絡(luò)安全、病毒防范(Anti-Virus,簡稱AV)、帶寬管理、應用識別、安全檢測以及廣域網(wǎng)加速等上層應用,可以說,模式匹配方法是面向網(wǎng)絡(luò)設(shè)備構(gòu)建高性能的內(nèi)容檢測引擎的基礎(chǔ),只有通過模式匹配完成對網(wǎng)絡(luò)傳輸內(nèi)容的管理和檢測,才能為網(wǎng)絡(luò)安全、AV、帶寬管理、應用識別、安全檢測以及廣域網(wǎng)加速等上層應用的實施提供技術(shù)支撐,因此,實現(xiàn)模式匹配是構(gòu)建可管理、可運營的安全智能網(wǎng)絡(luò)的技術(shù)基石。
      同時,實現(xiàn)模式匹配的精確程度也直接關(guān)系到網(wǎng)絡(luò)構(gòu)建的質(zhì)量。目前,模式匹配的方法是指串模式匹配(Patten Match,簡稱PM)方法,所謂串模式(Patten),是指ASCII碼環(huán)境下,在傳輸流(Flow)的內(nèi)容(也稱為傳輸文本,Text)中需要查找的字符串的組合,或者,二進制環(huán)境下,在Text中需要查找的二進制位串的組合。這種串模式匹配方法主要分為單模式匹配和多模式匹配兩種單模式匹配算法是指一次只能在文本串中對一個模式串進行匹配的算法,比如Boyer Moore(簡稱BM)算法、Brute force(簡稱BF)和Perl兼容的正規(guī)表達式(Perl Compatible Regular Expression,算法PCRE)算法;多模式匹配算法是指同時對多個模式串進行匹配的算法,比如Aho-Corasick(簡稱AC)算法。其中,AC算法等僅僅考慮串模式中的字符串,而不考慮進行字符串匹配的策略問題,因此其匹配精度較低;而對于BM、BF算法,則是精確的單模式匹配算法,能夠同時兼顧到上述字符匹配以及策略匹配,因此其匹配精確程度很高。
      但是目前的串模式匹配方法都必須在傳輸流的內(nèi)容(Text)連續(xù)的情況下才能夠?qū)崿F(xiàn),而在實際應用中,網(wǎng)絡(luò)每一個傳輸Text是通過分段為多個報文來實現(xiàn)傳輸,這就造成了在網(wǎng)絡(luò)中進行串模式匹配的困難。目前通用的解決方法是對分段報文進行流重組,比如對按照用戶數(shù)據(jù)報協(xié)議(User DatagramProtocol,簡稱UDP)組織的分段報文、對按照網(wǎng)際控制報文協(xié)議(InternetControl Message Protocol,簡稱ICMP)組織的分段報文以及對按照傳輸控制協(xié)議(Transfer Control Protocol,簡稱TCP)組織的分段報文等,分別按照各自的協(xié)議格式作為偽流進行流重組,進行分段報文的保序和分段報文的恢復;然后將重組后的連續(xù)的Text進行串模式匹配。
      但是這種流重組的方法存在自身無法克服的致命缺陷,以按照TCP組織的分段報文為例首先,進行流重組必須修改網(wǎng)絡(luò)設(shè)備的TCP/IP(網(wǎng)際協(xié)議,InternetProtocol)協(xié)議棧,導致協(xié)議棧完整性的破壞,提高了網(wǎng)絡(luò)設(shè)備的故障幾率;其次,進行流重組要求緩存每個傳輸Text的分段報文直到串模式匹配完成,這一方面占用了大量的系統(tǒng)內(nèi)存,不但降低了系統(tǒng)性能,同時增加了DoS/DDoS(拒絕服務(wù)攻擊/分布式拒絕服務(wù)攻擊)的可能性,另一方面,由于系統(tǒng)為每個Text都預留內(nèi)存,在內(nèi)存有限的客觀情況下,由于為每一個Text預留的內(nèi)存有限,因此不可避免會出現(xiàn)漏報,再一方面,對分段報文進行緩存將導致延遲增加,對于一些敏感于時間延遲的業(yè)務(wù),如IP網(wǎng)上傳輸話音(Voice over IP,簡稱VoIP)業(yè)務(wù)、視頻業(yè)務(wù)等,帶來服務(wù)質(zhì)量下降的后果。
      為了對上述內(nèi)存占用進行控制,目前提出了將應用協(xié)議劃分為行模式或者長度模式,區(qū)分進行流重組的技術(shù)方案。由于一些應用協(xié)議報文是按照“行”為單位組織的,則緩存的報文最大為一行的長度,所以內(nèi)存占用的大小基本可控;對于不是按照“行”為單位進行組織的應用協(xié)議,則按照指定報文大小進行緩存,從而實現(xiàn)對內(nèi)存占用的控制。但這種技術(shù)方案只是提高了對內(nèi)存占用的控制,在一定程度上優(yōu)化系統(tǒng)性能,減少系統(tǒng)受到攻擊的可能,卻不是從根本上克服內(nèi)存占用高的缺陷,同時也無法克服修改TCP/IP協(xié)議棧所帶來的固有缺陷以及緩存所帶來的時延,無法避免漏報和誤報。特別是對像BM這種兼顧策略的串模式匹配算法,在實際處理過程中內(nèi)存的開支將較于一般的AC算法等更為巨大。
      綜上所述,現(xiàn)有技術(shù)中還沒有一種能夠不依賴于流重組的串模式匹配技術(shù)方案,即沒有這樣一種技術(shù)方案能夠不修改網(wǎng)絡(luò)設(shè)備本身TCP/IP協(xié)議棧,也無須緩存大量分段報文,避免了內(nèi)存大量占用和緩存延遲所帶來的一系列問題,從而高效、準確、智能地進行基于分段報文而非流重組的串模式匹配。而這種技術(shù)方案對于串模式匹配,特別是兼顧策略的串模式匹配,都具有十分重要的意義。

      發(fā)明內(nèi)容
      本發(fā)明要解決的技術(shù)問題是提供兼顧匹配策略的處理分段報文串模式匹配的方法及裝置,以克服現(xiàn)有技術(shù)中必須進行流重組才能夠進行串模式匹配,特別是兼顧匹配策略的串模式匹配,以及由此導致協(xié)議棧破壞、內(nèi)存大量占用所帶來的安全性問題、漏報誤報、時間延遲和服務(wù)質(zhì)量下降等諸多缺陷。
      為實現(xiàn)上述目的,本發(fā)明提供了一種兼顧匹配策略的處理分段報文串模式匹配的方法,當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則對所述分段報文與所述流狀態(tài)信息中預存的字符進行結(jié)合處理為目標分段報文,并清空所述流狀態(tài)信息中預存的字符,然后對所述目標分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的流狀態(tài)信息,然后設(shè)置所述分段報文為目標分段報文并執(zhí)行串模式匹配的步驟。
      其中,對所述目標分段報文執(zhí)行串模式匹配的步驟可以包括按照所述流狀態(tài)信息中記錄的每一匹配單元,對所述目標分段報文分別執(zhí)行
      步驟11、根據(jù)任一匹配單元,對所述目標分段報文進行匹配,如果匹配完全成功則執(zhí)行步驟12,如果所述目標分段報文至少一個后綴字符與所述匹配單元字符串對應數(shù)目的前綴字符匹配成功則執(zhí)行步驟13,如果匹配完全不成功則執(zhí)行步驟14;步驟12、判斷所述匹配單元是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟11;步驟13、在所述流狀態(tài)信息中預存該后綴字符,然后執(zhí)行步驟14;步驟14、根據(jù)所述分段報文的長度信息,修改所述匹配單元中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;當所述每一匹配單元匹配結(jié)束后,對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      其中,對所述分段報文與所述流狀態(tài)信息中預存的字符進行結(jié)合處理為目標分段報文可包括判斷所述流狀態(tài)信息中是否存在預存的字符,是則將所述字符作為前綴,與所述分段報文結(jié)合起來設(shè)置為目標分段報文,否則將所述分段報文直接設(shè)置為目標分段報文。
      對所述傳輸流初始化當前串模式的流狀態(tài)信息包括記錄首個匹配單元作為當前串模式的流狀態(tài)信息,并設(shè)置記錄預存字符的指定單元,所述匹配單元中至少包括進行所述串模式首個規(guī)則匹配的匹配開始位置信息和匹配結(jié)束位置信息。
      為了保證不丟失任一匹配單元的匹配信息,較佳的技術(shù)方案是所述步驟13中,在所述流狀態(tài)信息中預存該后綴字符包括檢查所述流狀態(tài)信息中是否存在預存的字符,是則對所述后綴字符和所述預存字符進行比較,對字符數(shù)目較多的字符進行預存,并在當前匹配單元中記錄所保存字符的相對位置;否則直接預存該后綴字符,并在當前匹配單元中記錄所保存字符的相對位置。
      為了進一步減少系統(tǒng)資源占用,更佳的技術(shù)方案為預存該后綴字符包括將所述字符保存在預設(shè)的字節(jié)區(qū)內(nèi),在所述流狀態(tài)信息中保存到該字節(jié)區(qū)的指針,并在當前匹配單元中記錄所保存字符的相對位置。
      所述步驟14還包括對修改后的匹配單元中匹配開始位置信息和匹配結(jié)束位置信息進行判斷,如果該匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍,則刪除該匹配單元。
      為了節(jié)約系統(tǒng)資源,在當前串模式匹配成功時,或者傳輸流結(jié)束時,或者,當所述串模式的全部匹配單元的匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍,還包括刪除所述串模式的流狀態(tài)信息的步驟。
      本發(fā)明還提供了一種兼顧匹配策略的處理分段報文串模式匹配的方法,當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則直接對所述分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的流狀態(tài)信息,然后對所述分段報文執(zhí)行串模式匹配的步驟;對所述分段報文執(zhí)行串模式匹配的步驟包括按照所述流狀態(tài)信息中記錄的每一匹配單元,將所述分段報文分別與該匹配單元中預存的字符進行結(jié)合處理為目標分段報文,清空所述流狀態(tài)信息中的預存字符,并執(zhí)行步驟21、根據(jù)任一匹配單元,對所述目標分段報文進行匹配,如果匹配完全成功則執(zhí)行步驟22,如果所述目標分段報文至少一個后綴字符與所述匹配單元字符串對應數(shù)目的前綴字符匹配成功則執(zhí)行步驟23,如果匹配完全不成功則執(zhí)行步驟24;步驟22、判斷所述匹配單元是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟21;步驟23、在所述匹配單元中預存該后綴字符,然后執(zhí)行步驟24;步驟24、根據(jù)所述分段報文的長度信息,修改所述匹配單元中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;當所述每一匹配單元匹配結(jié)束后,對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      本發(fā)明還提供了一種兼顧匹配策略的處理分段報文串模式匹配的方法,當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的狀態(tài)樹,是則對所述分段報文與所述狀態(tài)樹根節(jié)點中預存的字符進行結(jié)合處理為目標分段報文,并清空所述根節(jié)點中預存的字符,然后對所述目標分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的狀態(tài)樹,然后設(shè)置所述分段報文為目標分段報文并執(zhí)行串模式匹配的步驟。
      其中,對所述目標分段報文執(zhí)行串模式匹配的步驟可以包括對所述目標分段報文進行狀態(tài)樹的廣度遍歷,根據(jù)每一匹配單元節(jié)點,對所述目標分段報文分別執(zhí)行步驟31、對所述目標分段報文進行匹配,如果匹配完全成功則執(zhí)行步驟32,如果所述目標分段報文至少一個后綴字符與所述匹配單元節(jié)點中字符串對應數(shù)目的前綴字符匹配成功則執(zhí)行步驟33,如果匹配完全不成功則執(zhí)行步驟34;步驟32、判斷所述匹配單元節(jié)點是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則在所述狀態(tài)樹中為所述匹配單元節(jié)點添加一子節(jié)點,該子節(jié)點中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟31;步驟33、在所述根節(jié)點中預存該后綴字符,然后執(zhí)行步驟34;步驟34、根據(jù)所述分段報文的長度信息,修改所述匹配單元節(jié)點中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點遍歷結(jié)束;當所述每一匹配單元節(jié)點廣度遍歷結(jié)束后,對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      對所述傳輸流初始化當前串模式的狀態(tài)樹可包括設(shè)置根節(jié)點作為當前串模式的流狀態(tài)信息并設(shè)置記錄預存字符的指定單元,所述根節(jié)點為首個匹配單元節(jié)點,至少包括記錄進行所述串模式首個規(guī)則匹配的匹配開始位置信息和匹配結(jié)束位置信息。
      較佳的技術(shù)方案為所述步驟33中,在所述根節(jié)點中預存該后綴字符包括檢查所述根節(jié)點中是否存在預存的字符,是則對所述后綴字符和所述預存字符進行比較,對字符數(shù)目較多的字符進行預存,并在當前匹配單元節(jié)點中記錄所保存字符的相對位置;否則直接預存該后綴字符,并在當前匹配單元節(jié)點中記錄所保存字符的相對位置。
      為了進一步減少系統(tǒng)資源占用,更佳的技術(shù)方案為預存該后綴字符包括將所述字符保存在預設(shè)的字節(jié)區(qū)內(nèi),在所述根節(jié)點中保存到該字節(jié)區(qū)的指針,并在當前匹配單元節(jié)點中記錄所保存字符的相對位置。
      所述步驟34還包括對修改后的匹配單元節(jié)點中匹配開始位置信息和匹配結(jié)束位置信息進行判斷,如果該匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍,則判斷所述匹配單元節(jié)點的子節(jié)點是否為空,是則刪除該匹配單元節(jié)點,否則標識該匹配單元節(jié)點不再進行匹配或者刪除該匹配單元節(jié)點所記錄的內(nèi)容。
      刪除匹配單元節(jié)點之后還包括判斷所述匹配單元節(jié)點的父節(jié)點狀態(tài),如果為不再進行匹配或者所記錄的內(nèi)容為空,則刪除所述父節(jié)點。
      為了節(jié)約系統(tǒng)資源,在當前串模式匹配成功時,或者傳輸流結(jié)束時,或者,所述串模式的全部節(jié)點中匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍時,還包括刪除所述串模式的狀態(tài)樹的步驟。
      本發(fā)明還提供了一種兼顧匹配策略的處理分段報文串模式匹配的方法,當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的狀態(tài)樹,是則直接對所述分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的狀態(tài)樹,然后執(zhí)行串模式匹配的步驟;對所述分段報文執(zhí)行串模式匹配的步驟包括按照所述狀態(tài)樹進行廣度遍歷,對于狀態(tài)樹中任一匹配單元節(jié)點,將所述分段報文分別與該節(jié)點中預存的字符進行結(jié)合處理為目標分段報文,清空所述流狀態(tài)信息中的預存字符,并執(zhí)行步驟41、對所述目標分段報文進行匹配,如果所述目標分段報文至少一個后綴字符與所述匹配單元節(jié)點中字符串對應數(shù)目的前綴字符匹配成功則執(zhí)行步驟43,如果匹配完全不成功則執(zhí)行步驟44;步驟42、判斷所述匹配單元節(jié)點是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則在所述狀態(tài)樹中為所述匹配單元節(jié)點添加一子節(jié)點,該子節(jié)點中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟41;步驟43、在所述匹配單元節(jié)點中預存該后綴字符,然后執(zhí)行步驟44;步驟44、根據(jù)所述分段報文的長度信息,修改所述匹配單元節(jié)點中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點遍歷結(jié)束;當所述每一匹配單元節(jié)點廣度遍歷結(jié)束后,對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      本發(fā)明還提供了一種兼顧匹配策略的處理分段報文串模式匹配的方法,當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則對所述分段報文與所述流狀態(tài)信息中預存的字符進行結(jié)合處理為目標報文,然后對所述目標報文執(zhí)行串模式匹配的步驟;否則直接設(shè)置所述分段報文為目標報文并執(zhí)行串模式匹配的步驟;對所述目標報文執(zhí)行串模式匹配的步驟包括
      步驟51、將第一匹配規(guī)則作為當前匹配規(guī)則;步驟52、查詢所述目標報文是否與串模式的當前匹配規(guī)則匹配,是則執(zhí)行步驟53;否則執(zhí)行步驟54;步驟53、判斷所述當前匹配規(guī)則是否為當前模式的最后一個規(guī)則,是則當前串模式匹配成功,釋放流狀態(tài)信息并結(jié)束,否則將下一匹配規(guī)則作為當前匹配規(guī)則,重新執(zhí)行步驟52;步驟54、判斷在所述傳輸流是否傳輸完畢,是則釋放所述流狀態(tài)信息并結(jié)束,否則執(zhí)行步驟55;步驟55、在流狀態(tài)信息中更新保存所述目標報文的字符進行下一分段報文的接收。
      本發(fā)明還提供了一種兼顧匹配策略的處理分段報文串模式匹配的裝置,包括流狀態(tài)信息設(shè)置模塊,用于針對任一傳輸流,動態(tài)記錄該傳輸流每一串模式的流狀態(tài)信息,所述流狀態(tài)信息至少包括相對不同的分段報文動態(tài)變化的預存字符和匹配單元;分段報文處理模塊,用于接收分段報文,并從所述流狀態(tài)信息設(shè)置模塊獲取預存字符,將所述分段報文與所述預存字符進行結(jié)合處理為目標分段報文;匹配處理模塊,分別與所述流狀態(tài)信息設(shè)置模塊和所述分段報文處理模塊連接,用于根據(jù)所述流狀態(tài)信息設(shè)置模塊提供的匹配單元,對所述目標分段報文進行匹配;對于完全匹配的情況,指令所述流狀態(tài)信息設(shè)置模塊記錄下一匹配單元,對于目標分段報文至少一個后綴字符與所述匹配單元字符串的對應數(shù)目的前綴字符匹配成功的情況,指令所述流狀態(tài)信息設(shè)置模塊將所述后綴字符作為預存字符進行記錄。
      其中,較佳的技術(shù)方案是所述流狀態(tài)信息設(shè)置模塊設(shè)有控制單元和多個匹配單元;所述控制單元用于接收匹配處理模塊的指令并發(fā)送預存字符給分段報文處理模塊,添加、刪除匹配單元,以及動態(tài)變更匹配單元中的匹配開始位置信息和匹配結(jié)束位置信息;其中,首個匹配單元還用于記錄預存字符。
      或者,所述流狀態(tài)信息設(shè)置模塊設(shè)有控制單元和多個匹配單元;所述控制單元用于接收匹配處理模塊的指令并發(fā)送預存字符給分段報文處理模塊,添加、刪除匹配單元,以及動態(tài)變更匹配單元中的匹配開始位置信息和匹配結(jié)束位置信息;其中,任一匹配單元還用于記錄該匹配單元進行匹配時的預存字符。
      更佳的技術(shù)方案是所述匹配單元按照狀態(tài)樹的方式連接,一下級匹配單元節(jié)點被添加,用于記錄與其上級匹配單元節(jié)點的成功匹配,其中,初始化的首個匹配單元節(jié)點為根節(jié)點。
      所述匹配處理模塊包括流狀態(tài)信息獲取單元、匹配執(zhí)行單元和指令發(fā)送單元;所述流狀態(tài)信息獲取單元用于獲取待匹配的匹配單元、預存字符和分段報文信息,由所述匹配執(zhí)行單元進行匹配;所述匹配執(zhí)行單元將匹配結(jié)果發(fā)送給所述指令發(fā)送單元,由所述指令發(fā)送單元根據(jù)匹配情況和報文變化情況,向所述流狀態(tài)信息設(shè)置模塊發(fā)出添加、刪除或者變更匹配單元的指令,以及向分段報文處理模塊發(fā)送接收下一分段報文的指令。
      由上述技術(shù)方案可知,本發(fā)明通過保留流狀態(tài)信息,采用預留部分字符與后面的分段報文結(jié)合的技術(shù)方案,具有以下有益效果1、無需破壞協(xié)議棧,提高了報文處理的安全性;2、與大量分段報文整體保存相比,僅對部分字符和待測匹配單元進行保存,避免了內(nèi)存的大量占用;3、不必緩存分段報文,使報文能夠快速轉(zhuǎn)發(fā),克服了網(wǎng)絡(luò)延遲和服務(wù)質(zhì)量下降的問題。
      下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。


      圖1為應用串模式匹配的網(wǎng)關(guān)設(shè)備所在的系統(tǒng)示意圖;圖2為應用串模式匹配的旁路設(shè)備所在的系統(tǒng)示意圖;圖3為本發(fā)明所舉例的傳輸流被分為五段報文的示意圖;圖4為本發(fā)明所提供的第一種兼顧匹配策略的處理分段報文串模式匹配的方法的一個實施例流程圖;圖5A為匹配單元的報文長度不能滿足有效檢測范圍時,計算匹配開始位置信息和匹配結(jié)束位置信息的示意圖;圖5B為匹配單元的報文長度能夠滿足有效檢測范圍時,計算匹配開始位置信息和匹配結(jié)束位置信息的示意圖;圖6為本發(fā)明所提供的第二種兼顧匹配策略的處理分段報文串模式匹配的方法的一個實施例流程圖;圖7為本發(fā)明所提供的第三種兼顧匹配策略的處理分段報文串模式匹配的方法中狀態(tài)樹結(jié)構(gòu)示意圖;圖8A~圖8I為圖7所示方法的一個具體實施例的狀態(tài)樹變化圖;圖9為圖7所示方法的一個完整流程示意圖;圖10為本發(fā)明所提供的第四種兼顧匹配策略的處理分段報文串模式匹配的方法中狀態(tài)樹的結(jié)構(gòu)示意圖;圖11為本發(fā)明所提供的第五種兼顧匹配策略的處理分段報文串模式匹配的方法中狀態(tài)樹的結(jié)構(gòu)示意圖;圖12為本發(fā)明所提供的兼顧匹配策略的處理分段報文串模式匹配的裝置的系統(tǒng)框圖;圖13為圖12所提供裝置的一個具體實施例的系統(tǒng)框圖。
      具體實施例方式
      為了克服在現(xiàn)有技術(shù)中必須進行流重組才能夠匹配串模式的問題,本發(fā)明提供了五種兼顧匹配策略的處理分段報文串模式匹配的方法以及一種兼顧匹配策略的處理分段報文串模式匹配的裝置,下面進行一一說明。
      為了說明方便起見,首先設(shè)定一段傳輸流的內(nèi)容為“abdddddcabcokabcddrtdefabcdddefdfdkdefkadghkdef”,以及設(shè)定用于匹配的串模式為“規(guī)則A‘a(chǎn)bc’offset 3 depth 50,規(guī)則B‘def’distance 4 within 10,規(guī)則C‘ghk’distance 3 within 8”,簡稱該串模式為串模式ABC。上述內(nèi)容所表述的是在內(nèi)容為“abdddddcabcokabcddrtdefabcdddefdfdkdedkadghkdef”的傳輸流中,搜索符合指定規(guī)則A、B和C的串模式在傳輸流中偏移3開始,長度為50的內(nèi)容中搜索“abc”,在匹配到A的位置偏移4開始,長度為10的內(nèi)容中搜索“def”,在匹配到B的位置偏移3開始,長度為8的內(nèi)容中搜索“ghk”。若最終匹配規(guī)則ABC成功,則說明在傳輸流內(nèi)容中在同時考慮了字符串與匹配策略的情況下,實現(xiàn)了該串模式的匹配。同時,在網(wǎng)絡(luò)傳輸中,上述傳輸流按照TCP協(xié)議會被分為5段報文,如圖3所示。
      本發(fā)明對所提供的兼顧匹配策略的處理分段報文串模式匹配的方法及裝置實際匹配過程的描述,都通過各方法/裝置對上述5段分段報文進行如上所述的串模式匹配進行舉例說明。但本領(lǐng)域技術(shù)人員應當理解,上述傳輸流內(nèi)容的設(shè)置和串模式的設(shè)置僅為說明方便而非限定,本發(fā)明所提供的串模式匹配方法和串模式匹配裝置適用于實際應用中出現(xiàn)的任何傳輸流內(nèi)容和串模式。
      本發(fā)明所提供的第一種兼顧匹配策略的處理分段報文串模式匹配的方法包括以下步驟當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則對所述分段報文與所述流狀態(tài)信息中預存的字符進行結(jié)合處理為目標分段報文,并清空所述流狀態(tài)信息中預存的字符,然后對所述目標分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的流狀態(tài)信息,然后設(shè)置所述分段報文為目標分段報文并執(zhí)行串模式匹配的步驟。
      參見圖4,為本發(fā)明所提供的第一種兼顧匹配策略的處理分段報文串模式匹配的方法的一個實施例流程圖,包括以下步驟步驟101、當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則執(zhí)行步驟102,否則執(zhí)行步驟103;進行本步驟的判斷是由于進行串模式匹配是針對傳輸流進行的,各分段報文僅能夠與本傳輸流中的其他分段報文結(jié)合,因此首先識別分段報文所在的傳輸流,這是現(xiàn)有技術(shù)能夠完成的。
      識別分段報文所在的傳輸流后,進一步識別針對當前串模式,是否存在相應的流狀態(tài)信息。由于在不同的業(yè)務(wù)應用中,需要進行的模式匹配要求不同,因此即使是對同一傳輸流,面向不同的業(yè)務(wù)應用時,需要匹配的串模式可能也不相同,因此需要根據(jù)需要設(shè)置和匹配。本發(fā)明針對任一傳輸流,采用記錄不同串模式的流狀態(tài)信息來取代緩存大量報文,從而實現(xiàn)不基于流重組的模式匹配。
      步驟102、對所述分段報文與所述流狀態(tài)信息中預存的字符進行結(jié)合處理為目標分段報文,并清空所述流狀態(tài)信息中預存的字符,然后執(zhí)行步驟104;其中,對分段報文與流狀態(tài)信息中預存的字符進行結(jié)合處理為目標分段報文包括步驟1021、判斷流狀態(tài)信息的指定單元中是否存在預存的字符,是則執(zhí)行步驟1022,否則執(zhí)行步驟1023;步驟1022、將所述字符作為前綴,與所述分段報文結(jié)合起來設(shè)置為目標分段報文;步驟1023、將所述分段報文直接設(shè)置為目標分段報文。
      一般來說,該指定單元可以是當前匹配單元,即每一個指定單元中分別保存對應的預存字符。
      該指定單元也可以是固定的一個匹配單元,比如初始匹配單元,則對任何一個匹配單元進行處理時,都從該指定單元獲得字符信息。
      進一步的,為了減少流狀態(tài)信息的內(nèi)存占用,還可以單獨在存儲空間中開辟一定的字節(jié)區(qū),專門用來存儲預存字符,該字節(jié)區(qū)的大小可以依據(jù)全部模式中規(guī)則所匹配內(nèi)容的最大長度,如本發(fā)明作為例子的三個規(guī)則,所匹配的內(nèi)容都是三個字節(jié),那么開辟3個字節(jié)的區(qū)域即可滿足要求;對于指定單元是固定的匹配單元的情況,包括在指定單元內(nèi)存儲預存字符以及在專門的字節(jié)區(qū)內(nèi)預存字符,都需要在當前匹配單元中記錄相對位置。比如,當匹配模式分別有規(guī)則為“abcd”“bcde”“cdf”時,假設(shè)某段分段報文末尾結(jié)束字符為“xxabc”,則在該字節(jié)區(qū)內(nèi)存儲三個規(guī)則中所需保存的最長字符“abc”,并分別建立各模式流狀態(tài)信息的指定單元到該字節(jié)區(qū)的連接,并在當前匹配單元中記錄相對位置;對于規(guī)則“abcd”的流狀態(tài)信息,其相對位置為3,對于規(guī)則“bcde”,其相對位置為2,對于規(guī)則“cdf”,其相對位置為1。該相對位置就是從報文結(jié)束位置起的前向偏移量。特別是開辟字節(jié)區(qū)的方案,尤其適用于多個匹配模式存在重復字符的情況,無需在每一個流狀態(tài)信息中進行字符保存,能夠?qū)⑻幚韴笪哪芰μ岣?0個數(shù)量級。
      在本技術(shù)方案中,該指定單元為首個匹配單元,保存且僅保存一預存字符,因此在進行該分段報文匹配之前就需要進行分段報文的結(jié)合工作。
      步驟103、對所述傳輸流初始化當前串模式的流狀態(tài)信息,然后設(shè)置所述分段報文為目標分段報文并執(zhí)行步驟104;其中,對所述傳輸流初始化當前串模式的流狀態(tài)信息可以包括記錄首個匹配單元即初始化匹配單元作為當前串模式的流狀態(tài)信息,并設(shè)置記錄預存字符的指定單元,所述匹配單元中至少包括進行所述串模式首個規(guī)則匹配的匹配開始位置信息和匹配結(jié)束位置信息。以圖3所示分段報文為例,當接收到分段報文1時,顯然需要進行串模式ABC的初始化,包括記錄字符串“abc”和進行該字符串匹配策略即偏移信息3和長度50等規(guī)則信息,還要記錄報文匹配開始的位置信息“1”和匹配結(jié)束位置信息“53”??梢钥闯?,對分段報文1進行串模式匹配時,就按照該匹配單元進行匹配操作。
      步驟104、對所述目標分段報文執(zhí)行串模式匹配的步驟,包括1041、獲取流狀態(tài)信息中記錄的一個匹配單元,這種獲取可以是按照流狀態(tài)信息中匹配單元記錄的順序獲取,也可以是隨機獲取;假設(shè)是流狀態(tài)信息初始化完成后的第一次對目標分段報文進行處理,那么顯然流狀態(tài)信息中僅有一個匹配單元能夠被獲取;1042、對所述目標分段報文與所述匹配單元進行匹配,如果匹配完全成功則執(zhí)行步驟1043,如果所述目標分段報文至少一個后綴字符與所述匹配單元字符串對應數(shù)目的前綴字符匹配成功,則執(zhí)行步驟1045,如果匹配完全不成功則執(zhí)行步驟1046;1043、判斷所述匹配單元是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則執(zhí)行步驟1044;在本步驟中,為了降低系統(tǒng)資源開銷,當前串模式匹配成功后還可以進一步包括刪除當前串模式的流狀態(tài)信息的步驟。
      1044、根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟1042;舉例來說,當對分段報文2執(zhí)行串模式匹配時,同樣需要遍歷流狀態(tài)信息中的匹配單元;由于分段報文1未發(fā)生完全匹配情況,因此沒有新增加匹配單元,此時所存在的匹配單元仍為初始化后的首個匹配單元,即進行規(guī)則A的匹配;分段報文2中存在字符串“abc”,完全匹配,則進一步設(shè)置新的匹配單元,包括記錄字符串“def”和進行該字符串匹配的偏移信息4和長度10等規(guī)則信息,還要記錄進行該字符串“def”匹配的開始位置信息“13”和結(jié)束位置信息“23”。可以看出,經(jīng)過本步驟處理以后,對分段報文3進行匹配時,至少要與兩個匹配單元進行匹配。
      1045、在所述流狀態(tài)信息中預存該后綴字符,然后執(zhí)行1046;
      舉例來說,圖3中分段報文1的最后一個后綴字符為“a”,當對該分段報文與規(guī)則A進行匹配時,該后綴字符“a”顯然與規(guī)則A中字符串“abc”的第一個字母匹配,也就意味著該分段報文中的最后一個字符“a”有可能與下一個分段報文組合出符合匹配要求的“abc”,因此,需要將字符拷貝保留,同時記錄相對位置信息。
      為了保證不丟失任一匹配單元的匹配信息,在本步驟中在所述流狀態(tài)信息中預存該后綴字符包括檢查所述流狀態(tài)信息中是否存在預存的字符,是則對所述后綴字符和所述預存字符進行比較,對字符數(shù)目較多的字符進行預存;否則直接預存該后綴字符。舉例來說,當一個匹配單元的規(guī)則是匹配“def”,而另一個匹配單元的規(guī)則是匹配“tdef”,當某一分段報文的結(jié)束字符為“tde”時,根據(jù)兩個匹配單元的隨機或者依次匹配次序,可能存在下述兩種情況第一、當被首先匹配的匹配單元為規(guī)則“def”時,需要預存字符“de”,并在當前匹配單元中保存相應位置2;則進行下一匹配單元的匹配時,檢查所述流狀態(tài)信息中存在預存的字符,則進行比較;由于字符“tde”的長度大于字符“de”,因此,將預存的字符更新為“tde”,并在當前匹配單元中保存相應位置3;第二、當被首先匹配的匹配單元為規(guī)則“tdef”時,需要預存字符“tde”,并在當前匹配單元中保存相應位置3;則進行下一匹配單元的匹配時,檢查所述流狀態(tài)信息中存在預存的字符,則進行比較;由于字符“tde”的長度大于字符“de”,因此,不進行預存字符的變更,仍保存字符“tde”,但在當前匹配單元中保存相應位置2。
      1046、根據(jù)所述分段報文的長度信息,修改所述匹配單元的匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;例如,初始化后匹配單元記錄的匹配開始位置信息為“1”,匹配結(jié)束位置信息為“53”,則進行分段報文1的匹配及保存字符“a”之后,需要進行該匹配單元的匹配開始位置信息和匹配結(jié)束位置信息調(diào)節(jié),具體可以為匹配開始位置信息為“1”,代表從下一報文的第一個字符開始;匹配結(jié)束位置信息為45,如圖3所示,對于首報文的匹配是從偏移3的位置開始,即偏移字符為3個,所匹配的字符為“ddddca”,由于字符“a”存儲留待下一次匹配,因此有效匹配的報文為“ddddc”,共5個字符,則對匹配結(jié)束位置信息的修改就是根據(jù)所匹配字符的個數(shù),將“53”修改為“45”。
      1047、檢查是否存在其它匹配單元,是則重新執(zhí)行步驟1041,否則對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      當串模式匹配成功,則返回匹配成功結(jié)果;如果當傳輸流結(jié)束或者串模式有效范圍結(jié)束時尚未匹配成功,則返回串模式匹配失敗結(jié)果。
      為了避免存儲過多的信息,同時為了提高匹配的效率,步驟1046還可以包括對修改后的匹配單元中匹配開始位置信息和匹配結(jié)束位置信息進行判斷,如果該匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍,則刪除該匹配單元記錄。例如,當匹配開始位置信息調(diào)整之后為0,則說明不可能再進行下一分段報文的匹配,則刪除該匹配單元即可。同樣的,除了當前串模式匹配成功的情況以外,當傳輸流結(jié)束時,或者,當所述串模式的全部匹配單元的匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍,則刪除所述串模式的流狀態(tài)信息,而且,對匹配開始位置信息或匹配結(jié)束位置信息進行檢測較對整個流進行檢測更為靈敏,有利于流狀態(tài)信息的隨時刪除,釋放空間。
      下面以圖3所示分段報文的另一個具體實施例來說明本發(fā)明所提供的第一種兼顧匹配策略的處理分段報文串模式匹配的方法。首先描述一下匹配單元中匹配開始位置信息和匹配結(jié)束位置信息的計算方法對于未考慮跨報情況,規(guī)則A、B、C是在連續(xù)的報文中進行匹配,將匹配開始位置信息以Start表示,匹配結(jié)束位置信息以Len表示,則本領(lǐng)域技術(shù)人員很容易理解,各個匹配單元中記錄對應規(guī)則的形式可以如下所示
      A-Start=1;A-Len=A-depth(檢測深度,比如本實施例中為50)+A-offset(A的偏移值)-報文中已經(jīng)檢測的字符個數(shù);B-Start=A的匹配位置+規(guī)則A內(nèi)容長度(如本實施例中為3)+B-distance(B的偏移值);B-Len=B-Start+B-distance(B的偏移值)+B-within(B的檢測深度);C-Start=B的匹配位置+ContentB內(nèi)容長度(如本實施例中為3)+C-distance;C-Len=C-Stan+C-distance(C的偏移值)+C-within(C的檢測深度)。
      而對于跨報文的情況,則稍微復雜一些,參見圖5A和圖5B,為進行跨報文計算的圖示;其中,圖5A為匹配單元的報文長度不能滿足規(guī)則有效檢測范圍的情況,圖5B為匹配單元的報文長度能夠滿足規(guī)則有效檢測范圍的情況,由于內(nèi)容長度相當于匹配位置加上相應字符,因此為了說明方便,這里暫時定義內(nèi)容長度為0。n是當前報文長度,i是前一規(guī)則在當前報文的匹配位置,j是下一個規(guī)則的偏移值,m是下一個規(guī)則的檢測深度,則在圖5A中,下一規(guī)則的Start為j-(n-i),Len為Start+m;在圖5B中,下一規(guī)則的Start為i+j,Len為Start+m,對于Start和Len之間跨報文的情況,該Len的實際值為Start+m-n。在本實施例中A-Start=1;A-Len=A-depth(檢測深度)+A-offset(A的偏移值)-報文中已經(jīng)檢測的字符個數(shù);B-Start=A的匹配位置+Content A內(nèi)容長度+B-distance,此為匹配單元的報文長度能夠滿足規(guī)則B有效檢測范圍的情況;或者B-Start=B-distance-(當前報文長度-A的匹配位置-Content A內(nèi)容長度),此為匹配單元的報文長度不能滿足規(guī)則B有效檢測范圍的情況,則B-Start的匹配開始位置在下一分段報文中;
      B-Len=B-Start+B-within(B的檢測深度);C-Start=B的匹配位置+Content B內(nèi)容長度+C-distance,此為匹配單元的報文長度能夠滿足規(guī)則C有效檢測范圍的情況;或者C-Start=C-distance-(當前報文長度-B的匹配位置-ContentB內(nèi)容長度),此為匹配單元的報文長度不能滿足規(guī)則C有效檢測范圍的情況,則C-Start的匹配開始位置在下一分段報文中;C-Len=C-Start+C-within(C的檢測深度)。
      則本實施例的步驟如下步驟111、接收到分段報文1;步驟112、判斷該分段報文所在的傳輸流不存在當前串模式ABC的流狀態(tài)信息,對所述傳輸流初始化當前串模式的流狀態(tài)信息,包括設(shè)置首個匹配單元A,其中記錄規(guī)則A“abc”的匹配開始位置信息“1”和匹配結(jié)束位置信息“53”;還包括設(shè)置記錄預存字符的指定單元,在本實施例中為設(shè)置專門的一個字節(jié)Pkt,此時Pkt為空,然后設(shè)置所述分段報文1為目標分段報文;步驟113、根據(jù)該匹配單元A對目標分段報文進行匹配,具體為在報文1中偏移3的位置尋找“abc”,結(jié)果未完全匹配;但該分段報文1的最后一個字符為“a”,有可能和下一個報文組合為目標字符串’abc’,故需要拷貝保留該字符到Pkt中,并記錄相對位置1;步驟114、根據(jù)所述分段報文1的長度信息,修改所述匹配單元A中匹配開始位置信息和匹配結(jié)束位置信息,具體為將匹配開始位置信息修改為“1”,代表從下一報文首字符起進行匹配,匹配結(jié)束位置信息修改為“45”,即原來的匹配結(jié)束位置信息減去偏移值和已檢測的字符個數(shù);步驟115、判斷不存在其他匹配單元,因此分段報文1的串模式匹配結(jié)束;步驟116、接收分段報文2;步驟117、判斷所述分段報文2所在的傳輸流已存在當前串模式的流狀態(tài)信息,則將保存的Pkt內(nèi)容“a”和分段報文2內(nèi)容合二為一,并清空該Pkt字段,將結(jié)合后的報文“abcokabcddrtdef”作為目標分段報文;步驟118、根據(jù)已有的匹配單元A對目標分段報文進行匹配,具體為在目標分段報文2中“1”的位置起尋找“abc”,結(jié)果完全匹配;步驟119、在流狀態(tài)信息中記錄下一匹配單元B1,包括記錄進行所述串模式中規(guī)則B匹配的匹配開始位置信息1+3+4=8和匹配結(jié)束位置信息8+10=18,所謂匹配結(jié)束位置信息代表在第18個字符之前結(jié)束;步驟120、在匹配完全成功的位置之后,即從字符4開始,重新對目標分段報文執(zhí)行該字符串“abc”的匹配,結(jié)果完全匹配;步驟121、在流狀態(tài)信息中記錄下一匹配單元B2,包括記錄進行所述串模式中規(guī)則B匹配的匹配開始位置信息6+3+4=13和匹配結(jié)束位置信息13+10=23;步驟122、在匹配完全成功的位置之后,即從字符9開始,重新對目標分段報文執(zhí)行該字符串“abc”的匹配,結(jié)果為不匹配;步驟123、根據(jù)所述分段報文的長度信息,修改所述匹配單元A中匹配開始位置信息和匹配結(jié)束位置信息,具體為將匹配開始位置信息修改為“1”,代表從下一報文首字符起進行匹配,匹配結(jié)束位置信息修改為“30”,即原來的匹配結(jié)束位置信息減去已檢測的字符個數(shù)15;所述匹配單元A匹配結(jié)束;步驟124、由于出現(xiàn)了兩個新的匹配單元B1和B2,因此隨機挑選一匹配單元對所述目標分段報文進行匹配,本實施例是首先在字符8到18的位置中進行匹配單元B1“def”的匹配,由于目標分段報文2的長度為15,因此實際的匹配發(fā)生在字符8到本目標分段報文結(jié)束,結(jié)果為完全匹配;這種匹配單元的選擇也可以預設(shè)次序,比如按照生成匹配單元的次序進行;步驟125、在流狀態(tài)信息中記錄下一匹配單元C1,包括記錄進行所述串模式中規(guī)則C匹配的匹配開始位置信息3-(15-13-3)=4和匹配結(jié)束位置信息4+8=12;步驟126、在完全匹配的位置之后,該目標分段報文2結(jié)束,因此繼續(xù)匹配完全不成功;步驟127、根據(jù)所述分段報文2的長度信息,修改所述匹配單元B1中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元B1中匹配開始位置信息為1,代表下一分段報文的匹配從字符1開始,匹配結(jié)束位置信息為18-15=3;所述匹配單元B1匹配結(jié)束;步驟128、根據(jù)下一個匹配單元B2進行目標分段報文2的匹配,在字符13到23的位置中進行“def”的匹配,由于目標分段報文2的長度為15,因此實際的匹配發(fā)生在字符13到本目標分段報文結(jié)束,結(jié)果為完全匹配;步驟129、在流狀態(tài)信息中記錄下一匹配單元C2,包括記錄進行所述串模式中規(guī)則C匹配的匹配開始位置信息3-(15-13-3)=4和匹配結(jié)束位置信息4+8=12;步驟130、根據(jù)所述分段報文2的長度信息,修改所述匹配單元B2中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元B2中匹配開始位置信息為1,代表下一分段報文的匹配從字符1開始,匹配結(jié)束位置信息為23-15=8;所述匹配單元B2匹配結(jié)束;由于沒有其他對應本分段報文2的匹配單元,因此,分段報文2匹配結(jié)束;步驟131、接收分段報文3;步驟132、判斷所述分段報文3所在的傳輸流已存在當前串模式的流狀態(tài)信息,則將保存的Pkt內(nèi)容和分段報文3內(nèi)容合二為一,由于Pkt字段為空,因此結(jié)合后的報文仍為分段報文3,作為目標分段報文;步驟133、根據(jù)匹配單元A對目標分段報文進行匹配,具體為在目標分段報文3中“1”的位置起尋找“abc”,結(jié)果完全匹配;步驟134、在流狀態(tài)信息中記錄下一匹配單元B3,包括記錄進行所述串模式中規(guī)則B匹配的匹配開始位置信息4-(3-(1+3))=5和匹配結(jié)束位置信息5+10=15;
      步驟135、在完全匹配的位置之后,該目標分段報文結(jié)束,因此繼續(xù)匹配完全不成功;并且,由于超過了本分段報文的長度,因此,B3不再繼續(xù)對分段報文3進行匹配;步驟136、根據(jù)所述分段報文3的長度信息,修改所述匹配單元A中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元A中匹配開始位置信息為1,代表下一分段報文的匹配從字符1開始,匹配結(jié)束位置信息為30-3=27;所述匹配單元A匹配結(jié)束;步驟137、根據(jù)下一個匹配單元B1進行目標分段報文的匹配,在字符1到3的位置中進行“def”的匹配,結(jié)果為完全不匹配;步驟138、根據(jù)所述分段報文的長度信息,修改所述匹配單元中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元B1中匹配開始位置信息為1,代表下一分段報文的匹配從字符1開始,匹配結(jié)束位置信息為3-3=0;所述匹配單元B1匹配結(jié)束;步驟139、由于匹配單元B1的匹配結(jié)束位置信息超出有效檢測范圍,則刪除該匹配單元B1;步驟140、根據(jù)下一個匹配單元B2進行目標分段報文的匹配,在字符1到8的位置中進行“def”的匹配,由于本分段報文3僅有三個字符,因此實際是從字符1到本分段報文3結(jié)束的位置進行匹配,結(jié)果為完全不匹配;步驟141、根據(jù)所述分段報文的長度信息,修改所述匹配單元B2中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元B2中匹配開始位置信息為1,代表下一分段報文的匹配從字符1開始,匹配結(jié)束位置信息為8-3=5;所述匹配單元B2匹配結(jié)束;步驟142、根據(jù)下一個匹配單元C1進行目標分段報文的匹配,由于C1的匹配開始位置就超出了分段報文3的范圍,因此匹配完全不成功;步驟143、根據(jù)所述分段報文的長度信息,修改所述匹配單元C1中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元C1中匹配開始位置信息為4-3=1,代表下一分段報文的匹配從字符1開始,匹配結(jié)束位置信息為12-3=9;所述匹配單元C1匹配結(jié)束;步驟144、根據(jù)下一個匹配單元C2進行目標分段報文的匹配,由于C2的匹配開始位置就超出了分段報文3的范圍,因此匹配完全不成功;步驟145、根據(jù)所述分段報文的長度信息,修改所述匹配單元中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元C2中匹配開始位置信息為4-3=1,代表下一分段報文的匹配從字符1開始,匹配結(jié)束位置信息為12-3=9;所述匹配單元C2匹配結(jié)束;由于沒有其他對應本分段報文3的匹配單元,因此,分段報文3匹配結(jié)束;步驟146、接收分段報文4“dddefdfdkdefkad”;步驟147、判斷所述分段報文4所在的傳輸流已存在當前串模式的流狀態(tài)信息,則將保存的Pkt內(nèi)容和分段報文4內(nèi)容合二為一,由于Pkt字段為空,因此結(jié)合后的報文仍為分段報文4,作為目標分段報文;步驟148、根據(jù)匹配單元A對目標分段報文進行匹配,具體為在目標分段報文4中“1”的位置起尋找“abc”,結(jié)果完全不匹配;步驟149、根據(jù)所述分段報文4的長度信息,修改所述匹配單元A中匹配開始位置信息和匹配結(jié)束位置信息,具體為將匹配開始位置信息修改為“1”,代表從下一報文首字符起進行匹配,匹配結(jié)束位置信息修改為27-15=12,即原來的匹配結(jié)束位置信息減去已檢測的字符個數(shù)15;所述匹配單元A匹配結(jié)束;步驟150、根據(jù)下一個匹配單元B2進行目標分段報文的匹配,在字符1到5的位置中進行“def”的匹配,由于是在第5個字符之前結(jié)束,因此僅能匹配到第四個字符“e”,結(jié)果為完全不匹配;步驟151、根據(jù)所述分段報文4的長度信息,修改所述匹配單元B2中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元B2中匹配開始位置信息為負值,匹配結(jié)束位置信息為負值;所述匹配單元B2匹配結(jié)束;步驟152、由于匹配單元B2的匹配開始和結(jié)束位置信息超出有效檢測范圍,則刪除該匹配單元B2;步驟153、根據(jù)下一個匹配單元B3進行目標分段報文的匹配,在字符5到15的位置中進行“def”的匹配,結(jié)果為完全匹配;步驟154、在流狀態(tài)信息中記錄下一匹配單元C3,包括記錄進行所述串模式中規(guī)則C匹配的匹配開始位置信息3-(15-10-3)=1,標明從下一分段報文的字符1開始,和匹配結(jié)束位置信息1+8=9;步驟155、在匹配完全成功的位置之后,即從字符12開始,已經(jīng)超出匹配單元B3的范圍,結(jié)果完全不匹配;步驟156、根據(jù)所述分段報文4的長度信息,修改所述匹配單元B3中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元B3中匹配開始位置信息為負值,匹配結(jié)束位置信息為負值;所述匹配單元B3匹配結(jié)束;步驟157、由于匹配單元B3的匹配開始和結(jié)束位置信息分別為-10和0超出有效檢測范圍,則刪除該匹配單元B3;步驟158、根據(jù)下一個匹配單元C1進行目標分段報文的匹配,在1至9的范圍內(nèi),與字符串“ghk”完全不匹配;步驟159、根據(jù)所述分段報文4的長度信息,修改所述匹配單元C1中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元C1中匹配開始位置信息為負值,匹配結(jié)束位置信息為負值;所述匹配單元C1匹配結(jié)束;步驟160、由于匹配單元C1的匹配開始和結(jié)束位置信息超出有效檢測范圍,則刪除該匹配單元C1;步驟161、根據(jù)下一個匹配單元C2進行目標分段報文的匹配,在1至9的范圍內(nèi),與字符串“ghk”完全不匹配;步驟162、根據(jù)所述分段報文4的長度信息,修改所述匹配單元C2中匹配開始位置信息和匹配結(jié)束位置信息,具體為匹配單元C2中匹配開始位置信息為負值,匹配結(jié)束位置信息為負值;所述匹配單元C2匹配結(jié)束;步驟163、由于匹配單元C2的匹配開始和結(jié)束位置信息超出有效檢測范圍,則刪除該匹配單元C2;由于下一個匹配單元C3針對的是下一報文,因此分段報文4的匹配結(jié)束;步驟164、接收分段報文5“ghkdef”;步驟165、判斷所述分段報文5所在的傳輸流已存在當前串模式的流狀態(tài)信息,則將保存的Pkt內(nèi)容和分段報文5內(nèi)容合二為一,由于Pkt字段為空,因此結(jié)合后的報文仍為分段報文5,作為目標分段報文;步驟166、根據(jù)匹配單元A對目標分段報文進行匹配,具體為在目標分段報文5中“1”的位置起尋找“abc”,結(jié)果完全不匹配;步驟167、根據(jù)所述分段報文5的長度信息,修改所述匹配單元A中匹配開始位置信息和匹配結(jié)束位置信息,具體為將匹配開始位置信息修改為“1”,代表從下一報文首字符起進行匹配,匹配結(jié)束位置信息修改為12-6=6,即原來的匹配結(jié)束位置信息減去已檢測的字符個數(shù)6;所述匹配單元A匹配結(jié)束;步驟168、根據(jù)下一個匹配單元C3進行目標分段報文的匹配,即在1-9之間進行“ghk”的匹配,結(jié)果為完全匹配;步驟169、所述匹配單元C3匹配結(jié)束返回模式匹配成功指令;步驟170、刪除當前串模式的流狀態(tài)信息,即刪除全部匹配單元,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束。
      在本實施例中,顯然C1、C2和C3對應著當前串模式的最后規(guī)則即在匹配到B的位置偏移3開始,長度為8的內(nèi)容中搜索“ghk”,因此當C3匹配成功后,釋放當前流狀態(tài)信息;如果對于最終C3也未匹配成功的情況,則在當前傳輸流結(jié)束,或者全部匹配單元的開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍時,也可作為刪除全部的匹配單元的條件。
      在本實施例中,采用的是對匹配單元分別執(zhí)行刪除操作,包括步驟139、152、157、160和163;還可以采用刪除該匹配單元所記錄的內(nèi)容來進行;也可通過標識不再對該匹配單元進行匹配的方式來避免重復勞動,這種兩種方式雖然會占用一定的內(nèi)存空間,但有利于保證匹配單元的連續(xù)性。
      本發(fā)明提供了第二種兼顧匹配策略的處理分段報文串模式匹配的方法,其實施例參見圖6,包括以下步驟步驟201、當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則執(zhí)行步驟203,否則執(zhí)行步驟202;步驟202、對所述傳輸流初始化當前串模式的流狀態(tài)信息,然后執(zhí)行步驟203;步驟203、對所述目標分段報文執(zhí)行串模式匹配的步驟,包括2031、獲取流狀態(tài)信息中記錄的一個匹配單元,這種獲取可以是按照流狀態(tài)信息中匹配單元記錄的順序獲取,也可以是隨機獲?。患僭O(shè)是流狀態(tài)信息初始化完成后的第一次對目標分段報文進行處理,那么顯然流狀態(tài)信息中僅有一個匹配單元能夠被獲取;2032、對分段報文與流狀態(tài)信息中預存的字符進行結(jié)合處理為目標分段報文,清空所述流狀態(tài)信息中的預存字符;2033、對所述目標分段報文與所述匹配單元進行匹配,如果匹配完全成功則執(zhí)行步驟2034,如果所述目標分段報文至少一個后綴字符與所述匹配單元字符串對應數(shù)目的前綴字符匹配成功,則執(zhí)行步驟2036,如果匹配完全不成功則執(zhí)行步驟2037;2034、判斷所述匹配單元是否為對應當前串模式最后規(guī)則的匹配單元,是則刪除當前串模式的流狀態(tài)信息,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則執(zhí)行步驟2035;在本實施例中,采取了當前串模式匹配成功后即行刪除流狀態(tài)信息的操作,以節(jié)約系統(tǒng)資源。
      步驟2035、根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟2033;2036、在所述匹配單元中預存該后綴字符,然后執(zhí)行步驟2037;因為是對每一分段報文進行分別的匹配,因此動態(tài)變化的預存字符能夠保證不丟失匹配信息。
      2037、根據(jù)所述分段報文的長度信息,修改所述匹配單元中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;2038、檢查是否存在其它匹配單元,是則重新執(zhí)行步驟2031,否則對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      為了避免存儲過多的信息,步驟2037還可以包括對修改后的匹配單元中匹配開始位置信息和匹配結(jié)束位置信息進行判斷,如果該匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍,則刪除該匹配單元所記錄的內(nèi)容或者刪除該匹配單元。例如,當匹配開始位置信息調(diào)整之后為0,則說明不可能再進行下一分段報文的匹配,則刪除該匹配單元即可。
      同樣的,當傳輸流結(jié)束時,刪除所述串模式的流狀態(tài)信息;或者,當所述串模式的全部匹配單元的匹配開始位置信息或匹配結(jié)束位置信息都超出有效檢測范圍,則刪除所述串模式的流狀態(tài)信息,而且,對匹配開始位置信息或匹配結(jié)束位置信息進行檢測較對整個流進行檢測更為靈敏,有利于流狀態(tài)信息的隨時刪除,釋放空間。
      可以看出,就本發(fā)明所提供的第二種兼顧匹配策略的處理分段報文串模式匹配的方法而言,除了進行預存字符結(jié)合的次序和字符預存的位置發(fā)生變化以外,與所提供的第一種串模式匹配方法相同。
      本發(fā)明還提供了第三種兼顧匹配策略的處理分段報文串模式匹配的方法,是以狀態(tài)樹的方式對流狀態(tài)信息進行組織。由于狀態(tài)樹本身的繼承關(guān)系清晰,因此有利于識別和處理。具體包括當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的狀態(tài)樹,是則對所述分段報文與所述狀態(tài)樹根節(jié)點中預存的字符進行結(jié)合處理為目標分段報文,并清空所述根節(jié)點中預存的字符,然后對所述目標分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的狀態(tài)樹,然后設(shè)置所述分段報文為目標分段報文并執(zhí)行串模式匹配的步驟。
      其中,對所述目標分段報文執(zhí)行串模式匹配的步驟包括對所述目標分段報文進行狀態(tài)樹的廣度遍歷,根據(jù)每一匹配單元節(jié)點,對所述目標分段報文分別執(zhí)行步驟31、對所述目標分段報文進行匹配,如果匹配完全成功則執(zhí)行步驟32,如果所述目標分段報文至少一個后綴字符與所述匹配單元節(jié)點中字符串對應數(shù)目的前綴字符匹配成功則執(zhí)行步驟34,如果匹配完全不成功則執(zhí)行步驟35;步驟32、判斷所述匹配單元節(jié)點是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則執(zhí)行步驟33;步驟33、在所述狀態(tài)樹中為所述匹配單元節(jié)點添加一子節(jié)點,該子節(jié)點中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟31;步驟34、在所述根節(jié)點中預存該后綴字符,然后執(zhí)行步驟35;步驟35、根據(jù)所述分段報文的長度信息,修改所述匹配單元節(jié)點中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點遍歷結(jié)束;當所述每一匹配單元節(jié)點廣度遍歷結(jié)束后,對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      其中,對所述傳輸流初始化當前串模式的狀態(tài)樹包括設(shè)置根節(jié)點作為當前串模式的流狀態(tài)信息并設(shè)置記錄預存字符的指定單元,所述根節(jié)點為首個匹配單元節(jié)點,至少包記錄進行所述串模式首個規(guī)則匹配的匹配開始位置信息和匹配結(jié)束位置信息。
      為了避免匹配信息的丟失,所述步驟33中,在所述根節(jié)點中預存該后綴字符包括檢查所述根節(jié)點中是否存在預存的字符,是則對所述后綴字符和所述預存字符進行比較,對字符數(shù)目較多的字符進行預存,并在當前匹配單元節(jié)點中記錄所保存字符的相對位置;否則直接預存該后綴字符,并在當前匹配單元節(jié)點中記錄所保存字符的相對位置。
      或者,預存該后綴字符包括將所述字符保存在預設(shè)的字節(jié)區(qū)內(nèi),在所述根節(jié)點中保存到該字節(jié)區(qū)的指針,并在當前匹配單元節(jié)點中記錄所保存字符的相對位置。
      所述步驟34還包括對修改后的匹配單元節(jié)點中匹配開始位置信息和匹配結(jié)束位置信息進行判斷,如果該匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍,則判斷所述匹配單元節(jié)點的子節(jié)點是否為空,是則刪除該匹配單元節(jié)點,否則標識該匹配單元節(jié)點不再進行匹配或者刪除該匹配單元節(jié)點所記錄的內(nèi)容。
      進一步的,為了減小資源開銷,還包括刪除該匹配單元節(jié)點時,判斷其父節(jié)點是否不再進行匹配或者無記錄內(nèi)容,是則刪除該匹配單元節(jié)點的父節(jié)點。
      進一步的,為了釋放緩存,還包括當前串模式匹配成功時,或者當傳輸流結(jié)束時,或者所述串模式的全部節(jié)點中匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍時,刪除所述串模式的狀態(tài)樹。
      參見圖7,為上述兼顧匹配策略的處理分段報文串模式匹配的方法示意圖,這里對兩個流進行了圖示,其中對流ID為123的傳輸流給出了按照本發(fā)明所提供的狀態(tài)樹執(zhí)行的圖示,而對流ID為456的傳輸流,僅給出了根節(jié)點的示意圖。通過本圖示也可以看出,本發(fā)明所提供的兼顧匹配策略的處理分段報文串模式匹配的方法,對于不同的流以及不同的串模式,彼此之間不發(fā)生干擾。就本發(fā)明的狀態(tài)樹而言,表現(xiàn)出來的就是不同的樹之間獨立。
      進一步的,圖7中的匹配單元節(jié)點中都記錄了匹配開始位置信息和匹配結(jié)束位置信息,以及該匹配單元節(jié)點進行匹配的規(guī)則。對任一分段報文進行廣度遍歷時,根據(jù)根節(jié)點進行規(guī)則A的匹配;根據(jù)二級節(jié)點,進行規(guī)則B的匹配;根據(jù)三級節(jié)點,進行規(guī)則C的匹配。下面,就以圖3所提供的分段報文為例,以狀態(tài)樹動態(tài)變化的方式加以說明。
      如圖8A所示,接收到分段報文1,判斷該分段報文所在的傳輸流不存在當前串模式ABC的流狀態(tài)信息,對所述傳輸流初始化當前串模式的流狀態(tài)信息,包括設(shè)置根節(jié)點,其中記錄規(guī)則A“abc”的匹配開始位置信息“1”和匹配結(jié)束位置信息“53”;還包括設(shè)置記錄預存字符的指定單元,在本實施例中是在根節(jié)點中設(shè)置專門的一個字節(jié)Pkt,此時Pkt為空,然后設(shè)置所述分段報文1為目標分段報文。
      參見8B,對目標分段報文進行廣度遍歷,具體為根據(jù)根節(jié)點對目標分段報文進行匹配,具體為在報文1中偏移3的位置尋找“abc”,結(jié)果未完全匹配;但該分段報文1的最后一個字符為“a”,有可能和下一個報文組合為目標字符串’abc’,故需要拷貝保留該字符到Pkt中,同時記錄相對位置信息1;根據(jù)所述分段報文1的長度信息,修改所述根節(jié)點中匹配開始位置信息和匹配結(jié)束位置信息,具體為將匹配開始位置信息修改為“1”,代表從下一報文首字符起進行匹配,匹配結(jié)束位置信息修改為“45”,即原來的匹配結(jié)束位置信息減去偏移值和已檢測的字符個數(shù)。分段報文1的串模式匹配結(jié)束。
      參見圖8C,接收分段報文2進行廣度遍歷,具體為判斷所述分段報文2所在的傳輸流已存在當前串模式的流狀態(tài)信息,則將保存的Pkt內(nèi)容“a”和分段報文2內(nèi)容合二為一,并清空該Pkt字段,將結(jié)合后的報文“abcokabcddrtdef”作為目標分段報文;然后對目標分段報文進行匹配,具體為在目標分段報文2中“1”的位置起尋找“abc”,結(jié)果完全匹配;在所述狀態(tài)樹中為所述根節(jié)點添加一子節(jié)點B1,包括記錄進行所述串模式中規(guī)則B匹配的匹配開始位置信息1+3+4=8和匹配結(jié)束位置信息8+10=18;然后在所述目標分段報文中匹配完全成功的位置之后,即從字符4開始,重新對目標分段報文執(zhí)行該字符串“abc”的匹配,結(jié)果完全匹配,因此,又在所述狀態(tài)樹中為所述根節(jié)點添加一子節(jié)點B2,包括記錄進行所述串模式中規(guī)則B匹配的匹配開始位置信息6+3+4=13和匹配結(jié)束位置信息13+10=23;根據(jù)所述分段報文的長度信息,修改所述匹配單元A中匹配開始位置信息和匹配結(jié)束位置信息,具體為將匹配開始位置信息修改為“1”,代表從下一報文首字符起進行匹配,匹配結(jié)束位置信息修改為“30”,即原來的匹配結(jié)束位置信息減去已檢測的字符個數(shù)15;所述匹配單元A匹配結(jié)束,即第一行的廣度遍歷完成。
      參見圖8D,由于出現(xiàn)了兩個新的匹配單元節(jié)點B1和B2,因此需要進行第二行子節(jié)點的遍歷,遍歷的結(jié)果為匹配單元節(jié)點B1新增了子節(jié)點C1,匹配單元節(jié)點B2新增了子節(jié)點C2,同時B1和B2的匹配開始位置信息和匹配結(jié)束位置信息都發(fā)生了變化。對于分段報文2遍歷完成。
      參見圖8E,接收分段報文3進行廣度遍歷,在對根節(jié)點的遍歷中,添加了新的匹配單元節(jié)點B3,并對根節(jié)點的匹配開始位置信息和匹配結(jié)束位置信息進行調(diào)節(jié)。
      參見圖8F,對二級匹配單元節(jié)點的遍歷中,未產(chǎn)生新的子節(jié)點,原匹配單元節(jié)點B1、B2的匹配開始位置信息和匹配結(jié)束位置信息發(fā)生變化,其中,由于B1的匹配結(jié)束位置信息超出有效檢測范圍,可以標識不再對其進行匹配;對三級匹配單元節(jié)點的遍歷中,C1和C2的匹配開始位置信息和匹配結(jié)束位置信息發(fā)生變化。
      其中,對于超出有效檢測范圍的處理步驟包括判斷該匹配單元節(jié)點B1是否存在子節(jié)點,結(jié)果為存在子節(jié)點C1,因此不能進行該匹配單元節(jié)點B1的刪除,而是清除記錄內(nèi)容或者標識不再對其進行匹配;本實施例中顯示了標識不再匹配的情況以及清除記錄內(nèi)容(全部歸零)的情況。
      參見圖8G,接收分段報文4進行廣度遍歷,在對一級匹配單元節(jié)點的遍歷中,對根節(jié)點的匹配開始位置信息和匹配結(jié)束位置信息進行調(diào)節(jié);在對二級匹配單元節(jié)點的遍歷中,略過B1,對B2的遍歷后,由于B2的匹配結(jié)束位置信息超出有效檢測范圍,也標識不再對其進行匹配或者刪除所記錄的內(nèi)容,對B3的遍歷新增了子節(jié)點C3,由于B3的匹配結(jié)束位置信息超出有效檢測范圍,因此也標識不再對其進行匹配或者刪除所記錄的內(nèi)容。
      參見8H,在對三級匹配單元節(jié)點的遍歷中,對于針對分段報文4的C1、C2和C3進行遍歷,分別調(diào)整其匹配開始位置信息和匹配結(jié)束位置信息;由于C1的匹配開始和結(jié)束位置信息超出有效檢測范圍,且其所在的路徑上節(jié)點都無需進行遍歷,因此,刪除該路徑。其中,進行路徑刪除的具體操作為判斷匹配單元節(jié)點C1不存在子節(jié)點,刪除該匹配單元節(jié)點C1;進一步判斷該匹配單元節(jié)點C1的父節(jié)點B1已標識為不再進行匹配或者記錄為零,則刪除該匹配單元節(jié)點B1。
      且,由于C2的匹配開始和結(jié)束位置信息超出有效檢測范圍,因此標識不再對其進行匹配或者刪除所記錄的內(nèi)容。當然,由于其不具有子節(jié)點,因此也可采用刪除C2的操作。
      參見8I,接收分段報文5進行廣度遍歷,在對一級匹配單元節(jié)點的遍歷中,對根節(jié)點的匹配開始位置信息和匹配結(jié)束位置信息進行調(diào)節(jié);由于二級節(jié)點都無需進行遍歷,因此直接進行三級節(jié)點的遍歷,具體為對C3的遍歷,由于C3匹配了“ghk”,因此串模式匹配成功,釋放流信息即刪除全部的匹配單元。
      上面給出了對于圖3所示報文進行處理的分步驟的狀態(tài)示意圖。對于本方法而言,其完整的流程如圖9所示。
      本發(fā)明還提供了第四種兼顧匹配策略的處理分段報文串模式匹配的方法,同樣是以狀態(tài)樹的方式對流狀態(tài)信息進行組織,但是在每一個節(jié)點中分別設(shè)置字段,用于保存預存字符。當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的狀態(tài)樹,是則直接對所述分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的狀態(tài)樹,然后執(zhí)行串模式匹配的步驟;對所述分段報文執(zhí)行串模式匹配的步驟包括按照所述狀態(tài)樹進行廣度遍歷,對于狀態(tài)樹中任一匹配單元節(jié)點,將所述分段報文分別與該節(jié)點中預存的字符進行結(jié)合處理為目標分段報文,清空所述流狀態(tài)信息中的預存字符,并執(zhí)行步驟41、對所述目標分段報文進行匹配,如果所述目標分段報文至少一個后綴字符與所述匹配單元節(jié)點中字符串對應數(shù)目的前綴字符匹配成功則執(zhí)行步驟44,如果匹配完全不成功則執(zhí)行步驟45;步驟42、判斷所述匹配單元節(jié)點是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則執(zhí)行步驟43;步驟43、在所述狀態(tài)樹中為所述匹配單元節(jié)點添加一子節(jié)點,該子節(jié)點中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟41;步驟44、在所述匹配單元節(jié)點中預存該后綴字符,然后執(zhí)行步驟45;步驟45、根據(jù)所述分段報文的長度信息,修改所述匹配單元節(jié)點中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點遍歷結(jié)束;當所述每一匹配單元節(jié)點廣度遍歷結(jié)束后,對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。參見圖10,為該串模式匹配方法的狀態(tài)樹示意圖。
      本發(fā)明還提供了第五種兼顧匹配策略的處理分段報文串模式匹配的方法,當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則對所述分段報文與所述流狀態(tài)信息中預存的字符進行結(jié)合處理為目標報文,然后對所述目標報文執(zhí)行串模式匹配的步驟;否則直接設(shè)置所述分段報文為目標報文并執(zhí)行串模式匹配的步驟;對所述目標報文執(zhí)行串模式匹配的步驟包括
      步驟51、將第一匹配規(guī)則作為當前匹配規(guī)則;步驟52、查詢所述目標報文是否與串模式的當前匹配規(guī)則匹配,是則執(zhí)行步驟53;否則執(zhí)行步驟54;步驟53、判斷所述當前匹配規(guī)則是否為當前模式的最后一個規(guī)則,是則當前串模式匹配成功,釋放流狀態(tài)信息并結(jié)束,否則將下一匹配規(guī)則作為當前匹配規(guī)則,重新執(zhí)行步驟52;步驟54、判斷在所述傳輸流是否傳輸完畢,是則釋放所述流狀態(tài)信息并結(jié)束,否則執(zhí)行步驟55;步驟55、在流狀態(tài)信息中更新保存所述目標報文的字符進行下一分段報文的接收。
      參見圖11,為第五種兼顧匹配策略的處理分段報文串模式匹配的方法流程示意圖。顯然,就第五種兼顧匹配策略的處理分段報文串模式匹配的方法而言,如果不匹配前一個規(guī)則,就不再進行后續(xù)匹配;而是接收下一分段并組合預存字符(即在先的全部分段報文)后,重新從第一匹配規(guī)則開始匹配。
      可以看出,本發(fā)明所提供的五種方法都能夠?qū)崿F(xiàn)基于分段報文的串模式匹配,在摒棄了常規(guī)的流重組方法的前提下能夠協(xié)同BM、BF等兼顧匹配策略的模式匹配方法進行串模式匹配,從而避免了對協(xié)議棧的破壞以及減少了系統(tǒng)內(nèi)存的占用;不僅提高了系統(tǒng)整體性能,不增加各種應用服務(wù)的時間延遲,而且由于流重組的避免,從理論上避免了漏報的可能。但上述五種方法彼此之間存在差異,前四種方法較為相似,僅在預存字符的設(shè)置或者匹配單元的組織上存在差異,應該說,第一、三種方法僅需要拷貝極少的數(shù)據(jù)(預存字符),第二、四種方法相對第一、三種而言,需要拷貝的數(shù)據(jù)(預存字符)稍多一些,但仍遠小于目前的分段報文緩存,因此,從系統(tǒng)性能角度考慮,具有極大的改進。但第五種方法較前四種方法而言,技術(shù)方案極為簡單,但需要拷貝比較多的數(shù)據(jù)。
      本發(fā)明還提供了一種兼顧匹配策略的處理分段報文串模式匹配的裝置,參見圖12,包括流狀態(tài)信息設(shè)置模塊1,用于針對任一傳輸流,動態(tài)記錄該傳輸流每一串模式的流狀態(tài)信息,所述流狀態(tài)信息至少包括相對不同的分段報文動態(tài)變化的預存字符和匹配單元;分段報文處理模塊2,用于接收分段報文,并從所述流狀態(tài)信息設(shè)置模塊獲取預存字符,將所述分段報文與所述預存字符進行結(jié)合處理為目標分段報文;匹配處理模塊3,分別與所述流狀態(tài)信息設(shè)置模塊1和所述分段報文處理模塊2連接,用于根據(jù)所述流狀態(tài)信息設(shè)置模塊提供的匹配單元,對所述目標分段報文進行匹配;對于完全匹配的情況,指令所述流狀態(tài)信息設(shè)置模塊1記錄下一匹配單元,對于目標分段報文至少一個后綴字符與所述匹配單元字符串的對應數(shù)目的前綴字符匹配成功的情況,指令所述流狀態(tài)信息設(shè)置模塊1將所述后綴字符作為預存字符進行記錄。
      當完全匹配或者傳輸流老化結(jié)束或者超出匹配范圍時,匹配處理模塊3還用于輸出匹配結(jié)果。
      參見圖13,為上述裝置的實施例,其中,所述流狀態(tài)信息設(shè)置模塊1設(shè)有控制單元1A和多個匹配單元1B1~1BN,其中,N為匹配單元的個數(shù),且為動態(tài)變化的;所述控制單元1A用于接收匹配處理模塊3的指令并發(fā)送預存字符給分段報文處理模塊2,添加、刪除匹配單元,以及動態(tài)變更匹配單元中的匹配開始位置信息和匹配結(jié)束位置信息;其中,首個匹配單元1B1還用于記錄預存字符,或者,任一匹配單元1B1~1BN還用于記錄該匹配單元進行匹配時的預存字符。
      為了便于組織,上述匹配單元1B1~1BN可以按照狀態(tài)樹的方式連接,一下級匹配單元節(jié)點被添加,用于記錄與其上級匹配單元節(jié)點的成功匹配,其中,初始化的首個匹配單元節(jié)點為根節(jié)點。
      所述匹配處理模塊3包括流狀態(tài)信息獲取單元3A、匹配執(zhí)行單元3B和指令發(fā)送單元3C;所述流狀態(tài)信息獲取單元3A用于獲取待匹配的匹配單元、預存字符和分段報文信息,由所述匹配執(zhí)行單元3B進行匹配;所述匹配執(zhí)行單元3B將匹配結(jié)果發(fā)送給所述指令發(fā)送單元3C,由所述指令發(fā)送單元3C根據(jù)匹配情況和報文變化情況,向所述流狀態(tài)信息設(shè)置模塊1發(fā)出添加、刪除或者變更匹配單元1B1~1BN的指令,以及向分段報文處理模塊2發(fā)送接收下一分段報文的指令。
      綜上所述,本發(fā)明所提供的方法和裝置通過保存流狀態(tài)替代緩存所有報文,由于該緩存內(nèi)容是每一個匹配規(guī)則中字符串的一部分,因此,緩存報文的預存字段無需很長,其最大的長度規(guī)格為串模式規(guī)則中最長的字符串即可。顯然,本發(fā)明所提供的方法和裝置在避免了流重組對協(xié)議棧的破壞的同時,也避免了內(nèi)存大量占用帶來的系統(tǒng)性能降低,以及避免了緩存對業(yè)務(wù)質(zhì)量的影響。
      本發(fā)明所提供的方法和裝置進一步可以采用狀態(tài)樹的方式組織,進行廣度遍歷,能夠動態(tài)刪除本節(jié)點或者所在路徑,達到內(nèi)存的進一步釋放。
      由于保存的流狀態(tài)中包括但不限于匹配開始位置信息和匹配結(jié)束位置信息,本領(lǐng)域技術(shù)人員能夠根據(jù)實際需要設(shè)置,具有很大的擴展性。
      最后應說明的是以上實施例僅用以說明本發(fā)明的技術(shù)方案而非對其進行限制,盡管參照較佳實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應當理解其依然可以對本發(fā)明的技術(shù)方案進行修改或者等同替換,而這些修改或者等同替換亦不能使修改后的技術(shù)方案脫離本發(fā)明技術(shù)方案的精神和范圍。
      權(quán)利要求
      1.一種兼顧匹配策略的處理分段報文串模式匹配的方法,其特征在于當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則對所述分段報文與所述流狀態(tài)信息中預存的字符進行結(jié)合處理為目標分段報文,并清空所述流狀態(tài)信息中預存的字符,然后對所述目標分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的流狀態(tài)信息,然后設(shè)置所述分段報文為目標分段報文并執(zhí)行串模式匹配的步驟。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于對所述目標分段報文執(zhí)行串模式匹配的步驟包括按照所述流狀態(tài)信息中記錄的每一匹配單元,對所述目標分段報文分別執(zhí)行步驟11、根據(jù)任一匹配單元,對所述目標分段報文進行匹配,如果匹配完全成功則執(zhí)行步驟12,如果所述目標分段報文至少一個后綴字符與所述匹配單元字符串對應數(shù)目的前綴字符匹配成功則執(zhí)行步驟13,如果匹配完全不成功則執(zhí)行步驟14;步驟12、判斷所述匹配單元是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟11;步驟13、在所述流狀態(tài)信息中預存該后綴字符,然后執(zhí)行步驟14;步驟14、根據(jù)所述分段報文的長度信息,修改所述匹配單元中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;當所述每一匹配單元匹配結(jié)束后,對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于對所述分段報文與所述流狀態(tài)信息的指定單元中預存的字符進行結(jié)合處理為目標分段報文包括判斷所述流狀態(tài)信息中是否存在預存的字符,是則將所述字符作為前綴,與所述分段報文結(jié)合起來設(shè)置為目標分段報文,否則將所述分段報文直接設(shè)置為目標分段報文。
      4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于對所述傳輸流初始化當前串模式的流狀態(tài)信息包括記錄首個匹配單元作為當前串模式的流狀態(tài)信息,并設(shè)置記錄預存字符的指定單元,所述匹配單元中至少包括進行所述串模式首個規(guī)則匹配的匹配開始位置信息和匹配結(jié)束位置信息。
      5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于所述步驟13中,在所述流狀態(tài)信息中預存該后綴字符包括檢查所述流狀態(tài)信息中是否存在預存的字符,是則對所述后綴字符和所述預存字符進行比較,對字符數(shù)目較多的字符進行預存,并在當前匹配單元中記錄所保存字符的相對位置;否則直接預存該后綴字符,并在當前匹配單元中記錄所保存字符的相對位置。
      6.根據(jù)權(quán)利要求5所述的方法,其特征在于預存該后綴字符包括將所述字符保存在預設(shè)的字節(jié)區(qū)內(nèi),在所述流狀態(tài)信息中保存到該字節(jié)區(qū)的指針,并在當前匹配單元中記錄以及所保存字符的相對位置。
      7.根據(jù)權(quán)利要求1或2所述的方法,其特征在于所述步驟14還包括對修改后的匹配單元中匹配開始位置信息和匹配結(jié)束位置信息進行判斷,如果該匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍,則刪除該匹配單元。
      8.根據(jù)權(quán)利要求1或2所述的方法,其特征在于當前串模式匹配成功時,或者傳輸流結(jié)束時,或者所述串模式的全部匹配單元的匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍時,還包括刪除所述串模式的流狀態(tài)信息的步驟。
      9.一種兼顧匹配策略的處理分段報文串模式匹配的方法,其特征在于當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則直接對所述分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的流狀態(tài)信息,然后對所述分段報文執(zhí)行串模式匹配的步驟;對所述分段報文執(zhí)行串模式匹配的步驟包括按照所述流狀態(tài)信息中記錄的每一匹配單元,將所述分段報文分別與該匹配單元中預存的字符進行結(jié)合處理為目標分段報文,清空所述流狀態(tài)信息中的預存字符,并執(zhí)行步驟21、根據(jù)任一匹配單元,對所述目標分段報文進行匹配,如果匹配完全成功則執(zhí)行步驟22,如果所述目標分段報文至少一個后綴字符與所述匹配單元字符串對應數(shù)目的前綴字符匹配成功則執(zhí)行步驟23,如果匹配完全不成功則執(zhí)行步驟24;步驟22、判斷所述匹配單元是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟21;步驟23、在所述匹配單元中預存該后綴字符,然后執(zhí)行步驟24;步驟24、根據(jù)所述分段報文的長度信息,修改所述匹配單元中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;當所述每一匹配單元匹配結(jié)束后,對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      10.一種兼顧匹配策略的處理分段報文串模式匹配的方法,其特征在于當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的狀態(tài)樹,是則對所述分段報文與所述狀態(tài)樹根節(jié)點中預存的字符進行結(jié)合處理為目標分段報文,并清空所述根節(jié)點中預存的字符,然后對所述目標分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的狀態(tài)樹,然后設(shè)置所述分段報文為目標分段報文并執(zhí)行串模式匹配的步驟。
      11.根據(jù)權(quán)利要求10所述的方法,其特征在于對所述目標分段報文執(zhí)行串模式匹配的步驟包括對所述目標分段報文進行狀態(tài)樹的廣度遍歷,根據(jù)每一匹配單元節(jié)點,對所述目標分段報文分別執(zhí)行步驟31、對所述目標分段報文進行匹配,如果匹配完全成功則執(zhí)行步驟32,如果所述目標分段報文至少一個后綴字符與所述匹配單元節(jié)點中字符串對應數(shù)目的前綴字符匹配成功則執(zhí)行步驟33,如果匹配完全不成功則執(zhí)行步驟34;步驟32、判斷所述匹配單元節(jié)點是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則在所述狀態(tài)樹中為所述匹配單元節(jié)點添加一子節(jié)點,該子節(jié)點中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟31;步驟33、在所述根節(jié)點中預存該后綴字符,然后執(zhí)行步驟34;步驟34、根據(jù)所述分段報文的長度信息,修改所述匹配單元節(jié)點中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點遍歷結(jié)束;當所述每一匹配單元節(jié)點廣度遍歷結(jié)束后,對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      12.根據(jù)權(quán)利要求10或11所述的方法,其特征在于對所述傳輸流初始化當前串模式的狀態(tài)樹包括設(shè)置根節(jié)點作為當前串模式的流狀態(tài)信息并設(shè)置記錄預存字符的指定單元,所述根節(jié)點為首個匹配單元節(jié)點,至少包括記錄進行所述串模式首個規(guī)則匹配的匹配開始位置信息和匹配結(jié)束位置信息。
      13.根據(jù)權(quán)利要求10或11所述的方法,其特征在于所述步驟33中,在所述根節(jié)點中預存該后綴字符包括檢查所述根節(jié)點中是否存在預存的字符,是則對所述后綴字符和所述預存字符進行比較,對字符數(shù)目較多的字符進行預存,并在當前匹配單元節(jié)點中記錄所保存字符的相對位置;否則直接預存該后綴字符,并在當前匹配單元節(jié)點中記錄所保存字符的相對位置。
      14.根據(jù)權(quán)利要求13所述的方法,其特征在于預存該后綴字符包括將所述字符保存在預設(shè)的字節(jié)區(qū)內(nèi),在所述根節(jié)點中保存到該字節(jié)區(qū)的指針,并在當前匹配單元節(jié)點中記錄所保存字符的相對位置。
      15.根據(jù)權(quán)利要求10或11所述的方法,其特征在于所述步驟34還包括對修改后的匹配單元節(jié)點中匹配開始位置信息和匹配結(jié)束位置信息進行判斷,如果該匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍,則判斷所述匹配單元節(jié)點的子節(jié)點是否為空,是則刪除該匹配單元節(jié)點,否則標識該匹配單元節(jié)點不再進行匹配或者刪除該匹配單元節(jié)點所記錄的內(nèi)容。
      16.根據(jù)權(quán)利要求15所述的方法,其特征在于刪除匹配單元節(jié)點之后還包括判斷所述匹配單元節(jié)點的父節(jié)點狀態(tài),如果為不再進行匹配或者所記錄的內(nèi)容為空,則刪除所述父節(jié)點。
      17.根據(jù)權(quán)利要求10或11所述的方法,其特征在于當前串模式匹配成功時,或者傳輸流結(jié)束時,或者所述串模式的全部節(jié)點中匹配開始位置信息或匹配結(jié)束位置信息超出有效檢測范圍時,還包括刪除所述串模式的狀態(tài)樹的步驟。
      18.一種兼顧匹配策略的處理分段報文串模式匹配的方法,其特征在于當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的狀態(tài)樹,是則直接對所述分段報文執(zhí)行串模式匹配的步驟;否則對所述傳輸流初始化當前串模式的狀態(tài)樹,然后執(zhí)行串模式匹配的步驟;對所述分段報文執(zhí)行串模式匹配的步驟包括按照所述狀態(tài)樹進行廣度遍歷,對于狀態(tài)樹中任一匹配單元節(jié)點,將所述分段報文分別與該節(jié)點中預存的字符進行結(jié)合處理為目標分段報文,清空所述流狀態(tài)信息中的預存字符,并執(zhí)行步驟41、對所述目標分段報文進行匹配,如果所述目標分段報文至少一個后綴字符與所述匹配單元節(jié)點中字符串對應數(shù)目的前綴字符匹配成功則執(zhí)行步驟43,如果匹配完全不成功則執(zhí)行步驟44;步驟42、判斷所述匹配單元節(jié)點是否為對應當前串模式最后規(guī)則的匹配單元,是則當前串模式匹配成功,對當前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則在所述狀態(tài)樹中為所述匹配單元節(jié)點添加一子節(jié)點,該子節(jié)點中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標分段報文中匹配完全成功的位置之后,重新對所述目標分段報文執(zhí)行步驟41;步驟43、在所述匹配單元節(jié)點中預存該后綴字符,然后執(zhí)行步驟44;步驟44、根據(jù)所述分段報文的長度信息,修改所述匹配單元節(jié)點中匹配開始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點遍歷結(jié)束;當所述每一匹配單元節(jié)點廣度遍歷結(jié)束后,對所述目標分段報文執(zhí)行串模式匹配的步驟結(jié)束。
      19.一種兼顧匹配策略的處理分段報文串模式匹配的方法,其特征在于當接收到任一分段報文時,判斷所述分段報文所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則對所述分段報文與所述流狀態(tài)信息中預存的字符進行結(jié)合處理為目標報文,然后對所述目標報文執(zhí)行串模式匹配的步驟;否則直接設(shè)置所述分段報文為目標報文并執(zhí)行串模式匹配的步驟;對所述目標報文執(zhí)行串模式匹配的步驟包括步驟51、將第一匹配規(guī)則作為當前匹配規(guī)則;步驟52、查詢所述目標報文是否與串模式的當前匹配規(guī)則匹配,是則執(zhí)行步驟53;否則執(zhí)行步驟54;步驟53、判斷所述當前匹配規(guī)則是否為當前模式的最后一個規(guī)則,是則當前串模式匹配成功,釋放流狀態(tài)信息并結(jié)束,否則將下一匹配規(guī)則作為當前匹配規(guī)則,重新執(zhí)行步驟52;步驟54、判斷在所述傳輸流是否傳輸完畢,是則釋放所述流狀態(tài)信息并結(jié)束,否則執(zhí)行步驟55;步驟55、在流狀態(tài)信息中更新保存所述目標報文的字符進行下一分段報文的接收。
      20.一種兼顧匹配策略的處理分段報文串模式匹配的裝置,其特征在于包括流狀態(tài)信息設(shè)置模塊,用于針對任一傳輸流,動態(tài)記錄該傳輸流每一串模式的流狀態(tài)信息,所述流狀態(tài)信息至少包括相對不同的分段報文動態(tài)變化的預存字符和匹配單元;分段報文處理模塊,用于接收分段報文,并從所述流狀態(tài)信息設(shè)置模塊獲取預存字符,將所述分段報文與所述預存字符進行結(jié)合處理為目標分段報文;匹配處理模塊,分別與所述流狀態(tài)信息設(shè)置模塊和所述分段報文處理模塊連接,用于根據(jù)所述流狀態(tài)信息設(shè)置模塊提供的匹配單元,對所述目標分段報文進行匹配;對于完全匹配的情況,指令所述流狀態(tài)信息設(shè)置模塊記錄下一匹配單元,對于目標分段報文至少一個后綴字符與所述匹配單元字符串的對應數(shù)目的前綴字符匹配成功的情況,指令所述流狀態(tài)信息設(shè)置模塊將所述后綴字符作為預存字符進行記錄。
      21.根據(jù)權(quán)利要求20所述的裝置,其特征在于所述流狀態(tài)信息設(shè)置模塊設(shè)有控制單元和多個匹配單元;所述控制單元用于接收匹配處理模塊的指令并發(fā)送預存字符給分段報文處理模塊,添加、刪除匹配單元,以及動態(tài)變更匹配單元中的匹配開始位置信息和匹配結(jié)束位置信息;其中,首個匹配單元還用于記錄預存字符。
      22.根據(jù)權(quán)利要求20所述的裝置,其特征在于所述流狀態(tài)信息設(shè)置模塊設(shè)有控制單元和多個匹配單元;所述控制單元用于接收匹配處理模塊的指令并發(fā)送預存字符給分段報文處理模塊,添加、刪除匹配單元,以及動態(tài)變更匹配單元中的匹配開始位置信息和匹配結(jié)束位置信息;其中,任一匹配單元還用于記錄該匹配單元進行匹配時的預存字符。
      23.根據(jù)權(quán)利要求21或22所述的裝置,其特征在于所述匹配單元按照狀態(tài)樹的方式連接,一下級匹配單元節(jié)點被添加,用于記錄與記錄與其上級匹配單元節(jié)點的成功匹配,其中,初始化的首個匹配單元節(jié)點為根節(jié)點。
      24.根據(jù)權(quán)利要求20所述的裝置,其特征在于所述匹配處理模塊包括流狀態(tài)信息獲取單元、匹配執(zhí)行單元和指令發(fā)送單元;所述流狀態(tài)信息獲取單元用于獲取待匹配的匹配單元、預存字符和分段報文信息,由所述匹配執(zhí)行單元進行匹配;所述匹配執(zhí)行單元將匹配結(jié)果發(fā)送給所述指令發(fā)送單元,由所述指令發(fā)送單元根據(jù)匹配情況和報文變化情況,向所述流狀態(tài)信息設(shè)置模塊發(fā)出添加、刪除或者變更匹配單元的指令,以及向分段報文處理模塊發(fā)送接收下一分段報文的指令。
      全文摘要
      本發(fā)明公開了兼顧匹配策略的處理分段報文串模式匹配的方法,包括接收到任一分段報文時,判斷所在的傳輸流是否已存在當前串模式的流狀態(tài)信息,是則對分段報文與流狀態(tài)信息中預存的字符進行結(jié)合處理為目標分段報文,對其執(zhí)行串模式匹配的步驟;否則對傳輸流初始化當前串模式的流狀態(tài)信息,設(shè)置分段報文為目標分段報文并執(zhí)行串模式匹配的步驟。還公開了分別記錄對應每一匹配單元的后綴字符,以及通過狀態(tài)樹方式組織流狀態(tài)信息等兼顧匹配策略的處理分段報文串模式匹配的方法。還公開了兼顧匹配策略的處理分段報文串模式匹配的裝置。通過本發(fā)明公開的方法及裝置,提高了報文處理的安全性,避免了內(nèi)存的大量占用,克服了網(wǎng)絡(luò)延遲和服務(wù)質(zhì)量下降的問題。
      文檔編號H04L12/66GK101026576SQ20071006288
      公開日2007年8月29日 申請日期2007年1月19日 優(yōu)先權(quán)日2007年1月19日
      發(fā)明者張利達 申請人:杭州華為三康技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1