專利名稱:在數據網絡中處理數據的網絡設備和方法
技術領域:
本發(fā)明涉及處理網絡中的數據的網絡設備,更具體地,本發(fā)明涉及對能實現更高的處理速度和數據處理能力的網絡設備所接收的數據進行解析。
背景技術:
一個網絡可包括一個或多個網絡設備,例如以太網交換機,每個交換機包括幾個模塊,用于處理經過該設備傳輸的信息。具體來說,該設備可包括端口界面模塊,用于發(fā)送和接收網絡中的數據;存儲器管理單元(MMU),用于儲存數據直到被傳輸或進一步處理;以及解析模塊(resolution module),該模塊允許根據指令檢查和處理數據。所述決定模塊具有交換功能,用于確定應該控制哪個目的端口的數據。網絡設備上的某一端口可以是CPU端口,使設備能夠向外部交換機/路由控制實體或CPU發(fā)送信息以及從其接收信息。
多數網絡設備以以太網交換機方式工作,數據包從多個端口進入該設備,并對該數據包執(zhí)行交換和其它處理。其后,數據包通過MMU傳輸給一個或多個目的端口。MMU實現在不同的端口間共享包緩存器,同時為每個輸入口、輸出口和服務隊列級別提供資源保證。
然而,現有技術中的多數網絡設備不具備足夠的處理能力,并且經常相互鏈接在一起才能提供更大的靈活性和處理更大吞吐量的能力。將這些鏈接在一起的現有設備相結合也帶來了其他的問題,例如必須對這些設備編址,這些問題在單個網絡設備中是無需考慮的。當必須對多個類型的數據進行解析和解析時,就會出現問題,因此需要提供更強的解析和解析能力以應對可能發(fā)生的問題。
發(fā)明內容
根據本發(fā)明的一個方面,提供一種在數據網絡中處理數據的網絡設備,所述網絡設備包括多個端口,從數據網絡中接收數據以及將處理后的數據發(fā)送到所述數據網絡中;存儲器管理單元,控制并與位于所述網絡設備外部的存儲器通信,向所述存儲器存儲數據并從所述存儲器中重新獲取數據;多部件解析器,與所述多個端口和所述存儲器管理單元通信,對所述收到的數據進行解析;其中,所述多部件解析器包括幾個解析模塊,順序地對數據進行解析,其中每個模塊解析特定值,除第一模塊外的每個模塊從前一模塊接收在零偏移位置處具有所述特定值的解析后數據。
優(yōu)選地,所述幾個解析模塊包括4個解析模塊。
優(yōu)選地,所述4個解析模塊包括專門解析層2、層3和層4字段的解析模塊。
優(yōu)選地,所述幾個解析模塊由內部通信線路連接在一起,其中通過所述內部通信線路發(fā)送的信號,可請求跳過除第一模塊外的每個模塊的解析。
優(yōu)選地,所述多個端口中的一個包括較高速端口,且同所所述較高速端口接收的較高速數據由一個單獨的解析器進行解析。
優(yōu)選地,所述幾個解析模塊中的每個模塊可訪問一個搜索引擎。
優(yōu)選地,所述幾個解析模塊中的一個模塊專用于對收到的數據包進行解封裝。
根據本發(fā)明的一個方面,提供一種在網絡設備中處理數據的方法,所述方法包括如下步驟在網絡設備的多個端口上接收數據;由多部件解析器對所述數據進行解析;由存儲器管理單元將所述數據存儲在位于所述網絡設備外部的存儲器中;從所述存儲器中重新獲取所述收到的數據,并對所述收到的數據進行修改,如果需要,基于確定的屬性來生成處理后的數據;
將所述處理后的數據發(fā)送給所述多個端口中的一個輸出端口;其中,所述解析數據的步驟包括通過幾個解析模塊順序地解析數據,其中每個模塊用于解析特定值,除第一模塊外的每個模塊從前一模塊接收在零偏移位置處具有所述特定值的解析后數據。
優(yōu)選地,所述順序地解析所述數據的步驟包括通過4個解析模塊順序地解析所述數據。
優(yōu)選地,所述4個解析模塊包括專門用于解析層2、層3和層4字段的解析模塊。
優(yōu)選地,所述方法還包括由一個解析模塊通過內部通信線路從前一解析模塊接收發(fā)送的信號,以跳過由所述一個解析模塊執(zhí)行的解析。
優(yōu)選地,所述幾個解析模塊中的每個模塊可訪問一個搜索引擎。
優(yōu)選地,所述幾個解析模塊中的一個模塊專用于對收到的數據包進行解封裝。
根據本發(fā)明的一個方面,提供一種處理數據的網絡設備,所述網絡設備包括端口裝置,接收數據并向輸出端口發(fā)送處理后的數據;解析裝置,通過多部件解析器解析所述數據;存儲器裝置,通過存儲器管理單元將收到的數據存儲在位于網絡設備外部的存儲器中,并從其中重新獲取所存儲的數據;修改裝置,修改獲取的所存儲的數據,基于確定的屬性生成處理后的數據;其中,所述解析裝置包括通過幾個解析模塊順序地解析所述數據的裝置,其中每個模塊用于解析特定值,除第一模塊外的每個模塊從前一模塊接收在零偏移位置處具有所述特定值的解析后數據。
優(yōu)選地,所述順序地解析所述數據的裝置包括通過4個解析模塊順序地解析所述數據的裝置。
優(yōu)選地,所述網絡設備還包括查找裝置,對搜索表執(zhí)行查找搜索來確定所述接收的數據的屬性。
下面將結合附圖及實施例對本發(fā)明作進一步說明,附圖中圖1是依據本發(fā)明一個實施例的網絡設備的結構示意圖;圖2是依據本發(fā)明一個實施例的使用網絡設備端口進行通信的示意圖;圖3a是依據本發(fā)明一個實施例的網絡設備所使用的位于該網絡設備外部的共享存儲器的示意圖;圖3b是圖3a中所示的共享存儲器結構的單元緩存池的示意圖;圖4是由存儲器管理單元用于資源分配限制以確保對資源的公平訪問的緩存器管理機構的示意圖;圖5是依據本發(fā)明某些實施例的二階解析器的示意圖;圖6是依據本發(fā)明某些實施例的與互連端口一起使用的另一解析器的示意圖;圖7是依據本發(fā)明某些實施例的結果匹配器的示意圖;圖8是依據本發(fā)明一個實施例的輸出口仲裁器的配置示意圖;圖9是依據本發(fā)明一個實施例的多部分解析器(multi-part parser)的各級的示意圖。
具體實施例方式
以下結合優(yōu)選地實施例對本發(fā)明進行描述,其中的實例在附圖中進行了介紹。
圖1所示為實現本發(fā)明一個實施例的網絡設備例如交換芯片的示意圖。設備100包括端口界面模塊112和113、存儲器管理單元(MMU) 115、輸入口/輸出口模塊130和搜索引擎120。輸入口/輸出口模塊130解析接收的數據并基于已解析的數據利用搜索引擎120執(zhí)行查找。存儲器管理單元115的主要功能是即使在嚴重堵塞的情況下,也可以以可預測方法有效地管理單元緩存和數據包指針資源。通過這些模塊,會發(fā)生數據包修改,并且數據包可發(fā)送到合適的目的端口。
根據本發(fā)明的幾個實施例,設備100還可以包括一個內部交織高速端口(internal fabric high speed port)例如HiGigTM或高速端口108、一個或多個外部以太網端口109a-109x以及一個CPU端口110。高速端口108用于在系統(tǒng)中互連各種網絡設備,從而組成一個內部交換網,用于在外部源端口與一個或多個外部目的端口之間傳輸數據包。這樣,高速端口108在包括多個互相連接的網絡設備的系統(tǒng)外部是不可見的。CPU端口110用于發(fā)送信息給外部交換/路由控制實體或CUP,以及從其中接收信息。根據本發(fā)明的一個實施例,CUP端口110可視為外部以太網端口109a-109x中的一個。設備100通過CPU處理模塊111(如CMIC,其與連接設備100與外部CPU的PCI數據總線連接)與外部/片外CPU連接。
此外,搜索引擎模塊120可附加的搜索引擎模塊122、124和126組成,以執(zhí)行用于網絡設備100處理的數據的特征化和修改過程中的特定查找。同樣,輸入口/輸出口模塊130也包括有附加的模塊,用于對從內部交織高速端口134和其他端口138接收的數據進行解析,還包括有其它模塊132和136,用以轉送數據回網絡設備的端口。這兩個解析器將在下面給出詳細描述。
網絡信息通過外部以太網端口109a-109x進入和輸出設備100。具體來說,設備100中的信息流量由外部以太網資源端口路由至一個或多個唯一的目的以太網端口。在本發(fā)明的一個實施例中,設備100支持12個物理以太網端口109和一個高速端口108,其中每個物理以太網端口可以10/100/1000Mbps的數率工作,該高速端口108可以10Gbps或12Gbps的速率工作。
物理端口112的結構由圖2進一步示出。一連串的串行化/并行化模塊103發(fā)送和接收數據,其中每個端口接收的數據由端口管理器102A-L進行管理。該多個端口管理器具有定時信號發(fā)生器104和總線代理105以實現它們的操作。數據接收和傳送至端口信息庫,這樣便可以監(jiān)視流量。值得注意的是,高速端口108也具有近似的功能但不需要如此多的部件,因為只需對一個端口進行管理但該端口以更高的速度工作。
在本發(fā)明的一個實施例中,設備100使用共享存儲器結構,如圖3a-3b所示,MMU 115實現在不同端口間共享包緩存器,同時為每個輸入口、輸出口和與每個輸出口相關的服務隊列級提供資源保證。圖3a所示為本發(fā)明的共享存儲器結構的示意圖。具體來說,設備100的存儲器資源包括單元緩存池(CBP)存儲器302和傳輸隊列(XQ)存儲器304。CBP存儲器302是片外資源,某些實施例中,CBP存儲器由4個DRAM芯片306a-306d組成。根據本發(fā)明的一個實施例,每個DRAM芯片具有288Mbits的容量,CBP存儲器302的總容量為144Mbytes的原始存儲量。如圖3b所示,CBP存儲器302被分成多個256K 576字節(jié)的單元308a-308x,其中每個單元包括32字節(jié)的報頭緩存310、最高為512字節(jié)的數據包312和32字節(jié)的預留空間314。這樣的話,每個輸入包占用至少一個完整576字節(jié)的單元308。因此當輸入包括64字節(jié)的幀時,輸入包中為其預留有576字節(jié)的空間,盡管該576字節(jié)中只有64字節(jié)被該幀使用。
參看圖3a,XQ存儲器304包括一列數據包指針316a-316x,指向CBP存儲器302,其中不同的XQ指針316與每個端口相關聯(lián)。CBP存儲器302的單元計數和XQ存儲器304的數據包計數可基于輸入口、輸出口和服務級進行追蹤。這樣的話,設備100可基于一個單元和/或服務提供資源保證。
一旦數據包通過源端口109進入設備100,該數據包將被傳輸至解析器以進行處理。在處理過程中,每個輸入口和輸出口上的數據包共享系統(tǒng)資源302和304。在特定實施例中,兩個獨立的64字節(jié)突發(fā)數據包由本地端口和高速端口轉送至MMU。圖4所示為由MMU 115用于資源分配限制以確保對資源的公平訪問的緩存器管理機構的示意圖。MMU 115包括輸入口背壓機構404、行首(head of line)機構406和加權隨機早期檢測機構408。輸入口背壓機構404支持無損耗狀態(tài),并對所有輸入口公平地管理緩存器資源。行首機構406支持對緩存資源的訪問,同時優(yōu)化系統(tǒng)的吞吐量。加權隨機早期檢測機構408改善整體的網絡吞吐量。
輸入口背壓機構404使用數據包或單元計數器以追蹤每個輸入口使用的數據包或單元的數量。輸入口背壓機構404包括有用于一組8個分別設置的閥值的寄存器,和用于指定8個閥值中的哪一個被用于系統(tǒng)中一個輸入口的寄存器。該組閥值包括極限閥值412、放棄極限(discard limit)閥值414和重置極限閥值416。如果與輸入口數據包/單元的使用相關聯(lián)的計數器增加且超過放棄極限閥值414時,輸入口處的數據包將被丟棄?;谟糜谧粉檰卧?數據包數量的寄存器,可使用暫停流量控制來停止到達輸入口的信息流(此時該輸入口使用的緩存資源已超出了其公平共享的緩存資源),從而阻止來自違反規(guī)則的輸入口的信息量,并減輕由該輸入口造成的堵塞。
具體地,每個輸入口基于與該組閥值相關聯(lián)的輸入口背壓計數器一直追蹤以確定其是否處于輸入口背壓狀態(tài)。當該輸入口處于輸入口背壓狀態(tài)時,周期性地將計時器值為(0xFFFF)的暫停流量控制幀發(fā)送出該輸入口。當該輸入口不再處于輸入口背壓狀態(tài)時,將計時器值為(0x00)的暫停流量控制幀由該輸入口送出,并且再次允許信息流流動。如果輸入口當前不處于輸入口被壓狀態(tài),且數據包計數器的值超出極限閥值412,該輸入口的狀態(tài)將轉換為輸入口背壓狀態(tài)。如果輸入口處于輸入口背壓狀態(tài)且數據包計數器的值降至重置有限閥值416以下,則該端口的狀態(tài)將不再處于背壓狀態(tài)。
行首機構406支持對緩存資源的公平訪問,同時優(yōu)化系統(tǒng)內的吞吐量。行首機構406依靠丟棄的數據包來管理緩存資源避過改善總的系統(tǒng)吞吐量。根據本發(fā)明的一個實施例,行首機構406使用輸出口計數器和預定的閥值以追蹤每個輸出口和服務級的緩存器使用,并其后做出決定以放棄新到達輸入口并將發(fā)往特定已超額的輸出口/服務隊列級的數據包。行首機構406依據新到達的數據包的顏色支持不同的閥值。數據包可基于在輸入口模塊內執(zhí)行的計量和標記操作標記上顏色,并且MMU依靠數據包的不同顏色做出不同的操作。
根據本發(fā)明的一個實施例,行首機構406可在每個服務隊列級和所有端口(包括CPU端口)上進行獨立的設置和操作。行首機構406使用計數器追蹤XQ存儲器304和CBP存儲器302的使用,使用閾值支持CBP存儲器緩存302的靜態(tài)分配以及XQ存儲器緩存304的動態(tài)分配。放棄閥值422定義給CBP存儲器302中的所有單元,而不管標記的是什么顏色。當與一個端口相關的單元計數器的值達到放棄閥值422時,該端口被轉換至行首狀態(tài)。其后,如果其單元計數器的值下降至重置極限閥值424以下,則該端口將從行首狀態(tài)中轉換出來。
對于XQ存儲器304,為每個服務隊列級分配的固定的XQ緩存由XQ入口值(entry value)430a-430h定義。每個XQ入口值430a-430h對應為一個相關的隊列預留多少緩存器入口作出了定義。例如,如果100字節(jié)的XQ存儲器被指定給一個端口,分別與XQ入口430a-430d相關的第一四個服務隊列級分配的值為10字節(jié),而分別與XQ入口430e-430h相關的后四個隊列分配的值為5字節(jié)。
根據本發(fā)明的一個實施例,盡管一個隊列未使用所有的根據相關XQ入口值為其預留的緩存器入口,行首機構406可不將未使用的緩存器分配給另一個隊列。盡管如此,用于該端口的XQ緩存余下的未分配的40字節(jié)可由與該端口相關的所有服務隊列級所共享。一個特定服務隊列級可占用多少XQ緩存的共享池的限制可由XQ設置極限閥值432設定。這樣的話,設置極限閥值432可用來定義一個隊列可使用的緩存的最大數量,并用于防止一個隊列使用所有可用的XQ緩存。為確保XQ入口值430a-430h的總和不大于該端口可用的XQ緩存的總數量,并確保每個服務隊列級可以訪問由其入口值430所分配的XQ緩存的配額,使用端口動態(tài)計數寄存器來追蹤每個端口的XO緩存器的可用池,其中動態(tài)計數寄存器434一直追蹤該端口的可用共享XQ緩存的數量。動態(tài)計數寄存器434的初始值為與該端口相關的XQ緩存器的總數量減去XQ入口值430a-430h的數量之和后的值。當服務隊列級使用超出由其XQ入口值430分配的配額后繼續(xù)可用XQ緩存器時,動態(tài)計數寄存器434減1。相反地,當服務隊列級使用超出由其XQ入口值430分配的配額后釋放XQ緩存器時,動態(tài)計數寄存器434加1。
當一個隊列請求XQ緩存時,行首機構406確定該隊列使用的所有入口是否少于該隊列的的XQ入口值430,并且在使用的入口小于XQ入口值430的情況下同意該緩存請求。但是,如果使用的入口大于隊列的XQ入口值430,行首機構406將確定所請求的量是否小于可用的緩存器總量或小于由相關的設置極限閥值432設定給該隊列的最大量。不管數據包標記的顏色如何,設置極限閾值432實質上是該隊列的放棄閥值。這樣,該數據包的數據包計數值達到設置極限閥值432時,隊列/端口進入行首狀態(tài)。當行首機構406檢測到行首狀態(tài)時,發(fā)送更新狀態(tài),因此堵塞端口的數據包將被丟棄。
然而,因為滯后的原因,當行首機構306發(fā)送狀態(tài)更新時,MMU 115和該端口之間可能還有數據包正在傳輸中。在這種情況下,因為處于行首狀態(tài)MMU 115處出現丟棄數據包的情況。在本發(fā)明的一個實施例中,因為數據包的流水線操作,XQ指針的動態(tài)池減少預定的量。這樣,當可用XQ指針的數量等于或小于預定的數量時,該端口轉換至行首狀態(tài),并且一個更新狀態(tài)由MMU 115發(fā)送至該端口,以此降低可能被MMU 115丟棄的數據包的數量。為了跳出行首狀態(tài),該隊列的XQ數據包計數值必須下降到重置極限閥值436以下。
對于一個特定服務隊列級的XO計數器來說,不達到設置極限閥值432并且如果該端口的XQ資源被其它服務隊列級超額占用時仍將其數據包丟棄是可能的。在本發(fā)明的一個實施例中,還可以為含有特定顏色標記的數據包定義中間丟棄閥值438和439,其中每個中間丟棄閥值定義何時應將特定顏色的數據包丟棄。例如,中間丟棄閥值438可用于定義標記為黃色的數據包應何時被丟棄,中間丟棄閥值439用于定義標記為紅色的數據包應何時被丟棄。根據本發(fā)明的一個實施例,數據包可依照指定的優(yōu)先級分別標記為綠色、黃色或紅色。為確保每個顏色的數據包與每個隊列中的顏色分配相一致的進行處理,本發(fā)明的一個實施例包括有虛擬最大閥值440。虛擬最大閥值440等于未分配且可用的緩存數量除以隊列數量和當前使用的緩存器數量之和后的值。虛擬最大閥值440確保每個顏色的數據包以一定的比例進行處理。因此,如果可用未分配的緩存器數量小于某一特定隊列的設置極限閥值432,并且該隊列請求訪問所有可用未分配的緩存器,行首機構406為該隊列計算虛擬最大閥值440,并且根據為每個顏色定義的比率處理一定比例量的相關顏色的數據包。
為保存寄存器空間,XQ閥值可表示為壓縮形式,其中每個單元代表一組XQ入口。組的大小取決于與某個特定的輸出口/服務隊列級相關的XQ緩存器的數量。
加權隨機早期檢測機構408是一個隊列管理機構,在XQ緩存器304用盡前基于或然算法預清空數據包。加權隨機早期檢測機構408因此可用于優(yōu)化整個網絡的吞吐量。加權隨機早期檢測機構408包括一個平均值統(tǒng)計值,用以追蹤每個隊列的長度,并基于為隊列定義的丟棄說明(drop profile)丟棄數據包。該丟棄說明定義了給定特定平均隊列大小情況下的丟棄可能性。根據本發(fā)明的一個實施例,加權隨機早期檢測機構408可基于服務隊列級和數據包定義單獨的說明。
如圖1所示,MMU 115從輸入口/輸出口模塊130接收數據包以進行存儲。如上所述,輸入口/輸出口模塊130包括一個二級解析器,該部分在圖5中示出。如上所述,數據在網絡設備的端口501處接收。數據也經由CMIC 502接收,其中該數據將通過輸入CMIC接口503。該接口用于將CMIC數據從CMIC-bus格式轉換為輸入口數據格式。在一個實施例中,數據從45位轉換為172位格式,這樣后面的格式包括128位的數據、20位的控制和可能的24位的高速報頭。其后,數據以64位突發(fā)串的形式發(fā)送至輸入口仲裁器504。
輸入口仲裁器504從端口501和輸入CMIC接口503接收數據,并基于時分多路仲裁技術對這些輸入進行多路復用。其后,數據被傳送至MMU 510,在MMU 510處,所有高速報頭被移除,并且被設置為MMU接口格式。然后檢查數據包屬性,例如,端對端、中斷貝努里處理(Interupted Bernoulli Process,IBP)或行首(HOL)數據包。此外,數據的頭128個字節(jié)被監(jiān)聽,并且高速報頭被傳至解析器ASM 525。如果接收到的突發(fā)數據包含端點標志,則CRC結果和數據包長度將被發(fā)送至結果匹配器515。而且,數據包的長度由突發(fā)串長度估測得到,并生成16位的數據包ID以供調試用。
解析器ASM 525將每個突發(fā)串4個循環(huán)的64數據突發(fā)串轉換為每個突發(fā)串8個循環(huán)的128字節(jié)突發(fā)串。128字節(jié)的突發(fā)數據被同時轉送給隧道解析器530和解析器FIFO 528以保持相同的數據包順序。隧道解析器530確定是否采用了任何類型的隧道封裝,包括MPLS和IP隧道效應。此外,該隧道解析器還檢查外部和內部標簽。通過解析處理,將會話初始化協(xié)議(SIP)提供給基于子網的VLAN,其中,如果數據包為地址解析協(xié)議(ARP)、反向ARP協(xié)議(RARP)或IP數據包時,將發(fā)生SIP解析?;谠粗欣^線映射表,還可以創(chuàng)建中繼線端口柵極的ID(trunk port grid ID),除非沒有中繼線(trunk)或如果該中繼線ID可從高速報頭中獲得。
隧道解析器530與隧道檢查器531一起工作。隧道檢驗器檢查IP報頭的校驗和(checksum)以及UDP隧道效應和IPv4之上IPv6數據包(IPv6 over IPv4packets)的特性。隧道解析器530利用搜索引擎520通過預定義的表確定隧道類型。
解析器FIFO 528存儲128字節(jié)的數據包報頭和12字節(jié)的高速報頭,該高速報頭由深度解析器540再次進行解析。當搜索引擎完成一次搜索并準備進行深層搜尋時,報頭字節(jié)被存儲。也將維持其它的屬性,例如數據包長度、高速報頭狀態(tài)和數據包ID。深度解析器540提供三種不同類型的數據,包括“流過”的搜索引擎520的搜索結果、內部解析結果和高速模塊報頭。特定的數據包類型將被確定并傳送至搜索引擎。深度解析器540讀取來自解析器FIFO的數據,對預定義的字段進行解析。搜索引擎基于傳送至該搜索引擎的值提供查找結果,其中將對數據包ID進行檢查以維持數據包順序。
深度解析器540還使用協(xié)議檢查器541來檢查內部IP報頭的校驗和,檢查服務攻擊屬性的否決、高速模塊報頭內的錯誤,并執(zhí)行martian校驗。該深度解析器還與字段處理器解析器542一起工作,以解析預定義字段和用戶定義的字段。預定義字段從深度解析器中接收。這些字段包括MAC目的地址、MAC源地址、內部和外部標簽、以太類型、IP目的和源地址、服務類型、IPP、IP標記、TDS、TSS、TT1、TCP標記和流標簽。用戶定義的字段也是可解析的,最高長度為128位。
如上所述,高速端口上接收的數據與其它本地端口上接收的數據是分開單獨處理的。如圖1所示,高速端口108具有自有的緩存器,數據從該端口流入其自有的解析器134內。高速解析器的更多細節(jié)如圖6所示,其結構與圖5中所示二級解析器相似,但具有一些差別。高速端口601接收的數據被轉送至高速端口匯編器604。該匯編器以64字節(jié)突發(fā)串的形式接收該數據和高速報頭,與用于本地端口中的格式相似。所述數據以MMU接口格式被發(fā)送至MMU610而未帶有所述高速報頭。
所述數據的頭128個字節(jié)被監(jiān)聽并且與高速報頭一起發(fā)送至深度解析器640。與二級解析器相似的是,端對端信息被檢查,并在邊頻帶內發(fā)送該解析結果。同樣近似的是,對CRC和數據包長度進行檢查,并將檢查結果發(fā)送給結果匹配器615。此外,生成16位的數據包ID以用于調試和追蹤數據包的流。
深度解析器640的高速版本是二級深度解析器540的子設備,并執(zhí)行相似的功能。然而,搜索引擎620中沒有信息經過,它不能跳過MPLS報頭,并且只解析有效載荷,不發(fā)送深度數據給搜索引擎。從功能上來說,FP解析器642的高速版本與上面討論的FP解析器542相同。
結果匹配器在圖7中詳細示出。值得注意的是,結果匹配器可被普遍的應用于由多個解析器共用,或者每個解析器使用其自有的結果匹配器。在圖中所示的實施例中,兩種類型的端口710和720接收數據并通過輸入口匯編器715和輸入口仲裁器725的操作轉送一定數值給結果檢查器。該數值包括端口數、EOF的存在、CRC和數據包長度。結果匹配器以一系列FIFO工作,通過使用搜索引擎705來匹配搜索結果?;诿總€端口,標簽和MIB事件與數據包長度和CRC狀態(tài)相匹配。對于網絡端口來說,每8個周期提供一次搜索結果,對于高速端口來說,每8個周期提供一次搜索結果。如果存在延時小于輸入數據包時間的情況,這種結構使得搜索結果存儲在每個端口的結果匹配器內,當搜索延時比輸入數據包時間短時,這種結構允許等待數據包結果的終端出現。
在對接收的數據進行解析和評估后,依據接收的信息做出轉送決定。該轉送決定通常為數據包應發(fā)送給什么目的端口,盡管該決定也可為放棄數據包或通過CMIC 111轉送數據包給CPU或其它控制器。在輸出口,基于網絡設備的解析和評估,該數據包被修改。如果輸出口為高速端口,此修改包括標記、報頭信息的修改或添加模塊報頭。該修改以單元為基礎進行,以避免在轉送數據包時產生延時。
圖8所示為用于本發(fā)明的輸出口仲裁器的配置示意圖。如圖8所示,MMU115還包括調度器802,為與每個輸出口相關的8個服務隊列級804a-804h提供仲裁,從而提供最小和最大帶寬保證。值得注意的是,此處介紹的是8級服務,但是也支持其他服務級別模式。調度器802與一組最小和最大計量機構806a-806h集成在一起,其中每個計量機構監(jiān)控每個服務級的流量以及每個輸出口的流量。計量機構806a-806h支持流量調整功能(traffic shaping function),并基于每個服務隊列級和/或輸出口保證其最小帶寬要求,其中調度器802的調度決定通過流量調整機構806a-806h與一組控制掩碼一起來配置,該控制掩碼用于修改調度器802如何使用流量調整機構806a-806h。
如圖8所示,最小和最大計量機構806a-806h監(jiān)控基于每個服務隊列級以及基于每個輸出口監(jiān)控流量。最大和最小帶寬計量806a-806h用以反饋狀態(tài)信息給調度器802,調度器802響應該狀態(tài)信息,修改其整個服務隊列804上的服務順序。因此,網絡設備100可使系統(tǒng)銷售商能夠通過配置服務隊列級804來執(zhí)行多個服務模型,從而支持明確的最小和最大帶寬保證。在本發(fā)明的一個實施例中,計量機構806a-806h基于服務隊列級檢測信息流量,提供一個服務隊列級的流量是否高于或低于最小和最大帶寬要求的狀態(tài)信息,并傳輸該信息至調度器802,調度器802使用該計量信息修改其調度決定。這樣的話,計量機構806a-806h協(xié)助將服務隊列級804分割成一組未符合最小帶寬要求的隊列、一組符合其最小帶寬但不符合最大帶寬要求的隊列以及一組已超出其最大帶寬要求的隊列。如果一個隊列屬于該組不符合其最小帶寬要求的隊列,且該隊列有數據包,調度器802將根據配置的調度規(guī)則對該隊列進行服務。如果一個隊列屬于該組不符合其最小帶寬要求但沒有超過其最大帶寬要求的隊列,且該隊列中有數據包,調度器802將根據配置的調度規(guī)則對該隊列進行服務。如果一個隊列屬于該組超出其最大帶寬要求的隊列或者如果該隊列為空,調度器802將不對該隊列進行服務。
最小和最大帶寬計量機構806a-806h可使用簡單的漏斗桶機構來實現,追蹤一個服務隊列級804是否占用了其最小或最大帶寬。每個服務級804的最小和最大帶寬的范圍設置在64Kbps至16Gbps之間,并以64Kbps遞增。該漏斗桶機構具有可設置數量的令牌“泄漏”桶,每個桶以可配置的比率與隊列804a-804h中一個相關聯(lián)。在計量服務隊列級804的最小帶寬時,由于數據包進入服務隊列級別804,與該數據包大小成比例的一定數量的令牌被添加到對應的桶中,具有桶最高閥值的最高限度。該漏斗桶機構包括有刷新接口和定義每次刷新時間單元內移除多少個令牌的最小帶寬。最小閥值用于指出數據流是否滿足至少其最小比率,填充閥值(fill threshold)用于指出漏斗桶中有多少個令牌。當填充閥值上升超過最小閥值,一個指出該數據流已滿足其最小帶寬要求的標志被設定為真值。當填充閥值下降低于最小閥值,該標志被設定為偽值。
在計量機構806a-806h指出規(guī)定的最大帶寬已超出高閥值后,調度器802終止對該隊列的服務,且該隊列被分入已超出最大帶寬要求的隊列組中。然后,發(fā)送一個標志以指出該隊列已超出其最大帶寬。隨后,當其填充閥值下降至高閥值以下且指示其超出最到帶寬的標志被重置時,該隊列僅從調度器802接收服務。
最大速率計量機構808i用以指出某個端口規(guī)定的最大帶寬已被超出,并在最大帶寬被超出時,以與機構806a-806h相同的方式工作。根據本發(fā)明的一個實施例,基于隊列和端口的最大計量機構通常對隊列804或一個端口是否包括在調度仲裁中產生影響。這樣的話,最大計量機構僅對調度器802有流量限制作用。
另一方面,服務隊列級804的最小計量與調度器802具有更復雜的交互操作。在本發(fā)明的一個實施例中,調度器802支持各種調度規(guī)則,來模擬加權公平隊列方案的帶寬共享性能。該加權公平隊列方案為基于數據包的公平隊列方案的加權版本,被定義為一種用于提供數據包的“基于位循環(huán)復用”調度的方法。這樣,可對數據包進行調度,以基于該數據包的傳送時間訪問輸出口,該時間在調度器能夠提供基于位循環(huán)復用服務時計算得出。相關的加權字段將影響調度器如何使用最小計量機構的具體細節(jié),其中該調度器試圖提供最小帶寬保證。
在本發(fā)明的一個實施例中,最小帶寬保證是一個相對的帶寬保證,其中一個相關字段決定了調度器是否將會把最小帶寬計量設置視為一個相對的或絕對的帶寬保證的規(guī)格。如果設置了相關字段,調度器將把最小帶寬806設置視為一個相對帶寬規(guī)格。然后調度器802嘗試提供在積壓隊列804上共享的相對帶寬。
圖9所示為多部件解析器的功能示意圖。在本發(fā)明的某些實施例中,該多部件解析器結合在深度解析器540中。該多部件解析器由多個解析模塊910、920等構成,其中每個模塊專門解析輸入數據包的特定片段。每個模塊都從零偏移量開始進行解析,這樣一來,一個模塊輸出的解析后的片段在提供給下一個模塊時,下一模塊想要解析的字段從零位開始。因此,如果一個模塊專用于解析隧道值,下一模塊專用于解析層3(layer 3)字段,那么前一模塊將解析其自己的字段,然后將解析后的片段提供給下一模塊而沒有進行隧道封裝(tunnel encapsulation)。由于模塊解析是累積進行的,隨后的模塊無需搜索數據包的報頭來查找相關字段。此外,這還可以使各個模塊的功能以流水線形式實現。
在特定的實施例中,在步驟901,將數據提供給第一級910來解析層2(layer2)的值,然后在步驟915,將解析后的片段提供給第二級920來解析隧道值,包括IP或MPLS值。此后,第三級930解析層3(layer 3)的值,第四級940解析層4(layer 4)的值。經過最后一級后,在步驟975,相關的和/或所請求的字段值將輸出以進行搜索、修改或替換。此外,還可使用其他解析模塊,包括解封裝引擎。但是,模塊的數量沒有限制為4個或5個,但所使用的模塊的數量與總體的解析要求有關。
在圖9中還示出了模塊之間的通信918。模塊間的這些交互操作使得該多部件解析器可對特定的環(huán)境作出響應??赡苡玫降囊粋€特定通信是在不需要使用的情況下跳過下一模塊的解析操作。一個典型的例子是,如果最初決定應該對該數據包片段執(zhí)行解封裝,但在另一處理步驟中,發(fā)現該數據包不是IP隧道(IP tunnel),而是IP上的IP(IP over IP),因此只需針對IPv4值對該數據包片段進行解析。
以上是對本發(fā)明具體實施例的描述。很明顯,可對本發(fā)明上述描述的實施例做其他的變化和修改,同樣能達到本發(fā)明的某些或所有優(yōu)點。因此,本發(fā)明的權利要去說明了本發(fā)明的精神實質和范圍,覆蓋了所有對本發(fā)明上述實施例的變化和修改情況。
本申請引用并要求申請日為2005年2月18的美國臨時專利申請No.60/653953的優(yōu)先權。
權利要求
1.一種在數據網絡中處理數據的網絡設備,所述網絡設備包括多個端口,從數據網絡中接收數據以及將處理后的數據發(fā)送到所述數據網絡中;存儲器管理單元,控制并與位于所述網絡設備外部的存儲器通信,向所述存儲器存儲數據并從所述存儲器中重新獲取數據;多部件解析器,與所述多個端口和所述存儲器管理單元通信,對所述收到的數據進行解析;其中,所述多部件解析器包括幾個解析模塊,順序地對數據進行解析,其中每個模塊解析特定值,除第一模塊外的每個模塊從前一模塊接收在零偏移位置處具有所述特定值的解析后數據。
2.根據權利要求1所述的網絡設備,其特征在于,所述幾個解析模塊包括4個解析模塊。
3.根據權利要求2所述的網絡設備,其特征在于,所述4個解析模塊包括專門解析層2、層3和層4字段的解析模塊。
4.根據權利要求1所述的網絡設備,其特征在于,所述幾個解析模塊由內部通信線路連接在一起,其中通過所述內部通信線路發(fā)送的信號,可請求跳過除第一模塊外的每個模塊的解析。
5.一種在網絡設備中處理數據的方法,所述方法包括如下步驟在網絡設備的多個端口上接收數據;由多部件解析器對所述數據進行解析;由存儲器管理單元將所述數據存儲在位于所述網絡設備外部的存儲器中;從所述存儲器中重新獲取所述收到的數據,并對所述收到的數據進行修改,如果需要,基于確定的屬性來生成處理后的數據;將所述處理后的數據發(fā)送給所述多個端口中的一個輸出端口;其中,所述解析數據的步驟包括通過幾個解析模塊順序地解析數據,其中每個模塊用于解析特定值,除第一模塊外的每個模塊從前一模塊接收在零偏移位置處具有所述特定值的解析后數據。
6.根據權利要求5所述的方法,其特征在于,所述順序地解析所述數據的步驟包括通過4個解析模塊順序地解析所述數據。
7.根據權利要求6所述的方法,其特征在于,所述4個解析模塊包括專門用于解析層2、層3和層4字段的解析模塊。
8.一種處理數據的網絡設備,所述網絡設備包括端口裝置,接收數據并向輸出端口發(fā)送處理后的數據;解析裝置,通過多部件解析器解析所述數據;存儲器裝置,通過存儲器管理單元將收到的數據存儲在位于網絡設備外部的存儲器中,并從其中重新獲取所存儲的數據;修改裝置,修改獲取的所存儲的數據,基于確定的屬性生成處理后的數據;其中,所述解析裝置包括通過幾個解析模塊順序地解析所述數據的裝置,其中每個模塊用于解析特定值,除第一模塊外的每個模塊從前一模塊接收在零偏移位置處具有所述特定值的解析后數據。
9.根據權利要求8所述的網絡設備,其特征在于,所述順序地解析所述數據的裝置包括通過4個解析模塊順序地解析所述數據的裝置。
10.根據權利要求8所述的網絡設備,其特征在于,所述網絡設備還包括查找裝置,對搜索表執(zhí)行查找搜索來確定所述接收的數據的屬性。
全文摘要
本發(fā)明公開了一種在數據網絡中處理數據的網絡設備,包括多個端口,從數據網絡中接收數據以及將處理后的數據發(fā)送到所述數據網絡中;存儲器管理單元,控制并與位于所述網絡設備外部的存儲器通信,向所述存儲器存儲數據并從所述存儲器中重新獲取數據;多部件解析器,與所述多個端口和所述存儲器管理單元通信,對所述收到的數據進行解析;其中,所述多部件解析器包括幾個解析模塊,順序地對數據進行解析,其中每個模塊解析特定值,除第一模塊外的每個模塊從前一模塊接收在零偏移位置處具有所述特定值的解析后數據。
文檔編號H04L12/56GK1832456SQ20061000418
公開日2006年9月13日 申請日期2006年2月20日 優(yōu)先權日2005年2月18日
發(fā)明者丹尼斯·蘇吉克·李 申請人:美國博通公司