專利名稱:報文序列查找方法、協議分析引擎和協議分析儀的制作方法
技術領域:
本發明涉及一種信息查找方法和處理器,尤其涉及一種報文序列查找方法、協議分析引擎和協議分析儀。
背景技術:
協議分析儀是一種可以用來捕獲并記錄流經網絡或者其中一部分數據的工具,可以根據適當的RFC或者其他規范來對所捕獲的數據報文進行解碼,顯示其中的內容,方便用戶分析網絡狀態。協議分析儀不僅對于網絡管理和故障檢測而言非常重要,同樣有益于協議的開發和執行、網絡安全和網絡協議學習等等。根據協議分析儀的定義,它包括若干重要的組成部分,其中有嗅探器(sniffer)、 解碼器(decoder)和分析引擎,其中,嗅探器可以用來捕獲網絡報文,解碼器則用來根據特定的規范來對報文進行解碼,而分析引擎則可以用來幫助分析所捕獲的網絡報文,以發現特定的問題、驗證網絡中的特定狀態,所以,也可以將分析引擎稱為協議分析引擎。現有技術中有些協議分析儀可以用來分析特定網絡中的特定問題,比如在防火墻中使用的狀態包過濾技術,但是,此種協議分析儀只可以分析特定的問題,不能普遍適用于其他情況,例如中科網威公司的“長城”防火墻,只能夠根據數據包的源地址、目標地址、協議類型、源端口、目標端口以及網絡接口等數據包進行控制,記錄通過防火墻的連接狀態, 通過連接狀態進行過濾,而網絡中的分析需求各不相同,如果要分析其它的需求,比如分析從源地址到目標地址之間哪個報文丟失、在何處丟失等等其他一些需求時,該分析儀則無法實現該功能。現有技術中還有一些分析儀,針對不同的分析需求,可以使用不同的插件 (plug-in),每個插件都是使用一種程序語言編寫的程序,執行該程序便可以滿足特定的分析需求,但是,因為網絡中所存在的問題各不相同,所以需要準備大量的專用分析插件,而且各個插件還可能使用不同的程序語言,難以在其他的分析儀中重復使用,也增加了維護的負擔。
發明內容
本發明旨在提供一種省去大量專用分析插件的報文序列查找方法、協議分析引擎和協議分析儀。為實現上述目的,本發明提出了一種報文序列查找的方法,根據輸入的過濾條件和所述過濾條件的序列表達式,在捕獲的報文序列中查找并保存匹配的報文序列,所述序列表達式用于在符合所述過濾條件的報文中查找符合特定聯系的報文序列。優選地,還根據輸入的停止條件,與所述過濾條件和所述過濾條件的序列表達式, 在捕獲的報文序列中查找并保存匹配的報文序列,所述停止條件用于限定所述捕獲的報文序列的查找范圍。
優選地,所述過濾條件中包含報文信息,所述報文信息包括報文屬性和/或報文內容。優選地,所述過濾條件中包含使用邏輯運算符組合的不同報文信息。優選地,所述在捕獲的報文序列中查找并保存匹配的報文序列進一步包括找到一條報文序列后,將其保存,并從所述報文序列中第一個匹配的報文之后的報文開始查找其他匹配的報文序列。優選地,還包括將所查找到的報文序列和對應的信息保存成結果文件。優選地,還包括根據輸入的深入分析標準,對所述保存的報文序列進行進一步過濾,所述深入分析標準為所述保存的報文序列信息的表達式,所述報文序列信息包括報文序列屬性和/或報文序列內容。本發明還提供了一種協議分析引擎,包括一個輸入端口和一個分析單元,其中,所述輸入端口,用于接收輸入的過濾條件和所述過濾條件的序列表達式,所述序列表達式用于在符合所述過濾條件的報文中查找符合特定聯系的報文序列,所述分析單元,用于根據所述輸入的過濾條件和所述過濾條件的序列表達式,在捕獲的報文序列中查找并保存匹配的報文序列。優選地,所述輸入端口還用于接收輸入的停止條件,用于限定所述捕獲的報文序列的查找范圍,所述正分析單元用于將所述輸入的過濾條件、過濾條件序列表達式和停止條件,在捕獲的報文序列中查找并保存匹配的報文序列。優選地,所述輸入端口還用于接收輸入的深入分析標準,用于對所述保存的報文序列進行進一步過濾,所述深入分析標準為所述保存的報文序列信息的表達式,所述報文序列信息包括報文序列屬性和/或報文序列內容,所述協議分析引擎還包括一個后續處理單元,用于根據所述深入分析標準,對所述分析單元所查找到的報文序列進行過濾。本發明還提供了一種協議分析儀,包括一個嗅探器和一個解碼器,其中,所述嗅探器用于捕獲網絡報文,所述解碼器用于根據特定的規范來對所捕獲的報文進行解碼,還包括如上任意所述的一種協議分析引擎。本發明還公開了一種信息查找的方法,根據輸入的過濾條件和所述過濾條件的序列表達式,在查找對象中查找并保存匹配的信息序列,所述序列表達式用于在符合所述過濾條件的信息中查找符合特定聯系的信息序列。優選地,所述查找對象為文本、日志文件、用戶行為模型、系統狀況監控結果。本發明還公開了一種處理器,包括一個輸入單元和一個處理單元,所述輸入單元用于接收輸入的過濾條件和所述過濾條件的序列表達式,所述序列表達式用于表示信息之間的特定聯系,所述處理單元用于根據所述過濾條件和所述過濾條件的序列表達式在查找對象中查找并保存匹配的信息序列。可以看出,利用本發明所提供的實施例,用戶只需了解被分析協議的相關知識,通過定義過濾條件(查詢彼此間無聯系的報文)、序列表達式(查詢序列模式)便可以查找到符合要求的報文序列(彼此之間符合一定聯系)。利用不同的輸入可以滿足非常多的分析需求,比如查找報文是如何從源節點傳送到目標節點的,中間用時多少,哪一跳耗時最久,哪一個報文沒有到達目標節點,在哪一個節點處發生丟包。理論上講,通過定義足夠充分的報文序列表達式,所有基于狀態機的復雜協議中的所有事件都可以被查找出來,從而避免了針對每個分析需求單獨設置插件的情況。而且,這種應用還可以擴展到更廣泛的范圍,比如對文本中符合特定聯系的若干字符的查找,還可以用于對日志文件的分析、系統狀態監控、網絡入侵監測和用戶行為建模等等。只需輸入過濾條件和用于在符合所述過濾條件的信息中查找符合特定聯系的信息序列的過濾條件序列表達式,處理器就可以在對象中查找并保存匹配的信息序列。
以下附圖僅旨在于對本發明做示意性說明和解釋,并不限定本發明的范圍。其中,圖1是本發明報文序列查找方法一種實施例的流程示意圖;圖2是本發明報文序列查找方法實施例的一種應用示意圖;圖3是本發明協議分析儀實施例的結構框圖。
具體實施例方式為了對本發明的技術特征、目的和效果有更加清楚的理解,現對照
本發明的具體實施方式
。在本發明的實施例中,根據用戶輸入的過濾條件和所述過濾條件的序列表達式 (表示報文之間的特定聯系,可以用來在符合所述過濾條件的報文中查找符合此特定聯系的報文),在捕獲的報文序列中查找并保存匹配的報文序列(即報文之間符合特定的聯系的一組報文)的結果,然后還可以根據深入分析標準,對所找出的結果進行深入分析,以獲得更準確的結果。如圖1所示的流程示意圖,示出了使用本發明實施例來進行檢索的過程。現在根據圖1并結合圖3予以說明SlO 根據分析需求設置并輸入檢索條件(過濾條件、過濾條件序列表達式、停止條件)。其中,在單獨使用過濾條件時,可以根據報文信息(如報文屬性或者內容)找到一條或者若干條彼此之間沒有聯系的報文,過濾條件可以針對報文的屬性或者預先定義的值的任何數學表達式給出“是”或者“否”的描述,而且,不同的過濾條件之間還可以進行反向引用,即,使用在先的過濾條件所得到的結果,以此來定義在后的過濾條件。比如可以使用以下表達作為過濾條件1、可以使用報文的任何屬性即可以將報文的實質內容作為一項過濾標準,比如判斷報文某一域的值的大小 msg. field2between (valuel,value2),便可以用來查找報文第2個域的值是否大于valuel 且小于Value2的報文;還比如可以使用反向引用,如查找源地址是否為符合第一個過濾條件報文的目標地址的報文:msg. source = M[F1]. destination ;還可以判斷報文某一位或者若干位的值,如msg[5,8] = = OxA,便可以用來查找第5位至第8位為0χΑ(即字符為1010)的報文。2、可以使用正則表達式
即可以將報文的本身內容作為一項過濾標準,而正則表達式可以用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串,在此處,使用正則表達式則可以找到特定的一條符合特定規則的報文,比如ab+c * a,便可以用來查找報文中符合該規則的報文,如包含abbca字符串的報文等等。3、可以使用邏輯運算符來組合過濾條件比如過濾條件1為Fl,過濾條件2為F2,過濾條件3為F3,那么便可以使用Fland F2or F3來表示同時滿足Fl和F2的報文,或者滿足F3的報文。可以看出,利用過濾條件只可以查找出能夠匹配該檢索條件的報文,但是對于查找報文之間存在特定聯系的報文序列則無能為力,所以,我們無法單獨使用上述過濾條件來查找彼此之間有聯系的報文序列。如果需要查找彼此之間存在特定聯系的報文序列,則可以使用過濾條件序列表達式。過濾條件的表達式使用表達式(比如類似于正則表達式的表達式)來對不同的過濾條件進行組合,限定報文之間的聯系,進而可以找到符合要求的報文序列模式,即報文之間滿足特定聯系,比如過濾條件1為F1,過濾條件2為F2,過濾條件3為F3,過濾條件4為F4, 則可以使用Fl (F2 IF3) +F4來表示首先找符合Fl的報文,找到后再找符合F2或F3的報文, 這樣的報文要至少存在一個,最后找符合F4的報文。與過濾條件中可以使用邏輯運算符不同的是,過濾條件序列表達式中使用的是表達式,邏輯運算符只能表示“與”或者“或”,并不能對過濾條件之間的聯系進行限定,而使用表達式,能夠限定過濾條件之間的聯系,比如先后順序、出現次數等等。結合過濾條件和過濾條件序列表達式,便可以對所捕獲的報文進行檢索。在實際使用中,還可以設定停止條件,以便限制一個結果(報文序列)的范圍,比如當找到第一條符合條件的報文后,這個停止條件就開始起作用了,假定停止條件為IOs 或1000個報文內的報文,則如果在所定范圍內(10s,或1000個報文)沒有找到符合條件的報文序列,則停止對該結果的搜索,進行下一次搜索。相應地,輸入停止條件和上述過濾條件、過濾條件序列表達式,也可以進行相應地檢索。可以看出,隨著過濾條件、過濾條件序列表達式、停止條件的不同,所生成的檢索條件也會相應地發生變化,利用上述輸入,用戶可以非常簡便地針對分析需求而設置各種過濾條件,并利用過濾條件序列表達式和停止條件找到滿足需求的報文結果,無需針對單獨的分析需求準備大量的分析程序,也無需針對不同的協議學習不同的程序語言,只需使用一種語言進行簡單的輸入,便可以滿足不同協議、不同場合、不同目的的分析需求,設計簡單直觀,易于后期維護,對設計人員要求較低,不需要學習其他復雜的編程語言。S20:確定目標文件,即捕獲并解碼后的報文序列,這也便是需要使用檢索條件進行檢索的目標對象。捕獲報文序列屬于現有技術,此處不再贅述。當然,SlO與S20之間并無實質上的順序限制,完全可以先執行步驟S20再執行S10,或者二者同時進行。S30 協議分析引擎使用檢索條件在目標文件中檢索,并判斷是否找到一條報文序列結果。S40 如果在步驟S30中沒有找到結果,則說明目標文件中不存在匹配該檢索條件的報文,流程結束。S50 如果在步驟S30中找到一條結果,則將該結果予以保存。
S60:協議分析引擎會再次在目標文件中檢索,并判斷是否還能找到其他結果,在步驟S50找到一條結果后,步驟S60中下一輪的查找程序會在前一結果中第一個匹配的報文之后開始。S70 如果還能查找到結果,則保存該結果,并重新執行步驟S60,查找其他的結S80:如果找不到結果了,則生成一個結果文件,該文件中包含所有查找到的報文序列和對應的信息,比如報文本身、報文在該報文序列中的位置、所匹配的過濾條件、所引用的報文(如果使用反向引用的話)等等。S90 設置深入分析標準來對結果文件進行深入分析。對于得到的結果,用戶還可以設置更為細致的深入分析標準,從而得到更為精確的結果。該深入分析標準是基于過濾結果的表達式,可以對報文序列屬性或者內容的任何數學表達給出“是”或者“否”的描述, 從而從過濾所得到的報文結果中找到一個報文模式。比如=M[F4] [l].fieldl-M[Fl] [1], fieldl <= vl,便可以用來表達符合第4個過濾條件F4的第一個報文的第一個域減去符合第1個過濾條件Fl的第一個報文的第一個域,結果不大于Vl的報文。再比如M[F1]. count+M[F2], count > 10,便可以來表示符合第1個過濾條件Fl的報文個數與符合第2個過濾條件F2的報文個數之和大于10的情況。SlOO 利用深入分析標準,后續處理引擎在結果文件中檢索報文序列,是否找到一
條結果。SllO 如果利用深入分析標準查找不到結果,則結束流程。S120:如果利用深入分析標準查找到一條結果,則將該結果予以保存。S130:后續處理引擎在結果文件中再次檢索序列模式,是否還能找到一條結果。S140:如果能夠找到一條結果,則將該結果予以保存,并從該結果后的下一個結果開始再次執行步驟S130。S150 如果找不到其他結果了,則生成一個包含了所有可以匹配深入分析標準的結果的文件。至此,便找到了符合分析需求的所有結果,用戶可以直接根據該結果進行分析。在本發明的一種實施例中,過濾條件的序列可以使用一種類似于正則表達式的規則來表達關系,但是與普通的正則表達式相比,該實施例中的表達式存在以下不同1、對于模式的定義,在本發明實施例中使用過濾條件作為基本數據單元,而在普通的正則表達式中使用的則是字符;在本發明實施例中所分析或者檢索的對象并不是字符串,而是報文序列。2、對于匹配過程的控制而言,本發明實施例中還可以使用停止條件,比如只對符合第1個過濾條件(Fl)的報文組合(M[F1])里的第1個報文(M[F1] [1])的時間戳(M[F1] [1]. time) IOs內的報文進行查找,或者到第1000個符合第1個過濾條件(Fl)的報文時停止本次結果的查找(IOOOmessages after M[F1] [1]. IineNumber),而在普通的正則表達式中則不使用停止條件。另外,對于在當前狀態不符合過濾條件的報文,本發明實施例會予以忽略,而不是停止當前的匹配檢索過程。在找到一條結果后,下一輪的查找程序會在前一結果中第一個匹配的報文之后開始,因為這兩個結果(報文模式)有可能會在序列上有所重疊。但是,在普通的正則表達式中,查找程序會在前一結果的最后才開始。3、對于利用檢索條件查找后所得到的結果而言,本發明實施例所得到的是一組符合預設模式的連續或者不連續的報文序列,而優選地,這些連續或者不連續的報文序列會予以保存,以便進行更深入地分析,優選地,結果中的各個報文,連同其全部或者部分信息, 比如報文本身、報文在報文序列中的位置、所匹配的過濾條件、所引用的報文(如果使用反向引用的話),都會予以保存。而且,本發明不僅可以使用上述類似于正則表達式的表達式,還可以利用其他表達式,比如采用通配符形式的表達式等等。下面以一個具體的場景并結合圖2來說明本發明實施例。假設網絡中的源節點的IP地址和MAC地址分別為ip_addr_src和mac_addr_src, 目標節點的IP地址和MAC地址分別為ip_addr_dst和mac_addr_dst,如果要求網絡這兩個節點之間的TCP發送時延應少于5s,利用本發明實施例便可以找出發送時延超過k的報文。我們使用第一個過濾條件(Fl)來查找從源節點發出的報文,使用第二個過濾條件(^)來查找到達目標節點的同一個報文。可以看出,過濾條件F2使用了符合第一個過濾條件Fl報文的相關信息來確定到達目標節點的報文與從源節點發出的報文是否同一個報文。因為目標節點在傳送的過程中由于重發和備用路由機制的緣故可能會收到多份同樣的報文,因此,使用過濾條件序列表達式“F1 F2+”來查找滿足Fl的報文和滿足F2的報文, 同時使用30s的停止條件,即只查找符合第1個過濾條件的報文時戳后30s內的報文。根據上述要求,從源節點發出和到達目標節點的所有報文(既包括完全匹配的報文序列(既有符合Fl的報文,也有符合F2的報文),也包括部分匹配的報文序列(只有符合Fl的報文,而沒有找到符合F2的報文))都會保存在所捕獲的跟蹤文件中。為了進一步分析,用戶還可以使用深入分析標準,在本例中,將深入分析標準設置為“M[F2] [l].time-M[Fl] [1]. time > 5s即表示滿足第1個過濾條件的第1個報文與滿足第2個過濾條件的第1個報文之間的時差大于^,也就是說,報文從源節點到目標節點之間的時延大于k,這樣,就會找到所有時延大于k的報文。可以看出,利用本發明所提供的實施例,用戶只需了解被分析協議的相關知識,通過定義過濾條件(查詢彼此間無聯系的報文)、序列表達式(查詢序列模式)便可以查找到符合要求的報文序列(彼此之間符合一定聯系)。利用不同的輸入可以滿足非常多的分析需求,比如查找報文是如何從源節點傳送到目標節點的,中間用時多少,哪一跳耗時最久,哪一個報文沒有到達目標節點,在哪一個節點處發生丟包。理論上講,通過定義足夠充分的報文序列表達式,所有基于狀態機的復雜協議中的所有事件都可以被查找出來,從而避免了針對每個分析需求單獨設置插件的情況。在找到上述結果后,用戶還可以使用不同的輸入使用深入分析標準,進一步地縮小結果范圍,根據需要準確而便捷地查找到所需的結果。如圖3所示,本發明還提供了一種協議分析引擎100,包括輸入端口 101、分析單元 103和后續處理單元104,
其中,可以通過輸入端口 101輸入過濾條件和過濾條件序列表達式,其中過濾條件用于查找彼此之間無聯系的報文,過濾條件序列表達式則可以限定報文之間的聯系,可以用于查找報文序列,可選地,還可以通過輸入端口 101輸入停止條件用于限定查找的報文范圍,輸入端口 101接收到這些信息后,會提供給分析單元103。分析單元103則可以根據輸入端口 101所接收到的輸入進行檢索,以找到符合特
定聯系的結果。同時,還可以通過輸入端口 101輸入深入分析標準,后續處理單元104則可以根據該標準,對分析單元103所查找到的結果進行深入的分析,從而得到最終的分析結果。再如圖3所示,本發明還提供了一種報文分析儀10,不僅包括前述的協議分析引擎100,還至少包括一個嗅探器200和一個解碼器300,其中嗅探器200可以用來捕獲網絡報文,解碼器300則用來根據特定的規范來對所捕獲的報文進行解碼,而協議分析引擎100 則用來根據前述方法對解碼后的報文進行分析。當然,在實際應用中,此種方法還可以運用到其他對象中,比如對文本中符合特定聯系的若干字符的查找,還可以用于對日志文件的分析、系統狀態監控、網絡入侵監測和用戶行為建模等等。只需輸入過濾條件和用于表示信息之間特定聯系的過濾條件序列表達式,處理器就可以在對象中查找并保存匹配的信息序列。這樣的處理器可以包括一個輸入單元和一個處理單元,輸入單元會接收所輸入的過濾條件和所述過濾條件的序列表達式, 而處理單元則會根據這些輸入在查找對象中查找并保存匹配的信息序列。以上所述僅為本發明示意性的具體實施方式
,并非用以限定本發明的范圍。任何本領域的技術人員,在不脫離本發明的構思和原則的前提下所作的等同變化、修改與結合, 均應屬于本發明保護的范圍。
權利要求
1.一種報文序列查找的方法,其特征在于,根據輸入的過濾條件和所述過濾條件的序列表達式,在捕獲的報文序列中查找并保存匹配的報文序列,所述序列表達式用于表示報文之間的特定聯系。
2.如權利要求1所述的方法,其特征在于,還根據輸入的停止條件,與所述過濾條件和所述過濾條件的序列表達式,在捕獲的報文序列中查找并保存匹配的報文序列,所述停止條件用于限定所述捕獲的報文序列的查找范圍。
3.如權利要求1所述的方法,其特征在于,所述過濾條件中包含報文信息,所述報文信息包括報文屬性和/或報文內容。
4.如權利要求3所述的方法,其特征在于,所述過濾條件中包含使用邏輯運算符組合的不同報文信息。
5.如權利要求1所述的方法,其特征在于,所述在捕獲的報文序列中查找并保存匹配的報文序列進一步包括找到一條報文序列后,將其保存,并從所述報文序列中第一個匹配的報文之后的報文開始查找其他匹配的報文序列。
6.如權利要求1所述的方法,其特征在于,還包括將所查找到的報文序列和對應的信息保存成結果文件。
7.如權利要求6所述的方法,其特征在于,還包括根據輸入的深入分析標準,對所述保存的報文序列進行進一步過濾,所述深入分析標準為所述保存的報文序列信息的表達式,所述報文序列信息包括報文序列屬性和/或報文序列內容。
8.一種協議分析引擎,其特征在于,包括一個輸入端口和一個分析單元,其中,所述輸入端口,用于接收輸入的過濾條件和所述過濾條件的序列表達式,所述序列表達式用于表示報文之間的特定聯系,所述分析單元,用于根據所述輸入的過濾條件和所述過濾條件的序列表達式在捕獲的報文序列中查找并保存匹配的報文序列。
9.如權利要求8所述的協議分析引擎,其特征在于,所述輸入端口還用于接收輸入的停止條件,所述停止條件用于限定所述捕獲的報文序列的查找范圍,所述分析單元用于將所述輸入的過濾條件、過濾條件序列表達式和停止條件,在捕獲的報文序列中查找并保存匹配的報文序列。
10.如權利要求8所述的協議分析引擎,其特征在于,所述輸入端口還用于接收輸入的深入分析標準,用于對所述保存的報文序列進行進一步過濾,所述深入分析標準為所述保存的報文序列信息的表達式,所述報文序列信息包括報文序列屬性和/或報文序列內容,所述協議分析引擎還包括一個后續處理單元,用于根據所述深入分析標準,對所述分析單元所查找到的報文序列進行過濾。
11.一種協議分析儀,包括一個嗅探器和一個解碼器,其中,所述嗅探器用于捕獲網絡報文,所述解碼器用于根據特定的規范來對所捕獲的報文進行解碼,其特征在于,還包括一個如權利要求8-10任意一項所述的協議分析引擎。
12.一種信息查找的方法,其特征在于,根據輸入的過濾條件和所述過濾條件的序列表達式,在查找對象中查找并保存匹配的信息序列,所述序列表達式用于表示信息之間的特定聯系。
13.如權利要求12所述的方法,其特征在于,所述查找對象為文本、日志文件、用戶行為模型或系統狀況監控結果。
14.一種處理器,其特征在于,包括一個輸入單元和一個處理單元,所述輸入單元用于接收輸入的過濾條件和所述過濾條件的序列表達式,所述序列表達式用于表示信息之間的特定聯系,所述處理單元用于根據所述過濾條件和所述過濾條件的序列表達式在查找對象中查找并保存匹配的信息序列。
全文摘要
本發明提供了一種報文序列查找的方法、協議分析引擎和協議分析儀,根據輸入的過濾條件和所述過濾條件的序列表達式,在捕獲的報文序列中查找并保存匹配的報文序列,所述序列表達式用于在符合所述過濾條件的報文中查找符合特定聯系的報文序列。用戶只需通過定義過濾條件和序列表達式便可以查找到符合要求的報文序列,滿足非常多的分析需求,設計簡單直觀,易于后期維護,對設計人員要求較低,不需要學習其他復雜的編程語言。
文檔編號H04L29/06GK102238021SQ20101015995
公開日2011年11月9日 申請日期2010年4月28日 優先權日2010年4月28日
發明者凱爾文·馬丁, 喻丹, 張亮, 西蒙·金茨利 申請人:西門子公司