專利名稱:用于監(jiān)控網(wǎng)絡(luò)流量的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò),尤其涉及在數(shù)據(jù)網(wǎng)絡(luò)中所傳遞的分組的實(shí)時(shí)說(shuō)明有關(guān),包括按照協(xié)議和應(yīng)用程序進(jìn)行的分類。
對(duì)有關(guān)申請(qǐng)的交叉引用本申請(qǐng)對(duì)美國(guó)臨時(shí)專利申請(qǐng)序列號(hào)60/141,903題為“用于監(jiān)控網(wǎng)絡(luò)流量的方法和設(shè)備”中的利益提出權(quán)利要求,所要求的權(quán)利由發(fā)明人Dietz等人所有,他在1999年6月30日提交了該申請(qǐng)并轉(zhuǎn)讓給APPTITUDE有限公司,該公司是本發(fā)明的受讓人。
版權(quán)公告本專利文檔的部分內(nèi)容中包含關(guān)于版權(quán)保護(hù)的材料。版權(quán)所有者不反對(duì)由本專利文檔或?qū)@_(kāi)內(nèi)容的任何人復(fù)制副本,因?yàn)樗呀?jīng)出現(xiàn)在專利與商標(biāo)事務(wù)處的文檔和記錄中,但另外保留所有的版權(quán)。
背景技術(shù):
很久以來(lái)就一直需要有一個(gè)網(wǎng)絡(luò)活動(dòng)狀況監(jiān)控器。但在最近Internet和其它internets大量流行的情況下這種需要變得更加迫切,“internet”是任意一個(gè)對(duì)大量網(wǎng)絡(luò)進(jìn)行互聯(lián)而形成的更大的單一網(wǎng)絡(luò)。隨著用作客戶機(jī)端集合—這些客戶機(jī)端從網(wǎng)絡(luò)上的一個(gè)或多個(gè)服務(wù)器獲取服務(wù)—的網(wǎng)絡(luò)的增長(zhǎng),能夠?qū)@些服務(wù)的使用進(jìn)行監(jiān)控并對(duì)它們做出相應(yīng)的評(píng)定就顯得愈加重要。例如,像哪些服務(wù)(即應(yīng)用程序)正在被使用、誰(shuí)在使用它們、它們多長(zhǎng)時(shí)間被訪問(wèn)一次以及每次訪問(wèn)多長(zhǎng)時(shí)間這樣的客觀信息在這些網(wǎng)絡(luò)的維護(hù)和后繼操作中非常有用。尤其重要的是被選中的用戶能夠遠(yuǎn)程訪問(wèn)網(wǎng)絡(luò)以便實(shí)時(shí)產(chǎn)生網(wǎng)絡(luò)使用報(bào)告。同樣地,也需要一個(gè)實(shí)時(shí)網(wǎng)絡(luò)監(jiān)控器能夠提供警報(bào)通知選中的用戶網(wǎng)絡(luò)或站點(diǎn)上可能出現(xiàn)了問(wèn)題。
現(xiàn)有技術(shù)中的一種監(jiān)控方法使用日志文件。在這種方法中,可以通過(guò)查看日志文件對(duì)選中的網(wǎng)絡(luò)活動(dòng)進(jìn)行回顧分析,日志文件由網(wǎng)絡(luò)服務(wù)器和網(wǎng)關(guān)共同維持。日志文件監(jiān)控器必須訪問(wèn)這個(gè)數(shù)據(jù)并分析(“我的”)它的內(nèi)容以確定關(guān)于服務(wù)器或網(wǎng)關(guān)的統(tǒng)計(jì)信息。但這種方法存在幾個(gè)問(wèn)題。首先,日志文件信息并未提供實(shí)時(shí)使用圖;第二,日志文件庫(kù)不支持全部信息。這個(gè)方法依賴于由大量網(wǎng)絡(luò)設(shè)備和服務(wù)器所維持的日志,這就需要對(duì)信息進(jìn)行提煉和對(duì)比。并且有些時(shí)候信息不能簡(jiǎn)單地被任意網(wǎng)關(guān)或服務(wù)器直接用來(lái)產(chǎn)生日志文件條目。
例如,關(guān)于NetMeeting(Microsoft公司,雷蒙德,華盛頓州)會(huì)話的信息就是一個(gè)這樣的情況,在NetMeeting會(huì)話中兩臺(tái)計(jì)算機(jī)在網(wǎng)絡(luò)上直接連接,而服務(wù)器和網(wǎng)關(guān)根本看不到在它們之間所傳送的數(shù)據(jù)。
創(chuàng)建日志文件的另一個(gè)缺點(diǎn)是這個(gè)方法要求使能網(wǎng)絡(luò)元素的數(shù)據(jù)記錄特性,給設(shè)備增加了實(shí)實(shí)在在的負(fù)載,這導(dǎo)致網(wǎng)絡(luò)性能隨之下降。另外,日志文件增長(zhǎng)得很快,沒(méi)有能夠存儲(chǔ)它們的標(biāo)準(zhǔn)存儲(chǔ)裝置,并且它們需要大量的維護(hù)開(kāi)銷。
通過(guò)Netflow(Cisco系統(tǒng)有限公司,圣何塞,加利福尼亞州)、RMON2以及其它可用于實(shí)際監(jiān)控網(wǎng)絡(luò)的網(wǎng)絡(luò)監(jiān)控器,它們降低了應(yīng)用內(nèi)容的可見(jiàn)度,而且一般在提供網(wǎng)絡(luò)層信息上也有限制。
模式匹配解析器技術(shù)已經(jīng)是眾所周知,在該技術(shù)中對(duì)分組進(jìn)行解析并且應(yīng)用了模式過(guò)濾器,但這些在進(jìn)入?yún)f(xié)議棧檢查分組的進(jìn)入深度上也受限制。
一些現(xiàn)有技術(shù)中的分組監(jiān)控器把分組分類成連接流。術(shù)語(yǔ)“連接流”一般用于描述單個(gè)連接所涉及到的所有分組。另一方面,對(duì)話流是作為一個(gè)活動(dòng)—例如,因?yàn)榭蛻魴C(jī)的請(qǐng)求而在服務(wù)器上運(yùn)行一個(gè)應(yīng)用程序—的結(jié)果在任意方向上所交換的分組序列。希望能夠?qū)?duì)話流而不只是連接流進(jìn)行識(shí)別和分類。這樣做的原因是一些對(duì)話流涉及不止一個(gè)連接流,有些甚至涉及到客戶機(jī)和服務(wù)器之間的多個(gè)分組交換。這在使用像RPC、DCOMP和SAP這樣的客戶機(jī)/服務(wù)器協(xié)議時(shí)尤其正確,這些協(xié)議使得能夠在對(duì)服務(wù)有任何使用之前對(duì)其進(jìn)行設(shè)置或定義。
這種情況的一個(gè)實(shí)例是SAP(服務(wù)廣告協(xié)議),一個(gè)用來(lái)識(shí)別服務(wù)和隸屬于網(wǎng)絡(luò)的服務(wù)器地址的NetWare(Novell系統(tǒng),Provo,猶他州)協(xié)議。在初始交換中,客戶機(jī)可以發(fā)送一個(gè)SAP請(qǐng)求給服務(wù)器以要求打印服務(wù)。服務(wù)器隨后將發(fā)送一個(gè)SAP應(yīng)答,該應(yīng)答把一特定地址—例如,SAP#5—標(biāo)識(shí)為該服務(wù)器上的打印服務(wù)。這樣的響應(yīng)可以用來(lái)更新路由器中的表格,例如通常所說(shuō)的服務(wù)器信息表。已經(jīng)無(wú)意中看到過(guò)這個(gè)響應(yīng)或者訪問(wèn)該表格(通過(guò)有服務(wù)信息表格的路由器)的客戶機(jī)便會(huì)知道特定服務(wù)器的SAP#5是一個(gè)打印服務(wù)。因此,要想在服務(wù)器上打印數(shù)據(jù),這樣的客戶機(jī)無(wú)需產(chǎn)生打印服務(wù)請(qǐng)求,只要簡(jiǎn)單地把數(shù)據(jù)發(fā)送出去以在指定的SAP#5上進(jìn)行打印。像前一個(gè)交換那樣,傳輸要打印的數(shù)據(jù)也涉及客戶機(jī)和服務(wù)器之間的交換,但要求第二個(gè)連接利并因此獨(dú)立于初始交換。為了降低對(duì)話交換斷開(kāi)的可能性,希望網(wǎng)絡(luò)分組監(jiān)控器能夠把第一和第二個(gè)交換“虛擬連接”—也就是鏈接—在一起。如果是同一客戶機(jī),兩個(gè)分組交換將被正確地標(biāo)識(shí)為同一對(duì)話流的一部分。
其它可能產(chǎn)生斷開(kāi)的流的協(xié)議包括RPC(遠(yuǎn)程過(guò)程調(diào)用);DCOM(分布式組件對(duì)象模型),以前稱作網(wǎng)絡(luò)OLE(Microsoft公司,雷蒙德,華盛頓州);和CORBA(公共對(duì)象請(qǐng)求代理結(jié)構(gòu))。RPC是來(lái)自Sun微系統(tǒng)(Paloalto,加利福尼亞州)的一個(gè)編程接口,它允許一個(gè)程序使用遠(yuǎn)程機(jī)器中的另一個(gè)程序的服務(wù)。DCOM是Microsoft與CORBA相對(duì)應(yīng)的協(xié)議,它定義了允許通過(guò)網(wǎng)絡(luò)遠(yuǎn)程運(yùn)行那些對(duì)象—自主式軟件模塊對(duì)象—的遠(yuǎn)程過(guò)程調(diào)用。CORBA是來(lái)自O(shè)MG(對(duì)象管理組織)的標(biāo)準(zhǔn),用于在分布式對(duì)象之間進(jìn)行通信,它提供了一種方式能夠執(zhí)行用不同語(yǔ)言所寫運(yùn)行在不同平臺(tái)上的程序(對(duì)象),而不管它們是否存在于網(wǎng)絡(luò)中。
因此,需要一個(gè)能夠在流量很大的網(wǎng)絡(luò)上連續(xù)不斷地分析所有用戶會(huì)話的網(wǎng)絡(luò)監(jiān)控器。這樣的監(jiān)控器應(yīng)該能夠?qū)νㄟ^(guò)網(wǎng)絡(luò)上任意點(diǎn)的所有信息(也就是通過(guò)網(wǎng)絡(luò)中任意位置的所有分組和分組流)進(jìn)行非插入、遠(yuǎn)程探測(cè)、特性表示、分析和捕捉。網(wǎng)絡(luò)監(jiān)控器應(yīng)該不僅能探測(cè)和分析所有的分組,而且能夠針對(duì)這些分組中的每一個(gè)確定協(xié)議(例如,http、ftp、H.323、VPN等)、協(xié)議中的應(yīng)用/用途(例如,聲音、視頻、數(shù)據(jù)、實(shí)時(shí)數(shù)據(jù)等)以及每個(gè)應(yīng)用或應(yīng)用環(huán)境(例如,所選的選項(xiàng)、所投遞的服務(wù)、持續(xù)時(shí)間、日時(shí)、所請(qǐng)求的數(shù)據(jù)等)中終端用戶的使用模式。而且,網(wǎng)絡(luò)監(jiān)控器不應(yīng)該依賴于像日志文件這樣的服務(wù)器駐留信息。相反,它應(yīng)該給像網(wǎng)絡(luò)管理員或Internet服務(wù)提供商(ISP)這樣的用戶提供裝置以對(duì)網(wǎng)絡(luò)活動(dòng)進(jìn)行客觀的測(cè)量和分析;自定義要收集并分析的數(shù)據(jù)的類型;承擔(dān)實(shí)時(shí)分析;并接收網(wǎng)絡(luò)問(wèn)題的及時(shí)通知。
再次考慮前面的SAP實(shí)例,因?yàn)楸景l(fā)明的一個(gè)特性是正確標(biāo)識(shí)第二個(gè)交換為與服務(wù)器的打印服務(wù)相關(guān)聯(lián),甚至在客戶機(jī)不相同時(shí)也能夠識(shí)別這樣的交換。區(qū)別本發(fā)明和現(xiàn)有技術(shù)中的網(wǎng)絡(luò)監(jiān)控器的特性是本發(fā)明能夠識(shí)別出屬于同一個(gè)對(duì)話流的已斷開(kāi)的流。
很多發(fā)明人已經(jīng)認(rèn)識(shí)到了監(jiān)控網(wǎng)絡(luò)通信中的數(shù)據(jù)值。Chiu等人在題為“用于網(wǎng)絡(luò)會(huì)話的實(shí)時(shí)監(jiān)控和局域網(wǎng)的設(shè)備和方法”的美國(guó)專利5,101,402(“402專利”)中描述了一個(gè)用于在計(jì)算機(jī)網(wǎng)絡(luò)的會(huì)話層上收集信息的方法。402專利為幾種特定類型的分組指定了提取信息從而識(shí)別分組會(huì)話的固定位置。例如,如果出現(xiàn)了一個(gè)DECnet分組,402專利就查看分組中的六個(gè)字段(在六個(gè)位置)以識(shí)別該分組的會(huì)話。另一方面,如果出現(xiàn)了一個(gè)IP分組,就為IP分組指定包含六個(gè)不同位置的一個(gè)不同集合。隨著協(xié)議的增殖,明確指定所有可能的位置并確定會(huì)話變得越來(lái)越難。同樣地,添加一個(gè)新協(xié)議或應(yīng)用也很困難。在本發(fā)明中,對(duì)特定類型的分組從該分組中的信息適應(yīng)地確定要檢驗(yàn)的位置以及要從任意分組中提取信息。對(duì)于尋找什么和在哪里尋找它們以形成標(biāo)識(shí)簽名沒(méi)有固定的定義。例如,本發(fā)明的監(jiān)控器實(shí)現(xiàn)適合于對(duì)來(lái)自老一些的以太網(wǎng)類型2(或版本2)DIX(DIGITAL-Intel-Xerox)分組的IEEE 802.3分組進(jìn)行不同的處理。
402專利系統(tǒng)能夠一直識(shí)別到會(huì)話層。在本發(fā)明中,對(duì)于任意特定協(xié)議要檢驗(yàn)的層數(shù)也有所變化。此外,本發(fā)明能夠一直檢驗(yàn)到足夠唯一標(biāo)識(shí)到一個(gè)必需層的任何層,甚至所有通往應(yīng)用層(在OSI模型中)的路線。
還知道其它一些現(xiàn)有技術(shù)中的系統(tǒng)。Phael在題為“網(wǎng)絡(luò)監(jiān)控設(shè)備和系統(tǒng)”的美國(guó)專利5,315,580中描述了一個(gè)只處理隨機(jī)選中的分組的網(wǎng)絡(luò)活動(dòng)監(jiān)控器。Nkamura在題為“網(wǎng)絡(luò)監(jiān)控系統(tǒng)”的美國(guó)專利4,891,639中講授了一個(gè)網(wǎng)絡(luò)監(jiān)控系統(tǒng)。Ross等人在題為“用于網(wǎng)絡(luò)分析的方法和設(shè)備”的美國(guó)專利5,247,517中講授了用于分析和監(jiān)控網(wǎng)絡(luò)活動(dòng)的方法和設(shè)備。McCreery等人在題為“分析Internet活動(dòng)的設(shè)備和方法”的美國(guó)專利5,787,253中描述了一個(gè)Internet活動(dòng)監(jiān)控器,該監(jiān)控器在Internet協(xié)議層上對(duì)分組數(shù)據(jù)進(jìn)行解碼。McCreery方法對(duì)IP分組進(jìn)行解碼。它對(duì)每個(gè)分組進(jìn)行解碼操作,并因此耗費(fèi)了對(duì)已識(shí)別流和未識(shí)別流進(jìn)行處理的總開(kāi)銷。在本發(fā)明的監(jiān)控器實(shí)現(xiàn)中,為每個(gè)流構(gòu)造一個(gè)簽名,這樣就很容易識(shí)別該流的將來(lái)分組。當(dāng)該流中的一個(gè)新的分組到達(dá)時(shí),識(shí)別方法能夠從它最后離開(kāi)的地方和構(gòu)造的新簽名開(kāi)始去識(shí)別流中的新分組。
網(wǎng)絡(luò)分析員應(yīng)該能夠分析多種不同的協(xié)議。在底層,有很多用在數(shù)字通信中的標(biāo)準(zhǔn),包括以太網(wǎng)、HDLC、ISDN、Lap B、ATM、X.25、幀中繼、數(shù)字?jǐn)?shù)據(jù)服務(wù)、FDDI(光纖分布式數(shù)據(jù)接口)、T1以及其它標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)中有很多都采用了不同的分組和/或幀格式。例如,數(shù)據(jù)在ATM和幀中繼系統(tǒng)中是以53個(gè)八位位組(也就是字節(jié))的固定長(zhǎng)度分組(稱為“單元”)進(jìn)行傳輸?shù)?。需要幾個(gè)這樣的單元來(lái)組成可能包含在其它一些協(xié)議為相同的有效負(fù)載而使用的分組的信息—例如在使用幀中繼標(biāo)準(zhǔn)或以太網(wǎng)協(xié)議的對(duì)話流中。
為了使網(wǎng)絡(luò)監(jiān)控器能夠分析不同的分組或幀格式,監(jiān)控器需要能夠在每個(gè)分組上執(zhí)行協(xié)議特定操作,每個(gè)分組都帶有遵守不同協(xié)議的信息并與不同的應(yīng)用有關(guān)。例如,監(jiān)控器需要能夠把不同格式的分組解析成字段以便理解封裝在不同字段中的數(shù)據(jù)。隨著可能的分組格式或類型數(shù)量的增加,需要用來(lái)解析這些不同分組格式的邏輯數(shù)量也隨之增加。
還有一些現(xiàn)有技術(shù)中的網(wǎng)絡(luò)監(jiān)控器對(duì)單個(gè)分組進(jìn)行解析并在不同的字段上尋找信息以便用它們構(gòu)造一個(gè)用于標(biāo)識(shí)分組的簽名。Chiu等人在題為“用于網(wǎng)絡(luò)會(huì)話的實(shí)時(shí)監(jiān)控和局域網(wǎng)的設(shè)備和方法”的美國(guó)專利5,101,402中描述了一個(gè)用于在計(jì)算機(jī)網(wǎng)絡(luò)的會(huì)話層上收集信息的方法。在這個(gè)專利中,為特定類型的分組指定了固定的位置。例如,如果出現(xiàn)了一個(gè)DECnet分組,Chiu系統(tǒng)就查看分組中的六個(gè)特定字段(在六個(gè)位置)以便識(shí)別該分組的會(huì)話。另一方面,如果出現(xiàn)了一個(gè)IP分組,就檢驗(yàn)一個(gè)包含六個(gè)位置的不同集合。該系統(tǒng)只從最低層查看到協(xié)議層。隨著協(xié)議的增殖,明確指定所有可能的位置以確定會(huì)話變得越來(lái)越困難。同樣的,添加一個(gè)新協(xié)議或應(yīng)用也很困難。
希望對(duì)特定類型的分組能夠適應(yīng)地確定位置以及要從任意分組中提取的信息。用這種方式,可以用協(xié)議-有關(guān)和分組-內(nèi)容-有關(guān)定義來(lái)定義一個(gè)最佳簽名,分組-內(nèi)容-有關(guān)定義規(guī)定了找什么和到哪里去找它以形成簽名。
這樣還需要網(wǎng)絡(luò)監(jiān)控器能夠適合不同的協(xié)議和不同的應(yīng)用程序或?yàn)樗鼈冞M(jìn)行特制。這樣還需要網(wǎng)絡(luò)監(jiān)控器能夠容納新協(xié)議和新的應(yīng)用程序。還需要用于指定新協(xié)議和新級(jí)別,包括新應(yīng)用,的裝置。還需要一種機(jī)制來(lái)描述協(xié)議特定操作,例如包括什么信息與分組有關(guān)、什么分組需要被解碼以及指定解析操作和提取操作。還需要一種機(jī)制來(lái)描述在處于流的一種特定識(shí)別狀態(tài)的分組上執(zhí)行的狀態(tài)操作以便促進(jìn)識(shí)別該流。
收集通過(guò)網(wǎng)絡(luò)中一點(diǎn)的分組上的統(tǒng)計(jì)信息比簡(jiǎn)單地對(duì)每個(gè)分組進(jìn)行計(jì)數(shù)要有利。通過(guò)在與對(duì)話流有關(guān)的流-入口中保持統(tǒng)計(jì)測(cè)量,本發(fā)明的實(shí)施方案能夠?qū)崟r(shí)收集特定的度量,否則將做不到這一點(diǎn)。例如,希望為對(duì)話中的每個(gè)交換保持與基于整個(gè)流的雙向?qū)υ捰嘘P(guān)的度量。通過(guò)保持流的狀態(tài),本發(fā)明的實(shí)施方案還能夠確定與流的狀態(tài)有關(guān)的特定度量。
現(xiàn)有技術(shù)中使用統(tǒng)計(jì)度量的多數(shù)流量監(jiān)控器只收集終點(diǎn)和會(huì)話終點(diǎn)的相關(guān)統(tǒng)計(jì)信息。這種通用度量的實(shí)例包括分組計(jì)數(shù)、字節(jié)計(jì)數(shù)、會(huì)話連接時(shí)間、會(huì)話超時(shí)、會(huì)話和傳輸響應(yīng)以及其它。所有這些都是對(duì)可以直接與單個(gè)分組中的事件有關(guān)的事件進(jìn)行處理。這些現(xiàn)有技術(shù)中的系統(tǒng)不能收集與網(wǎng)絡(luò)中流的完整分組序列或相同流的幾個(gè)已斷開(kāi)的序列有關(guān)的性能度量。
應(yīng)用數(shù)據(jù)分組上基于時(shí)間的度量是很重要的。如果能夠?yàn)楹髞?lái)的分析存儲(chǔ)并轉(zhuǎn)發(fā)所有的時(shí)間戳和相關(guān)數(shù)據(jù),就可以確定這樣的度量。但是,在面對(duì)每秒鐘有數(shù)千或數(shù)百萬(wàn)個(gè)對(duì)話甚至更快的網(wǎng)絡(luò)時(shí),存儲(chǔ)所有這些數(shù)據(jù),即使是壓縮過(guò)的數(shù)據(jù),也將占用過(guò)多的處理時(shí)間、存儲(chǔ)器以及管理器下載時(shí)間,因而是不可行的。
這樣就需要從那些從流中的分組積累起來(lái)的統(tǒng)計(jì)測(cè)量中保持并匯報(bào)基于時(shí)間的度量。
網(wǎng)絡(luò)數(shù)據(jù)被適當(dāng)?shù)啬M成對(duì)象總體而不是樣本。這樣,所有數(shù)據(jù)都需要進(jìn)行處理。因?yàn)閼?yīng)用協(xié)議的本性,只對(duì)一些分組進(jìn)行采樣無(wú)法給出關(guān)于流的好的測(cè)量。只要漏掉了一個(gè)重要分組,例如數(shù)據(jù)將要在其上進(jìn)行傳輸或者應(yīng)用程序?qū)⒁谄渖线\(yùn)行的指定的一個(gè)附加端口,就會(huì)導(dǎo)致有效數(shù)據(jù)的丟失。
這樣還需要從那些從流中的每個(gè)分組積累起來(lái)的統(tǒng)計(jì)測(cè)量中保持并匯報(bào)基于時(shí)間的度量。
還需要確定與事件序列有關(guān)的度量。一個(gè)好的例子是相對(duì)振動(dòng)。測(cè)量從一個(gè)方向上一個(gè)分組的末端到達(dá)同一方向上帶有相同簽名的另一個(gè)分組的時(shí)間就收集了與正常振動(dòng)有關(guān)的數(shù)據(jù)。這種類型的振動(dòng)度量對(duì)于在分組網(wǎng)絡(luò)中測(cè)量廣泛的信號(hào)質(zhì)量是很有用的。然而,它對(duì)正在一個(gè)分組集群中傳輸?shù)挠行ж?fù)載或數(shù)據(jù)項(xiàng)來(lái)說(shuō)卻不夠明確。
由于分組進(jìn)入系統(tǒng)的高速度,本發(fā)明的實(shí)時(shí)方案還包括一個(gè)高速緩存器。希望能夠使高速緩存器系統(tǒng)中的命中率達(dá)到最大。
現(xiàn)有技術(shù)中典型的高速緩存器系統(tǒng)用來(lái)加速進(jìn)出微處理器系統(tǒng)的存儲(chǔ)器訪問(wèn)。在現(xiàn)有技術(shù)中這樣的系統(tǒng)有幾種機(jī)制可以用來(lái)預(yù)測(cè)查找,這樣就可以使命中率達(dá)到最大。例如,現(xiàn)有技術(shù)中的高速緩存器系統(tǒng)可以使用前視機(jī)制來(lái)預(yù)測(cè)指令高速緩存器查找和數(shù)據(jù)高速緩存器查找。這樣的前視技術(shù)無(wú)法用于分組監(jiān)控應(yīng)用程序的高速緩存器子系統(tǒng)。當(dāng)一個(gè)新的分組進(jìn)入監(jiān)控器時(shí),下一個(gè)高速緩存器訪問(wèn),例如來(lái)自查找引擎,可能是與上一個(gè)高速緩存器查找完全不同的對(duì)話流的,這樣就無(wú)法提前知道下一個(gè)分組屬于什么流。
這樣在本領(lǐng)域中就需要一種適合用在分組監(jiān)控器中的高速緩存器子系統(tǒng)。希望這樣的高速緩存器系統(tǒng)能有的一種屬性是最近最少使用(LRU)替換策略,該策略在需要高速緩存器替換的時(shí)候替換LRU流-入口。替換最近最少使用的流-入口是優(yōu)選的,因?yàn)楦谧罱姆纸M后面的分組很可能和它屬于同一個(gè)流。這樣,新分組的簽名很可能匹配最近使用的流記錄。反之,與最近最少使用的流-入口相關(guān)的分組最不可能馬上到達(dá)。
經(jīng)常使用散列來(lái)加快查找。散列把記錄隨機(jī)散布在數(shù)據(jù)庫(kù)中。這種情況下,就希望能有一個(gè)聯(lián)合高速緩存器。
這樣就需要聯(lián)合高速緩存器子系統(tǒng)也包括LRU替換策略。
希望分組監(jiān)控器能夠維持流的狀態(tài)以執(zhí)行必要的任意狀態(tài)處理從而促進(jìn)確定與流相關(guān)的應(yīng)用程序的過(guò)程。這樣就需要一個(gè)狀態(tài)處理器來(lái)分析新的和現(xiàn)有的流以便按照應(yīng)用對(duì)它們進(jìn)行分類。
狀態(tài)處理器可能需要的一種通用操作是在分組內(nèi)容中查找一組已知字符串中的一個(gè)的存在情況。這樣的識(shí)別法對(duì)于促進(jìn)識(shí)別對(duì)話流的應(yīng)用內(nèi)容的方法非常有用。例如,可能希望查找與http協(xié)議相關(guān)的分組的統(tǒng)一資源定位符(URL),或者需要查找標(biāo)識(shí)協(xié)議或協(xié)議特征的特定字符串,例如字符串“port”、“get”、“post”等。這些字符串中的任意一個(gè)都可能在分組中,并且哪個(gè)字符串存在于分組中以及存在于分組中的什么地方通常是未知的。
在多數(shù)通用處理系統(tǒng)中,實(shí)現(xiàn)的指令集基本上是通用的。所有處理系統(tǒng)都有一個(gè)有關(guān)對(duì)指令和程序計(jì)數(shù)器的分析和操作的典型指令集。這些指令包括跳轉(zhuǎn)、調(diào)用和返回。另外,這些相同的處理系統(tǒng)包含合適的指令來(lái)分析和操作寄存器和存儲(chǔ)器區(qū)域。這些指令包括加、減、移動(dòng)、比較和邏輯操作。
雖然狀態(tài)處理器能夠包括這樣一個(gè)基本的標(biāo)準(zhǔn)指令集,但用這樣的標(biāo)準(zhǔn)指令集實(shí)現(xiàn)在目標(biāo)數(shù)據(jù)流中查找一個(gè)或多個(gè)已知的字符串可能會(huì)占用時(shí)間過(guò)長(zhǎng)以致無(wú)法適應(yīng)分組到達(dá)的高速度。因此希望有一個(gè)能夠執(zhí)行一些特定的查找功能的處理器,需要用它來(lái)對(duì)網(wǎng)絡(luò)上分組中的數(shù)據(jù)以及分組中數(shù)據(jù)的內(nèi)容極快地進(jìn)行計(jì)算。
尤其需要一個(gè)查找設(shè)備,它可以是狀態(tài)處理器的一部分并能夠在目標(biāo)數(shù)據(jù)流中快速查找指定的引用字符串。此外,需要有一個(gè)可編程處理器,它包含有調(diào)用查找設(shè)備執(zhí)行這樣的查找的指令。
在網(wǎng)絡(luò)監(jiān)控器中使用這樣的處理器就使得監(jiān)控器能夠度量并滿足任意的網(wǎng)絡(luò)速度需求。
發(fā)明內(nèi)容
本發(fā)明在它的幾個(gè)不同的實(shí)施方案中提供了一個(gè)網(wǎng)絡(luò)監(jiān)控器,它能夠?qū)崿F(xiàn)一個(gè)或多個(gè)下列目標(biāo)和優(yōu)勢(shì)●識(shí)別在客戶機(jī)和服務(wù)器之間進(jìn)行交換的所有分組并把它們歸類成各自的客戶機(jī)/服務(wù)器應(yīng)用。
●在所有協(xié)議層上識(shí)別并歸類在任一方向上通過(guò)網(wǎng)絡(luò)中一點(diǎn)的對(duì)話流。
●根據(jù)網(wǎng)絡(luò)上交換的單個(gè)分組確定客戶機(jī)和服務(wù)器之間的連接和流進(jìn)展。
●用來(lái)根據(jù)需要網(wǎng)絡(luò)資源的客戶機(jī)/服務(wù)器應(yīng)用的當(dāng)前混合幫助調(diào)節(jié)網(wǎng)絡(luò)性能。
●保持與使用網(wǎng)絡(luò)資源的客戶機(jī)/服務(wù)器應(yīng)用的混合有關(guān)的統(tǒng)計(jì)信息。
●報(bào)告由客戶機(jī)/服務(wù)器網(wǎng)絡(luò)對(duì)話流的特定應(yīng)用所用的特殊分組序列的出現(xiàn)。
本發(fā)明實(shí)施方案的其它方面●適當(dāng)分析在客戶機(jī)和服務(wù)器之間交換的每個(gè)分組并保持與這些對(duì)話流中每一個(gè)的當(dāng)前狀態(tài)有關(guān)的信息。
●提供一個(gè)靈活的處理系統(tǒng),當(dāng)新應(yīng)用進(jìn)入客戶機(jī)/服務(wù)器市場(chǎng)時(shí)可以對(duì)它進(jìn)行修改和調(diào)整。
●保持與客戶機(jī)/服務(wù)器網(wǎng)絡(luò)中的對(duì)話流有關(guān)的統(tǒng)計(jì)信息按照單個(gè)應(yīng)用進(jìn)行分類。
●報(bào)告一特定標(biāo)識(shí)符,它可被其它面向網(wǎng)絡(luò)的設(shè)備用來(lái)和特定客戶機(jī)/服務(wù)器網(wǎng)絡(luò)對(duì)話流的特定應(yīng)用一起識(shí)別分組串。
本發(fā)明的實(shí)施方案大體上克服了現(xiàn)有技術(shù)中的問(wèn)題和缺點(diǎn)。
像這里所描述的那樣,一種實(shí)施方案分析了在任意方向上通過(guò)網(wǎng)絡(luò)中任意點(diǎn)的每個(gè)分組,以便能夠得到用來(lái)在客戶機(jī)和服務(wù)器之間通信的實(shí)際應(yīng)用。注意有幾個(gè)同步且重疊的應(yīng)用程序通過(guò)獨(dú)立且異步的網(wǎng)絡(luò)執(zhí)行。
本發(fā)明的監(jiān)控器實(shí)施方案成功地對(duì)每個(gè)在網(wǎng)絡(luò)上看到的單個(gè)分組進(jìn)行了歸類。對(duì)分組內(nèi)容進(jìn)行解析并把選中的部分裝配成一個(gè)簽名(也稱為密鑰),它隨后被用于識(shí)別同一對(duì)話流的更多分組,例如進(jìn)一步分析該流并最終識(shí)別出應(yīng)用程序。這樣該密鑰就是選中部分的一個(gè)函數(shù),并且在優(yōu)選實(shí)施方案中,該函數(shù)是對(duì)選中部分的串聯(lián)。優(yōu)選實(shí)施方案形成并記住任意對(duì)話流的狀態(tài),這個(gè)狀態(tài)由網(wǎng)絡(luò)上的單個(gè)分組和整個(gè)對(duì)話流之間的關(guān)系來(lái)決定。通過(guò)以這種方式記住流的狀態(tài),實(shí)施方案就可以確定對(duì)話流的環(huán)境,包括它所相關(guān)的應(yīng)用程序以及像時(shí)間、對(duì)話流長(zhǎng)度、數(shù)據(jù)傳輸速率這樣的參數(shù)。
監(jiān)控器很靈活,能夠適應(yīng)為客戶機(jī)/服務(wù)器網(wǎng)絡(luò)所開(kāi)發(fā)的將來(lái)應(yīng)用程序??梢酝ㄟ^(guò)編譯用高級(jí)協(xié)議描述語(yǔ)言所寫的文件來(lái)引入新的協(xié)議和協(xié)議組合。
本發(fā)明的監(jiān)控器實(shí)施方案優(yōu)先用特定應(yīng)用集成電路(ASIC)或場(chǎng)可編程門陣列(FPGA)來(lái)實(shí)現(xiàn)。在一種實(shí)施方案中,監(jiān)控器包括解析器子系統(tǒng),它從分組形成簽名。此外監(jiān)控器還包括分析器子系統(tǒng),它從解析器子系統(tǒng)接收簽名。
像介質(zhì)訪問(wèn)控制(MAC)或分割重組模塊這樣的分組攔截設(shè)備用來(lái)向監(jiān)控器的解析器子系統(tǒng)提供分組。
在硬件實(shí)現(xiàn)中,解析子系統(tǒng)包括兩個(gè)子部分,模式分析與識(shí)別引擎(PRE)和提取引擎(限選器slicer)。PRE根據(jù)模式數(shù)據(jù)庫(kù)解釋每個(gè)分組,尤其解釋每個(gè)分組中的單個(gè)字段。
可以存在于不同層上的不同協(xié)議可被看作是由結(jié)點(diǎn)鏈接而成的一個(gè)或多個(gè)樹(shù)上的結(jié)點(diǎn)。分組類型是樹(shù)的根。每個(gè)協(xié)議是一個(gè)父親結(jié)點(diǎn)或者終端結(jié)點(diǎn)。父親結(jié)點(diǎn)把協(xié)議鏈接到可以在更高層的其它協(xié)議(子協(xié)議)上。例如,以太網(wǎng)分組(根結(jié)點(diǎn))可以是以太類型的分組—也稱作以太網(wǎng)類型/版本2和DIX(DIGITAL-Intel-Xerox分組)—或是IEEE 802.3分組。IEEE 802.3類型分組繼續(xù)下去,它的一個(gè)孩子結(jié)點(diǎn)可以是IP協(xié)議,IP協(xié)議的一個(gè)孩子結(jié)點(diǎn)可以是TCP協(xié)議。
模式數(shù)據(jù)庫(kù)包括對(duì)分組的不同報(bào)頭和它們的內(nèi)容,以及這些怎樣與樹(shù)中的不同結(jié)點(diǎn)發(fā)生關(guān)系的描述。PRE遍歷該樹(shù)直到它能到達(dá)的地方。如果一個(gè)結(jié)點(diǎn)不包括到更深層的鏈接,就宣告了模式的完全匹配。注意協(xié)議可以是幾個(gè)模式的孩子。如果為每個(gè)可能的父親/孩子樹(shù)產(chǎn)生一個(gè)唯一的結(jié)點(diǎn),模式數(shù)據(jù)庫(kù)將會(huì)變得非常龐大。替代方法是在多個(gè)父親之間共享孩子結(jié)點(diǎn),這樣能夠使模式數(shù)據(jù)庫(kù)變得緊湊一些。
最后當(dāng)只要求協(xié)議識(shí)別時(shí)PRE可以被用在它自己上面。
對(duì)識(shí)別出的每個(gè)協(xié)議,限選器從分組中提取重要的分組元素。這些形成分組的簽名(也就是密鑰)。限選器還為快速識(shí)別流優(yōu)先產(chǎn)生散列,該流可能擁有來(lái)自已知流的數(shù)據(jù)庫(kù)的這個(gè)簽名。
分組的流簽名、散列和至少一些有效負(fù)載被傳遞給分析器子系統(tǒng)。在硬件實(shí)施方案中,分析器子系統(tǒng)包括統(tǒng)一流鍵緩沖區(qū)(UFKB)、查找/更新引擎(LUE)、狀態(tài)處理器(SP)、流插入與刪除引擎(FIDE)、存儲(chǔ)器、和高速緩存器。UFKB用于接收來(lái)自解析器子系統(tǒng)的部分分組并存儲(chǔ)方法中的簽名。LUE在流記錄數(shù)據(jù)庫(kù)中查找以前遇到過(guò)的對(duì)話流以確定簽名是否來(lái)自一個(gè)現(xiàn)有的流。SP用于執(zhí)行狀態(tài)處理。FIDE用于往流數(shù)據(jù)庫(kù)中插入一個(gè)新的流。存儲(chǔ)器用于存儲(chǔ)流數(shù)據(jù)庫(kù)。高速緩存器用于加速對(duì)包含流數(shù)據(jù)庫(kù)的存儲(chǔ)器的訪問(wèn)。LUE、SP和FIDE都連接到UFKB和高速緩存器上。
這樣統(tǒng)一流鍵緩沖區(qū)就包含了分組的流簽名,散列和至少一些有效負(fù)載用于分析器子系統(tǒng)中的分析。盡管分組簽名存在于統(tǒng)一流鍵緩沖區(qū)中,仍然可以執(zhí)行許多操作以進(jìn)一步闡明客戶機(jī)/服務(wù)器對(duì)話流所涉及到的分組的應(yīng)用程序內(nèi)容的同一性。在分析器子系統(tǒng)的特定硬件實(shí)施方案中可以并行處理多個(gè)流,并且來(lái)自正在被并行分析的所有分組的多個(gè)流簽名也可被保存在UFKB中。
來(lái)自解析器的分組的分組分析方法的第一步是在已知分組流簽名的數(shù)據(jù)庫(kù)中查找實(shí)例。查找/更新引擎(LUE)首先用散列,然后用流簽名,來(lái)實(shí)現(xiàn)這個(gè)任務(wù)。查找在高速緩存器中進(jìn)行,并且如果高速緩存器中沒(méi)有帶有匹配簽名的流,查找引擎就試圖從存儲(chǔ)器中的流數(shù)據(jù)庫(kù)獲取流。以前遇到過(guò)的流的流-入口最好包括狀態(tài)信息,狀態(tài)信息被用在狀態(tài)處理器中以執(zhí)行為狀態(tài)而定義的任意操作并確定下一個(gè)狀態(tài)。一個(gè)典型的狀態(tài)操作是在存儲(chǔ)在UFKB中的分組的有效負(fù)載中查找一個(gè)或多個(gè)已知的引用字符串。
一旦LUE完成了查找處理,無(wú)論它找到了相應(yīng)的流或是發(fā)現(xiàn)這是一個(gè)新的流,都要在統(tǒng)一流鍵緩沖區(qū)結(jié)構(gòu)中為這個(gè)分組流簽名設(shè)置一個(gè)標(biāo)志聲明。對(duì)現(xiàn)有的流,由LUE的計(jì)算器部件對(duì)流-入口進(jìn)行更新,它給流-入口數(shù)據(jù)庫(kù)中的計(jì)數(shù)器增加一個(gè)值,流-入口數(shù)據(jù)庫(kù)用來(lái)存儲(chǔ)流的一個(gè)或多個(gè)統(tǒng)計(jì)測(cè)量。計(jì)數(shù)器用于確定流上的網(wǎng)絡(luò)使用度量。
在完成對(duì)分組流簽名的查找后,并且當(dāng)前流簽名的內(nèi)容在數(shù)據(jù)庫(kù)中時(shí),狀態(tài)處理器可以開(kāi)始分析分組有效負(fù)載以進(jìn)一步闡明這個(gè)分組的應(yīng)用程序組件的同一性。狀態(tài)處理器的提取操作以及由它執(zhí)行的功能根據(jù)對(duì)話流(flow)的流(stream)中的當(dāng)前分組序列而有所變化。狀態(tài)處理器從與同一個(gè)流簽名一起被看到的前一分組移動(dòng)到存儲(chǔ)的下一個(gè)邏輯操作。如果在這個(gè)分組上需要任何處理,狀態(tài)處理器將針對(duì)這個(gè)狀態(tài)執(zhí)行來(lái)自狀態(tài)指令數(shù)據(jù)庫(kù)的指令,直到?jīng)]有指令剩下或者遇到表示處理的指令為止。
在優(yōu)選實(shí)施方案中,狀態(tài)處理器功能是可編程的以便為分析新應(yīng)用程序、新的分組序列和能夠由使用這樣的應(yīng)用引起的狀態(tài)作準(zhǔn)備。
如果在查找這個(gè)特定分組流簽名的過(guò)程中需要把流插入到活動(dòng)數(shù)據(jù)庫(kù),就對(duì)流插入和刪除引擎(FIDE)進(jìn)行初始化。狀態(tài)處理器也可以創(chuàng)建新的流簽名并且這樣就可以命令流插入和刪除引擎把一個(gè)新的流作為一個(gè)新項(xiàng)插入到數(shù)據(jù)庫(kù)中。
在優(yōu)選硬件實(shí)施方案中,LUE、狀態(tài)處理器以及FIDE中的每一個(gè)都獨(dú)立于其它兩個(gè)引擎進(jìn)行操作。
本發(fā)明的另一個(gè)方面是收集與流有關(guān)的度量。使用這里描述的狀態(tài)處理,因?yàn)闋顟B(tài)處理器能夠查找特定的數(shù)據(jù)有效負(fù)載,可以對(duì)這里描述的所發(fā)明的監(jiān)控器的實(shí)施方案編程以便為流中與特定數(shù)據(jù)有效負(fù)載有關(guān)的一群分組收集相同的振動(dòng)度量。這就使得所發(fā)明的系統(tǒng)能夠提供更集中在與一組分組有關(guān)的質(zhì)量類型上的度量。通常在評(píng)價(jià)網(wǎng)絡(luò)中一個(gè)系統(tǒng)的性能時(shí)更希望有與單個(gè)分組相關(guān)的度量。
尤其可以對(duì)監(jiān)控系統(tǒng)編程以保持在對(duì)話流的任意狀態(tài)上任意類型的度量。監(jiān)控器還可以把實(shí)際的統(tǒng)計(jì)信息編程寫進(jìn)任意點(diǎn)的狀態(tài)中。這使得監(jiān)控器系統(tǒng)的實(shí)施方案能夠收集與網(wǎng)絡(luò)使用和性能有關(guān)的度量,以及與特定狀態(tài)或分組序列有關(guān)的度量。
可以只和狀態(tài)一起收集的一些特定度量是與在一個(gè)方向上的一組流量有關(guān)的事件,與在一個(gè)或兩個(gè)方向上通信序列的狀況有關(guān)的事件以及與特定序列中的特定應(yīng)用的分組交換有關(guān)的事件。這僅是需要引擎的度量的一個(gè)小樣本,該引擎能夠把流的狀態(tài)和一組度量聯(lián)系起來(lái)。
另外,因?yàn)楸O(jiān)控器提供對(duì)對(duì)話或流中的特定應(yīng)用更高的可見(jiàn)性,因而可以對(duì)監(jiān)控器編程以收集特別針對(duì)那種類型的應(yīng)用程序或服務(wù)的度量。換句話說(shuō),如果一個(gè)流是Oracle數(shù)據(jù)庫(kù)服務(wù)器的,監(jiān)控器的實(shí)施方案可以收集完成一次事務(wù)所要求的分組數(shù)量。只有與狀態(tài)和應(yīng)用分類一起才能從網(wǎng)絡(luò)得到這種類型的度量。
因?yàn)榭梢詫?duì)監(jiān)控器編程以收集不同組的度量,對(duì)那些在多種環(huán)境中都要求的度量來(lái)說(shuō)可以把本系統(tǒng)作為數(shù)據(jù)源。尤其是那些用來(lái)監(jiān)控并分析與特定應(yīng)用組有關(guān)的性能和傳輸流量的質(zhì)量的度量。其它實(shí)現(xiàn)可以包括與特定傳輸流量及其所帶事件的記帳和返還(charge-back)有關(guān)的度量。然而也可對(duì)其它實(shí)現(xiàn)進(jìn)行編程以提供對(duì)故障檢修和容量設(shè)計(jì)有用并直接與焦點(diǎn)應(yīng)用和服務(wù)有關(guān)的度量。
本發(fā)明的另一個(gè)方面是根據(jù)每個(gè)分組確定服務(wù)度量的質(zhì)量。
這樣就在這里就公開(kāi)了監(jiān)控設(shè)備的一個(gè)方法,用于分析通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)上一個(gè)連接點(diǎn)的分組的流。該方法包括從分組攔截設(shè)備接收分組,并在包含以前遇到的對(duì)話流的流-入口的流-入口數(shù)據(jù)庫(kù)中進(jìn)行查找。查找是為了確定收到的分組是否是一個(gè)現(xiàn)有的流。對(duì)每個(gè)分組都進(jìn)行了處理。如果該分組是一個(gè)現(xiàn)有的流,該方法就更新這個(gè)現(xiàn)有的流的流-入口,包括存儲(chǔ)一個(gè)或多個(gè)保存在流-入口中的統(tǒng)計(jì)測(cè)量。如果該分組是一個(gè)新流,該方法就在流-入口數(shù)據(jù)庫(kù)中為這個(gè)新流存儲(chǔ)一個(gè)新的流-入口,包括存儲(chǔ)一個(gè)或多個(gè)保存在流-入口中的統(tǒng)計(jì)測(cè)量。這些統(tǒng)計(jì)測(cè)量用來(lái)確定與流有關(guān)的度量。這些度量可以是來(lái)自服務(wù)度量被確定的質(zhì)量的基本度量,或者是服務(wù)度量的質(zhì)量。
這里還描述了一個(gè)聯(lián)合高速緩沖存儲(chǔ)器系統(tǒng),用于查找外部存儲(chǔ)器的一個(gè)或多個(gè)單元。高速緩沖存儲(chǔ)器系統(tǒng)包括連結(jié)到外部存儲(chǔ)器上的一組高速緩沖存儲(chǔ)器存儲(chǔ)單元,一組相聯(lián)存儲(chǔ)器單元(CAMs),每個(gè)CAM包含一個(gè)地址和指向一個(gè)高速緩沖存儲(chǔ)器單元的指針,以及一個(gè)帶有輸入的匹配電路,這樣CAM就在輸入和CAM單元中的地址相同時(shí)確認(rèn)一個(gè)匹配輸出。特定的CAM指向哪個(gè)高速緩沖存儲(chǔ)器單元是隨著時(shí)間變化的。在優(yōu)選實(shí)現(xiàn)中,CAMs被按照自頂至底的順序連接在一起,底部的CAM指向最近最少使用的高速緩沖存儲(chǔ)器單元。
這里還描述了一個(gè)處理器,用于處理通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)上一個(gè)連接點(diǎn)的分組的內(nèi)容。該處理器包括一個(gè)有一個(gè)或多個(gè)比較器的查找設(shè)備,比較器用于在分組內(nèi)容中查找引用字符串。處理器實(shí)時(shí)處理通過(guò)該連接點(diǎn)的所有分組的內(nèi)容。一種實(shí)現(xiàn)是,處理器是可編程的并且擁有一個(gè)指令集,指令集中包含調(diào)用查找設(shè)備從分組范圍內(nèi)的某個(gè)未知位置開(kāi)始查找指定的引用字符串的指令。
這里還公開(kāi)了可以用在該處理器中的查找設(shè)備的實(shí)施方案。該查找設(shè)備可配置用來(lái)從目標(biāo)數(shù)據(jù)中的一組起始位置中的任一個(gè)開(kāi)始在目標(biāo)數(shù)據(jù)中查找NR個(gè)單元的引用字符串。查找設(shè)備包括一個(gè)可配置用來(lái)接收包含引用字符串的NR個(gè)單元的引用寄存器;一個(gè)或多個(gè)連結(jié)成組以接收目標(biāo)數(shù)據(jù)的目標(biāo)數(shù)據(jù)寄存器;以及多個(gè)比較器集,每個(gè)比較器集對(duì)應(yīng)于一個(gè)起始位置。特定起始位置的比較器集連接到引用寄存器的每個(gè)單元以及從該特定起始位置開(kāi)始的目標(biāo)數(shù)據(jù)寄存器的NR單元上,并從該特定起始位置開(kāi)始比較引用寄存器內(nèi)容和目標(biāo)數(shù)據(jù)寄存器的NR個(gè)連續(xù)單元的對(duì)應(yīng)內(nèi)容。如果從一個(gè)比較器集的相應(yīng)不同起始位置開(kāi)始的目標(biāo)數(shù)據(jù)中有第一個(gè)引用字符串的匹配,那么該比較器就對(duì)此做出指示。如果在任意起始位置開(kāi)始的目標(biāo)數(shù)據(jù)寄存器中包含有第一個(gè)引用字符串,那么就由相應(yīng)的比較器集對(duì)此做出指示。
雖然通過(guò)參考詳細(xì)的優(yōu)選實(shí)施方案可以更好地理解本發(fā)明,但不應(yīng)該用這些來(lái)把本發(fā)明限制在任意特定的實(shí)施方案上面,因?yàn)檫@樣的實(shí)施方案只是用于說(shuō)明目的。還要借助下列附圖依次說(shuō)明這些實(shí)施方案。
圖1是本發(fā)明的網(wǎng)絡(luò)實(shí)施方案的功能框圖,其中的監(jiān)控器被連接用來(lái)分析通過(guò)一個(gè)連接點(diǎn)的分組。
圖2中的圖表把一些起始時(shí)可能交換的分組及其格式的實(shí)例描繪成說(shuō)明性實(shí)例,并描繪了在被監(jiān)控和分析的網(wǎng)絡(luò)上的客戶機(jī)和服務(wù)器之間的對(duì)話流。還描繪了這個(gè)實(shí)例和本發(fā)明的實(shí)施方案所特有的一對(duì)流簽名。描繪了一些可能的流簽名,在分析分組和識(shí)別產(chǎn)生離散應(yīng)用分組交換的特定服務(wù)器應(yīng)用的方法中可以產(chǎn)生并使用這些流簽名。
圖3是本發(fā)明的一種方法實(shí)施方案的功能框圖,它能夠像圖1中所示的分組監(jiān)控器那樣操作。這個(gè)方法可以用軟件或硬件來(lái)實(shí)現(xiàn)。
圖4是一種高級(jí)協(xié)議語(yǔ)言編譯及優(yōu)化方法的流程圖,它在一種實(shí)施方案中可用來(lái)根據(jù)本發(fā)明的版本為監(jiān)控分組產(chǎn)生數(shù)據(jù)。
圖5是分組解析方法的流程圖,該方法被用作所發(fā)明的分組監(jiān)控器的實(shí)施方案中解析器的一部分。
圖6是分組元素提取方法的流程圖,該方法被用作所發(fā)明的分組監(jiān)控器的實(shí)施方案中解析器的一部分。
圖7是流簽名構(gòu)造方法的流程圖,該方法被用作所發(fā)明的分組監(jiān)控器的實(shí)施方案中解析器的一部分。
圖8是監(jiān)控器查找和更新方法的流程圖,該方法被用作發(fā)明的分組監(jiān)控器的實(shí)施方案中分析器的一部分。
圖9是有代表性的Sun微系統(tǒng)遠(yuǎn)程過(guò)程調(diào)用應(yīng)用的流程圖,它可以被所發(fā)明的分組監(jiān)控器識(shí)別。
圖10是硬件解析器子系統(tǒng)的功能框圖,包括模式識(shí)別器和提取器,它們構(gòu)成了所發(fā)明的分組監(jiān)控器的實(shí)施方案中解析器模塊的一部分。
圖11是包括狀態(tài)處理器在內(nèi)的硬件分析器的功能框圖,它構(gòu)成了所發(fā)明的分組監(jiān)控器的實(shí)施方案的一部分。
圖12是流插入和刪除引擎方法的功能框圖,它構(gòu)成了所發(fā)明的分組監(jiān)控器的實(shí)施方案中分析器的一部分。
圖13是狀態(tài)處理方法的流程圖,它構(gòu)成了所發(fā)明的分組監(jiān)控器的實(shí)施方案中分析器的一部分。
圖14是本發(fā)明的方法實(shí)施方案的簡(jiǎn)單功能框圖,它能夠像圖1中所示的分組監(jiān)控器那樣進(jìn)行操作。這個(gè)方法可以用軟件實(shí)現(xiàn)。
圖15是圖3(以及圖10和圖11)的分組監(jiān)控器怎樣用像微處理器這樣的處理器在網(wǎng)絡(luò)上進(jìn)行操作的功能框圖。
圖16是以太網(wǎng)分組的頂(MAC)層以及可以根據(jù)本發(fā)明的一個(gè)方面被提取出來(lái)形成簽名的一些元素的實(shí)例。
圖17A是圖16的以太網(wǎng)分組的以太網(wǎng)類型報(bào)頭以及可以根據(jù)本發(fā)明的一個(gè)方面被提取出來(lái)形成簽名的一些元素的實(shí)例。
圖17B是IP分組,例如圖16中所示的以太網(wǎng)分組,以及可以根據(jù)本發(fā)明的一個(gè)方面被提取出來(lái)形成簽名的一些元素的實(shí)例。
圖18A是用來(lái)存儲(chǔ)模式元素、解析和提取數(shù)據(jù)庫(kù)元素的三維結(jié)構(gòu),該數(shù)據(jù)庫(kù)根據(jù)本發(fā)明的一個(gè)實(shí)施方案可被解析器子系統(tǒng)所使用。
圖18B是存儲(chǔ)模式元素、解析和提取數(shù)據(jù)庫(kù)的一種替代形式,該數(shù)據(jù)庫(kù)根據(jù)本發(fā)明的一個(gè)實(shí)施方案可被解析器子系統(tǒng)使用。
圖19是圖11的分析器子系統(tǒng)中狀態(tài)處理器部件的框圖。
圖20是圖11的分析器子系統(tǒng)中查找引擎部件的框圖。
圖21是一個(gè)數(shù)據(jù)流框圖,顯示了查找引擎的四個(gè)單獨(dú)的查找模塊。
圖22A是查找引擎核心的框圖;圖22B顯示了核心中的比較器部件,它對(duì)一組輸入和另一組輸入進(jìn)行比較。
圖23A更詳細(xì)地顯示了輸入核心的實(shí)現(xiàn);圖23B顯示了核心的比較器部件。
圖24顯示了不同的PDL文件模塊,它們都由圖20中作為實(shí)例描述的編譯方法按照本發(fā)明的編譯方面進(jìn)行編譯。
圖25是根據(jù)本發(fā)明的一個(gè)方面編譯高級(jí)語(yǔ)言文件的方法的流程圖。
圖26是圖11的分析器子系統(tǒng)中高速緩存器子系統(tǒng)1115中的高速緩沖存儲(chǔ)器存儲(chǔ)部分。
圖27是高速緩存器子系統(tǒng)中高速緩沖存儲(chǔ)器存儲(chǔ)控制器和CAM控制器的框圖。
圖28是高速緩存器子系統(tǒng)1115中CAM陣列的一種實(shí)現(xiàn)的框圖。
具體實(shí)施例方式
注意本文檔包括可能包括信號(hào)名的硬件圖表及描述。多數(shù)情況下,這些名字就可以充分描述,但其它情況下并不需要用它們來(lái)理解本發(fā)明的操作和實(shí)踐。
網(wǎng)絡(luò)中的操作圖1描繪了本發(fā)明的一個(gè)系統(tǒng)實(shí)施方案,這里用通用標(biāo)號(hào)100來(lái)指代它。系統(tǒng)100有一個(gè)在不同計(jì)算機(jī)之間傳遞分組(例如,IP數(shù)據(jù)報(bào))的計(jì)算機(jī)網(wǎng)絡(luò)102,例如在客戶機(jī)104-107和服務(wù)器110和112之間。該網(wǎng)絡(luò)被以示意圖的形式顯示為帶有幾個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)和鏈接的一片云,網(wǎng)絡(luò)結(jié)點(diǎn)和鏈接顯示在云的內(nèi)部。監(jiān)控器108檢驗(yàn)在任一方向上通過(guò)它的連接點(diǎn)121的分組,并且能夠根據(jù)本發(fā)明的一個(gè)方面闡明與每個(gè)分組相聯(lián)的是什么應(yīng)用程序。圖中所示監(jiān)控器108正在檢驗(yàn)在服務(wù)器110的網(wǎng)絡(luò)接口116和網(wǎng)絡(luò)之間的分組(即數(shù)據(jù)報(bào))。監(jiān)控器還可以放在網(wǎng)絡(luò)中的其它點(diǎn)上,例如網(wǎng)絡(luò)102和客戶機(jī)104的接口118之間的連接點(diǎn)123,或者像網(wǎng)絡(luò)102中某處的連接點(diǎn)125所指示的其它位置。沒(méi)有顯示出來(lái)的是在網(wǎng)絡(luò)的123位置上的網(wǎng)絡(luò)分組攔截設(shè)備,它把網(wǎng)絡(luò)上的物理信息轉(zhuǎn)換成能夠輸入到監(jiān)控器108中的分組。這樣的分組攔截設(shè)備是通用的。
網(wǎng)絡(luò)可以采用多種協(xié)議來(lái)建立并維持必需的通信,例如可以用TCP/IP協(xié)議等。任意網(wǎng)絡(luò)活動(dòng)—例如由客戶機(jī)104(客戶機(jī)1)運(yùn)行的一個(gè)應(yīng)用程序和在服務(wù)器110(服務(wù)器2)上運(yùn)行的另一個(gè)應(yīng)用程序進(jìn)行通信—都將產(chǎn)生在網(wǎng)絡(luò)102上的分組序列交換,這正是各自的應(yīng)用程序和網(wǎng)絡(luò)協(xié)議的特征。這樣的特征在單個(gè)分組級(jí)上毫無(wú)啟迪作用??梢砸笥杀O(jiān)控器108對(duì)許多分組進(jìn)行分析以擁有足夠的所需信息來(lái)識(shí)別特定的應(yīng)用程序??赡苄枰诓煌瑓f(xié)議的環(huán)境中對(duì)分組進(jìn)行解析和分析,例如,符合ISO分層網(wǎng)絡(luò)模型的一種類型的分組通過(guò)應(yīng)用會(huì)話層進(jìn)行傳輸。
通信協(xié)議是分層的,它也被稱作協(xié)議棧。ISO(國(guó)際標(biāo)準(zhǔn)化組織)已經(jīng)定義了一個(gè)通用模型,它為通信協(xié)議層的設(shè)計(jì)提供了一個(gè)框架。下面的表格中顯示了這個(gè)模型,充當(dāng)理解現(xiàn)有通信協(xié)議功能的基本參考。
ISO模型
不同的通信協(xié)議采用ISO模型的不同層,或者使用與ISO模型類似但并不嚴(yán)格遵守它的分層模型。特定層中的協(xié)議對(duì)其它層上所用的協(xié)議可以是不可見(jiàn)的。例如,一個(gè)應(yīng)用(第7級(jí))可能無(wú)法識(shí)別一個(gè)通信嘗試(2-3層)的源計(jì)算機(jī)。
在一些通信技術(shù)中,術(shù)語(yǔ)“幀”通常指在OSI第二層上封裝的數(shù)據(jù),包括目的地址、流控制的控制位、數(shù)據(jù)或有效負(fù)載以及用于錯(cuò)誤校驗(yàn)的CRC(循環(huán)冗余校驗(yàn))數(shù)據(jù)。術(shù)語(yǔ)“分組”通常指在OSI第三層上封裝的數(shù)據(jù)。在TCP/IP世界中,還使用了術(shù)語(yǔ)“數(shù)據(jù)報(bào)”。在本規(guī)范中,術(shù)語(yǔ)“分組”意指包括分組、數(shù)據(jù)報(bào)、幀和單元。通常,分組格式或幀格式指如何用不同的字段和報(bào)頭封裝數(shù)據(jù)以便通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸。例如,數(shù)據(jù)分組通常包括目的地址字段、長(zhǎng)度字段、糾錯(cuò)碼(ECC)字段或循環(huán)冗余校驗(yàn)(CRC)字段以及標(biāo)識(shí)分組的開(kāi)始和結(jié)束的報(bào)頭和報(bào)尾。術(shù)語(yǔ)“分組格式”和“幀格式”是同義的,也稱作“單元格式”。
監(jiān)控器108查看通過(guò)連接點(diǎn)121的每個(gè)分組以便分析。但是,并非每個(gè)分組都帶有對(duì)識(shí)別協(xié)議的所有層次有用的相同信息。例如,在和一個(gè)特定應(yīng)用相聯(lián)的對(duì)話流中,應(yīng)用將使服務(wù)器發(fā)送一個(gè)A類型的分組,但其它應(yīng)用也將如此。然而,如果特定的應(yīng)用程序總是在A類型的分組之后緊跟著發(fā)送一個(gè)B類型的分組,而其它的應(yīng)用程序并不這樣做,那么為了識(shí)別那個(gè)應(yīng)用的對(duì)話流的分組,可用監(jiān)控器識(shí)別匹配與A類型分組相聯(lián)的B類型分組的分組。如果在一個(gè)A類型分組之后識(shí)別出了這樣的分組,那么該特定應(yīng)用程序的對(duì)話流就已經(jīng)開(kāi)始向監(jiān)控器108揭示它自己。
在識(shí)別出對(duì)話流與某應(yīng)用程序相聯(lián)之前還需要檢驗(yàn)更多的分組。通常,監(jiān)控器108只能同時(shí)部分完成對(duì)其它應(yīng)用相關(guān)對(duì)話流中的分組交換的識(shí)別。監(jiān)控器108的一個(gè)方面是它能夠保持流的狀態(tài)。流的狀態(tài)是對(duì)流中能夠?qū)е伦R(shí)別所有協(xié)議層內(nèi)容—例如ISO模型協(xié)議級(jí)別—的所有以前事件的指示。本發(fā)明的另一個(gè)方面形成提取出的分組特征部分的簽名,它可以用來(lái)快速識(shí)別屬于相同流的分組。
在對(duì)監(jiān)控器108的實(shí)際使用中,在網(wǎng)絡(luò)102上通過(guò)監(jiān)控器108的連接點(diǎn)的分組數(shù)可達(dá)每秒百萬(wàn)個(gè)之多。因此,監(jiān)控器只有很少的時(shí)間可以用來(lái)對(duì)每個(gè)分組進(jìn)行分析并測(cè)定類型以及識(shí)別并維護(hù)通過(guò)連接點(diǎn)的流的狀態(tài)。監(jiān)控器108因此屏蔽每個(gè)分組中所有那些對(duì)它的分類沒(méi)有貢獻(xiàn)的不重要的部分。但是,每個(gè)分組中要屏蔽的部分根據(jù)分組所屬的流以及流的狀態(tài)不同而變化。
根據(jù)應(yīng)用程序的執(zhí)行所產(chǎn)生的分組識(shí)別出分組類型并最終識(shí)別出相聯(lián)的應(yīng)用程序在監(jiān)控器108中是一個(gè)多步方法。例如,第一步,幾個(gè)應(yīng)用程序都將產(chǎn)生第一種分組。從分組的選中部分產(chǎn)生的第一個(gè)“簽名”將使得監(jiān)控器108能夠有效地識(shí)別屬于同一流的任何分組。某些情況下,僅分組類型就能讓監(jiān)控器識(shí)別出在對(duì)話流中產(chǎn)生這樣的分組的應(yīng)用。隨后該簽名可用來(lái)有效識(shí)別在與該應(yīng)用有關(guān)的流量中產(chǎn)生的所有將來(lái)分組。
在其它情況下,第一個(gè)分組僅僅啟動(dòng)分析對(duì)話流的方法,還需要更多分組來(lái)識(shí)別相關(guān)的應(yīng)用程序。在這種情況下,要用簽名識(shí)別第二種類型的后繼分組—但它也可能屬于同一個(gè)對(duì)話流。隨后在第二步那些應(yīng)用程序中只有少數(shù)擁有能夠產(chǎn)生第二種分組類型的對(duì)話流。在分類方法的這一步中,所有不能產(chǎn)生這樣的分組類型序列的應(yīng)用程序都被排除在對(duì)包含這兩種分組的對(duì)話流進(jìn)行分類的方法之外。根據(jù)用協(xié)議和可能的應(yīng)用的已知模式產(chǎn)生一個(gè)簽名,它能夠識(shí)別跟隨在對(duì)話流中的任何將來(lái)分組。
現(xiàn)在可能已經(jīng)識(shí)別出了該應(yīng)用,或者識(shí)別還需要用第二步中的簽名來(lái)繼續(xù)進(jìn)行第三步分析。因此,對(duì)每個(gè)分組,監(jiān)控器都要對(duì)分組進(jìn)行解析并產(chǎn)生一個(gè)簽名,以確定這個(gè)簽名是否和一個(gè)以前遇到過(guò)的流相一致,或者用來(lái)識(shí)別屬于同一流的將來(lái)分組。在以前遇到過(guò)的分組序列環(huán)境(狀態(tài))以及過(guò)去的序列在與不同應(yīng)用相關(guān)的對(duì)話流中可能產(chǎn)生的將來(lái)序列的環(huán)境中進(jìn)一步實(shí)時(shí)分析分組。還可以產(chǎn)生用于識(shí)別將來(lái)分組的新簽名。分析過(guò)程繼續(xù)進(jìn)行直到識(shí)別出應(yīng)用為止。最后產(chǎn)生的簽名隨后可以用來(lái)有效識(shí)別與同一對(duì)話流相關(guān)的將來(lái)分組。這樣的裝置使得監(jiān)控器108能夠應(yīng)付每秒成百萬(wàn)個(gè)必須被檢查的分組。
本發(fā)明的另一個(gè)方面是增加竊聽(tīng)(Eavesdropping)。在本發(fā)明的能夠竊聽(tīng)的實(shí)施方案中,一旦監(jiān)控器108識(shí)別出通過(guò)網(wǎng)絡(luò)102中某一點(diǎn)正在執(zhí)行的應(yīng)用程序(例如,因?yàn)榭蛻魴C(jī)105或服務(wù)器110所執(zhí)行的應(yīng)用),監(jiān)控器向網(wǎng)絡(luò)上的一些通用處理器發(fā)送一個(gè)消息,這些處理器能夠輸入來(lái)自網(wǎng)絡(luò)上同一位置的分組,并隨后裝入屬于它自己的該應(yīng)用程序的可執(zhí)行副本并用它來(lái)讀取網(wǎng)絡(luò)上正在交換的內(nèi)容。換句話說(shuō),一旦監(jiān)控器108完成了對(duì)應(yīng)用程序的識(shí)別,竊聽(tīng)就開(kāi)始啟動(dòng)了。
網(wǎng)絡(luò)監(jiān)控器圖3顯示了一種網(wǎng)絡(luò)分組監(jiān)控器300,在本發(fā)明的實(shí)施方案中可以用計(jì)算機(jī)硬件和/或軟件來(lái)實(shí)現(xiàn)它。系統(tǒng)300與圖1中的監(jiān)控器108相似。檢驗(yàn)分組302,例如,分組可以來(lái)自網(wǎng)絡(luò)102中121位置上(圖1)的分組攔截設(shè)備,對(duì)分組進(jìn)行估計(jì)以試圖確定它的特征,例如多層模型中的所有協(xié)議信息以及什么應(yīng)用產(chǎn)生了該分組。
分組攔截設(shè)備是一個(gè)通用接口,它對(duì)物理信號(hào)進(jìn)行轉(zhuǎn)換并隨后把它們解碼成位,并根據(jù)特定的網(wǎng)絡(luò)(以太網(wǎng)、幀中繼、ATM等)把它們解碼成分組。分組攔截設(shè)備向監(jiān)控器108指示攔截到的一個(gè)或多個(gè)分組的網(wǎng)絡(luò)類型。
這里所顯示的方面包括(1)對(duì)監(jiān)控器進(jìn)行初始化以產(chǎn)生需要在不同類型的分組上執(zhí)行的操作—由編譯器和優(yōu)化器完成,(2)對(duì)分組進(jìn)行處理—解析并提取選中部分—以產(chǎn)生一個(gè)識(shí)別簽名—由解析器子系統(tǒng)301完成,和(3)分析分組一由分析器303實(shí)現(xiàn)。
編譯器和優(yōu)化器310的目的是提供協(xié)議特定信息給解析器子系統(tǒng)301和分析器子系統(tǒng)303。在監(jiān)控器的操作之前要對(duì)其進(jìn)行初始化,并且只在有新協(xié)議加入時(shí)才需要重復(fù)初始化動(dòng)作。
流是正在網(wǎng)絡(luò)中的任意兩個(gè)地址之間交換的分組序列。對(duì)每個(gè)協(xié)議都有幾個(gè)已知的字段,像目的(接收者)、源(發(fā)送者)等等,在監(jiān)控器300中用這些和其它字段來(lái)識(shí)別流。還有其它一些字段對(duì)識(shí)別流不太重要,像校驗(yàn)和以及那些不用于識(shí)別的部分。
解析器子系統(tǒng)301用模式識(shí)別方法304檢驗(yàn)分組,該方法對(duì)分組進(jìn)行解析并確定協(xié)議類型以及分組302中存在的每個(gè)協(xié)議層的相關(guān)報(bào)頭。解析器子系統(tǒng)中的提取方法306從分組302中提取出特征部分(簽名信息)。用于解析和有關(guān)提取操作的模式信息,例如提取掩碼,都由解析模式結(jié)構(gòu)和提取操作數(shù)據(jù)庫(kù)(解析/提取數(shù)據(jù)庫(kù))308提供,由編譯器和優(yōu)化器310對(duì)這個(gè)數(shù)據(jù)庫(kù)進(jìn)行填充。
協(xié)議描述語(yǔ)言(PDL)文件336描述了可以在任意層上出現(xiàn)的模式和所有協(xié)議的狀態(tài),包括怎樣解釋報(bào)頭信息,怎樣從分組報(bào)頭信息確定下一層上的協(xié)議,以及為了識(shí)別流并最終識(shí)別出應(yīng)用和服務(wù)要提取什么信息。層次選擇數(shù)據(jù)庫(kù)338描述了由監(jiān)控器處理的特定分層操作。也就是說(shuō),在任意層的協(xié)議之上運(yùn)行的是什么協(xié)議。這樣336和338就聯(lián)合描述了怎樣解碼、分析并理解分組中的信息,以及另外怎樣對(duì)信息分層。這個(gè)信息被輸入到編譯器和優(yōu)化器310中。
當(dāng)編譯器和優(yōu)化器310執(zhí)行時(shí),它產(chǎn)生兩組內(nèi)部數(shù)據(jù)結(jié)構(gòu)。第一組是解析/提取操作的集合308。模式結(jié)構(gòu)包括解析信息并描述在分組的報(bào)頭中將要識(shí)別什么;提取操作是根據(jù)已經(jīng)匹配的模式將要提取出分組中的什么元素。這樣,解析/提取操作數(shù)據(jù)庫(kù)308包括描述怎樣從分組的數(shù)據(jù)確定一組一個(gè)或多個(gè)協(xié)議有關(guān)提取操作的信息,這些操作指示分組中所用的協(xié)議。
由編譯器310構(gòu)造的其它內(nèi)部數(shù)據(jù)結(jié)構(gòu)是狀態(tài)模式和方法的集合326。這些是發(fā)生在不同對(duì)話流中的不同狀態(tài)和狀態(tài)轉(zhuǎn)換,以及在對(duì)話流的任意狀態(tài)中需要執(zhí)行以促進(jìn)分析話流任務(wù)的狀態(tài)操作(例如,需要檢驗(yàn)的模式和需要構(gòu)造的新簽名)。
這樣,編譯PDL和層次選擇向監(jiān)控器300提供了它需要用來(lái)開(kāi)始處理分組的信息。在替代實(shí)施方案中,可以手動(dòng)或自動(dòng)產(chǎn)生數(shù)據(jù)庫(kù)308和326中一個(gè)或多個(gè)結(jié)構(gòu)的內(nèi)容。注意,在一些實(shí)施方案中層次選擇信息是內(nèi)在的而沒(méi)有明確描述。例如,既然協(xié)議的PDL文件包括了子協(xié)議,那么父協(xié)議也可以被確定。
在優(yōu)選實(shí)施方案中,來(lái)自攔截設(shè)備的分組302被輸入到分組緩沖區(qū)中。由模式分析與識(shí)別引擎(PAR)執(zhí)行模式識(shí)別方法304,PAR分析并識(shí)別分組中的模式。尤其是PAR定位報(bào)頭中的下一協(xié)議字段并確定報(bào)頭的長(zhǎng)度,并為特定類型的協(xié)議報(bào)頭執(zhí)行其它特定任務(wù)。這種操作的一個(gè)實(shí)例是對(duì)進(jìn)行類型和長(zhǎng)度比較以區(qū)分IEEE 802.3(以太網(wǎng))分組和較老的類型2(或版本2)以太網(wǎng)分組,也稱為DIX(DIGITAL-Intel-Xerox)分組。PAR還用模式結(jié)構(gòu)和提取操作數(shù)據(jù)庫(kù)308來(lái)識(shí)別下一個(gè)協(xié)議以及與該協(xié)議相關(guān)聯(lián)的參數(shù),這些使PAR能夠分析下一個(gè)協(xié)議。一旦識(shí)別出一個(gè)或一組模式,它/它們將與一組零個(gè)或多個(gè)提取操作相聯(lián)。這些提取操作(以命令及相關(guān)參數(shù)形式)被傳遞給由提取和信息識(shí)別(EII)引擎實(shí)現(xiàn)的提取方法306,EII引擎從分組中提取選中的部分,包括為標(biāo)識(shí)該分組為某個(gè)流的一部分而需要的標(biāo)識(shí)信息。提取出的信息被依次放置并隨后在312框中對(duì)它們進(jìn)行處理以構(gòu)造這個(gè)流的唯一流簽名(也稱為“鍵”)。流簽名依賴于分組中所用的協(xié)議。對(duì)于某些協(xié)議,提取出的成分可能包括源和目的地址。例如,以太網(wǎng)幀里的終端地址對(duì)構(gòu)造更好的流簽名十分有用。這樣,簽名通常包括客戶機(jī)和服務(wù)器地址對(duì)。簽名用來(lái)識(shí)別更多是這個(gè)流或可能是這個(gè)流的一部分的分組。
在優(yōu)選實(shí)施方案中,構(gòu)造流鍵包括用散列函數(shù)產(chǎn)生簽名的散列。目的—如果使用這樣的散列很方便的話—是把由簽名標(biāo)識(shí)的流-入口散布在數(shù)據(jù)庫(kù)中以便能夠有效查找。所產(chǎn)生的散列最好是根據(jù)散列算法并且這樣的散列生成也為本領(lǐng)域中的技術(shù)人員所知。
在一種實(shí)施方案中,解析器把來(lái)自分組并包括簽名在內(nèi)的數(shù)據(jù)—解析器記錄—(即分組中選中的部分)、散列及分組本身傳遞下去以能夠執(zhí)行需要來(lái)自分組的更多數(shù)據(jù)的任意狀態(tài)處理。解析器子系統(tǒng)的改進(jìn)實(shí)施方案可以產(chǎn)生解析器記錄,其中有一些預(yù)定義的結(jié)構(gòu)并且包括簽名、散列、與解析器記錄中的一些字段有關(guān)的一些標(biāo)志以及解析器子系統(tǒng)已經(jīng)確定的部分分組有效負(fù)載,對(duì)分組進(jìn)行進(jìn)一步的處理,例如狀態(tài)處理,可能需要這個(gè)解析器記錄。
注意替代實(shí)施方案可以使用除了把分組的選中部分連接起來(lái)之外的一些函數(shù)來(lái)構(gòu)造標(biāo)識(shí)簽名。例如,可以使用串聯(lián)的選中部分的一些“摘要函數(shù)”。
解析器記錄被傳遞到查找方法314上,它觀察系統(tǒng)已經(jīng)遇到過(guò)的已知流的內(nèi)部記錄數(shù)據(jù)存儲(chǔ)中,并判斷(在316中)這個(gè)特定的分組是否屬于一個(gè)已知流,由數(shù)據(jù)庫(kù)324中是否存在匹配這個(gè)流的流-入口指示判斷結(jié)果。數(shù)據(jù)庫(kù)324中的每個(gè)記錄與一個(gè)遇到過(guò)的流相關(guān)。
解析器記錄進(jìn)入被稱為統(tǒng)一流鍵緩沖區(qū)(UFKB)的緩沖區(qū)中。UFKB在與解析器記錄相似的數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)流上的數(shù)據(jù),但它還包含一個(gè)可以修改的字段。尤其是有一個(gè)UFKB記錄字段存儲(chǔ)分組序號(hào),另一個(gè)字段以狀態(tài)處理器的程序計(jì)數(shù)器形式用狀態(tài)信息進(jìn)行填充,狀態(tài)處理器實(shí)現(xiàn)狀態(tài)處理328。
判定帶有相同簽名的記錄是否已經(jīng)存在由查找引擎(LUE)執(zhí)行,LUE獲得新的UFKB記錄并用其中的散列地址去查找是否有匹配的已知流。在特定的實(shí)施方案中,已知流數(shù)據(jù)庫(kù)324是在外部存儲(chǔ)器中。有一個(gè)高速緩存器與數(shù)據(jù)庫(kù)324相聯(lián)。LUE通過(guò)使用散列地址訪問(wèn)高速緩存器以查找已知記錄,如果該入口不在高速緩存器中,就到外部存儲(chǔ)器中查找該入口。
流-入口數(shù)據(jù)庫(kù)324所存儲(chǔ)的流-入口包括唯一流簽名、狀態(tài)信息、從分組中提取用于更新流的信息以及關(guān)于流的一個(gè)或多個(gè)統(tǒng)計(jì)信息。每個(gè)入口完整地描述了一個(gè)流。數(shù)據(jù)庫(kù)324被組織成包含N個(gè)流-入口(也稱為存儲(chǔ)桶,每個(gè)對(duì)應(yīng)一個(gè)流-入口)的存儲(chǔ)柜,在優(yōu)選實(shí)施方案中N等于4。通過(guò)來(lái)自解析器子系統(tǒng)301的分組中的散列(即UFKB記錄中的散列)對(duì)存儲(chǔ)桶(即流-入口)進(jìn)行訪問(wèn)。散列提供更淺的存儲(chǔ)桶把流散布在數(shù)據(jù)庫(kù)中以便能夠快速查找入口。設(shè)計(jì)者根據(jù)監(jiān)控器所帶的存儲(chǔ)器的數(shù)量選擇存儲(chǔ)桶深度N以及所用散列數(shù)據(jù)值的位數(shù)。例如,在一種實(shí)施方案中,每個(gè)流-入口都是128個(gè)字節(jié),同時(shí)有128K個(gè)流-入口,因而需要16M字節(jié)的存儲(chǔ)器。使用16位的散列可以在每個(gè)存儲(chǔ)桶中給出兩個(gè)流-入口。經(jīng)驗(yàn)顯示這在大多數(shù)情況下都是足夠的。注意別的實(shí)施方案使用了256字節(jié)長(zhǎng)的流-入口。
這里描述了任何時(shí)候?qū)?shù)據(jù)庫(kù)324的訪問(wèn),可以理解該訪問(wèn)是通過(guò)高速緩存器進(jìn)行的,除非它被從環(huán)境中重置或清除。
如果沒(méi)有找到區(qū)配新流的簽名的流-入口,那么協(xié)議和狀態(tài)識(shí)別方法318就進(jìn)一步確定狀態(tài)和協(xié)議。也就是說(shuō),方法318確定協(xié)議以及在這個(gè)協(xié)議的這個(gè)分組所屬的流的狀態(tài)序列中的什么地方。識(shí)別方法318使用提取出的信息并參考狀態(tài)模式和方法數(shù)據(jù)庫(kù)326。方法318后面跟的是需要由狀態(tài)處理器328在這個(gè)分組上執(zhí)行的狀態(tài)操作。
如果在數(shù)據(jù)庫(kù)324(例如,在高速緩存器中)中找到了與該分組匹配的流-入口,那么方法320就從查找到的流-入口確定是否需要由流簽名的狀態(tài)進(jìn)行更多分類。如果不需要,方法322就更新流-入口數(shù)據(jù)庫(kù)中的流-入口(例如,通過(guò)高速緩存器)。更新包括更新存儲(chǔ)在流-入口中的一個(gè)或多個(gè)統(tǒng)計(jì)測(cè)量。在我們的實(shí)施方案中,統(tǒng)計(jì)測(cè)量存儲(chǔ)在流-入口中的計(jì)數(shù)器里。
如果需要進(jìn)行狀態(tài)處理,就開(kāi)始狀態(tài)方法328。狀態(tài)處理器328執(zhí)行為該流的狀態(tài)指定的任意狀態(tài)操作并更根據(jù)從狀態(tài)模式和方法數(shù)據(jù)庫(kù)326獲得的一組狀態(tài)指令把狀態(tài)更新到下一個(gè)狀態(tài)。
狀態(tài)處理器328對(duì)新的和現(xiàn)有的流進(jìn)行分析以分析協(xié)議棧的所有層,最終按照應(yīng)用(ISO模型中的第七層)對(duì)流進(jìn)行分類。它通過(guò)根據(jù)預(yù)定義的狀態(tài)轉(zhuǎn)換規(guī)和狀態(tài)處理器指令數(shù)據(jù)庫(kù)326中指定的指令從狀態(tài)-到-狀態(tài)進(jìn)行來(lái)做到這一點(diǎn)。狀態(tài)轉(zhuǎn)換規(guī)則通常包含一個(gè)測(cè)試以及緊隨在其后的在測(cè)試結(jié)果為真時(shí)進(jìn)行的下一狀態(tài)。操作是在狀態(tài)處理器處于特定狀態(tài)中時(shí)要執(zhí)行的操作—例如,為了估計(jì)需要應(yīng)用的狀態(tài)轉(zhuǎn)換規(guī)則的數(shù)量。狀態(tài)處理器通過(guò)每個(gè)狀態(tài)和每個(gè)狀態(tài)方法直到測(cè)試為真,或者沒(méi)有要執(zhí)行的測(cè)試為止。
通常,狀態(tài)處理操作集可以是分組上的零個(gè)或多個(gè)操作,執(zhí)行這些操作可能會(huì)把一個(gè)操流留在一個(gè)導(dǎo)致在完成識(shí)別之前就退出系統(tǒng)的狀態(tài)中,但可能知道更多關(guān)于接下來(lái)—即遇到這個(gè)流的下一個(gè)分組時(shí)—需要執(zhí)行的狀態(tài)和狀態(tài)方法的信息。
通過(guò)維護(hù)流的狀態(tài)并知道可以用來(lái)自以前遇到的流的信息對(duì)新流進(jìn)行設(shè)置,網(wǎng)絡(luò)流量監(jiān)控器300提供了(a)流的單一分組協(xié)議識(shí)別和(b)流的多分組協(xié)議識(shí)別。監(jiān)控器300甚至能夠從出現(xiàn)在服務(wù)器通告類型的流中的一個(gè)或多個(gè)斷開(kāi)的子流識(shí)別應(yīng)用程序。一些看起來(lái)與現(xiàn)有技術(shù)中的監(jiān)控器不相關(guān)的流,本發(fā)明中的監(jiān)控器也可用流簽名識(shí)別出它們是與以前遇到過(guò)的子流相關(guān)的子流。
這樣,狀態(tài)處理器328為這個(gè)特定流-入口的分組應(yīng)用第一個(gè)狀態(tài)操作。方法330判斷是否還需要為這個(gè)狀態(tài)執(zhí)行更多操作。如果是,分析器就在框330和328之間繼續(xù)循環(huán),對(duì)這個(gè)特定的分組應(yīng)用額外的狀態(tài)操作直到所有那些操作都被完成—也就是說(shuō),直到在這個(gè)狀態(tài)中沒(méi)有這個(gè)分組的其它操作為止。方法332根據(jù)流的狀態(tài)和協(xié)議判斷對(duì)這種類型的流是否還有其它狀態(tài)要分析,以便完全表征該流。如果沒(méi)有,現(xiàn)在就已經(jīng)被完全表征了該對(duì)話流并且由方法334結(jié)束該流的對(duì)話流的分類。
在特定的實(shí)施方案中,狀態(tài)處理器328通過(guò)把解識(shí)析器識(shí)別出的最后一個(gè)協(xié)議用作跳轉(zhuǎn)表(跳轉(zhuǎn)向量)中的位移來(lái)啟動(dòng)狀態(tài)處理。跳轉(zhuǎn)表在狀態(tài)模式和方法數(shù)據(jù)庫(kù)326中找到用于該協(xié)議的狀態(tài)處理器指令,或者在已知流數(shù)據(jù)庫(kù)32 4中找到相應(yīng)的流-入口,如果該入口存在的話。狀態(tài)處理器必須測(cè)試位,進(jìn)行比較、加或減操作以執(zhí)行測(cè)試。例如,一個(gè)由狀態(tài)狀態(tài)處理器執(zhí)行的通用操作是在UFKB的有效負(fù)載部分中查找一個(gè)或多個(gè)模式。
這樣,在分類里的332中,分析器判斷流是否處于一個(gè)結(jié)束狀態(tài)。如果不在結(jié)束狀態(tài),就在方法332中對(duì)這個(gè)流-入口進(jìn)行更新(如果是新流就進(jìn)行創(chuàng)建)。
此外,如果該流是已知的并且在332中確定它還有更多需要用后來(lái)的分組進(jìn)行處理的狀態(tài),就在方法322中更新流-入口。
在識(shí)別完成之后還要更新流-入口以使能夠從屬于這個(gè)完全分析過(guò)的對(duì)話流的簽名識(shí)別出屬于這個(gè)流的任意將來(lái)分組。
在更新之后,數(shù)據(jù)庫(kù)324包括所有已經(jīng)出現(xiàn)的對(duì)話流的集合。
這樣,圖3中所示的本發(fā)明的實(shí)施方案自動(dòng)保存流-入口,它在一個(gè)方面中包括存儲(chǔ)狀態(tài)。圖3的監(jiān)控器還產(chǎn)生分組的特征部分—簽名,可用來(lái)識(shí)別流。可以用流-入口的簽名對(duì)它們進(jìn)行識(shí)別和訪問(wèn)。一旦識(shí)別出分組來(lái)自某個(gè)已知的流,該流的狀態(tài)是已知的并且這個(gè)知識(shí)使得能夠?qū)γ總€(gè)不同的協(xié)議和應(yīng)用實(shí)時(shí)執(zhí)行狀態(tài)轉(zhuǎn)換分析。在復(fù)雜分析中,要遍歷的狀態(tài)轉(zhuǎn)換和要檢驗(yàn)的分組一樣越來(lái)越多。那些屬于同一對(duì)話流的將來(lái)分組從以前到達(dá)的狀態(tài)繼續(xù)它們的狀態(tài)分析。當(dāng)已經(jīng)處理了足夠多的與感興趣的應(yīng)用有關(guān)的分組時(shí),終于達(dá)到了一個(gè)最終識(shí)別狀態(tài),即已經(jīng)由狀態(tài)分析遍歷了一組狀態(tài)以完全表征該對(duì)話流。那個(gè)最終狀態(tài)的簽名使得同一對(duì)話流中每個(gè)新到達(dá)的分組能夠被實(shí)時(shí)單獨(dú)識(shí)別。
用這種方式可以實(shí)現(xiàn)本發(fā)明的一個(gè)重大優(yōu)點(diǎn)。一旦為第一次和以最終狀態(tài)結(jié)束遍歷了狀態(tài)轉(zhuǎn)換的一個(gè)特定集合,就可以產(chǎn)生快捷識(shí)別模式—簽名—它將在每個(gè)與該對(duì)話流有關(guān)的新來(lái)的分組上標(biāo)上鍵值。檢驗(yàn)簽名涉及到簡(jiǎn)單操作,使得能夠在網(wǎng)絡(luò)上成功監(jiān)控高分組速率。
在改進(jìn)的實(shí)施方案中,幾個(gè)狀態(tài)分析器并行運(yùn)行,因此能夠檢驗(yàn)大量協(xié)議和應(yīng)用。每個(gè)已知的協(xié)議和應(yīng)用都將有至少一個(gè)唯一的狀態(tài)轉(zhuǎn)換集合,并因此可以通過(guò)觀察這樣的轉(zhuǎn)換而唯一識(shí)別它們。
當(dāng)每個(gè)新的對(duì)話流開(kāi)始時(shí),就立即自動(dòng)產(chǎn)生標(biāo)識(shí)該流的簽名,并隨著遇到的該對(duì)話流中的將來(lái)分組對(duì)簽名進(jìn)行更新,并根據(jù)該流的狀態(tài)轉(zhuǎn)換規(guī)則進(jìn)一步遍歷任意潛在應(yīng)用的狀態(tài)轉(zhuǎn)換集中的狀態(tài)。該流的新?tīng)顟B(tài)—與一個(gè)或多個(gè)潛在應(yīng)用的狀態(tài)轉(zhuǎn)換集合相關(guān)的那些狀態(tài)—被加入到以前遇到的狀態(tài)的記錄中,以在遇到流中的一個(gè)新分組時(shí)能夠輕松識(shí)別和檢索。
詳細(xì)操作圖4圖示了一種包括編譯方法在內(nèi)的初始化系統(tǒng)400。也就是說(shuō),初始化的一部分產(chǎn)生模式結(jié)構(gòu)和提取操作數(shù)據(jù)庫(kù)308以及狀態(tài)指令數(shù)據(jù)庫(kù)328。這樣的初始化可以脫機(jī)或者發(fā)生從中心位置發(fā)生。
能夠存在于不同層中的不同協(xié)議可以看作是由結(jié)點(diǎn)鏈接而成的一個(gè)或多個(gè)樹(shù)中的結(jié)點(diǎn)。分組協(xié)議是樹(shù)的根(稱為第0層)。每個(gè)協(xié)議是一個(gè)父親結(jié)點(diǎn)或終端結(jié)點(diǎn)。一個(gè)父親結(jié)點(diǎn)可以把一個(gè)協(xié)議鏈接到更高層上的其它協(xié)議(子協(xié)議)上。這樣協(xié)議就可以有零或多個(gè)孩子。例如,以太網(wǎng)分組有幾種變體,每一種都有基本上保持相同的基本格式。以太網(wǎng)分組(根或第0層結(jié)點(diǎn))可以是以太類型的分組—也稱為以太網(wǎng)類型/版本2和DIX(DIGITAL-Intel-Xerox分組)—或IEEE803.2分組。IEEE802.3分組繼續(xù)下去,它的一個(gè)孩子結(jié)點(diǎn)可以是IP協(xié)議,IP協(xié)議的一個(gè)孩子結(jié)點(diǎn)可以是TCP協(xié)議。
圖16顯示了完整以太網(wǎng)幀(即分組)的報(bào)頭1600(底層1),包括目的介質(zhì)訪問(wèn)控制地址(Dst MAC 1602)和源介質(zhì)訪問(wèn)控制地址(SrcMAC 1604)上的信息。圖16中還顯示了PDL文件中為提取簽名指定的一些(并非全部)信息。
圖17A顯示了以太類型分組1700的下一層(第2層)報(bào)頭信息。對(duì)以太類型分組1700來(lái)說(shuō),來(lái)自分組指示下一層的有關(guān)信息是一個(gè)兩字節(jié)類型字段1702,其中包含下一層的子識(shí)別模式。剩下的信息1704在圖中顯示為陰影,因?yàn)樗c這一層無(wú)關(guān)。列表1712顯示了以太類型分組的可能的孩子,由在位移12發(fā)現(xiàn)的子識(shí)別模式所指示。圖17B顯示了一個(gè)可能的下一層的報(bào)頭結(jié)構(gòu),也就是IP協(xié)議的報(bào)頭結(jié)構(gòu)。表1752中顯示了IP協(xié)議的可能的孩子。
模式、解析和提取數(shù)據(jù)庫(kù)(模式識(shí)別數(shù)據(jù)庫(kù),或PRD)308由編譯方法310產(chǎn)生,在一種實(shí)施方案中,它是三維結(jié)構(gòu)形式,提供對(duì)下一協(xié)議的分組報(bào)頭的快速查找。圖18A顯示了這樣一個(gè)3維表示1800(可以看作是2維表示的編入索引的集合)。3維結(jié)構(gòu)的壓縮形式是優(yōu)選的。
圖18B中描繪了數(shù)據(jù)庫(kù)308中所用的數(shù)據(jù)結(jié)構(gòu)的一種替代實(shí)施方案。這樣,像圖18A的3維結(jié)構(gòu)那樣,該數(shù)據(jù)結(jié)構(gòu)允許由模式識(shí)別方法304通過(guò)存儲(chǔ)器中的變址定位而不是執(zhí)行地址鏈接計(jì)算來(lái)執(zhí)行快速查找。在這個(gè)替代實(shí)施方案中,PRD308包括兩個(gè)部分,單一協(xié)議表1850(PT),對(duì)每個(gè)監(jiān)控器已知的協(xié)議它都有一個(gè)記錄,和一組查找表1870(LTU’s),用來(lái)識(shí)別已知的協(xié)議和它們的孩子。協(xié)議表包括模式分析和識(shí)別方法304(由PRE1006實(shí)現(xiàn))需要用來(lái)估計(jì)與那個(gè)協(xié)議相關(guān)的分組報(bào)頭信息的參數(shù),以及提取方法306(由限選器1007實(shí)現(xiàn))需要用來(lái)處理該分組報(bào)頭的參數(shù)。當(dāng)有孩子時(shí),PT描述對(duì)報(bào)頭中的哪些字節(jié)進(jìn)行計(jì)算以確定子協(xié)議。尤其每個(gè)PT記錄包含報(bào)頭長(zhǎng)、到孩子的位移、限選器命令和一些標(biāo)志。
在報(bào)頭字段中找到特定的“子識(shí)別代碼”就執(zhí)行了模式匹配,并用這些代碼來(lái)檢索一個(gè)或多個(gè)LUT’s。每個(gè)LUT記錄有一個(gè)結(jié)點(diǎn)代碼,它可以有下列四個(gè)值之一,指示該協(xié)議已經(jīng)被識(shí)別出來(lái),指示該協(xié)議已被部分識(shí)別(需要更多LUT查找)的代碼,指示這是一個(gè)終端結(jié)點(diǎn)的代碼,和指示空記錄的空結(jié)點(diǎn)。要查找的下一個(gè)LUT也從LUT查找返回。
圖4中描述了編碼方法。以協(xié)議描述語(yǔ)言形式的源代碼信息顯示為402。在特定的實(shí)施方案中,高級(jí)解碼描述包括一組協(xié)議描述文件336,每個(gè)文件針對(duì)一個(gè)協(xié)議,以及一組分組層次選擇338,它們描述了監(jiān)控器能夠處理的特定分層(多組協(xié)議樹(shù))。
編譯器403編譯這些描述。產(chǎn)生(404)分組解析和提取操作集合406,以狀態(tài)處理器的指令形式產(chǎn)生一組分組狀態(tài)指令和操作407,狀態(tài)處理器實(shí)現(xiàn)狀態(tài)處理方法328。每種類型的應(yīng)用和協(xié)議的數(shù)據(jù)文件由分析器識(shí)別并從模式、解析和提取數(shù)據(jù)庫(kù)406下載到解析器和提取引擎的存儲(chǔ)器系統(tǒng)中。(參見(jiàn)解析方法500的描述及圖5;提取方法600的描述及圖6;解析子系統(tǒng)硬件描述及圖10)。每種類型的應(yīng)用和協(xié)議的數(shù)據(jù)文件由分析器進(jìn)行識(shí)別并從狀處理器指令數(shù)據(jù)庫(kù)407下載到狀態(tài)處理器中。(參見(jiàn)狀態(tài)處理器1108的描述及圖11)。
注意產(chǎn)生分組解析和提取操作構(gòu)造并鏈接了三維結(jié)構(gòu)(一種實(shí)施方案)或PRD的所有查找表。
因?yàn)榭赡艿膮f(xié)議樹(shù)和子樹(shù)的數(shù)量巨大,編譯器方法400中包括比較樹(shù)和子樹(shù)以了解哪些孩子共享公共父親的優(yōu)化過(guò)程。當(dāng)以LUT’s形式實(shí)現(xiàn)時(shí),這個(gè)方法可以從多個(gè)LUT’s產(chǎn)生單一的LUT。優(yōu)化方法中還包括減少需要用來(lái)存儲(chǔ)PRD數(shù)據(jù)的空間的壓縮方法。
作為壓縮的一個(gè)實(shí)例,考慮圖18A的3-D結(jié)構(gòu),它可以看作是一組2-D結(jié)構(gòu),每個(gè)2-D結(jié)構(gòu)表示一個(gè)協(xié)議。為了能夠?qū)δ切┯袔讉€(gè)父親的協(xié)議每個(gè)只用一個(gè)數(shù)組以節(jié)省空間,在一種實(shí)施方案中,模式分析子方法保持一個(gè)“當(dāng)前報(bào)頭”指針。3-D結(jié)構(gòu)中每個(gè)協(xié)議2-D數(shù)組的位置(位移)索引是從該特定協(xié)議的報(bào)頭起始處開(kāi)始的一個(gè)相對(duì)位置。此外,每個(gè)二維數(shù)組都是稀疏數(shù)組。優(yōu)化的下一步是對(duì)每個(gè)2-D數(shù)組和所有其它2-D數(shù)組進(jìn)行核對(duì)以找出哪些共享存儲(chǔ)器。這些2-D數(shù)組中有很多都是被稀疏填充的,每個(gè)數(shù)組里只有很少量的有效記錄。因此接下來(lái)用一個(gè)“折疊”方法把兩個(gè)或更多2-D數(shù)組結(jié)合成一個(gè)物理2-D數(shù)組而且不丟失任意一個(gè)原始2-D數(shù)組的同一性(即所有的2-D數(shù)組邏輯上連續(xù)存在)。折疊可以在任意2-D數(shù)組之間進(jìn)行,而不管它們?cè)跇?shù)中的位置,只要滿足特定的條件即可。只要單個(gè)記錄間不相互沖突,就可以把多個(gè)數(shù)組結(jié)合成一個(gè)單一數(shù)組。然后用一個(gè)折疊號(hào)使每個(gè)元素和它的原始數(shù)組相聯(lián)。在圖18B的替代實(shí)施方案中為L(zhǎng)UTs集合1850使用了類似的折疊方法。
在410,分析器已經(jīng)完成了初始化并準(zhǔn)備執(zhí)行識(shí)別。
圖5顯示了實(shí)際解析器子系統(tǒng)301如何活動(dòng)的流程圖。從501開(kāi)始,在502步把分組302輸入到分組緩沖區(qū)中。503步從分組302裝入下一個(gè)(在初始時(shí)是第一個(gè))分組成分。分組成分是從每個(gè)分組302每次提取的一個(gè)元素就是。504執(zhí)行檢查以確定裝入分組成分操作503是否成功,如果判斷結(jié)果為真則表明分組中還有其它成分要處理。如果判斷結(jié)果為假,表明所有成分都已裝入,解析器系統(tǒng)301構(gòu)造分組簽名(512)—下一階段(圖6)。
如果在503中成功裝入一個(gè)成分,就從模式、解析和提取數(shù)據(jù)庫(kù)308中取出(505)結(jié)點(diǎn)和方法以為該結(jié)點(diǎn)提供一組模式和方法以應(yīng)用到裝入的分組成分上。解析器子系統(tǒng)301執(zhí)行檢查(506)以確定取出模式結(jié)點(diǎn)操作505是否成功完成,判斷結(jié)果為真表明在505步裝入了一個(gè)模式結(jié)點(diǎn)。如果判斷結(jié)果為假,則在511步移動(dòng)到下一個(gè)分組成分。如果判斷結(jié)果為真,就在507步中將模式匹配方法應(yīng)用到503中提取出的組件。在507中獲得的模式匹配(由測(cè)試508指示)意味著解析器子系統(tǒng)已經(jīng)在解析元素中發(fā)現(xiàn)了一個(gè)結(jié)點(diǎn);解析器子系統(tǒng)301繼續(xù)509步提取元素。
如果將結(jié)點(diǎn)方法應(yīng)用到該成分上并未產(chǎn)生匹配(測(cè)試508),解析器子系統(tǒng)301就從模式數(shù)據(jù)庫(kù)308轉(zhuǎn)移到下一個(gè)模式結(jié)點(diǎn)(510),再到505步以取出下一個(gè)結(jié)點(diǎn)和方法。這樣,在508和505之間就有了一個(gè)“應(yīng)用模式”循環(huán)。一旦解析器子系統(tǒng)301完成了所有模式,不管是否有匹配,解析器子系統(tǒng)301都轉(zhuǎn)移到下一個(gè)分組成分(511)。
一旦從輸入分組302裝入了所有分組成分并對(duì)它們進(jìn)行了處理,再裝入分組就將失敗(由測(cè)試504指示),解析器子系統(tǒng)轉(zhuǎn)而構(gòu)造分組簽名,在圖6中對(duì)此有所描述。
圖6是從分組中提取信息以構(gòu)造分組簽名的流程圖。流程在601開(kāi)始,它是圖5中的退出點(diǎn)513。在這一點(diǎn)上解析器子系統(tǒng)301在緩沖區(qū)中已經(jīng)有了可用的全部分組成分和模式結(jié)點(diǎn)(602)。603步從圖5的模式分析方法裝入可用的分組成分。如果裝入完成(測(cè)試604),表明實(shí)際上還有其它分組組件,解析器子系統(tǒng)301在605步取出在602步接收自模式結(jié)點(diǎn)成分的提取和方法元素。如果成功取出(測(cè)試606),表明有要應(yīng)用的提取元素,解析器子系統(tǒng)301在607步根據(jù)接收自模式結(jié)點(diǎn)的提取指令把提取方法應(yīng)用到分組成分上。這就從分組成分中去掉并節(jié)省了一個(gè)元素。
在608步,解析器子系統(tǒng)301是否還有其它要從這個(gè)成分提取的東西,如果沒(méi)有,解析器子系統(tǒng)301就返回到603裝入手邊的下一個(gè)分組成分并重復(fù)這個(gè)過(guò)程。如果判斷結(jié)果為真,那么解析器子系統(tǒng)301就轉(zhuǎn)到下一個(gè)分組組件棘輪。隨后在603中裝入新的分組成分。當(dāng)解析器子系統(tǒng)301通過(guò)608和603之間的循環(huán)時(shí),如果還有更多要提取的分組成分可以將額外的提取方法應(yīng)用到同一分組成分上,或者如果沒(méi)有其它要提取的可以把額外的提取方法應(yīng)用到不同的分組成分上。
這樣提取方法根據(jù)模式和提取數(shù)據(jù)庫(kù)308中的信息針對(duì)特定分組提取越來(lái)越多的成分就構(gòu)造出了簽名。一旦裝入一下一個(gè)分組成分操作失敗(測(cè)試604),表明已經(jīng)提取出了所有成分。把構(gòu)造出的簽名裝入到簽名緩沖區(qū)中(610),解析器子系統(tǒng)301繼續(xù)進(jìn)行到圖7以完成簽名產(chǎn)生方法。
現(xiàn)在參考圖7,該方法從701開(kāi)始。簽名緩沖和模式結(jié)點(diǎn)元素可用(702)。解析器子系統(tǒng)301裝入下一個(gè)模式結(jié)點(diǎn)元素。如果裝入成功(測(cè)試704)則表明還有更多結(jié)點(diǎn),解析器子系統(tǒng)301在705中根據(jù)在元素?cái)?shù)據(jù)庫(kù)中的模式結(jié)點(diǎn)中發(fā)現(xiàn)的散列元素對(duì)簽名緩沖區(qū)元素進(jìn)行散列。由此產(chǎn)生的簽名和散列在706中被打包在一起。在707中解析器子系統(tǒng)301移到在703中裝入的下一個(gè)分組組件。
703到707循環(huán)繼續(xù)執(zhí)行直到其它沒(méi)有元素模式剩下為止(測(cè)試704)。一旦所有的元素模式都被進(jìn)行了散列,解析器子系統(tǒng)的方法304、306和312也就完成了。解析器子系統(tǒng)301已經(jīng)產(chǎn)生了由分析器子系統(tǒng)303所用的簽名。
解析器記錄被裝入到分析器中,尤其要以UFKB記錄形式裝入到UFKB中,UFKB記錄與解析器記錄相似,但有一個(gè)或多個(gè)不同的字段。
圖8是描述實(shí)現(xiàn)查找操作314的查找/更新引擎(LUE)的操作的流程圖。該方法在801從帶著包括簽名、散列和至少部分有效負(fù)載的解析器記錄的圖7開(kāi)始。在802中它們都以緩沖區(qū)中的UFKB-記錄形式顯示。LUE,即查找引擎從流-入口的散列信息計(jì)算“記錄存儲(chǔ)柜編號(hào)”。這里的存儲(chǔ)柜可以有一個(gè)或多個(gè)“存儲(chǔ)桶”,每個(gè)存儲(chǔ)桶包含一個(gè)流-入口。優(yōu)選實(shí)施方案中每個(gè)存儲(chǔ)柜有四個(gè)存儲(chǔ)桶。
既然優(yōu)選的硬件實(shí)施方案包括高速緩存器,就規(guī)定圖8的流程圖中對(duì)記錄的所有數(shù)據(jù)訪問(wèn)都是通過(guò)高速緩沖存儲(chǔ)器進(jìn)行。
這樣,在804中,系統(tǒng)用散列在高速緩存器中查找來(lái)自那個(gè)存儲(chǔ)柜的存儲(chǔ)桶。如果高速緩存器從存儲(chǔ)柜編號(hào)成功返回一個(gè)存儲(chǔ)桶,表明該存儲(chǔ)柜中還有更多存儲(chǔ)桶,查找/更新引擎比較(807)當(dāng)前簽名(UFKB-記錄的簽名)和存儲(chǔ)桶中的簽名(即流-入口簽名)。如果簽名相匹配(測(cè)試808),就在810步把記錄(在高速緩存器中)標(biāo)記為“進(jìn)行中”并加上時(shí)間戳。811步向UFKB指示802中的UFKB-記錄有“找到”狀態(tài)?!罢业健睒?biāo)記允許狀態(tài)處理開(kāi)始處理這個(gè)UFKB元素。優(yōu)選的硬件實(shí)施方案包括一個(gè)或多個(gè)狀態(tài)處理器,這些處理器都可以和查找/更新引擎并行操作。
在優(yōu)選實(shí)施方案中,由計(jì)算器為被分析的每個(gè)分組執(zhí)行一組統(tǒng)計(jì)操作。統(tǒng)計(jì)操作可以包括對(duì)與這個(gè)流相關(guān)的分組進(jìn)行多次計(jì)數(shù);確定與流的分組大小有關(guān)的統(tǒng)計(jì)信息;編譯關(guān)于每個(gè)方向上分組之間的差異的統(tǒng)計(jì)信息,例如使用時(shí)間戳;并確定同一方向上分組的時(shí)間戳的統(tǒng)計(jì)關(guān)系。統(tǒng)計(jì)測(cè)量結(jié)果保存在流-入口中。也可以編譯其它的統(tǒng)計(jì)測(cè)量。這些統(tǒng)計(jì)信息可以由統(tǒng)計(jì)處理器部件單獨(dú)或者結(jié)合使用以分析流的多個(gè)不同方面。包括從統(tǒng)計(jì)測(cè)量結(jié)果中確定網(wǎng)絡(luò)使用度量,例如確定網(wǎng)絡(luò)為這個(gè)應(yīng)用傳輸信息的能力。這樣的分析為測(cè)量對(duì)話服務(wù)的質(zhì)量、測(cè)量應(yīng)用怎樣在網(wǎng)絡(luò)中執(zhí)行及測(cè)量應(yīng)用所消耗的資源等作好了準(zhǔn)備。
為了提供這樣的分析,查找/更新引擎在812步更新流-入口(在高速緩存器官)中的一個(gè)或多個(gè)計(jì)數(shù)器。方法在813退出。在我們的實(shí)施方案中,計(jì)數(shù)器包括流的總分組數(shù)、時(shí)間及從上一個(gè)時(shí)間戳到當(dāng)前時(shí)間戳的微分時(shí)間。
可能該存儲(chǔ)柜的存儲(chǔ)桶并未產(chǎn)生匹配(測(cè)試808)。這種情況下,分析器在809中移動(dòng)到這個(gè)存儲(chǔ)柜中的下一個(gè)存儲(chǔ)桶。804步再次在高速緩存器中查找來(lái)自那個(gè)存儲(chǔ)柜的另一個(gè)存儲(chǔ)桶。查找/更新引擎就這樣繼續(xù)查找該存儲(chǔ)柜中的存儲(chǔ)桶直到在808中有一個(gè)匹配或者操作804失敗(測(cè)試805)為止,表明在這個(gè)存儲(chǔ)柜中已經(jīng)沒(méi)有其它的存儲(chǔ)桶而且沒(méi)有發(fā)現(xiàn)匹配的存儲(chǔ)桶。
如果沒(méi)有發(fā)現(xiàn)匹配,那么該分組就屬于一個(gè)新(以前未曾遇到過(guò)的)的流。在806中系統(tǒng)指示統(tǒng)一流鍵緩沖區(qū)中這個(gè)分組的記錄為新,并在812中通過(guò)更新高速緩存器中的流-入口為這個(gè)分組執(zhí)行統(tǒng)計(jì)更新操作。更新操作在813結(jié)束。流插入/刪除引擎(FIDE)為這個(gè)流創(chuàng)建一個(gè)新的記錄(再次通過(guò)高速緩存器)。
這樣,更新/查找引擎以該分組的UFKB-記錄帶著“新”或“找到”狀態(tài)結(jié)束。
注意上述系統(tǒng)使用多個(gè)流-入口都能夠匹配的散列??梢允褂酶L(zhǎng)的散列對(duì)應(yīng)于單一流-入口。在這樣一個(gè)實(shí)施方案中簡(jiǎn)化了圖8的流程圖,對(duì)那些本領(lǐng)域的技術(shù)人員來(lái)說(shuō)應(yīng)該清楚這一點(diǎn)。
硬件系統(tǒng)現(xiàn)在根據(jù)圖10和圖11描述系統(tǒng)中數(shù)據(jù)流所經(jīng)過(guò)的每個(gè)單獨(dú)的硬件單元。注意,盡管我們正在描述圖3的發(fā)明實(shí)施方案的特定硬件實(shí)現(xiàn),但那些本領(lǐng)域的技術(shù)人員應(yīng)該理解圖3中的流程也可用運(yùn)行在一個(gè)或多個(gè)通用處理器上的軟件實(shí)現(xiàn),或者只用硬件實(shí)現(xiàn)一部分。本發(fā)明的實(shí)現(xiàn)可以在圖14所示的軟件中操作。雖然圖14的軟件系統(tǒng)適用于低速網(wǎng)絡(luò),但硬件實(shí)施方案(圖10和11)可以在每秒超過(guò)一千萬(wàn)個(gè)分組的網(wǎng)絡(luò)上進(jìn)行操作。本領(lǐng)域的技術(shù)人員應(yīng)該明白隨著處理器變得越來(lái)越快系統(tǒng)中可以有越來(lái)越多的部分用軟件實(shí)現(xiàn)。
圖10是對(duì)用硬件實(shí)現(xiàn)的解析器子系統(tǒng)(301,這里顯示為子系統(tǒng)1000)的描述。存儲(chǔ)器1001是模式識(shí)別數(shù)據(jù)庫(kù)存儲(chǔ)器,其中存儲(chǔ)了將要分析的模式。存儲(chǔ)器1002是提取-操作數(shù)據(jù)庫(kù),其中存儲(chǔ)了提取指令。1001和1002都符合圖3中的內(nèi)部數(shù)據(jù)結(jié)構(gòu)308。通常,從微處理器(未顯示)初始化該系統(tǒng)并同時(shí)經(jīng)由內(nèi)部總線1003和1004通過(guò)主機(jī)接口多路復(fù)用器裝載這些存儲(chǔ)器。注意1001和1002的內(nèi)容優(yōu)先由圖3中的編譯方法310獲得。
分組使用控制信號(hào)1021和1023經(jīng)由1012進(jìn)入解析系統(tǒng)并到達(dá)解析器輸入緩沖區(qū)存儲(chǔ)器中,1021和1023控制輸入緩沖區(qū)接口控制器1022。緩沖區(qū)1008和接口控制1022連接到一個(gè)分組攔截設(shè)備(未顯示)。緩沖區(qū)攔截設(shè)備產(chǎn)生分組開(kāi)始信號(hào)1021且接口控制1022產(chǎn)生下一分組(即準(zhǔn)備接收分組)信號(hào)1023以控制數(shù)據(jù)流進(jìn)入解析器輸入緩沖區(qū)存儲(chǔ)器1008。一旦分組開(kāi)始裝入緩沖區(qū)存儲(chǔ)器1008,模式識(shí)別引擎(PRE)1006就在圖3的304框中描述的輸入緩沖區(qū)存儲(chǔ)器上執(zhí)行操作。也就是確定分組中存在的每個(gè)協(xié)議層的協(xié)議類型和相關(guān)報(bào)頭信息。
PRE查找數(shù)據(jù)庫(kù)1001和緩沖區(qū)1008中的分組以識(shí)別分組所包含的協(xié)議。在一種實(shí)現(xiàn)中,數(shù)據(jù)庫(kù)1001包括一組鏈接在一起的查找表。每個(gè)查找表用八位尋址。第一個(gè)查找表總在地址零上。模式識(shí)別引擎使用來(lái)自控制寄存器的基本分組位移以啟動(dòng)比較過(guò)程。它把這個(gè)值裝入當(dāng)前位移指針(COP)中。隨后從解析器輸入緩沖區(qū)讀取基本分組位移處的字節(jié)并用它作為進(jìn)入第一個(gè)查找表的地址。
每個(gè)查找表返回一個(gè)鏈接到其它查找表的字或者返回一個(gè)結(jié)束標(biāo)志。如果查找產(chǎn)生了識(shí)別事件那么數(shù)據(jù)庫(kù)也返回一個(gè)限選器命令。最后返回該值并把它添加到COP上。
PRE1006包括一個(gè)比較引擎。比較引擎第一步檢查協(xié)議類型字段以確定是否是一個(gè)802.3分組并且該字段應(yīng)該被作為長(zhǎng)度對(duì)待。如果它不是長(zhǎng)度,就在第二步中檢查協(xié)議。第一步只是協(xié)議層,而協(xié)議層是不可編程的。第二步有兩個(gè)為將來(lái)的協(xié)議增加而定義的完整的16位相聯(lián)存儲(chǔ)器(CAMs)。
這樣,無(wú)論何時(shí)只要PRE識(shí)別出了一個(gè)模式,它都要產(chǎn)生一個(gè)提取引擎(也稱為“限選器”)1007命令。識(shí)別出的模式和命令被送往提取引擎1007,它從分組中提取信息以構(gòu)造解析器記錄。這樣,提取引擎的操作就是在圖3的框306和312中執(zhí)行的操作。命令以提取指令指針的形式從PRE1006送往限選器1007,命令提取指針告訴提取引擎1007在提取操作數(shù)據(jù)庫(kù)存儲(chǔ)器(即限選器指令數(shù)據(jù)庫(kù))中的什么地方找到指令。
這樣,當(dāng)PRE1006識(shí)別出一個(gè)協(xié)議時(shí)它把協(xié)議標(biāo)識(shí)符和方法代碼都輸出給提取器。協(xié)議標(biāo)識(shí)符被添加到流簽名上,方法代碼用于從指令數(shù)據(jù)庫(kù)1002中取出第一個(gè)指令。指令包括一個(gè)操作碼,通常還包括源和目的地址以及長(zhǎng)度。位移和長(zhǎng)度都以字節(jié)表示。典型的操作是MOVE指令。這個(gè)指令告訴限選器1007把n個(gè)字節(jié)的數(shù)據(jù)不加任何更改從輸入緩沖區(qū)1008復(fù)制到輸出緩沖區(qū)1010。提取器包含一個(gè)按字節(jié)移動(dòng)裝置,因此能夠把被移動(dòng)的字節(jié)打包進(jìn)流簽名中。提取器還包含另一個(gè)稱為HASH的指令。這個(gè)指令告訴提取器從輸入緩沖區(qū)復(fù)制數(shù)據(jù)到HASH發(fā)生器。
這樣這些指令就用于提取輸入緩沖區(qū)存儲(chǔ)器中的分組的選中單元并把數(shù)據(jù)傳送到解析器輸出緩沖區(qū)存儲(chǔ)器1010。一些指令還產(chǎn)生散列。
提取引擎1007和PRE以流水方式進(jìn)行操作。也就是說(shuō),提取引擎1007在輸入緩沖區(qū)1008中已經(jīng)由PRE1006處理過(guò)的的數(shù)據(jù)上執(zhí)行提取操作,而PRE1006同時(shí)正在解析其它(即后來(lái)到達(dá)的)分組。這種操作方式所提供的高處理速度足以應(yīng)付分組到達(dá)的高速率。
一旦分組中所有用來(lái)形成分組簽名的選中部分都被提取出來(lái),就把散列裝載到解析器輸出緩沖區(qū)存儲(chǔ)器1010中。還包括進(jìn)一步的分析所要求的來(lái)自分組的任意附加有效負(fù)載。解析器輸出存儲(chǔ)器1010通過(guò)分析器接口控制1011與分析器子系統(tǒng)相接。一旦分組中的所有信息都在解析器輸出緩沖區(qū)存儲(chǔ)器1010中,就由分析器接口控制確認(rèn)數(shù)據(jù)就緒信號(hào)1025。當(dāng)分析器就緒信號(hào)1027被確認(rèn)時(shí)就通過(guò)1013把來(lái)自解析器子系統(tǒng)1000的數(shù)據(jù)移動(dòng)到分析器子系統(tǒng)中。
圖11顯示了硬件部件和分析器子系統(tǒng)的數(shù)據(jù)流,分析器子系統(tǒng)執(zhí)行圖3中的分析器子系統(tǒng)303的功能。在操作之前要對(duì)分析器進(jìn)行初始化,初始化包括把由編譯方法310產(chǎn)生的狀態(tài)處理信息裝載到數(shù)據(jù)庫(kù)存儲(chǔ)器中用于狀態(tài)處理,也稱為狀態(tài)處理器指令數(shù)據(jù)庫(kù)(SPID)存儲(chǔ)器1109。
分析器子系統(tǒng)1100包括使用分析器主機(jī)接口控制器118的主機(jī)總線接口1122,它們依次訪問(wèn)高速緩存器系統(tǒng)1115。高速緩存器系統(tǒng)對(duì)系統(tǒng)1108的狀態(tài)處理器進(jìn)行雙向訪問(wèn)。狀態(tài)處理器負(fù)責(zé)從主機(jī)總線接口1122上給出的信息初始化狀態(tài)處理器指令數(shù)據(jù)庫(kù)存儲(chǔ)器1109。
隨著SPID 1109的裝載,分析器子系統(tǒng)1100把來(lái)自解析器并包括分組簽名和有效負(fù)載的解析器記錄接收到統(tǒng)一流鍵緩沖區(qū)(UFKB)1103中。UFKB由可設(shè)置用來(lái)保存UFKB記錄的存儲(chǔ)器組成。UFKB記錄基本上就是解析器記錄;UFKB保存將要處理或正在處理的分組記錄。此外,UFKB還提供一個(gè)或多個(gè)字段用作可修改狀態(tài)標(biāo)志以允許不同的方法并發(fā)運(yùn)行。
三個(gè)處理引擎并發(fā)運(yùn)行并訪問(wèn)UFKB 1103中的記錄查找/更新引擎(LUE)1107、狀態(tài)處理器(SP)1108和流插入和刪除引擎(FIDE)1110。這些引擎中的每一個(gè)都可以用一個(gè)或多個(gè)有限狀態(tài)機(jī)(FSM’s)實(shí)現(xiàn)。在每個(gè)有限狀態(tài)機(jī)和統(tǒng)一流鍵緩沖區(qū)1103之間都有雙向訪問(wèn)。UFKB記錄包括存儲(chǔ)分組序號(hào)的字段,和另一個(gè)以狀態(tài)處理器1108的程序計(jì)數(shù)器形式用狀態(tài)信息進(jìn)行填充的字段,狀態(tài)處理器實(shí)現(xiàn)狀態(tài)處理328。任意記錄的UFKB中的狀態(tài)標(biāo)志包括LUE完成標(biāo)志和標(biāo)記LUE正在向狀態(tài)處理器傳送對(duì)記錄的處理的標(biāo)志。LUE完成指示器還用來(lái)指示LUE的下一個(gè)記錄。還提供了一個(gè)標(biāo)志來(lái)指示狀態(tài)處理器完成了對(duì)當(dāng)前流的操作并指示用于狀態(tài)處理器的下一個(gè)記錄是什么。還提供了一個(gè)標(biāo)志來(lái)指示狀態(tài)處理器正在傳送UFKB-記錄的處理到流插入和刪除引擎。
新的UFKB記錄由LUE 1107處理。已經(jīng)由LUE 1107處理過(guò)的記錄可以由狀態(tài)處理器1108進(jìn)行處理,UFKB記錄數(shù)據(jù)可以在狀態(tài)處理器1108處理之后由流插入/刪除引擎1110進(jìn)行處理或者只由LUE進(jìn)行處理。特定引擎是否已經(jīng)被應(yīng)用到任意統(tǒng)一流鍵緩沖區(qū)記錄上由該引擎在操作完成時(shí)設(shè)置的狀態(tài)字段來(lái)確定。在一種實(shí)施方案中,UFKB-記錄中的一個(gè)狀態(tài)標(biāo)志指示記錄是新的或找到的。在其它實(shí)施方案中,LUE產(chǎn)生一個(gè)標(biāo)志以把記錄傳遞到狀態(tài)處理器進(jìn)行處理,并且新記錄所要求的操作也包含在SP指令中。
注意每個(gè)UFKB-記錄可能需要由全部三個(gè)引擎進(jìn)行處理。此外,一些UFKB記錄可能需要由某個(gè)特定引擎進(jìn)行多次處理。
這三個(gè)引擎中的每一個(gè)都對(duì)包括超高速緩存引擎的高速緩存器子系統(tǒng)1115進(jìn)行雙向訪問(wèn)。高速緩存器1115被設(shè)計(jì)用來(lái)使信息能夠在系統(tǒng)中的五個(gè)不同點(diǎn)之間流入流出,這五個(gè)點(diǎn)是三個(gè)引擎、經(jīng)由統(tǒng)一存儲(chǔ)器控制(UMC)1119和存儲(chǔ)器接口1123的外部存儲(chǔ)器、以及經(jīng)由分析器主機(jī)接口和控制單元(ACIC)1118和主機(jī)接口總線(HIB)1122的微處理器。這樣分析器微處理器(或者專用邏輯處理器)就能夠在高速緩存器中直接插入或修改數(shù)據(jù)。
高速緩存器子系統(tǒng)1115是一個(gè)相聯(lián)存儲(chǔ)器,包括一組相聯(lián)存儲(chǔ)器單元(CAMs),每個(gè)相聯(lián)存儲(chǔ)器單元包括地址部分和指向高速緩沖存儲(chǔ)器(例如RAM)的指針部分,高速緩沖存儲(chǔ)器中包含高速緩存的流-入口。CAMs被按照自頂至底的順序排列成棧。底部CAM的指針指向最近最少使用(LRU)的高速緩沖存儲(chǔ)器記錄。無(wú)論任何時(shí)候只要發(fā)生了高速緩沖存儲(chǔ)器缺失,底部CAM所指向的高速緩沖存儲(chǔ)器的內(nèi)容就被來(lái)自流-入口數(shù)據(jù)庫(kù)324的流-入口所取代。這個(gè)記錄現(xiàn)在變成了最近使用過(guò)的記錄,因此底部CAM的內(nèi)容被移到頂部并且所有的CAM內(nèi)容均向下移動(dòng)。這樣,高速緩存器就成為使用真正的LRU替換策略的相聯(lián)高緩沖存器。
LUE 1107首先處理UFKB-記錄,并基本上執(zhí)行圖3的314和316框中的操作。提供一個(gè)信號(hào)給LUE以指示一個(gè)“新”的UFKB-記錄可用。LUE用UFKB-記錄中的散列從高速緩存器讀取一個(gè)相當(dāng)于四個(gè)存儲(chǔ)桶的匹配存儲(chǔ)柜。如果匹配存儲(chǔ)柜不在高速緩存器中,高速緩存器1115就向UMC 1119發(fā)出請(qǐng)求以從外部存儲(chǔ)器引入相匹配的存儲(chǔ)柜。
當(dāng)用散列方法找到一個(gè)流-入口時(shí),LUE 1107查看每個(gè)存儲(chǔ)桶并用它的簽名和UFKB-記錄的簽名進(jìn)行比較直到找到一個(gè)匹配或者沒(méi)有其它存儲(chǔ)桶剩下為止。
如果沒(méi)有匹配,或者從高速緩沖存儲(chǔ)器提供流-入口的存儲(chǔ)柜失敗,就在UFKB記錄的流鍵中設(shè)置一個(gè)時(shí)間戳,用編譯方法310在初始化期間裝載的一個(gè)表格進(jìn)行協(xié)議識(shí)別和狀態(tài)確定,該記錄的狀態(tài)被設(shè)置為指示LUE已經(jīng)處理過(guò)該記錄,并做出該UFKB-記錄準(zhǔn)備好起動(dòng)狀態(tài)處理的指示。識(shí)別和狀態(tài)確定產(chǎn)生一個(gè)協(xié)議標(biāo)識(shí)符,它在優(yōu)選實(shí)施方案中是狀態(tài)處理器的“跳轉(zhuǎn)向量”,由UFKB為這個(gè)UFKB-記錄保存它,并由狀態(tài)處理器用來(lái)起動(dòng)針對(duì)特定協(xié)議的狀態(tài)處理。例如,跳轉(zhuǎn)向量跳轉(zhuǎn)到用于處理該狀態(tài)的子程序。
如果有匹配,表明該UFKB-記錄中的分組是以前遇到過(guò)的流的,然后計(jì)算器部件輸入存儲(chǔ)在流-入口中的一個(gè)或多個(gè)統(tǒng)計(jì)測(cè)量,包括時(shí)間戳。另外,可以存儲(chǔ)自上次存儲(chǔ)的時(shí)間戳以來(lái)的時(shí)間差并更新分組計(jì)數(shù)。通過(guò)查看存儲(chǔ)在數(shù)據(jù)庫(kù)324的流-入口中的協(xié)議標(biāo)識(shí)符對(duì)流-入口對(duì)從該流-入口獲得的流狀態(tài)進(jìn)行檢查。如果該值指示不需要其它分類,那么該記錄的狀態(tài)就被設(shè)置成指示LUE已經(jīng)處理過(guò)該記錄。在優(yōu)選實(shí)施方案中,協(xié)議標(biāo)識(shí)符是狀態(tài)處理器到一個(gè)對(duì)該協(xié)議進(jìn)行狀態(tài)處理的子程序的跳轉(zhuǎn)向量,并且在優(yōu)選實(shí)施方案中跳轉(zhuǎn)向量為零指示沒(méi)有其它分類。如果協(xié)議標(biāo)識(shí)符指示更多處理,那么就做出該UFKB-記錄準(zhǔn)備起動(dòng)狀態(tài)處理的指示并把該記錄的狀態(tài)設(shè)置成指示LUE已經(jīng)處理過(guò)了該記錄。
狀態(tài)處理器1108在LUE完成之后根據(jù)UFKB-記錄處理高速緩存器中的信息。狀態(tài)處理器1108包括狀態(tài)處理器程序計(jì)數(shù)器SPPC,它產(chǎn)生由編譯方法310在初始化期間裝載的狀態(tài)處理器指令數(shù)據(jù)庫(kù)1109中的地址。它8包含產(chǎn)生SPID地址的指令指針(SPIP)。指令指針可以增加或者從推動(dòng)條件轉(zhuǎn)移的跳轉(zhuǎn)向量多路復(fù)用器裝載。SPIP可以從下列三個(gè)來(lái)源裝載(1)來(lái)自UFKB的協(xié)議標(biāo)識(shí)符,(2)來(lái)自當(dāng)前解碼后的指令的立即跳轉(zhuǎn)向量,或者(3)由狀態(tài)處理器中包含的算術(shù)邏輯單元(SPALU)所提供的值。
這樣,在LUE把流鍵和已知協(xié)議標(biāo)識(shí)符放在UFKB中之后,由解析器用識(shí)別出的最后一個(gè)協(xié)議對(duì)程序計(jì)數(shù)器進(jìn)行初始化。這第一個(gè)指令是跳轉(zhuǎn)到一個(gè)對(duì)解碼出的協(xié)議進(jìn)行分析的子程序。
狀態(tài)處理器ALU(SPALU)包含所有必要的算術(shù)、邏輯和字符串比較功能以實(shí)現(xiàn)狀態(tài)處理器指令。SPALU的主要部分是A和B寄存器、指令解碼&狀態(tài)機(jī)、字符串引用存儲(chǔ)器查找引擎、輸出數(shù)據(jù)寄存器和輸出控制寄存器。
查找引擎依次包含目標(biāo)查找寄存器集、引用查找寄存器集和通過(guò)對(duì)兩個(gè)操作數(shù)進(jìn)行異或操作以對(duì)它們進(jìn)行比較的比較塊。
這樣,在UFKB設(shè)置了程序計(jì)數(shù)器之后,就在狀態(tài)處理器中執(zhí)行一序列一個(gè)或多個(gè)狀態(tài)操作以為這個(gè)特定分組進(jìn)一步分析流鍵緩沖區(qū)記錄中的分組。
圖13描述了狀態(tài)處理器1108的操作。在1301帶著要處理的統(tǒng)一流鍵緩沖區(qū)記錄進(jìn)入狀態(tài)處理器。UFKB-記錄是新的或者與對(duì)應(yīng)于一個(gè)找到的流-入口。這個(gè)UFKB-記錄是在1301步從統(tǒng)一流鍵緩沖區(qū)1103得到的。在1303,該UFKB-記錄的協(xié)議標(biāo)識(shí)符被用來(lái)設(shè)置狀態(tài)處理器的指令計(jì)數(shù)器。狀態(tài)處理器1108通過(guò)把解析器子系統(tǒng)301識(shí)別出的最后一個(gè)協(xié)議用作跳轉(zhuǎn)表中的位移來(lái)啟動(dòng)該方法。跳轉(zhuǎn)表把我們帶到用于那個(gè)協(xié)議的指令。多數(shù)指令測(cè)試某物是否在統(tǒng)一流鍵緩沖區(qū)或者流-入口中,如果流-入口存在的話。狀態(tài)處理器1108必須測(cè)試位、進(jìn)行比較、加或法操作以執(zhí)行測(cè)試。
第一個(gè)狀態(tài)處理器指令是在1304步從狀態(tài)處理器指令數(shù)據(jù)庫(kù)存儲(chǔ)器1109中取出的。狀態(tài)處理器執(zhí)行一個(gè)或多個(gè)取出的操作(1304)。在我們的實(shí)施方案中,每個(gè)單個(gè)的狀態(tài)處理器指令是非常簡(jiǎn)單的(例如,移動(dòng)、比較等),因此需要在每個(gè)統(tǒng)一流鍵緩沖區(qū)記錄上執(zhí)行許多這樣的指令。狀態(tài)處理器的一個(gè)方面是它能在UFKB記錄的有效負(fù)載部分中查找一個(gè)或多個(gè)(最高達(dá)四個(gè))引用字符串。這由狀態(tài)處理器中引擎部件響應(yīng)特殊查找指令實(shí)現(xiàn)。
在1307中執(zhí)行檢查以確定對(duì)該分組是否還有任意其它的指令要執(zhí)行。如果有,就在1308中由系統(tǒng)設(shè)置狀態(tài)處理器指令指針(SPIP)以得到下一個(gè)指令。SPIP可以由當(dāng)前已經(jīng)解碼的指令中的立即跳轉(zhuǎn)設(shè)置,或者在處理過(guò)程中由SPALU提供一個(gè)值。
下一個(gè)要執(zhí)行的指令現(xiàn)在已經(jīng)取出來(lái)(1304)用于執(zhí)行了。13047和1307之間的這個(gè)循環(huán)繼續(xù)進(jìn)行直到?jīng)]有其它要執(zhí)行的指令為止。
在這一步,在1309中檢查在這個(gè)特定分組上所做的處理是否已經(jīng)導(dǎo)致了一個(gè)終結(jié)狀態(tài)。如果是,表明分析器不僅已經(jīng)對(duì)這個(gè)分組而且對(duì)這個(gè)分組所屬的整個(gè)流都完成了處理,并且該流已被完全確認(rèn)。如果實(shí)際上對(duì)這個(gè)流沒(méi)有其它狀態(tài)要處理,就在1311中由處理器終止處理。一些終結(jié)狀態(tài)可能需要把狀態(tài)放置在適當(dāng)?shù)奈恢酶嬖V系統(tǒng)移除一個(gè)流—例如,如果連接從更低層的連接標(biāo)識(shí)符消失。假如那樣的話就在1311中設(shè)置流移除狀態(tài)并把它保存在流-入口中。流移除狀態(tài)可以是NOP(無(wú)操作)指令,意味著沒(méi)有移除指令。
一旦設(shè)置并保存了為這個(gè)流指定的適當(dāng)?shù)牧饕瞥噶?NOP指令或相反),該方法就在1313結(jié)束。狀態(tài)處理器1108現(xiàn)在可以得到另一個(gè)統(tǒng)一流鍵緩沖區(qū)記錄進(jìn)行處理。
如果在1319確定對(duì)這個(gè)流所做的處理還未完成,那么系統(tǒng)就在1310步把狀態(tài)處理器指令指針存儲(chǔ)在當(dāng)前流-入口中。這將是LRE1107在下一次執(zhí)行的下一個(gè)操作,以在UFKB中找到區(qū)配這個(gè)流的分組?,F(xiàn)在處理器在1313退出對(duì)這個(gè)特定的統(tǒng)一流鍵緩沖區(qū)記錄進(jìn)行的處理。
注意狀態(tài)處理更新了統(tǒng)一流鍵緩沖區(qū)1103中的信息和高速緩存器中的流-入口。一旦狀態(tài)處理器執(zhí)行完畢,就在UFKB中為該記錄設(shè)置一個(gè)標(biāo)志,指示狀態(tài)處理器已經(jīng)完成了操作。此外,如果該流需要從流數(shù)據(jù)庫(kù)插入或刪除,就為這個(gè)流簽名和分組記錄把控制傳遞到流插入/刪除引擎。這由狀態(tài)處理器完成,狀態(tài)處理器在UFKB中為這個(gè)UFKB-記錄設(shè)置另一個(gè)標(biāo)志,指示狀態(tài)處理器正在把對(duì)這個(gè)記錄的處理傳遞給流插入和刪除引擎。
流插入和刪除引擎1110負(fù)責(zé)維護(hù)流-入口數(shù)據(jù)庫(kù)。尤其負(fù)責(zé)在流數(shù)據(jù)庫(kù)中創(chuàng)建新流,以及從數(shù)據(jù)庫(kù)中刪除流以使它們能夠被重新使用。
現(xiàn)在借助圖12描述流插入方法。用散列值把流組合成由存儲(chǔ)桶組成的存儲(chǔ)柜。該引擎處理可能是新的或者狀態(tài)處理器已經(jīng)另外指示其為需要?jiǎng)?chuàng)建的UFKB-記錄。圖12顯示了正在被創(chuàng)建的新記錄的情況。在1203步得到一個(gè)對(duì)話記錄存儲(chǔ)柜(優(yōu)選包含4個(gè)存儲(chǔ)桶,用于4個(gè)記錄)。這是一個(gè)與UFKB中的散列值匹配的存儲(chǔ)桶,因此這個(gè)存儲(chǔ)桶可能已經(jīng)由LUE為該UFKB-記錄找到了。在1204步FIDE 1110請(qǐng)求保存在高速緩存器系統(tǒng)1115中的記錄存儲(chǔ)柜/存儲(chǔ)桶。如果在1205步中高速緩存器系統(tǒng)1115指示該存儲(chǔ)柜/存儲(chǔ)桶是空的,就在1207把該流簽名(用散列)插入到存儲(chǔ)桶中并在高速緩存器1115的高速緩存器引擎中用一個(gè)時(shí)間戳把該存儲(chǔ)桶標(biāo)記為“用過(guò)”,該時(shí)間戳在這個(gè)方法中自始至終都被維護(hù)起來(lái)。在1209中,F(xiàn)IDE 1110比較存儲(chǔ)柜和存儲(chǔ)桶記錄流簽名和分組以核實(shí)所有的元素都在合適的位置以完成該記錄。在1211中系統(tǒng)把記錄存儲(chǔ)柜和存儲(chǔ)桶標(biāo)記為“處理中”并在高速緩存器中(并因此在外部存儲(chǔ)器中)標(biāo)記為“新”。在1212中,在高速緩存器系統(tǒng)中設(shè)置該流-記錄的初始統(tǒng)計(jì)測(cè)量,并且可以為在特定的流中所見(jiàn)到的第一個(gè)分組執(zhí)行分析器所要求的用于統(tǒng)計(jì)操作的其它程序。
回到1205步,如果該存儲(chǔ)桶非空,F(xiàn)IDE 110就請(qǐng)求高速緩存器系統(tǒng)中這個(gè)特定的存儲(chǔ)柜的下一個(gè)存儲(chǔ)桶。如果成功,就為這下一個(gè)存儲(chǔ)桶反復(fù)執(zhí)行1207、1209、1211和1212中的過(guò)程。在1208,如果沒(méi)有有效存儲(chǔ)桶,就把該分組的統(tǒng)一流鍵緩沖區(qū)記錄設(shè)置為“丟失”,表明系統(tǒng)無(wú)法處理該特定分組,因?yàn)橄到y(tǒng)中沒(méi)有剩余的存儲(chǔ)桶。該方法在1213退出。FIDE 1110向UFKB指示對(duì)這個(gè)UFKB-記錄的流插入和刪除操作已經(jīng)完成。這還導(dǎo)致UFKB向FIDE提供下一個(gè)UFKB記錄。
一旦需要用來(lái)訪問(wèn)并控制特定分組和它的流簽名的所有引擎在一個(gè)統(tǒng)一流鍵緩沖區(qū)記錄上完成了一組操作,該統(tǒng)一流鍵緩沖區(qū)記錄就被標(biāo)記為“完成”。隨后該元素將被解析器接口用于從解析和提取系統(tǒng)到達(dá)的下一個(gè)分組和流簽名。
所有的流-入口都保存在外部存儲(chǔ)器中,有一些還保存在高速緩存器1115中。高速緩沖存儲(chǔ)器系統(tǒng)1115。高速緩沖存儲(chǔ)器系統(tǒng)1115的智能足以訪問(wèn)流數(shù)據(jù)庫(kù)并理解存在于存儲(chǔ)器接口另一端上的數(shù)據(jù)結(jié)構(gòu)。查找/更新引擎1107能夠請(qǐng)求高速緩存器系統(tǒng)把特定的流或流的“存儲(chǔ)桶”從統(tǒng)一存儲(chǔ)控器控制1119取到高速緩存器系統(tǒng)中以便進(jìn)一步處理。狀態(tài)處理器1108能夠操作依靠查找/更新引擎請(qǐng)求在高速緩存器系統(tǒng)中找到的信息,并且如果請(qǐng)求是根據(jù)統(tǒng)一流鍵緩沖區(qū)1103中的信息流插入/刪除引擎1110能夠在高速緩存器系統(tǒng)中創(chuàng)建新記錄。高速緩存器通過(guò)存儲(chǔ)器接口1123和統(tǒng)一存儲(chǔ)器控制1119從存儲(chǔ)器獲得所請(qǐng)求的信息,并通過(guò)存儲(chǔ)控制器1119更新所請(qǐng)求的信息。
對(duì)特定的硬件實(shí)現(xiàn)有幾個(gè)通往圖11的模塊之外的系統(tǒng)部件的接口。這些接口包括主機(jī)總線接口1122,它被設(shè)計(jì)成通用接口,可以和像微處理器或多路復(fù)用器(MUX)系統(tǒng)這樣任意類型的外部處理系統(tǒng)一起操作。因此,可以把圖11和12中的整個(gè)流量分類系統(tǒng)連接到一些其它處理系統(tǒng)之中以管理分類系統(tǒng)并提取由系統(tǒng)產(chǎn)生的數(shù)據(jù)。
存儲(chǔ)器接口1123被設(shè)計(jì)用來(lái)和想用來(lái)存儲(chǔ)流-入口的任意存儲(chǔ)器相接??梢允褂貌煌愋偷拇鎯?chǔ)器系統(tǒng),像隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM)、同步DRAM、同步圖形DRAM、靜態(tài)訪問(wèn)存儲(chǔ)器(SRAM)等等。
圖10還包括一些“通用”接口。有一個(gè)分組輸入接口1012—和輸入緩沖區(qū)接口控制1022的信號(hào)一起工作的通用接口。這些接口被設(shè)計(jì)成能夠和任意類型的通用系統(tǒng)一起使用,然后這些通用系統(tǒng)可以向解析器提供分組信息。另一個(gè)通用接口各自進(jìn)出主機(jī)接口多路復(fù)用器和控制寄存器1005的流水線接口1031和1033。這使得解析系統(tǒng)可以由外部系統(tǒng)進(jìn)行管理,例如微處理器或其它種類的外部邏輯,并且使外部系統(tǒng)可以對(duì)解析器編程或者進(jìn)行控制。
本發(fā)明的這個(gè)方面的優(yōu)選實(shí)施方案是用像VHDL或Verilog這樣的硬件描述語(yǔ)言(HDL)進(jìn)行描述的。用HDL對(duì)它進(jìn)行設(shè)計(jì)和創(chuàng)建以使它可被用作單一芯片系統(tǒng)或者被集成到另一個(gè)通用系統(tǒng)之中,該通用系統(tǒng)被設(shè)計(jì)用于與在網(wǎng)絡(luò)中創(chuàng)建并分析流量有關(guān)的目的。Verilog或其它HDL實(shí)現(xiàn)只是描述硬件的一個(gè)方法。
根據(jù)硬件實(shí)現(xiàn),圖10中所示的單元用一組六字段可編程邏輯陣列(FPGA’s)實(shí)現(xiàn)。這些FPGA’s的分界如下。圖10中的解析子系統(tǒng)實(shí)現(xiàn)為兩個(gè)FPGAS;一個(gè)FPGAS包括塊1006、1008、1012、部分1005以及存儲(chǔ)器1001;第二個(gè)FPGA包括1002、1007、1013、1011和部分1005。參考圖11,統(tǒng)一查找緩沖區(qū)1103實(shí)現(xiàn)為一個(gè)單獨(dú)的FPGA。狀態(tài)處理器和部分狀態(tài)處理器指令數(shù)據(jù)庫(kù)存儲(chǔ)器1109是另一個(gè)FPGA。部分狀態(tài)處理器指令數(shù)據(jù)庫(kù)存儲(chǔ)器1109保存在外部SRAM’s中。查找/更新引擎1107和流插入/刪除引擎1110在另一個(gè)FPGA中。第六個(gè)FPGA包括高速緩存器系統(tǒng)1115、統(tǒng)一存儲(chǔ)器控制1119和分析器主機(jī)接口及控制1118。
注意可以把系統(tǒng)實(shí)現(xiàn)成一個(gè)或多個(gè)VSLI設(shè)備,而不是一組像FPGA’s這樣的特定用途集成電路(ASIC’s)。希望將來(lái)設(shè)備集成度繼續(xù)提高,以致于整個(gè)系統(tǒng)能夠最終構(gòu)成一個(gè)更大的單一芯片單元上的一個(gè)子單元(“核心”)。
發(fā)明操作圖15顯示了網(wǎng)絡(luò)監(jiān)控器300的實(shí)施方案怎樣被用來(lái)分析網(wǎng)絡(luò)102中的流量。分組攔截設(shè)備1502攔截來(lái)自網(wǎng)絡(luò)102上的連接點(diǎn)121的所有分組以使在任意方向上通過(guò)點(diǎn)121的分組都可以提供給監(jiān)控器300。監(jiān)控器300包括解析器子系統(tǒng)301,它確定流簽名;和分析器子系統(tǒng)303,它分析每個(gè)分組的流簽名。存儲(chǔ)器324用來(lái)存儲(chǔ)由監(jiān)控器300確定并更新的流數(shù)據(jù)庫(kù)。主機(jī)1504用來(lái)分析存儲(chǔ)器324中的流,它可以是任意處理器,例如一個(gè)通用計(jì)算機(jī)。通常主機(jī)1504包括一個(gè)存儲(chǔ)器,稱為RAM,圖中顯示為主機(jī)存儲(chǔ)器1506。另外,主機(jī)可以包含磁盤。在一種應(yīng)用中,主機(jī)可以從RMON探測(cè)開(kāi)始,這種情況下主機(jī)連接到網(wǎng)絡(luò)接口卡1510上,網(wǎng)絡(luò)接口卡1510又連接到網(wǎng)絡(luò)102。
本發(fā)明的優(yōu)選實(shí)施方案由可選的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)實(shí)現(xiàn)所支持。圖15描述了怎樣實(shí)現(xiàn)RMON探測(cè),其中網(wǎng)絡(luò)接口卡用來(lái)向網(wǎng)絡(luò)發(fā)送RMON信息。商業(yè)SNMP實(shí)現(xiàn)也可以使用,并且使用這樣的實(shí)現(xiàn)可以簡(jiǎn)化把本發(fā)明的優(yōu)選實(shí)施方案移植到任意平臺(tái)上的方法。
另外,MIB編譯器也可以使用。MIB編譯器是一個(gè)能夠大大簡(jiǎn)化對(duì)專用MIB擴(kuò)展的創(chuàng)建和維護(hù)的工具。
分組說(shuō)明實(shí)例監(jiān)控器300,尤其是分析器303能夠?qū)νǔ1环Q為“服務(wù)器通告”類型交換的分組交換執(zhí)行狀態(tài)分析。服務(wù)器通告是用來(lái)簡(jiǎn)化帶有多個(gè)應(yīng)用的服務(wù)器之間的通信的方法,這些應(yīng)用都可以從多個(gè)客戶機(jī)同時(shí)訪問(wèn)。許多應(yīng)用采用服務(wù)器通告作為把單一端口或套接字多路復(fù)用到許多應(yīng)用和服務(wù)的手段。采用這種類型的交換,可以在網(wǎng)絡(luò)上用廣播或多播途徑發(fā)送消息來(lái)宣告一個(gè)服務(wù)器或應(yīng)用,并且網(wǎng)絡(luò)中的所有站點(diǎn)都可以接收到這些消息并對(duì)它們進(jìn)行解碼。該消息能夠使站點(diǎn)獲得一個(gè)合適的連接點(diǎn)以對(duì)特定應(yīng)用和特定服務(wù)器通信。采用服務(wù)器通告方法,特定應(yīng)用用服務(wù)通道以IP協(xié)議組中的TCP或UDP套接字或端口的形式進(jìn)行通信,或者用Novell PX協(xié)議組中的SAP進(jìn)行通信。
分析器303還能夠執(zhí)行分組交換的“流內(nèi)分析”?!傲鲀?nèi)分析”方法可以用做主識(shí)別方法或第二識(shí)別方法。作為主方法,流內(nèi)分析幫助提取用來(lái)進(jìn)一步識(shí)別特定應(yīng)用和應(yīng)用組件的詳細(xì)信息。流內(nèi)分析的一個(gè)很好的實(shí)例是任意基于Web的應(yīng)用。例如,通用點(diǎn)播Web信息應(yīng)用就可以這種方法進(jìn)行識(shí)別;在點(diǎn)播服務(wù)器和客戶機(jī)之間的初始連接過(guò)程中,數(shù)據(jù)交換中存在特定的鍵標(biāo)記將導(dǎo)致產(chǎn)生簽名以識(shí)別點(diǎn)播。
流內(nèi)分析方法也可以和服務(wù)器通告方法結(jié)合起來(lái)。很多情況下流內(nèi)分析將增強(qiáng)其它識(shí)別方法。在像SAP和BAAN這樣的商業(yè)應(yīng)用中可以找到把流內(nèi)分析和服務(wù)器通告結(jié)合起來(lái)的實(shí)例。
“會(huì)話追蹤”也是已知追蹤客戶機(jī)/服務(wù)器分組交換中的應(yīng)用的一種主要方法。追蹤會(huì)話方法需要一個(gè)到預(yù)定義套接字和端口號(hào)的初始連接。這個(gè)通信方法用在多種傳輸層協(xié)議中。在IP協(xié)議的TCP和UDP傳輸協(xié)議中最為常見(jiàn)。
在會(huì)話追蹤過(guò)程中,客戶機(jī)用特定端口號(hào)和套接字向服務(wù)器發(fā)出請(qǐng)求。這個(gè)初始請(qǐng)求導(dǎo)致服務(wù)器創(chuàng)建一個(gè)TCP或UDP端口以在客戶機(jī)和服務(wù)器之間交換剩下的數(shù)據(jù)。隨后服務(wù)器用這個(gè)新創(chuàng)建的端口對(duì)客戶機(jī)的請(qǐng)求做出應(yīng)答??蛻魴C(jī)用來(lái)向服務(wù)器建立連接的原始套接字在這個(gè)數(shù)據(jù)交換過(guò)程中將不再使用。
會(huì)話追蹤的一個(gè)實(shí)例是TFTP(一般文件傳輸協(xié)議),TCP/IP FTP協(xié)議沒(méi)有目錄和口令功能的版本。在TFTP的客戶機(jī)/服務(wù)器交換過(guò)程中,特定端口(端口號(hào)69)總是用來(lái)初始化分組交換。這樣,當(dāng)客戶機(jī)開(kāi)始通信過(guò)程時(shí),就向UDP端口69發(fā)送一個(gè)請(qǐng)求。一旦服務(wù)器接收到這個(gè)請(qǐng)求,就在服務(wù)器上創(chuàng)建一個(gè)新端口號(hào)。隨后服務(wù)器用這個(gè)新端口向客戶機(jī)發(fā)送應(yīng)答。在這個(gè)例子中,非常清楚的是,為了識(shí)別TFTP網(wǎng)絡(luò)監(jiān)控器分析來(lái)自客戶機(jī)的初始請(qǐng)求并為它產(chǎn)生一個(gè)簽名。監(jiān)控器300使用這個(gè)簽名來(lái)識(shí)別應(yīng)答。監(jiān)控器300還分析來(lái)自服務(wù)器帶有關(guān)鍵端口信息的應(yīng)答,并送它創(chuàng)建簽名以監(jiān)控這個(gè)數(shù)據(jù)交換的其余分組。
網(wǎng)絡(luò)監(jiān)控器300還能夠理解網(wǎng)絡(luò)中特定連接的當(dāng)前狀態(tài)。面向連接的交換通常受益于狀態(tài)追蹤以正確地識(shí)別應(yīng)用。一個(gè)實(shí)例是通用TCP傳輸協(xié)議,它提供了一個(gè)在客戶機(jī)和服務(wù)器之間發(fā)送信息的可靠方法。當(dāng)初始化數(shù)據(jù)交換時(shí),發(fā)送一個(gè)同步TCP請(qǐng)求。這個(gè)消息包含用來(lái)追蹤來(lái)自服務(wù)器的應(yīng)答的特定序號(hào)。一旦服務(wù)器確認(rèn)了同步請(qǐng)求,就可以在客戶機(jī)和服務(wù)器之間交換數(shù)據(jù)。當(dāng)不再需要通信時(shí),客戶機(jī)向服務(wù)器發(fā)送一個(gè)結(jié)束或完成消息,服務(wù)器用包含了來(lái)自請(qǐng)求的序號(hào)的應(yīng)答確認(rèn)這個(gè)結(jié)束請(qǐng)求。這樣一個(gè)面向?qū)ο蟮慕粨Q的狀態(tài)與多種類型的連接和維護(hù)消息有關(guān)。
服務(wù)器通告實(shí)例服務(wù)器通告協(xié)議的單個(gè)方法有所不同。但基本的底層方法是相同的。向網(wǎng)絡(luò)中的一個(gè)或多個(gè)客戶機(jī)發(fā)送典型的服務(wù)器通告消息。這種類型的服務(wù)器消息有特定內(nèi)容,在本發(fā)明的另一方面中得到了應(yīng)用并且保存在系統(tǒng)的流-入口數(shù)據(jù)庫(kù)中。因?yàn)樵撏ǜ姹凰屯粋€(gè)或多個(gè)站點(diǎn),將來(lái)可能與服務(wù)器有分組交換的客戶機(jī)將假定所通告的信息是已知的,并且所發(fā)明的監(jiān)控器的一個(gè)方面是它也做同樣的假定。
Sun-RPC是由Sun微系統(tǒng)公司(帕洛阿爾托,加利福尼亞州)實(shí)現(xiàn)的遠(yuǎn)程過(guò)程調(diào)用(RPC),是一個(gè)允許一個(gè)程序使用遠(yuǎn)程機(jī)器上另一程序的服務(wù)的編程接口?,F(xiàn)在用一個(gè)Sun-RPC實(shí)例來(lái)解釋監(jiān)控器300怎樣捕獲服務(wù)器通告。
希望使用服務(wù)器或程序的遠(yuǎn)程程序或客戶必須建立一個(gè)連接,可以用RPC協(xié)議做到這一點(diǎn)。
每個(gè)運(yùn)行Sun-RPC協(xié)議的服務(wù)器必須維護(hù)一個(gè)方法和稱為端口映射表的數(shù)據(jù)庫(kù)。端口映射表在Sun-RPC程序或應(yīng)用和TCP或UDP套接字或端口(對(duì)TCP或UDP實(shí)現(xiàn))之間創(chuàng)建一個(gè)直接連接。應(yīng)用或程序編號(hào)是由ICANN()分配的一個(gè)32位唯一標(biāo)識(shí)符,ICANN管理與Internet協(xié)議有關(guān)的大量參數(shù)(端口號(hào)、路由器協(xié)議、多播地址等)。Sun-RPC服務(wù)器上的每個(gè)端口映射表通過(guò)使用特殊請(qǐng)求或直接通告給出在唯一程序編號(hào)和特定傳輸套接字之間的映射。根據(jù)ICANN,端口號(hào)111與Sun RPC相連。
作為一個(gè)實(shí)例,考慮客戶機(jī)(例如,圖1中顯示為106的CLENT 3)在預(yù)定義的UDP或TCP套接字上向服務(wù)器(例如,圖1中顯示為110的SERVER 2)發(fā)出一個(gè)特定請(qǐng)求。一旦Sun RPC服務(wù)器上的端口映射表方法接收到該請(qǐng)求,就在對(duì)客戶機(jī)的直接應(yīng)答中返回該特定映射。
1.客戶機(jī)(圖1中的CLIENT 3,106)在端口111上向SERVER 2(圖1中的110)發(fā)送一個(gè)TCP分組,帶有RPC綁定查找請(qǐng)求(rpcBindLookup)。TCP或UDP端口111總是與Sun RPC相連。
這個(gè)請(qǐng)求指定程序(以程序標(biāo)識(shí)符)、版本,并且可以指定協(xié)議(UDP或TCP)。
2.服務(wù)器SERVER 2(圖1中的110)從該請(qǐng)求中提取出程序標(biāo)識(shí)符和版本標(biāo)識(shí)符。服務(wù)器還利用這樣的事實(shí)這個(gè)分組使用TCP傳輸進(jìn)來(lái)并且沒(méi)有指定協(xié)議。這樣對(duì)它的應(yīng)答將使用TCP協(xié)議。
3.服務(wù)器110向端口號(hào)111發(fā)送一個(gè)TCP分組,帶有RPC綁定查找應(yīng)答。該應(yīng)答包含在其上接收特定RPC程序標(biāo)識(shí)符(例如,程序‘program’)和協(xié)議(UDP或TCP)的將來(lái)事務(wù)的特定端口號(hào)(例如,端口號(hào)‘port’)。
希望從現(xiàn)在開(kāi)始每次都使用端口號(hào)‘port’,分組與應(yīng)用程序‘program’相連直到端口號(hào)‘port’不再與程序‘program’相連為止。監(jiān)控器300通過(guò)創(chuàng)建流-入口和簽名而擁有一個(gè)記憶交換的機(jī)制,使得它能夠把使用端口號(hào)‘port’的將來(lái)分組都與應(yīng)用程序‘program’相連。
除了Sun RPC綁定查找請(qǐng)求和應(yīng)答之外,還有其它一些特定程序—比如‘program’—可以與特定端口號(hào)相連的方式。一種是在應(yīng)用服務(wù)和端口號(hào)之間的特定連接的廣播通告,稱為Sun RPC端口映射表通告。另一種是當(dāng)一些服務(wù)器—比如同一SERVER 2—向一些客戶機(jī)—比如CLIENT 1—做出應(yīng)答要求一些帶有RPC端口映射表應(yīng)答的端口映射表分配時(shí)。其它一些客戶機(jī)—比如CLIENT 2—可能無(wú)意中看到了這個(gè)請(qǐng)求,這樣就知道了對(duì)特定的服務(wù)器SERVER 2端口號(hào)‘port’與應(yīng)用服務(wù)‘program’相連。希望網(wǎng)絡(luò)監(jiān)控器300能夠把使用用端口號(hào)‘port’的SERVER 2的任意分組與應(yīng)用程序‘program’相連。
圖9為Sun遠(yuǎn)程過(guò)程調(diào)用描繪了在圖3的監(jiān)控器300中一些操作的數(shù)據(jù)流900。假設(shè)客戶機(jī)106(例如,圖1中的CLIENT 3)正在通過(guò)它到網(wǎng)絡(luò)的接口118和服務(wù)器110(例如,圖1中的SERVER 2)通過(guò)該服務(wù)器到網(wǎng)絡(luò)的接口116進(jìn)行通信。進(jìn)一步假定遠(yuǎn)程過(guò)程調(diào)用被用來(lái)和服務(wù)器110進(jìn)行通信。數(shù)據(jù)流900中的一條路徑是從910步由客戶機(jī)106發(fā)出的遠(yuǎn)程過(guò)程調(diào)用綁定查找請(qǐng)求開(kāi)始并以服務(wù)器狀態(tài)創(chuàng)建步驟904結(jié)束。這樣的RPC綁定查找請(qǐng)求包括要用的‘program’、‘version’和‘protocol’—如TCP或UDP—的值。網(wǎng)絡(luò)監(jiān)控器300中Sun RPC分析的方法包括下列方面●方法909提取‘program’、‘version’和‘protocol’(UDP或TCP)。提取TCP或UDP端口(方法909),該端口是111指示SunRPC。
●方法908對(duì)Sun RPC分組進(jìn)行解碼。為ID檢查RPC類型字段。
如果該值是端口映射表,就保存成對(duì)套接字(即用于目的地址的dest,用于源地址的src)。對(duì)端口和映射進(jìn)行解碼,保存帶有套接字/地址鍵的端口。對(duì)每個(gè)映射表分組可以有不只一對(duì)。來(lái)自簽名(例如,鍵)。在數(shù)據(jù)庫(kù)324中創(chuàng)建一個(gè)流-入口。請(qǐng)求保存現(xiàn)在完成。
在后來(lái)的某個(gè)時(shí)間,服務(wù)器(方法907)發(fā)出一個(gè)RPC綁定查找應(yīng)答。分組監(jiān)控器將從分組提取簽名并從以前存儲(chǔ)的流中識(shí)別它。監(jiān)控器將得到協(xié)議端口號(hào)(906)和查找請(qǐng)求(905)。將創(chuàng)建一個(gè)新簽名(即一個(gè)鍵)并在流-入口數(shù)據(jù)庫(kù)中把服務(wù)器狀態(tài)(904)的創(chuàng)建保存成由新簽名標(biāo)識(shí)的一個(gè)記錄。這個(gè)簽名現(xiàn)在可以用來(lái)識(shí)別與服務(wù)器相連的分組。
不僅可以從綁定查找請(qǐng)求/應(yīng)答對(duì)到達(dá)服務(wù)器狀態(tài)創(chuàng)建步驟904,而且可以從顯示為901的RPC應(yīng)答端口映射表分組或顯示為902的RPC通告端口映射表到達(dá)它。遠(yuǎn)程過(guò)程調(diào)用協(xié)議可以宣告它能夠提供特定應(yīng)用服務(wù)。當(dāng)客戶機(jī)和服務(wù)器之間發(fā)生交換時(shí)本發(fā)明的實(shí)施方案最好能夠分析并追蹤網(wǎng)絡(luò)中那些已經(jīng)接收到服務(wù)通告的站點(diǎn)。
RPC通告端口映射表通告902是一個(gè)廣播。這導(dǎo)致不同的客戶機(jī)執(zhí)行一組相似的操作,例如保存從通告獲得的信息。RPC應(yīng)答端口映射步驟901對(duì)端口映射器請(qǐng)求做出應(yīng)答,并且應(yīng)答也是一個(gè)廣播。它包括所有服務(wù)參數(shù)。
這樣監(jiān)控器300就創(chuàng)建并保存了用于后來(lái)與特定服務(wù)‘program’有關(guān)的流的分類的所有這樣的狀態(tài)。
圖2顯示了Sun RPC的實(shí)例中的監(jiān)控器300怎樣構(gòu)造簽名和流狀態(tài)。例如,在示例Sun微系統(tǒng)遠(yuǎn)程過(guò)程調(diào)用協(xié)議中交換的多個(gè)分組206-209。本發(fā)明的一種方法實(shí)施方案能夠從在分組206和207中找到的信息產(chǎn)生一對(duì)流簽名,“簽名-1”210和“簽名-2”212,分組206和207在這個(gè)實(shí)例中分別相當(dāng)于Sun RPC綁定查找請(qǐng)求和應(yīng)答。
考慮第一個(gè)Sun RPC綁定查找請(qǐng)求。假設(shè)分組206相當(dāng)于從CLIENT 3發(fā)往SERVER 2的這樣一個(gè)請(qǐng)求。這個(gè)分組包含在根據(jù)本發(fā)明的一個(gè)方面構(gòu)造簽名中要用到的重要信息。源和目的網(wǎng)絡(luò)地址占據(jù)了每個(gè)分組的頭兩個(gè)字段,并且依照模式數(shù)據(jù)庫(kù)308中的模式,流簽名(在圖2中顯示為KEY-1 230)也將包含這兩個(gè)字段,因此解析器子系統(tǒng)301將在簽名KEY-1(230)中包含這兩個(gè)字段。注意在圖2中,如果一個(gè)地址標(biāo)識(shí)客戶機(jī)106(也顯示為202),那么圖中所用的標(biāo)號(hào)是“C1”。如果這樣的地址標(biāo)識(shí)服務(wù)器110(也顯示為服務(wù)器204),圖中所用的標(biāo)號(hào)是“S1”。分組206中的頭兩個(gè)字段是214和215是“S1”和“C1”,因?yàn)榉纸M206是由服務(wù)器110提供去往客戶機(jī)106的。假定對(duì)這個(gè)例子,“S1”在數(shù)值上小于“C1”。第三個(gè)字段“ p1”216標(biāo)識(shí)正在使用的協(xié)議,例如TCP、UDP等等。
在分組206中,第四個(gè)字段217和第五個(gè)字段218用來(lái)傳遞要用的端口。對(duì)話方向確定端口字段在哪里。字段217中的斜線圖案用來(lái)標(biāo)識(shí)源端口模式,字段218中的交叉圖案用來(lái)標(biāo)識(shí)目的端口模式。它們之間的次序指示客戶機(jī)-服務(wù)器消息方向。由“i1”219所指示的第六個(gè)字段是客戶機(jī)正在向服務(wù)器請(qǐng)求的一個(gè)元素。由“s1a”220所指示的第七個(gè)字段是客戶機(jī)向服務(wù)器110請(qǐng)求的服務(wù)。隨后的第八個(gè)字段“QA”221(用于問(wèn)題標(biāo)志)指示客戶機(jī)106想要知道用什么來(lái)訪問(wèn)應(yīng)用“s1a”。第十個(gè)字段“QP”223用來(lái)指示客戶機(jī)想讓服務(wù)器指示對(duì)特定的應(yīng)用使用了什么協(xié)議。
分組206初始化分組交換的順序,例如發(fā)往SERVER 2的RPC綁定查找請(qǐng)求。它采用明確定義的格式,所有分組都是樣這樣,并在眾所周知的服務(wù)連接標(biāo)識(shí)符(端口111指示Sun RPC)上被傳送到服務(wù)器110。
分組207是在從服務(wù)器到客戶機(jī)106的應(yīng)答中第一個(gè)被發(fā)送的分組。它是作為請(qǐng)求分組206的結(jié)果的RPC綁定查找應(yīng)答。
分組207包括十個(gè)字段224-233。目的和源地址在字段224和225,例如,分別由“C1”和“S1”指示。注意現(xiàn)在順序是顛倒的,因客戶機(jī)-服務(wù)器消息方向是從服務(wù)器110到客戶機(jī)106。所用協(xié)議“p1”在字段226中。請(qǐng)求“i1”在字段229中。已經(jīng)為應(yīng)用端口號(hào)填充的值在字段233中,并且協(xié)議““p2””也在字段233中。
現(xiàn)在描述作為這個(gè)交換的結(jié)果而構(gòu)造的流簽名和流狀態(tài)。當(dāng)分組監(jiān)控器300看到來(lái)自客戶機(jī)的請(qǐng)求分組206時(shí),就在解析器子系統(tǒng)301中根據(jù)模式和提取操作數(shù)據(jù)庫(kù)308構(gòu)造第一個(gè)流簽名210。這個(gè)簽名210包括目的地址240和源地址241。本發(fā)明的一個(gè)方面是按照一個(gè)特定的順序構(gòu)造流鍵而不管對(duì)話方向。有幾種機(jī)制可以用來(lái)實(shí)現(xiàn)這一點(diǎn)。在特定實(shí)施方案中,數(shù)值較小的地址總是被放在數(shù)值較大的地址前面。這樣從低到高的順序用來(lái)為查找操作獲得簽名和散列的最好分布。因此在這種情況下,既然我們假定“S1”<“C1”,那么順序就是地址S1”后跟客戶地址“C1”。用來(lái)構(gòu)造簽名的下一個(gè)字段是從分組206的字段216中提取出的協(xié)議字段242,這樣就是協(xié)議“p1”。用于簽名的下一個(gè)字段是字段243,它包含目的源端口號(hào),在圖中顯示為來(lái)自分組206的字段218的交叉陰影圖案。可以在分組的有效負(fù)載中識(shí)別這個(gè)字段進(jìn)行以得出這個(gè)分組或分組序列怎樣作為一個(gè)流而存在。在實(shí)踐中,這些可以是TCP端口號(hào)或TCP端口號(hào)的組合。就該SunRPC實(shí)例來(lái)說(shuō),陰影表示用于p1的一組UDS端口號(hào),將被用來(lái)識(shí)別這個(gè)流(例如,端口111)。端口111指示這是Sun RPC。一些像Sun RPC綁定查找這樣的應(yīng)用在解析器級(jí)是可以直接確定的(“已知”),并且狀態(tài)處理器應(yīng)該為其它復(fù)雜的識(shí)別工作而繼續(xù)進(jìn)行的次態(tài),表示為“stD”,被放置在流-入口的字段245中。
當(dāng)攔截到Sun RPC綁定查找應(yīng)答時(shí),由解析器再次構(gòu)造流簽名。這個(gè)流簽名和KEY-1等同。因此,當(dāng)簽名從解析器子系統(tǒng)301進(jìn)入分析器子系統(tǒng)303時(shí),就得到了完整的流-入口,并且在這個(gè)流-入口中指示狀態(tài)“stD”。狀態(tài)處理器指令數(shù)據(jù)庫(kù)326中對(duì)狀態(tài)“stD”的操作命令狀態(tài)處理器構(gòu)造并存儲(chǔ)一個(gè)新的流簽名,在圖2中顯示為KEY-2(212)。由狀態(tài)處理器構(gòu)造的這個(gè)流簽名還包括目的地址250和源地址251,分別針對(duì)服務(wù)器“S1”和后跟(數(shù)值較大的地址)的客戶機(jī)“C1”。協(xié)議字段252定義要用的協(xié)議,例如“p2”,它是從應(yīng)答分組得到的。字段253包含也是從應(yīng)答分組得到的一個(gè)識(shí)別模式。這樣,應(yīng)用是Sun RPC,而且字段254指示這個(gè)應(yīng)用“a2”。次態(tài)字段25 5定義狀態(tài)處理器應(yīng)該為其它復(fù)雜的識(shí)別工作而繼續(xù)進(jìn)行的下一個(gè)狀態(tài),例如狀態(tài)“st1”。在這個(gè)特定實(shí)例中,這是一個(gè)終結(jié)狀態(tài)。這樣,KEY-2現(xiàn)在可以用來(lái)識(shí)別以任意方式與應(yīng)用“a2”相連的分組。圖中顯示了兩個(gè)這樣的分組208和209,每個(gè)方向上一個(gè)。它們使用在原始綁定查找請(qǐng)求中所請(qǐng)求的特定應(yīng)用服務(wù),并且每一個(gè)都將被識(shí)別出來(lái),因?yàn)閷⒁诿糠N情況下構(gòu)造簽名KEY-2。
兩個(gè)流簽名210和212總是把目的地址和源地址排列成“S1”后跟“C1”。這樣的值是在第一次在特定流簽名中創(chuàng)建地址時(shí)自動(dòng)填充的。優(yōu)選地,大量流簽名被按照從低到高的順序保存在查找表中以便最好地散布流簽名和散列值。
其后,客戶機(jī)和服務(wù)器交換大量分組,例如由請(qǐng)求分組208和應(yīng)答分組209所表示??蛻魴C(jī)106發(fā)送擁有目的地址S1和源地址C1的分組208,這兩個(gè)地址在一對(duì)地址字段260和261中。字段262定義協(xié)議為“p2”,字段263定義目的端口號(hào)。
一些網(wǎng)絡(luò)服務(wù)器應(yīng)用識(shí)別工作非常簡(jiǎn)單,只要發(fā)生一個(gè)狀態(tài)轉(zhuǎn)換就能夠查明產(chǎn)生分組的應(yīng)用。其它的需要發(fā)生一系列的狀態(tài)轉(zhuǎn)換以便匹配已知和預(yù)定義的狀態(tài)到狀態(tài)的轉(zhuǎn)變(climb)。
這樣通過(guò)預(yù)定義當(dāng)一個(gè)相對(duì)簡(jiǎn)單的Sun微系統(tǒng)遠(yuǎn)程過(guò)程調(diào)用綁定查找請(qǐng)求指令執(zhí)行時(shí)對(duì)這個(gè)例子發(fā)生什么樣的分組交換序列就自動(dòng)設(shè)置了用于識(shí)別應(yīng)用“a2”的流簽名。比這個(gè)更復(fù)雜的交換可以產(chǎn)生兩個(gè)以上的流簽名和它們的相應(yīng)狀態(tài)。每個(gè)識(shí)別可以包括設(shè)置一個(gè)復(fù)雜的狀態(tài)轉(zhuǎn)換表以在到達(dá)像字段255中的“ st1”這樣的“終結(jié)”靜止?fàn)顟B(tài)前對(duì)它們進(jìn)行遍歷。所有這些都用來(lái)為在將來(lái)識(shí)別特定應(yīng)用構(gòu)造流簽名的最后集合。
狀態(tài)處理器細(xì)節(jié)狀態(tài)處理器1108對(duì)新的和現(xiàn)有的流進(jìn)行分析以便按照應(yīng)用對(duì)它們進(jìn)行分類。它通過(guò)根據(jù)由工程師定義的規(guī)則從狀態(tài)到狀態(tài)地進(jìn)行來(lái)做到這一點(diǎn)。規(guī)則是測(cè)試后跟測(cè)試為真時(shí)要進(jìn)行的下一個(gè)狀態(tài)。狀態(tài)處理器通過(guò)每個(gè)規(guī)則直到測(cè)試為真或者沒(méi)有要執(zhí)行的測(cè)試為止。狀態(tài)處理器1108通過(guò)把解析器子系統(tǒng)1000識(shí)別出的上一個(gè)協(xié)議用作進(jìn)入跳轉(zhuǎn)表(跳轉(zhuǎn)向量)的位移來(lái)起啟動(dòng)這個(gè)過(guò)程。跳轉(zhuǎn)表把我們帶到用于那個(gè)協(xié)議的指令。多數(shù)指令測(cè)試某物是否是否在統(tǒng)一流鍵緩沖區(qū)1103或流-入口中,如果該流-入口存在的話。狀態(tài)處理器必須進(jìn)行測(cè)試位、比較、加或減以執(zhí)行測(cè)試。
在多數(shù)通用處理系統(tǒng)中,實(shí)現(xiàn)的指令集實(shí)際上是通用的。所有的處理系統(tǒng)都有一個(gè)典型的有關(guān)對(duì)指令和程序計(jì)數(shù)器的分析和操作的指令集。這些指令包括跳轉(zhuǎn)、調(diào)用和返回。另外,這些相同的處理系統(tǒng)包含適合的指令對(duì)寄存器和存儲(chǔ)器位置進(jìn)行分析和操作。這些指令包括加、減、移動(dòng)、比較和邏輯操作。
優(yōu)選實(shí)施方案的狀態(tài)處理器1108還包括這樣一個(gè)基本的標(biāo)準(zhǔn)指令集。但是,優(yōu)選實(shí)施方案狀態(tài)處理器1108還包括一些特殊的功能需要用來(lái)估計(jì)網(wǎng)絡(luò)上分組中的數(shù)據(jù)內(nèi)容。有四個(gè)由優(yōu)選實(shí)施方案狀態(tài)處理器執(zhí)行的特殊功能來(lái)實(shí)現(xiàn)這些目標(biāo)。其中兩個(gè)是專用的轉(zhuǎn)換指令,設(shè)計(jì)用來(lái)解釋特定格式的文本元素并把它們轉(zhuǎn)換成數(shù)學(xué)或數(shù)字形式。這些指令是AH2B(ASCII十六進(jìn)制到二進(jìn)制轉(zhuǎn)換)和AD2B(ASCII十進(jìn)制到二進(jìn)制轉(zhuǎn)換)。這些指令實(shí)際都是單周期指令。這些指令很奇特并被用來(lái)提供由優(yōu)選實(shí)施方案狀態(tài)處理器所執(zhí)行的功能的時(shí)間敏感特性。
為了讓系統(tǒng)速度加快并實(shí)現(xiàn)分類目標(biāo)。狀態(tài)處理器中還提供了幾個(gè)其它特殊功能。這些功能主要處理查找、定位、分析和估計(jì)字符串序列。這些字符式可以是格式化的或無(wú)格式的。
初高級(jí)指令是In_Find和In_Find_CONTINUE指令,它們由狀態(tài)處理器中的查找設(shè)備(查找引擎)實(shí)現(xiàn)。這些功能和查找設(shè)備已經(jīng)設(shè)計(jì)用來(lái)使?fàn)顟B(tài)處理器能夠同時(shí)查找來(lái)自發(fā)送到監(jiān)控器300中的分組的有效負(fù)載內(nèi)容。這使得監(jiān)控器能夠測(cè)量并滿足任意網(wǎng)絡(luò)速度需求。
狀態(tài)處理器在圖19中顯示為處理器1108。它執(zhí)行它的來(lái)自狀態(tài)處理器指令數(shù)據(jù)庫(kù)(SPID)1109的指令,SPID由主機(jī)CPU作為編譯方法310的一部分對(duì)其進(jìn)行填充。SP 1108包含幾個(gè)子塊,包括程序計(jì)數(shù)器1903(SPPC)、控制塊1905(SPCB)、算術(shù)邏輯單元1907(SPALU)、能夠把數(shù)據(jù)從不同的源地址移動(dòng)到不同的目標(biāo)地址的地址發(fā)生器和數(shù)據(jù)總線多路復(fù)用器(復(fù)用器)。兩個(gè)地址發(fā)生器是指向UFKB的SP流鍵地址發(fā)生器1911(SPFKAG)和指向高速緩存器子系統(tǒng)的SP流-入口地址發(fā)生器1913(SPFEAG)。SP 1108還包括四個(gè)數(shù)據(jù)復(fù)用器SP ALU數(shù)據(jù)復(fù)用器A 1919、SP ALU數(shù)據(jù)復(fù)用器B 1921、SP UFKB數(shù)據(jù)復(fù)用器1915和SP高速緩沖存儲(chǔ)器數(shù)據(jù)復(fù)用器1917。這些復(fù)用器促進(jìn)在狀態(tài)處理器1108的不同塊中以及進(jìn)出UFKB 1103和高速緩存器子系統(tǒng)1115的數(shù)據(jù)移動(dòng)。
SP控制塊1905對(duì)出自SPID 1109的指令進(jìn)行解碼并把它們分成不同的字段以控制狀態(tài)處理器1108。SPCB 1905的主要功能是指令解碼和控制信號(hào)產(chǎn)生。有兩類指令。一類完全由SPCB執(zhí)行,一類被傳遞給SPALU 1907以部分或全部執(zhí)行。下面描述了一些SP指令。
當(dāng)一個(gè)指令需要被傳遞給SPALU 1907時(shí),SPCB 1905對(duì)指令解碼,在總線上給SPALU 1907提供指令碼并確認(rèn)“開(kāi)始”信號(hào)。
當(dāng)一個(gè)指令,例如移動(dòng)或跳轉(zhuǎn)指令,可以完全由SPCB 1905執(zhí)行時(shí),SPCB產(chǎn)生適當(dāng)?shù)目刂菩盘?hào)給SP程序計(jì)數(shù)器1903、SP地址發(fā)生器1911和/或1913和SP復(fù)用器以便實(shí)現(xiàn)特定的移動(dòng)或跳轉(zhuǎn)指令。
SPID 1109中的字是40位長(zhǎng)并由SPCB 1905根據(jù)指令碼分成不同的字段。一個(gè)字段是指令碼。SPID字中剩下的位被根據(jù)附隨的指令分成不同字段。例如,SP 1108能夠?qū)崿F(xiàn)跳轉(zhuǎn)、調(diào)用、等待和后面跟條件碼和跳轉(zhuǎn)地址的WaitRJ指令。SP 1108還能夠執(zhí)行后跟常量值的移動(dòng)立即指令。此外,SP 1008能夠執(zhí)行裝載地址發(fā)生器指令,它后跟要裝載的地址。在對(duì)指令字段進(jìn)行解碼之后,SPCB從所包括的解碼PAL產(chǎn)生組合控制信號(hào)。這些控制信號(hào)選擇不同的復(fù)用器加速數(shù)據(jù)移動(dòng)并產(chǎn)生裝載數(shù)值到不同寄存器的選通信號(hào)。
程序計(jì)數(shù)器SPPC 1903產(chǎn)生到狀態(tài)處理器指令數(shù)據(jù)庫(kù)中的地址。它包含一個(gè)產(chǎn)生SPID 1109地址的指令指針。指令指針可以增加或從跳轉(zhuǎn)向量多路復(fù)用器裝載,跳轉(zhuǎn)向量多路復(fù)用器促進(jìn)條件轉(zhuǎn)移。指令指針可以從三個(gè)來(lái)源之一裝載(1)來(lái)自UFKB的協(xié)議指針,(2)來(lái)自當(dāng)前已解碼的指令的立即跳轉(zhuǎn)向量或(3)由SPALU 1907提供的值。
在由LUB把流簽名和已知協(xié)議標(biāo)識(shí)符一起放到UFKB中之后,程序計(jì)數(shù)器1903被用解析器子系統(tǒng)識(shí)別出的最后一個(gè)協(xié)議進(jìn)行初始化。第一個(gè)指令是跳轉(zhuǎn)到對(duì)解碼出的協(xié)議進(jìn)行分析的子程序。
為了實(shí)現(xiàn)JUMP立即指令,程序計(jì)數(shù)器從帶有跳轉(zhuǎn)向量的SPCB1905取出一個(gè)輸入字段并用跳轉(zhuǎn)向量裝載指令指針。
狀態(tài)處理器ALU 1907包含所有必要的算術(shù)、邏輯和字符串比較功能以實(shí)現(xiàn)狀態(tài)處理器指令。SP ALU 1907的主要塊是A寄存器和B寄存器、指令解碼&狀態(tài)機(jī)、引用字符串存儲(chǔ)器、查找引擎1930、輸出數(shù)據(jù)寄存器和輸出控制寄存器。
狀態(tài)處理器ALU查找引擎1930(SPALU_SE)依次包含目標(biāo)查找寄存器集、引用查找寄存器集和比較塊。查找引擎1930能夠在目標(biāo)中的任何地方查找多達(dá)幾個(gè)(在我們的實(shí)施方案中是四個(gè))的引用字符串,并且如果找到了其中一個(gè)引用字符串,就返回它和它在目標(biāo)中的位置。
流鍵地址發(fā)生器產(chǎn)生狀態(tài)處理器正在統(tǒng)一流鍵緩沖區(qū)中訪問(wèn)的地址。SPFKAG的主要單元是流鍵地址指針寄存器和產(chǎn)生地址的ROM解碼。
流-入口地址發(fā)生器1913提供狀態(tài)處理器正在高速緩存器子系統(tǒng)1115中訪問(wèn)流-入口的地址。如果流-入口存在,來(lái)自散列的高位地址用來(lái)在流數(shù)據(jù)庫(kù)324中查找存儲(chǔ)桶。中間位來(lái)自找到的存儲(chǔ)桶記錄。低位來(lái)自狀態(tài)處理器1108正在使用的位移。
SPFKAG的主要塊是流鍵地址指針寄存器和產(chǎn)生地址的ROM解碼。
狀態(tài)處理器UFKB數(shù)據(jù)復(fù)用器1915選擇去往UFKB的數(shù)據(jù)源。它把三個(gè)數(shù)據(jù)源中的一個(gè)送往UFKB。這三個(gè)數(shù)據(jù)源是ALU輸出數(shù)據(jù)總線、高速緩存器輸出數(shù)據(jù)總線和SPCB數(shù)據(jù)。選擇信號(hào)是一個(gè)2-位信號(hào)。
狀態(tài)處理器高速緩存器數(shù)據(jù)復(fù)用器1917從進(jìn)入高速緩存器子系統(tǒng)的四個(gè)數(shù)據(jù)源中選出去往高速緩沖存儲(chǔ)器子系統(tǒng)的數(shù)據(jù)源。這四個(gè)數(shù)據(jù)源是ALU輸出數(shù)據(jù)總線、UFKB數(shù)據(jù)總線的低位、UFKB數(shù)據(jù)總線的高位和SPCB數(shù)據(jù)。選擇信號(hào)是一個(gè)2-位信號(hào)。為了能夠進(jìn)行16位移動(dòng),SPMUXCA引入兩個(gè)16位復(fù)用器向高速緩存器子系統(tǒng)的低16位和高16位提供信息。
狀態(tài)處理器ALU數(shù)據(jù)復(fù)用器A 1919選擇去往UFKB的數(shù)據(jù)源并把三個(gè)32位數(shù)據(jù)源之一送往ALU的A端。這三個(gè)數(shù)據(jù)源是高速緩存器子系統(tǒng)數(shù)據(jù)總線、UFKB數(shù)據(jù)總線的低32位和UFKB數(shù)據(jù)總線的高32位。選擇信號(hào)是一個(gè)2-位信號(hào)。
狀態(tài)處理器ALU數(shù)據(jù)復(fù)用器B 1919選擇去往SP ALU B端的數(shù)據(jù)源并把兩個(gè)32位數(shù)據(jù)源之一送往ALU的B端。這兩個(gè)數(shù)據(jù)源是高速緩存器子系統(tǒng)數(shù)據(jù)總線和SPCB數(shù)據(jù)字。選擇信號(hào)是一個(gè)1-位信號(hào)。
狀態(tài)處理器指令定義下面幾節(jié)描述一些在狀態(tài)處理器1108中可用的指令。應(yīng)當(dāng)指出通常并未向狀態(tài)處理器1108提供匯編程序。這是因?yàn)楣こ處熞话悴恍枰獮檫@個(gè)處理器編寫代碼。編譯器編寫代碼并從協(xié)議列表(PDL文件)中定義的協(xié)議把它裝載到狀態(tài)處理器指令數(shù)據(jù)庫(kù)中。
下面的表格被分成兩個(gè)實(shí)施方案實(shí)施方案1和實(shí)施方案2。實(shí)施方案2更復(fù)雜一些,它包括實(shí)施方案1指令的更復(fù)雜的版本以及附加指令。
現(xiàn)在詳細(xì)描述其中一些指令。
Move移動(dòng)指令集包括處理不同大小的字從源地址移動(dòng)到目的地址的特殊移動(dòng)指令。移動(dòng)指令集已經(jīng)開(kāi)發(fā)出來(lái)以確保字的大小總是匹配的,包括32位和16位移動(dòng)指令。
移動(dòng)指令從以下位置移動(dòng)數(shù)據(jù)立即數(shù)到SP ALU B寄存器、立即數(shù)到高速緩存器子系統(tǒng)、立即數(shù)到UFKB、SP ALU輸出到UFKB、SPALU輸出到高速緩存器子系統(tǒng)、高速緩存器到SP ALU A寄存器、高速緩存器到SP ALU B寄存器、UFKB到高速緩存器子系統(tǒng)以及UFKB到SP ALU A寄存器。
In_CompareIn_Compare指令命令A(yù)LU 1907執(zhí)行比較操作并和匹配的字符串一起返回一個(gè)MATCH信號(hào)。比較操作對(duì)第一個(gè)字符在UFKB中一個(gè)未知位置的目標(biāo)數(shù)據(jù)和引用字符串存儲(chǔ)器中的已知引用字符串進(jìn)行比較。在執(zhí)行這個(gè)指令之前,要用指向目標(biāo)字符的地址裝載SP UFKB地址發(fā)生器1911。ALU引用字符串中的一個(gè)位置保存一串引用字符以進(jìn)行比較。
ASCII十進(jìn)制轉(zhuǎn)二進(jìn)制這個(gè)指令傳入表示十進(jìn)制值的ASCII碼字符串的位置。結(jié)果是等價(jià)的二進(jìn)制值。這個(gè)指令在一個(gè)周期內(nèi)執(zhí)行完畢。
ASCII十六進(jìn)制轉(zhuǎn)二進(jìn)制這個(gè)指令傳入表示十六進(jìn)制值的ASCII碼字符串的位置。結(jié)果是等價(jià)的二進(jìn)制值。這個(gè)指令在一個(gè)周期內(nèi)執(zhí)行完畢。
In_FindIn_Find_Continue這些指令在下面描述查找引擎1930一節(jié)中有詳細(xì)描述。
查找引擎和調(diào)用查找引擎的SP指令監(jiān)控器300的一個(gè)方面是它能夠?qū)崟r(shí)分析每個(gè)分組。網(wǎng)絡(luò)流量可以在非??斓乃俾噬弦苿?dòng)。狀態(tài)處理器1107的一個(gè)任務(wù)是查找數(shù)據(jù)中一個(gè)或多個(gè)已知的字符串。這樣的查找在UFKB記錄上執(zhí)行,例如在記錄的有效負(fù)載部分中執(zhí)行。查找可以是記錄的已知部分或未知部分,例如UFKB記錄的有效負(fù)載部分中的任意地方。此外,查找可能需要以非常高的速率執(zhí)行。
狀態(tài)處理器ALU指令包括執(zhí)行這樣查找的查找引擎SPALU_SE1930。查找引擎1930能夠在UFKB中的目標(biāo)數(shù)據(jù)里查找最高達(dá)四個(gè)引用字符串,并且并行指示(1)是否在目標(biāo)中的任意地方找到了四個(gè)字符串中的任意一個(gè),(2)找到了哪一個(gè)字符串,以及(3)在目標(biāo)中的什么地方找到了該字符串。
查找引擎為執(zhí)行下列狀態(tài)處理器指令做準(zhǔn)備。
In_FindIn_Find指令向ALU-查找引擎提供信息以執(zhí)行查找操作并和匹配的字符串及在目標(biāo)中找到該字符串的位置一起返回匹配信號(hào)。
指令格式如下In_Find[引用字符串?dāng)?shù)組地址],[UFKB字節(jié)位移],[范圍]
In_Find操作的引用字符串存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)
當(dāng)查找完成時(shí),確認(rèn)查找完成位。根據(jù)查找結(jié)果確認(rèn)或重置MATCH位。ALU中的總線,稱ALU_DATA總線,將保持下列信息●跳轉(zhuǎn)向量[15:0]—這是存儲(chǔ)在引用字符串?dāng)?shù)組中的一個(gè)向量并指示當(dāng)找到一個(gè)引用字符串時(shí)狀態(tài)處理器跳轉(zhuǎn)到什么指令(例如,子程序)。
●字符串代號(hào)[1:0]—這是指示查找到哪個(gè)字符串的字符串代號(hào),對(duì)四個(gè)字符串實(shí)現(xiàn)來(lái)說(shuō)就是0、1、2、3。
保存流鍵緩沖區(qū)中找到字符串的位置。這是UFKB字地址和目標(biāo)中找到的字符串的第一個(gè)字符的字節(jié)位置。
如果找到了任意引用字符串的第一次出現(xiàn)或者在整個(gè)查找范圍內(nèi)都沒(méi)有匹配,查找就完成了。
考慮下面的例子。假設(shè)我們希望在UFKB的有效負(fù)載區(qū)域查找一個(gè)引用字符串而且從有效負(fù)載的第5字節(jié)開(kāi)始查找,在第100字節(jié)結(jié)束查找。假定該引用字符串位于0050h處。這個(gè)實(shí)例的指令格式如下In_Load_FKAG,有效負(fù)載地址In_Find,005016,5,6016范圍是100-9+1=6016考慮第二個(gè)例子,查找UFKB中的1216到2A16。下面的狀態(tài)處理器指令將實(shí)現(xiàn)這一目標(biāo)。
In_Load_FKAG 0216In_Find[引用字符串地址],2,1916注意2A16-1216+1=1916。
In_Find_Continue這個(gè)指令跟隨在In_Find指令后面并告訴ALU-查找引擎1930從發(fā)現(xiàn)上一個(gè)字符串的位置開(kāi)始執(zhí)行查找操作并與匹配的字符串信息和找到目標(biāo)字符串的位置一起返回MTCH信號(hào)。這個(gè)指令的目的是幫助從以前查找結(jié)束的地方開(kāi)始查找一個(gè)新的引用字符串。因此,就不向查找引擎提供位移因?yàn)椴檎乙鎸⒂涀∷Y(jié)束它以前的查找的位置。
指令格式如下In_Fide_Continue[引用字符串?dāng)?shù)組地址],
,[范圍]
作為例子,假定我們希望在UFKB的有效負(fù)載區(qū)域In_Find一個(gè)字符串(字符串A),并且查找從有效負(fù)載的第5個(gè)字節(jié)開(kāi)始,在第100個(gè)字節(jié)結(jié)束。假定引用字符串(字符串A)位于005016。在找到第一個(gè)引用字符串之后,假定我們希望在隨后的3016個(gè)字節(jié)中繼續(xù)查找一個(gè)新的字符串(字符串B)。假定字符串B位于0080h。
用于這個(gè)例子的指令格式如下In_Load_FKAG,有效負(fù)載地址In_Find,005016,5,6016……In_Find_Continue,008016,5,3016范圍是100-5+1=96=6016圖20是查找引擎(SPALU_SE)1930的總框圖,它是ALU 1907的一部分并且執(zhí)行提交給ALU 1907的In_Find和In_Find_Continue指令。In_Find指令查找UFKB的一個(gè)區(qū)域并在目標(biāo)(UFKB)區(qū)域中查找最多達(dá)四個(gè)可能的引用字符串。引用字符串存儲(chǔ)在ALU引用字符串存儲(chǔ)器中。
如圖20中所示,查找引擎和下列部件相連(a)ALU字符串引用存儲(chǔ)器,存儲(chǔ)引用字符串。
(b)SPALU數(shù)據(jù)復(fù)用器A 1919,通過(guò)它提供用于以匹配引用字符串的目標(biāo)數(shù)據(jù)。在In_Find指令使用SP_UFKB數(shù)據(jù)復(fù)用器1915的操作中連接到UFKB。
(c)SPALU數(shù)據(jù)復(fù)用器1921,通過(guò)它提供指令碼,包括啟動(dòng)查找的“開(kāi)始”信號(hào)SPALUGO 2005。
(d)狀態(tài)處理器流鍵地址發(fā)生器1911,用來(lái)增加及減小UFKB地址。
(e)狀態(tài)處理器指令計(jì)數(shù)器1903,在這里報(bào)告查找結(jié)果。
該系統(tǒng)通過(guò)時(shí)鐘信號(hào)CLK 2001運(yùn)轉(zhuǎn)并可以由RESET信號(hào)進(jìn)行重啟。指令譯碼塊SE_INST 2009對(duì)In_Find和In_Find_Continue的指令碼進(jìn)行解碼并在SPALUGO信號(hào)2005激活時(shí)啟動(dòng)查找引擎。查找引擎連續(xù)不斷地監(jiān)控SPMuxB 1921輸出總線2007和SPALUGO信號(hào)2005以檢測(cè)In_Find和In_Find_Continue指令。在查找引擎1930操作期間該引擎通過(guò)SPMUXA 1919從UFKB 1103以字長(zhǎng)接收目標(biāo)數(shù)據(jù)2011。同樣地,來(lái)自引用字符串存儲(chǔ)器2003的適當(dāng)?shù)刂返囊米址許P_Data_RMB 2013到達(dá)。
一旦提交了In_Find或In_Find_Continue指令,查找引擎引用裝載(SE_LOAD)模塊2015負(fù)責(zé)“清理”引用字符串寄存器。它從引用字符串存儲(chǔ)器2003取出一個(gè)引用字符串?dāng)?shù)組對(duì)其進(jìn)行解釋并用該信息裝載引用字符串寄存器。
在處理狀態(tài)中,SE_LOAD模塊2015首先從引用存儲(chǔ)器2003的起始位置裝載第一個(gè)字。假定在提交該指令之前起始位置就被設(shè)置在正確的位置。一旦裝載了字符串?dāng)?shù)量和字符串大小,裝載方法繼續(xù)裝載所有的引用字符串。增加引用信號(hào)2025增加正在裝載引用字符串的引用存儲(chǔ)器地址。在字符串的裝載過(guò)程中未確認(rèn)LOAD_KEY_DONE信號(hào)2017。當(dāng)正在裝載最后一個(gè)引用字符串的最后一個(gè)字時(shí)用脈沖傳送LOAD_KEY信號(hào)2019,指示查找引擎模塊2030從下一個(gè)時(shí)鐘周期開(kāi)始查找。在下一個(gè)時(shí)鐘周期中確認(rèn)LOAD_KEY_DONE信號(hào)2017并同時(shí)從引用存儲(chǔ)器2003裝載跳轉(zhuǎn)向量2021。
查找引擎增加/控制模塊(SE_INC)2023負(fù)責(zé)增加流鍵地址發(fā)生器1911以便從UFKB向查找引擎提供新的字。它監(jiān)控出自查找引擎模塊的找到信號(hào)并報(bào)告結(jié)果。SE_INC 2023還負(fù)責(zé)計(jì)算真正的結(jié)束地址并根據(jù)In_Find指令中提供的范圍確定最后一個(gè)字中要檢查的最后一個(gè)字節(jié)。
SE-4SEARCH 2030模塊包括四個(gè)查找引擎以便同時(shí)查找四個(gè)字符串。該引擎對(duì)四個(gè)引用字符串的每一個(gè)輸出找到信號(hào)2031和位置信號(hào)2033以指示是否找到該字符串及在哪里找到了該字符串。
由SE-INC 2023確認(rèn)的SPALU_Done信號(hào)指示查找完成。如果同時(shí)確認(rèn)了SPALU_Match信號(hào)2037那么表示這是一個(gè)成功查找。成功查找還導(dǎo)致SPALU_Data總線2039攜帶跳轉(zhuǎn)向量和找到引用字符串的查找引擎編號(hào)。
本發(fā)明的一個(gè)方面是查找快速。從提交指令以在UFKB中的N個(gè)字中的任意位置開(kāi)始查找到確認(rèn)SPALU_Done信號(hào)2035的最長(zhǎng)時(shí)間是N個(gè)時(shí)鐘周期加上用于預(yù)裝入和成功查找情況下的指針調(diào)整的附加時(shí)鐘周期。在我們的實(shí)施方案中,這個(gè)附加負(fù)擔(dān)是11個(gè)時(shí)鐘周期。因此,每個(gè)額外的字僅占用一個(gè)時(shí)鐘周期。
圖21顯示了包括四個(gè)單一查找模塊的SE_4SEARCH模塊2030。替代實(shí)施方案可以包括更多的單一查找模塊以便能夠同時(shí)查找多于四個(gè)的引用字符串。四個(gè)查找引擎模塊中的每一個(gè)都是相同的,因此只描述一個(gè)這樣地模塊2103。
每個(gè)單一查找模塊2103執(zhí)行一個(gè)單獨(dú)的引用字符串查找。使用這個(gè)模塊的多個(gè)副本可以在公共源緩沖區(qū)(UFKB)中查找多個(gè)不同的引用字符串。該模塊包括核心比較器矩陣塊2105(查找引擎核心)和狀態(tài)機(jī)SE_SM 2107。查找引擎核心2105能夠?qū)﹂L(zhǎng)達(dá)NR個(gè)單元(在我們的實(shí)施方案中是16字節(jié))的引用字符串和三個(gè)8-字節(jié)字(在三個(gè)連續(xù)時(shí)鐘周期中裝入,每次一個(gè)字)的目標(biāo)字符串進(jìn)行比較。在每個(gè)時(shí)鐘周期中,單一查找模塊2103從第一個(gè)字的8個(gè)字節(jié)中的任意一個(gè)開(kāi)始在目標(biāo)中查找引用字符串。每一個(gè)引用字符串字節(jié)都時(shí)有一個(gè)校驗(yàn)位,指示是否檢查這個(gè)字節(jié)。如果確認(rèn)了該校驗(yàn)位,就禁止相應(yīng)的字節(jié)檢驗(yàn)。隨著64-位(8字節(jié))字被以流水方式裝入到三個(gè)寄存器中,在它們被取出之后兩個(gè)時(shí)鐘周期比較開(kāi)始。
如果查找成功需要調(diào)整源(UFKB)地址指針。如果查找成功,匹配信號(hào)2111成為活動(dòng)的并且引用字符串的第一個(gè)字節(jié)的位置被放在位置總線3113上。SE_SM狀態(tài)機(jī)2107每個(gè)時(shí)鐘周期執(zhí)行若干任務(wù)。它有三個(gè)狀態(tài)復(fù)位、空閑和進(jìn)行。當(dāng)處于空閑狀態(tài)時(shí),狀態(tài)機(jī)2107等待來(lái)自SE_LOAD模塊2105的信號(hào)以切換到進(jìn)行狀態(tài)。在進(jìn)行狀態(tài)的第一個(gè)時(shí)鐘周期中,如果匹配發(fā)生就核對(duì)位置和字節(jié)位移2115。如果字節(jié)位移大于位置,就忽略掉它,即沒(méi)有確認(rèn)找到。同樣,如果它是要檢查的最后一個(gè)字,就檢驗(yàn)終點(diǎn)位移字節(jié)和位置,如果位置大于范圍2117中要檢查的最后一個(gè)字節(jié)就把它忽略掉。否則,就在查找引擎核心2105發(fā)現(xiàn)匹配時(shí)確認(rèn)找到信號(hào)并鎖住該位置把它轉(zhuǎn)發(fā)到SE_INC模塊2023。
現(xiàn)在看圖22A,查找引擎核心2105是查找引擎模塊的核心比較器矩陣。它在目標(biāo)字符串中查找NR-單元的引用字符串。它包括一個(gè)引用軸和一個(gè)目標(biāo)軸。引用軸包括保存引用字符串的寄存器,通常字符串是NR個(gè)單元。在優(yōu)選實(shí)施方案中單元是字節(jié),NR是16,并且很容易進(jìn)行更改以查找其它引用字符串大小。目標(biāo)數(shù)據(jù)被組織成字。目標(biāo)數(shù)據(jù)被排列成一組單字寄存器,每個(gè)單字寄存器保存目標(biāo)數(shù)據(jù)的一個(gè)字。在一個(gè)時(shí)鐘周期內(nèi)打入寄存器一個(gè)字。這樣,目標(biāo)數(shù)據(jù)的第一個(gè)字就在三個(gè)時(shí)鐘周期內(nèi)打入目標(biāo)軸。
查找引擎核心2105包括至少一個(gè)NR-單元比較器,每一個(gè)有NR對(duì)輸入和一個(gè)輸出,輸出指示NR-對(duì)輸入中每一對(duì)的匹配。圖22B中顯示了一個(gè)這樣的比較器2203。輸入對(duì)顯示為(2207-1,2209-1)、(2207-2,22-09-2)、...(2207-NR,2209-NR)。輸出是2211。圖22A顯示了多個(gè)(比如Nstart個(gè))比較器,標(biāo)為2203-1、2203-2、...、2203-Nstart??紤]這些比較器中的任意一個(gè),查找引擎核心還包括一個(gè)連接矩陣,其中包括沿著引用軸指示引用字符串值的NR個(gè)連接和沿著目標(biāo)軸指示目標(biāo)數(shù)據(jù)值的NR個(gè)連接,從目標(biāo)數(shù)據(jù)的第一個(gè)起始位置開(kāi)始并在結(jié)束位置結(jié)束的目標(biāo)數(shù)據(jù)連接。比較器是連在一起的,這樣當(dāng)引用軸和目標(biāo)軸相互垂直面向時(shí),任意比較器都是沿著矩陣的對(duì)角線定向,這樣目標(biāo)數(shù)據(jù)的NR個(gè)連接就可以和引用字符串進(jìn)行比較。每個(gè)比較器在目標(biāo)軸中的一個(gè)不同位置開(kāi)始。在我們的實(shí)現(xiàn)中,每個(gè)字是8字節(jié)長(zhǎng),比較器數(shù)量Nstart等于字長(zhǎng),并且比較器從目標(biāo)軸上的連續(xù)位置開(kāi)始。這樣,在一個(gè)時(shí)鐘周期內(nèi)查找引擎核心2105能夠找到從第一個(gè)字中的任意位置開(kāi)始的引用字符串。注意如果目標(biāo)字符串正巧跨越了一個(gè)字邊界,查找引擎核心仍將自動(dòng)找到該字。
比較器的輸出是Nstart輸入優(yōu)先級(jí)編碼器的輸入,它指示如果找到了一個(gè)字符串的話是Nstart個(gè)比較器中的哪一個(gè)找到了該字符串。這提供了位置。
在裝入數(shù)據(jù)之后的操作中,狀態(tài)機(jī)2107在第一個(gè)時(shí)鐘周期將忽略可能在第一組少量比較器中找到的任意字符串,比較器數(shù)量由位移指示。在每個(gè)后繼時(shí)鐘周期中,查找引擎2105將找到從第一組Nstart個(gè)位置中的任意地方開(kāi)始的引用字符串。這樣,在多個(gè)時(shí)鐘周期中查找引擎核心2105將找到目標(biāo)數(shù)據(jù)中任意位置的引用字符串。
圖23更詳細(xì)地顯示了輸入核心的一種實(shí)現(xiàn)。這個(gè)實(shí)現(xiàn)用于找到在一組起始位置的任意一個(gè)中的引用字符串。該實(shí)現(xiàn)包括用于接收引用字符串之一的NR個(gè)單元的引用寄存器2203、連接成組以接收目標(biāo)數(shù)據(jù)的一組目標(biāo)數(shù)據(jù)寄存器2205、多個(gè)比較器集、對(duì)應(yīng)每個(gè)起始位置的一個(gè)比較器集、連接到引用寄存器的每個(gè)單元—在這個(gè)實(shí)現(xiàn)中指是每個(gè)字節(jié)—和從特定起始位置開(kāi)始的目標(biāo)數(shù)據(jù)寄存器的NR個(gè)單元—這種情況下也是字節(jié)—的比較器集,并比較第一引用寄存器內(nèi)容和從特定起始位置開(kāi)始的目標(biāo)寄存器的NR個(gè)單元。每個(gè)比較器集指示從它相應(yīng)的不同起始位置開(kāi)始的目標(biāo)數(shù)據(jù)中是否有第一引用字符串的匹配。可能的起始位置集可以包括Nstart個(gè)不同位置。這些位置可以是連續(xù)的或不連續(xù)的,如果連續(xù),就把一個(gè)或多個(gè)目標(biāo)數(shù)據(jù)寄存器連接成組以接收目標(biāo)數(shù)據(jù)的至少NR+Nstart-1個(gè)單元。這樣就有了Nstart個(gè)比較器集,對(duì)Nstart個(gè)起始位置中的每一個(gè)都有一個(gè)比較器集。
每個(gè)比較器集包括NR個(gè)連續(xù)的比較器。圖23B中顯示了一個(gè)這樣的比較器2313,并且包括引用輸入、目標(biāo)輸入、使能輸入和一個(gè)指示匹配的輸出,這樣就在引用和目標(biāo)輸入匹配并且使能輸入被確認(rèn)時(shí)確認(rèn)比較器2313的輸出。對(duì)針對(duì)特定起始位置的特定比較器集來(lái)說(shuō),連續(xù)比較器的引用輸入連接到引用寄存器的連續(xù)單元上,連續(xù)比較器的目標(biāo)輸入連接到從該特定起始位置開(kāi)始的目標(biāo)數(shù)據(jù)寄存器的連續(xù)單元上,使能集合中的第一個(gè)比較器,并且每個(gè)比較器的使能輸入連接到前一個(gè)比較器的輸出上,這樣當(dāng)引用字符串的NR個(gè)單元和目標(biāo)數(shù)據(jù)的NR個(gè)單元一致時(shí)確認(rèn)最后一個(gè)比較器的輸出。
用這種方式,狀態(tài)處理器能夠以極高的速率在分組(存儲(chǔ)在UFKB中)區(qū)域中的未知位置上定位字符串。
高速緩沖存儲(chǔ)器子系統(tǒng)再參考圖11,高速緩存器子系統(tǒng)1115連接到查找更新引擎(LUE)1107、狀態(tài)處理器(SP)1108和流插入/刪除引擎(FIDE)上。高速緩沖存儲(chǔ)器1115保存存儲(chǔ)在存儲(chǔ)器1123中的流-入口數(shù)據(jù)庫(kù)中的一組流-入口,因而它通過(guò)統(tǒng)一存儲(chǔ)器控制1119連接到存儲(chǔ)器1123。根據(jù)本發(fā)明的一個(gè)方面,高速緩存器中的這些記錄是那些下次很可能被訪問(wèn)的記錄。
希望能夠使高速緩存器系統(tǒng)中的命中率達(dá)到最大。典型的現(xiàn)有技術(shù)高速緩存器系統(tǒng)用來(lái)加速?gòu)奈⑻幚砥飨到y(tǒng)到存儲(chǔ)器和從存儲(chǔ)器到微處理器系統(tǒng)的訪問(wèn)速度。在這樣的現(xiàn)有技術(shù)系統(tǒng)中有幾種機(jī)制可用來(lái)預(yù)測(cè)查找這樣就能使命中率達(dá)到最大。例如現(xiàn)有技術(shù)的高速緩存器可以使用前視機(jī)制來(lái)預(yù)測(cè)指令高速緩存器查找和數(shù)據(jù)高速緩存器查找。這樣的前視機(jī)制無(wú)法用于高速緩存器子系統(tǒng)1115的監(jiān)控器應(yīng)用。當(dāng)新分組進(jìn)入監(jiān)控器300時(shí),下一個(gè)高速緩存器訪問(wèn),例如來(lái)自LUE1107,可能是針對(duì)與上次高速緩存器查找完全不同的流,而且無(wú)法提前知道下一個(gè)分組將屬于哪一個(gè)流。
本發(fā)明的一個(gè)方面是當(dāng)需要高速緩存器替換時(shí)替換掉最近最少使用(LRU)的流-入口的高速緩存器系統(tǒng)。替換最近最少使用的流-入口是首選的,因?yàn)楦S當(dāng)前分組的下一個(gè)分組很可能屬于同一個(gè)流。這樣,新分組的簽名很可能將匹配最近使用過(guò)的流-入口。反之,與最近最少使用的流-入口相連的分組最不可能很快到達(dá)。
此外,在對(duì)流-入口進(jìn)行操作的其中一個(gè)引擎,例如LUE1107,完成了在流-入口上的操作之后,同一引擎或其它引擎很可能將很快用到同一個(gè)流-入口。這樣就希望確保最近使用過(guò)的流-入口保留在高速緩沖存儲(chǔ)器中。
本發(fā)明的高速緩存器的一個(gè)特性是無(wú)論何時(shí)只要有可能最近使用最多(MLU)的流-入口都被保存在高速緩存器中。既然通常同一流的分組總是大量到達(dá)并且MRU流-入口很可能為分析子系統(tǒng)中的其它引擎所需要,盡最大可能把MRU流-入口保留在高速緩存器中就能提高在高速緩存器中找到流記錄的可能性,這樣就提高的高速緩存器命中率。
然而本高速緩存器發(fā)明的另一方面是它包括一個(gè)使用一組相聯(lián)存儲(chǔ)單元(CAMs)的相聯(lián)存儲(chǔ)器。CAM包含地址,在我們的實(shí)現(xiàn)中它是與包括存儲(chǔ)器單元的高速緩沖存儲(chǔ)器(例如,數(shù)據(jù)RAM)中對(duì)應(yīng)的流-入口相聯(lián)的散列值。在一種實(shí)施方案中,每個(gè)存儲(chǔ)器單元是一個(gè)頁(yè)。每個(gè)CAM還包括指向高速緩沖存儲(chǔ)器頁(yè)的指針。這樣,CAM內(nèi)容包括地址和指向高速緩沖存儲(chǔ)器的指針。通常,每個(gè)CAM單元包括帶有輸入的匹配電路。把散列值送進(jìn)CAM的匹配電路輸入中,如果該散列值匹配CAM中的散列值,就確認(rèn)匹配輸出,指示有了一個(gè)命中。CAM指針指向流-入口在高速緩沖存儲(chǔ)器中的頁(yè)號(hào)(即地址)。
每個(gè)CAM還包括高速緩存器地址輸入、高速緩存器指針輸入和高速緩存器內(nèi)容輸出以輸入和輸出CAM的地址部分和指針部分。
特定實(shí)施方案高速緩存器存儲(chǔ)一個(gè)存儲(chǔ)桶的頁(yè)中的流-入口,即它能夠存儲(chǔ)單獨(dú)的流-入口。這樣,指針就是高速緩沖存儲(chǔ)器中的頁(yè)號(hào)。在一種版本當(dāng)中,每個(gè)散列值對(duì)應(yīng)N個(gè)流-入口(例如,在這個(gè)版本的優(yōu)選實(shí)施方案中是4個(gè)存儲(chǔ)桶)的存儲(chǔ)柜。在另一種實(shí)現(xiàn)中,每個(gè)散列值指向一個(gè)單一地流-入口,即存儲(chǔ)柜和存儲(chǔ)桶大小相當(dāng)。為簡(jiǎn)單起見(jiàn),在描述高速緩沖存儲(chǔ)器1115時(shí)假定采用第二種實(shí)現(xiàn)。
此外,按照常規(guī),提供匹配輸出信號(hào)給高速緩存器中的相應(yīng)位置,因此可以在高速緩沖存儲(chǔ)器中的該位置進(jìn)行讀寫操作。
本發(fā)明的一個(gè)方面實(shí)現(xiàn)了相聯(lián)和真正的LRU替換策略的結(jié)合。為了這一點(diǎn),高速緩存器系統(tǒng)1115的CAMs被按照一種順序組織成我們稱為CAM棧(也叫CAM陣列)的形式,帶有頂部CAM和底部CAM。從頂部CAM開(kāi)始每個(gè)CAM的地址和指針輸出都連接到下一個(gè)CAM的地址和指針輸入上,直到底部。
在我們的實(shí)現(xiàn)中,散列用來(lái)給高速緩存器定址。散列是CAM陣列的輸入,所擁有的地址與輸入散列相匹配的任意CAM都確認(rèn)它的指示命中的區(qū)配輸出。當(dāng)產(chǎn)生高速緩沖存儲(chǔ)器命中時(shí),產(chǎn)生命中的CAM的內(nèi)容(包括地址和指向高速緩沖存儲(chǔ)器的指針)被放入棧頂?shù)腃AM中。在產(chǎn)生命中的CAM之上的那些CAM內(nèi)容(高速緩沖存儲(chǔ)器地址和高速緩沖存儲(chǔ)器指針)下移以填充空隙。
如果產(chǎn)生未命中,就把任意新的流記錄放在由底部CAM所指的高速緩沖存儲(chǔ)器單元中。底部之上的所有CAM內(nèi)容均下移一格,并把新的散列值和指向新的流-入口的高速緩沖存儲(chǔ)器的指針?lè)旁贑AM棧的最頂部的CAM中。
用這種方式,CAMs被按照使用的遠(yuǎn)近順序進(jìn)行排列,底部CAM指向最近最少使用的高速緩存器內(nèi)容,頂部CAM指向最近使用過(guò)的高速緩存器內(nèi)容。
此外,和通?;贑AM的高速緩存器不同的是,在CAM中的地址和它所指向的高速緩沖存儲(chǔ)器的哪個(gè)單元之間沒(méi)有固定的關(guān)系。CAM和高速緩沖存儲(chǔ)器頁(yè)之間的關(guān)系隨著時(shí)間而變化。例如,在某個(gè)時(shí)刻,棧中的第五個(gè)CAM包含指向高速緩沖存儲(chǔ)器的一個(gè)特定頁(yè)的指針,一段時(shí)間過(guò)后,同樣是第五個(gè)CAM可以指向不同的高速緩沖存儲(chǔ)器頁(yè)。
在一種實(shí)施方案中,CAM陣列包括32個(gè)CAM以及包含32個(gè)存儲(chǔ)器單元(即存儲(chǔ)器頁(yè))的高速緩沖存儲(chǔ)器,每個(gè)CAM內(nèi)容指向一個(gè)頁(yè)。假定CAMs分別編號(hào)為CAM0、CAM1、...、CAM31,CAM0和CAM31是棧中的頂部和底部CAM。
CAM陣列由CAM控制器控制,CAM控制器實(shí)現(xiàn)成一個(gè)狀態(tài)機(jī),高速緩沖存儲(chǔ)器由高速緩沖存儲(chǔ)器控制器控制,它也實(shí)現(xiàn)成一個(gè)狀態(tài)機(jī)。本領(lǐng)域的技術(shù)人員從這個(gè)操作描述可以了解對(duì)這種控制器的需要以及如何把它們實(shí)現(xiàn)成狀態(tài)機(jī)或其它形式。為了不至于混淆這些控制器和其它控制器,例如統(tǒng)一存儲(chǔ)器控制,我們把這兩個(gè)控制器分別稱為CAM狀態(tài)機(jī)和存儲(chǔ)器狀態(tài)機(jī)。
作為一個(gè)例子來(lái)考慮,高速緩存器的狀態(tài)是它是滿的。進(jìn)一步假定下表中顯示了CAM棧的內(nèi)容(地址和指向高速緩沖存儲(chǔ)器的指針)和在高速緩沖存儲(chǔ)器的每個(gè)頁(yè)號(hào)地址上的高速緩沖存儲(chǔ)器內(nèi)容。
這說(shuō)明CAM4包含并將匹配散列值hash4,用hash4進(jìn)行查找將產(chǎn)生匹配和高速緩沖存儲(chǔ)器中的地址page4。此外,高速緩沖存儲(chǔ)器中的page4包含流-入口entry4,用這個(gè)符號(hào)表示它和散列值hash4相匹配。這個(gè)表還指示對(duì)hash0的使用比hash1更近,hash5比hash6更近,等等,hash31是最近最少使用的散列值。進(jìn)一步假定LUE 1107用散列值hash31從統(tǒng)一流鍵緩沖區(qū)1103獲得一個(gè)記錄。LUE通過(guò)CAM陣列查找高速緩存器子系統(tǒng)。CAM31獲得命中并返回命中的頁(yè)號(hào),即page31。高速緩存器子系統(tǒng)現(xiàn)在向LUE 1107指示所提供的散列值產(chǎn)生了命中并向它提供指向高速緩沖存儲(chǔ)器的page31的指針,page31包含與hash31對(duì)應(yīng)的流-入口,即flow31。LUE現(xiàn)在從高速緩沖存儲(chǔ)器在地址page31獲得流-入口flow31。在優(yōu)選實(shí)施方案中,對(duì)高速緩存器的查找只占用一個(gè)時(shí)鐘周期。
值hash31是最近使用過(guò)的散列值。因此,根據(jù)發(fā)明的高速緩沖存儲(chǔ)器系統(tǒng)的一個(gè)方面,要把最近使用過(guò)的記錄放在CAM棧的頂部。這樣hash31就被放進(jìn)CAM0中。此外,hash30現(xiàn)在是LRU散列值,所以把它移到CAM31。下一個(gè)最近最少使用的散列值hash29移到CAM30中,等等。這樣,在把MSU記錄放到頂部CAM之后所有的CAM內(nèi)容都下移一格。在優(yōu)選實(shí)施方案中下移CAM記錄只占用一個(gè)時(shí)鐘周期。這樣,查找和重排CAM陣列以根據(jù)最近使用情況維持次序關(guān)系。下表顯示了CAM陣列的新內(nèi)容以及高速緩沖存儲(chǔ)器的內(nèi)容(無(wú)變化)。
為了延續(xù)這個(gè)例子,假定過(guò)些時(shí)候LUE 1007用散列值hash5進(jìn)行查找。這在指向高速緩沖存儲(chǔ)器page5的CAM6中產(chǎn)生命中。這樣,在一個(gè)時(shí)鐘周期內(nèi),高速緩存器子系統(tǒng)1115向LUE 1007提供命中指示以及指向指向高速緩沖存儲(chǔ)器中的流-入口的指針。最近的記錄是hash5,因此把hash5和高速緩沖存儲(chǔ)器地址page5送入CAM0中。剩下的CAMs內(nèi)容都下移一格直到并且包括包含hash5的記錄。也就是說(shuō),CAM7、CAM8、...、CAM31保持不變。CAM陣列內(nèi)容和沒(méi)有發(fā)生變化的高速緩沖存儲(chǔ)器內(nèi)容顯示在下表中。
這樣,在高速緩存器命中的情況下,CAM陣列總是保持用過(guò)的散列值按使用的遠(yuǎn)近順序排列,最近使用過(guò)的散列值保持在頂部CAM中。
將通過(guò)繼續(xù)這個(gè)例子描述產(chǎn)生高速緩存器命中時(shí)高速緩存器子系統(tǒng)的操作。假定有一個(gè)對(duì)散列值hash43的查找(例如,來(lái)自LUE1007)。CAM陣列產(chǎn)生未命中,導(dǎo)致使用該散列在用外部存儲(chǔ)器中查找。我們的特定實(shí)現(xiàn)的特定操作是CAM狀態(tài)機(jī)發(fā)送一個(gè)GET消息給存儲(chǔ)器狀態(tài)機(jī),這導(dǎo)致通過(guò)統(tǒng)一存儲(chǔ)器控制(UMC)1119使用該散列的存儲(chǔ)器查找。但是,本領(lǐng)域中的那些技術(shù)人員也應(yīng)該了解當(dāng)CAM陣列中產(chǎn)生未命中時(shí)實(shí)現(xiàn)存儲(chǔ)器查找的其它方法。
在流-入口數(shù)據(jù)庫(kù)324(即外部存儲(chǔ)器)中的查找產(chǎn)生命中或未命中。假定流-入口數(shù)據(jù)庫(kù)324沒(méi)有與散列值hash43相匹配的記錄。存儲(chǔ)器狀態(tài)機(jī)向CAM狀態(tài)機(jī)指示未命中,CAM狀態(tài)機(jī)隨后向LUE 1007指示未命中。另一方面,假定在數(shù)據(jù)庫(kù)324中有匹配散列值hash43的流-入口-entry43。假若這樣,就把該流-入口取出裝入到高速緩存器中。
根據(jù)本發(fā)明的另一方面,底部CAM記錄CAM31總是指向高速緩沖存儲(chǔ)器中的LRU地址。這樣,實(shí)現(xiàn)真正的LRU替換策略包括清洗出LRU高速緩沖存儲(chǔ)器記錄并在底部CAM所指的高速緩沖存儲(chǔ)器位置中插入一個(gè)新記錄。并對(duì)該CAM記錄進(jìn)行修改以反映它所指向的高速緩沖存儲(chǔ)器單元中的記錄的散列值。這樣,散列值hash43被放入CAM31中并且記錄entry43也被放入CAM31所指的高速緩存器頁(yè)中。現(xiàn)在CAM陣列和改變了的高速緩沖存儲(chǔ)器內(nèi)容是
注意插入的記錄是現(xiàn)在的MRU流-入口。因此,現(xiàn)在要把CAM31的內(nèi)容移到CAM0并且頂部31個(gè)CAMs中的以前的記錄要再下移一次,底部CAM指向LRU高速緩沖存儲(chǔ)器頁(yè)。
除了通過(guò)高速緩存器子系統(tǒng)1115查找數(shù)據(jù)庫(kù)324中的記錄以獲得一個(gè)現(xiàn)有的流-入口之外,LUE、SP或FIDE引擎還可以通過(guò)高速緩存器更新流-入口。同樣,在高速緩存器中也可以有是更新過(guò)的流-入口的記錄。在這樣更新過(guò)的記錄被寫入外部存儲(chǔ)器中的流-入口數(shù)據(jù)庫(kù)324之前,始終稱它們?yōu)椤芭K”記錄。通常要在高速緩存器系統(tǒng)中提供一種機(jī)制來(lái)指示高速緩存器中的臟記錄。例如,一個(gè)臟記錄在數(shù)據(jù)庫(kù)324中的相應(yīng)記錄被更新之前不能被清洗出去。
假定在最后一個(gè)例子中,高速緩存器中的記錄也由該操作進(jìn)行了更改。也就是說(shuō),hash43是在MRU CAM0中,CAM0正確指向page30,但高速緩存器的page30中的信息,也就是entry43,并不對(duì)應(yīng)數(shù)據(jù)庫(kù)324中的entry43。也就是說(shuō),高速緩存器的page30的內(nèi)容是臟的?,F(xiàn)在需要更新數(shù)據(jù)庫(kù)324。這被稱為備份或清除臟記錄。
通常在高速緩存器系統(tǒng)中還用臟標(biāo)記指示高速緩沖存儲(chǔ)器記錄是臟的。在優(yōu)選實(shí)施方案中,對(duì)高速緩沖存儲(chǔ)器中的每個(gè)字都有一個(gè)臟標(biāo)記。
所發(fā)明的高速緩存器系統(tǒng)的另一個(gè)方面是根據(jù)最可能被清除出高速緩沖存儲(chǔ)器的記錄來(lái)清除高速緩沖存儲(chǔ)器內(nèi)容。在我們的LRU高速緩存器實(shí)施方案中,高速緩沖存儲(chǔ)器記錄的清除按照使用由遠(yuǎn)至近的順序進(jìn)行。這樣,LRU頁(yè)首先被清除與它們可能被首先清洗的最小可能性一致。
在我們的實(shí)施方案中,存儲(chǔ)器狀態(tài)機(jī)在它空閑的任意時(shí)刻都可以被編程以按照從遠(yuǎn)到近的順序,即從CAM陣列的底部開(kāi)始,掃描CAM陣列并查找臟標(biāo)記。只要發(fā)現(xiàn)了一個(gè)臟標(biāo)記,就把高速緩沖存儲(chǔ)器內(nèi)容備份到外部存儲(chǔ)器中的數(shù)據(jù)庫(kù)324中。
注意一旦高速緩沖存儲(chǔ)器的一個(gè)頁(yè)被清除,為了防止仍然需要它而繼續(xù)把它保留在高速緩存器中。僅在需要更多高速緩沖存儲(chǔ)器頁(yè)時(shí)才把該頁(yè)沖洗出去。對(duì)應(yīng)的CAM也直到需要一個(gè)新的高速緩沖存儲(chǔ)器頁(yè)時(shí)才被改變。采用這種方式,能夠?qū)Πǜ蓛粲涗浽趦?nèi)的所有高速緩沖存儲(chǔ)器內(nèi)容進(jìn)行有效查找。此外,無(wú)論何時(shí)要沖洗一個(gè)高速緩沖存儲(chǔ)器記錄,都要先進(jìn)行檢查確認(rèn)該記錄是干凈記錄。如果該記錄是臟的,要在沖洗之前先對(duì)其進(jìn)行備份。
高速緩存器子系統(tǒng)1115可以一次服務(wù)兩個(gè)讀傳遞。如果一次有兩個(gè)以上活動(dòng)的讀請(qǐng)求,高速緩存器按照下面的特定順序?yàn)樗鼈兎?wù)(1)LRU臟寫回。如果最近最少使用高速緩沖存儲(chǔ)器記錄是臟的,高速緩存器就把它寫回存儲(chǔ)器中,因此將總有一個(gè)空間用于高速緩沖存儲(chǔ)器未命中時(shí)的獲取。
(2)查找和更新引擎1107。
(3)狀態(tài)處理器1108。
(4)流插入和刪除引擎1110。
(5)分析器主機(jī)接口和控制1118。
(6)從LRU-1到MRU的臟寫回;當(dāng)沒(méi)有其它未決因素時(shí),高速緩存器引擎把臟記錄寫回到外部存儲(chǔ)器。
圖26顯示了高速緩存器子系統(tǒng)1115的高速緩沖存儲(chǔ)器部件2600。高速緩沖存儲(chǔ)器子系統(tǒng)2600包括高速緩沖存儲(chǔ)器頁(yè)的一組雙端口存儲(chǔ)器2603。在我們的優(yōu)選實(shí)施方案中有32頁(yè)。每個(gè)存儲(chǔ)器頁(yè)都是雙端口。也就是說(shuō),每個(gè)存儲(chǔ)器頁(yè)包括兩組輸入端口和兩組輸出端口,每個(gè)輸入端口都有地址和數(shù)據(jù)輸入,一組輸入和輸出端口被連接到統(tǒng)一存儲(chǔ)器控制(UMC)1119,用于從高速緩沖存儲(chǔ)器和用于流-入口數(shù)據(jù)庫(kù)324的外部存儲(chǔ)器讀出或向其寫入數(shù)據(jù)。由多路復(fù)用器2611使用來(lái)自高速?zèng)_存器子系統(tǒng)1115中的CAM存儲(chǔ)器子系統(tǒng)部分的高速緩存器頁(yè)選擇信號(hào)來(lái)選擇把輸出線2609中的哪一個(gè)連接到UMC1119上。從數(shù)據(jù)庫(kù)324更新高速緩沖存儲(chǔ)器使用來(lái)自UMC的高速緩存器數(shù)據(jù)信號(hào)2617和高速緩存器地址信號(hào)2615。
來(lái)自查找/更新引擎(LUE)1107、狀態(tài)處理器(SP)1108或流插入/刪除引擎(FIDE)1110的對(duì)高速緩沖存儲(chǔ)器的查找和數(shù)據(jù)更新使用高速緩沖存儲(chǔ)器存儲(chǔ)頁(yè)2603的其它端口。一組輸入選擇多路復(fù)用器2605和一組輸出選擇多路復(fù)用器2607使用一組選擇信號(hào)2619分別選擇輸入和輸出引擎。
圖27顯示了連接到CAM陣列2705和存儲(chǔ)器狀態(tài)機(jī)20703的高速緩存器CAM狀態(tài)機(jī),以及在這些單元之間傳遞的一些信號(hào)。信號(hào)名都是自釋義的,并且從上面的描述中也能夠清楚怎樣把這些控制器實(shí)現(xiàn)為狀態(tài)機(jī)或其它形式。
盡管對(duì)CAM陣列操作的上述描述對(duì)本領(lǐng)域的技術(shù)人員要設(shè)計(jì)這樣一個(gè)CAM陣列來(lái)說(shuō)已經(jīng)足夠了,并且有多種可能的設(shè)計(jì),圖28顯示了一種這樣的設(shè)計(jì)。參考該圖,CAM陣列2705對(duì)CAM存儲(chǔ)器的每個(gè)頁(yè)都包括一個(gè)CAM,例如CAM[7](2807)。查找端口或更新端口取決于LUE、SP或FIDE中的哪一個(gè)正在訪問(wèn)高速緩存器子系統(tǒng)。查找的輸入數(shù)據(jù)通常是散列,圖中顯示為REF-DATA 2803。裝入、更新或清出高速緩存器用信號(hào)2805來(lái)實(shí)現(xiàn),信號(hào)2805用選擇多路復(fù)用器2809來(lái)選擇CAM輸入數(shù)據(jù),這樣的數(shù)據(jù)是命中頁(yè)或LRU頁(yè)(按照本發(fā)明的一個(gè)方面就是底部CAM)。通過(guò)5->32解碼器2811完成任何裝入。對(duì)陣列中的所有CAM進(jìn)行CAM查找的結(jié)果被提供給一個(gè)32->5低到高的編碼器2813,2813輸出命中2815以及產(chǎn)生命中的CAM編號(hào)2817。CAM命中頁(yè)2819是MUX 2821的輸出,2821擁有每個(gè)CAM的CAM數(shù)據(jù)作為輸入以及由產(chǎn)生命中的CAM的信號(hào)2817選擇的輸出。對(duì)臟記錄的維護(hù)從連接到CAM狀態(tài)機(jī)2701的更新端口執(zhí)行。MUX 2823擁有所有CAM的數(shù)據(jù)輸入和掃描輸入2827。MUX 2823產(chǎn)生臟數(shù)據(jù)2825。
模式解析和提取數(shù)據(jù)庫(kù)格式能夠存在于不同層中的不同協(xié)議可以被看作一個(gè)或多個(gè)由結(jié)點(diǎn)鏈接成的樹(shù)中的結(jié)點(diǎn)。分組類型是樹(shù)的根(稱為基層)。每個(gè)協(xié)議是下一層上的一些其它協(xié)議的父親結(jié)點(diǎn)或終端結(jié)點(diǎn)。一個(gè)父親結(jié)點(diǎn)把一個(gè)協(xié)議鏈接到可以在更高層上的其它協(xié)議(子協(xié)議)。這樣一個(gè)協(xié)議就可以有零個(gè)或多個(gè)孩子。
作為樹(shù)結(jié)構(gòu)的一個(gè)實(shí)例,考慮以太網(wǎng)分組。它的孩子結(jié)點(diǎn)之一可能是IP協(xié)議,IP協(xié)議的孩子結(jié)點(diǎn)之一可能是TCP協(xié)議。IP的另一個(gè)孩子可能是UDP協(xié)議。
分組包括所用的每個(gè)協(xié)議的至少一個(gè)報(bào)頭。分組中所用的特定協(xié)議的子協(xié)議由該特定協(xié)議的報(bào)頭中一個(gè)位置上的內(nèi)容來(lái)標(biāo)識(shí)。分組的內(nèi)容指定孩子是以子識(shí)別模式的形式。
網(wǎng)絡(luò)分析器最好能夠分析多種不同協(xié)議。在基層,有很多用在數(shù)字通信中的分組類型,包括以太網(wǎng)、HDLC、ISDN、Lap B、ATM、X.25、幀中繼、數(shù)字?jǐn)?shù)據(jù)服務(wù)、FDDI(光纖分布數(shù)據(jù)接口)和T1以及其它類型。這些分組類型中有很多使用不同的分組和/或幀格式。例如,數(shù)據(jù)在ATM和幀中繼系統(tǒng)中以53個(gè)八位位組(即字節(jié))的固定長(zhǎng)度分組(稱為“單元”)進(jìn)行傳輸;需要用幾個(gè)這樣的單元來(lái)構(gòu)造可以包括在一些其它類型的單個(gè)分組中的信息。
注意術(shù)語(yǔ)分組在這里意指包括分組、數(shù)據(jù)報(bào)、幀和單元。通常,分組格式或幀格式指怎樣用多個(gè)不同的字段和報(bào)頭封裝數(shù)據(jù)以通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸。例如,數(shù)據(jù)分組通常包括目的地地址字段、長(zhǎng)度字段、糾錯(cuò)碼(ECC)字段或循環(huán)冗余校驗(yàn)(CRC)字段以及標(biāo)識(shí)分組開(kāi)始和結(jié)尾的報(bào)頭和報(bào)尾。術(shù)語(yǔ)“分組格式”、“幀格式”和“單元格式”一般是同義的。
分組監(jiān)控器300能夠分析不同的協(xié)議,并且這樣就能夠在分組上執(zhí)行不同的協(xié)議特定操作,其中任意協(xié)議的協(xié)議報(bào)頭根據(jù)父協(xié)議和分組中所用的協(xié)議被放在不同的位置。這樣,分組監(jiān)控器根據(jù)分組的內(nèi)容能夠適應(yīng)不同的協(xié)議。并適應(yīng)地為特定類型的分組確定從任意分組中要提取的位置和信息。例如,對(duì)尋找什么和在哪里尋找它們以形成簽名沒(méi)有固定的定義。在一些現(xiàn)有技術(shù)系統(tǒng)中,像Chiu et al.在美國(guó)專利5,101,402中所描述的系統(tǒng)中,對(duì)特定類型的分組有固定的位置。隨著協(xié)議的增殖,指定所有可能的位置以指望確定會(huì)話變得越來(lái)越困難。同樣,添加一個(gè)新協(xié)議或應(yīng)用也很困難。在本發(fā)明中,對(duì)任意協(xié)議層數(shù)都是一個(gè)變量,并且是足夠唯一標(biāo)識(shí)到我們想要去的層及所有通往應(yīng)用層的路徑(在OSI模型中)的任何數(shù)字。
甚至同一協(xié)議也可以有不同的變體。例如,以太網(wǎng)分組有幾種已知的變體,每一種都擁有基本保持相同的基本格式。以太網(wǎng)分組(根結(jié)點(diǎn))可以是以太類型分組—也稱作以太網(wǎng)類型/版本2和DIX(DIGITAL-Intel-Xerox分組)—或IEEE以太網(wǎng)(IEEE 803.x)分組。監(jiān)控器應(yīng)該能夠處理所有類型的以太網(wǎng)協(xié)議。用以太網(wǎng)協(xié)議時(shí)指示子協(xié)議的內(nèi)容在一個(gè)位置,但用IEEE類型時(shí)子協(xié)議被指定在一個(gè)不同的位置。子協(xié)議由子識(shí)別模式指示。
圖16顯示了完整以太網(wǎng)幀(即分組)的報(bào)頭信息并包括在目的介質(zhì)訪問(wèn)控制地址(Dst MAC 1602)和源介質(zhì)訪問(wèn)控制地址(Src MAC 1604)上的信息。圖16中還顯示了在PDL文件中為提取簽名而定義的一些(不是全部)信息。在解析結(jié)構(gòu)和提取操作數(shù)據(jù)庫(kù)308中也將定義這樣的信息。這以Dst MAC信息1606的六個(gè)字節(jié)和Src MAC信息1610的六個(gè)字節(jié)形式包括了這一層上的所有報(bào)頭信息。還分別定義了散列的源和目的地址部分。這些顯示為來(lái)自Dst MAC地址的2字節(jié)Dst散列1608和來(lái)自Src MAC地址的2字節(jié)Src散列1612。最后包括的信息(1614)是與下一層有關(guān)的信息的報(bào)頭從哪里開(kāi)始。在這個(gè)例子中下一層(第二層)信息在分組位移12開(kāi)始。
圖17A現(xiàn)在顯示了以太類型分組1700的下一層(第2層)的報(bào)頭信息。
對(duì)以太類型分組1700來(lái)說(shuō),來(lái)自分組指示下一層的有關(guān)信息是一個(gè)兩字節(jié)類型的字段1702,其中包含下一層的識(shí)別模式。剩下的信息1704在圖中顯示為陰影,因?yàn)樗c這一層無(wú)關(guān)。列表1712顯示了針對(duì)以太類型分組的可能的孩子,由在位移12發(fā)現(xiàn)的子識(shí)別模式指示。
還顯示了用于解析器記錄和定位下一個(gè)報(bào)頭信息的一些提取出的部分。解析器記錄的簽名部分包括提取出的部分1702。還包括來(lái)自這個(gè)信息的1-字節(jié)散列部分。
位移字段1710提供轉(zhuǎn)到下一層信息的位移,即定位下一個(gè)報(bào)頭信息的開(kāi)始。對(duì)以太類型分組來(lái)說(shuō),下一層報(bào)頭的開(kāi)始在從幀起始處開(kāi)始14個(gè)字節(jié)處。
其它分組類型被進(jìn)行了不同的排列。例如,在ATM系統(tǒng)中,每個(gè)ATM分組包括5個(gè)8位位組的“報(bào)頭”段,后跟48個(gè)8位位組的“有效負(fù)載”段。ATM單元的報(bào)頭段關(guān)于有效負(fù)載段中包含的數(shù)據(jù)的路由的信息。報(bào)頭段還包含流量控制信息。報(bào)頭段的8或12位包含虛擬路徑標(biāo)識(shí)符(VPI),并且報(bào)頭段的16位包含虛擬通道標(biāo)識(shí)符(VCI)。每個(gè)ATM交換把由VPI和VCI位表示的抽象路由信息轉(zhuǎn)化為物理或邏輯網(wǎng)絡(luò)鏈路的地址并正確地發(fā)送每個(gè)ATM單元。
圖17B顯示了可能的下一層之一的報(bào)頭結(jié)構(gòu),即IP協(xié)議的報(bào)頭。表1752中顯示了IP協(xié)議可能的孩子。報(bào)頭根據(jù)父協(xié)議在不同位置(L3)開(kāi)始。圖17B中還包括部分要為簽名而提取的一些字段,和指示下一層的報(bào)頭從分組中的什么地方開(kāi)始的標(biāo)記。
注意圖16、17A和17B中顯示的信息將以PDL文件的形式指定給監(jiān)控器并編譯進(jìn)模式結(jié)構(gòu)和提取操作數(shù)據(jù)庫(kù)308中。
解析子系統(tǒng)根據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)308中的信息在分組報(bào)頭數(shù)據(jù)上執(zhí)行操作。因?yàn)榕c協(xié)議有關(guān)的數(shù)據(jù)可以被看作組織成樹(shù)的形式,在解析子系統(tǒng)中需要把最初以樹(shù)的形式組織的數(shù)據(jù)仔細(xì)查找一遍。既然實(shí)時(shí)操作是首選,就需要快速地執(zhí)行這樣的查找。
已知有效存儲(chǔ)信息的數(shù)據(jù)結(jié)構(gòu)被組織成樹(shù)。這樣的有效存儲(chǔ)方式通常需要用算術(shù)計(jì)算來(lái)確定指向數(shù)據(jù)結(jié)點(diǎn)的指針。對(duì)本應(yīng)用來(lái)說(shuō)使用這樣的有效存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)進(jìn)行查找可能消耗過(guò)多的時(shí)間。因此希望以某種能夠快速查找的格式存儲(chǔ)協(xié)議數(shù)據(jù)。
按照本發(fā)明的另一個(gè)方面,數(shù)據(jù)庫(kù)308被存儲(chǔ)在存儲(chǔ)器中并包括用來(lái)存儲(chǔ)將在分組上執(zhí)行的協(xié)議特定操作的數(shù)據(jù)結(jié)構(gòu)。尤其壓縮表示用來(lái)在模式解析和提取數(shù)據(jù)庫(kù)308中存儲(chǔ)信息,數(shù)據(jù)庫(kù)308由模式識(shí)別方法304和提取方法306在解析器子系統(tǒng)使用。用了通過(guò)使用一組一個(gè)或多個(gè)索引來(lái)檢索數(shù)據(jù)結(jié)構(gòu)的內(nèi)容從而快速定位子協(xié)議有關(guān)的信息,對(duì)該數(shù)據(jù)結(jié)構(gòu)進(jìn)行組織。一個(gè)數(shù)據(jù)結(jié)構(gòu)記錄包括一個(gè)有效性指示。定位并識(shí)別子協(xié)議包括檢索該數(shù)據(jù)結(jié)構(gòu)直到找到有效記錄為止。使用該數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)由模式識(shí)別引擎(PRE)1006所用的協(xié)議信息能夠使解析器子系統(tǒng)301執(zhí)行快速查找。
在一種實(shí)施方案中,該數(shù)據(jù)結(jié)構(gòu)是三維結(jié)構(gòu)的形式。注意這個(gè)三維結(jié)構(gòu)通常被作為一組二維結(jié)構(gòu)依次存儲(chǔ)在存儲(chǔ)器中,由此3-D結(jié)構(gòu)的三維中的一維被用作特定2-D數(shù)組的索引。這形成了該數(shù)據(jù)結(jié)構(gòu)的第一索引。
圖18A顯示了這樣一個(gè)3-D表示1800(它可被看作2-D表示的編了索引的集合)。這個(gè)數(shù)據(jù)結(jié)構(gòu)的三維是1.類型標(biāo)識(shí)符[1:M]。這是標(biāo)識(shí)特定層上的協(xié)議類型的標(biāo)識(shí)符。例如,01指示以太網(wǎng)幀。64指示IP,16指示IEEE類型以太網(wǎng)分組,等等。根據(jù)分組解析器能夠處理多少個(gè)協(xié)議,M可能是一個(gè)大數(shù);隨著向監(jiān)控器300添加處理更多協(xié)議的能力M可以隨著時(shí)間而增長(zhǎng)。當(dāng)該3-D結(jié)構(gòu)被看作一組2-D結(jié)構(gòu)時(shí),類型ID就是特定2-D結(jié)構(gòu)的索引。
2.大小[1:64]。分組中感興趣的字段的大小。
3.位置[1:512]。這是分組中的偏移位置,表示為多個(gè)8位位組(字節(jié))。
在這些位置中的任意一個(gè)上面可能有或者沒(méi)有有效數(shù)據(jù)。通常,在大多數(shù)位置上都將沒(méi)有有效數(shù)據(jù)。3-D數(shù)據(jù)的大小是M*64*512(譯者注*表示乘),可以很大;例如M是10,000。這是一個(gè)稀疏矩陣,大多數(shù)記錄都是空的(即無(wú)效)。
每個(gè)數(shù)組記錄包括一個(gè)“結(jié)點(diǎn)代碼”,指示內(nèi)容的種類。這個(gè)結(jié)點(diǎn)代碼可以是三個(gè)值中的其中一個(gè)(1)向模式識(shí)別方法304指示已知協(xié)議已經(jīng)被識(shí)別為下一個(gè)協(xié)議(即子協(xié)議)的“協(xié)議”結(jié)點(diǎn)代碼;(2)指向?qū)δ壳罢诓檎业膮f(xié)議沒(méi)有子協(xié)議的“終端”結(jié)點(diǎn)代碼;(3)指示沒(méi)有有效記錄的“空”(也稱為“沖洗”)結(jié)點(diǎn)代碼。
在優(yōu)選實(shí)施方案中,通過(guò)初始化把可能的孩子和其它信息裝入到該數(shù)據(jù)結(jié)構(gòu)中,初始化包括基于PDL文件336和層次選擇338的編譯方法。表示協(xié)議的數(shù)據(jù)結(jié)構(gòu)中的任意記錄包含下列信息。
(a)用于查找下一個(gè)的一列孩子(作為類型ID)。例如,對(duì)以太網(wǎng)類型2來(lái)說(shuō),孩子是以太類型(IP、IPX等等,在圖17中顯示為1712)。這些孩子被編譯進(jìn)類型代碼。IP的代碼是64,IPX的是83,等等。
(b)對(duì)列表中的每個(gè)ID,需要比較一列子識(shí)別模式。例如,列表中的64:080016指示要查找的值是0800(十六進(jìn)制),對(duì)孩子來(lái)說(shuō)是類型ID 64(它是IP協(xié)議)。列表中的83:813716指示要查找的值是8137(十六進(jìn)制),對(duì)孩子來(lái)說(shuō)是類型ID 83(它是IPX協(xié)議),等等。
(c)為構(gòu)造該流的標(biāo)識(shí)簽名而執(zhí)行的提取操作。所用的格式是(位移、長(zhǎng)度、流_簽名_值_標(biāo)識(shí)符),流_簽名_值_標(biāo)識(shí)符指示提取出的記錄進(jìn)入到簽名中的什么地方,包括需要執(zhí)行的操作(與、或等等)。如果還有一個(gè)散列鍵部分,那么也包含它上面的信息。例如,對(duì)以太類型的分組,在簽名中使用2-字節(jié)類型(圖17中的1706)。此外,包括類型的1-字節(jié)的散列。此外注意子協(xié)議在位移14開(kāi)始。
附加條目可以是“折疊”。折疊用來(lái)減少3-D結(jié)構(gòu)的存儲(chǔ)需求。既然每個(gè)協(xié)議ID的2-D數(shù)組可以被稀疏填充,只要單個(gè)記錄不相互沖突就可以把多個(gè)數(shù)組結(jié)合成單一的2-D數(shù)組。然后用折疊號(hào)把關(guān)聯(lián)每個(gè)元素。對(duì)給定的查找來(lái)說(shuō),查找的折疊號(hào)必須匹配折疊號(hào)記錄。下面將更詳細(xì)地描述折疊。
就以太網(wǎng)來(lái)說(shuō),下一協(xié)議字段可以指示長(zhǎng)度,它告訴解析器這是IEEE類型的分組,并且下一協(xié)議是在別處。通常,下一協(xié)議字段包含指示下一個(gè)協(xié)議(即子協(xié)議)的值。
用于解析器子系統(tǒng)的記錄點(diǎn)被稱為虛擬基層,并且包含可能的第一個(gè)孩子,即分組類型。這里包括一個(gè)用高級(jí)協(xié)議描述語(yǔ)言(PDL)書寫的一個(gè)協(xié)議集實(shí)例。該集合包括PDL語(yǔ)言和描述所有可能的記錄點(diǎn)(即虛擬基層)的文件virtual.pd1。這個(gè)文件中只有一個(gè)孩子01指示以太網(wǎng)。這樣,該特定實(shí)例只能處理以太網(wǎng)分組。在實(shí)踐中可以有多個(gè)記錄點(diǎn)。
在一種實(shí)施方案中,分組攔截設(shè)備為攔截到的每個(gè)分組提供一個(gè)報(bào)頭并向監(jiān)控器300提供指示分組類型的輸入。這個(gè)報(bào)頭用來(lái)確定虛擬基層記錄點(diǎn)給解析器子系統(tǒng)。這樣,即使在基層解析器子系統(tǒng)也能夠識(shí)別分組類型。
最初,查找從在由攔截設(shè)備提供的報(bào)頭中獲得的虛擬基層的孩子開(kāi)始。就這個(gè)例子來(lái)說(shuō),它有ID值01,它是用于以太網(wǎng)分組的整個(gè)3-D結(jié)構(gòu)中的2-D數(shù)組。
這樣,實(shí)現(xiàn)模式分析方法304(例如,圖10中的模式識(shí)別引擎(PRE)1006)的硬件進(jìn)行查找以確定有協(xié)議ID 01的2-D數(shù)組的孩子(如果有的話)。在優(yōu)選實(shí)施方案中采用3-D數(shù)據(jù)結(jié)構(gòu),硬件PRE 1006最多可以同時(shí)查找四個(gè)長(zhǎng)度(即大小)。這樣,方法304以四個(gè)長(zhǎng)度為一組進(jìn)行查找。從協(xié)議ID 01開(kāi)始,查找的前兩組3-D位置是(1,1,1) (1,1,2)(1,2,1) (1,2,2)(1,3,1) (1,3,2)(1,4,1) (1,4,2)在查找的每一步,分析方法304檢查分組和3-D結(jié)構(gòu)以查看是否有匹配(通過(guò)查看結(jié)點(diǎn)代碼)。如果用代碼結(jié)點(diǎn)沒(méi)有發(fā)現(xiàn)有效數(shù)據(jù),就增加大小(最大可以到4)并隨后增加位移。
繼續(xù)這個(gè)例子,假定模式分析方法304在1、2、12找到了一些東西。這時(shí),我們意謂方法304已經(jīng)在分組位移12發(fā)現(xiàn)了協(xié)議ID值01(以太網(wǎng))的數(shù)據(jù),在該分組中有兩字節(jié)(8位位組)長(zhǎng)的信息與下一(子)協(xié)議有關(guān)。例如,該信息可以是表示為子識(shí)別模式的這個(gè)協(xié)議的孩子。從該數(shù)據(jù)結(jié)構(gòu)獲得可以獲得分組的可能的子識(shí)別模式列表部分。
以太網(wǎng)分組結(jié)構(gòu)有兩種,以太類型的分組和較新的IEEE類型,并且對(duì)它們兩個(gè)來(lái)說(shuō)指示孩子的分組位置也不相同。以太類型分組中的該位置指示I EEE類型的孩子 “長(zhǎng)度”,因此對(duì)以太網(wǎng)分組要確定“下一協(xié)議”位置包含值還是長(zhǎng)度(這被稱為“LENGTH”操作)。成功的LENGTH操作由小于或等于05DC16的內(nèi)容來(lái)指示,那么這是IEEE類型的以太網(wǎng)幀。在這種情況下,要在別處查找子識(shí)別模式。否則,該位置包含指示孩子的值。
注意雖然記錄的這個(gè)能力是值(例如,子協(xié)議ID)或長(zhǎng)度(指示進(jìn)一步分析以確定子協(xié)議)只用于以太網(wǎng)分組,但將來(lái)其它分組可能以正在被修改而結(jié)束。因此,這個(gè)能力在PDL文件中以宏的形式仍然能夠使將來(lái)的分組被解碼。
繼續(xù)這個(gè)例子,假定LENGTH操作失敗。那樣我們就有了一個(gè)以太類型的分組,并且下一協(xié)議字段(包含子識(shí)別模式)是從位移12開(kāi)始的兩個(gè)字節(jié),在17A中顯示為分組字段1702。這將是圖17A的表1712中所示的以太類型的一個(gè)孩子。PRE使用數(shù)據(jù)結(jié)構(gòu)中的信息檢查用于找到的2-字節(jié)子識(shí)別模式的是什么ID代碼。例如,如果子識(shí)別模式是0800(Hex),那么該協(xié)議是IP。如果子識(shí)別模式是0BAD(Hex)該協(xié)議是VIP(VINES)。
注意替代實(shí)施方案可以保持一個(gè)單獨(dú)的表格,其中包括所有的子識(shí)別模式和它們的對(duì)應(yīng)協(xié)議ID。
繼續(xù)這個(gè)例子,假定位于1、2、12的子識(shí)別模式是080016,指示IP協(xié)議。IP協(xié)議的ID代碼是6410。繼續(xù)以太類型的實(shí)例,一旦解析器匹配了該協(xié)議—在這個(gè)例子中,該協(xié)議類型是IP,ID是6410—的可能的孩子中的其中一個(gè),那么解析器就繼續(xù)查找下一層。ID是64,長(zhǎng)度未知,位移已知大于等于14個(gè)字節(jié)(12字節(jié)的位移用于類型,加上類型的長(zhǎng)度2個(gè)字節(jié)),因此對(duì)3-D結(jié)構(gòu)的查找從位于分組位移14的位置(64,1)開(kāi)始。在位于分組位移14的位置(64,2)上發(fā)現(xiàn)一個(gè)填充的結(jié)點(diǎn)。報(bào)頭細(xì)節(jié)在圖17B中顯示為1750。可能的孩子顯示在表1752中。
另外,假定在(1,2,12)上有一個(gè)長(zhǎng)度121110。指示這是一個(gè)IEEE類型的以太網(wǎng)幀,它在別處存儲(chǔ)它的類型。PRE現(xiàn)在繼續(xù)在同一層上查找,但是是針對(duì)一個(gè)新ID進(jìn)行,即IEEE類型以太網(wǎng)幀的ID。IEEE類型分組的協(xié)議ID是16,因此PRE從分組位移14開(kāi)始用ID 16繼續(xù)查找3-D空間。
在我們的例子中假定在位于分組位移14的(16,2)上發(fā)現(xiàn)了一個(gè)“協(xié)議”結(jié)點(diǎn)代碼,并且下一個(gè)協(xié)議由子識(shí)別模式080016指定。這指示孩子是IP協(xié)議,它的類型ID是64。這樣查找從位于分組位移16的(16,1)繼續(xù)進(jìn)行。
壓縮像上面所指出的那樣,3-D結(jié)構(gòu)非常大,而且是稀疏填充的。例如,如果在每個(gè)位置上存儲(chǔ)32個(gè)字節(jié),那么長(zhǎng)度是M*64*512*32,也就是M兆字節(jié)。如果M=10,000,那就是約10千兆字節(jié)。在解析器子系統(tǒng)中包括10GB的存儲(chǔ)器用于存儲(chǔ)數(shù)據(jù)庫(kù)308有些不切實(shí)際。因此在優(yōu)選實(shí)施方案中使用壓縮形式存儲(chǔ)數(shù)據(jù)。壓縮最好由編譯方法中的優(yōu)化器單元來(lái)執(zhí)行。
回想一下該數(shù)據(jù)結(jié)構(gòu)是稀疏的。不同的實(shí)施方案可以采用不同的壓縮方案,它們均利用該數(shù)據(jù)結(jié)構(gòu)的稀疏特性。一種實(shí)施方案使用多維行程編碼的改進(jìn)形式。
另一種實(shí)施方案使用少一些的2-D結(jié)構(gòu)來(lái)存儲(chǔ)信息,而它們又處于一個(gè)大的3-D結(jié)構(gòu)之中。在優(yōu)選實(shí)施方案中使用第二種方案。
圖18A描繪了把3-D數(shù)組怎樣被看作是一組2-D數(shù)組,對(duì)每個(gè)協(xié)議(即協(xié)議ID的每個(gè)值)有一個(gè)2-D數(shù)組。對(duì)多達(dá)M個(gè)協(xié)議ID來(lái)說(shuō)2-D結(jié)構(gòu)顯示為1802-I、1802-2、...、1802-M。一個(gè)表格記錄顯示為1804。注意表格中的空隙是用來(lái)描繪每個(gè)2-D結(jié)構(gòu)表通常也很大。
考慮表示可能的協(xié)議的樹(shù)的集合。每個(gè)結(jié)點(diǎn)表示一個(gè)協(xié)議,一個(gè)協(xié)議可以有孩子或者是一個(gè)終端結(jié)點(diǎn)。樹(shù)的基(根)把所有的協(xié)議類型都作為孩子。其它結(jié)點(diǎn)形成在樹(shù)中不同層上的結(jié)點(diǎn),從第1層到樹(shù)的終端結(jié)點(diǎn)?;Y(jié)點(diǎn)中的一個(gè)元素可以用結(jié)點(diǎn)ID 1作參考符號(hào),底部結(jié)點(diǎn)中的另一個(gè)元素可以用結(jié)點(diǎn)ID 2用參考符號(hào)等等。因?yàn)闃?shù)是從根開(kāi)始遍歷的,在樹(shù)中可能有一些同一結(jié)點(diǎn)下一次被引用的點(diǎn)。例如,當(dāng)像Telnet這樣的應(yīng)用協(xié)議能夠同時(shí)運(yùn)行在幾個(gè)像TCP或UDP這樣的傳輸連接上時(shí)將會(huì)發(fā)生這種情況。與其重復(fù)Telnet結(jié)點(diǎn),不如在模式數(shù)據(jù)庫(kù)308中只表示一個(gè)可以有幾個(gè)父親的結(jié)點(diǎn)。這就減少了可觀的空間占用。
圖18A中的每個(gè)2-D數(shù)組中表示一個(gè)協(xié)議。為了能夠通過(guò)對(duì)每個(gè)有幾個(gè)父親的協(xié)議只使用一個(gè)數(shù)組以節(jié)省空間,在一種實(shí)施方案中,模式分析子方法保持“當(dāng)前報(bào)頭”指針。3-D結(jié)構(gòu)中的每個(gè)協(xié)議2-D數(shù)組的每個(gè)位置(位移)索引是從該特定協(xié)議的報(bào)頭起始處開(kāi)始的相對(duì)位置。
2-D數(shù)組中的每一個(gè)都是稀疏的。優(yōu)化的下一步是核對(duì)每個(gè)2-D數(shù)組和所有其它2-D數(shù)組以找出能夠節(jié)省存儲(chǔ)器的2-D數(shù)組。這些2-D數(shù)組中有很多通常都是被稀疏填充的,每個(gè)當(dāng)中只有少量有效記錄。因此,接下來(lái)用一個(gè)“折疊”方法把兩個(gè)或更多2-D數(shù)組結(jié)合成一個(gè)物理2-D數(shù)組,并且不丟失任意一個(gè)原始2-D數(shù)組的同一性(即,所有的2-D數(shù)組邏輯上連續(xù)存在)。折疊可以在任意2-D數(shù)組之間發(fā)生,而不管它們?cè)跇?shù)中的位置,只要滿足一定條件即可。
假定正在考慮對(duì)兩個(gè)2-D數(shù)組進(jìn)行折疊。命名第一個(gè)2-D數(shù)組為A,第二個(gè)為B。既然這兩個(gè)2-D數(shù)組都是被部分填充的,當(dāng)且僅當(dāng)這兩個(gè)2-D數(shù)組中的相同位置上沒(méi)有相互沖突的單個(gè)元素時(shí)可以把2-D數(shù)組B與2-D數(shù)組A結(jié)合在一起。如果結(jié)果是可折疊,那么2-D數(shù)組B中的有效記錄和2-D數(shù)組A中的有效記錄結(jié)合在一起產(chǎn)生一個(gè)物理2-D數(shù)組。但是,有必要能夠區(qū)別原始2-D數(shù)組A的記錄和2-D數(shù)組B中的記錄。例如,如果由2-D數(shù)組B表示的協(xié)議的父協(xié)議想要引用2-D數(shù)組B的協(xié)議ID,它現(xiàn)在必須改為引用2-D數(shù)組A。但是,只有那些原始2-D數(shù)組B中的記錄才是要查找的有效記錄。為了實(shí)現(xiàn)這一點(diǎn),任意給定2-D數(shù)組中的每個(gè)元素都被標(biāo)上一個(gè)折疊號(hào)。當(dāng)創(chuàng)建原始樹(shù)時(shí),用零折疊值初始化所有2-D數(shù)組中的所有元素。隨后,如果2-D數(shù)組B被折疊進(jìn)2-D數(shù)組A中,2-D數(shù)組B中的所有有效元素都被復(fù)制到2-D數(shù)組A中的相應(yīng)位置并且給它們與2-D數(shù)組A中的任意元素都不同的折疊號(hào)。例如,如果2-D數(shù)組A和2-D數(shù)組B都是樹(shù)中的原始數(shù)組(即以前未折疊過(guò)),那么在折疊后,所有的2-D數(shù)組A的記錄將仍然保持折疊號(hào)0,而2-D數(shù)組B的記錄現(xiàn)在都有了一個(gè)新的折疊值1。在2-D數(shù)組B被折疊進(jìn)2-D數(shù)組A之后,需要通知2-D數(shù)組B的父親在它們的孩子的2-D數(shù)組物理位置中的更改和在預(yù)期的折疊值中的連帶更改。
這個(gè)折疊方法也可發(fā)生在兩個(gè)已經(jīng)被折疊過(guò)的2-D數(shù)組之間,只要這兩個(gè)2-D數(shù)組中在相同2-D數(shù)組位置上沒(méi)有沖突的單個(gè)元素。如前所述,2-D數(shù)組B中的每個(gè)有效元素必須有一個(gè)分配給它們的唯一區(qū)別于2-D數(shù)組A的那些折疊號(hào)的折疊號(hào)。在2-D數(shù)組B被合并到2-D數(shù)組A中的時(shí)候通過(guò)給所有的2-D數(shù)組B折疊號(hào)加上一個(gè)固定值可以實(shí)現(xiàn)這一點(diǎn)。這個(gè)固定值是一個(gè)比原始2-D數(shù)組A中最大的折疊值還要大的值。需要指出的一點(diǎn)是,任意給定2-D數(shù)組的折疊號(hào)只與那個(gè)2-D數(shù)組有關(guān)而且并未跨越2-D數(shù)組的整個(gè)樹(shù)。
現(xiàn)在可以在兩個(gè)2-D數(shù)組的所有組合之間嘗試這個(gè)折疊方法,直到?jīng)]有可以折疊的2-D數(shù)組為止。這樣就可以大大減少2-D數(shù)組的總數(shù)。
無(wú)論何時(shí)當(dāng)一個(gè)折疊發(fā)生時(shí),都要對(duì)3-D結(jié)構(gòu)(即所有2-D數(shù)組)進(jìn)行查找以找到正在被折疊到另一個(gè)數(shù)組中的2-D數(shù)組的父親。以前被映射到標(biāo)識(shí)一個(gè)單獨(dú)2-D數(shù)組的協(xié)議ID上的匹配模式現(xiàn)在必須替換成該2-D數(shù)組ID和下一個(gè)折疊號(hào)(即預(yù)期的折疊)。
這樣,在壓縮后的數(shù)據(jù)結(jié)構(gòu)中,每個(gè)有效記錄包括用于該記錄的折疊號(hào)還有用于孩子的預(yù)期的折疊號(hào)。
圖18B中描繪了用在數(shù)據(jù)庫(kù)308中的數(shù)據(jù)結(jié)構(gòu)的一種替代實(shí)施方案。這樣,像上面所描述的3-D結(jié)構(gòu)那樣,它允許模式識(shí)別方法304通過(guò)在存儲(chǔ)器中檢索位置而不是執(zhí)行地址鏈接計(jì)算來(lái)執(zhí)行快速查找。該結(jié)構(gòu),像圖18A中的那樣,適于用硬件實(shí)現(xiàn),例如對(duì)與圖10中的模式識(shí)別引擎一起工作的實(shí)現(xiàn)來(lái)說(shuō)就是這樣。
表1850被稱為協(xié)議表,對(duì)監(jiān)控器300已知的每個(gè)協(xié)議它都有一個(gè)記錄,并且包括每個(gè)協(xié)議的一些特征,包括對(duì)在報(bào)頭中的什么地方可以找到指定下一個(gè)協(xié)議(子識(shí)別模式)的字段的描述、下一協(xié)議字段的長(zhǎng)度、指示報(bào)頭長(zhǎng)度和類型的標(biāo)記以及一個(gè)或多個(gè)限選器命令,限選命令可以為這一層上的這個(gè)協(xié)議的分組構(gòu)造鍵部分和散列部分。
對(duì)任意協(xié)議還有一個(gè)或多個(gè)查找表(LUTs)。這樣這個(gè)實(shí)施方案的數(shù)據(jù)庫(kù)308還包括一組LUTs 1870。每個(gè)LUT擁有256個(gè)記錄,由從分組中的下一協(xié)議字段提取出的子識(shí)別模式中的一個(gè)字節(jié)進(jìn)行索引。這樣的協(xié)議說(shuō)明可以是幾個(gè)字節(jié)長(zhǎng),因此對(duì)任意協(xié)議都需要查找LUTs 1870中的幾個(gè)字節(jié)。
每個(gè)LUT記錄都包括一個(gè)指示內(nèi)容的種類的2-位“結(jié)點(diǎn)代碼”,包括它的有效性。這個(gè)結(jié)點(diǎn)代碼可以是下列四個(gè)值之一(1)“協(xié)議”結(jié)點(diǎn)代碼,向模式識(shí)別引擎1006指示一個(gè)已知協(xié)議已經(jīng)被識(shí)別;(2)“中間”結(jié)點(diǎn)代碼,指示一個(gè)多字節(jié)協(xié)議代碼已經(jīng)被部分識(shí)別,這樣就允許在此之前把一組LUTs鏈接在一起;(3)“終端”結(jié)點(diǎn)代碼,指示目前更在被查找的協(xié)議沒(méi)有孩子,即該結(jié)點(diǎn)是協(xié)議樹(shù)中的一個(gè)最終結(jié)點(diǎn);(4)“空”(也稱為“沖洗”或“無(wú)效”)結(jié)點(diǎn)代碼,指示沒(méi)有有效記錄。
除了結(jié)點(diǎn)代碼之外,每個(gè)LUT記錄還包括下一個(gè)LUT編號(hào)、下一個(gè)協(xié)議編號(hào)(用于查找協(xié)議表1850)、LUT記錄的折疊和預(yù)期的下一個(gè)折疊。像實(shí)現(xiàn)3-D表示的壓縮形式的實(shí)施方案中那樣,折疊用來(lái)減少LUTs集合的存儲(chǔ)需求。既然LUTs 1870可以被稀疏填充,只要單個(gè)記錄之間不相互沖突就可以把多個(gè)LUTs結(jié)合成一個(gè)單獨(dú)的LUT。隨后用折疊號(hào)關(guān)聯(lián)每個(gè)元素和它的原始LUT。
對(duì)一個(gè)給定的查找來(lái)說(shuō),查找的折疊號(hào)必須匹配查找表中的折疊號(hào)。預(yù)期的折疊從前一個(gè)查找表(“預(yù)期的下一個(gè)折疊”字段)中獲得。本實(shí)現(xiàn)用5-位來(lái)描述折疊,因此允許把最多32個(gè)表折疊成一個(gè)表。
使用圖18B中的數(shù)據(jù)結(jié)構(gòu)時(shí),當(dāng)分組到達(dá)解析器時(shí)虛基層已經(jīng)被預(yù)先確定或者是已知的。虛基層記錄告訴分組識(shí)別引擎在哪里找到分組中的第一個(gè)子識(shí)別模式。模式識(shí)別引擎隨后從分組提取出第一個(gè)子識(shí)別模式字節(jié)并用它們作為進(jìn)入虛基層表(第一個(gè)LUT)的地址。如果用這個(gè)方法在指定的下一個(gè)LUT中查找到的記錄與在虛基層記錄中所指定的預(yù)期的下一個(gè)折疊值相匹配,那么就認(rèn)為查找有效。隨后檢查結(jié)點(diǎn)代碼。如果它是中間結(jié)點(diǎn)就把從LUT查找獲得的下一個(gè)表字段被用作地址的最高有效位。下一個(gè)預(yù)期的折疊也從記錄中提取。模式識(shí)別引擎1006隨后把來(lái)自模式識(shí)別引擎的下一個(gè)字節(jié)用于下一個(gè)LUT查找。
這樣,PRE的操作繼續(xù)進(jìn)行直至找到一個(gè)終端結(jié)點(diǎn)。在協(xié)議表1850中查找下一個(gè)(最初時(shí)是基層)協(xié)議以向PRE1006提供有關(guān)用分組(在解析器子系統(tǒng)1000的輸入緩沖區(qū)存儲(chǔ)器1008中)中的什么字段來(lái)獲得下一個(gè)協(xié)議的子識(shí)別模式的信息,包括該字段的大小。子識(shí)別模式字節(jié)從輸入緩沖區(qū)存儲(chǔ)器1008中取出。構(gòu)成子識(shí)別模式的字節(jié)數(shù)現(xiàn)在也是已知的。
協(xié)議代碼字節(jié)的第一個(gè)字節(jié)被用作下一個(gè)LUT中的查找。如果LUT查找產(chǎn)生一個(gè)指示協(xié)議結(jié)點(diǎn)或終端結(jié)點(diǎn)的結(jié)點(diǎn)代碼,就設(shè)置下一個(gè)LUT和下一個(gè)預(yù)期的折疊,并且來(lái)自LUT查找的“下一協(xié)議”也被用作進(jìn)入?yún)f(xié)議表1850的索引。這就給限選器1007提供了指令以及在分組中的什么地方獲得用于下一協(xié)議的字段。這樣,PRE 1006繼續(xù)執(zhí)行直到它完成了對(duì)所有字段(即協(xié)議)的處理為止,由到達(dá)一個(gè)終端結(jié)點(diǎn)指示完成。
注意當(dāng)檢查一個(gè)子識(shí)別模式和一個(gè)表時(shí)總有一個(gè)預(yù)期的折疊。如果該預(yù)期折疊匹配表中的折疊信息,就用它來(lái)決定下一步做什么。如果折疊不匹配,優(yōu)化器操作就結(jié)束了。
還要注意替代實(shí)施方案可以使用不同大小的LUTs,然后由不同數(shù)量的子識(shí)別模式檢索LUT。
這個(gè)實(shí)施方案的當(dāng)前實(shí)現(xiàn)允許最高達(dá)四個(gè)字節(jié)的子識(shí)別模式。超過(guò)四個(gè)字節(jié)的子識(shí)別模式被看作特殊情況。
在優(yōu)選實(shí)施方案中,數(shù)據(jù)庫(kù)由編譯方法產(chǎn)生。編譯方法先構(gòu)造協(xié)議之間所有鏈接的一個(gè)單一協(xié)議表。鏈接由父協(xié)議和子協(xié)議之間的連接組成。每個(gè)協(xié)議可以有零個(gè)或多個(gè)孩子。如果一個(gè)協(xié)議有孩子,就創(chuàng)建一個(gè)由父協(xié)議、子協(xié)議、子識(shí)別模式和子識(shí)別模式大小組成的鏈接。編譯器首先提取出子識(shí)別模式,它超過(guò)兩個(gè)字節(jié)長(zhǎng)。既然只有這些信息中的少數(shù),就對(duì)它們分開(kāi)處理。為子識(shí)別模式大小是兩個(gè)字節(jié)的每個(gè)鏈接創(chuàng)建下一個(gè)子鏈接。
所有的鏈接隨后被編成256個(gè)記錄的LUTs。
然后執(zhí)行優(yōu)化。優(yōu)化的第一步是核對(duì)每個(gè)表和所有其它表以找到共享一個(gè)表的那些表。這個(gè)方法按照和上述2-D數(shù)組相同的方式進(jìn)行,但現(xiàn)在是為了稀疏查找表。
初始化方法(例如,編譯器方法310)的一部分用包括指令、源地址、目的地址和長(zhǎng)度的數(shù)據(jù)條目裝載限選器指令數(shù)據(jù)庫(kù)。當(dāng)PRE 1006發(fā)送限選器指令時(shí)它把這個(gè)指令作為進(jìn)入限選器指令數(shù)據(jù)庫(kù)的位移來(lái)發(fā)送。指令或操作代碼告訴限選器從進(jìn)入的分組中提取什么并把它放到流簽名中的什么位置上。向流簽名的特定字段寫入信息會(huì)自動(dòng)產(chǎn)生散列。該指令還能夠告訴限選器怎樣確定特定協(xié)議的連接狀態(tài)。
注意除了編譯PDL文件之外替代實(shí)施方案也可以產(chǎn)生模式、解析和提取數(shù)據(jù)庫(kù)。
編譯方法現(xiàn)在更詳細(xì)地描述編譯方法310。方法310包括創(chuàng)建解析模式和提取數(shù)據(jù)庫(kù)308和狀態(tài)處理指令數(shù)據(jù)庫(kù)326,308向解析子系統(tǒng)301提供需要用來(lái)解析分組并提取標(biāo)識(shí)信息的信息,326提供需要在狀態(tài)處理操作328中執(zhí)行的狀態(tài)方法。
編譯器的輸入包括描述每個(gè)可以出現(xiàn)的協(xié)議的一組文件。這些文件是方便的協(xié)議描述語(yǔ)言(PDL),這是一個(gè)高級(jí)語(yǔ)言。PDL用于規(guī)定新協(xié)議和新層,包括新應(yīng)用。PDL獨(dú)立于計(jì)算機(jī)網(wǎng)絡(luò)中可用的分組和協(xié)議的不同類型。一組PDL文件用來(lái)描述什么信息與分組有關(guān)以及什么分組需要進(jìn)行解碼。PDL還用來(lái)規(guī)定狀態(tài)分析操作。這樣,解析器子系統(tǒng)和分析器子系統(tǒng)能夠適應(yīng)并適合多種不同類型的報(bào)頭、層和成分,并需要被提取或估計(jì),例如為了構(gòu)造唯一簽名。
對(duì)每個(gè)分組類型和每個(gè)協(xié)議有一個(gè)文件。這樣,對(duì)以太網(wǎng)分組有一個(gè)PDL文件,對(duì)幀中繼分組也有一個(gè)PDL文件。PDL文件被編譯形成一個(gè)或多個(gè)數(shù)據(jù)庫(kù),它們能夠使監(jiān)控器300在分組上執(zhí)行不同的協(xié)議特定操作,其中任意協(xié)議的協(xié)議報(bào)頭根據(jù)父協(xié)議或分組中所用的協(xié)議而被放在不同的位置上。這樣,分組監(jiān)控器就能夠根據(jù)分組內(nèi)容適應(yīng)不同的協(xié)議。尤其解析器子系統(tǒng)301能夠針對(duì)不同類型的分組提取不同類型的數(shù)據(jù)。例如,監(jiān)控器能夠知道怎樣解釋以太網(wǎng)分組,包括對(duì)報(bào)頭信息進(jìn)行解碼,并且還知道怎樣解釋幀中繼分組,包括對(duì)報(bào)頭信息進(jìn)行解碼。
例如,PDL文件的集合可以包括普通以太網(wǎng)分組文件。對(duì)每個(gè)變體以太網(wǎng)分組還包括一個(gè)PDL文件,例如IEEE以太網(wǎng)文件。
協(xié)議的PDL文件提供編譯方法310需要用來(lái)產(chǎn)生數(shù)據(jù)庫(kù)308的信息。該數(shù)據(jù)庫(kù)依次告訴解析器子系統(tǒng)怎樣解析和/提取信息,包括要為流簽名提取的一個(gè)或多個(gè)協(xié)議-特定成分,怎樣使用這此些成分構(gòu)造流簽名,在分組中的什么地方尋找這些成分,在哪里尋找任意子協(xié)議以及要尋找什么子識(shí)別模式。對(duì)一些協(xié)議來(lái)說(shuō),提取出的成分可能包括源和目的地址,并且PDL文件可以包括使用這些地址構(gòu)造鍵的順序。例如,以太網(wǎng)幀有在構(gòu)造更好的流簽名中有用的終點(diǎn)地址。這樣以太網(wǎng)分組的PDL文件包括關(guān)于解析器子系統(tǒng)將怎樣提取源和目的地址上的信息,其中包括那些地址在什么位置以及它們的大小。例如,在幀中繼基層中沒(méi)有特定終點(diǎn)地址幫助更好地識(shí)別流,因此對(duì)那些類型的分組來(lái)說(shuō)PDL文件不包括將導(dǎo)致解析器子系統(tǒng)提取終點(diǎn)地址的信息。
一些協(xié)議還包括有關(guān)連接的信息。TCP就是這樣的協(xié)議的一個(gè)實(shí)例。這樣的協(xié)議使用在每個(gè)分組中都存在的連接標(biāo)識(shí)符。這樣一個(gè)協(xié)議的PDL文件包括關(guān)于那些連接標(biāo)識(shí)符是什么、它們?cè)谀睦镆约八鼈兊拈L(zhǎng)度是多少的信息。在TCP實(shí)例中,例如運(yùn)行在IP上,這些信息就是端口號(hào)。PDL文件還包括關(guān)于是否有應(yīng)用到連接和斷開(kāi)的狀態(tài)以及可能的孩子是什么狀態(tài)的信息。所以,在這些層中的每一層上,分組監(jiān)控器300認(rèn)識(shí)到更多關(guān)于該分組的信息。分組監(jiān)控器300使用連接標(biāo)識(shí)符能夠識(shí)別是特定流的一部分的特定分組。一旦流被識(shí)別出來(lái),系統(tǒng)就能夠確定當(dāng)前狀態(tài)和應(yīng)用什么狀態(tài)處理存在于下一層中的連接和斷開(kāi)直到這些特定分組。
對(duì)優(yōu)選實(shí)施方案中所用的特定PDL來(lái)說(shuō),一個(gè)PDL文件可以包括零個(gè)或多個(gè)FI ELD語(yǔ)句,每個(gè)FIELD語(yǔ)句定義分組中一個(gè)特定的位或字節(jié)串(即一個(gè)字段)。一個(gè)PDL文件還可以包括零個(gè)或多個(gè)GROUP語(yǔ)句,每個(gè)GROUP語(yǔ)句用來(lái)把幾個(gè)定義過(guò)的字段綁在一起。一組這樣綁在一起的字段被稱為一個(gè)組。一個(gè)PDL文件還可以包括零個(gè)或多個(gè)PROTOCOL語(yǔ)句,每個(gè)PROTOCOL語(yǔ)句定義在協(xié)議的報(bào)頭中字段和組的順序。一個(gè)PDL文件還可以包括零個(gè)或多個(gè)FLOW語(yǔ)句,每個(gè)FLOW語(yǔ)句通過(guò)描述地址、協(xié)議類型和端口號(hào)在分組中的位置來(lái)定義一個(gè)流。FLOW語(yǔ)句包括對(duì)怎樣用狀態(tài)操作確定這個(gè)協(xié)議的子流的描述。相關(guān)的狀態(tài)可以有用于管理和維護(hù)隨著對(duì)流中的更多分組進(jìn)行分析而認(rèn)識(shí)到的新?tīng)顟B(tài)。
圖24顯示了一組PDL文件,針對(duì)在IP之上運(yùn)行TCP的以太網(wǎng)分組的分層結(jié)構(gòu)。Common.pd1(2403)是包含通用協(xié)議定義—即不同網(wǎng)絡(luò)協(xié)議中的通用字段的一些字段定義—的文件。Flows.pd1(2405)是包含通用流定義的文件。Virtual.pd1(2407)是包含所用虛基層的定義的PDL文件。Ethernet.pd1(2411)是包含以太網(wǎng)分組的定義的文件。這里描述了在以太類型對(duì)IEEE類型以太網(wǎng)文件上的決定。如果這是以太類型,就從文件Ethertype.pd1(2413)作出選擇。在一種替代實(shí)施方案方案中,以太類型選擇定義可以在同一個(gè)以太網(wǎng)文件2411中。在一個(gè)典型的實(shí)現(xiàn)中,可以包括針對(duì)其它以太網(wǎng)類型的PDL文件。IP.pd1(2415)是包含Internet協(xié)議的分組定義的PDL文件。TCP.pd1(2417)是包含傳輸控制協(xié)議—在這種情況下就是IP協(xié)議的傳輸服務(wù)—的分組定義的PDL文件。除了提取協(xié)議信息之外TCP協(xié)議定義文件還在連接識(shí)別方法中幫助處理狀態(tài)。在一個(gè)典型的文件集合中,還要有用戶數(shù)據(jù)報(bào)協(xié)議(UDP)定義的文件UDP.pd1。RPC.pd1(2419)是包含遠(yuǎn)程過(guò)程調(diào)用的分組定義的PDL文件。
NFS.pd1(2421)是包含網(wǎng)絡(luò)文件系統(tǒng)的分組定義的PDL文件。對(duì)于監(jiān)控器300可能遇到的所有協(xié)議通常也要包括其它PDL文件。
編譯處理310的輸入是所有感興趣的協(xié)議的PDL文件(例如,圖24中的文件)的集合。方法310的輸入還可以包括圖3中顯示為數(shù)據(jù)報(bào)層次選擇338的分層信息。層次選擇信息描述了協(xié)議的分層情況—在任意特定協(xié)議之上運(yùn)行的是什么協(xié)議。例如,IP可以運(yùn)行在以太網(wǎng)和很多其它類型的分組上。TCP可以運(yùn)行在IP之上。UDP也可以運(yùn)行在IP之上。當(dāng)沒(méi)有明確包括分層信息時(shí),分層信息是內(nèi)在的;PDL文件包括子協(xié)議,這就提供了分層信息。
圖25中描繪了編譯處理310。編譯器把PDL源文件裝入高速暫存存儲(chǔ)器中(2503步)并檢查文件的語(yǔ)法(解析步驟2505)。一旦完成,編譯器就創(chuàng)建一個(gè)包含所有解析元素的中間文件(2507步)。中間文件的格式被稱為“編譯過(guò)的協(xié)議語(yǔ)言”(CPL)。CPL指令有固定的分層格式,并包括每個(gè)層及一層的整個(gè)樹(shù)所要求的所有模式、提取和狀態(tài)。CPL文件包括協(xié)議的數(shù)量及協(xié)議定義。每個(gè)協(xié)議的協(xié)議定義可以包括一個(gè)或多個(gè)協(xié)議名、協(xié)議ID、報(bào)頭節(jié)、組定義節(jié)、任意特定層的節(jié)、通告節(jié)、有效負(fù)載節(jié)、子節(jié)和狀態(tài)節(jié)。隨后由優(yōu)化器運(yùn)行該CPL文件以創(chuàng)建將由監(jiān)控器300使用的最終數(shù)據(jù)庫(kù)。那些本領(lǐng)域的技術(shù)人員要清楚編譯處理310的替代方案可以包括不同形式的中間輸出,或者根本沒(méi)有中間輸出直接產(chǎn)生最終數(shù)據(jù)庫(kù)。
在創(chuàng)建解析元素之后,編譯器創(chuàng)建流簽名元素(2509步)。這在CPL中創(chuàng)建了在構(gòu)造流簽名(散列鍵)和在層間建立鏈接的每個(gè)PDL模塊的每一層上必需的提取操作。
隨著流簽名操作完成,PDL編譯器創(chuàng)建(2511步)從每個(gè)PDL模塊提取有效負(fù)載元素所必需的操作。這些有效負(fù)載元素由更高層上的其它PDL文件中的狀態(tài)用在處理當(dāng)中。
最后一步是創(chuàng)建每個(gè)PDL模塊所需要的狀態(tài)操作。從PDL文件編譯并以CPL形式創(chuàng)建狀態(tài)操作以為后用(2513步)。
CPL文件現(xiàn)在通過(guò)優(yōu)化器運(yùn)行,優(yōu)化器產(chǎn)生由監(jiān)控器300使用的最終數(shù)據(jù)庫(kù)。
協(xié)議定義語(yǔ)言(PDL)參考指南(A0.02版)這里包含的是協(xié)議定義語(yǔ)言(PDL)的參考指南(“指南”),在本發(fā)明的一個(gè)方面中PDL允許自動(dòng)生成由解析器和分析器子-系統(tǒng)所使用的數(shù)據(jù)庫(kù),并且還允許監(jiān)控器有包括新的以及修改過(guò)的協(xié)議和應(yīng)用的能力。
版權(quán)公告本文檔包含專利在內(nèi)的部分內(nèi)容中包含有與版權(quán)保護(hù)有關(guān)的材料。版權(quán)所有者(Apptitude有限公司,圣約瑟,加利福尼亞州,原Technically Elite有限公司)不反對(duì)由本專利文檔或本專利公開(kāi)內(nèi)容或這個(gè)文檔的任何人復(fù)制副本,因?yàn)樗呀?jīng)出現(xiàn)在專利與商標(biāo)事務(wù)處的文檔和記錄中,但另外保留所有的版權(quán)。
版權(quán)所有Apptitude有限公司(前Technically Elite有限公司)。保留所有權(quán)利。
1.導(dǎo)論所發(fā)明的協(xié)議定義語(yǔ)言(PDL)是用來(lái)描述網(wǎng)絡(luò)協(xié)議及協(xié)議報(bào)頭中的所有字段的專用語(yǔ)言。
在本指南中,當(dāng)沒(méi)有和其它類型的描述發(fā)生混淆的危險(xiǎn)時(shí),協(xié)議描述(PDL文件)被看作是PDL或規(guī)則。
PDL使用和C編程語(yǔ)言與PERL腳本語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)定義部分相似的形式和組織方式。因?yàn)镻DL來(lái)自一種用來(lái)對(duì)網(wǎng)絡(luò)分組接觸進(jìn)行解碼的語(yǔ)言,作者已經(jīng)把該語(yǔ)言形式和分組解碼的要求混合在了一起。這產(chǎn)生了一種非常相似并適用于描述分組內(nèi)容及表示一個(gè)流所需的細(xì)節(jié)的表示語(yǔ)言。
1.1概述PDL是非過(guò)程化的第四代語(yǔ)言(4GL)。這意味著描述需要做什么而不描述怎樣去做。怎樣做的細(xì)節(jié)隱藏在編譯器和編譯后的協(xié)議規(guī)劃(CPL)優(yōu)化程序中。
另外,它還用來(lái)通過(guò)定義哪個(gè)字段是地址字段、哪個(gè)是協(xié)議類型字段等來(lái)描述網(wǎng)絡(luò)流。
一旦寫好了一個(gè)PDL文件,用Netscope編譯器(nsc)對(duì)其進(jìn)行編譯,產(chǎn)生MeterFlow數(shù)據(jù)庫(kù)(MeterFlow.db)和Netscope數(shù)據(jù)庫(kù)(Netscope.db)。MeterFlow數(shù)據(jù)庫(kù)包含流定義,Netscope數(shù)據(jù)庫(kù)包含協(xié)議報(bào)頭定義。
這些數(shù)據(jù)庫(kù)由程序使用,像mfkeys,產(chǎn)生流鍵(也稱為流簽名);mfcpl,以CPL形式產(chǎn)生流定義;mfpkts,產(chǎn)生所有已知協(xié)議的實(shí)例分組;和netscope,產(chǎn)生snifferTM和tcpdump文件。
1.2指南慣例本指南自始至終都將使用下列慣例小寫courier字體指示函數(shù)名的C代碼實(shí)例。書寫函數(shù)時(shí)要在函數(shù)名后跟括號(hào)[function()],對(duì)變量只寫名字[variables],結(jié)構(gòu)名前面要加“struct”[struct packet]。
斜體指示文件名(例如,mworks/base/h/base.h)。通常相對(duì)于分布的根目錄書寫文件名。
常量用十進(jìn)制表示,除非寫成“0x...”這樣十六進(jìn)制數(shù)的C語(yǔ)言符號(hào)。
注意在PDL文件中兩個(gè)連字符(--)之后的任意行上的任何內(nèi)容都被編譯器忽略掉。也就是說(shuō),它們是注釋。
2.程序結(jié)構(gòu)一個(gè)MeterFlow解碼與流集合是非空的語(yǔ)句序列。在MeterFlowPDL中有四種基本類型的語(yǔ)句或定義可用。
FIELD,GROUP,PROTOCOL和FLOW。
2.1FIELD定義FIELD定義用來(lái)定義分組中特定的位或字節(jié)串。FIELD定義格式如下Name FIELDSYNTAX Type[{Enums}]DISPLAY-HINT“FormatString”LENGTH“Expression”FLAGS FieldName[,F(xiàn)ieldName2]LOOKUP LookupType[Filename]ENCODING EncodingTypeDEFAULT“value”DESCRIPTION“Description”只有FIELD和SYNATX行是必需的。所有其它行都是屬性行,定義關(guān)于FIELD的特殊特征。屬性行是可選的并且可以任意順序出現(xiàn)。
下面詳細(xì)描述了每一個(gè)屬性行2.1.1 SYNTAX Type[{Enums}]這個(gè)屬性定義類型,并且如果類型是INT、BYTESTRING、BITSTRING或SNMPSEQUBNCE類型的話定義FIELD的枚舉類型。當(dāng)前定義的類型是
2.1.2 DISPLAY-HINT“FormatString”這個(gè)屬性用于指定怎樣打印FIELD的值。當(dāng)前支持的格式是
2.1.3 LENGTH“Expression”這個(gè)屬性為確定FIELD的長(zhǎng)度定義一個(gè)表達(dá)式。表達(dá)式是算術(shù)表達(dá)式,并可以通過(guò)在引用的字段的名字前面加$而引用分組中其它FIELD的值。例如,如果tcpHeaderLen是為當(dāng)前分組而定義的另一個(gè)字段,“($tcpHeaderLen*4)-20”就是一個(gè)有效表達(dá)式。
2.1.4 FLAGS FieldFlags這個(gè)屬性定義FIELD的幾個(gè)特殊標(biāo)記。當(dāng)前支持的字段標(biāo)記是
2.1.5 ENCAP FieldName[,F(xiàn)ieldName2]這個(gè)屬性定義一個(gè)分組怎樣被封裝在另一個(gè)分組中。由FieldName字段的值確定要封裝到的分組。如果用FieldName沒(méi)有找到分組就嘗試用FieldName2。
2.1.6 LOOKUP LookupType[Filename]這個(gè)屬性定義怎樣查找特定FIELD值的名字。當(dāng)前支持的LookupType是
2.1.7 ENCODING EncodingType這個(gè)屬性定義怎樣對(duì)FIELD進(jìn)行編碼。目前僅支持BER編碼類型(針對(duì)由ASN.1定義的基本編碼規(guī)則)。
2.1.8 DEFAULT“value”這個(gè)屬性定義當(dāng)產(chǎn)生這個(gè)協(xié)議的實(shí)例分組時(shí)用于這個(gè)字段的缺省值。
2.1.9 DESCRIPTION“Description”這個(gè)屬性定義對(duì)FILED的說(shuō)明。僅用于提供信息目的。
2.2 GROUP定義GROUP定義用來(lái)把幾個(gè)相關(guān)FIELD綁在一起。GROUP定義格式如下Name GROUPLENGTH“Expression”O(jiān)PTIONAL“Condition”SUMMARIZE“Condition”“FormatString”[“Condition”“FormatString”...]DESCRIPTION“Description∷={Name=FieldOrGroup[,Name=FieldOrGroup...}”只有GROUP行和∷=行是必需的。所有其它行都是屬性行,定義GROUP的特殊特性。屬性行是可選的并且可以任意順序出現(xiàn)。下面詳細(xì)描述每個(gè)屬性行2.2.1 LENGTH“Expression”這個(gè)屬性為確定GROUP的長(zhǎng)度定義一個(gè)表達(dá)式。表達(dá)式是算術(shù)表達(dá)式,并可以通過(guò)在引用的字段名字前面加$而引用分組中其它FIELD的值。例如,如果tcpHeaderLen是為當(dāng)前分組而定義的另一個(gè)分組,“($tcpHeaderLen*4)-20”就是一個(gè)有效表達(dá)式。
2.2.2 OPTIONAL“Condition”這個(gè)屬性為確定GROUP是否存在定義一個(gè)條件。有效條件定義在下面的Condition節(jié)中。
2.2.3 SUMMARIZE“Condition”“FormatString”[“Condition”“FormatString”...]這個(gè)屬性定義怎樣以詳細(xì)模式顯示一個(gè)GROUP。可以為每個(gè)條件(Condition)指定一個(gè)不同的格式(FormatString)。有效條件定義在下面的Condition節(jié)中。通過(guò)在FIELD的名字前面加上$可以在FormatString中引用任意FIELD的值。除了FIELD名之外還有其它幾種特殊的$關(guān)鍵字。
2.2.4 DESCRIPTION“Description”這個(gè)屬性定義對(duì)GROUP的說(shuō)明。僅用于提供信息目的。
2.2.5 ∷={Name=FieldOrGroup[,Name=FieldOrGroup...]}這個(gè)屬性定義GROUP中字段或子群的順序。
2.3 PROTOCOL定義PROTOCOL定義用來(lái)定義協(xié)議報(bào)頭中FIELD和GROUP的順序。PROTOCOL定義格式如下Name PROTOCOLSUMMARIZE“Condition”“FormatString”[“Condition”“FormatString”...]DESCRIPTION“Description”REFERENCE“Reference”∷={Name=FieldOrGroup[,Name=FieldOrGroup...]}只有PROTOCOL行和∷=行是必需的。所有其它行都是屬性行,為PROTOCOL定義特殊的特征。屬性行是可選的并且可以任意順序出現(xiàn)。下面詳細(xì)描述了每個(gè)屬性行2.3.1 SUMMARIZE“Condition”“FormatString”[“Condition”“FormatString”...]這個(gè)屬性定義怎樣以摘要模式顯示一個(gè)PROTOCOL??梢詾槊總€(gè)條件(Condition)指定一個(gè)不同的格式(FormatString)。有效條件定義在下面的Condition節(jié)中。通過(guò)在FIELD的名字前面加上$可以在FormatString中引用任意FIELD的值。除了FIELD名之外還有其它幾種特殊的$關(guān)鍵字。
2.3.2 DESCRIPTION“Description”這個(gè)屬性定義對(duì)PROTOCOL的說(shuō)明。僅用于提供信息的目的。
2.3.3 REFERENCE“Reference”這個(gè)屬性定義用來(lái)確定協(xié)議格式的參考材料。僅用于提供信息的目的。
2.3.4 ∷={Name=FieldOrGroup[,Name=FieldOrGroup...]}這個(gè)屬性定義PROTOCOL中FIELD和GROUP的順序。
2.4 FLOW定義FLOW定義用來(lái)通過(guò)描述地址、協(xié)議類型和端口號(hào)在分組中的什么地方來(lái)定義網(wǎng)絡(luò)流。FLOW定義格式如下Name FLOWHEADER{Option[,Option...]}DLC-LAYER{Option[,Option...]}NET-LAYER{Option[,Option...]}CONNECTION{Option[,Option...]}PAYLOAD{Option[,Option...]}CHI LDREN{Option[,Option...]}STATE-BASEDSTATES“Definitions”只有FLOW行是必需的。所有其它行都是屬性行,定義FLOW的一些特殊特征。屬性行是可選的并可以任意順序出現(xiàn)。但是,必須至少有一個(gè)屬性行。下面詳細(xì)描述了每個(gè)屬性行2.4.1 HEADER{Option[,Option...]}這個(gè)屬性用來(lái)描述協(xié)議報(bào)頭的長(zhǎng)度。當(dāng)前支持的選項(xiàng)是
2.4.2 DLC-LAYER{Option[,Option...]}如果協(xié)議是數(shù)據(jù)鏈路層協(xié)議,就由這個(gè)屬性描述它。當(dāng)前支持的選項(xiàng)是
2.4.3 NET-LAYER{Option[,Option...]}如果該協(xié)議是網(wǎng)絡(luò)層協(xié)議,就由這個(gè)屬性描述。當(dāng)前支持的選項(xiàng)是
2.4.4 CONNECTION{Option[,Option...]}如果該協(xié)議是面向連接的協(xié)議,那么這個(gè)屬性描述怎樣建立及斷開(kāi)連接。當(dāng)前支持的選項(xiàng)是
2.4.5 PAYLOAD{Option[,Option...]}這個(gè)屬性描述應(yīng)該存儲(chǔ)多少來(lái)自這種類型的分組的有效負(fù)載以在后來(lái)的分析中使用。當(dāng)前支持的選項(xiàng)是
2.4.6 CHILDREN{Option[,Option...]}這個(gè)屬性描述怎樣確定子協(xié)議。當(dāng)前支持的選項(xiàng)是
2.4.6 STATE-BASED這個(gè)屬性指示該流是基于狀態(tài)的流。
2.4.7 STATES“Definitions”這個(gè)屬性描述怎樣用狀態(tài)確定這個(gè)協(xié)議的子流。從下面的狀態(tài)定義可以知道怎樣定義這些狀態(tài)。
2.5條件條件和OPTIONAL及SUMMARIZE屬性一起使用,由下列組成
Value1和Value2可以是FIELD引用(字段名前面加$)或常量值。注意目前不支持復(fù)合條件語(yǔ)句(使用AND和OR)。
2.6 STATE定義運(yùn)行在數(shù)據(jù)網(wǎng)絡(luò)上的很多應(yīng)用利用復(fù)雜的方法通過(guò)使用多種狀態(tài)來(lái)給流量分類。狀態(tài)定義用于管理和維護(hù)從來(lái)自網(wǎng)絡(luò)的流量中認(rèn)識(shí)到的狀態(tài)。
狀態(tài)定義的基本格式是StateNameOperand Parameters[Operand Parameters]用下面的操作數(shù)描述特定流的不同狀態(tài)2.6.1 CHECKCONNECT,operand檢查連接。一旦連接上就執(zhí)行operand。
2.6.2 GOTO state轉(zhuǎn)到state,使用當(dāng)前分組。
2.6.3 NEXT state轉(zhuǎn)到state,使用下一個(gè)分組。
2.6.4 DEFAULT operand當(dāng)所有其它操作都失敗時(shí)執(zhí)行operand。
2.6.5 CHILD protocol跳轉(zhuǎn)到子protocol并在這個(gè)孩子中執(zhí)行基于狀態(tài)的處理(如果有的話)。
2.6.6 WAIT numPackets,operand1,operand2等待指定數(shù)量的分組。當(dāng)已經(jīng)接收到指定數(shù)量的分組時(shí)執(zhí)行operand1。當(dāng)接收到一個(gè)分組但還小于指定的分組數(shù)量時(shí)執(zhí)行operand2。
2.6.7 MATCH‘string’weight offset LF-offset range LF-range,operand在分組中查找‘string’,如果找到了就執(zhí)行operand2.6.8 CONSTANT number offset range,operand
在分組中檢查常數(shù),如果找到就執(zhí)行operand2.6.9 EXTRACTIP offset destination,operand從分組中提取IP地址然后執(zhí)行operand。
2.6.10 EXTRACTPORT offset destination,operand從分組中提取端口號(hào)然后執(zhí)行operand。
2.6.11 CREATEREDIRECTEDFLOW,operand創(chuàng)建一個(gè)改變了方向的流然后執(zhí)行operand。
3.實(shí)例PDL規(guī)則下面一節(jié)包含PDL規(guī)則文件的幾個(gè)實(shí)例。
3.1以太網(wǎng)下面是針對(duì)以太網(wǎng)的PDL實(shí)例<pre listing-type="program-listing"><![CDATA[MacAddress FIELD SYNTAX BYTESTRING(6) DISPLAY-HINT“1x” LOOKUP MACADDRESS DESCRIPTION “MAC layer physical address”etherType FIELD SYNTAX INT(16) DISPLAY-HINT“1x” LOOKUP FILE“EtherType.cf” DESCRIPTION“Ethernet type field”etherData FIELD SYNTAX BYTESTRING(46..1500) ENCAP etherType DISPLAY-HIND “HexDump” DESCRIPTION“Ethernet data”ethernetPROTOCOL DESCRIPTION “Protocol format for an Ethernet frame” REFERENCE “RFC 894”∷={ MacDest=macAddress,MacSrc=macAddress,EtherType=etherType, Data=etherData}ethernetFLOW HEADER {LENGTH=14} DLC-LAYER { SOURCE=MacSrc, DESTINATION=MacDest, TUNNELING, PROTOCOL } CHILDREN {DESTINATION=EtherType,LLC-CHECK=11c}3.2IPV4]]></pre>這里是針對(duì)IP協(xié)議的PDL實(shí)例<pre listing-type="program-listing"><![CDATA[ipAddress FIELD SYNTAX BYTESTRING(4) DISPLAY-HINT “1d.” LOOKUP HOSTNAME DESCRIPTION “IP address”ipVersion FIELD SYNATX INT(4) DEFAULT“4”ipHeaderLength FIELDSYNTAXINT(4)ipTypeofService FIELDSYNTAXBITSTRING(8){minCost(1),maxReliability(2),maxThruput(3),minDelay(4)}ipLengthFIELDSYNTAXUNSIGNEDINT(16)ipFlags FIELDSYNTAXBITSTRING(3){moreFrags(0),dontFrag(1)}ipProtocol FIELDSYNTAXINT(8) LOOKUPFILE“IpProtocol.cf”ipData FIELD SYNTAXBYTESTRING(0..1500) ENCAP ipProtocol DISPLAY-HINT“HexDump”ip PROTOCOL SUMMARIZE “$FragmentOffset?。?” “IPFragment ID=$Identification Offset=$FragmentOffset” “Default” “IP Protocol=$Protocol” DESCRIPTION “Protocol format for the InternetProtocol” REFERENCE “RFC 791”∷={Version=ipVersion,HeaderLength=ipHeadLength, TypeOfService=ip TypeOfService,Length=ipLength, Identification=UInt16,IpFlags=ipFlags, FragmentOffset=ipFragmentOffset,TimeToLive=Int8, Protocol=ipProtocol,Checksum=ByteStr2, IpSrc=ipAddress,IpDest=ipAddress,Options=ipOptions, Fragment=ipFragment,Data=ipData}ip FLOW HEADER{LENGTH=HeaderLength,IN-WORD} NET-LAYER{ SOURCE=IpSrc, DESTINATION=IpDest, FRAGMENTATION=IPV4, TUNNELING } CHILDREN{DESTINATION=Protocol}ipFragData FIELD SYNTAX BYTESTRING(1..1500) LENGTH “ipLength-ipHeaderLength*4” DISPLAY-HINT “HexDump”ipFragment GROUP OPTIONAL “$FragmentOffset?。?”∷={Data=ipFragData}ipOptionLength FIELD SYNTAX UNSIGNEDINT(8) DESCRIPTION“Length of IP option”ipOptionDataFIELD SYNTAX BYTESTRING(0..1500) ENCAPipOptionCode DISPLAY-HINT“HexDump”ipOptions GROUP LENGTH “(ipHeaderLength*4)-20”∷={ Code=ipOptionCode,Length=ipOptionLength,Pointer=UInt8, Data=ipOptionData}3.3TCP]]></pre>這里是針對(duì)TCP協(xié)議的PDL實(shí)例<pre listing-type="program-listing"><![CDATA[tcpPortFIELD SYNTAXUNSIGNEDINT(16) LOOKUPFILE“TcpPort.cf”tcpHeaderLength FIELD SYNTAXINT(4)tcpFlags FIELD SYNTAXBITSTRING(12){fin(0),syn(1),rst(2),psh(3), ack(4),urg(5)}tcpDataFIELD SYNTAXBYTESTRING(0..1564) LENGTH“($ipLength-($ipHeaderLength*4))-($tcpHeaderLen*4)” ENACP tcpPortDISPLAY“HexDump”tcpPROTOCOL SUMMARIZE “Default” “TCP ACK=$Ack WIN=$WindowSize” DESCRIPTION “Protocol format the Transmission ControlProtocol” REFERENCE “RFC 973”∷={SrcPort=tcpPort,DestPort=tcpPort,SequenceNum=UInt32, Ack=UInt32, HeaderLength=tcpHeaderLen,TcpFlags=tcpFlags, WindowSize=UInt16,Checksum=ByteStr2, UrgentPointer=UInt16,Options=tcpOptions,Data=tcpData}tcp FLOW HEADER {LENGTH=HeaderLength,IN-WORDS} CONNECTION { IDENTIFIER=SequenceNum, CONNECT-START=“TcpFlags1”, CONNECT-COMPLETE=“TcpFlags4”, DISCONNECT-START=“TcpFlags0”, DISCONNECT-COMPLETE=“TcpFlags4” } PAYLOAD{INCLUDE-HEADER} CHILDREN{DESTINATION=DestPort,SOURCE=SrcPort}tcpOptionKindFIELD SYNTAX UNSIGNEDINT(8){tcpOptEnd(0),tcpNop(1)},tcpMSS(2),tcpWscale(3),tcpTimestamp(4)}DESCRIPTION “Type of TCP option”tcpOptionDataFIELD SYNTAXBYTESTRING(0..1500) ENCAP tcoOptionKind FLAGS SAMELAYER DISPLAY-HIN“HexDump”tcpOptionsGROUP LENGTH “($tcpHeaderLen*4)-20”∷={Option=tcpOptionKind,OptionLength=UInt8,OptionData=tcpOptionData}tcpMSSPROTOCOL∷={MaxSegmentSize=UInt16}]]></pre>3.4HTTP(帶狀態(tài))這里是針對(duì)HTTP協(xié)議的一個(gè)PDL實(shí)例<pre listing-type="program-listing"><![CDATA[httpDataFIELDSYNTAXBYTESTRING(1..1500)LENGTH“($ipLength-($ipHeaderLength*4))-($tcpHeaderLen*4)” DISPLAY-HINT“Text” FLAGS NOLABELhttpPROTOCOL SUMMARIZE “$httpDatam/^GET|^HTTP|^HEAD|^POST/” “HTTP $httpData” “$httpData m/^[Dd]ate|^[Ss]erver|^[L1]ast-[Mm]odified/”“HTTP$httpData” “$httpData m/^[Cc]ontent-/” “HTTP$httpData” “$httpData m/^<HTML>/” “HTTP[HTML document]” “$httpData m/^GIF/” “HTTP[GIF image]” “Default” “HTTP[Data]” DESCRIPTION “Protocol format for HTTP”∷={Data=httpData}httpFLOWHEADER {LENGTH=0}CONNECTION{INHERITED}PAYLOAD{INCLUDE-HEADER,DATA=Data,LENGTH=256}STATES “S0CHECKCONNECT,GOTO S1 DEFAULT NEXT S0 S1WAIT2,GOTO S2,NEXTS1 DEFAULT NEXT S0 S2MATCH ‘\n\r\n’900 0 0 255 0,NEXT S3\n\n’900 0 0 255 0,NEXT S3 ‘POST /tds?’50 0 0 127 1,CHILDsybaseWebsql ‘.hts HTTP/1.0’50 4 0 127 1,CHILDsvbaseJdbc ‘jdbcsybaseTds’50 4 0 127 1,CHILDsybaseTds ‘PCN-The Poin’500 4 1 255 0,CHILDpointcast ‘tBW-C-’100 4 1 255 0,CHILDbackweb DEFAULT NEXT S3 S3MATCH ‘\n\r\n’50 0 0 0 0,NEXT S3 ‘\n\n’50 0 0 0 0,NEXT S3 ‘Content-Type’800 0 0 255 0,CHILE mime ‘PCN-The Poin’500 4 1 255 0,CHILDpointcast ‘tBW-C-’100 4 1 255 0,CHILDbackweb DEFAULT NEXT S0sybaseWebsql FLOWSTATE-BASEDsybaseJdbcFLOW STATE-BASEDsybaseTds FLOW STATE-BASEDpointcast FLOW STATE-BASEDbackweb FLOW STATE-BASEDmime FLOW STATE-BASED STATES‘a(chǎn)pplication’900 0 0 1 0,CHILDmimeApplication‘a(chǎn)udio’900 0 0 1 0,CHILDmimeAudio‘image’50 0 0 1 0,CHILD mimeImage‘text’50 0 0 1 0,CHILD mimeText‘video’50 0 0 1 0,CHILDmimeVideo‘x-world’500 4 1 255 0,CHILEmimeXworldDEFAULT GOTO S0”mimeApplication FLOW STATE-BASEDmimeAudio FLOW STATE-BASED STATES “S0MATCH ‘basic’100 0 0 1 0,CHILD pdBasicAudio ‘midi’100 0 0 1 0,CHILD pdMidi ‘mpeg’100 0 0 1 0,CHILD pdMpeg2Audio ‘vnd.rn-realaudio’100 0 0 1 0,CHILDpdRealAudio ‘wav’100 0 0 1 0,CHILD pdWav ‘x-aiff’100 0 0 1 0,CHILD pdAiff ‘x-midi’100 0 0 1 0,CHILD pdMidi ‘x-mpeg’100 0 0 1 0,CHILDpdMpeg2Audio ‘x-mpgurl’100 0 0 1 0,CHILD pdMpeg3Audio ‘x-pn-realaudio’100 0 0 1 0,CHILD pdRealAudio ‘x-wav’100 0 0 1 0,CHILD pdWav DEFAULT GOTO S0”mineImage FLOW STATE-BASEDmineText FLOW STATE-BASEDmineVideo FLOW STATE-BASEDmineXworld FLOW STATE-BASEDpdBasicAideo FLOW STATE-BASEDpdMidi FLOW STATE-BASEDpdMpeg2Audio FLOW STATE-BASEDpdMpeg3Audio FLOW STATE-BASEDpdRealAudio FLOW STATE-BASEDpdWav FLOW STATE-BASEDpdAiff FLOW STATE-BASED]]></pre>重復(fù)利用來(lái)自流的信息以維持度量每個(gè)流的流-入口存儲(chǔ)了該流的一組統(tǒng)計(jì)測(cè)量信息,包括流中分組的總數(shù)、到達(dá)時(shí)間和從上次到達(dá)的微分時(shí)間。
再來(lái)看圖3,狀態(tài)處理方法328執(zhí)行為流的狀態(tài)而定義的操作,例如迄今為止針對(duì)該流而識(shí)別出的特定協(xié)議。本發(fā)明的一個(gè)方面是有時(shí)可以用存儲(chǔ)在流-入口中的一個(gè)或多個(gè)統(tǒng)計(jì)測(cè)量來(lái)確定一組一個(gè)或多個(gè)與該流有關(guān)的度量。例如,可以由狀態(tài)處理器運(yùn)行狀態(tài)處理器指令與模式數(shù)據(jù)庫(kù)326中的指令來(lái)執(zhí)行這樣的度量確定。隨后可以由分析器子系統(tǒng)把這樣的度量發(fā)往連接到監(jiān)控器的主機(jī)上?;蛘咭部梢杂蛇B接到流-入口數(shù)據(jù)庫(kù)324的處理器執(zhí)行這樣的度量確定。在圖10中所示的我們的優(yōu)選硬件實(shí)現(xiàn)中,可以對(duì)分析器主機(jī)接口和控制1118進(jìn)行配置以通過(guò)高速緩沖存儲(chǔ)器系統(tǒng)1115訪問(wèn)流-入口記錄進(jìn)而通過(guò)主機(jī)總線接口向處理器進(jìn)行輸出。隨后處理器可以報(bào)告基本度量。
圖15描述了監(jiān)控器系統(tǒng)可以和主機(jī)1504裝配在一起。監(jiān)控器300不時(shí)地向主機(jī)1504發(fā)送度量信息,并且主機(jī)1504執(zhí)行部分分析。
下面一節(jié)描述所發(fā)明的監(jiān)控器怎樣被用來(lái)通過(guò)提供QOS度量來(lái)監(jiān)控服務(wù)質(zhì)量(QOS)。
服務(wù)質(zhì)量流量統(tǒng)計(jì)(度量)下面這一節(jié)按照本發(fā)明的一個(gè)方面定義可能應(yīng)用于服務(wù)質(zhì)量(QOS)度量的通用結(jié)構(gòu)。還定義了可以在本發(fā)明的實(shí)施方案中確定的“原始”(或“基本”)度量集以支持QOS?;径攘勘蛔鳛闋顟B(tài)處理的一部分或由連接到監(jiān)控器300的處理器確定,由主機(jī)1504從基本度量確定QOS度量。這么分工的主要原因是完整的QOS度量需要復(fù)雜的計(jì)算,涉及到平方根和其它一些可能無(wú)法實(shí)時(shí)獲得所需計(jì)算資源的函數(shù)。因此選擇一些基本函數(shù)簡(jiǎn)化實(shí)時(shí)計(jì)算并從中確定完整的QOS度量。在本發(fā)明范圍內(nèi)也可以有其它函數(shù)分工。
可以由狀態(tài)處理器運(yùn)行狀態(tài)處理器指令和模式數(shù)據(jù)庫(kù)326中的指令來(lái)執(zhí)行這樣的度量確定。隨后由分析器子系統(tǒng)通過(guò)連接到監(jiān)控器的處理器或邏輯電路把這些基本度量發(fā)送出去?;蛘呖梢杂蛇B接到流-入口數(shù)據(jù)庫(kù)324的微處理器(或其它一些邏輯)來(lái)執(zhí)行這樣的度量確定。在圖10和圖11中所示我們的優(yōu)選硬件實(shí)現(xiàn)中,這樣一個(gè)微處理器通過(guò)分析器主機(jī)接口和控制1118以及主機(jī)總線接口連接到高速緩沖存儲(chǔ)器系統(tǒng)1115??梢詫?duì)這些單元進(jìn)行配置以通過(guò)高速緩沖存儲(chǔ)器系統(tǒng)1115訪問(wèn)流-入口記錄進(jìn)而使微處理器能夠確定并報(bào)告基本度量。
QOS度量可以分成下列度量組。名字是描述性的。列表并不詳盡,還有其它度量可以使用。下面的QOS度量包括客戶機(jī)到服務(wù)器(CS)和服務(wù)器到客戶機(jī)(SC)度量。
像CSTraffic和SCTraffic這樣的流量度量。
像CSJitter和SCJitter這樣的振動(dòng)度量。
像CSExchangeReponseTimeStartToStart 、CSExchangeResponseTimeEndToStart 、CSExchangeResponseTimeStartToEnd SCExchangeReponseTimeStartToStart SCExchangeResponseTimeEndToStart、SCExchangeResponseTimeStartToEnd這樣的交換響應(yīng)度量。
像 CSTransactionReponseTimeStartToStart 、CSApplicationReponseTimeEndToStart、CSApplicationReponseTimeStartToEnd、SCTransactionReponseTimeStartToStart SCApplicationReponseTimeEndToStart 、SCApplicationReponseTimeStartToEnd這樣的事務(wù)響應(yīng)度量。
像 ConnectionEstablishment 、ConnectionGracefulTermination 和ConnectionTimeoutTermination這樣的連接度量。
像CSConnectionRetransmissions 、SCConnectionRetransmissions 和 CSConnectionOutOfOrders 、SCConnectionOutOfOrders這樣的連接順序度量。
連接窗口度量有CSCoonnectionWindow、SCConnectionWindow、CSConnectionFrozenWindows、SCConnectionFrozenWindows、CSConnectionClosedWindows以及SCConnectionClosedWindows。
QOS基本度量表示一組數(shù)據(jù)最簡(jiǎn)單的方法是通過(guò)子范圍內(nèi)的頻率分布。在優(yōu)選實(shí)施方案中有一些創(chuàng)建子范圍的規(guī)則。首先范圍需要是已知的。其次需要確定子范圍大小。固定子范圍大小是首選的,替代實(shí)施方面可以使用可變的子范圍大小。
確定完整的頻率分布可能要進(jìn)行大量的計(jì)算。這樣,優(yōu)選實(shí)施方案使用由對(duì)象總體中的單個(gè)數(shù)據(jù)元素上的求和函數(shù)確定的度量。
度量報(bào)告方法提供可以用來(lái)計(jì)算有用的統(tǒng)計(jì)測(cè)量的數(shù)據(jù)。在一種實(shí)施方案中,度量報(bào)告方法是根據(jù)狀態(tài)而不時(shí)執(zhí)行的狀態(tài)處理的一部分,在另一種實(shí)施方案中,度量報(bào)告方法由訪問(wèn)流記錄的微處理器不時(shí)地執(zhí)行。優(yōu)選地,度量報(bào)告方法提供基本度量,由主機(jī)1504執(zhí)行最終的QOS度量計(jì)算。除了保持實(shí)時(shí)狀態(tài)處理簡(jiǎn)單之外,用這種方式分割任務(wù)還提供可升級(jí)的度量。例如,來(lái)自兩個(gè)間隔的度量可以被結(jié)合成更大間隔的度量。
例如,考慮把算術(shù)平均值定義為數(shù)據(jù)的和除以數(shù)據(jù)元素的個(gè)數(shù)。
X‾=ΣxN]]>由度量報(bào)告方法提供的兩個(gè)基本度量是x的和以及元素個(gè)數(shù)N。主機(jī)1504執(zhí)行除法操作以得到平均值。此外,通過(guò)加上x’的和以及它的元素個(gè)數(shù)把來(lái)自兩個(gè)間隔的兩組基本度量結(jié)合在一起可以得到合并后的和以及元素個(gè)數(shù)。
已經(jīng)對(duì)基本度量進(jìn)行了選擇以使可用數(shù)據(jù)的數(shù)量最大,用來(lái)存儲(chǔ)度量所需的存儲(chǔ)量最小并使產(chǎn)生度量所需的處理開(kāi)銷最小。在一個(gè)包含五個(gè)無(wú)符號(hào)整數(shù)值的數(shù)據(jù)結(jié)構(gòu)中提供基本度量。
●N 度量的數(shù)據(jù)點(diǎn)個(gè)數(shù)
●∑X 度量的所有數(shù)據(jù)點(diǎn)值的和●∑(X2) 度量的所有數(shù)據(jù)點(diǎn)值的平方和●Xmax度量的最大數(shù)據(jù)點(diǎn)值●Xmin度量的最小數(shù)據(jù)點(diǎn)值度量用來(lái)描述時(shí)間間隔上的事件。從保存在流-入口中的統(tǒng)計(jì)測(cè)量確定基本度量。沒(méi)有必要把所有事件都高速緩存起來(lái)然后在間隔的末尾對(duì)它們計(jì)數(shù)?;径攘窟€被設(shè)計(jì)成在合并相鄰間隔時(shí)易于升級(jí)。
當(dāng)合并連續(xù)時(shí)間間隔的基本度量時(shí)應(yīng)用下列規(guī)則●N ∑N●∑X ∑(∑X)●∑(X2) ∑(∑(X2))●XmaxMAX(Xmax)●XminMIN(Xmin)除了上面五個(gè)值之外,優(yōu)選實(shí)施方案數(shù)據(jù)結(jié)構(gòu)中還包括一個(gè)“趨勢(shì)”指示符。由枚舉類型提供。這么做的原因是產(chǎn)生趨勢(shì)信息的優(yōu)選方法是通過(guò)從間隔的最終值減去該間隔的最初值來(lái)產(chǎn)生趨勢(shì)信息。只有結(jié)果的符號(hào)才對(duì)確定趨勢(shì)指示有價(jià)值。
可以在基本度量上執(zhí)行的典型操作包括●數(shù)量 N●頻率●最大值 Xmax●最小值 Xmin●范圍 R=Xmax-Xmin●算術(shù)平均值X‾=ΣXN]]>●均方根值RMS=Σ(X2)N]]>●方差σ2=Σ(X-X‾)2N=(ΣX2)-2X‾(ΣX)+N(X‾2)N]]>●標(biāo)準(zhǔn)偏差σ=Σ(X-X‾)2N=(Σ(X2))-2X‾(ΣX)+N(X‾2)N]]>
●趨勢(shì)信息可以是選中的間隔之間的趨勢(shì)或一個(gè)間隔內(nèi)的趨勢(shì)。選中的間隔之間的趨勢(shì)是管理應(yīng)用函數(shù)。通常管理站傾向于報(bào)告的間隔的平均值。一個(gè)間隔內(nèi)的趨勢(shì)被表示成枚舉類型,并且可以通過(guò)從該間隔中的最后一個(gè)值減去第一個(gè)值并根據(jù)結(jié)果的符號(hào)值給趨勢(shì)賦值很容易地生成。
替代實(shí)施方案在度量的不同實(shí)現(xiàn)中可以包括下列不同數(shù)據(jù)元素中的一個(gè)或多個(gè)●增量和(即微分值)。趨勢(shì)枚舉可以基于這個(gè)簡(jiǎn)單的計(jì)算。
●增量值的絕對(duì)值的和。提供對(duì)間隔內(nèi)的全部活動(dòng)的測(cè)量。
●正增量值的和以及負(fù)增量值的和。把這些值中的每一個(gè)和相關(guān)的計(jì)數(shù)及最大值擴(kuò)展到一起就可以給出精確的信息●斜交的統(tǒng)計(jì)測(cè)量,可以通過(guò)給現(xiàn)有的度量增加∑(X3)而獲得。
●峰度的統(tǒng)計(jì)測(cè)量,可以通過(guò)給現(xiàn)有的度量增加∑(X3)和∑(X4)而獲得。
●用來(lái)通過(guò)其計(jì)算最小二乘方線的斜率的數(shù)據(jù)。
現(xiàn)在詳細(xì)描述不同的度量。
流量度量CSTraffic定義這個(gè)度量包含有關(guān)為給定應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)而測(cè)量的流量大小的信息。
在標(biāo)準(zhǔn)、RMON II、AL/NL矩陣表中可以找到這個(gè)信息副本。在這里包括它是為了給應(yīng)用以及提高性能后的相關(guān)收益提供方便,提高性能是通過(guò)在執(zhí)行QOS分析時(shí)避免訪問(wèn)不同的功能RMON區(qū)域的需要。
度量規(guī)范
SCTRAFFIC定義這個(gè)度量包含有關(guān)為給定應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的全部客戶機(jī)而測(cè)量的流量大小的信息。
在標(biāo)準(zhǔn)、RMON II、AL/NL矩陣表中可以找到這個(gè)信息副本。在這里包括它是為了給應(yīng)用以及提高性能后的相關(guān)收益提供方便,提高性能是通過(guò)在執(zhí)行QOS分析時(shí)避免訪問(wèn)不同的功能RMON區(qū)域的需要。
度量規(guī)范
振動(dòng)度量CSJitter定義這個(gè)度量包含有關(guān)為數(shù)據(jù)分組測(cè)量的振動(dòng)(例如,分組間間隔)的信息,該數(shù)據(jù)分組是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其CSJitter測(cè)量從客戶機(jī)到服務(wù)器的數(shù)據(jù)消息的振動(dòng)。
數(shù)據(jù)分組以從客戶機(jī)到服務(wù)器的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以另一方向上的1st后繼數(shù)據(jù)分組作為界線(或終止)。在該消息內(nèi)的數(shù)據(jù)分組之間測(cè)量客戶機(jī)到服務(wù)器分組間間隔。注意在我們的實(shí)現(xiàn)中,ACKnowledgement在這個(gè)度量的測(cè)量中并不考慮確認(rèn)。
另外,在測(cè)量中也不考慮重傳無(wú)序數(shù)據(jù)分組。在從客戶機(jī)到服務(wù)器的數(shù)據(jù)消息中的最后一個(gè)分組和同一方向上下一個(gè)數(shù)據(jù)消息的1st分組之間的間隔并不被表示為分組間間隔。
度量規(guī)范
SCJitter定義這個(gè)度量包含有關(guān)為數(shù)據(jù)分組測(cè)量的振動(dòng)(例如,分組間間隔)的信息,該數(shù)據(jù)分組是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其SCJitter測(cè)量從服務(wù)器到客戶機(jī)的數(shù)據(jù)消息的振動(dòng)。
數(shù)據(jù)消息以從服務(wù)器到客戶機(jī)的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以另一方向上的1st后繼數(shù)據(jù)分組作為界線(或終止)。在該消息內(nèi)的數(shù)據(jù)分組間測(cè)量服務(wù)器到客戶機(jī)分組間間隔。注意在我們的實(shí)現(xiàn)中,在這個(gè)度量的測(cè)量中并未考慮確認(rèn)。
度量規(guī)范
交換響應(yīng)度量CSExchangeResponseTimeStartToStart定義這個(gè)度量包含有關(guān)為數(shù)據(jù)分組測(cè)量的傳輸級(jí)響應(yīng)時(shí)間的信息,該數(shù)據(jù)分組是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其CSExchangeReponseTimeStartToStart測(cè)量在客戶機(jī)到服務(wù)器數(shù)據(jù)消息的開(kāi)始和從服務(wù)器到客戶機(jī)的它們的后繼響應(yīng)數(shù)據(jù)消息的開(kāi)始之間的響應(yīng)時(shí)間。
客戶機(jī)到服務(wù)器數(shù)據(jù)消息以從客戶機(jī)到服務(wù)器的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以另一方向上的1st后繼數(shù)據(jù)分組作為界線(或終止)。用這個(gè)度量測(cè)量在客戶機(jī)到服務(wù)器數(shù)據(jù)消息的開(kāi)始和服務(wù)器到客戶機(jī)數(shù)據(jù)消息的開(kāi)始之間的總時(shí)間。注意該度量的測(cè)量中沒(méi)有考慮確認(rèn)。
另外,在該測(cè)量中也沒(méi)有考慮重傳或無(wú)序數(shù)據(jù)分組。
度量定義
CSExchangeResponseTimeEndToStart定義這個(gè)度量包含有關(guān)為數(shù)據(jù)分組測(cè)量的傳輸級(jí)響應(yīng)時(shí)間的信息,該數(shù)據(jù)分組是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其CSExchangeResponseTimeEndToStart測(cè)量在從客戶機(jī)到服務(wù)器的數(shù)據(jù)消息的結(jié)尾和從服務(wù)器到客戶機(jī)的它們的后繼響應(yīng)數(shù)據(jù)消息的開(kāi)始之間的響應(yīng)時(shí)間。
客戶機(jī)到服務(wù)器數(shù)據(jù)消息以從客戶機(jī)到服務(wù)器的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以另一方向上的1st后繼數(shù)據(jù)分組作為界線(或終止)。用這個(gè)度量測(cè)量在客戶機(jī)到服務(wù)器數(shù)據(jù)消息的結(jié)尾和服務(wù)器到客戶機(jī)的數(shù)據(jù)消息的開(kāi)始之間的總時(shí)間。注意該度量的測(cè)量中沒(méi)有考慮確認(rèn)。
另外,在該測(cè)量中也沒(méi)有考慮對(duì)無(wú)序數(shù)據(jù)分組的重傳。
度量規(guī)范
CSExchangeReponseTimeStartToEnd定義這個(gè)度量包含有關(guān)為數(shù)據(jù)分組測(cè)量的傳輸級(jí)響應(yīng)時(shí)間的信息,該數(shù)據(jù)分組是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其CSExchangeResponseTimeStartToEnd測(cè)量在從客戶機(jī)到服務(wù)器的數(shù)據(jù)消息的開(kāi)始和從服務(wù)器到客戶機(jī)的它們的后繼響應(yīng)數(shù)據(jù)消息的結(jié)尾之間的響應(yīng)時(shí)間。
客戶機(jī)到服務(wù)器數(shù)據(jù)消息以從客戶機(jī)到服務(wù)器的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以另一方向上的1st后繼數(shù)據(jù)分組作為界線(或終止)。另一方向(例如,從服務(wù)器到客戶機(jī))上的響應(yīng)消息的結(jié)尾以下一個(gè)客戶機(jī)到服務(wù)器消息的1st數(shù)據(jù)分組之前的消息的最后數(shù)據(jù)作為界線。用這個(gè)度量測(cè)量在客戶機(jī)到服務(wù)器數(shù)據(jù)消息的開(kāi)始和服務(wù)器到客戶機(jī)數(shù)據(jù)消息的結(jié)尾之間的總時(shí)間。注意該度量的測(cè)量中沒(méi)有考慮確認(rèn)。
另外,在該測(cè)量中也沒(méi)有考慮重傳或無(wú)序數(shù)據(jù)分組。
度量規(guī)范
SCExchangeResponseTimeStartToStart定義這個(gè)度量包含有關(guān)為數(shù)據(jù)分組測(cè)量的傳輸級(jí)響應(yīng)時(shí)間的信息,該數(shù)據(jù)分組是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其SCExchangeResponseTimeStartToStart測(cè)量在從服務(wù)器到客戶機(jī)數(shù)據(jù)消息的開(kāi)始和從客戶機(jī)到服務(wù)器的它們的后繼響應(yīng)數(shù)據(jù)消息的開(kāi)始之間的響應(yīng)時(shí)間。
服務(wù)器到客戶機(jī)數(shù)據(jù)消息以從服務(wù)器到客戶機(jī)的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以另一方向上的1st后繼數(shù)據(jù)分組作為界線(或終止)。用這個(gè)度量測(cè)量在服務(wù)器到客戶機(jī)數(shù)據(jù)消息的開(kāi)始和客戶機(jī)到服務(wù)器數(shù)據(jù)消息的開(kāi)始之間的總時(shí)間。注意該度量的測(cè)量中沒(méi)有考慮確認(rèn)。
另外,在該測(cè)量中也沒(méi)有考慮重傳或無(wú)序數(shù)據(jù)分組。
度量規(guī)范
SCExchangeResponseTimeEndtToStart定義這個(gè)度量包含有關(guān)為數(shù)據(jù)分組測(cè)量的傳輸級(jí)響應(yīng)時(shí)間的信息,該數(shù)據(jù)分組是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其SCExchangeResponseTimeEndToStart測(cè)量在服務(wù)器到客戶機(jī)數(shù)據(jù)消息的結(jié)尾和客戶機(jī)到服務(wù)器的它們的后繼響應(yīng)數(shù)據(jù)消息的開(kāi)始之間的響應(yīng)時(shí)間。
服務(wù)器到客戶機(jī)數(shù)據(jù)消息以從服務(wù)器到客戶機(jī)的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以另一方向上的1st后繼數(shù)據(jù)分組作為界線(或終止)。用這個(gè)度量測(cè)量在服務(wù)器到客戶機(jī)數(shù)據(jù)消息的結(jié)尾和客戶機(jī)到服務(wù)器數(shù)據(jù)消息的開(kāi)始之間的總時(shí)間。注意該度量的測(cè)量中沒(méi)有考慮確認(rèn)。
另外,在該測(cè)量中也沒(méi)有考慮重傳或無(wú)序數(shù)據(jù)分組。
度量規(guī)范
SCExchangeResponseTimeStartToEnd定義這個(gè)度量包含有關(guān)為數(shù)據(jù)分組測(cè)量的傳輸級(jí)響應(yīng)時(shí)間的信息,該數(shù)據(jù)分組是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其SCExchangeResponseTimeStartToEnd測(cè)量在從服務(wù)器到客戶機(jī)數(shù)據(jù)消息的開(kāi)始和從客戶機(jī)到服務(wù)器的它們的后繼響應(yīng)數(shù)據(jù)消息的結(jié)尾之間的響應(yīng)時(shí)間。
服務(wù)器到客戶機(jī)數(shù)據(jù)消息以從服務(wù)器到客戶機(jī)的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以另一方向上的1st后繼數(shù)據(jù)分組作為界線(或終止)。另一方向(例如,從客戶機(jī)到服務(wù)器)上的響應(yīng)消息的結(jié)尾以下一個(gè)服務(wù)器到客戶機(jī)消息的1st數(shù)據(jù)分組之前的消息的最后數(shù)據(jù)作為界線。用這個(gè)度量測(cè)量在服務(wù)器到客戶機(jī)數(shù)據(jù)消息的開(kāi)始和客戶機(jī)到服務(wù)器數(shù)據(jù)消息的結(jié)尾之間的總時(shí)間。注意該度量的測(cè)量中沒(méi)有考慮確認(rèn)。
另外,在該測(cè)量中也沒(méi)有考慮對(duì)無(wú)序數(shù)據(jù)分組的重傳。
度量規(guī)范
事務(wù)響應(yīng)度量CSTransactionResponseTimeStartToStart定義這個(gè)度量包含有關(guān)為應(yīng)用事務(wù)測(cè)量的應(yīng)用級(jí)響應(yīng)時(shí)間的信息,該應(yīng)用事務(wù)是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶的。尤其CSTransactionResponseTimeStartToStart測(cè)量在客戶機(jī)到服務(wù)器應(yīng)用事務(wù)的開(kāi)始和服務(wù)器到客戶機(jī)的它們的后繼事務(wù)響應(yīng)的開(kāi)始之間的響應(yīng)時(shí)間。
客戶機(jī)到服務(wù)器事務(wù)以從客戶機(jī)到服務(wù)器的事務(wù)請(qǐng)求的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以對(duì)該事務(wù)請(qǐng)求的響應(yīng)的1st后繼數(shù)據(jù)分組作為界線(或終止)。用這個(gè)度量測(cè)量在客戶機(jī)到服務(wù)器事務(wù)請(qǐng)求的開(kāi)始和服務(wù)器到客戶機(jī)的實(shí)際事務(wù)響應(yīng)的開(kāi)始之間的總時(shí)間。
這個(gè)度量被看作是“最好-成果”測(cè)量。實(shí)現(xiàn)這個(gè)度量的系統(tǒng)產(chǎn)生“最好-成果”以便用特定應(yīng)用的邏輯事務(wù)定義劃定請(qǐng)求和響應(yīng)的開(kāi)始和結(jié)尾。對(duì)這個(gè)度量最低級(jí)的支持也使這個(gè)度量等效于CSExchangeResponseTimeStartToStart。
度量規(guī)范
CSTransactionResponseTimeEndToStart定義這個(gè)度量包含有關(guān)為應(yīng)用事務(wù)測(cè)量的應(yīng)用級(jí)響應(yīng)時(shí)間的信息,該應(yīng)用事務(wù)是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶的。尤其CSTransactionResponseTimeEndToStart測(cè)量在客戶機(jī)到服務(wù)器的應(yīng)用事務(wù)的結(jié)尾和服務(wù)器到客戶機(jī)的它們的后繼事務(wù)響應(yīng)的開(kāi)始之間的響應(yīng)時(shí)間。
客戶機(jī)到服務(wù)器事務(wù)以從客戶機(jī)到服務(wù)器的事務(wù)請(qǐng)求的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以對(duì)該事務(wù)請(qǐng)求的響應(yīng)的1st后繼數(shù)據(jù)分組作為界線(或終止)。用這個(gè)度量測(cè)量在客戶機(jī)到服務(wù)器事務(wù)請(qǐng)求的結(jié)尾和服務(wù)器到客戶機(jī)的實(shí)際事務(wù)響應(yīng)的開(kāi)始之間的總時(shí)間。
這個(gè)度量被看作是“最好-成果”測(cè)量。實(shí)現(xiàn)這個(gè)度量的系統(tǒng)產(chǎn)生“最好-成果”以便用特定應(yīng)用的邏輯事務(wù)定義劃定請(qǐng)求和響應(yīng)的開(kāi)始和結(jié)尾。對(duì)這個(gè)度量最低級(jí)的支持也使這個(gè)度量等效于CSExchangeResponseTimeEndToStart。
度量規(guī)范
CSTransactionResponseTimeStartToEnd定義這個(gè)度量包含有關(guān)為應(yīng)用事務(wù)測(cè)量的應(yīng)用級(jí)響應(yīng)時(shí)間的信息,該應(yīng)用事務(wù)是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶的。尤其CSTransactionResponseTimeStartToEndt測(cè)量在客戶機(jī)到服務(wù)器應(yīng)用事務(wù)的開(kāi)始和服務(wù)器到客戶機(jī)的它們的后繼事務(wù)響應(yīng)的結(jié)尾之間的響應(yīng)時(shí)間。
客戶機(jī)到服務(wù)器事務(wù)以從客戶機(jī)到服務(wù)器的事務(wù)請(qǐng)求的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以對(duì)該事務(wù)請(qǐng)求的響應(yīng)的1st后繼數(shù)據(jù)分組作為界線(或終止)。另一方向(例如,從服務(wù)器到客戶機(jī))上的事務(wù)響應(yīng)的結(jié)尾由下一個(gè)客戶機(jī)到服務(wù)器事務(wù)請(qǐng)求的1st數(shù)據(jù)之前的事務(wù)響應(yīng)的最后數(shù)據(jù)劃定。用這個(gè)度量測(cè)量在客戶機(jī)到服務(wù)器事務(wù)請(qǐng)求的開(kāi)始和服務(wù)器到客戶機(jī)的實(shí)際事務(wù)響應(yīng)的結(jié)尾之間的總時(shí)間。
這個(gè)度量被看作是“最好-成果”測(cè)量。實(shí)現(xiàn)這個(gè)度量的系統(tǒng)產(chǎn)生“最好-成果”以便用特定應(yīng)用的邏輯事務(wù)定義劃定請(qǐng)求和響應(yīng)的開(kāi)始和結(jié)尾。對(duì)這個(gè)度量最低級(jí)的支持也使這個(gè)度量等效于CSExchangeResponseTimeStartToEnd。
度量規(guī)范
SCTransactionResponseTimeStartToStart定義這個(gè)度量包含有關(guān)為應(yīng)用事務(wù)測(cè)量的應(yīng)用級(jí)響應(yīng)時(shí)間的信息,該應(yīng)用事務(wù)是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶的。尤其SCTransactionResponseTimeStartToStart測(cè)量在服務(wù)器到客戶機(jī)應(yīng)用事務(wù)的開(kāi)始和客戶機(jī)到服務(wù)器的它們的后繼事務(wù)響應(yīng)的開(kāi)始之間的響應(yīng)時(shí)間。
服務(wù)器到客戶機(jī)事務(wù)以從服務(wù)器到客戶機(jī)的事務(wù)請(qǐng)求的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以對(duì)該事務(wù)請(qǐng)求的響應(yīng)的1st后繼數(shù)據(jù)分組作為界線(或終止)。用這個(gè)度量測(cè)量在服務(wù)器到客戶機(jī)事務(wù)請(qǐng)求的開(kāi)始和客戶機(jī)到服務(wù)器的實(shí)際事務(wù)響應(yīng)的開(kāi)始之間的總時(shí)間。
這個(gè)度量被看作是“最好-成果”測(cè)量。實(shí)現(xiàn)這個(gè)度量的系統(tǒng)產(chǎn)生“最好-成果”以便用特定應(yīng)用的邏輯事務(wù)定義劃定請(qǐng)求和響應(yīng)的開(kāi)始和結(jié)尾。對(duì)這個(gè)度量最低級(jí)的支持也使該度量等效于SCExchangeResponseTimeStartToStart。
度量規(guī)范
SCTransactionResponseTimeEndToStart定義這個(gè)度量包含有關(guān)為應(yīng)用事務(wù)測(cè)量的應(yīng)用級(jí)響應(yīng)時(shí)間的信息,該應(yīng)用事務(wù)是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶的。尤其SCTransactionResponseTimeEndToStart測(cè)量在服務(wù)器到客戶機(jī)應(yīng)用事務(wù)的結(jié)尾和客戶機(jī)到服務(wù)器的它們的后繼事務(wù)響應(yīng)的開(kāi)始之間的響應(yīng)時(shí)間。
服務(wù)器到客戶機(jī)事務(wù)以從服務(wù)器到客戶機(jī)的事務(wù)請(qǐng)求的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以對(duì)該事務(wù)請(qǐng)求的響應(yīng)的1st后繼數(shù)據(jù)分組作為界線(或終止)。用這個(gè)度量測(cè)量在服務(wù)器到客戶機(jī)事務(wù)請(qǐng)求的結(jié)尾和客戶機(jī)到服務(wù)器的實(shí)際事務(wù)響應(yīng)的開(kāi)始之間的總時(shí)間。
這個(gè)度量被看作是“最好-成果”測(cè)量。實(shí)現(xiàn)這個(gè)度量的系統(tǒng)產(chǎn)生“最好-成果”以便用特定應(yīng)用的邏輯事務(wù)定義劃定請(qǐng)求和響應(yīng)的開(kāi)始和結(jié)尾。對(duì)這個(gè)度量最低級(jí)的支持也使該度量等效于SCExchangeResponseTimeEndtToStart。
度量規(guī)范
SCTransactionResponseTimeStartToEnd定義這個(gè)度量包含有關(guān)為應(yīng)用事務(wù)測(cè)量的應(yīng)用級(jí)響應(yīng)時(shí)間的信息,該應(yīng)用事務(wù)是給定的應(yīng)用以及特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶的。尤其SCTransactionResponseTimeStartToEnd測(cè)量在服務(wù)器到客戶機(jī)應(yīng)用事務(wù)的開(kāi)始和客戶機(jī)到服務(wù)器的它們的后繼事務(wù)響應(yīng)的結(jié)尾之間的響應(yīng)時(shí)間。
服務(wù)器到客戶機(jī)事務(wù)以從服務(wù)器到客戶機(jī)的事務(wù)請(qǐng)求的1st傳輸協(xié)議數(shù)據(jù)分組/單元(TPDU)開(kāi)始,并以對(duì)該事務(wù)請(qǐng)求的響應(yīng)的1st后繼數(shù)據(jù)分組作為界線(或終止)。另一方向(例如,從客戶機(jī)到服務(wù)器)上的事務(wù)響應(yīng)的結(jié)尾由下一個(gè)服務(wù)器到客戶機(jī)事務(wù)請(qǐng)求的1st數(shù)據(jù)之前的事務(wù)響應(yīng)的最后數(shù)據(jù)劃定。用這個(gè)度量測(cè)量在服務(wù)器到客戶機(jī)事務(wù)請(qǐng)求的開(kāi)始和客戶機(jī)到服務(wù)器的實(shí)際事務(wù)響應(yīng)的結(jié)尾之間的總時(shí)間。
這個(gè)度量被看作是“最好-成果”測(cè)量。實(shí)現(xiàn)這個(gè)度量的系統(tǒng)產(chǎn)生“最好-成果”以便用特定應(yīng)用的邏輯事務(wù)定義劃定請(qǐng)求和響應(yīng)的開(kāi)始和結(jié)尾。對(duì)這個(gè)度量最低級(jí)的支持也使該度量等效于SCExchangeResponseTimeStartToEnd。
度量規(guī)范
連接度量ConnectionEstablishment定義這個(gè)度量包含有關(guān)給定應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服備器和它的所有客戶機(jī)的傳輸級(jí)連接建立的信息。尤其ConnectionsEstablishment測(cè)量客戶機(jī)到服務(wù)器建立的連接數(shù)。該信息包含,實(shí)際包括●成功建立的傳輸連接數(shù)●建立的連接的準(zhǔn)備時(shí)間●同時(shí)建立的最大連接數(shù)●失敗的連接建立嘗試(由于超時(shí)或拒絕)數(shù)注意從這個(gè)度量和ConnectionGracefulTermination和ConnectionTimeoutTermination度量可以獲得“當(dāng)前建立的傳輸連接數(shù)”,方法如下當(dāng)前連接數(shù)==“成功建立數(shù)”-“正常終止數(shù)”-“超時(shí)終止數(shù)”連接的準(zhǔn)備時(shí)間被定義為在第一個(gè)傳輸級(jí)連接建立請(qǐng)求(即,SYN、CR-TPDU等)和在該連接上交換的第一個(gè)數(shù)據(jù)分組之間的時(shí)間差。
度量規(guī)范
ConnectionGracefulTermination定義這個(gè)度量包含有關(guān)正常終止的傳輸級(jí)連接的信息,該傳輸級(jí)連接是給定應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和所有它的客戶機(jī)的。尤其ConnectionsGracefulTermination以數(shù)量和總計(jì)連接持續(xù)時(shí)間測(cè)量正常終止的連接。該信息包含,實(shí)際上包括●正常終止的傳輸連接數(shù)●正常終止的連接的持續(xù)時(shí)間(生命期)度量規(guī)范
ConnectionTimeoutTermination定義這個(gè)度量包含有關(guān)非正常(例如,超時(shí))終止的傳輸級(jí)連接的信息,該傳輸級(jí)連接是給定的應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其ConnectionsTimeoutTermination以數(shù)量和總計(jì)連接持續(xù)時(shí)間測(cè)量以前建立并超時(shí)的連接。該信息包含,實(shí)際上包括●超時(shí)傳輸連接數(shù)●超時(shí)終止的連接的持續(xù)時(shí)間(生命期)這個(gè)度量的持續(xù)因子被看作是“最好-成果”測(cè)量。當(dāng)網(wǎng)絡(luò)實(shí)體實(shí)際探測(cè)到連接超時(shí)狀態(tài)時(shí)獨(dú)立的網(wǎng)絡(luò)監(jiān)控器不能真正的認(rèn)識(shí)到這一點(diǎn),因此當(dāng)連接超時(shí)真正發(fā)生時(shí)需要進(jìn)行推斷和估計(jì)。
度量規(guī)范
連接順序度量CSConnectionRetransmissions定義這個(gè)度量包含有關(guān)傳輸級(jí)連接健康狀態(tài)的信息,該傳輸級(jí)連接健康狀態(tài)是針對(duì)給定應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其CSConnectionRetransmissions測(cè)量在從客戶機(jī)到服務(wù)器的數(shù)據(jù)意義的PDU(分組)被進(jìn)行了重傳的傳輸中建立的連接的生命期中真實(shí)事件的數(shù)量。
注意由網(wǎng)絡(luò)監(jiān)控設(shè)備看到的重傳事件指示從存在網(wǎng)絡(luò)上獲得的TPDU的“副本”。
度量規(guī)范
SCConnectionRetransmisions定義這個(gè)度量包含有關(guān)傳輸級(jí)連接健康狀態(tài)的信息,該傳輸級(jí)連接健康狀態(tài)是針對(duì)給定應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其SCConnectionRetransmissions測(cè)量在從服務(wù)器到客戶機(jī)的數(shù)據(jù)意義的PDU(分組)被進(jìn)行了重傳的傳輸中建立的連接的生命期中真實(shí)事件的數(shù)量。
注意由網(wǎng)絡(luò)監(jiān)控設(shè)備看到的重傳事件指示從存在網(wǎng)絡(luò)上獲得的TPDU的“副本”。
度量規(guī)范
CSConnectionOutOfOrders定義這個(gè)度量包含有關(guān)傳輸級(jí)連接健康狀態(tài)的信息,該傳輸級(jí)連接健康狀態(tài)是針對(duì)給定應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其CSConnectionOutOfOrders測(cè)量在從客戶機(jī)到服務(wù)器的數(shù)據(jù)意義的PDU(分組)被檢測(cè)到是不連續(xù)的傳輸中建立的連接的生命期中真實(shí)事件的數(shù)量。
注意重傳(或復(fù)制)被看作是與無(wú)序不同的事件,并在CSConnectionRetransmissions中對(duì)其進(jìn)行單獨(dú)跟蹤。
度量規(guī)范
SCConnectionOutOfOrder定義這個(gè)度量包含有關(guān)傳輸級(jí)連接健康狀態(tài)的信息,該傳輸級(jí)連接健康狀態(tài)是針對(duì)給定應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其SCConnectionOutOfOrders測(cè)量在從服務(wù)器到客戶機(jī)的數(shù)據(jù)意義的PDU(分組)被檢測(cè)到是不連續(xù)的傳輸中建立的連接的生命期中真實(shí)事件的數(shù)量。
注意重傳(或復(fù)制)被看作是與無(wú)序不同的事件,并在SCConnectionRetransmissions中對(duì)其進(jìn)行單獨(dú)跟蹤。
度量規(guī)范
連接窗口度量CSConnectionWindow定義這個(gè)度量包含有關(guān)傳輸級(jí)連接窗口的信息,該窗口是針對(duì)給定的應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其CSConnectionWindow測(cè)量從客戶機(jī)到服務(wù)器建立的連接的生命期中傳輸級(jí)確認(rèn)的數(shù)量和它們的相對(duì)大小。
注意通過(guò)區(qū)別這個(gè)度量的確認(rèn)數(shù)和從客戶機(jī)到服務(wù)器的全部流量(見(jiàn)上面的CSTraffic)可以估計(jì)數(shù)據(jù)TPDU(分組)的數(shù)量。因?yàn)檫B接建立和終止TPDUS的緣故在這個(gè)計(jì)算中會(huì)有輕微的誤差,但應(yīng)該是無(wú)足輕重的。
度量規(guī)范
SCConnectionWindow定義這個(gè)度量包含有關(guān)傳輸級(jí)連接窗口的信息,該窗口是針對(duì)給定的應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其SCConnectionWindow測(cè)量從服務(wù)器到客戶機(jī)建立的連接的生命期中傳輸級(jí)確認(rèn)的數(shù)量和它們的相對(duì)大小。
注意通過(guò)區(qū)別這個(gè)度量的確認(rèn)數(shù)和從服務(wù)器到客戶機(jī)的全部流量(見(jiàn)上面的SCTraffic)可以估計(jì)數(shù)據(jù)TPDU(分組)的數(shù)量。因?yàn)檫B接建立和終止TPDUS的緣故在這個(gè)計(jì)算中會(huì)有輕微的誤差,但應(yīng)該是無(wú)足輕重的。
度量規(guī)范
CSConnectionFrozenWindows定義這個(gè)度量包含有關(guān)傳輸級(jí)協(xié)議窗口的信息,該窗口是針對(duì)給定應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其CSConnectionFrozenWinddow測(cè)量在建立的連接生命期中從客戶機(jī)到服務(wù)器有效確認(rèn)數(shù)據(jù)的傳輸級(jí)確認(rèn)的數(shù)量,但這些確認(rèn)●不能增加窗口上部邊緣●減小窗口上部邊緣度量規(guī)范
SCConnectionFrozenWindows定義這個(gè)度量包含有關(guān)傳輸級(jí)協(xié)議窗口的信息,該窗口是針對(duì)給定應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其SCConnectionFrozenWinddow測(cè)量在建立的連接生命期中從服務(wù)器到客戶機(jī)有效確認(rèn)數(shù)據(jù)傳輸級(jí)確認(rèn)的數(shù)量,但這些確認(rèn)●不能增加窗口上部邊緣●減小窗口上部邊緣度量規(guī)范
CSConnectionClosedWindows定義這個(gè)度量包含有關(guān)傳輸級(jí)協(xié)議窗口的信息,該窗口是針對(duì)給定應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其CSConnectionClosedWinddow測(cè)量在建立的連接生命期中從客戶機(jī)到服務(wù)器完全關(guān)閉確認(rèn)/順序窗口的傳輸級(jí)確認(rèn)的數(shù)量。
度量規(guī)范
SCConnectionClosedWindows定義這個(gè)度量包含有關(guān)傳輸級(jí)協(xié)議窗口的信息,該窗口是針對(duì)給定應(yīng)用和特定客戶機(jī)-服務(wù)器對(duì)或特定服務(wù)器和它的所有客戶機(jī)的。尤其SCConnectionClosedWinddow測(cè)量在建立的連接生命期中從服務(wù)器到客戶機(jī)完全關(guān)閉確認(rèn)/順序窗口的傳輸級(jí)確認(rèn)的數(shù)量。
度量規(guī)范
本發(fā)明的實(shí)施方案用必要的識(shí)別模式和狀態(tài)轉(zhuǎn)換程序自動(dòng)地產(chǎn)生流簽名。這來(lái)自根據(jù)解析規(guī)則分析分組并產(chǎn)生狀態(tài)轉(zhuǎn)換進(jìn)行查找。任意層上的應(yīng)用和協(xié)議都可以通過(guò)分組序列的狀態(tài)分析進(jìn)行識(shí)別。
注意本領(lǐng)域的技術(shù)人員應(yīng)該理解用來(lái)連接多種不同類型設(shè)備的計(jì)算機(jī)網(wǎng)絡(luò),這些設(shè)備包括像電話、“Internet”廣播、尋呼機(jī)等。這里所用的術(shù)語(yǔ)“計(jì)算機(jī)”包括所有這樣的設(shè)備,“計(jì)算機(jī)網(wǎng)絡(luò)”包括這樣的計(jì)算機(jī)的網(wǎng)絡(luò)。
雖然已經(jīng)根據(jù)目前的優(yōu)選實(shí)施方案對(duì)本發(fā)明進(jìn)行了描述,但可以理解這些內(nèi)容不應(yīng)該被解釋為對(duì)本發(fā)明的限制。不懷疑那些本領(lǐng)域的技術(shù)人員在閱讀了上面的內(nèi)容之后能夠明白多種不同的變更和修改。因此,意圖把權(quán)利要求表示為覆蓋所有的變更和修改并符合本發(fā)明的真正精神和范圍。
權(quán)利要求
1.一種處理器,可配置用來(lái)處理通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)上一個(gè)連接點(diǎn)的分組的內(nèi)容,該處理器包括(a)緩沖區(qū),用于接收通過(guò)該連接點(diǎn)的每個(gè)分組的至少部分內(nèi)容;(b)存儲(chǔ)器,包含該狀態(tài)處理器的指令集中的一個(gè)或多個(gè)指令;(c)連接到緩沖區(qū)的算術(shù)邏輯單元(ALU);(d)控制塊,連接到ALU和指令存儲(chǔ)器上;和(e)程序計(jì)數(shù)器,連接到指令存儲(chǔ)器和ALU,用于指示存儲(chǔ)器中要處理的下一個(gè)狀態(tài)處理器指令,其中ALU包括一個(gè)查找設(shè)備,它包含一個(gè)或多個(gè)用于在分組內(nèi)容中查找引用字符串的比較器。
2.根據(jù)權(quán)利要求1的處理器,其中狀態(tài)處理器實(shí)時(shí)處理通過(guò)該連接點(diǎn)的所有分組的內(nèi)容。
3.根據(jù)權(quán)利要求1的處理器,其中指令集包括調(diào)用ALU的查找設(shè)備從分組范圍內(nèi)的一個(gè)未知位置開(kāi)始在分組中查找指定字符串的指令。
4.根據(jù)權(quán)利要求1的處理器,其中查找設(shè)備在分組內(nèi)容中查找一組引用字符串中的任意一個(gè),并且其中指令集包括調(diào)用ALU的查找設(shè)備從分組范圍內(nèi)的一個(gè)未知位置開(kāi)始在分組中查找一個(gè)指定字符串的指令。
全文摘要
用于檢查通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)上一個(gè)連接點(diǎn)的分組的監(jiān)控器和方法。該方法包括從分組攔截設(shè)備接收分組并在分組上執(zhí)行解析/提取操作以創(chuàng)建包括該分組的選中部分的函數(shù)在內(nèi)的解析器記錄;查找包含以前遇到的對(duì)話流的流-入口的流-入口數(shù)據(jù)庫(kù)。該查找使用選中的分組部分并確定該分組是否是現(xiàn)有流。若該分組是現(xiàn)有流,則把該分組歸類為屬于找到的現(xiàn)有流,若該分組是新流,則在流-入口數(shù)據(jù)庫(kù)中為該新流存儲(chǔ)一個(gè)新的流-入口。若該分組是現(xiàn)有流,則更新該現(xiàn)有的流的流-入口。在流的任意階段,都維護(hù)它的狀態(tài),且執(zhí)行已經(jīng)識(shí)別出的狀態(tài)的任意狀態(tài)操作以促進(jìn)識(shí)別該流的過(guò)程。該方法就這樣實(shí)時(shí)檢查通過(guò)該連接點(diǎn)的每個(gè)分組直到確定與該流相關(guān)的應(yīng)用程序?yàn)橹埂?br>
文檔編號(hào)G06F17/30GK1578260SQ20041004354
公開(kāi)日2005年2月9日 申請(qǐng)日期2000年6月30日 優(yōu)先權(quán)日1999年6月30日
發(fā)明者R·S·迪茨, J·R·邁克斯納, A·A·科彭哈維, W·H·巴雷斯, H·A·薩爾基相, J·F·托爾格森 申請(qǐng)人:傾向探測(cè)公司