TWI665888B - 用於在網路交換機收集針對封包流的多個並行查找查詢的回應的裝置和方法 - Google Patents
用於在網路交換機收集針對封包流的多個並行查找查詢的回應的裝置和方法 Download PDFInfo
- Publication number
- TWI665888B TWI665888B TW104110654A TW104110654A TWI665888B TW I665888 B TWI665888 B TW I665888B TW 104110654 A TW104110654 A TW 104110654A TW 104110654 A TW104110654 A TW 104110654A TW I665888 B TWI665888 B TW I665888B
- Authority
- TW
- Taiwan
- Prior art keywords
- response
- query
- valid
- packet
- vector
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- 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
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- 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
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7452—Multiple parallel or consecutive lookup operations
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本發明提出一種網路交換機中的網路查找引擎,其被配置為向遠端搜尋引擎並行地生成針對每個傳入封包的多個查找請求/查詢。查找查詢的數目和類型依賴於網路交換機支援的協定。在大多數情況下,從搜尋引擎到達查找引擎的回應的順序不同於封包的順序。網路查找引擎被配置為在兩種模式中收集針對並行查找查詢的回應:1)有序模式,其中具有發送到搜尋引擎的其查找查詢的第一封包首先具有收集的其回應,而不管從搜尋引擎接收的回應的順序;2)無序模式,其中具有來自搜尋引擎的對其查找查詢的完整回應的第一封包首先具有收集的其回應,而不管傳入封包的順序。
Description
本發明涉及用於每封包生成並行網路查找請求並且收集針對這些請求的查找回應的查找引擎架構。更具體地,本發明涉及網路交換機中的可重配置網路查找引擎,其每封包生成並行網路查找查詢並且收集針對這些查詢的無序回應。本發明還涉及用於配置引擎以在有序模式或無序模式中收集查找回應的能力。
行進在通信網路上的資料封包本身攜帶包括多個協議層的網路通訊協定棧連同封包資料。協定層說明網路交換機從其發送設備向其接收設備恰當和高效地分類和路由封包。
傳統上,每個網路交換機解析傳入資料封包以理解其包裝的協定棧,然後串列地分析和處理封包中的每個協議層。隨著電晶體尺寸已經遵循摩爾定律而伸縮,網路交換機中的底線硬體已變得越來越快。結果是,期望網路交換機能夠並行地分析每個封包的多個協定層以便提高網路性能。
通過檢驗封包中的若干欄位以看它們是否與一些預定義值匹配,網路交換機現今可以並行地檢驗封包中的多個欄位以用於封包分類。基於匹配結果,封包被分類到特定流以用於進一步處理。此外,網路交換機還可以同時掃描封包中的多個欄位,以用
於針對封包的服務品質和安全性的高效處理。
此外,網路交換機可以在封包的不同協議層上並行地執行多個查找,以便做出快速和恰當的路由決策。對於非限制性示例,網路交換機可以同時在層2上執行MPLS和橋查找並且在層3上執行IP查找。在一些情況下,網路交換機應用優先化決策策略來處理與這些查找查詢對應的查找結果,使得封包被轉發到正確的輸出埠。由於網路正邁向軟體定義的架構,其中預期向網路添加更多新的網路通訊協定,期望網路交換機每封包並行地進行更多查找操作。
為了執行多個並行查找,網路交換機中的網路查找引擎需要針對每個封包建立多個查找鍵,並且在並行查找查詢上向遠端/集中式搜尋引擎發送這些查找鍵。對於每個接收的查找鍵,搜尋引擎然後將在其資料庫中搜索查找資料,並且一段時間後在查找回應上將這一查找資料發送回到查找引擎。
網路交換機通常包括用於不同封包處理目的的若干網路查找引擎,但是具有僅一個(或幾個)由所有這些網路查找引擎共用的集中式搜尋引擎,因為搜尋引擎在矽面積方面是非常昂貴的。搜尋引擎可以在同一時間從這些網路查找引擎接收多個查找查詢。結果是,到達網路查找引擎中的每個網路查找引擎的來自搜尋引擎的查找回應的順序可能與由該網路查找引擎處理的流中的封包的順序不同。此外,相同封包的並行查找查詢可以針對不同協議層,這要求不同的搜索延遲。結果是,並行查找查詢可能在不同時間從搜尋引擎得到回應。網路查找引擎必須保證正確地收集針對它正在處理的封包的查找查詢的這些無序回應。
前述相關領域的示例及其相關限制旨在於是說明性的,而非排它性的。在閱讀說明書和研究附圖時,相關領域的其它限制將變得顯而易見。
一種網路交換機中的網路查找引擎,包括:並行查詢生成器,被配置為:在所述網路交換機接收多個傳入封包的流;針對所述傳入封包中的每個傳入封包在多個查詢線上並行地生成多個查找查詢;將多個並行查找查詢發射到遠端搜尋引擎,所述遠端搜尋引擎處理所述多個並行查找查詢並且生成對所述多個並行查找查詢的回應;並行回應收集器,被配置為:接收和存儲針對所述封包的在多個響應線上的來自所述搜尋引擎的對所述並行查找查詢的所述回應;收集針對所述封包中的每個封包的所述並行查找查詢的有效回應。
一種用於收集對多個並行查找查詢的回應的方法,包括:在網路交換機接收多個傳入封包的流;針對所述傳入封包中的每個傳入封包在多個查詢線上並行地生成多個查找查詢;將多個並行查找查詢發射到遠端搜尋引擎,所述遠端搜尋引擎處理所述多個並行查找查詢並且生成對所述多個並行查找查詢的回應;接收和存儲針對所述封包的在多個響應線上從所述搜尋引擎接收的對所述並行查找查詢的所述回應;收集針對所述封包中的每個封包的所述並行查找查詢的有效回應。
100‧‧‧網路查找引擎
102‧‧‧並行查詢生成器
104‧‧‧查詢線/通道
106‧‧‧回應線/通道
108‧‧‧並行響應收集器
202‧‧‧查詢建立器
204‧‧‧QueryID生成器
302‧‧‧可配置寄存器
304‧‧‧N模環形計數器
306‧‧‧閾值比較塊
308‧‧‧未決查詢計數更新塊
310‧‧‧ID清單
402‧‧‧query_valid_vector陣列
404‧‧‧響應緩衝器
406‧‧‧回應收集控制器
602‧‧‧回應ID篩檢程式(RIDF)
604‧‧‧Response_valid_vector陣列更新(RVVAU)塊
606‧‧‧有效向量比較(VVC)塊
608‧‧‧匹配ID計數器(MIDC)
610‧‧‧等待列表
612‧‧‧環形計數器
614‧‧‧有效向量比較(VVC)塊
702‧‧‧篩檢程式Stage0
1002‧‧‧N個寄存器的陣列
1004‧‧‧寫指針更新
1100‧‧‧流程圖
1102-1110‧‧‧步驟
當與附圖一起閱讀時,從以下詳細描述最好地理解本公開的方面,在附圖中,同樣的附圖標記貫穿不同視圖指代相同部分。注意,依照行業標準做法,各種特徵不是按比例繪製的,並且代之以將重點置於說明本發明的實施例。事實上,為了清楚的討論,各種特徵的尺寸可以任意地增加或減少。本專利申請的範圍並不限於所公開的實施例,而是還包含所公開的實施例的組合以及對所公開的實施例的修改。
第一圖是示出根據本發明的實施例的在網路處理元件/交換機中的網路查找引擎的總體I/O介面的框圖的示例。
第二圖是示出根據本發明的實施例的網路查找引擎的並行查詢生成器的架構的框圖的示例。
第三圖是示出根據本發明的實施例的在網路查找引擎的並行查詢生成器中的QueryID生成器的設計的框圖的示例。
第四圖是示出根據本發明的實施例的網路查找引擎的並行響應收集器的總體架構的框圖的示例。
第五圖是示出根據本發明的實施例的query_valid_vector陣列的設計的框圖的示例。
第六圖是示出根據本發明的實施例的在網路查找引擎的並行回應收集器中的回應收集控制器的架構的框圖的示例。
第七圖是示出根據本發明的實施例的在回應收集控制器中的響應ID篩檢程式的設計的框圖的示例。
第八圖是圖示根據本發明的實施例的具有六個有效輸入的回應ID篩檢程式的操作的示例。
第九圖是圖示根據本發明的實施例的在回應ID篩檢程式中的過濾級的操作的流程圖的示例。
第十圖是示出根據本發明的實施例的在響應收集控制器中的等待列表的設計的框圖的示例。
第十一圖描繪示出根據本發明的實施例的用於收集對多個並行查找查詢的回應的步驟的示例的流程圖。
以下公開內容提供許多不同實施例或示例,以用於實現主題的不同特徵。下面描述部件和佈置的具體示例,以簡化本公開。當然,這些僅僅是示例,並且不旨在是限制性的。此外,本公開可以在各種示例中重複引用數位和/或字母。這種重複是為了簡化和清楚的目的,並且就其本身而言並不指示所討論的各種實施例和/或配置之間的關係。
本發明提出一種新方法,其設想系統和方法經由網路交換機內的網路查找引擎,利用無序回應收集支援收集針對傳入資料封包流中的每個傳入資料封包的多個並行查找請求/查詢的回應。根據所提出的方法,網路查找引擎被配置為每資料封包並行地生成多個查找請求,並且分別在多個查詢線(線s)上向遠端搜尋引擎發射該多個查找請求,並且分別在多個響應線上收集來自搜尋引擎的對多個並行查找查詢的響應。由於與在網路交換機接收的資料封包的順序相比較,來自搜尋引擎的響應可以無序地到達網路查找引擎,所提出的網路查找引擎提供用於收集來自搜尋引擎的查找回應的兩種可重配置模式:1)有序模式,其中傳入封包中具有其發射到搜尋引擎的查找查詢的第一傳入封包具有其首先收集的回應,而不管從搜尋引擎接收的回應的順序;2)無序模式,其中具有從搜尋引擎接收的完整回應的第一封包具有其首先收集的回應,而不管發送查找查詢的傳入封包的順序。
通過提供對無序回應收集的支援,無論傳入封包和/或從搜尋引擎接收的查找回應的順序,所提出的方法都使得能夠正確收集針對網路查找引擎處理的封包流中的每個封包的並行查找查詢的查找回應。根據該方法,那些回應一旦可用,封包就可以收集其查找回應,並且如果所有其回應可用,晚發送其查找查詢的封包可以首先收集其查找回應。以這種方式,總體網路延遲得到改善,因為封包被無序地處理,而無隊頭阻塞問題。
此外,所提出的方法使得用戶能夠控制回應收集是在有序模式中還是在無序模式中操作。在使用者調試和測試網路系統時,有序模式特別有用。在當使用者想要網路盡可能快地運行時的真實操作時間,期望無序模式。本文中,所提出的方法支援由網路查找引擎並行地生成的任何數目和任何類型的查找查詢(這依賴於網路交換機所支援的協定)。
如下文中涉及的,引擎包括具有軟體指令的計算單
元,軟體指令被存儲在計算單元的存儲單元中以用於實踐一個或多個處理。當執行軟體指令時,至少軟體指令的子集由計算單元載入到記憶體/可重配置寄存器中;計算單元變為用於實踐處理的專用計算單元。處理還可以至少部分地體現在電腦程式代碼被載入到其中和/或被執行的計算單元中,因此計算單元變為用於實踐處理的專用計算單元。
第一圖是示出根據本發明的實施例的在網路處理元件/交換機中的網路查找引擎100的總體輸入和輸出介面的框圖的示例。雖然圖將部件描繪為功能上分離,但是這樣的描繪僅僅用於說明性目的。將顯而易見的是,刻畫在這一圖中的部件可以任意地組合或劃分成分離的軟體、固件和/或硬體部件。
在第一圖的示例中,網路查找引擎100被配置為經由下面詳細討論的並行查詢生成器(PQG)102接收多個輸入資料封包並且並行地生成在K個查詢線/通道104上去往遠端搜尋引擎(未示出)的針對封包中的每個封包的多個(例如多達K個)查找查詢。搜尋引擎(其不是本發明的部分)是遠端引擎,其從網路查找引擎100中的一個或多個網路查找引擎100接收查找查詢並且一段時間後返回針對所接收的查找查詢中的每個查找查詢的查找回應(查找結果)。
由於網路查找引擎100被配置為處理連續傳入封包的流,唯一的query_id關聯於每個封包的並行查找查詢中的每個查找查詢,以在不同封包之間區別查找查詢。封包的所有查找查詢應當具有相同的query_id,而不同封包的查詢應當具有不同的query_id。如第一圖所示,查找查詢中的每個查找查詢在查詢線104中的每個查詢線104上包括每封包的query_key和query_有效對,其中query_key是由搜尋引擎用於在其資料庫中搜索匹配查找結果資料的查找鍵,並且query_有效信號指示在該查詢線104上發送的查詢鍵是否有效。如果查詢鍵無效,搜尋引擎將忽略該查找查詢。
對於具有有效query_key並且通過查詢線104發送的每個查找查詢,搜尋引擎一段時間後將在對應回應線/通道106上返回對查找查詢的查找回應,查找回應包含response_data。連同查找response_data一起,搜尋引擎還在每個回應線106上返回response_id,其中response_id等於搜尋引擎從對應查詢線104接收的query_id。然後網路查找引擎100可以基於response_id標識哪個查找查詢由搜尋引擎返回的到達查找回應。本文中,如果確立關聯的response_valid信號,則網路查找引擎100僅考慮在響應線106上到達的response_data。如果它從對應查詢線104接收有效query_key,則搜尋引擎僅在回應線106上返回有效response_data。
在一些實施例中,遠端搜尋引擎可以在同一時間服務不止一個網路查找引擎100,其中每個網路查找引擎100可以向搜尋引擎並行地發送多個查找查詢。此外,在相同封包的每個查詢線104上的查詢類型可以是不同的,這依賴於網路查找引擎100支援的網路通訊協定。因此,用於那些查找查詢的搜索時間可以變化並且在相同封包的所有查找查詢之間可以是不同的,並且對於不同封包的查找查詢是不同的,即使在相同網路查找引擎100處的相同查詢線104上。結果是,具有首先發送的查找查詢的封包可以在具有以後發送的查找查詢的其它封包之後接收其回應。甚至相同封包的並行查詢可以在不同時間從搜尋引擎接收它們的回應。這一複雜情況被稱為“無序查找回應”。
雖然相同封包的並行查詢的回應可以是無序的,但是它們共用相同的response_id,response_id等於該封包的query_id。因此,通過撿拾具有它們的關聯response_id與封包的查找查詢的相同query_id匹配的所有回應,網路查找引擎100可以恰當地收集針對查詢封包的所有回應。對於尚未被收集的查找響應,網路查找引擎100被配置為在它們到達網路查找引擎100時緩衝(存儲)它們,使得它們能夠在以後的時間被收集。
在一些實施例中,如第一圖的示例所示,網路查找引擎100可以包括兩個主要部件:1)並行查詢生成器(PQG)102,其被配置為每封包並行地生成多個(多達K個)查找查詢並且在多個(K個)查詢線104上向搜尋引擎發射這些查找查詢;2)並行響應收集器(PRC)108,其被配置為存儲和收集在多個(K個)響應線106上從搜尋引擎到達/接收的針對先前由PQG 102發送的查找查詢的無序查找回應。
在一些實施例中,PQG 102還被配置為在生成去往搜尋引擎的針對封包的並行查找查詢的同時,向PRC 108提供封包的query_id和query_valid_vector。本文中,query_valid_vector是指示K個查詢線104中的哪些線包含針對該封包的有效查詢鍵的多位(K位)向量。基於這一資訊,使得PRC 108能夠標識它將等待哪個response_id以及K個回應線106中的哪些線以用於收集針對該封包的查找回應。
在完成針對查詢封包的所有有效回應的收集之後,PRC 108被配置為向PQG 102返回collecting_id連同collecting_done信號,其中collecting_done信號通知PQG 102 PRC 108剛剛已完成針對查詢封包的回應收集。本文中,collecting_id等於查詢封包的query_id(其還是對應回應的response_id),使得PQG108可以針對下一傳入封包再迴圈這一query_id。通過再迴圈query_id,網路查找引擎100節省了硬體成本,並且使它的設計可行。
第二圖是示出網路查找引擎100的PQG 102的架構的框圖的示例。如第二圖所示,PQG 102可以包括兩個子塊:1)查詢建立器(QB)202,被配置為每傳入封包生成多個(多達K個)並行查找查詢並且在K個查詢線104上向搜尋引擎發射這些查詢連同query_id;2)QueryID生成器(QIDG)204,被配置為在從查詢建立器202接收id請求時生成用於傳入封包的query_id。
在一些實施例中,查詢建立器202是在網路查找引擎100的網路處理器上運行的共用塊。它的主要任務是生成遵循網路查找引擎100支援的網路通訊協定的針對傳入網路封包的查找請求。查詢建立器202的設計可以基於具有用於支援每封包並行地生成查找查詢的附加功能的任何類型的查找查詢生成器。
在一些實施例中,由網路查找引擎100為每封包的所有並行查找查詢添加唯一的query_id以支持無序查找回應收集。具體地,查詢建立器202從QueryID生成器204獲取每封包的query_id。在從QueryID生成器204接收query_id時,查詢建立器202被配置為向搜尋引擎100發送當前封包的有效查找查詢。此外,查詢建立器202進一步被配置為向PRC 108(下面詳細討論)發送query_valid_vector(其是表示哪些查詢線104攜帶有效查找查詢的K位向量)和query_id,使得PRC可以恰當地收集針對其查找查詢的回應。
在一些實施例中,QueryID生成器204被配置為維護標識號碼(簡稱為id)池。對於從查詢建立器202接收的每個id_req,如果它在其ID池中具有可用的任何id,則QueryID生成器204返回id_ack連同query_id。如果在其ID池中沒有id可用,則QueryID生成器204將撤銷id_ack信號,使得查詢建立器202將暫停(不向搜尋引擎發送針對當前查詢分組的查找查詢),直到它從QueryID生成器204接收到有效query_id。每當查詢建立器202請求query_id時,id取自QueryID生成器204中的ID池。一旦PRC 108完成收集針對該封包的所有有效查詢的查找回應,PRC 108被配置為告知QueryID生成器204將該id添加回到ID池,使得id可以被再迴圈和再使用。除了再迴圈query_id之外,這一方法避免了所有未決封包(正在等待來自搜尋引擎的響應的封包)具有相同的query_id。
第三圖是示出在網路查找引擎102的PQG 102中的
QueryID生成器204的設計的框圖的示例。如第三圖所示,QueryID生成器204可以被配置在兩種收集模式之一中:有序模式和無序模式,其中由命名為cfg_collecting_mode的可配置寄存器302配置順序收集模式。
在有序收集模式中,從N模環形計數器304選擇query_id,N模環形計數器304被配置為環形地有序地返回從0至N-1的id。為了避免相同query_id被用於兩個不同未決封包,未決封包的數目應當不大於N。為了更多的靈活性,命名為cfg_threshold的可配置寄存器被配置為允許使用者對未決封包的數目的閾值進行程式設計(任意地但不大於N)。如第三圖所示,未決查詢計數更新塊308被配置為每當query_id被發送到查詢建立器202時,使未決查詢的數目增加1,並且每當從PRC 108接收collecting_id時,使未決查詢的數目減少1。閾值比較塊306被配置為比較cfg_threshold值與來自未決查詢計數更新塊308的未決查詢封包的數目。從環形計數器304返回的query_id僅在未決封包的數目小於或等於cfg_threshold值的情況下被發送到查詢建立器202。
在無序收集模式中,從ID清單310而不是從環形計數器304選擇query_id。在一些實施例中,ID列表310是被初始化有從0至N-1的任何順序的N個條目的FIFO(先進先出塊)列表。每當查詢建立器202請求query_id時,ID列表310中的第一條目被彈出並發送到查詢建立器202。如果ID列表310為空,則將不向查詢建立器202發送query_id。每當PRC 108返回確立的collecting_id與collecting_done信號時,collecting_id被推送到ID列表310的尾部。再次,如同在有序模式中一樣,使用者可以通過配置cfg_threshold的值來控制未決封包的數目。
第四圖是示出網路查找引擎100的PRC 108的總體架構的框圖的示例。如第四圖所示,PRC 108可以包括以下子塊:1)query_valid_vector陣列(QVVA)402,被配置為緩衝從PQG 102
接收的查詢封包的query_valid_vector;2)多個(K個)響應緩衝器404,每個響應緩衝器404被配置為在從搜尋引擎在K個回應線106上接收的回應資料被收集用於等待的查詢封包之前,臨時存儲該回應資料;3)回應收集控制器(RCC)406,被配置為控制回應收集在有序模式或者無序模式中。
在操作期間,從PQG 102接收的每個封包的query_valid_vector被緩衝到QVVA 402中。由對應接收的query_id給出QVVA 402中用於存儲接收的query_valid_vector的條目位置。QVVA 402被配置為具有多個(N個)條目,以用於存儲由多達N個不同query_id給出的多達N個query_valid_vector。
第五圖是示出QVVA 402的設計的框圖的示例。如第五圖所示,QVVA 402具有N個寄存器(數位觸發器)的陣列。寫指標wr_ptr用於選擇QVVA 402中的哪個寄存器以用於緩衝輸入資料wr_data。在如圖4所示的PRC 108的設計中,QVVA 402的wr_ptr埠連接到query_id信號,並且wr_data埠連接到從PQG 102接收的query_valid_vector信號。
如第四圖所示,QVVA 402具有K+1個讀埠,其中K個讀埠用於由RCC 406在無序模式中讀出多達K個query_valid_vector,以用於與對應response_valid_vector進行比較,其中一個附加讀埠用於在有序模式中讀取一個query_valid_vector。
在如第四圖所示的PRC 108的設計中,從搜尋引擎接收的查找響應在它們等待被收集的同時被存儲在響應緩衝器404中。在一些實施例中,在PRC 108中存在與K個回應線106對應的K個回應緩衝器404,以用於支持PQG 102中的K個查詢線104。對於在回應線106上的每個有效回應,其回應資料被存儲到該回應線上的對應回應緩衝器404中。由在該回應線上接收的關聯response_id給出回應緩衝器404中用於存儲回應資料的條目位
置。在一些實施例中,每個回應緩衝器404是傳統的1寫1讀靜態隨機存取記憶體(SRAM)記憶體。在每個回應線106上接收的response_id和response_valid還被發送到RCC 406以用於進一步收集控制。
在一些實施例中,回應收集控制器(RCC)406被配置為在從回應線106接收response_id和response_valid時,更新所有response_id的response_valid_vector。然後RCC 406檢驗在QVVA 402中存儲的query_valid_vector,以看看在某一id的response_valid_vector與query_valid_vector之間是否存在任何匹配。如果存在匹配(假定在id),則該id被標記為collecting_id。現在RCC 406確認針對具有等於collecting_id的query_id的封包的對應查詢的所有回應已經被存儲在回應緩衝器404中。然後RCC 406向回應緩衝器404發出讀請求,以讀出/收集在由collecting_id給出的條目位置處的有效回應資料。對於每個封包,不是所有響應緩衝器404、而是僅僅由該collecting_id的response_valid_vector標記的響應緩衝器404被讀取。在這一步驟,已經完成了針對封包的回應收集,並且然後RCC 406將collecting_id和collecting_done信號返回到PQG 102,以用於更新QueryID生成器204中的ID池。同時,RCC 406被配置為清除在QVVA 402中collecting_id位置處的query_valid_vector,並且重新開始針對另一封包的另一回應收集回合。
第六圖是示出在網路查找引擎100的PRC 108中的RCC 406的架構的框圖的示例。如第六圖所示,RCC 406包括以下項中的一個或多個:回應ID篩檢程式(RIDF)602,被配置為從每次迴圈由搜尋引擎在K個回應線106上返回的多達K個有效response_id中選擇唯一的/完全不同的id;Response_valid_vector陣列更新(RVVAU)塊604,被配置為存儲和更新針對RIDF 602過濾的所有response_id的response_valid_vector;K個有效向量比
較(VVC)塊606(即一種有效向量比較器),每個有效向量比較(VVC)塊606被配置為比較RVVAU 604中的多達K個response_valid_vector與QVVA 402中的K個query_valid_vector;匹配ID計數器(MIDC)608,被配置為選擇來自K個VVC 606的匹配id;等待清單610,被配置為挑選來自MIDC 608的輸出之一,以用作用於在無序模式中從回應緩衝器404讀取回應資料的讀指標;N模環形計數器612和另一VVC 614,被配置為服務於有序收集模式。
由於存在K個回應線106,可以存在由搜尋引擎在同一時間返回的多達K個有效response_id。這些response_id中的一些response_id可以相同,這意指相同封包的多個查找查詢在同一時間接收它們的回應。在其中所有K個response_id不同的極端情況下,搜尋引擎正在返回針對K個不同封包的K個查找查詢的K個回應。
在操作期間,在K個響應線上的所有到達的有效response_id被傳遞到RIDF 602,RIDF 602每次迴圈僅在它們之中選擇完全不同的response_id。對於每個輸出response_id,RIDF 602還返回表示K個回應線之中的哪些回應線正攜帶該response_id的K位有效向量。在其中所有匹配id相同的極端情況下,RIDF 602選擇僅一個id。在其中所有匹配id全然不同的另一極端情況下,那麼RIDF 602將選擇它們全部。
第七圖是示出在RCC 406中的RIDF 602的設計的框圖的示例。如第七圖所示,RIDF 602包括多個(K個)過濾級702,其中級<i>(stage<i>)被配置為從其有效輸入選擇一個值,然後在移除具有與所選值相同的值的所有輸入之後,向stage<i+1>傳遞剩餘輸入。同時,stage<i>還返回表示移除輸入的位置的K位有效向量。
第八圖描繪圖示RIDF 602的操作的非限制性示例。
在第八圖中描繪的這一示例中,存在去往RIDF 602的六個有效輸入(4、2、1、2、3)。在這六個輸入之中,‘2’和‘4’各自出現2次。RIDF 602的stage0選擇第一輸入是‘4’,移除具有值‘4’的所有輸入,並且返同表示‘4’在輸入列表中的位置的valid_vector‘100010’。剩餘輸入(2、1、2、3)被發送到RIDF 602的stage1。在stage1,選定‘2’,並且輸出valid_vector是表示‘2’在輸入列表中的位置的‘010100’。隨後從輸入中移除所有‘2’。剩餘輸入(1、3)被發送到RIDF 602的stage2。在stage2,‘1’被選定、然後從列表中被移除。stage2的輸出valid_vector是‘001000’,其表示‘1’在輸入列表中的位置。最後,在RIDF 602的stage3,選定僅有的一個剩餘輸入‘3’,並且valid_vector是表示‘3’在輸入列表中的位置的‘000001’。在這一級完成RIDF 602的過濾工作。
如在以上示例中說明的,RIDF 602被配置為更快地完成過濾工作,因為這些輸入中的一些輸入可以相同。這與其中需要K個過濾級過濾K個輸入的傳統方法形成對比。在完成過濾工作之後,RIDF 602的剩餘過濾級應當什麼都不做,以節省功率和能量、以及延遲。為此,RIDF 602的每個過濾級被配置為如果沒有用於過濾的剩餘輸入,則向接下來的級發送filtering_done信號。對於非限制性示例,如果stage<i>發送filtering_done信號,則所有級Stage<i+1>、Stage<i+2>、...、Stage<K-1>停止工作,以節省功率和減小RIDF 602的延遲。
第九圖是圖示在RIDF 602中的過濾級的操作的流程圖的示例。在第九圖的示例中,如果過濾級接收其意指所有輸入已經由先前級過濾的filtering_done信號,則它什麼都不做。否則,過濾級從其輸入列表中選擇第一有效輸入,掃描和建立表示具有與所選輸入相同的值的所有輸入的位置的valid_vector。然後,過濾級從輸入列表中移除所有這些輸入。如果沒有剩餘輸入,過濾級接通filtering_done信號。否則,過濾級向下一過濾級發送剩餘輸入。
在這一操作結束時,RIDF 602被配置為返回多達K個有區別的response_id及其對應response_valid_vector的陣列。每個response_valid_vector是表示在當前次迴圈哪些回應線106正在攜帶對應有效response_id的K位向量。然後這些response_valid_vector被發送到Response_valid_vector陣列更新塊604,Response_valid_vector陣列更新塊604被配置為存儲和更新所有response_id的response_valid_vector的值(在它們被收集之前)。
在一些實施例中,RCC 406被配置為維護RVVAU 604中的N個response_valid_vector的陣列,RVVAU 604相似於如先前討論的包含N個query_valid_vector的QVVA 402。每個response_valid_vector是表示K個回應線之中的哪些回應線106接收到針對某一response_id的有效回應的K位向量。對於某一接收的response_id,它的response_valid_vector通過在由RIDF 602返回的其當前response_valid_vector與在RVVAU 604中存儲的其舊response_valid_vector之間的簡單逐位OR操作來更新。在被更新之後,response_valid_vector然後被存儲回到RVVAU 604。由於可以在同一時間在K個回應線106上接收多達K個有效回應並且接收的response_id可以全然不同,多達K個response_valid_vector可以由RIDF 602返回並且在RVVA更新塊604中同時得到更新。
在有序模式中,重訪第六圖,由N模環形計數器612生成的circular_id被用作讀指針,以在有序收集模式中讀取RVVAU 604中的response_valid_vector和QVVA 402中的query_valid_vector。VVC 614在一起比較這兩個有效向量。如果它們匹配,則當前circular_id被用作用於從響應緩衝器404讀取針對當前封包的有效response_data的collecting_id。如果未找到匹配,這意指搜尋引擎未完整地返回針對當前封包的所有回應,則禁用環形計數器612,使得相同circular_id再次被用於檢驗,直到找到在
其query_valid_vector與其response_valid_vector之間的匹配。由於在這一有序模式中PQG 102中的query_id也由N模環形計數器304生成,所以circular_id在與query_id相同的序列中。正因如此,迫使分組以與它們傳入的順序相同的順序來收集它們的回應,從而保證它們是有序的。
在無序模式中,在更新RVVAU 604的同時,RCC 406也使用由RIDF 602返回的完全不同的response_id作為讀指標,以讀取QVVA 402中的多達K個query_valid_vector。然後使用K個VVC 606比較從QVVA返回的query_valid_vector與RVVAU 604中的對應更新的response_valid_vector,K個VVC 606然後返回多達K個比較匹配結果,其中對於response_id,如果其response_valid_vector等於其query_valid_vector,則比較匹配結果為真。
在一些實施例中,來自K個VVC 606的比較匹配結果被傳遞到匹配ID計數器(MIDC)606,在匹配ID計數器(MIDC)606處僅選擇具有真匹配結果的matched_id。MIDC 606還返回匹配結果的數目。
每次迴圈生成matched_id集,作為MIDC 606的輸出,其中它們中的任何matched_id可以用作用於讀取回應緩衝器404的collecting_id。然而,在每次迴圈僅可以使用matched_id之一。因此,這些matched_id被推送到等待列表610中,使得它們中的每個被依次選擇。
第十圖是示出在RCC 406中的等待列表610的設計的框圖的示例。如第十圖所示,等待列表610可以包括N個寄存器的陣列1002。等待列表610可以具有K個寫埠(這允許同時寫入多達K個匹配id)以及用於每次讀出一個id的僅一個讀埠。in_count信號指示每次迴圈需要將來自MIDC 608的多少有效id寫入到等待列表610中。假定in_count等於m(m<=K),在等待列表610的K
個輸入之中僅有m個輸入in0、in1、...in<m-1>是有效的,並且這m個有效輸入被寫入到等待列表610中的寄存器陣列1002中在由m個寫指針wr_ptr0、wr_ptr1、...、wr_ptr<m-1>給出的位置處。為了簡化,這些輸入可以被寫在陣列1002的連續位置處,因此對於從0至K-1的每一個i,wr_ptr<i>被計算為wr_ptr0+i。由於存在從0至N-1索引的固定數目的N個寄存器,wr_ptr<i>實際上是為N的模。在m個有效輸入被寫到等待列表610之後,wr_ptr0將被更新為其等於舊wr_ptr0+m的新值;然後遵循新wr_ptr0,相應地更新其它指標wr_ptr1至wr_ptr<K-1>。如第十圖所示,由寫指針更新塊1004來更新寫指針。
注意,每次僅從等待列表610讀出一個id。為了簡化,讀指標rd_ptr由如第六圖所示的簡單N模環形計數器612來控制。雖然由環形計數器612給出的讀指標是有序的,但是輸出id的值可以是任意順序的,因為由於搜尋引擎返回的無序response_id,從MIDC 608輸出的matched_id是任意的,所以寫入到等待列表610中的id是隨機的。
在第六圖的示例中,其與第三圖中的寄存器cfg_collecting_mode 302相同的可配置寄存器cfg_collecting_mode被相應地設置,以選定用於回應收集的順序。對於有序收集模式,從環形計數器612選定collecting_id。在這一模式中,發送查找查詢的第一封包首先得到回應收集,而不管來自搜尋引擎的回應的順序。對於無序收集模式,從等待清單610的輸出選定collecting_id,其中已經接收到搜尋引擎的完整回應的第一封包是得到其收集的回應的第一封包,而不管傳入查詢封包的順序。在任一模式中,在RCC 406向回應緩衝器404發出用於讀出在collecting_id給出的條目位置處的回應資料的讀命令之後,RCC 406還清除在該條目位置處的RVVAU 604中的response_valid_vector和QVVA 402中的query_valid_vector。
第十一圖描繪示出根據本發明的實施例的用於收集對多個並行查找查詢的回應的步驟的示例的流程圖。雖然為了說明的目的圖以特定順序來描繪功能步驟,但是處理並不限於任何特定的步驟順序或佈置。相關領域技術人員將理解,這一圖中刻畫的各種步驟可以被省略、重佈置、組合和/或以各種方式適配。
在第十一圖的示例中,流程圖1100開始於步驟1102,在步驟1102在網路交換機接收多個傳入封包的流。流程圖1100繼續到步驟1104,在步驟1104針對傳入封包中的每個傳入封包在多個查詢線上並行地生成多個查找查詢。流程圖1100繼續到步驟1106,在步驟1106多個並行查找查詢被發射到其處理多個並行查找查詢並且生成對多個並行查找查詢的回應的遠端搜尋引擎。流程圖1100繼續到步驟1108,在步驟1108接收和存儲在多個響應線上的來自搜尋引擎的針對封包的並行查找查詢的回應。流程圖1100結束於步驟1110,在步驟1110收集針對封包中的每個封包的並行查找查詢的有效回應。
為了解釋的目的,前述描述使用特定術語來提供對本發明的透徹理解。然而,對於本領域技術人員來說將顯而易見的是,並不要求特定細節以便實踐本發明。因此,對本發明的特定實施例的前述描述是為了說明和描述的目的而給出的。它們不旨在是窮舉式的或者將本發明限於所公開的精確形式;顯然,鑒於以上教導,許多修改和變化是可能的。實施例被選擇和描述以便最好地解釋本發明的原理及其實際應用,由此它們使得本領域其他技術人員能夠最好地利用本發明,並且具有各種修改的各種實施例適合於設想的具體用途。因此要理解的是,在所附權利要求的範圍內,除了如本文中具體描述的之外,可以以其它方式來實踐本發明。旨在的是,所附權利要求及其等同物限定本發明的範圍。
Claims (31)
- 一種網路交換機中的網路查找裝置,包括:一硬體並行查詢生成器,被配置為:在所述網路交換機接收多個傳入封包的流;針對每個個別的傳入封包在多個查詢線上並行地生成多個查找查詢,其中每個個別的傳入封包係以生成的該等查找查詢中的一不同查詢進行處理;將多個並行查找查詢發射到遠端搜尋引擎,所述遠端搜尋引擎處理所述多個並行查找查詢並且生成對所述多個並行查找查詢的回應;一硬體並行回應收集器,被配置為:並行地接收和存儲針對所述封包的在多個響應線上的來自所述搜尋引擎的對所述並行查找查詢的所述回應;收集針對所述封包中的每個封包的所述並行查找查詢的有效回應。
- 根據申請專利範第1項所述的網路查找裝置,其中:所述網路查找裝置被配置為支援有序收集模式,在所述有序收集模式中,具有由所述硬體並行查詢生成器生成和發射的其查找查詢的第一封包首先得到由所述硬體並行回應收集器收集的其查找回應,而不管由所述搜尋引擎返回的所述查找回應的順序。
- 根據申請專利範圍第1項所述的網路查找裝置,其中:所述網路查找裝置被配置為支援無序模式,在所述無序模式中,具有從所述搜尋引擎接收的對其查找查詢的完整回應的第一封包首先具有由所述硬體並行回應收集器收集的其查找回應,而不管所述傳入封包的順序。
- 根據申請專利範圍第2項所述的網路查找裝置,其中所述收集模式能夠通過可配置寄存器由軟體配置。
- 根據申請專利範圍第1項所述的網路查找裝置,其中所述硬體並行查詢生成器包括:查詢建立器,被配置為每輸入封包生成針對所述多個並行查找查詢的多個查找鍵;query_id生成器,被配置為每輸入封包生成用於所有所述並行查找查詢的唯一query_id。
- 根據申請專利範圍第5項所述的網路查找裝置,其中:所述查詢建立器被配置為針對每個封包從所述query_id生成器獲取query_id;其中僅當所述query_id生成器返回有效query_id時才允許所述查詢建立器向所述搜尋引擎發射所述封包的所述查找查詢。
- 根據申請專利範圍第5項所述的網路查找裝置,其中所述query_id生成器包括:N模環形計數器,被配置為在有序模式中生成多個query_id;具有N個條目的id清單,被配置為在無序模式中保持所述多個query_id;以及未決封包計數器,被配置為對具有查找查詢已被發送但是來自所述搜尋引擎的對所述查找查詢的所述回應尚未被完全收集的未決封包的數目進行計數;第一可配置寄存器,被配置為使得使用者能夠配置未決封包的最大數目;第二可配置寄存器,被配置為使得所述使用者能夠在所述有序模式與所述無序模式之間進行選擇。
- 根據申請專利範圍第7項所述的網路查找裝置,其中所述id列表是N深度先進先出(FIFO)列表,在所述N深度先進先出(FIFO)列表中條目由0至N-1以任意順序被初始化。
- 根據申請專利範圍第7項所述的網路查找裝置,其中在所述無序模式中使用所述id列表,其中每當所述query_id生成器從所述查詢建立器接收到id請求信號時彈出query_id,並且其中每當所述query_id生成器從所述硬體並行回應收集器接收到collecting_done信號時推入collecting_id。
- 根據申請專利範圍第7項所述的網路查找裝置,其中所述第一可配置寄存器的值不大於N,以限制未決封包的所述數目並且以避免兩個未決封包具有相同query_id。
- 根據申請專利範圍第7項所述的網路查找裝置,其中在所述硬體並行回應收集器已經完成收集針對先前關聯於query_id的封包的所有查找回應之後,該query_id被再迴圈用於新封包。
- 根據申請專利範圍第7項所述的網路查找裝置,其中所述query_id生成器被配置為向所述硬體並行回應收集器發送封包的query_valid_vector連同所述封包的所述query_id,其中所述query_valid_vector是表示所述多個查詢線之中的哪些查詢線包含針對該封包的有效查找查詢的K位向量。
- 根據申請專利範圍第1項所述的網路查找裝置,其中所述硬體並行回應收集器包括:多個回應緩衝器,被配置為在針對所述封包的這些回應得以被收集之前,存儲在所述回應線上從所述搜尋引擎接收的所述查找回應;query_valid_vector陣列,被配置為存儲所述封包的多個query_valid_vector;以及回應收集控制器,被配置為控制針對所述封包的回應收集。
- 根據申請專利範圍第13項所述的網路查找裝置,其中每個回應緩衝器是傳統一讀一寫N深度靜態隨機存取記憶體(SRAM)記憶體。
- 根據申請專利範圍第13項所述的網路查找裝置,其中接收的所述回應被寫在由所述回應的response_id給出的所述回應緩衝器的條目位置處,並且收集的所述回應被收集在由所述回應收集控制器給出的collecting_id指向的位置處。
- 根據申請專利範圍第13項所述的網路查找裝置,其中所述query_valid_vector陣列是具有一個寫埠和K+1個讀埠的N個寄存器的陣列。
- 根據申請專利範圍第16項所述的網路查找裝置,其中所述一個寫埠用於將每查詢封包的所述query_valid_vector寫在由查詢分組的關聯query_id給出的位置處。
- 根據申請專利範圍第16項所述的網路查找裝置,其中K個所述讀埠用於由所述回應收集控制器在所述無序模式中讀取所述query_valid_vector,其中另一個所述讀埠用於由所述回應收集控制器在所述有序模式中讀取一個query_valid_vector。
- 根據申請專利範圍第13項所述的網路查找裝置,其中所述回應收集控制器進一步包括:回應ID篩檢程式,被配置為在由所述搜尋引擎返回的所述response_id之中選擇唯一response_id並且建立針對這些唯一response_id的有效向量;response_valid_vector陣列更新塊,被配置為更新由所述回應ID篩檢程式濾出的所述唯一response_id的所述response_valid_vector;以及N模環形計數器和有效向量比較器,被配置為在所述有序模式中收集所述回應;多個有效向量比較器,被配置為在所述無序模式中比較所述response_valid_vector陣列中的多個response_valid_vector與所述query_valid_vector陣列中的所述多個query_valid_vector;以及匹配id計數器,被配置為在所述無序模式中從由所述有效向量比較器返回的匹配結果得到matched_id;等待清單,被配置為在所述無序模式中緩衝和選擇來自由所述匹配id計數器返回的所述id的一個id;以及可配置寄存器,被配置為使得所述使用者能夠在所述有序模式與所述無序模式之間進行選擇。
- 根據申請專利範圍第19項所述的網路查找裝置,其中所述回應id篩檢程式包括多個過濾級,其中所述過濾級中的每個過濾級被配置為接收來自所述過濾級的先前級的輸出的輸入、在所述輸入之中選擇一個有效輸入、同時掃描和返回表示具有與選擇的一個輸入相同的值的所述輸入的位置的多位有效向量、移除所有這些所述輸入並且將剩餘輸入傳遞到下一過濾級。
- 根據申請專利範圍第20項所述的網路查找裝置,其中所述過濾級中的每個過濾級被配置為如果所述過濾級不具有用於傳遞到所述下一過濾級的剩餘有效輸入,則確立filtering_done輸出信號,從而使得所有接下來的級停止工作以節省功率並且減少總體延遲。
- 根據申請專利範圍第19項所述的網路查找裝置,其中所述response_valid_vector陣列包括被配置為存儲所述response_id的所述response_valid_vector的多個寄存器。
- 根據申請專利範圍第22項所述的網路查找裝置,其中每次當所述搜尋引擎在所述回應線上返回不同的有效response_id時,所述response_valid_vector得以被更新。
- 根據申請專利範圍第22項所述的網路查找裝置,其中response_id的所述response_valid_vector是表示所述回應線中的哪個回應線已經返回了針對該response_id的有效回應的多位向量。
- 根據申請專利範圍第19項所述的網路查找裝置,其中每個有效向量比較器被配置為比較所述response_valid_vector陣列中的response_valid_vector與所述query_valid_vector陣列中由相同id指向的位置處的query_valid_vector。
- 根據申請專利範圍第19項所述的網路查找裝置,其中所述等待列表進一步包括:寄存器的陣列,被配置為存儲所述marched_id;寫指標更新塊,被配置為更新多個寫指標;N模環形計數器,被配置為更新一個讀指標。
- 根據申請專利範圍第19項所述的網路查找裝置,其中所述可配置寄存器用於在所述有序模式中從所述環形計數器或者在所述無序模式中從所述等待列表選擇所述collecting_id。
- 根據申請專利範圍第19項所述的網路查找裝置,其中所述回應收集控制器被配置為每當針對封包的回應已被收集時,清除在由所述collecting_id給出的位置處的所述response_valid_vector陣列中的所述response_valid_vector和所述query_valid_vector陣列中的所述query_valid_vector。
- 一種用於收集對多個並行查找查詢的回應的方法,包括:在網路交換機接收多個傳入封包的流;針對每個個別的傳入封包在多個查詢線上並行地生成多個查找查詢,其中每個個別的傳入封包係以生成的該等查找查詢中的一不同查詢進行處理;將多個並行查找查詢發射到遠端搜尋引擎,所述遠端搜尋引擎處理所述多個並行查找查詢並且生成對所述多個並行查找查詢的回應;並行地接收和存儲針對所述封包的在多個響應線上從所述搜尋引擎接收的對所述並行查找查詢的所述回應;收集針對所述封包中的每個封包的所述並行查找查詢的有效回應。
- 根據申請專利範圍第29項所述的方法,進一步包括:支援有序收集模式,在所述有序收集模式中,具有生成和發射的其查找查詢的第一封包首先得到收集的其查找回應,而不管由所述搜尋引擎返回的所述查找回應的順序。
- 根據申請專利範圍第29項所述的方法,進一步包括:支援無序模式,在所述無序模式中,具有來自所述搜尋引擎的對其查找查詢的完整回應的第一封包首先具有收集的其查找回應,而不管所述傳入封包的順序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/632,709 US10430472B2 (en) | 2015-02-26 | 2015-02-26 | Apparatus and method for collecting responses to a plurality of parallel lookup queries from a flow of packets at a network switch |
US14/632,709 | 2015-02-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201631927A TW201631927A (zh) | 2016-09-01 |
TWI665888B true TWI665888B (zh) | 2019-07-11 |
Family
ID=56798952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104110654A TWI665888B (zh) | 2015-02-26 | 2015-04-01 | 用於在網路交換機收集針對封包流的多個並行查找查詢的回應的裝置和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10430472B2 (zh) |
TW (1) | TWI665888B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11080274B2 (en) * | 2017-01-17 | 2021-08-03 | Futurewei Technologies, Inc. | Best-efforts database functions |
CN109977259A (zh) * | 2019-03-28 | 2019-07-05 | 北京奇艺世纪科技有限公司 | 一种数据查询方法、装置及电子设备 |
US11269644B1 (en) | 2019-07-29 | 2022-03-08 | Marvell Asia Pte, Ltd. | System and method for implementing strong load ordering in a processor using a circular ordering ring |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490574B1 (en) * | 1997-12-17 | 2002-12-03 | International Business Machines Corporation | Method and system for managing rules and events in a multi-user intelligent agent environment |
US6990102B1 (en) * | 2001-05-10 | 2006-01-24 | Advanced Micro Devices, Inc. | Parallel lookup tables for locating information in a packet switched network |
CN101320390A (zh) * | 2004-06-25 | 2008-12-10 | 苹果公司 | 数据管理方法和系统 |
TW201032077A (en) * | 2009-01-12 | 2010-09-01 | Micron Technology Inc | Devices, systems, and methods for communicating pattern matching results of a parallel pattern search engine |
EP2407900A1 (en) * | 2010-07-16 | 2012-01-18 | Google Inc. | Batch prospective searching |
US8125991B1 (en) * | 2007-07-31 | 2012-02-28 | Hewlett-Packard Development Company, L.P. | Network switch using managed addresses for fast route lookup |
US20140281138A1 (en) * | 2013-03-15 | 2014-09-18 | Vijay Karamcheti | Synchronous mirroring in non-volatile memory systems |
CN104079424A (zh) * | 2013-03-29 | 2014-10-01 | 国际商业机器公司 | 用于非对称链路聚合的装置和方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6606613B1 (en) * | 1999-06-03 | 2003-08-12 | Microsoft Corporation | Methods and apparatus for using task models to help computer users complete tasks |
US7877484B2 (en) * | 2004-04-23 | 2011-01-25 | International Business Machines Corporation | System and method for bulk processing of semi-structured result streams from multiple resources |
US8553686B2 (en) | 2010-04-28 | 2013-10-08 | Broadcom Corporation | Performing actions on frame entries in response to receiving bulk instruction |
WO2012126180A1 (en) * | 2011-03-24 | 2012-09-27 | Microsoft Corporation | Multi-layer search-engine index |
US8775727B2 (en) * | 2012-08-31 | 2014-07-08 | Lsi Corporation | Lookup engine with pipelined access, speculative add and lock-in-hit function |
US9501537B2 (en) * | 2012-11-28 | 2016-11-22 | Sap Se | Parallel display of multiple query results |
US9460154B2 (en) * | 2012-12-04 | 2016-10-04 | Oracle International Corporation | Dynamic parallel aggregation with hybrid batch flushing |
US9354884B2 (en) * | 2013-03-13 | 2016-05-31 | International Business Machines Corporation | Processor with hybrid pipeline capable of operating in out-of-order and in-order modes |
US9262476B2 (en) * | 2014-01-10 | 2016-02-16 | Red Hat, Inc. | System and method for batch query processing |
US10229208B2 (en) * | 2014-07-28 | 2019-03-12 | Facebook, Inc. | Optimization of query execution |
US9553807B2 (en) * | 2014-12-24 | 2017-01-24 | Nicira, Inc. | Batch processing of packets |
-
2015
- 2015-02-26 US US14/632,709 patent/US10430472B2/en active Active
- 2015-04-01 TW TW104110654A patent/TWI665888B/zh active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490574B1 (en) * | 1997-12-17 | 2002-12-03 | International Business Machines Corporation | Method and system for managing rules and events in a multi-user intelligent agent environment |
US6990102B1 (en) * | 2001-05-10 | 2006-01-24 | Advanced Micro Devices, Inc. | Parallel lookup tables for locating information in a packet switched network |
CN101320390A (zh) * | 2004-06-25 | 2008-12-10 | 苹果公司 | 数据管理方法和系统 |
US8125991B1 (en) * | 2007-07-31 | 2012-02-28 | Hewlett-Packard Development Company, L.P. | Network switch using managed addresses for fast route lookup |
TW201032077A (en) * | 2009-01-12 | 2010-09-01 | Micron Technology Inc | Devices, systems, and methods for communicating pattern matching results of a parallel pattern search engine |
EP2407900A1 (en) * | 2010-07-16 | 2012-01-18 | Google Inc. | Batch prospective searching |
US20140281138A1 (en) * | 2013-03-15 | 2014-09-18 | Vijay Karamcheti | Synchronous mirroring in non-volatile memory systems |
CN104079424A (zh) * | 2013-03-29 | 2014-10-01 | 国际商业机器公司 | 用于非对称链路聚合的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201631927A (zh) | 2016-09-01 |
US20160253417A1 (en) | 2016-09-01 |
US10430472B2 (en) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102314619B1 (ko) | 소프트웨어-규정된 네트워크 엔진에서 패킷 수정 및 포워딩을 위해서 룩업들을 생성하고 결정들을 수행하기 위한 장치 및 방법 | |
KR101615915B1 (ko) | 어드밴스드 피처를 갖는 정규 표현식 패턴에 대한 비결정성 유한 오토마톤 (nfa) 생성 | |
US8051085B1 (en) | Determining regular expression match lengths | |
US9495479B2 (en) | Traversal with arc configuration information | |
US9419903B2 (en) | Structure for implementing openflow all group buckets using egress flow table entries | |
US8594131B1 (en) | Packet processing on a multi-core processor | |
US9906445B2 (en) | Packet processing match and action pipeline structure with dependency calculation removing false dependencies | |
TWI665888B (zh) | 用於在網路交換機收集針對封包流的多個並行查找查詢的回應的裝置和方法 | |
US8943085B2 (en) | Start pointer tracking in NFAs | |
JP2007208963A (ja) | パケット処理装置及びパケット処理方法 | |
US10038571B2 (en) | Method for reading and writing forwarding information base, and network processor | |
TW200525954A (en) | Network message processing using inverse pattern matching | |
AU2003234641B2 (en) | Inter-chip processor control plane | |
US20160142316A1 (en) | Apparatus and method for scalable and flexible table search in a network switch | |
KR101688635B1 (ko) | 플로우 기반 트래픽 저장 장치 및 방법 | |
US8255623B2 (en) | Ordered storage structure providing enhanced access to stored items | |
EP3264716B1 (en) | State transition compression mechanism to efficiently compress dfa based regular expression signatures | |
WO2015165323A1 (zh) | 一种数据处理方法、处理器及数据处理设备 | |
CN105323164B (zh) | 减少灵活的解析器中的延迟的方法及其装置 | |
Matoušek et al. | Regular expression matching with pipelined delayed input dfas for high-speed networks | |
Wijekoon et al. | High performance flow matching architecture for OpenFlow data plane | |
US9641437B2 (en) | Packet relay device and packet relay method | |
CN114553757B (zh) | 基于可编程交换机的协议报文处理方法、装置和设备 | |
WO2023220483A2 (en) | An architecture and algorithm for a programmable pipeline to support stateful packet processing | |
CN114492621A (zh) | 一种多域网包分类处理方法及装置 |