TWI661695B - 用於產生查找和進行判定的引擎、方法和軟體定義網路 - Google Patents

用於產生查找和進行判定的引擎、方法和軟體定義網路 Download PDF

Info

Publication number
TWI661695B
TWI661695B TW103145662A TW103145662A TWI661695B TW I661695 B TWI661695 B TW I661695B TW 103145662 A TW103145662 A TW 103145662A TW 103145662 A TW103145662 A TW 103145662A TW I661695 B TWI661695 B TW I661695B
Authority
TW
Taiwan
Prior art keywords
beacon
input
lde
search
engine
Prior art date
Application number
TW103145662A
Other languages
English (en)
Other versions
TW201543846A (zh
Inventor
安T 川
傑拉德 史密特
札希 丹尼爾
哈瑞許 庫斯納摩爾西
Original Assignee
美商凱為有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商凱為有限責任公司 filed Critical 美商凱為有限責任公司
Publication of TW201543846A publication Critical patent/TW201543846A/zh
Application granted granted Critical
Publication of TWI661695B publication Critical patent/TWI661695B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/645Splitting route computation layer and forwarding layer, e.g. routing according to path computational element [PCE] or based on OpenFlow functionality
    • H04L45/655Interaction between route computation entities and forwarding entities, e.g. for route determination or for flow table update
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7452Multiple parallel or consecutive lookup operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques
    • H04L2012/5604Medium of transmission, e.g. fibre, cable, radio

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

本發明的實施例涉及用於產生查找和進行判定的引擎(LED)、方法和軟體定義網路。特別地,所述LDE用於針對輸入訊標產生查找關鍵字並基於查找結果的內容來修改所述輸入訊標。所述輸入訊標由解析器從網路封包標頭中解析,並且然後該訊標由LDE進行修改。經過修改的訊標指導對應的網路封包將如何由軟體定義聯網(SDN)系統中的其他部件進行修改或轉發。所述LDE的設計是高度靈活且協議獨立的。用於產生查找關鍵字且用於修改訊標的條件和規則是完全可編程的,以使得所述LDE可以執行SDN系統中的多種可重新配置網路特徵和協定。

Description

用於產生查找和進行判定的引擎、方法和軟體定義網路
本發明涉及用於產生查找關鍵字並修改網路封包的引擎架構。更特別地,本發明涉及產生查找並進行判定以便在軟體定義網路引擎中進行封包修改和轉發的設備和方法。
傳統上,網路設備中的聯網特徵和協定是由硬體專用ASIC設計實現的。這些固定ASIC設計限制新協定的部署速率。用以支援新協定的硬體改變在成本和時間兩方面都是昂貴的。因此,允許使用者借助於軟體來部署新特徵和協定的可編程聯網設備正在變得更有吸引力。
用於實現新網路通訊協定的現有技術的方法是使用在現有技術通用CPU上運行的軟體。然而,這些通用CPU的處理容量(當前最大值64位元)對於支援達到100Gbps的網路封包流量的當前聯網系統而言並不能保證即時性能。
用於實現新網路通訊協定的現有技術的另一方法是 使用可重新配置FPGA晶片。然而,FPGA晶片的邏輯單元容量方面的限制不允許以其全輸送量來處理具有大尺寸(例如幾百位元組)的網路封包。另外,內部互連佈線的高度複雜性使得FPGA晶片以高等待時間在低頻率運行。FPGA晶片的這些不良特性不適合於執行現有技術企業和資料中心網路中所需的複雜網路特徵。
在軟體定義聯網(SDN)系統中,提出的查找及判定引擎(LDE)能夠產生針對輸入訊標(token)的查找關鍵字並基於查找結果來修改輸入訊標,使得可以由系統中的其他部件正確地處理和轉發對應網路封包。用於產生關鍵字和修改訊標的條件和規則完全可由軟體進行編程且基於針對LDE配置的網路特徵和協定。LDE通常包括兩個主區塊:關鍵字產生器和輸出產生器。根據命名,關鍵字產生器針對每一個輸入訊標產生查找關鍵字,並且輸出產生器產生輸出訊標,該輸出訊標為基於查找結果的輸入訊標的經過修改的版本。關鍵字產生器和輸出產生器具有類似的設計架構,該設計架構包括控制路徑和資料路徑。控制路徑檢查其輸入中的特定欄位和位元是否滿足已配置協定的條件。基於檢查結果,其相應地產生指令。資料路徑執行由控制路徑產生的所有指令,以便在關鍵字產生器中產生查找關鍵字,或在輸出產生器中產生輸出訊標。用於關鍵字和輸出產生的條件和規則完全可在關鍵字產生器和輸出產生器的控制路徑中進行編程。
在一方面中,提供了一種用於產生查找並進行判定以便在軟體定義網路(SDN)系統中進行封包修改和進行轉送的引擎。所提供的引擎為了簡化起見而稱為查找及判定引擎(LDE)。LDE通常包括關鍵字產生器和輸出產生器,所述關鍵字產生器被配置成針對每一個輸入訊標產生查找關鍵字,所述輸出產生器被配置成通過基於與查找關鍵字相關聯的查找結果的內容來修改輸入訊標,而產生輸出訊標。
在一些實施例中,所述LDE還包括:輸入緩衝器,其可以是FIFO緩衝器,用於在由所述LDE來處理輸入訊標之前臨時地儲存輸入訊標;範本表,用於識別所述輸入訊標中的欄位的位置;查找結果收集器,用於將輸入訊標與查找結果結合,以及用於將與查找結果結合的輸入訊標發送到所述輸出產生器;回送檢查器,用於確定是應將所述輸出訊標發送回到所述LDE還是SDN系統中的另一引擎;以及回送緩衝器,其可以是FIFO緩衝器,用於儲存所述回送訊標。
在一些實施例中,對範本表的一範本查找指標是所述輸入訊標內部的「範本ID」(“TemplateID”)欄位的值。在一些實施例中,範本表的範本查找結果包含許多訊標層的資訊、輸入訊標中的訊標層的偏移以及中介資料位元,其為在輸入訊標內部不可用的附加控制位元。
在一些實施例中,查找結果收集器包括訊標緩衝器和查找結果緩衝器。訊標緩衝器和查找結果緩衝器中的每一個的深度至少等於遠端搜尋引擎(其負責返回針對由LDE產生的每一個查找關鍵字的查找結果)的等待時間,以保證LDE 以全輸送量操作。
在一些實施例中,由回送檢查器進行的確定是基於輸出訊標中的“DstEngineAddress”欄位和LDE位址的比較。
在一些實施例中,回送緩衝器內部的訊標具有比輸入緩衝器中的優先順序更高的優先順序,以避免鎖死。
在一些實施例中,關鍵字產生器包括用於產生指令的控制路徑和用於執行由控制路徑產生的指令的資料路徑。
控制路徑包括:控制位元提取器,用於從輸入訊標提取控制位元並從對應範本資訊提取中介資料位元;MUX/CMP錐(cone),用於比較所述輸入訊標中的多位元字組和對應範本中介資料;MUX/LUT邏輯錐(cone),用於檢查所述控制位元和所述MUX/CMP錐的輸出是否滿足針對所述LDE配置的特定網路特徵和協定的條件和規則;以及多個指令表,用於基於MUX/LUT邏輯錐的輸出而產生所述指令。
在一些實施例中,所述控制位元提取器可被軟體重新配置,以允許使用者選擇要提取控制位元和中介資料位元之中的哪些位元。
在一些實施例中,所述MUX/CMP錐並行地包括多個MUX/CMP單元,其中,所述MUX/CMP單元其中每一個包括:兩個可重新配置之多工器,用於從輸入訊標和對應範本中介資料中選擇兩個字組,以及可重新配置之比較器,被配置成支援至少三個操作,所述至少三個操作包括匹配/等於(==)、大於(>)以及小於(<)。可以將所述MUX/CMP單元其中每一個配置成將來自輸入訊標和對應範本中介資料 的字組與常數值相比較。
在一些實施例中,MUX/LUT邏輯錐包括多個級,其中,所述級其中每一個並行地包括多個MUX/LUT單元。所述MUX/LUT單元其中每一個包括:六個可重新配置多工器,用於從該MUX/LUT單元的輸入位元中選擇六位元,以及可重新配置查找表(LUT),包含;利用所述六個可重新配置多工器的六個輸出位元而編索引的64位元。
由控制路徑返回的許多指令能夠產生查找關鍵字。在一些實施例中,由控制路徑產生兩種指令:複製指令和ALU指令。可以將複製指令配置成從源複製資料或將常數值複製到輸出關鍵字中的位置,其中,所述源是輸入訊標和對應範本中介資料中的一個。可以將ALU指令配置成將兩個運算元的ALU結果複製到輸出關鍵字中的位置,其中,兩個運算元是從輸入源獲取的,並且其中,輸入源是所述輸入訊標和對應範本中介資料中的一個。還可以將ALU指令配置成將常數值和運算元的ALU結果複製到輸出關鍵字中的位置,其中,所述運算元被從輸入源取到輸出關鍵字中的位置,並且其中,所述源是輸入訊標和對應範本中介資料中的一個。用於ALU指令的ALU操作是加法(+)、減法(-)、按位元及(&)、按位元或(|)、按位元異或(^)、按位元左移(<<)以及按位元右移(>>)中的一個。
資料路徑包括延遲匹配佇列,用於在等待控制路徑的同時緩衝輸入訊標,以產生指令;以及指令執行塊,用以並行地執行由控制路徑產生的所有指令,以便產生查找關鍵 字。
在一些實施例中,延遲匹配佇列是FIFO緩衝器或輸入寄存器,所述FIFO緩衝器或輸入寄存器具有等於控制路徑的等待時間的深度,以使得所述關鍵字產生器可以以全輸送量操作。
在一些實施例中,在執行所有指令之前用全零對查找關鍵字進行初始化。
在一些實施例中,輸出產生器具有與關鍵字產生器類似的設計,但是具有與關鍵字產生器的輸入資料和輸出資料不同的輸入資料和輸出資料。輸出產生器的輸入資料包括輸入訊標、來自對應範本資訊的中介資料位元和查找結果。輸出產生器的輸出資料是所述輸入訊標的經過修改的版本。
在一些實施例中,所述輸出產生器包括MUX/CMP錐,其具有比關鍵字產生器中的MUX/CMP錐更多的MUX/CMP單元,並且所述輸出產生器包括MUX/LUT邏輯錐,其具有比關鍵字產生器中的MUX/LUT邏輯錐更多的級。
在一些實施例中,在執行所有指令之前將輸出訊標初始化成具有與輸入訊標相同的內容。
在一些實施例中,關鍵字產生器和輸出產生器兩者的控制路徑是可編程的,以使得使用者能夠將LDE配置成支援不同的網路特徵和協定。輸出訊標的內容由SDN系統中的其他部件使用,以適當地修改和轉發其對應網路封包。
在另一方面,提供了一種針對軟體定義網路(SDN)引擎中的封包修改和轉發產生查找並進行判定的方法。該方 法包括在輸入緩衝器處緩存輸入訊標,檢索用於輸入訊標中的每一個的中介資料位元,其中,所述中介資料位元在輸入訊標內部不可用,基於輸入訊標和中介資料位元中的每一個的至少特定位元而針對每一個輸入訊標產生查找關鍵字,基於該查找關鍵字而接收查找結果,基於查找結果和輸入訊標的內容而修改輸入訊標中的一個或多個欄位,確定是將經過修改的訊標送回到當前引擎還是SDN系統中的另一引擎,並且基於該確定,將經過修改的訊標緩存在回送緩衝器中,其中,所述回送緩衝器中的訊標具有所述比輸入緩衝器中的訊標更高的優先順序。
在一些實施例中,所述輸入緩衝器和所述回送緩衝器是FIFO緩衝器。
在一些實施例中,訊標的資料格式包括共同部分和層部分。共同部分包括對應網路封包的通用控制位元和到範本表的查找指標的值。查找指標的值由訊標中的“TemplateID”欄位給定。在一些實施例中,該方法還包括從範本表檢索所述訊標在層部分中的訊標層的數目和偏移。
所述層部分包括對應網路封包的所有已解析封包標頭的資訊。所述已解析封包標頭其中每一個均與層部分中的「控制」(“Control”)欄位和「資料」(“Data”)欄位相關聯。
在另一方面中,提供了一種軟體定義網路(SDN)系統。該系統包括解析器、至少一個查找及判定引擎、搜尋引擎、更新讀寫塊及封包記憶體和傳輸佇列塊。所述解析器 被配置成接收傳入網路封包,以解析這些傳入網路封包的標頭並輸出訊標。所述至少一個查找及判定引擎被配置成針對這些訊標產生查找關鍵字,並且然後基於接收到的查找結果而修改這些訊標。所述搜尋引擎被配置成返回用於由每一個LDE發送的每一個查找關鍵字的查找結果。更新讀寫(URW)塊被配置成基於經過修改的訊標來修改每一個網路封包的封包標頭。所述封包記憶體和所述傳輸佇列塊被配置成將經過修改的封包標頭與對應封包的原始有效酬載組合,以便輸出。
在一些實施例中,所述至少一個查找及判定引擎包括多個查找及判定引擎,所述多個查找及判定引擎被串列地耦合以便連續地執行多個查找表,或者被並行地耦合以便同時地執行多個查找表的多個查找及判定引擎。在一些實施例中,所述至少一個查找及判定引擎其中每一個均包括關鍵字產生器和輸出產生器。所述關鍵字產生器被配置成產生用於每一個輸入訊標的查找關鍵字。所述輸出產生器被配置成基於與查找關鍵字相關聯的查找結果的內容而修改輸入訊標。
100‧‧‧查找及判定引擎(LDE)
105‧‧‧輸入FIFO
110‧‧‧範本查找塊
115‧‧‧關鍵字產生器
120‧‧‧查找結果收集器
125‧‧‧輸出產生器
130‧‧‧回送檢查器
135‧‧‧回送FIFO
140‧‧‧回送路徑
200‧‧‧訊標
205‧‧‧共同部分
210‧‧‧層部分
215‧‧‧欄位
220‧‧‧欄位
225‧‧‧層0
225a‧‧‧欄位
225b‧‧‧欄位
250‧‧‧範本表
300‧‧‧關鍵字產生器
305‧‧‧控制路徑
310‧‧‧資料路徑
315‧‧‧控制位元提取器(CBE)
320‧‧‧MUX/CMP錐(MCC)
325‧‧‧MUX/LUT邏輯錐(MLLC)
330‧‧‧關鍵字產生指令表(KGIT)
335‧‧‧延遲匹配佇列
340‧‧‧關鍵字產生指令執行塊
400‧‧‧複製指令
405-425‧‧‧欄位
430‧‧‧ALU指令
435-480‧‧‧欄位
500‧‧‧查找結果收集器
515‧‧‧訊標緩衝器
520‧‧‧結果緩衝器
600‧‧‧輸出產生器
605‧‧‧控制路徑
610‧‧‧資料路徑
615‧‧‧控制位元提取器
620‧‧‧MUX/CMP錐(MCC)
625‧‧‧MUX/LUT邏輯錐(MLLC)
630‧‧‧輸出產生指令表(OGIT)
700‧‧‧複製指令
705-730‧‧‧欄位
740‧‧‧ALU指令
745-795‧‧‧欄位
800‧‧‧軟體定義網路(SDN)系統
805‧‧‧解析器
810‧‧‧LDE
815‧‧‧搜尋引擎
820‧‧‧更新讀寫(URW)塊
825‧‧‧封包記憶體和傳輸佇列塊
第一圖圖示出根據本發明的實施例的用於產生查找關鍵字並修改訊標的軟體定義網路(SDN)引擎的方塊圖。
第二A圖圖示出根據本發明的實施例的訊標的格式。
第二B圖圖示出根據本發明的實施例的範本表的方塊圖。
第三圖圖示出根據本發明的實施例的關鍵字產生器 的方塊圖。
第四A圖圖示出根據本發明的實施例的用於關鍵字產生的複製指令的格式。
第四B圖圖示出根據本發明的實施例的用於關鍵字產生的ALU指令的格式。
第四C圖圖示出根據本發明的實施例的列出關鍵字產生指令的源的表格。
第五圖圖示出根據本發明的實施例的查找結果收集器的方塊圖。
第六圖圖示出根據本發明的實施例的輸出產生器的方塊圖。
第七A圖圖示出根據本發明的實施例的用於輸出產生的複製指令的格式。
第七B圖圖示出根據本發明的實施例的用於輸出產生的ALU指令的格式。
第七C圖圖示出根據本發明的實施例的列出輸出產生指令的源的表格。
第七D圖圖示出根據本發明的實施例的列出輸出產生指令的目的地的表格。
第八圖圖示出根據本發明的實施例的軟體定義網路(SDN)系統的方塊圖。
根據對如附圖中所示的本發明的示例性實施例的以下更加特定的描述,前述內容將是顯而易見的,在附圖中相同的附圖標記貫穿不同視圖指示相同部分。附圖並非必然按 比例繪製,而是替代地著重於舉例說明本發明的實施例而佈置的。
在以下描述中,出於說明的目的而闡述許多細節。然而,本領域的技術人員將認識到的是,可以並不使用這些特定細節的情況下實施本發明。因此,本發明並非意圖局限於所示的實施例,而是符合與本文所述原理和特徵相一致的最寬泛範圍。
在軟體定義聯網(SDN)系統中,提議的查找及判定引擎(LDE)能夠針對輸入訊標產生查找關鍵字並且基於查找結果來修改輸入訊標,以使得可以由系統中的其他部件正確地處理和轉發對應網路封包。用於產生關鍵字和修改訊標的條件和規則完全可以由軟體進行編程,且基於針對LDE配置的網路特徵和協定。LDE通常包括兩個主塊:關鍵字產生器和輸出產生器。正如所命名的那樣,關鍵字產生器針對每一個輸入訊標產生查找關鍵字,並且輸出產生器產生輸出訊標,該輸出訊標為基於查找結果的輸入訊標的經過修改的版本。關鍵字產生器和輸出產生器具有類似的設計架構,其包括控制路徑和資料路徑。控制路徑檢查其輸入中的特定欄位和位元是否滿足已配置協定的條件。基於檢查結果,其相應地產生指令。資料路徑執行由控制路徑產生的所有指令,以便在關鍵字產生器中產生查找關鍵字,或在輸出產生器中產生輸出訊標。用於關鍵字和輸出產生的條件和規則在關鍵字產生器和輸出產生器的控制路徑中是完全可編程的。所述 LDE還包括:輸入FIFO,用於臨時地儲存輸入訊標;查找結果收集器,用於收集用於查找關鍵字的查找結果;回送檢查器,用於當在同一LDE處針對該訊標需要多個串列查找表的情況下,將輸出訊標送回到LDE;以及回送FIFO,用於儲存回送訊標。所述回送路徑典型地具有比輸入路徑更高的優先順序,以保證擺脫了鎖死。
關鍵字產生器和輸出產生器被同樣地配置為在題為“Method and Apparatus for Parallel and Conditional Data Manipulation in a Software-Defined Network Processing Engine”且於(提交日)提交的美國專利申請號(代理人檔案號:XPL-00400)中所討論的SDN處理引擎,該專利申請被通過引用結合到本文中。
第一圖圖示出根據本發明的實施例的用於產生查找關鍵字並修改訊標的軟體定義網路(SDN)引擎100的方塊圖。本發明的SDN引擎100稱為查找及判定引擎(LDE)。LDE 100基於查找結果和輸入訊標的內容,而產生查找關鍵字和經過修改的輸入訊標。用於產生查找關鍵字並修改輸入訊標的條件和規則典型地可由使用者編程。
LDE 100可以從解析器接收輸入訊標。解析器通常解析每一個網路封包的標頭並輸出用於每一個網路封包的輸入訊標。輸入訊標通常具有預定義格式,使得LDE 100將能夠處理輸入訊標。下面在第二A圖中詳細地討論輸入訊標的格式。如果將多個LDE耦合在鏈中以便串列地執行多個查找和訊標修改步驟,則LDE 100還可以從先前的LDE接收輸入 訊標。
在LDE 100處從上游解析器或上游LDE接收到的輸入訊標首先被緩存在輸入FIFO 105內。輸入訊標在輸入FIFO 105內部等待直至LDE準備好對其進行處理。如果輸入FIFO 105是滿的,則LDE 100通知輸入訊標的源(即,上游解析器或上游LDE)停止發送新的訊標。
通過從表格、即範本查找塊110中進行查找,來識別每一個輸入訊標中的欄位的位置。輸入訊標接下來被發送到關鍵字產生器115。關鍵字產生器115被配置成拾取輸入訊標中的特定資料以用於構建查找關鍵字。關鍵字產生器115的配置通常是使用者定義的,並且取決於用戶想要LDE 100執行的網路特徵和協定。
每一個輸入訊標的查找秘鑰被從關鍵字產生器115輸出並發送到遠程搜尋引擎(未示出)。遠端搜尋引擎可以執行多個可配置查找操作,例如TCAM、直接訪問、基於雜湊和最長首碼匹配查找。針對被發送到遠端搜尋引擎的每一個查找關鍵字,在查找結果收集器120處向LDE 100返回查找結果。
在產生用於每一個輸入訊標的查找關鍵字的同時,關鍵字產生器115還將輸入訊標傳遞至查找結果收集器120。輸入訊標被緩存在查找結果收集器120內部。輸入訊標在查找結果收集器120內部等待直至查找結果由遠端搜尋引擎返回。一旦查找結果可用,則輸入訊標連同查找結果一起被發送到輸出產生器125。
基於查找結果和輸入訊標的內容,輸出產生器125修改輸入訊標的一個或多個欄位,之後將經過修改的訊標發送到輸出端。類似於關鍵字產生器1125,輸出產生器125的關於例如用於訊標修改的條件和規則的配置通常也是使用者定義的,並且取決於用戶想要LDE 100執行的網路特徵和協定。
在修改訊標之後,將經過修改的訊標發送到回送檢查器130。回送檢查器130確定是應將經過修改的訊標送回到當前LDE以便執行另一查找,還是將其發送到關聯SDN系統中的另一引擎。該回送檢查是有利地允許單個LDE對同一訊標串列地執行多次查找而不是使用多個引擎來執行該操作的設計選項。此設計選項在由於例如晶片面積預算之類的限制而具有有限數目的LED的系統中是有用的。被送回當前LDE的訊標經由回送路徑140而被緩存在回送FIFO 135內部。回送路徑140始終具有比輸入路徑(例如,來自輸入FIFO 105)更高的優先順序,以避免鎖死。雖然已將第一圖描述為使用FIFO緩衝器,但其他緩衝器類型也是可能的。
為了使LDE 100理解每一個訊標的內容,訊標具有被SDN系統中的所有引擎理解的共同格式。第二A圖圖示出根據本發明的實施例的訊標200的格式。訊標200包括兩個主要部分:共同部分205和層部分210。
共同部分205包含對應網路封包的通用控制位元220,他們被解析器放入到訊標中。該控制位元包括用於但不限於時間戳記、序號、優先順序、晶片上SDN系統中的下一 引擎位址、來源埠、網路封包位元組計數等的位元。這些通用控制欄位220由使用者、例如SDN系統設計師選擇,並且通常對SDN系統中的引擎適當地操縱網路封包而言是特別有用的。
訊標的層部分120包含對應網路封包的所有已解析標頭。在網路中,每一個網路封包常常封裝了許多標頭,例如乙太網、MPLS、IP、TCP、HTTP、VLAN等。對於網路封包而言,在網路封包在網路上行進的時間期間具有八個或更多不同的標頭是常見的。為了使SDN系統中的引擎正確地處理網路封包,由SDN系統中的解析器來解析所有網路封包標頭。特別地,解析器解析這些網路封包標頭並將封包標頭的已解析資訊放置在訊標的層部分210中。每一個已解析網路封包標頭具有在訊標的層部分210內部的對應層205。
訊標中的每一個層225包括兩個欄位:“控制”欄位225a和“資料”欄位225b。“控制”欄位225a包含對應已解析封包標頭的主控制位元,例如優先順序和協議類型,所述位元被解析器嵌入至層205中,以使得SDN系統能夠適當地操縱層部分210中的網路封包標頭。“資料”欄位225b包含對應已解析網路封包標頭的資訊的其餘部分。
由於此類網路封包可以具有不同尺寸的多個標頭,所以每一個訊標內部的層部分210還包含具有不同尺寸的多個層。為了識別層225的數目及其尺寸以及其在訊標內部的位置,訊標的共同部分205內部的“TemplateID”欄位215被引擎、例如第一圖的LDE 100使用。“TemplateID”欄位 215先前被解析器在解析對應網路封包的同時嵌入共同部分205中。LDE 100使用“TemplateID”欄位215的值作為到第二B圖的範本表250的查找指標,所述範本表250為第一圖的範本查找表110。
範本表250接收“TemplateID”欄位215的值,並返回被放置到層部分210中的層的數目和這些層在訊標中的偏移,如第二B圖中所示。由於偏移提供了層225在訊標內部的位置,所以應認識到的是層225的順序不一定需要與相應網路封包的標頭的順序相對應。
另外,範本表250還針對每一個輸入訊標返回中介資料位元,所述中介資料位元為用於該輸入訊標的附加控制位元。使用範本表250有利地減小每一個訊標的尺寸,並因此降低了硬體成本,因為例如可以將例如中介資料位元和層偏移之類的資訊放入範本表250中而不是由訊標本身承載。範本表250的配置通常是使用者定義的,並且取決於解析器和SDN系統中的引擎所支援的網路特徵和網路封包標頭。每一個輸入訊標及其對應範本資訊(其由範本表250返回)被結合並從第一圖的範本查找表110發送到關鍵字產生器115,以用於產生查找關鍵字。第三圖圖示出根據本發明的實施例的關鍵字產生器300的方塊圖。在一些實施例中,第一圖的關鍵字產生器115與關鍵字產生器300類似地配置。在頂層視圖處,將關鍵字產生器300被劃分成兩個邏輯路徑:控制路徑305和資料路徑310。輸入訊標和範本資訊被結合,並通過控制路徑305和資料路徑310流過關鍵字產生器115。 控制路徑305負責產生指令,所述指令然後被資料路徑310執行以用於產生查找關鍵字。
關鍵字產生器控制路徑(KGCP)305包括四個塊:控制位元提取器(CBE)315、MUX/CMP錐(MCC)320、MUX/LUT邏輯錐(MLLC)325和關鍵字產生指令表(KGIT)330。
KGCP 305中的CBE 315從輸入訊標提取重要位元,其通常包含被封裝在輸入訊標中的主要網路特徵,包括第二A圖的共同部分205中的特定位元和第二A圖的層部分210中的層225中的每一個的所有控制位元225a。從訊標的共同部分205提取的位元的位置通常可由軟體重新配置。另外,CBE 215還提取由範本表250返回的範本查找結果的所有中介資料位元。
KGCP 305中的MCC 320並行地包括多個可配置MUX/CMP單元。每一個MUX/CMP單元比較訊標中的兩個任意字組。這兩個字組的位置通常可由軟體配置。每一個MUX/CMP單元還可以將一個字組與常數值相比較。在一些實施例中,支持三個比較操作:等於(==)、大於(>)和小於(<)。每一個所選字組的位元寬通常是16或32位元,但可以有不同的尺寸。KGCP 305的MCC 320中的MUX/CMP單元的數目通常從8個至16個,但MCC 320中的MUX/CMP單元的數目也可以不同,只要該數目不小於打包在所述輸入訊標的層部分中的訊標層的最大數目即可。
CBE 315和MCC 320的所有輸出位元均被結合並輸 出到MLCC 325。KGCP 305中的MLLC 325通常具有多個級。每一個級並行地包括多個MUX/LUT單元。第一級的輸入位元是CBE 315和MCC 320的結合輸出位元。級i的輸入位元是級i-1的所有輸出位元。最後一級的輸出位元形成用於讀取KGIT 330的索引。
在一些實施例中,MUX/LUT單元包含六個多工器,其從其輸入位元中選擇六個任意位元。這六個所選位元的位置通常可由軟體配置。這六個所選位元中的每一個返回一位元輸出,以形成到64位元查找表的指針。每一個MUX/LUT單元的設計有利地允許用戶對來自其輸入位元的六個任意位元執行邏輯運算式。
由於MLLC 325具有多個級且每一個級並行地具有多個MUX/LUT單元,使用者可以對MLLC 325編程以執行用於檢查訊標以產生適當的查找關鍵字的若干複雜的運算式和規則,其取決於使用者想要第一圖的LDE 100支援的網路特徵和協定。MLLC 325通常具有三個或四個級,但也可以有更多或更少的級。除MLLC 325中的最後一級之外,每一個級通常具有32至64個MUX/LUT單元。最後一級中的MUX/LUT單元的數目等於進入KGIT 330的所有索引的位元的數目。
MLLC 325的輸出位元創建用於讀取KGIT 330的索引指標。根據關鍵字尺寸,KGCP 305可以並行地具有一個或多個表。每一個表條目包含多個指令。針對每一個輸入訊標,由KGIT 330返回的指令的數目等於表格的數目乘以每一個表格條目的指令的數目。假設關鍵字尺寸是L位元組,並且每 一個指令允許操縱最多C個位元組。由指令表返回的指令的數目應至少等於L/C。
雖然輸入訊標和範本資訊的結合資料流程過控制路徑305,但該結合資料還流過資料路徑310。關鍵字產生器資料路徑(KGDP)310包括兩個塊:延遲匹配佇列335和關鍵字產生指令執行塊340。
結合資料被緩存在延遲匹配佇列335內部。延遲匹配佇列335可以是FIFO或位移暫存器。延遲匹配佇列335具有等於KGCP 305的等待時間的緩衝器深度,以使得LDE(例如第一圖的LDE100)能夠以全輸送量進行操作。一旦由KGCP 305產生用於每一個訊標的指令,則從延遲匹配佇列335移除對應訊標,並將其發送到關鍵字產生指令執行塊340。關鍵字產生指令執行塊340執行指令並使用輸入訊標作為用於構建查找關鍵字的中介資料。在一些實施例中,支持用於構建此輸出查找關鍵字的兩種指令:複製指令和ALU指令。
第四圖圖示出根據本發明的實施例的用於關鍵字產生的複製指令400的格式。複製指令400允許將資料從源複製到輸出關鍵字中的特定位置。“Src_ID”欄位405指向從其複製最多C個位元組的來源資料。用於每一個複製指令的C個位元組的最大數目是基於設計選項而選擇的,包括LDE(例如第一圖的LDE 100)的矽面積預算。用於KGDP 310的所有來源資料都在第四C圖中所示的表格中列出。用於構建查找關鍵字的來源資料是所有訊標層、輸入訊標的共同部分以及與輸入訊標相關聯的範本資訊中的中介資料欄位。
Src_ByteOffset”欄位410指示所選來源資料中的起始位元組位置。C個位元組是從該起始位元組位置開始被複製的。在一些情況下,使用者想要複製位元而不是位元組或想要複製少於C個位元組。在這些情況下,使用“BitMask”欄位415來掩蔽被複製位元組。並且,在一些情況下,使用者想要向查找關鍵字複製常數值,而不是從中介資料複製常數值。在這些情況下,設定“IsConst”欄位420並使用“BitMask”欄位415來包含該常數值。最後,“Dst_ByteOffset”欄位425指向輸出關鍵字終端位置,已複製掩蔽位元組或常數值被粘貼到那裡。
第四B圖圖示出根據本發明的實施例的用於關鍵字產生的ALU指令430的格式。ALU指令430中的欄位440-475的含義與複製指令400中的那些欄位相同,不同的是每一個ALU指令400允許從中介資料進行複製或複製用於算數邏輯單位元(ALU)塊的兩個運算元的常數值。ALU操作由“OpCode”欄位435選擇,其支援至少以下操作:加法(+)、減法(-)、按位元及(&)、按位元或(|)、按位元異或(^)、按位元左移(<<)和按位元右移(>>)。所述ALU操作在由“Dst_ByteOffset”欄位480識別的位置處被粘貼到輸出關鍵字。
基於設計選項來選擇每一個ALU指令的已複製位元組的最大數目和ALU操作的位元寬。已複製位元組的數目通常為4位元組至8位元組,並且ALU操作的尺寸通常為16位元或32位元。然而,已複製位元組的數目和ALU操作的 尺寸可以不同。
針對每一個輸入訊標,由KGDP 310並行地執行由KGCP 305產生的所有指令,以用於構建查找關鍵字。在執行所有指令之前,用全零對查找關鍵字進行初始化。然後由所有指令來修改查找關鍵字且然後將查找關鍵字發送到遠端搜尋引擎。遠端搜尋引擎被配置成在某個稍後的時間返回用於每一個查找關鍵字的查找結果。
在KGDP 310執行指令的同時,KGDP 310還將原始輸入訊標和對應範本資訊傳遞至第一圖的查找結果收集器120。第五圖圖示出根據本發明的實施例的查找結果收集器500的方塊圖。在一些實施例中,第一圖的查找結果收集器120被與查找結果收集器500類似地配置。在等待將由遠端搜尋引擎返回查找結果的同時,包括輸入訊標和對應範本資訊的所有輸入資料被緩存在訊標緩衝器515內部。訊標緩衝器515的深度至少等於遠端搜尋引擎的等待時間,以使得LDE(例如第一圖的LDE 100)能夠以全輸送量進行操作。
由遠端搜尋引擎針對對應查找關鍵字返回的查找結果被緩存在查找結果緩衝器520內部。查找結果收集器500檢查查找結果緩衝器520以確定對於訊標緩衝器515內部的輸入訊標,查找結果是否是可用的。查找結果收集器500將輸入訊標連同其範本資訊和對應的查找結果一起從緩衝器515-520取出,將資料結合且將結合的資料發送到第一圖的輸出產生器125。
第六圖圖示出根據本發明的實施例的輸出產生器 600的方塊圖。在一些實施例中,第一圖的輸出產生器125被與輸出產生器600類似地配置。輸出產生器600和關鍵字產生器300的設計是類似的。關鍵字產生器和輸出產生器設計兩者的相似性有利地允許大量設計的重用,同時有效地降低用於LDE的開發和驗證成本。
在頂層視圖處,也將輸出產生器600劃分成兩個邏輯路徑:控制路徑605資料路徑610。輸出產生器600和關鍵字產生器300之間的一些差別包括輸入資料和輸出資料。輸出產生器600的輸入資料是原始輸入訊標、其對應範本資訊和對應查找結果。輸出資料是基於查找結果的內容和原始輸入訊標本身而修改的訊標。
輸出產生器控制路徑(OGCP)605包括四個塊:控制位元提取器(CBE)615、MUX/CMP錐(MCC)620、MUX/LUT邏輯錐(MLLC)625和輸出產生指令表(OGIT)630。
由於輸出產生器600的輸入具有比第三圖的關鍵字產生器300的輸入資料更多的輸入資料,所以輸出產生器600中的塊大於關鍵字產生器300中的對應塊。特別地,除了輸入訊標控制位元和範本中介資料位元的提取之外,OGCP 605中的CBE 615還提取查找結果內部的控制位元。因而,查找結果優選地具有被遠端搜尋引擎和LDE(例如第一圖的LDE 100)兩者均理解的格式。
OGCP 605中的MCC 620通常具有比第三圖的KGCP 305中的MCC 320更多的MUX/CMP單元。OGCP 605的MCC 620中的MUX/CMP單元的數目通常為從6個至32個,但MCC 620中的MUX/CMP單元的數目可以不同,只要該數目不小於訊標層的數目加1即可(以用於支持對來自查找結果的資料字組的附加比較)。
OGCP 605中的MLLC 625通常具有比第三圖的KGCP 305中的MLLC 325更多的級,以便支持因來自查找結果的附加控制位元而更加複雜的檢查條件和規則。OGCP 605中的MLLC 625中的級數通常是五級或六級,但可以有更多或更少的級。
OGCP 605通常具有比第三圖的KGCP 305更多的指令表。由OGCP 605返回的指令的數目必須足以操縱輸出訊標中的所有欄位。假設訊標尺寸是M位元組,並且每一個指令允許操縱最多C個位元組。由指定表返回的指令的數目應至少等於M/C。
在一些實施例中,支持用於產生輸出訊標的兩種指令:複製指令和ALU指令。第七A圖和第七B圖圖示出根據本發明的實施例的分別用於輸出產生的複製指令700和ALU指令740的格式。用於輸出產生的複製指令700和ALU指令740的格式類似于用於關鍵字產生的複製指令400(第四A圖)和ALU指令430(第四B圖)的格式,不同之處在於複製指令700和ALU指令740具有更多的來源資料和目的地。
複製指令700的“Src_ID”欄位705、“Src_ByteOffsef”欄位710、“BitMask”欄位715、“Isconst”欄位720、和“Dst_ByteOffset”欄位730被分別地與複製指令400的“Src_ID”欄位405、“Src_ByteOffset” 欄位410、“BitMask”欄位415、“IsConst”欄位420和“Dst_pyceQffset”欄位425類似地配置。
ALU指令740的“OpCode”欄位745、“srcA_ID”欄位750、“srcA_ByteOffet”欄位755、“SrcA_BitMask”欄位760、“SrcA_IsConst”欄位765、“SrcB_ID”欄位770、“SrcB_Byteoffset”欄位775、“SrcB_BitMask”欄位780、“SrcB_IsConst”欄位785和“Dst_ByteOffset”欄位795分別地與ALU指令430的“OpCode”欄位435、“SrcA_ID”欄位、“SrcA_ByteOffset”欄位445、“SrcA_BitMask”欄位450、“SrcA_IsConst”欄位455、“SrcB_ID”欄位460、“SrcB_ByteOffset”欄位465、“SrcB_BitMask”欄位470、“SrcB_IsConst”欄位475和“Dst_ByteOffeet”欄位480類似地配置。
在第七C圖中所示的列表中列出了用於輸出產生器資料路徑(OGDP)610的指令的所有來源資料。用於產生輸出訊標的中介資料是輸入訊標的所有層、輸入訊標的共同部分、與輸入訊標相關聯的範本資訊的中介資料欄位以及輸入訊標的查找結果。
在第七D圖中所示的表中列出了用於OGDP 610的指令的所有目的地標識。指令中的“Dst_ID”欄位725、790指示選擇來自源的已複製資料將被粘貼到輸出訊標的共同部分或各層之中的哪個目的地。用於粘貼資料的所選目的地中的位置由與關鍵字產生指令中的那些類似的“Dst_ByteOffset”欄位730、795給出。
由OGCP 605產生的所有指令由OGDP 610並行地執行,以用於產生新的輸出訊標。在執行所有指令之前將輸出訊標初始化成具有與輸入訊標相同的內容。在執行所有指令之後,輸出訊標是輸入訊標的經過修改的版本。
第一圖的LDE 100是高度靈活、完全可編程且協議獨立的,其有利地允許使用者通過適當地配置關鍵字產生器115和輸出產生器125的控制路徑而執行多種網路特徵和協定。例如,可以將LDE 100配置成產生查找關鍵字,以便作為路由器執行IP查找,或者作為交換機執行乙太網L2查找或VLAN查找,或者作為防火牆執行網路攻擊檢測查找,或作為網路位址轉譯器執行位址至名稱查找。基於查找結果,適當地修改訊標。
然後,由回送檢查器130來檢查經過修改的訊標,以查看是將經過修改的訊標是送回當前LDD以便完成另一查找還是發送到SDN系統中的其他引擎。支援回送路徑140有利地允許在同一引擎處執行多次查找。回送檢查器130將經過修改的訊標的共同部分內部的“Dst_EngineAddress”欄位與當前引擎的位址相比較。如果他們是相同的,則經由如第一圖中所示的回送路徑140將經過修改的訊標送回到當前引擎。在第一圖中,回送路徑140具有比輸入路徑(例如,來自輸入FIFO 105)更高的優先順序,以避免鎖死。
如果需要的話,最終輸出訊標被發送到另一引擎,以用於執行更多查找,或者發送到更新讀寫(URW)塊。基於訊標中的經過修改的內容,URW塊將對應地修改對應網路 封包標頭(原始訊標被從該對應網路封包標頭中解析)。這些經過修改的網路封包標頭冉江將被傳輸佇列塊與其對應有效酬載組合,以形成最終經過修改的輸出網路封包,其反映了針對該LDE配置的網路特徵和協定。然後,將經過修改的網路封包發送到SDN系統中的其他部件,以用於進一步處理,或者轉發到網路中的另一設備。
第八圖圖示出根據本發明的實施例的軟體定義網路(SDN)系統800的方塊圖。系統800包括解析器805、至少一個LDE 810、搜尋引擎815、更新讀寫(URW)塊820、封包記憶體和傳輸佇列(TxQ)塊825。在解析器805處接收網路封包。解析器805解析網路的標頭並將控制位元和已解析標頭放在訊標中。解析器805將訊標發送到一個或多個LED 810並將網路封包的原始封包標頭發送到URW 820以及將原始封包有效酬載發送到封包記憶體和TxQ 825。
該訊標通常採取被LDE 810所理解的格式。LDE 810中的一個從解析器805接收訊標。如上文所討論的,每一個LDE 810產生查找關鍵字,並將此查找關鍵字發送到遠端搜尋引擎815,其在某個稍後的時間返回查找結果。在從搜尋引擎815接收到查找結果之後,LDE 810基於查找結果和訊標的內容來修改訊標。基於經過修改的訊標的“Dst_EngineAddress”,可以將經過修改的訊標發送到所述多個LDE 810中的另一LDE或同一LDE以用於在需要時執行更多查找。在完成由LDE 810進行的所有需要的查找和訊標修改之後,將最終輸出訊標發送到URW塊820。URW塊 820基於經過修改的訊標的內容來修改對應封包標頭;因此,經過修改的封包標頭適當地反映針對LDE 810配置的網路特徵。經過修改的封包標頭然後被發送到封包記憶體和TxQ塊825。封包記憶體和TxQ塊825將初始封包有效酬載和經過修改的封包標頭組合,以形成最終輸出網路封包。最終輸出網路封包然後被發送到SDN系統中的其他部件,以用於進一步處理,或者被轉發到網路中的另一設備,或者可以在期望時送回(回送)到解析器以便能夠執行更多查找。
本發明的實施例涉及用於產生用於輸入訊標的查找關鍵字並基於查找結果的內容來修改輸入訊標的查找及判定引擎(LDE)。輸入訊標由解析器從網路封包標頭中解析,並且然後該訊標由LDE修改。被LDE修改的訊標指導對應網路封包將如何由軟體定義網路(SDN)系統中的其他部件進行修改或轉發;LDE的設計是高度靈活且協議獨立的。用於產生查找關鍵字且用於修改訊標的條件和規則是完全可編程的,以使得LDE可以執行SDN系統中的多種可重新配置網路特徵和協定。
本領域的技術人員將認識到還存在其他用途和優點。雖然已參考許多特定細節描述了本發明,但本領域的技術人員將認識到在不脫離本發明的精神的情況下,可以以其他特定形式來體現本發明。因此,本領域的技術人員將理解的是,本發明將不受前述說明性細節的限制,而是由所附申請專利範圍來限定。

Claims (41)

  1. 一種用於產生查找並進行判定的引擎(LDE),用於在一軟體定義網路(SDN)系統中進行封包修改和轉發,所述LDE包括:一關鍵字產生器,係配置以為每一個輸入訊標產生一查找關鍵字;一輸出產生器,係配置以藉由基於與所述查找關鍵字相關聯的查找結果的內容修改所述輸入訊標而產生一輸出訊標;以及一範本表,用於識別所述輸入訊標中每一個輸入訊標的欄位的位置。
  2. 根據申請專利範圍第1項所述之用於產生查找並進行判定的引擎(LDE),還包括:一輸入緩衝器,用於在所述LDE處理輸入訊標之前,臨時地儲存輸入訊標;一查找結果收集器,用於將所述輸入訊標與所述查找結果結合以及用於將與所述查找結果結合的所述輸入訊標發送到所述輸出產生器;一回送檢查器,用於確定所述輸出訊標是否應被送回到當前的所述LDE還是一SDN系統中的一另一引擎;以及一回送緩衝器,用於儲存回送訊標。
  3. 根據申請專利範圍第2項所述之用於產生查找並進行判定的引擎(LDE),其中,對該範本表的一範本查找指標是所述輸入訊標內部的一「範本ID」(“Template_ID”)欄位的值。
  4. 根據申請專利範圍第3項所述之用於產生查找並進行判定的引擎(LDE),其中,所述範本表的一範本查找結果包含訊標層數量的資訊、所述輸入訊標中的所述訊標層的偏移以及中介資料位元,所述中介資料位元是在所述輸入訊標內部不可用的附加控制位元。
  5. 根據申請專利範圍第2項所述之用於產生查找並進行判定的引擎(LDE),其中,所述查找結果收集器包括一訊標緩衝器和一查找結果緩衝器,其中,所述訊標緩衝器和所述查找結果緩衝器中每一個的深度均至少等於一遠端搜尋引擎的一等待時間,以確保該LDE係以全輸送量進行操作。
  6. 根據申請專利範圍第2項所述之用於產生查找並進行判定的引擎(LDE),其中,由所述回送檢查器進行的所述確定是基於所述輸出訊標中的“DstEngineAddress”欄位與所述LDE的地址的比較。
  7. 根據申請專利範圍第2項所述之用於產生查找並進行判定的引擎(LDE),其中,所述回送緩衝器內部的訊標具有比所述輸入緩衝器中的優先順序更高的優先順序,以避免鎖死。
  8. 根據申請專利範圍第2項所述之用於產生查找並進行判定的引擎(LDE),其中,所述輸入緩衝器和所述回送緩衝器是FIFO緩衝器。
  9. 根據申請專利範圍第1項所述之用於產生查找並進行判定的引擎(LDE),其中,所述關鍵字產生器包括:一控制路徑,用於產生指令;以及一資料路徑,用於執行由所述控制路徑產生的指令。
  10. 根據申請專利範圍第9項所述之用於產生查找並進行判定的引擎(LDE),其中,所述控制路徑包括:一控制位元提取器,用於從所述輸入訊標提取控制位元並從一對應範本資訊提取中介資料位元;一MUX/CMP錐,用於比較所述輸入訊標中的多位元字組和對應的範本中介資料;一MUX/LUT邏輯錐,用於檢查所述控制位元和所述MUX/CMP錐的輸出是否滿足為所述LDE配置的特定網路特徵和協定的條件和規則;以及多個指令表,用於基於所述MUX/LUT邏輯錐的輸出而產生所述指令。
  11. 根據申請專利範圍第10項所述之用於產生查找並進行判定的引擎(LDE),其中,所述控制位元提取器是可由軟體重新配置的,以允許使用者選擇要提取所述控制位元和所述中介資料位元中的哪些位元。
  12. 根據申請專利範圍第10項所述之用於產生查找並進行判定的引擎(LDE),其中,所述MUX/CMP錐包括並行的多個MUX/CMP單元,其中,所述MUX/CMP單元中的每一個MUX/CMP單元包括:兩個可重新配置之多工器,用於從所述輸入訊標和所述對應範本中介資料選擇兩個字組;以及一可重新配置之比較器,係配置以支援包括匹配/等於(==)、大於(>)和小於(<)的至少三種操作。
  13. 根據申請專利範圍第12項所述之用於產生查找並進行判定的引擎(LDE),其中,所述MUX/CMP單元中的每一個MUX/CMP單元被配置成將來自所述輸入訊標和所述對應範本中介資料的字組與一常數值相比較。
  14. 根據申請專利範圍第10項所述之用於產生查找並進行判定的引擎(LDE),其中,所述MUX/LUT邏輯錐包括多個級,其中,所述多個級中的每一個級包括並行的多個MUX/LUT單元。
  15. 根據申請專利範圍第14項所述之用於產生查找並進行判定的引擎(LDE),其中,所述MUX/LUT單元中的每一個MUX/LUT單元包括:六個可重新配置之多工器,用於從所述MUX/LUT單元的輸入位元中選擇六個位元;以及一可重新配置之查找表(LUT),包含由所述六個可重新配置之多工器的六個輸出位元編索引的64位元。
  16. 根據申請專利範圍第10項所述之用於產生查找並進行判定的引擎(LDE),其中,由所述控制路徑返回的許多指令能夠產生所述查找關鍵字。
  17. 根據申請專利範圍第16項所述之用於產生查找並進行判定的引擎(LDE),其中,下列兩種指令可被支援:複製指令和ALU指令。
  18. 根據申請專利範圍第17項所述之用於產生查找並進行判定的引擎(LDE),其中,所述複製指令被配置成從一來源複製資料,或將一常數值複製到一輸出關鍵字中的一位置,其中,所述來源是所述輸入訊標和對應範本中介資料其中的一個。
  19. 根據申請專利範圍第17項所述之用於產生查找並進行判定的引擎(LDE),其中,所述ALU指令被配置成將兩個運算元的一ALU結果複製到一輸出關鍵字中的一位置,其中,所述兩個運算元取自輸入來源,其中,該輸入來源是所述輸入訊標和所述對應範本中介資料其中的一個。
  20. 根據申請專利範圍第17項所述之用於產生查找並進行判定的引擎(LDE),其中,所述ALU指令被配置成將一常數值和運算元的一ALU結果複製到一輸出關鍵字組中的一位置,其中,所述運算元是從一輸入來源被取至一輸出關鍵字中的一位置,其中,所述來源是所述輸入訊標和所述對應範本中介資料其中的一個。
  21. 根據申請專利範圍第17項所述之用於產生查找並進行判定的引擎(LDE),其中,用於所述ALU指令的ALU操作是加法(+)、減法(-)、按位元及(&)、按位元或(|)、按位元異或(^)、按位元左移(<<)和按位元右移(>>)其中的一個。
  22. 根據申請專利範圍第9項所述之用於產生查找並進行判定的引擎(LDE),其中,所述資料路徑包括:一延遲匹配佇列,用於在等待所述控制路徑產生所述指令的同時緩存所述輸入訊標;以及一指令執行塊,用以並行地執行由所述控制路徑產生的所有指令,以用於產生所述查找關鍵字。
  23. 根據申請專利範圍第22項所述之用於產生查找並進行判定的引擎(LDE),其中,所述延遲匹配佇列是FIFO緩衝器或位移暫存器,所述FIFO緩衝器或位移暫存器具有等於所述控制路徑的等待時間的深度,以使得該關鍵字產生器能夠以全輸送量進行操作。
  24. 根據申請專利範圍第22項所述之用於產生查找並進行判定的引擎(LDE),其中,在執行所有指令之前利用全零對所述查找關鍵字進行初始化。
  25. 根據申請專利範圍第1項所述之用於產生查找並進行判定的引擎(LDE),其中,所述輸出產生器具有與所述關鍵字產生器類似的設計,但是具有與所述關鍵字產生器的輸入資料和輸出資料不同的輸入資料和輸出資料。
  26. 根據申請專利範圍第25項所述之用於產生查找並進行判定的引擎(LDE),其中,所述輸出產生器的輸入資料包括所述輸入訊標、來自對應範本資訊的中介資料位元和所述查找結果。
  27. 根據申請專利範圍第25項所述之用於產生查找並進行判定的引擎(LDE),其中,所述輸出產生器的所述輸出資料是所述輸入訊標的經過修改的版本。
  28. 根據申請專利範圍第25項所述之用於產生查找並進行判定的引擎(LDE),其中,所述輸出產生器包括MUX/CMP錐,所述MUX/CMP錐具有比所述關鍵字產生器中的MUX/CMP錐更多的MUX/CMP單元,並且其中,所述輸出產生器包括MUX/LUT邏輯錐,所述MUX/LUT邏輯錐具有比關鍵字產生器中的MUX/LUT邏輯錐更多的級。
  29. 根據申請專利範圍第25項所述之用於產生查找並進行判定的引擎(LDE),其中,在執行所有指令之前將所述輸出訊標初始化成具有與所述輸入訊標相同的內容。
  30. 根據申請專利範圍第1項所述之用於產生查找並進行判定的引擎(LDE),其中,所述關鍵字產生器和所述輸出產生器兩者的控制路徑是可編程的,以使得用戶能夠將所述LDE配置成支援不同的網路特徵和協定。
  31. 根據申請專利範圍第1項所述之用於產生查找並進行判定的引擎(LDE),其中,所述輸出訊標的內容可由該SDN系統中的其他部件使用,以適當地修改和轉發其對應網路封包。
  32. 一種產生查找並進行判定的方法,以用於在一軟體定義網路(SDN)引擎中進行封包修改和轉送,所述方法包括:將輸入訊標緩存在一輸入緩衝器處;擷取所述輸入訊標中的每一個輸入訊標之中介資料位元,其中,所述中介資料位元在該輸入訊標內部為不可用;基於所述輸入訊標中的每一個輸入訊標的至少特定位元和所述中介資料位元,產生所述輸入訊標中的每一個輸入訊標之一查找關鍵字;接收根據所述查找關鍵字之一查找結果;基於所述查找結果和所述輸入訊標的內容,修改所述輸入訊標中的一個或多個欄位;確定是否將經過修改的所述訊標送回到當前LDE還是一SDN系統中的一另一引擎;以及基於所述確定,將經過修改的所述訊標緩存在回送緩衝器中,其中,所述回送緩衝器中的訊標具有比所述輸入緩衝器中的訊標更高的優先順序。
  33. 根據申請專利範圍第32項所述之方法,其中,訊標的資料格式包括一共同部分和一層部分。
  34. 根據申請專利範圍第33項所述之方法,其中,所述共同部分包括一對應網路封包的通用控制位元和對範本表之一查找指標的值,其中,所述查找指針的所述值在所述訊標的一「範本ID」(“Template_ID”)欄位中。
  35. 根據申請專利範圍第34項所述之方法,還包括擷取該層部分中的層的數量和所述訊標中的層的偏移。
  36. 根據申請專利範圍第33項所述之方法,其中,所述層部分包括一對應網路封包的所有已解析封包標頭的資訊,其中,所述已解析封包標頭其中每一個已解析封包標頭均與所述層部分中的一「控制」(“Control”)欄位和一「資料」(“Data”)欄位相關聯。
  37. 根據申請專利範圍第32項所述之方法,其中,所述輸入緩衝器和所述回送緩衝器是FIFO緩衝器。
  38. 一種軟體定義網路(SDN)系統,包括:一解析器,係配置以接收傳入的網路封包,解析所傳入的網路封包的標頭並輸出訊標;至少一個查找及判定引擎(LDE),係配置以為所述輸出訊標的每一個訊標產生一查找關鍵字,並基於一個或多個查找結果而修改所述訊標,所述LDE包括一範本表,用於識別所述輸入訊標中每一個輸入訊標的欄位的位置;一搜尋引擎,係配置以返回每一個LDE所發送的每一個查找關鍵字之一查找結果;一更新讀寫(URW)塊,係配置以基於經過修改的所述訊標來修改所述對應傳入的網路封包的封包標頭;以及一封包記憶體和傳輸佇列塊,係配置以將經過修改的所述封包標頭與所述對應傳入的網路封包的原始有效酬載進行組合以供輸出。
  39. 根據申請專利範圍第38項所述之軟體定義網路(SDN)系統,其中,所述至少一個查找及判定引擎包括多個查找及判定引擎,所述多個查找及判定引擎被串列地耦合以連續執行多個查找,或者被並行地耦合以同時執行多個查找。
  40. 根據申請專利範圍第38項所述之軟體定義網路(SDN)系統,其中,所述至少一個查找及判定引擎包括:一關鍵字產生器,係配置以產生所述訊標之所述查找關鍵字;以及一輸出產生器,係配置以基於與所述查找關鍵字相關聯的查找結果的內容輸出經過修改的所述訊標。
  41. 一種用於產生查找並進行判定的引擎(LDE),用於在一軟體定義網路(SDN)系統中進行封包修改和轉發,所述LDE包括:一關鍵字產生器,係配置以為每一個輸入訊標產生一查找關鍵字;一輸出產生器,係配置以藉由基於與所述查找關鍵字相關聯的查找結果的內容修改所述輸入訊標而產生一輸出訊標;以及一回送檢查器,用於確定所述輸出訊標是否應被送回到當前的所述LDE還是一SDN系統中的一另一引擎。
TW103145662A 2013-12-30 2014-12-26 用於產生查找和進行判定的引擎、方法和軟體定義網路 TWI661695B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/144,270 2013-12-30
US14/144,270 US9379963B2 (en) 2013-12-30 2013-12-30 Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine

Publications (2)

Publication Number Publication Date
TW201543846A TW201543846A (zh) 2015-11-16
TWI661695B true TWI661695B (zh) 2019-06-01

Family

ID=53482048

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103145662A TWI661695B (zh) 2013-12-30 2014-12-26 用於產生查找和進行判定的引擎、方法和軟體定義網路

Country Status (6)

Country Link
US (5) US9379963B2 (zh)
JP (1) JP6537824B2 (zh)
KR (2) KR102314619B1 (zh)
CN (1) CN104881422B (zh)
HK (1) HK1210844A1 (zh)
TW (1) TWI661695B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11308114B1 (en) * 2013-12-23 2022-04-19 Cazena, Inc. Platform for provisioning a data analytics environment
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9379963B2 (en) 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9413357B2 (en) 2014-06-11 2016-08-09 Cavium, Inc. Hierarchical statistically multiplexed counters and a method thereof
US9635146B2 (en) 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US10616380B2 (en) 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US9813327B2 (en) 2014-09-23 2017-11-07 Cavium, Inc. Hierarchical hardware linked list approach for multicast replication engine in a network ASIC
US9485179B2 (en) * 2014-11-13 2016-11-01 Cavium, Inc. Apparatus and method for scalable and flexible table search in a network switch
US10003676B2 (en) * 2015-02-20 2018-06-19 Cavium, Inc. Method and apparatus for generating parallel lookup requests utilizing a super key
US10616144B2 (en) 2015-03-30 2020-04-07 Cavium, Llc Packet processing system, method and device having reduced static power consumption
KR102284953B1 (ko) 2016-01-13 2021-08-03 삼성전자 주식회사 소프트웨어 정의 네트워크 기반 이동통신 시스템에서 제어 메시지 전송 방법 및 장치
TWI610196B (zh) * 2016-12-05 2018-01-01 財團法人資訊工業策進會 網路攻擊模式之判斷裝置、判斷方法及其電腦程式產品
US10997502B1 (en) 2017-04-13 2021-05-04 Cadence Design Systems, Inc. Complexity optimization of trainable networks
US10728140B2 (en) 2017-12-18 2020-07-28 At&T Intellectual Property I, L.P. Deadlock-free traffic rerouting in software-deifned networking networks
CN108549684B (zh) * 2018-04-04 2020-08-18 西安交通大学 一种sdn中采用多路搜索缩减规则依赖的缓存方法
KR102043978B1 (ko) * 2018-10-01 2019-11-12 에스케이텔레콤 주식회사 네트워크장치, 네트워크 모니터링 시스템 및 네트워크 모니터링 방법
CN110287192B (zh) * 2019-06-26 2021-09-21 浙江大搜车软件技术有限公司 搜索应用数据处理方法、装置、计算机设备和存储介质
CN114205415A (zh) * 2020-09-17 2022-03-18 深圳市中兴微电子技术有限公司 报文修改方法、装置、计算机设备、介质
US11616716B1 (en) * 2021-12-10 2023-03-28 Amazon Technologies, Inc. Connection ownership gossip for network packet re-routing
CN114579596B (zh) * 2022-05-06 2022-09-06 达而观数据(成都)有限公司 一种实时更新搜索引擎索引数据的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020009076A1 (en) * 2000-01-27 2002-01-24 Ton Engbersen Method and means for classifying data packets
US20050076228A1 (en) * 2003-10-02 2005-04-07 Davis John M. System and method for a secure I/O interface
US8054744B1 (en) * 2007-10-25 2011-11-08 Marvell International Ltd. Methods and apparatus for flow classification and flow measurement
US20130163475A1 (en) * 2011-12-22 2013-06-27 Ludovic Beliveau Controller for flexible and extensible flow processing in software-defined networks

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4929939A (en) 1988-10-31 1990-05-29 International Business Machines Corporation High-speed switching system with flexible protocol capability
US5319347A (en) 1992-04-30 1994-06-07 Sgs-Thomson Microelectronics, Inc. Parallelized magnitude comparator for comparing a binary number to a fixed value
US6667984B1 (en) 1998-05-15 2003-12-23 Polytechnic University Methods and apparatus for arbitrating output port contention in a switch having virtual output queuing
JP2001024641A (ja) 1999-07-06 2001-01-26 Nec Corp クロスバー型スイッチのアービタにおける接続許可システム及び方法
US20030093613A1 (en) 2000-01-14 2003-05-15 David Sherman Compressed ternary mask system and method
US6831917B1 (en) * 2000-05-10 2004-12-14 Cisco Technology, Inc. Network address translation for multicast virtual sourcing
US7075926B2 (en) 2000-05-24 2006-07-11 Alcatel Internetworking, Inc. (Pe) Programmable packet processor with flow resolution logic
JP2002198430A (ja) 2000-12-26 2002-07-12 Nec Microsystems Ltd 駆動力可変ブロックおよびこれを用いたlsi設計方法
JP4489308B2 (ja) 2001-01-05 2010-06-23 富士通株式会社 パケットスイッチ
US7058789B2 (en) * 2002-02-04 2006-06-06 Intel Corporation System and method for packet storage and retrieval
CN100421106C (zh) 2002-08-10 2008-09-24 思科技术公司 具有增强能力的关联存储器
US7461167B1 (en) 2002-11-22 2008-12-02 Silicon Image, Inc. Method for multicast service in a crossbar switch
US7548848B1 (en) * 2003-01-08 2009-06-16 Xambala, Inc. Method and apparatus for semantic processing engine
EP1553738A1 (en) 2004-01-12 2005-07-13 Thomson Licensing S.A. Method and apparatus for generating data packets
US7085907B2 (en) 2004-02-17 2006-08-01 International Business Machines Corporation Dynamic reconfiguration of memory in a multi-cluster storage control unit
KR100603567B1 (ko) 2004-09-02 2006-07-24 삼성전자주식회사 스위치에서의 대역폭 예약을 통한 QoS 보장 방법 및 그시스템
US20060059269A1 (en) 2004-09-13 2006-03-16 Chien Chen Transparent recovery of switch device
US20060140126A1 (en) 2004-12-27 2006-06-29 Intel Corporation Arbitrating virtual channel transmit queues in a switched fabric network
JP4779955B2 (ja) 2006-01-06 2011-09-28 富士通株式会社 パケット処理装置及びパケット処理方法
US8112622B2 (en) 2006-12-08 2012-02-07 Broadcom Corporation Chaining port scheme for network security
TW200832408A (en) 2007-01-19 2008-08-01 Univ Nat Chiao Tung Hierarchical search line with internal storage irrelevant entry control
US8259715B2 (en) 2007-07-25 2012-09-04 Hewlett-Packard Development Company, L.P. System and method for traffic load balancing to multiple processors
WO2009133918A1 (ja) 2008-04-30 2009-11-05 日本電気株式会社 ルータ、そのルータを有する情報処理装置及びパケットのルーティング方法
JP4784786B2 (ja) 2009-03-27 2011-10-05 日本電気株式会社 クロック分配回路及びクロックスキュー調整方法
US8938268B2 (en) 2009-11-24 2015-01-20 Qualcomm Incorporated Method and apparatus for facilitating a layered cell search for Long Term Evolution systems
US9077669B2 (en) 2010-06-14 2015-07-07 Dynamic Invention Llc Efficient lookup methods for ternary content addressable memory and associated devices and systems
CN102724101B (zh) 2011-03-29 2015-01-21 华为技术有限公司 报文转发方法及系统与中继代理设备
WO2012167094A1 (en) 2011-06-01 2012-12-06 Security First Corp. Systems and methods for secure distributed storage
US9065860B2 (en) 2011-08-02 2015-06-23 Cavium, Inc. Method and apparatus for multiple access of plural memory banks
US9159420B1 (en) 2011-08-16 2015-10-13 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for content addressable memory parallel lookup
WO2013054497A1 (ja) 2011-10-14 2013-04-18 パナソニック株式会社 中継器、中継器の制御方法、およびコンピュータプログラム
US9674114B2 (en) 2012-02-09 2017-06-06 Intel Corporation Modular decoupled crossbar for on-chip router
US9225635B2 (en) 2012-04-10 2015-12-29 International Business Machines Corporation Switch routing table utilizing software defined network (SDN) controller programmed route segregation and prioritization
US20140153443A1 (en) 2012-11-30 2014-06-05 International Business Machines Corporation Per-Address Spanning Tree Networks
CN104022960B (zh) 2013-02-28 2017-05-31 新华三技术有限公司 基于OpenFlow协议实现PVLAN的方法和装置
US20140369363A1 (en) 2013-06-18 2014-12-18 Xpliant, Inc. Apparatus and Method for Uniquely Enumerating Paths in a Parse Tree
CN103347013B (zh) 2013-06-21 2016-02-10 北京邮电大学 一种增强可编程能力的OpenFlow网络系统和方法
US9590914B2 (en) 2013-11-05 2017-03-07 Cisco Technology, Inc. Randomized per-packet port channel load balancing
US9973599B2 (en) 2013-12-04 2018-05-15 Mediatek Inc. Parser for parsing header in packet and related packet processing apparatus
US9363178B2 (en) 2013-12-18 2016-06-07 Telefonaktiebolaget L M Ericsson (Publ) Method, apparatus, and system for supporting flexible lookup keys in software-defined networks
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9379963B2 (en) 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
CN104010049B (zh) 2014-04-30 2017-10-03 易云捷讯科技(北京)股份有限公司 基于sdn的以太网ip报文封装方法及网络隔离和dhcp实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020009076A1 (en) * 2000-01-27 2002-01-24 Ton Engbersen Method and means for classifying data packets
US20050076228A1 (en) * 2003-10-02 2005-04-07 Davis John M. System and method for a secure I/O interface
US8054744B1 (en) * 2007-10-25 2011-11-08 Marvell International Ltd. Methods and apparatus for flow classification and flow measurement
US20130163475A1 (en) * 2011-12-22 2013-06-27 Ludovic Beliveau Controller for flexible and extensible flow processing in software-defined networks

Also Published As

Publication number Publication date
US20230275835A1 (en) 2023-08-31
US10009273B2 (en) 2018-06-26
HK1210844A1 (zh) 2016-05-06
US20180278527A1 (en) 2018-09-27
KR20210127898A (ko) 2021-10-25
US10749800B2 (en) 2020-08-18
US9379963B2 (en) 2016-06-28
US20200336423A1 (en) 2020-10-22
JP2015165650A (ja) 2015-09-17
CN104881422B (zh) 2019-12-17
KR102402176B1 (ko) 2022-05-25
JP6537824B2 (ja) 2019-07-03
KR102314619B1 (ko) 2021-10-19
US20160277295A1 (en) 2016-09-22
CN104881422A (zh) 2015-09-02
US20150186516A1 (en) 2015-07-02
TW201543846A (zh) 2015-11-16
US11677664B2 (en) 2023-06-13
KR20150079477A (ko) 2015-07-08

Similar Documents

Publication Publication Date Title
KR102402176B1 (ko) 소프트웨어-규정된 네트워크 엔진에서 패킷 수정 및 포워딩을 위해서 룩업들을 생성하고 결정들을 수행하기 위한 장치 및 방법
KR101615915B1 (ko) 어드밴스드 피처를 갖는 정규 표현식 패턴에 대한 비결정성 유한 오토마톤 (nfa) 생성
US9398033B2 (en) Regular expression processing automaton
US9495479B2 (en) Traversal with arc configuration information
US8819217B2 (en) Intelligent graph walking
US11729300B2 (en) Generating programmatically defined fields of metadata for network packets
US9880844B2 (en) Method and apparatus for parallel and conditional data manipulation in a software-defined network processing engine
US11294841B1 (en) Dynamically configurable pipeline
TWI665894B (zh) 用於利用超級鍵生成並行查找請求的方法和裝置
US11425036B1 (en) Pipelined match-action circuitry
US12021963B2 (en) Methods and systems for distributed high speed state synchronization