TW201603533A - 減少彈性解析器中延遲方法及裝置 - Google Patents
減少彈性解析器中延遲方法及裝置 Download PDFInfo
- Publication number
- TW201603533A TW201603533A TW104110830A TW104110830A TW201603533A TW 201603533 A TW201603533 A TW 201603533A TW 104110830 A TW104110830 A TW 104110830A TW 104110830 A TW104110830 A TW 104110830A TW 201603533 A TW201603533 A TW 201603533A
- Authority
- TW
- Taiwan
- Prior art keywords
- parser
- engine
- packet
- route
- incoming packet
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
用於減少彈性解析器中的延遲的裝置的實施例涉及一種對該解析器內的每個解析器引擎進行最佳化的實施方式。封包進入該解析器。如果需要處理,則解析器引擎中的每個解析器引擎處理該封包。否則,該解析器引擎簡單地將該封包轉發通過而不處理該封包,藉此減少延遲。每個解析器引擎包括記憶體。該記憶體儲存旁路數據和狀態資訊,該狀態資訊指示了針對這個封包的解析是否完成並且因此後續的解析器引擎不需要進一步的處理。每個解析器引擎還包括計數器,該計數器每當封包進入該解析器引擎時遞增,並且每當封包離開該解析器引擎時遞減。封包基於解析器引擎的計數器以及該封包的狀態資訊來旁路該解析器引擎。
Description
本發明涉及網路封包。特別地,本發明涉及一種減少彈性解析器中的延遲的方法及其裝置。
第一圖說明了解析器100的方塊圖。如第一圖所示,解析器100包括串聯放置的N個解析器引擎105。串聯放置的該N個解析器引擎105允許解析器100以高線路速率進行解析。進入解析器100的網路封包由這N個解析器引擎105中的每個解析器引擎處理。每個解析器引擎105具有經過它的某個延遲。因此,如果每個解析器引擎105具有T個週期的延遲,則經過解析器100存在總延遲N*T個時鐘。行進經過解析器100的每個網路封包將招致這個固定的延遲。然而,在網路中,並不是所有的封包都要求由該多個解析器引擎105所提供的所有處理。
用於減少彈性解析器中的延遲的裝置的實施例涉及一種對該解析器內的每個解析器引擎進行最佳化的實施方
式。封包進入該解析器。如果需要處理,則解析器引擎中的每個解析器引擎處理該封包。否則,該解析器引擎簡單地將該封包轉發通過而不處理該封包,由此減少了延遲。每個解析器引擎包括記憶體。該記憶體儲存旁路數據和狀態資訊,該狀態資訊指示了針對這個封包的解析是否完成並且因此後續的解析器引擎不需要進一步的處理。每個解析器引擎還包括計數器,該計數器每當封包進入該解析器引擎時遞增,並且每當封包離開該解析器引擎時遞減。封包基於解析器引擎的計數器以及該封包的狀態資訊來旁路該解析器引擎。
在一個方面中,提供了一種實施解析器引擎的方法。該方法包括:接收資料,其中該資料包括傳入封包以及與該傳入封包有關的狀態資訊;以及確定該狀態資訊是否指示第一狀態。在一些實施例中,該第一狀態是解析完成。
該方法還包括:基於該狀態資訊指示該第一狀態的確定,當該解析器引擎當前沒有正在處理一個或多個其他封包時,經由該解析器引擎的第一路由來傳輸該資料。在一些實施例中,該第一路由是旁路路由,該旁路路由用以通過該解析器引擎來發送該傳入封包而不被該解析器引擎處理。
在一些實施例中,該方法還包括:基於該狀態資訊指示該第一狀態的確定,當該解析器引擎當前正在處理一個或多個其他封包時,等待經由該解析器引擎的該第一路由來傳輸該資料。
在一些實施例中,該方法還包括:基於該狀態資訊沒有指示該第一狀態的確定,經由該解析器引擎的第二路由
來傳輸該傳入封包。在一些實施例中,該第二路由是用以處理該傳入封包的處理路由。在一些實施例中,該方法還包括:在該解析器引擎處理該傳入封包之後,更新該狀態資訊。
在一些實施例中,該方法還包括:維持計數器,其中該計數器在每次封包進入該解析器引擎時遞增,並且在每次封包離開該解析器引擎時遞減。在一些實施例中,該計數器被用來確定該解析器引擎是否正在忙於處理其他封包。
在另一方面中,提供了一種實施解析器引擎的方法。該方法包括:維持每源埠的計數器以及接收資料,其中該資料包括傳入封包以及與該傳入封包有關的狀態資訊。
該方法還包括:確定該狀態資訊是否指示第一狀態。在一些實施例中,該第一狀態是解析完成。
該方法還包括:基於該狀態資訊指示該第一狀態的確定,當該解析器引擎當前沒有正在處理也利用與識別該傳入封包利用的相同埠識別的一個或多個其他封包時,經由該解析器引擎的第一路由來傳輸該資料。在一些實施例中,該第一路由是旁路路由,該旁路路由用以通過該解析器引擎來發送該傳入封包而不被該解析器引擎處理。
在一些實施例中,該方法還包括:基於該狀態資訊指示該第一狀態的確定,當該解析器引擎當前正在處理也利用與識別該傳入封包利用的相同埠識別的一個或多個其他封包時,等待經由該解析器引擎的該第一路由來傳輸該資料。
在一些實施例中,該方法還包括:基於該狀態資訊沒有指示該第一狀態的確定,經由該解析器引擎的第二路由
來傳輸該傳入封包。在一些實施例中,該第二路由是用以處理該傳入封包的處理路由。在一些實施例中,該方法還包括:在經由該第二路由傳輸該傳入封包之前,遞增與識別該傳入封包利用的源埠相關聯的計數器。在一些實施例中,該方法還包括:在經由該第二路由傳輸該傳入封包之後,確定對該傳入封包的解析是否完成並且遞減與識別該傳入封包利用的源埠相關聯的計數器。
在又另一方面中,提供了一種解析器的方法。該解析器包括一連串的多個解析器引擎。該方法包括:通過該多個解析器引擎中的每個解析器引擎來發送資料,其中該資料包括傳入封包以及該傳入封包的狀態資訊。
該方法還包括:該多個解析器引擎中的每個解析器引擎基於發生的第一事件和第二事件,來確定是否通過該解析器引擎來發送該資料。在一些實施例中,該第一事件是處理完成,並且該第二事件是該解析器引擎當前沒有正在忙於處理一個或多個其他封包。
該方法還包括:該多個解析器引擎中的每個解析器引擎基於發生的第三事件,來確定是否處理該傳入封包。在一些實施例中,該第三事件是處理未完成。
在一些實施例中,該方法還包括:該多個解析器引擎中的每個解析器引擎維持計數器,其中該計數器在每次封包進入該解析器引擎時遞增,並且在每次封包離開該解析器引擎時遞減。
在一些實施例中,該方法還包括:該多個解析器引
擎中的每個解析器引擎維持每源埠的計數器,其中與該源埠相關聯的計數器在利用源埠識別的封包每次進入該解析器引擎時遞增,並且在利用源埠識別的封包每次離開該解析器引擎時遞減。
在又另一方面中,提供了一種解析器。該解析器包括多個解析器引擎。在一些實施例中,解析器引擎中的每個解析器引擎是無狀態的。通常,每個解析器引擎包括:處理路由,其中該處理路由處理傳入封包;以及旁路路由,其中該旁路路由通過該解析器引擎來發送該傳入封包而不被該解析器引擎處理。取決於該傳入封包的狀態和該解析引擎的狀態,而經由該處理路由或者該旁路路由來傳輸進入該解析器引擎的傳入封包。
在一些實施例中,當該傳入封包的該狀態是解析未完成時,經由處理路由來傳輸該傳入封包,並且該狀態在此後被更新。
在一些實施例中,當該傳入封包的該狀態是解析完成並且該解析引擎的該狀態是當前沒有正在處理一個或多個其他封包時,經由旁路路由來傳輸該傳入封包。
在一些實施例中,當該傳入封包的該狀態是解析完成並且該解析引擎的該狀態是當前正在處理一個或多個其他封包時,在該解析器引擎結束處理該一個或多個其他封包之後,經由該旁路路由來傳輸該傳入封包。
在一些實施例中,當該傳入封包的該狀態是解析完成並且該解析引擎的該狀態是當前沒有正在處理利用與識別
該傳入封包利用的相同源埠識別的一個或多個其他封包時,經由旁路路由來傳輸該傳入封包。
在一些實施例中,當該傳入封包的該狀態是解析完成並且該解析引擎的該狀態是當前正在處理利用與識別該傳入封包利用的相同源埠識別的一個或多個其他封包時,在該解析器引擎結束處理該一個或多個其他封包之後,經由旁路路由來傳輸該傳入封包。
在一些實施例中,每個解析器引擎還包括計數器,其中該計數器在每次封包進入該解析器引擎時遞增,並且在每次封包離開該解析器引擎時遞減。可替換地,每個解析器引擎還包括每埠的計數器,其中該計數器在利用相關聯的埠識別的封包每次進入該解析器引擎時遞增,並且在利用相關聯的埠識別的封包每次離開該解析器引擎時遞減。
在又另一方面中,提供了一種解析器。該解析器包括多個解析器引擎。通常,每個解析器引擎包括記憶體,其中該記憶體儲存封包的旁路資訊。每個解析器引擎還包括:至少一個計數器,用以保持對當前正在被該解析器引擎處理的封包的數量的追蹤。每個解析器引擎還包括處理路由,其中該處理路由處理封包。每個解析器引擎還包括旁路路由,其中該旁路路由通過該解析器引擎來發送封包而不被該解析器引擎處理,其中取決於該封包的狀態和該解析引擎的狀態,而經由該處理路由或者該旁路路由來傳輸進入該解析器引擎的封包。在一些實施例中,該解析器引擎的該狀態取決於該至少一個計數器。
在一些實施例中,由TCAM和SRAM來形成該旁路路由,其中該SRAM儲存旁路數據和該封包的狀態。
100‧‧‧解析器
105‧‧‧解析器引擎
200‧‧‧解析器
205a‧‧‧SKPU
205b‧‧‧KPU
300‧‧‧解析器引擎
305‧‧‧TCAM
310‧‧‧SRAM
400‧‧‧方法
405-415‧‧‧步驟
500‧‧‧方法
505-520‧‧‧步驟
600‧‧‧方法
605-615‧‧‧步驟
根據如在附圖中所說明的本發明的示例實施例的以下更加特定的描述,前述內容將是明顯的,在附圖中,貫穿不同的視圖,相似的參考字元指代相同的部分。這些示圖不一定按比例繪製,替代地,重點在於說明本發明的實施例。
第一圖說明了一個解析器的方塊圖。
第二圖說明了根據本發明的一些實施例的示例性解析器的方塊圖。
第三圖說明了根據本發明的一些實施例的解析器引擎的方塊圖。
第四圖說明了根據本發明的一些實施例的解析器引擎的方法。
第五圖說明了根據本發明的一些實施例的解析器引擎的另一方法。
第六圖說明了根據本發明的一些實施例的解析器的方法。
在以下的描述中,闡述了許多細節用於解釋的目的。然而,本領域的普通技術人員將認識到,本發明能夠無需使用這些具體細節而被實行。因此,本發明不意圖被限制於所示出的實施例,而是將符合與本文所描述的原理和特徵相一致的最寬範圍。
用於減少彈性解析器中的延遲的裝置的實施例涉及一種對該解析器內的每個解析器引擎進行最佳化的實施方式。封包進入解析器。如果需要處理,則解析器引擎中的每個解析器引擎處理該封包。否則,該解析器引擎簡單地將該封包轉發通過而不處理該封包,由此減少了延遲。每個解析器引擎包括記憶體。該記憶體儲存旁路數據和狀態資訊,該狀態資訊指示了針對這個封包的解析是否完成並且因此後續的解析器引擎不需要進一步的處理。每個解析器引擎還包括計數器,該計數器每當封包進入該解析器引擎時遞增,並且每當封包離開該解析器引擎時遞減。封包基於解析器引擎的計數器和該封包的狀態資訊而旁路該解析器引擎。
網路設備(諸如網路交換機)能夠交換/路由網路流量。網路交換機包括用於接收和傳輸封包的至少一個輸入/傳入埠以及至少一個輸出/傳出埠。在一些實施例中,網路交換機還包括解析器和重寫器。解析器能夠包括一個或多個解析器引擎以識別網路封包的內容,並且重寫器能夠包括一個或多個重寫引擎以在封包從網路交換機傳輸出去之前修改它們。該(些)解析器引擎和該(些)重寫器引擎是彈性並且在可程式化的基礎上進行操作。
第二圖說明了根據本發明的一些實施例的示例性解析器200的方塊圖。簡略地說,解析器200通常使用TCAM(三態內容可定址記憶體)和記憶體(諸如SRAM靜態隨機訪問記憶體)的組合來識別、查找封包中的欄位。
解析器200包括一連串的多個解析器引擎205。該
多個解析器引擎205包括至少一個SKPU 205a和多個KPU 205b。在一些實施例中,解析器引擎205中的每個解析器引擎是無狀態的。
在一些實施例中,去往解析器200的傳入資料來自輸入映射,而來自解析器200的傳出資料去往層擷取映射。在一些實施例中,該輸入映射將網路流映射至解析器。在一些實施例中,該層抽取映射由網路交換機的其他硬體引擎使用。
第三圖說明了根據本發明的一些實施例的解析器引擎300的方塊圖。在一些實施例中,第二圖的解析器引擎205中的每個解析器引擎類似地被配置為解析器引擎300。解析器引擎300包括處理路徑,該處理路徑具有八個時鐘的延遲,但是可能存在更多或更少時鐘的延遲,這取決於硬體約束和要求。解析器引擎300包括由TCAM 305和SRAM 310所形成的旁路路徑。在解析器引擎300內,SRAM 310儲存旁路數據和封包的狀態資訊。該狀態資訊指示了針對這個封包的解析是否完成並且因此後續的解析器引擎不需要進一步的處理。
解析器引擎300還包括計數器。該計數器每當封包進入該解析器引擎時遞增,並且每當封包離開該解析器引擎時遞減。表格1中示出了用於這個計數器的示例性偽代碼。
表格1
來自前一級的封包計數和狀態資訊(例如,解析是否完畢)兩者都被用來對解析器引擎300進行旁路,這被反映在表格2中所示出的示例性偽代碼中。
第四圖說明了根據本發明的一些實施例的解析器引擎的方法400。在步驟405處,資料被接收。該資料包括傳入封包以及與該傳入封包有關的狀態資訊。該狀態資訊通常指示對該傳入封包的解析是否完成。
在步驟410處,確定該狀態資訊是否指示第一狀態。該第一狀態是來自前一級的解析完成或完畢。
在步驟415處,基於該狀態資訊指示第一狀態的確定,當解析器引擎當前沒有正在處理一個或多個其他封包時,經由該解析器引擎的第一路由來傳輸該資料。在一些實施例中,計數器被維持。該計數器在每次封包進入該解析器引擎時遞增,並且在每次封包離開該解析器引擎時遞減。在一些實施例中,該計數器被用來確定解析器引擎是否正在忙於處理其他封包。在一些實施例中,該第一路由是用以通過解析器引擎來發送傳入封包而不被解析器引擎處理的旁路路
由。
基於該狀態資訊指示該第一狀態的確定,當解析器引擎當前正在處理一個或多個其他封包時,在該解析器引擎結束處理該一個或多個其他封包之後,經由該解析器引擎的第一路由來傳輸該資料。
基於該狀態資訊沒有指示該第一狀態的確定,經由解析器引擎的第二路由來傳輸傳入資料。該第二路由是用以處理傳入封包的處理路由。在解析器引擎處理傳入封包之後,該狀態資訊被更新。
在一些實施例中,解析器能夠處置多個源埠。一種代價稍微更高但更有效的實施方式是維持每源埠的計數器,而不是單個計數器用於所有的源埠。因為對橫跨源埠的封包的重排序不存在約束,所以即使解析器引擎正在處理來自其他無關埠的封包,這種實施方式也允許該解析器引擎被旁路,這被反映在表格3中所示出的示例性偽代碼中。
第五圖說明了根據本發明的一些實施例的解析器引擎的另一方法500。在步驟505處,每源埠的計數器被維持。
在步驟510處,資料被接收。該資料包括傳入封包以及與該傳入封包有關的資訊。該資訊包括與該傳入封包有
關的狀態資訊。該狀態資訊指示來自前一級的解析是否完成或完畢。
在步驟515處,確定該狀態資訊是否指示第一狀態。該第一狀態是解析完成。
在步驟520處,基於該狀態資訊指示該第一狀態的確定,當解析器引擎當前沒有正在處理也利用與識別傳入封包利用的相同埠識別的一個或多個其他封包時,經由解析器引擎的第一路由來傳輸該資料。在一些實施例中,與識別傳入封包利用的源埠相關聯的計數器被用來確定解析器引擎是否正在忙於處理利用該源埠識別的其他封包。該第一路由是用以通過解析器引擎來發送傳入封包而不被解析器引擎處理的旁路路由。
基於該狀態資訊指示該第一狀態的確定,當解析器引擎當前正在處理也利用與識別傳入封包利用的相同埠識別的一個或多個其他封包時,在解析器引擎結束處理該一個或多個其他封包之後,經由解析器引擎的第一路由來傳輸該資料。
基於該狀態資訊沒有指示該第一狀態的確定,經由解析器引擎的第二路由來傳輸傳入封包。該第二路由是用以處理傳入封包的處理路由。在經由第二路由傳輸傳入封包之前,與識別該傳入封包利用的源埠相關聯的計數器遞增。在經由第二路由傳輸傳入封包之後,確定對傳入封包的解析是否完成,並且與識別傳入封包利用的源埠相關聯的計數器遞減。
第六圖說明了根據本發明的一些實施例的解析器的方法600。該解析器包括一連串的多個解析器引擎。在步驟605處,通過該多個解析器引擎中的每個解析器引擎來發送資料。該資料通常包括傳入封包以及該傳入封包的狀態資訊。
在步驟610處,該多個解析器引擎中的每個解析器引擎基於發生的第一事件和第二事件,來確定是否通過該解析器引擎來發送該資料。該第一事件是處理完成,並且該第二事件是該解析器引擎當前沒有忙於處理一個或多個其他封包。
在步驟615處,該多個解析器引擎中的每個解析器引擎基於發生的第三事件來確定是否處理該傳入封包。該第三事件是處理未完成。
在一些實施例中,該多個解析器引擎中的每個解析器引擎維持計數器。該計數器在每次封包進入該解析器引擎時遞增,並且在每次封包離開該解析器引擎時遞減。可替換地,該多個解析器引擎中的每個解析器引擎維持每源埠的計數器。與源埠相關聯的計數器在利用源埠識別的封包每次進入該解析器引擎時遞增,並且在利用源埠識別的封包每次離開該解析器引擎時遞減。在一些實施例中,基於計數器來確定第二事件。
本領域的普通技術人員將認識到,也存在其他的使用和優點。儘管已經參考許多具體的細節描述了本發明,但是本領域的普通技術人員將認識到,不偏離本發明的精神,能夠以其他的具體形式來體現本發明。因此,本領域的普通
技術人員將理解,本發明將不由前述的說明性細節所限制,而是將由所附申請專利範圍所限定。
300‧‧‧解析器引擎
305‧‧‧TCAM
310‧‧‧SRAM
Claims (33)
- 一種實施一解析器引擎的方法,所述方法包括:接收資料,其中所述資料包括一傳入封包以及與所述傳入封包有關的一狀態資訊;確定所述狀態資訊是否指示一第一狀態;以及基於所述狀態資訊指示所述第一狀態的確定,當所述解析器引擎當前沒有正在處理一或多個其他封包時,經由所述解析器引擎的一第一路由來傳輸所述資料。
- 如申請專利範圍第1項所述的方法,其中所述第一狀態為解析完成。
- 如申請專利範圍第1項所述的方法,其中所述第一路由是一旁路路由,所述旁路路由用以通過所述解析器引擎來發送所述傳入封包而不被所述解析器引擎處理。
- 如申請專利範圍第1項所述的方法,進一步包括:基於所述狀態資訊指示所述第一狀態的確定,當所述解析器引擎當前正在處理一或多個其他封包時,等待經由所述解析器引擎的所述第一路由來傳輸所述資料。
- 如申請專利範圍第1項所述的方法,進一步包括:基於所述狀態資訊沒有指示所述第一狀態的確定,經由所述解析器引擎的一第二路由來傳輸所述傳入封包。
- 如申請專利範圍第5項所述的方法,其中所述第二路由是用以處理所述傳入封包的一處理路由。
- 如申請專利範圍第5項所述的方法,進一步包括:在所述解析器引擎處理所述傳入封包之後,更新所述狀態資訊。
- 如申請專利範圍第1項所述的方法,進一步包括:維持一計數器,其中所述計數器在每次一封包進入所述解析器引擎時遞增,並且在每次一封包離開所述解析器引擎時遞減。
- 如申請專利範圍第8項所述的方法,其中所述計數器係用以確定所述解析器引擎是否正在忙於處理其他封包。
- 一種實施解析器引擎的方法,所述方法包括:維持每源埠的一計數器;接收資料,其中所述資料包括一傳入封包以及與所述傳入封包有關的一狀態資訊;確定所述狀態資訊是否指示一第一狀態;以及基於所述狀態資訊指示所述第一狀態的確定,當所述解析器引擎當前沒有正在處理也利用與識別所述傳入封包利用的相同埠識別的一或多個其他封包時,經由所述解析器引擎的一第一路由來傳輸所述資料。
- 如申請專利範圍第10項所述的方法,其中所述第一狀態為解析完成。
- 如申請專利範圍第10項所述的方法,其中所述第一路由是一旁路路由,所述旁路路由用以通過所述解析器引擎來發送所述傳入封包而不被所述解析器引擎處理。
- 如申請專利範圍第10項所述的方法,進一步包括:基於所述狀態資訊指示所述第一狀態的確定,當所述解析器引擎當前正在處理也利用與識別所述傳入封包利用的相同 埠識別的一或多個其他封包時,等待經由所述解析器引擎的所述第一路由來傳輸所述資料。
- 如申請專利範圍第10項所述的方法,進一步包括:基於所述狀態資訊沒有指示所述第一狀態的確定,經由所述解析器引擎的一第二路由來傳輸所述傳入封包。
- 如申請專利範圍第14項所述的方法,其中所述第二路由是用以處理所述傳入封包的一處理路由。
- 如申請專利範圍第14項所述的方法,進一步包括:在經由所述第二路由傳輸所述傳入封包之前,遞增與識別所述傳入封包利用的所述源埠相關聯的所述計數器。
- 如申請專利範圍第14項所述的方法,進一步包括:在經由所述第二路由傳輸所述傳入封包之後,確定對所述傳入封包的解析是否完成,並且遞減與識別所述傳入封包利用的所述源埠相關聯的所述計數器。
- 一種解析器方法,該解析器包括一系列的多個解析器引擎,所述方法包括:通過各所述多個解析器引擎發送資料,其中所述資料包括一傳入封包以及所述傳入封包的一狀態資訊;各所述多個解析器引擎係基於發生的一第一事件和一第二事件,確定是否通過所述解析器引擎來發送所述資料;以及各所述多個解析器引擎係基於發生的一第三事件,來確定是否處理所述傳入封包。
- 如申請專利範圍第18項所述的方法,其中所述第一事件為處理完成,所述第二事件是所述解析器引擎當前沒有正在忙於處理一或多個其他封包,且所述第三事件為處理未完成。
- 如申請專利範圍第18項所述的方法,進一步包括:各所述多個解析器引擎都維持一計數器,其中所述計數器在每次一封包進入所述解析器引擎時遞增,並且在每次一封包離開所述解析器引擎時遞減。
- 如申請專利範圍第18項所述的方法,進一步包括:各所述多個解析器引擎維持每源埠的一計數器,其中與所述源埠相關聯的所述計數器在利用源埠識別的一封包每次進入所述解析器引擎時遞增,並且在利用源埠識別的一封包每次離開所述解析器引擎時遞減。
- 一種包括多個解析器引擎的解析器,其中每個解析器引擎包括:一處理路由,其中所述處理路由處理一傳入封包;以及一旁路路由,其中所述旁路路由通過所述解析器引擎來發送傳入封包而不被所述解析器引擎處理,其中,根據一傳入封包之一狀態和所述解析引擎之一狀態,進入該解析器引擎的該傳入封包是經由所述處理路由或所述旁路路由來傳輸。
- 如申請專利範圍第22項所述的解析器,其中各所述解析器引擎為無狀態。
- 如申請專利範圍第22項所述的解析器,其中當所述傳入封包的所述狀態是解析未完成時,經由所述處理路由來傳輸所述傳入封包,並且所述狀態在此後被更新。
- 如申請專利範圍第22項所述的解析器,其中當所述傳入封包的所述狀態是解析完成並且所述解析引擎的所述狀態是當前沒有正在處理一或多個其他封包時,經由所述旁路路由來傳輸所述傳入封包。
- 如申請專利範圍第22項所述的解析器,其中當所述傳入封包的所述狀態是解析完成並且所述解析引擎的所述狀態是當前正在處理一或多個其他封包時,在所述解析器引擎結束處理所述一或多個其他封包之後,經由所述旁路路由來傳輸所述傳入封包。
- 如申請專利範圍第22項所述的解析器,其中當所述傳入封包的所述狀態是解析完成並且所述解析引擎的所述狀態是當前沒有正在處理利用與識別所述傳入封包利用的相同源埠識別的一或多個其他封包時,經由所述旁路路由來傳輸所述傳入封包。
- 如申請專利範圍第22項所述的解析器,其中當所述傳入封包的所述狀態是解析完成並且所述解析引擎的所述狀態是當前正在處理利用與識別所述傳入封包利用的相同源埠識別的一或多個其他封包時,在所述解析器引擎結束處理所述一或多個其他封包之後,經由所述旁路路由來傳輸所述傳入封包。
- 如申請專利範圍第22項所述的解析器,其中每個解析器引擎還包括一計數器,其中所述計數器在每次一封包進入所述解析器引擎時遞增,並且在每次一封包離開所述解析器引擎時遞減。
- 如申請專利範圍第22項所述的解析器,其中每個解析器引擎還包括每埠的一計數器,其中所述計數器在利用相關聯的埠識別的一封包每次進入所述解析器引擎時遞增,並且在利用相關聯的埠識別的一封包每次離開所述解析器引擎時遞減。
- 一種包括多個解析器引擎的解析器,其中每個解析器引擎包括:一記憶體,其中所述記憶體儲存封包的旁路資訊;至少一個計數器,用以保持對當前正在被所述解析器引擎處理之一封包數量的追蹤;一處理路由,其中所述處理路由處理封包;以及一旁路路由,其中所述旁路路由通過所述解析器引擎來發送封包而不被所述解析器引擎處理,其中,根據一封包之一狀態和所述解析引擎之一狀態,進入所述解析器引擎之一封包係由所述處理路由或所述旁路路由來傳輸。
- 如申請專利範圍第31項所述的解析器,其中所述解析引擎的所述狀態取決於所述至少一個計數器。
- 如申請專利範圍第31項所述的解析器,其中所述旁路路由是由TCAM和SRAM所形成,其中所述SRAM儲存旁路數據以及所述封包的所述狀態。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/309,773 US10050833B2 (en) | 2014-06-19 | 2014-06-19 | Method of reducing latency in a flexible parser and an apparatus thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201603533A true TW201603533A (zh) | 2016-01-16 |
Family
ID=54870652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104110830A TW201603533A (zh) | 2014-06-19 | 2015-04-02 | 減少彈性解析器中延遲方法及裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10050833B2 (zh) |
CN (1) | CN105323164B (zh) |
HK (1) | HK1220833A1 (zh) |
TW (1) | TW201603533A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10848430B2 (en) * | 2016-12-30 | 2020-11-24 | Intel Corporation | Flexible packet processing |
US11625532B2 (en) | 2018-12-14 | 2023-04-11 | Microsoft Technology Licensing, Llc | Dynamically generated content understanding system |
Family Cites Families (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5793954A (en) | 1995-12-20 | 1998-08-11 | Nb Networks | System and method for general purpose network analysis |
US6088356A (en) | 1997-06-30 | 2000-07-11 | Sun Microsystems, Inc. | System and method for a multi-layer network element |
US5951651A (en) | 1997-07-23 | 1999-09-14 | Lucent Technologies Inc. | Packet filter system using BITMAP vector of filter rules for routing packet through network |
US7333484B2 (en) | 1998-08-07 | 2008-02-19 | Intel Corporation | Services processor having a packet editing unit |
US6606301B1 (en) | 1999-03-01 | 2003-08-12 | Sun Microsystems, Inc. | Method and apparatus for early random discard of packets |
ATE319249T1 (de) | 2000-01-27 | 2006-03-15 | Ibm | Verfahren und vorrichtung für klassifizierung von datenpaketen |
US6831917B1 (en) | 2000-05-10 | 2004-12-14 | Cisco Technology, Inc. | Network address translation for multicast virtual sourcing |
JP4099930B2 (ja) | 2000-06-02 | 2008-06-11 | 株式会社日立製作所 | ルータ装置及びvpn識別情報の設定方法 |
US20020076142A1 (en) | 2000-08-21 | 2002-06-20 | Song Qi Wang | Optical switch and switching network |
GB0023169D0 (en) * | 2000-09-20 | 2000-11-01 | Ibm | Message parsing in message processing systems |
EP1348290B1 (en) | 2000-10-11 | 2007-09-05 | Broadcom Corporation | Method for dynamically mixing header suppression techniques |
US6952425B1 (en) * | 2000-11-14 | 2005-10-04 | Cisco Technology, Inc. | Packet data analysis with efficient and flexible parsing capabilities |
GB2371705B (en) * | 2001-01-30 | 2003-04-23 | 3Com Corp | Network switch with mutually coupled look-up engine and network processor |
GB0107882D0 (en) * | 2001-03-29 | 2001-05-23 | Ibm | Parsing messages with multiple data formats |
US6944168B2 (en) | 2001-05-04 | 2005-09-13 | Slt Logic Llc | System and method for providing transformation of multi-protocol packets in a data stream |
US7017162B2 (en) | 2001-07-10 | 2006-03-21 | Microsoft Corporation | Application program interface for network software platform |
US20030037154A1 (en) | 2001-08-16 | 2003-02-20 | Poggio Andrew A. | Protocol processor |
US7580408B2 (en) | 2001-11-21 | 2009-08-25 | Alcatel Lucent | Configurable packet processor |
US7236501B1 (en) | 2002-03-22 | 2007-06-26 | Juniper Networks, Inc. | Systems and methods for handling packet fragmentation |
JP2003308206A (ja) | 2002-04-15 | 2003-10-31 | Fujitsu Ltd | プロセッサ装置 |
US20050232303A1 (en) * | 2002-04-26 | 2005-10-20 | Koen Deforche | Efficient packet processing pipeline device and method |
US7277426B2 (en) | 2002-05-24 | 2007-10-02 | Mosaid Technologies, Inc. | Method and apparatus for reordering entries in a multi probe lookup |
US7408957B2 (en) | 2002-06-13 | 2008-08-05 | International Business Machines Corporation | Selective header field dispatch in a network processing system |
CN1280700C (zh) | 2002-07-04 | 2006-10-18 | 皇家飞利浦电子股份有限公司 | 自适应虚拟键盘 |
US7191241B2 (en) | 2002-09-27 | 2007-03-13 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US7367052B1 (en) | 2002-12-04 | 2008-04-29 | Cisco Technology, Inc. | Access list key compression |
US7415596B2 (en) | 2003-01-24 | 2008-08-19 | Gigafin Networks, Inc. | Parser table/production rule table configuration using CAM and SRAM |
US20050281281A1 (en) * | 2003-01-24 | 2005-12-22 | Rajesh Nair | Port input buffer architecture |
US7293113B1 (en) | 2003-05-28 | 2007-11-06 | Advanced Micro Devices, Inc. | Data communication system with hardware protocol parser and method therefor |
US7706363B1 (en) | 2003-06-11 | 2010-04-27 | Radlan Computer Communications, Ltd | Method and apparatus for managing packets in a packet switched network |
GB0320957D0 (en) | 2003-09-08 | 2003-10-08 | Qinetiq Ltd | Document authentication |
US7685436B2 (en) | 2003-10-02 | 2010-03-23 | Itt Manufacturing Enterprises, Inc. | System and method for a secure I/O interface |
US7411957B2 (en) | 2004-03-26 | 2008-08-12 | Cisco Technology, Inc. | Hardware filtering support for denial-of-service attacks |
US7822032B1 (en) | 2004-03-30 | 2010-10-26 | Extreme Networks, Inc. | Data structures for supporting packet data modification operations |
US7606263B1 (en) | 2004-03-30 | 2009-10-20 | Extreme Networks, Inc. | Packet parser |
US7586851B2 (en) * | 2004-04-26 | 2009-09-08 | Cisco Technology, Inc. | Programmable packet parsing processor |
JP4392294B2 (ja) | 2004-06-15 | 2009-12-24 | 株式会社日立製作所 | 通信統計収集装置 |
US7463630B2 (en) * | 2005-02-18 | 2008-12-09 | Broadcom Corporation | Multi-part parsing in a network device |
US7414975B2 (en) | 2005-03-24 | 2008-08-19 | Ixia | Protocol stack |
US7603474B2 (en) | 2005-10-05 | 2009-10-13 | Microsoft Corporation | Efficient endpoint matching using a header-to-bit conversion table |
JP4887897B2 (ja) | 2006-05-12 | 2012-02-29 | 富士通株式会社 | パケット伝送装置、パケット転送方法及びパケット伝送システム |
US9143585B2 (en) | 2006-07-07 | 2015-09-22 | Wi-Lan Inc. | Method and system for generic multiprotocol convergence over wireless air interface |
US7710959B2 (en) | 2006-08-29 | 2010-05-04 | Cisco Technology, Inc. | Private VLAN edge across multiple switch modules |
CA2669932A1 (en) | 2006-12-19 | 2008-06-26 | International Business Machines Corporation | Apparatus and method for analysing a network flow |
IL190134A (en) | 2007-03-12 | 2012-07-31 | Marvell Israel Misl Ltd | Method and system for determining the location of fields in information units |
US8054744B1 (en) | 2007-10-25 | 2011-11-08 | Marvell International Ltd. | Methods and apparatus for flow classification and flow measurement |
US8112800B1 (en) | 2007-11-08 | 2012-02-07 | Juniper Networks, Inc. | Multi-layered application classification and decoding |
US8825592B2 (en) * | 2008-03-12 | 2014-09-02 | Web Access, Inc. | Systems and methods for extracting data from a document in an electronic format |
US7843919B2 (en) | 2008-03-20 | 2010-11-30 | International Business Machines Corporation | Ethernet virtualization using a network packet alteration |
KR101456563B1 (ko) | 2008-05-14 | 2014-10-31 | 삼성전자주식회사 | 멀티 홉 릴레이 환경에서 대역폭 할당 요청과 할당 방법 및시스템 |
US9064058B2 (en) | 2008-12-24 | 2015-06-23 | Nuon, Inc. | Virtualized PCI endpoint for extended systems |
US8902886B2 (en) | 2009-04-23 | 2014-12-02 | International Business Machines Corporation | Canonicalization of network protocol headers |
US8111704B2 (en) | 2009-06-26 | 2012-02-07 | Intel Corporation | Multiple compression techniques for packetized information |
CN101621469B (zh) * | 2009-08-13 | 2012-01-04 | 杭州华三通信技术有限公司 | 数据报文存取控制装置和方法 |
CN101694627B (zh) * | 2009-10-23 | 2013-09-11 | 天津大学 | 基于可配置处理器的编译器系统 |
US9008082B2 (en) | 2009-12-07 | 2015-04-14 | Telefonaktiebolaget L M Ericsson (Publ) | Handling data packets received at a routing node |
US8743877B2 (en) * | 2009-12-21 | 2014-06-03 | Steven L. Pope | Header processing engine |
US8576713B2 (en) | 2010-04-23 | 2013-11-05 | Ixia | Traffic generator with priority flow control |
US8472438B2 (en) | 2010-04-23 | 2013-06-25 | Telefonaktiebolaget L M Ericsson (Publ) | Efficient encapsulation of packets transmitted on a packet-pseudowire over a packet switched network |
US20130039278A1 (en) | 2010-05-03 | 2013-02-14 | Nokia Corporation | Protocol overhead reduction |
US9042405B1 (en) | 2010-06-02 | 2015-05-26 | Marvell Israel (M.I.S.L) Ltd. | Interface mapping in a centralized packet processor for a network |
US8705533B1 (en) | 2010-12-10 | 2014-04-22 | Juniper Networks, Inc. | Fast packet encapsulation using templates |
US8711860B2 (en) | 2011-12-22 | 2014-04-29 | Telefonaktiebolaget L M Ericsson (Publ) | Controller for flexible and extensible flow processing in software-defined networks |
US8521905B2 (en) | 2011-12-22 | 2013-08-27 | Telefonaktiebolaget L M Ericsson (Publ) | System for flexible and extensible flow processing in software-defined networks |
US9565120B2 (en) * | 2012-01-30 | 2017-02-07 | Broadcom Corporation | Method and system for performing distributed deep-packet inspection |
US9282173B2 (en) | 2012-02-17 | 2016-03-08 | Viavi Solutions Inc. | Reconfigurable packet header parsing |
US9065780B2 (en) * | 2012-09-18 | 2015-06-23 | Cisco Technology, Inc. | Low latency networking device using header prediction |
JP6186355B2 (ja) | 2012-10-17 | 2017-08-23 | サターン ライセンシング エルエルシーSaturn Licensing LLC | データ処理装置、データ処理方法、及び、プログラム |
EP2915287B1 (en) | 2012-10-30 | 2018-12-05 | Viavi Solutions Inc. | Method and system for identifying matching packets |
US20140153443A1 (en) | 2012-11-30 | 2014-06-05 | International Business Machines Corporation | Per-Address Spanning Tree Networks |
US9219694B2 (en) | 2013-03-15 | 2015-12-22 | Wisconsin Alumni Research Foundation | Content addressable memory with reduced power consumption |
US9769701B2 (en) | 2013-06-14 | 2017-09-19 | Texas Instruments Incorporated | Header compression for wireless backhaul systems |
US9444914B2 (en) * | 2013-09-16 | 2016-09-13 | Annapurna Labs Ltd. | Configurable parser and a method for parsing information units |
US9628382B2 (en) | 2014-02-05 | 2017-04-18 | Intel Corporation | Reliable transport of ethernet packet data with wire-speed and packet data rate match |
US9823925B2 (en) | 2014-03-28 | 2017-11-21 | Intel Corporation | Instruction and logic for a logical move in an out-of-order processor |
US20170048144A1 (en) | 2015-08-13 | 2017-02-16 | Futurewei Technologies, Inc. | Congestion Avoidance Traffic Steering (CATS) in Datacenter Networks |
-
2014
- 2014-06-19 US US14/309,773 patent/US10050833B2/en active Active
-
2015
- 2015-04-02 TW TW104110830A patent/TW201603533A/zh unknown
- 2015-05-07 CN CN201510229770.8A patent/CN105323164B/zh active Active
-
2016
- 2016-07-26 HK HK16108892.4A patent/HK1220833A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US10050833B2 (en) | 2018-08-14 |
HK1220833A1 (zh) | 2017-05-12 |
CN105323164A (zh) | 2016-02-10 |
CN105323164B (zh) | 2020-09-08 |
US20150372860A1 (en) | 2015-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190140979A1 (en) | NIC with Programmable Pipeline | |
CN101069170B (zh) | 一种网络服务处理器以及处理数据包的装置和方法 | |
US20150288624A1 (en) | Low-latency processing in a network node | |
US20150215236A1 (en) | Method and apparatus for locality sensitive hash-based load balancing | |
JP6027370B2 (ja) | データネットワーク向けエンドツーエンド遅延情報の埋め込み | |
US9288159B2 (en) | Systems and methods for deep packet inspection with a virtual machine | |
EP2919426B1 (en) | Concurrent hashes and sub-hashes on data streams | |
US20160048402A1 (en) | Hash-based load balancing for bonded network interfaces | |
CN102546424B (zh) | 报文保序方法及装置 | |
RU2016114821A (ru) | Способы, устройства и компьютерные программные продукты для облегчения связи типа "устройство-устройство" между устройствами беспроводной связи | |
JP2012209855A (ja) | スイッチシステム、ラインカード、fdb情報の学習方法及びプログラム | |
TWI652623B (zh) | 用於後援處理器單元的資訊查找請求處理或異常封包處理之方法及裝置 | |
CN103414801A (zh) | 一种堆叠系统中媒质访问控制地址同步的方法和设备 | |
CN107770092A (zh) | 一种数据传输方法、装置、移动终端和存储介质 | |
TW201603533A (zh) | 減少彈性解析器中延遲方法及裝置 | |
JP5518754B2 (ja) | ネットワークノード | |
WO2016082367A1 (zh) | 一种基于网络处理器实现硬件表遍历的方法及装置 | |
JP2018007244A (ja) | 情報指向ネットワークにおけるパケット転送 | |
WO2015039687A1 (en) | Transmission and reception devices for reducing the delay in end-to-end delivery of network packets | |
JP2013141140A (ja) | 通信装置及び通信装置のためのプログラム | |
US9886273B1 (en) | Maintaining packet order in a parallel processing network device | |
CN109218204A (zh) | 一种解决mac hash冲突的方法和装置 | |
US20150256469A1 (en) | Determination method, device and storage medium | |
WO2016183732A1 (zh) | 一种数据包转发方法和网络设备 | |
CN112887213B (zh) | 报文清洗方法和装置 |