從ip網絡流過的數據流中提取數據的方法和設備的制作方法
【專利摘要】在配置階段,使用狀態和轉換構建狀態機(20),根據要從流過IP網絡的數據流中提取的至少一種數據類型配置所述狀態和轉換。在狀態之間的轉換由定義為根據所述應用層協議的數據流的數據組織規則的函數的條件來激活。并且選擇一個或多個狀態用來從數據流中提取數據。之后,在數據流的實時分析階段,觀察到持續流過網絡的IP數據包中的數據流數據。當狀態機處于當前狀態,通過從數據流中觀察到的數據,執行關于是否實現轉移至目標狀態的激活條件的搜索,以及當實現如此激活條件時,狀態機切換至目標狀態。當狀態機處于在配置階段所選擇的狀態時,從數據流中提取數據。
【專利說明】從IP網絡流過的數據流中提取數據的方法和設備
【技術領域】
[0001]本發明涉及對以ip( “互聯網協議”)數據包形式流過通信網絡的數據流的分析技術。更具體地說,在本案中,試圖從一個或多個指定分類中實時提取數據,而不必處理流過網絡的大量數據。
【背景技術】
[0002]IP數據包分析器,例如以Wireshark名義分布的分析器,從承載數據的數據包內容的數據流中進行全局提取,以便之后將其進行完整分析,從而識別組成此內容的各個不同的元素。這一方法學并不能很好地適用于多個數據流的實時觀察,這是由于它需要實時提取全部數據流以便進行分析。此外,在改變構建數據流所依據的協議的情況下,即使該改變較小或者只涉及協議中與所查找信息不相關的方面,都需要修改分析器。
[0003]因此,需要能夠有效提取和同步映射流過IP類型網絡的數據流中的目標信息的技術。
【發明內容】
[0004]提出了一種適用于從流過IP網絡的數據流中提取數據的方法,數據流的數據是根據應用層協議(0SI模型的第7層)組織的。在這一背景下并從應用層協議的角度來看,數據流可通過網絡(IP)層和/或傳輸(TCP,UDP,等)層以幾乎隨機的方式分割。然而,令人滿意的是,即使傳輸流量以非常高的比特率通過IP網絡,但仍具有提取數據流中包含的特定數據用于處理的能力。該方法包括:
[0005]-配置階段,其中根據要從數據流中提取的至少一種數據類型所配置的狀態和轉換來構建狀態機,在狀態間的轉換由根據應用層協議的數據流的數據組織規則的函數所定義的各個條件來激活,并且選擇其中至少一種狀態用于從數據流中提取數據;以及,
[0006]-數據流的實時分析階段。
[0007]實時分析階段包括:
[0008].觀察源于持續流過網絡的IP數據包的數據流的數據;
[0009].當狀態機正處于當前狀態時,通過觀察數據流的數據來確定是否滿足從當前狀態至目標狀態的轉換的激活條件,并且當滿足激活條件時,將狀態機轉變為目標狀態;
[0010].當狀態機處于在從數據流中提取數據的配置階段中所選擇的狀態時,就從數據流中提取數據;以及,
[0011].當狀態機處于在配置階段未被選擇的狀態時,忽視數據流中的數據。
[0012]狀態機的節點描述了協議語法的相關結構元素,有可能當有用的語義和歸類信息出現在數據流中時使狀態機能夠提取它們。狀態機由狀態和轉換組成。轉換使之有可能從一種狀態轉移到另一狀態并且一般可在觀察數據流的過程中由詞位激活。
[0013]所使用的狀態機可對具有變化非常大的內容(文本或二進制)的數據流進行操作,它的語法并不必需被徹底知道,可能包含錯誤并且在每一時刻它們并不是全部可用的。[0014]為了做到這一點,在不提取所有數據流的情況下,該方法通過實時分析數據流的數據來搜索允許激活不同轉換的條件。可分別管理在兩個狀態間的轉換激活以及所呈現的數據。
[0015]此外,該方法允許管理在緩沖存儲器中存儲的那些以數據的分片形式存在僅僅對搜索轉換的激活條件所必需的部分數據流。在該實施例中,狀態機的轉換的激活條件包括數據流的數據中的各自詞位的出現,并且數據流的實時分析階段包括,當狀態機處于當前狀態時:
[0016]?將位于在IP數據包中所觀察到數據流的數據的末端的至少N-1個字符存儲在緩沖存儲器中,N是對應于離開當前狀態的轉換的詞位字符的最大數目;以及,
[0017].當接收到源于隨后流過網絡的IP數據包的數據流的下一數據時,將緩沖存儲器的內容放在所接收到的數據之前,以便搜索在兩個數據包之間分割的詞位的可能出現。
[0018]在配置階段所選擇的狀態機的狀態可包括一種或多種狀態,其中從數據流中提取的數據可直接傳輸至外部處理器。
[0019]狀態機所選擇的狀態還可包括一種或多種狀態,其中一旦狀態機離開所選擇的狀態則將從數據流中提取的數據存儲在緩沖存儲器中然后再傳輸至外部處理器。在狀態機的這一選擇的狀態下,接收從數據流中提取數據的緩沖存儲器最好具有限制字符配置數的數
量大小。
[0020]本發明的另一方 面涉及一種適用于實施上述方法的設備。該設備包括:
[0021]-狀態機,具有根據要從數據流中提取的至少一種數據類型所配置的狀態和轉換,在狀態之間的轉換由根據應用層協議數據流的數據組織規則的函數所定義的各個條件激活,狀態機的至少一種狀態可選擇用于從數據流中提取數據;以及,
[0022]-輸入,用于實時接收源于持續流過網絡的IP數據包的數據流的數據;
[0023]-轉換檢測器,用于當狀態機處于當前狀態時,通過在輸入端所接收到的數據流的數據來確定是否滿足從當前狀態轉換至目標狀態的激活條件,并用于當滿足激活條件時將狀態機轉換為目標狀態。當狀態機處于用于從數據流中提取數據的所選擇的狀態時,提取數據流的數據,以及當狀態機處于未被選擇用于從數據流中提取數據的狀態時,就忽視數據流的數據。
【專利附圖】
【附圖說明】
[0024]本發明的其它特征和優點將通過下述對非限制性實施例的說明以及參考下述附圖而變得更為清晰。附圖包括:
[0025]圖1是適用于本發明的IP網絡的簡化圖;
[0026]圖2是用于實施本發明連接著圖1所示網絡的設備的框圖;
[0027]圖3是根據本發明的數據提取設備的一個示例的框圖;
[0028]圖4是以圖示方式展示在特定實例中所使用的狀態機圖。
【具體實施方式】
[0029]參考圖1,諸如因特網之類的IP網絡I在標準方式下包括不同的路由設備,有些設備(2)位于網絡內部而另一些設備(3)位于網絡邊界用于連接各種不同的裝置,例如用戶終端3,用戶計算機裝置4,網絡運營商管理他們用戶的服務器,連接其它網絡的網關,等
坐寸O
[0030]在路由器2,3之間的鏈路可由非常高比特率的連接來實現,例如由光纖線路所提供的鏈路。該比特率的典型數值為每秒幾萬兆比特。
[0031]在由這些高比特率鏈路承載的不同數據流中,某些應用需要提取特定的數據,例如用于計費,安全,管理服務質量等等的目的。
[0032]需要接收以這種方式所提取數據的設備不會承受不了流過IP網絡I的潛在的大量數據。為此,可以使用例如圖2所示的設備10。
[0033]典型的是,設備10安裝在路由器2,3的級別上,以便作為與這些路由器之間其中一個高比特率鏈路的接口。然而,可以理解的是,設備10還可安裝在位于終端路由器3和網關或用戶裝置之間的鏈路上。
[0034]圖2所示出的設備10包括網絡接口 11,適用于物理層以及該設備所安裝的鏈路的較低協議層。由網絡接口 11所接收到的流量受到分類器12的影響,分類器12能夠識別組成流量的連續IP數據包所屬的數據流。分類器12實施識別和協議分析技術,舉例來說,例如W02004/017595A2中描述的那種技術。它的架構可選擇地為分布式的,如W02006/120039A1 中所述。
[0035]流量分類器12配置為可選擇性地將從由系統管理者所指定的一個或多個數據流中獲取得到的IP數據包呈現給數據提取設備13。對于各個數據流,提取器13選擇隨用戶所執行的配置而變化的相關數據,從數據流中提取數據并將它們傳輸至外部處理器14,以便對所提取的數據執行所需的處理(例如,用于計費、安全或服務應用質量等等的處理)。此時,所涉及的用戶是管理由外部處理器14執行應用程序的用戶。從而,有可能將用戶與指定要提取的數據流的系統管理者組合。在另一個面向服務的架構中,該用戶可與系統管理者同等地分開,只要后者將數據提取服務提供至具有不同要執行的處理類型的多個用戶。
[0036]數據提取器13可具有例如圖3所示的架構。該架構以用戶通過適當的人/機接口 22配置的狀態機20和轉換檢測器21為中心。在配置階段,用戶通過接口 22定義狀態機20的狀態和轉換以及在狀態之間轉換的激活條件。接口 22可包含協議的語法知識,以便在配置操作中協助用戶。
[0037]數據提取器13具有輸入24,它實時接收源于IP數據包的數據流的數據,由流量分類器12將該數據呈現給數據提取器13。通過接口 22依照所執行的配置將數據流中提取的數據由數據輸出25傳輸至外部處理器14。
[0038]在IP類型網絡的情形下使用狀態機施加了操作限制。實際上,這些數據流此后被分段,各個分段均源自具有不同大小的IP數據包。在該協議的語法中,該分段可發生于任意時刻。應當考慮下述兩種情況:
[0039]-激活轉換條件所必需的數據可在一個數據包的結束和下一數據包的開始之間被分割。
[0040]-在一種狀態中要處理的有用數據可呈現在多個數據包中,但是用戶可請求不以分段方式來處理數據。
[0041 ] 為了考慮這兩種情況,數據提取器13包括兩個緩沖存儲器26,27 (在實踐中,這些緩存26,27可在單個存儲器平面內制造)。[0042]緩沖存儲器26用于管理發現由轉換檢測器21查找到的詞位被分割在輸入24所連續接收到的兩個IP數據包之間的情況。在狀態機20的指定狀態下,可查找到多個詞位用于可能激活離開該狀態的轉換。如果N表示這些詞位的字符的最大數目,那么方便的是當狀態機位于指定狀態時在緩沖存儲器26中記錄各個IP數據包中所接收到的數據流的最后N-1個字符。當接收到包含數據流的數據的下一個IP數據包時,緩沖存儲器26的內容放在輸入24所接收到的數據的第一個字符之前,使得轉換檢測器21能觀察到可能存在其中一個所查找的詞位。這一在轉換檢測器21和緩沖存儲器26之間的協作確保所查找的詞位不會由于在IP層對數據流的分割而丟失。應當注意,緩沖存儲器26可選擇性地包含稍稍多于N-1個字符,然而,它的數量大小必須保持明顯小于要提取的數據的數量大小。
[0043]狀態機20包括根據數據流的語法結構所創建的狀態列表。各個狀態都包含一個轉換列表,由轉換檢測器21查找的轉換激活條件一般都呈現為在數據流中所接收到的詞位。各個狀態此外還與一個過程相關,該過程指示當狀態機20位于該狀態時所接收到的數據的處理方式。
[0044]狀態的各次轉換都指定了一個激活條件和相關的目標狀態以及所需分析的數據的最小長度,以便確保條件的操作。該激活條件,特定于某一狀態和其所依賴的轉換,可采用下述形式之一:
[0045]-通過使用例如Boyer-Moore搜索算法來發現指定的字符串;
[0046]-通過使用搜索樹(前綴樹或有序樹數據結構)來發現指定的字符串;
[0047]-指定數量字節的數據流的進展;
[0048]-可變數量字節的數據流的進展,這是前一情況的一般化情況。在這一情況下,跳(hop)數并不在狀態機的說明中指示,而是在狀態的輸入處指定,離開該狀態轉換發生;
[0049]-一般條件:在實踐中,通過能夠找到該轉換的功能,狀態機被通知此條件,這形成了包括所有在前情況的其一般化情況。
[0050]讀取在輸入24處接收的數據流的進展后該條件被通常激活。當這一轉換被激活時,可能的是,在激活轉換使得能夠轉換至下一狀態前開發數據。根據用戶請求的配置,呈現在兩個狀態改變之間的數據可被:
[0051]-忽視;
[0052]-傳輸至與第一狀態關聯的一功能用于處理。此功能典型地為通過輸出25立即發送數據;或者
[0053]-存儲在緩沖存儲器27中然后被發送至與第一狀態關聯的一功能用于處理。此功能典型地為在當狀態機20離開當前狀態時通過輸出25發送數據。可配置緩沖存儲器27以便在字符數量方面具有最大數目。當此最大字符數已經被存儲在緩沖存儲器27中時,狀態機20可被強制離開當前狀態。這使得能夠避免此緩沖存儲器的溢出。
[0054]通過實例的方式,此后在基于XML語言(“可擴展標記語言”)的被稱作Jabber或XMPP( “可擴展的消息和存在協議”)的即時消息協議的情況下,介紹實施本發明的具體實例。這些示例可容易地推廣至Jabber/XMPP協議或其他協議的其他擴展。
[0055]由于性能(存儲器和分析文本的處理時間)和魯棒性,并不全部描述Jabber協議的語法。只考慮那些組成想要提取的信息的附近的恒量的標記。
[0056]在示例I中,用戶試圖提取在Jabber協議中傳輸的消息的內容。[0057]在示例2中,該提取涉及在Jabber協議中傳輸的聯系人(e-mail地址)。
[0058]可根據圖4示出的圖構建狀態機20以實現這些實施例。在狀態機20中由用戶選擇兩類狀態用于執行數據的提取。在第一種類型(被稱為“N0DE_B0DY”的狀態30)中,消息的內容由于其量可能非常大而從不被記錄在提取設備13中。在第二種類型(被稱為“TR_C0NTACT_ENTRY”的狀態31)中,e-mail地址可被存儲在緩沖存儲器27中以便被一次傳輸至外部處理器14。
[0059]在這兩種情況下,在被選擇的狀態下用于傳輸數據的回調過程中,提取器13提供給處理器14當前狀態(N0DE_B0DY或TR_CONTACT_ENTRY)下的信息以及提取的數據,這提供了為了正確解釋數據所必需的語義和歸類信息。
[0060]從被稱為“N0DE_BASE”的節點32,狀態機20的初始位置開始,描述狀態機的圖中的一個分支通過詞位〈message的檢測,檢測一消息的起始內容,而另一分支搜索僅呈現在由詞位:iq:roster指定的信號數據中的一項信息。
[0061]在圖4中表示的狀態機20的狀態和轉換在配置階段以下述形式定義:
[0062]{node:N0DE_BASE, nextnode:NODE_MESSAGE, start: "〈message" },
[0063]{node:N0DE_BASE,nextnode:N0DE_C0NTACT_LIST,start: ":1q:roster" },
[0064]{node:N0DE_MESSAGE,nextnode:N0DE_B0DY,start: "〈body〉" },
[0065]{node:N0DE_B0DY,nextnode:N0DE_BASE,start: "〈/body〉" },
[0066]{node:N0DE_C0NTACT_LIST, nextnode:N0DE_BASE,start: "〈/query〉" },
[0067]{node: N0DE_C0NTACT_L I ST , nextnode: N0DE_C0NTACT_ENTRY ,start: "〈item" },
[0068]{node:N0DE_C0NTACT_ENTRY, transnode:TR_C0NTACT_ENTRY, start: " jid='",end: ' />",flag:SM_TRUNCATE},
[0069]{node:N0DE_C0NTACT_ENTRY,nextnode:N0DE_BASE,start: "〈/query〉" },
[0070]其中:
[0071]“node”是當前狀態的名稱;
[0072]“nextnode”是當轉換條件被激活時下一狀態的名稱;
[0073]“ start ”表示用于在數據流中搜索以便激活這一轉換的標記。
[0074]在與緩沖存儲器27的存儲有關系的暫時狀態被狀態機使用的情況下,存在兩項額外的信息:
[0075]“transnode”(暫時節點):迅速轉換的暫時狀態的名稱;
[0076]“end”:搜索的標記以便離開迅速轉換;
[0077]“flag”:可選的標記。在當前的情況下,當緩沖存儲器27滿時如果不能找到結束標記,它指示數據的截斷。
[0078]示例 I:
[0079]在檢測到詞位〈message后,第一分支將狀態機帶到N0DE_MESSAGE (33)狀態,這時任何提取都未被執行。在N0DE_MESSAGE狀態下詞位〈body〉的檢測將把機器20帶至N0DE_BODY狀態。在狀態30,回調將所有從連續的IP數據包接收的數據發送至輸出25,直到檢測到結束標記〈/body〉則直接返回至初始狀態32。
[0080]那樣,數據提取器13隔離由協議定義的XML標簽〈body〉和〈/body〉之間包括的數據流的消息的任何內容。由于消息的內容可能是大量的,它并不經過緩沖存儲器27。它將被發送一次或多次,通過連續接收IP數據包。
[0081]例如,應用數據流可被這樣呈現:
[0082]
【權利要求】
1.用于從流過IP網絡(I)的數據流中提取數據的方法,根據應用層協議組織該數據流的數據,該方法包括: -配置階段,其中使用狀態和轉換構建狀態機(20),根據要從數據流中提取的至少一種數據類型配置所述狀態和轉換,在狀態之間的轉換由各自的條件激活,所述條件被定義為根據所述應用層協議的數據流的數據組織規則的函數,并且其中至少一種狀態(30,31)被選擇用于從數據流中提取數據;以及, -數據流的實時分析階段,包括: ?觀察源于持續流過網絡的IP數據包的數據流的數據; ?當狀態機處于當前狀態時,確定觀察的數據流的數據來確定是否滿足從當前狀態至目標狀態的轉換的激活條件,并且當滿足此激活條件時,將狀態機轉變為目標狀態; ?當狀態機處于在從數據流中提取數據的配置階段中所選擇的狀態時,從數據流中提取數據;以及, ?當狀態機處于在配置階段未被選擇的狀態時,忽視數據流中的數據。
2.根據權利要求1所述的方法,其特征在于,狀態機(20)的轉換激活條件包括數據流的數據中的各自詞位的出現,并且當狀態機處于當前狀態時數據流的實時分析階段還包括: ?將位于在一 IP數據包中觀察到的數據流的數據末端的至少N-1個字符存儲在緩沖存儲器(26)中,N是對應于離開當前狀態的轉換的詞位字符的最大數目;以及 ?當接收到源于隨后流過網絡的IP數據包的數據流的下一數據時,將緩沖存儲器的內容放在所接收的數據之前,以便搜索在兩個數據包之間分割的詞位的可能出現。
3.根據上述權利要求中任一項所述的方法,其特征在于,狀態機(20)所選擇的狀態包括狀態(30),在該狀態下從數據流中提取的數據被直接傳輸至外部處理器(14)。
4.根據上述權利要求中任一項所述的方法,其特征在于,狀態機(20)所選擇的狀態包括狀態(31),在該狀態下從數據流中提取的數據被存儲在緩沖存儲器(27)中,然后一旦狀態機離開所述選擇的狀態時,數據被傳輸至外部處理器(14)。
5.根據權利要求4所述的方法,其特征在于,在狀態機(20)的所述選擇的狀態(31)下,緩沖存儲器(27)接收從數據流中提取的數據,其存儲大小被限制為可配置的字符數。
6.用于從流過IP網絡(I)的數據流中提取數據的設備,根據應用層協議組織該數據流的數據,該設備包括: -狀態機(20),具有根據要從數據流中提取的至少一種數據類型所配置的狀態和轉換,在狀態之間的轉換由各自的條件激活,所述條件被定義為根據所述應用層協議的數據流的數據組織規則的函數,狀態機的至少一種狀態(30,31)被選擇用于從數據流中提取數據;以及,-輸入(24),用于實時接收源于持續流過網絡的IP數據包的數據流的數據; -轉換的檢測器(21),用于當狀態機處于當前狀態時,通過在輸入端所接收到的數據流的數據來確定是否滿足從當前狀態轉換至目標狀態的激活條件,并用于當滿足所述激活條件時將狀態機轉變為目標狀態, 當狀態機處于用于從數據流中提取數據的選擇的狀態時,提取數據流的數據,以及當狀態機處于未被選擇的用于從數據流中提取數據的狀態時,忽視數據流的數據。
7.根據權利要求1所述的設備,其特征在于,狀態機(20)的轉換的激活條件包括數據流的數據中的各自詞位的出現,并且轉換檢測器(21)與緩沖存儲器(26)相關,控制緩沖存儲器(26)以便當狀態機處于當前狀態時,接收位于在IP數據包中觀察到的數據流的數據的末端的至少N-1個字符,N是對應于離開當前狀態的轉換的詞位字符的最大數目,設置轉換檢測器以便,當接收到源于隨后流過網絡(I)的IP數據包的數據流的下一數據時,通過將緩沖存儲器的內容放在接收的數據之前搜索在兩個數據包之間分割的詞位的可能出現。
8.根據權利要求6或7所述的設備,其特征在于,狀態機(20)所選擇的狀態包括狀態(30),在該狀態下從數據流中提取的數據被直接傳輸至外部處理器(14)。
9.根據權利要求6至8中任一項所述的設備,其特征在于,狀態機(20)所選擇的狀態包括狀態(31),在該狀態下從數據流中提取的數據被存儲在緩沖存儲器(27)中,然后一旦狀態機離開所述選擇的狀態時,數據被傳輸至外部處理器(14)。
10.根據權利要求9所述的設備,其特征在于,在狀態機(20)的所述選擇的狀態(31)下,緩沖存儲器(27)接 收從數據流中提取的數據,其存儲大小被限制為可配置的字符數。
【文檔編號】H04L12/26GK103765821SQ201280025546
【公開日】2014年4月30日 申請日期:2012年3月21日 優先權日:2011年3月25日
【發明者】杰羅米·阿貝拉 申請人:QoSMOS公司