新四季網

第三方控制的數據包轉發路徑的網絡裝置數據平面沙盒的製作方法

2023-05-09 19:50:02


本公開涉及基於數據包的計算機網絡,並且更具體而言,涉及在計算機網絡裝置內處理數據包。



背景技術:

計算機網絡是可以交換數據和分享資源的大量互連的計算裝置的集合。實例網絡裝置包括在開放系統互連(osi)參考模型的第二層(即,數據鏈路層)內操作的層2裝置以及在osi參考模型的第三層(即,網絡層)內操作的層3裝置。計算機網絡內的網絡裝置通常包括控制單元,其為網絡裝置和用於路由或切換數據單元的轉發元件提供控制平面功能。在一些情況下,例如,網絡裝置可以包括多個數據包處理器和交換結構,其共同提供轉發平面,用於轉發網絡流量。

由控制單元提供的控制平面功能包括以路由信息庫(rib)的形式儲存網絡拓撲,執行路由協議以與對等路由裝置通信從而保持和更新rib,並且提供管理接口以允許網絡裝置的用戶訪問和配置。控制單元保持表示網絡的總體拓撲的路由信息並且限定在網絡內到目的地前綴的路由。

控制單元獲得轉發信息庫(fib),其包括由控制單元根據路由信息和控制信息生成的多個轉髮結構。控制單元在數據平面內安裝轉髮結構,以可編程地配置轉發元件。構成轉髮結構的數據和指令為網絡裝置接收的每個進入數據包限定內部轉發路徑。例如,為了生成路由表查找轉髮結構,控制單元選擇由網絡拓撲限定的路徑並且將數據包關鍵信息(例如,目的地信息和來自數據包報頭的其他選擇信息)映射到一個或多個特定的下一跳網絡裝置並且最後映射到網絡裝置的接口卡的一個或多個特定的輸出接口。在某些情況下,控制單元可以將轉髮結構安裝到每個數據包處理器內,以在每個數據包處理器內更新fib並且在數據平面內控制流量轉發。分支控制和數據平面功能允許更新數據平面內的一個或多個fib,而不使網絡裝置的數據包轉發性能退化。



技術實現要素:

總體上,本公開描述了用於促進受約束的第三方訪問網絡裝置數據平面的內部數據包轉發路徑的技術。例如,網絡裝置轉發路徑可以配置有一個或多個「沙盒」,每個沙盒在總體轉發路徑內分界獨立的、並行的以及異步轉發路徑邏輯。雖然總體轉發路徑由本地應用程式和處理來管理和配置,本地應用程式和處理在網絡裝置控制平面內執行並且由網絡裝置製造商開發以管理網絡裝置的操作,但是本地應用程式可以在總體轉發路徑內配置一個或多個沙盒。將在沙盒內的轉發路徑邏輯的配置委託給第三方開發的一個或多個應用程式(「第三方應用程式」),所述第三方應用程式由網絡裝置製造商開發並且網絡裝置製造商很少或者不控制所述第三方應用程式。

一旦在網絡裝置的數據平面的數據包處理器(例如,轉發集成電路)內配置,沙盒就可以通過這種方式向第三方應用程式呈現在數據包處理器內的獨立的、隔離的、虛擬數據包處理器,使得第三方應用程式在沙盒的確定範圍內完全控制由轉發邏輯執行的操作。為了執行隔離,沙盒可以由本地應用程式配置有定義明確的輸入和輸出接口,通過所述接口,數據包分別進入和離開網絡裝置的數據包處理器的總體轉發路徑。

在一些實例中,響應於從控制平面應用程式中接收指令而配置轉發路徑的數據包處理器驅動器向應用程式暴露單獨的接口:為轉發路徑提供全套數據包處理操作的本地接口以及為轉發路徑提供更少的一組數據包處理操作的沙盒接口。本地接口允許網絡裝置的本地應用程式使用數據包處理器可用的任何數據包處理操作來配置總體轉發路徑,包括配置一個或多個沙盒。沙盒接口使第三方應用程式能夠為沙盒配置從更少的一組數據包處理操作中提取的數據包處理操作。由沙盒接口通過這種方式提供的更少的一組數據包處理操作約束了允許應用於由沙盒處理的數據包流的操作的類型,但是促進由第三方應用程式完全控制沙盒。

所描述的技術可以提供一個或多個優點。例如,在總體轉發路徑內隔離沙盒可以保護沙盒轉發邏輯遠離剩餘的轉發路徑轉發邏輯,反之亦然。進一步,使沙盒的控制與本地應用程式分離,減少並且至少在某些情況下消除了在轉發邏輯中於沙盒與剩餘的轉發路徑之間的配置依賴性,使得沙盒和剩餘的轉發路徑可以作為並行異步的部件被配置和執行。

而且,在某些情況下,由沙盒接口提供的更少的一組數據包處理操作可以約束在沙盒內可執行的操作的類型,以尤其防止沙盒轉發邏輯從沙盒中「跳出」,並且由此限制數據包處理操作離開由本地應用程式配置的定義明確的出口埠。更少的一組數據包處理操作通過這種方式進一步促進沙盒隔離。作為另一個實例優點,通過例如根據由網絡裝置運營商規定的配置為沙盒配置指定的資源限制,本地應用程式可以約束可用於沙盒的資源量。這可以防止第三方應用程式因錯誤配置、軟體問題或對網絡裝置或第三方應用程式/控制器的惡意攻擊而耗盡轉發路徑資源。

在一個實例中,一種方法包括:由網絡裝置的控制平面執行的第一應用程式經由由網絡裝置的轉發單元執行的第一接口為所述轉發單元的內部轉發路徑配置確定處理由所述轉發單元接收的數據包的第一指令,其中,所述第一應用程式將所述內部轉發路徑配置成包括沙盒,所述沙盒包括用於在所述內部轉發路徑內內聯配置的指令的容器,並且其中,所述內部轉發路徑的至少一部分儲存到所述轉發單元的存儲器中並且由所述轉發單元的數據包處理器可執行。所述方法還包括:由網絡裝置的控制平面執行的第二應用程式經由由網絡裝置的轉發單元執行的第二接口為所述沙盒配置確定在所述沙盒內處理數據包的第二指令。所述方法還包括:響應於確定由所述轉發單元接收的數據包與至少部分由第二應用程式控制的數據包流相關聯,由所述數據包處理器通過執行為所述沙盒配置的第二指令,來處理所述數據包。

在另一個實例中,一種網絡裝置包括:控制平面,其被配置成執行第一應用程式和第二應用程式;以及轉發單元,包括:接口卡,其被配置成接收數據包;數據包處理器,其可操作地耦接至存儲器;內部轉發路徑,其中,所述內部轉發路徑的至少一部分儲存到所述存儲器中並且由數據包處理器可執行;轉發單元處理器;以及第一接口和第二接口,其被配置成由所述轉發單元處理器執行,其中,所述第一應用程式被配置成通過所述第一接口將所述內部轉發路徑配置成包括沙盒,所述沙盒包括用於在所述內部轉發路徑內內聯配置的指令的容器,其中,所述第二應用程式被配置成通過所述第二接口為所述沙盒配置有確定在所述沙盒內處理數據包的第二指令,並且其中,所述數據包處理器被配置成響應於確定由所述轉發單元接收的數據包與至少部分由第二應用程式控制的數據包流相關聯,通過執行為所述沙盒配置的第二指令,來處理所述數據包。

在另一個實例中,一種永久性計算機可讀介質包括指令,所述指令用於促使網絡裝置的一個或多個可編程處理器執行以下:通過被配置成由網絡裝置的控制平面執行的第一應用程式經由被配置成由網絡裝置的轉發單元執行的第一接口為所述轉發單元的內部轉發路徑配置有確定處理由所述轉發單元接收的數據包的第一指令,其中,所述第一應用程式將所述內部轉發路徑配置成包括沙盒,所述沙盒包括用於在所述內部轉發路徑內內聯配置的指令的容器,並且其中,所述內部轉發路徑的至少一部分儲存到所述轉發單元的存儲器中並且由所述轉發單元的數據包處理器可執行,其中,所述數據包處理器是所述一個或多個可編程處理器的可編程處理器;通過被配置成由網絡裝置的控制平面執行的第二應用程式經由被配置成由網絡裝置的轉發單元執行的第二接口為所述沙盒配置有確定在所述沙盒內處理數據包的第二指令;並且由所述數據包處理器響應於確定由所述轉發單元接收的數據包與至少部分由第二應用程式控制的數據包流相關聯,通過執行為所述沙盒配置的第二指令來處理所述數據包。

在附圖和以下描述中陳述本發明的一個或多個實施方式的細節。通過描述和附圖並且通過權利要求,本發明的其他特徵、目標以及優點將變得顯而易見。

附圖說明

圖1是示出根據本文中描述的技術配置數據平面沙盒的實例網絡裝置的方框圖;

圖2是進一步詳細示出圖1的網絡裝置的示例實例的方框圖;

圖3是示出具有根據本公開中描述的技術配置的轉發路徑沙盒(sandbox)的網絡裝置數據平面的方面的方框圖;

圖4是進一步詳細示出根據本公開中描述的技術配置的示例沙盒的方框圖;

圖5是示出根據本公開中描述的技術配置的網絡裝置的元件的方框圖;

圖6是示出用於根據本公開中描述的技術配置和使用數據平面沙盒的網絡裝置的示例操作模式的流程圖。

在整個附圖和文本中,相似的參考字符表示相似的部件。

具體實施方式

圖1是示出根據在本文中描述的技術配置數據平面沙盒的示例網絡裝置的方框圖。網絡裝置10可以包括路由器,例如,提供商邊緣或用戶邊緣路由器、核心路由器、或另一種類型的網絡裝置,例如,交換機。在該實例中,網絡裝置10包括為裝置提供控制平面功能的控制單元12。網絡裝置10還包括多個轉發單元20a–20n(「轉發單元20」)和交換結構26,其共同提供數據平面,以用於處理網絡流量。轉發單元20通過接口卡22a–22n(「ifc22」)的接口接收和發送數據包,每個接口卡與相應的一個轉發單元20相關聯。每個轉發單元20及其相關聯的ifc22可以表示可插入網絡裝置10的底盤(未示出)內的單獨線卡。示例線卡包括柔性可編程集成電路(pic)集中器(fpc)、密度埠集中器(dpc)以及模塊埠集中器(mpc)。每個ifc22可以包括層2(l2)技術的各種組合的接口,包括乙太網、千兆乙太網(gige)以及同步光纖網絡(sonet)接口,這些接口提供l2接口,以用於傳輸網絡數據包。在各個方面,每個轉發單元20可以包括更多或更少的ifc。交換結構26提供轉發單元20之間的高速互連,用於將進入的數據包轉發給轉發單元20的出口轉發單元,以通過包括網絡裝置10的網絡輸出。

控制單元12由內部通信鏈路28連接至每個轉發單元20。例如,內部通信鏈路28可以包括100mbps乙太網連接。通過內部通信鏈路28發送指令和其他配置數據,控制單元12將轉發單元20配置成限定應用於由轉發單元20接收的數據包的數據包處理操作。

控制單元12執行多個應用程式,包括本地應用程式14a–14k(「本地應用程式14」)和第三方應用程式15。每個應用程式可以表示由控制單元作業系統管理的單獨處理。本地應用程式14可以表示由網絡裝置10的製造商開發和部署的用戶級處理。這樣,本地應用程式14位於網絡裝置10的「本地」,這是因為應用程式的開發由製造商仔細管理,以促進網絡裝置10的安全、穩健以及可預測的操作,至少部分根據運營商(例如,服務提供商、企業或網絡裝置10製造商的其他用戶)規定的配置限定這種操作。除了其他功能,本地應用程式14還可以運行網絡管理軟體,執行路由協議以與對等路由裝置通信,保持和更新一個或多個路由表,並且創建一個或多個轉發表以安裝到轉發單元20中。

第三方應用程式15表示通過沙盒接口18配置沙盒的應用程式。「第三方」通常是網絡裝置10的運營商,而非網絡裝置10的製造商。然而,應用程式15不必由第三方開發,並且在某些情況下可以例如是由網絡裝置10的製造商開發的應用程式。在某些情況下,第三方應用程式15提供外部api,通過該外部api,外部控制器(例如,軟體限定的網絡控制器和網絡管理系統)可以發送表示由轉發單元20執行的數據包處理操作的數據。在這種情況下,第三方應用程式15操作作為到外部控制器的網絡裝置10數據平面的接口。

控制單元12可以包括一個或多個處理器(在圖1未示出),所述處理器執行軟體指令,例如,用於限定軟體或電腦程式的指令,該軟體指令儲存到計算機可讀儲存介質(再次在圖1未示出)中,例如,永久性計算機可讀介質,包括儲存裝置(例如,硬碟驅動器或光學驅動器)和/或存儲器,例如,隨機存取存儲器(ram)(包括各種形式的動態ram(dram),例如,ddr2sdram,或靜態ram(sram))、閃速存儲器、可以用於以指令或數據結構的形式承載或儲存期望的程序代碼和程序數據的並且可以由處理器訪問的另一種形式的固定或可移除的儲存介質、或者儲存用於促使一個或多個處理器執行在本文中描述的技術的指令的任何其他類型的易失性或非易失性存儲器。可替換地或者此外,控制單元12可以包括專用硬體,例如,一個或多個集成電路、一個或多個專用集成電路(asic)、一個或多個專用特殊處理器(assp)、一個或多個現場可編程門陣列(fpga)、或專用硬體的一個或多個以上示例的任何組合,以執行在本文中描述的技術。

轉發單元20中的每個轉發單元包括至少一個數據包處理器24,在數據包穿過網絡裝置10的內部架構時,該處理器通過對經由各個內部數據包轉發路徑的每個數據包執行一系列操作來處理數據包。例如,轉發單元20a的數據包處理器24a包括一個或多個可配置的硬體晶片(例如,晶片組),在通過在控制單元12上執行的應用程式配置時,所述晶片限定對由轉發單元20接收的數據包所執行的操作。在一些示例中,每個晶片組可以表示「數據包轉發引擎」(pfe)。每個晶片組可以包括不同的晶片,每個晶片具有專用功能,例如,排隊、緩衝、接口連接以及查找/數據包處理。每個晶片可以表示基於asic、基於fpga或其他可編程硬體邏輯。

例如,在輸出之前,可以由對應的入口接口、入口轉發單元20、出口轉發單元20、或數據包通向的網絡裝置10的其他元件(例如,一個或多個服務卡)中的任一個對每個數據包執行操作。數據包處理器24處理數據包,以識別數據包性能並且執行綁定到所述性能的動作。每個數據包處理器24包括轉髮結構,在執行時,所述結構促使數據包處理器檢查每個數據包的內容(或另一個數據包性能,例如,進入接口),並且例如,在此基礎上做出轉發決定、應用濾波器,和/或執行核算、管理、流量分析以及負荷平衡。在一個示例中,每個數據包處理器24沿著網絡裝置的內部數據包轉發路徑布置轉髮結構作為下一跳數據,該轉髮結構可以串連在一起作為一系列「跳」。數據包處理的結果確定數據包由轉發單元20的數據包處理器24從其在一個ifc22上的輸入接口中轉發給其在一個ifc22上的輸出接口或者由該數據包處理器24處理的方式。

在很多情況下,轉髮結構執行查找操作,例如,樹(或線索)搜索、表格(或索引)搜索、過濾確定和應用、或速率限制器確定和應用。查找操作在查找數據結構(例如,查找樹)內定位項目,該項目與數據包或數據包流的數據包內容或另一個性能匹配,例如,數據包的入站接口。

被配置成由控制單元12執行的應用程式確定數據包處理器24要應用於數據包的數據包處理操作。通過將表示數據包處理操作的數據發送給轉發單元20,應用程式將數據包處理器24配置成執行數據包處理操作。這種數據可以包括表示高級數據包處理要求(例如,路由查找和過濾)的抽象轉髮結構。數據包處理操作可以包括基礎數據錶轉發操作,例如,輸入的數據包處理、路由查找以及輸出的數據包處理,以及服務功能,例如,數據包過濾或訪問控制、統計取樣、流量監管、速率控制以及核算。

轉發單元20將表示從應用程式接收的數據包處理操作的數據轉化成包括由相應的數據包處理器24可執行的指令的轉髮結構或「下一跳」,並且將轉髮結構儲存到存儲器(在圖1未示出)中。數據包處理器24執行轉髮結構,以處理接收的數據包,從而滿足由應用程式提供的高級數據包處理要求。通過這種方式,應用程式將路徑和下一跳(操作)的更高級表示注入由數據包處理器儲存的並且至少部分限定由數據包處理器24執行的數據包處理操作的可配置的轉發狀態的流中。由於轉髮結構可以進入其他轉髮結構,所以轉髮結構可以串連在一起,以限定針對規定的數據包的一組數據包處理操作,並且形成該數據包的「轉發路徑」。因此,這組轉髮結構以及由數據包處理器24執行和使用的轉發狀態可以可替換地稱為轉發路徑。

根據在本公開中描述的技術,數據包處理器24可以均配置有一個或多個沙盒28。每個數據包處理器24可以相對於本公開的技術促進相似的並且同時的沙盒功能,在後文中主要關於數據包處理器24a描述所述功能。

本地應用程式14將沙盒配置數據25發送給轉發單元20a的本地接口16a,以為數據包處理器24a配置沙盒28a。沙盒配置數據25可以包括指定沙盒28a的沙盒標識符、為沙盒28a分配的資源量、以及沙盒28a的埠映射的數據。沙盒28a表示數據包處理器24a的獨立的、並行的以及異步轉發路徑邏輯,該邏輯被暴露以由第三方應用程式15通過沙盒接口18a配置。雖然數據包處理器24a的總體轉發路徑由本地應用程式14管理和配置,但是本地應用程式14可以以將總體轉發路徑內的沙盒轉發邏輯的配置委託給第三方應用程式15的方式配置沙盒28a。第三方應用程式15將表示數據包處理操作的數據發送給沙盒接口18a,該接口將數據包處理操作轉化成由相應的數據包處理器24可執行的指令並且將指令儲存到存儲器中。雖然示出了用於數據包處理器24a的僅僅一個沙盒28a,但是數據包處理器24a可以配置有多個獨立的沙盒。

沙盒28a表示用於數據包處理器24a的內部轉發路徑內內聯配置的指令的容器。在一些示例中,沙盒28a是「邏輯」容器,這是因為如果指令由沙盒接口18a配置在沙盒28a內,則指令在沙盒28a「內部」作為數據包處理器24a的內部轉發路徑的一部分。在這種示例中,沙盒28a可以通過這種方式向第三方應用程式15呈現數據包處理器24a內的獨立的、隔離的、虛擬數據包處理器,以便第三方應用程式對通過沙盒28a邏輯在沙盒28a的確定範圍內執行的操作具有完全控制。

在其他示例中,沙盒28a可以表示以與主數據包處理器24a以及與轉發路徑66在物理上分離的轉發邏輯的形式的物理上分離的數據包處理器。在這種示例中,沙盒28a可以從限定沙盒28a的轉發路徑的物理上分離的存儲器讀出指令。在這種示例中,沙盒28a可以通過這種方式向第三方應用程式15呈現與數據包處理器24a的轉發路徑66內聯的獨立的、隔離的數據包處理器,以便第三方應用程式對由沙盒28a邏輯在沙盒28a的物理上分離的範圍內執行的操作具有完全控制。

轉發單元20a執行單獨的接口,用於將數據包處理器配置成執行數據包處理操作。本地接口16a(在圖1顯示為「本地if.16a)使本地應用程式14能夠為數據包處理器24a配置有全套可用的數據包處理操作,所述操作可以包括索引的或最長前綴的匹配查找、條件句、數據包重寫、過濾、結算(accounting,核算)以及其他操作。本地接口16a還使本地應用程式14能夠在數據包處理器24a的轉發路徑內為數據包處理器24a配置沙盒28a的規範和位置。

沙盒接口18a提供第三方應用程式15對發生在沙盒28a「內」的數據包處理操作的控制。即,沙盒接口18a可以通過這種方式將與沙盒28a相關聯的轉髮結構安裝為與數據包處理器24a的其他轉髮結構分離和獨立。沙盒接口18a限制安裝到沙盒28a中的轉髮結構的範圍,使得安裝到沙盒28a中的轉髮結構不進入(或「跳入」)轉發路徑內與沙盒不相關聯的其他轉髮結構。同樣,本地接口16a限制並非安裝到沙盒28a中的轉髮結構的範圍,使得轉髮結構不進入轉發路徑內的與沙盒28a相關聯的任何轉髮結構。

本地接口16a可以為沙盒接口18a提供沙盒28a的沙盒標識符和位置。第三方應用程式15將包括表示數據包處理操作的數據的配置數據27發送給沙盒接口18a,該接口促使轉發單元20a將數據包處理操作轉化成由相應的數據包處理器24可執行的指令並且將指令儲存到存儲器中以由數據包處理器24a執行。配置數據27可以包括沙盒標識符28a,沙盒接口18a使用該標識符來促進與用於配置數據27中表示的數據包處理操作的指令的沙盒28a分離。在某些情況下,本地接口16a和沙盒接口18a可以由控制單元12執行並且通過內部通信鏈路28將轉髮結構安裝到數據包處理器24中。

在一些示例中,本地接口16a為轉發路徑提供全套數據包處理操作,而沙盒接口18a為轉發路徑提供更少的一組數據包處理操作。在這種情況下,本地接口16a允許本地應用程式14使用數據包處理器24a可用的任何數據包處理操作來配置總體轉發路徑,包括配置沙盒28a。沙盒接口18a使第三方應用程式15能夠為沙盒28a配置從由沙盒接口18a提供的更少的一組數據包處理操作中提取的數據包處理操作。由沙盒接口18a通過這種方式提供的更少的一組數據包處理操作約束允許應用於由沙盒18a處理的數據包流的操作的類型,但是促進由第三方應用程式15完全控制沙盒28a。

數據包處理器24a執行通過本地接口16a和沙盒接口18a安裝的轉髮結構,包括具有由沙盒接口18a完全配置的轉髮結構的沙盒28a,以處理由轉發單元20a接收的數據包。

在數據包處理器24a的總體轉發路徑內配置沙盒28a,可以提供一個或多個優點。使用openflow、p4的終端用戶(客戶)應用程式或使用外部控制器生成的轉發信息對數據平面編程的其他框架驅動能夠使用戶訪問數據平面的要求,但是同意第三方訪問具有通量形式的數百萬個互連指令的並且通常由單線程程序管理以防止腐化和避免訪問鎖定的轉發路徑,可能具有局限性並且造成不期望的數據平面操作。例如,未使用沙盒而是提供對用於配置數據包處理器24a的公共接口的公共訪問的第三方訪問轉發路徑的實現方式例如難以在現場調試,這是因為對整個轉發路徑的公共訪問難以對由本地應用程式管理的轉發狀態/指令和由外部控制器管理的轉發狀態/指令進行區分。換言之,由本地應用程式和第三方應用程式/控制器注入無差別的轉發狀態使得難以分配任何規定轉髮結構的所有權並且確定數據平面的規定的操作問題的起源。

此外,提供對外部管理api(例如,openflow和p4)的編程訪問,可能需要調整本地接口或者提供中間件接口以與外部管理api匹配。由於外部控制器通常需要非常簡單的結構,所以可以調整接口以支持這些外部管理api。

而且,雖然本地應用程式14由網絡裝置10的製造商開發並且可操作地緊密耦接以促進安全性和可靠性,但是增加對數據包處理器24的轉發路徑的第三方訪問可以使路由器易受轉發路徑中的由於例如配置錯誤的嚴重的操作問題、第三方應用程式/控制器的軟體問題或者甚至惡意攻擊影響。

如在本文中所述,在數據包處理器24a的總體轉發路徑內配置沙盒28a,可以提供對轉發路徑的定義明確的和結構化訪問,以便可持續地支持第三方應用程式15以及例如外部管理api,例如,openflow和p4。在總體轉發路徑內隔離沙盒28a可以保護沙盒28a轉發邏輯遠離剩餘的轉發路徑轉發邏輯,反之亦然。進一步,使沙盒28a的控制與本地應用程式14分離減少了並且至少在某些情況下消除了轉發邏輯中沙盒28a與剩餘的轉發路徑之間的配置依賴性,使得沙盒28a和剩餘的轉發路徑可以作為並行異步的部件被配置和執行。

而且,在某些情況下,由沙盒接口18a提供的更少的一組數據包處理操作可以約束在沙盒28a內可執行的操作的類型,以除此之外防止沙盒28a轉發邏輯從沙盒28a中「跳出」,從而限制數據包處理操作離開由本地應用程式14配置並且確定性管理的定義明確的沙盒出口。更少的一組數據包處理操作通過這種方式進一步促進沙盒28a分離。作為另一個示例優點,本地應用程式14可以通過例如根據由網絡裝置運營商規定的配置為沙盒28a配置有指定的資源限制,來約束沙盒可用的資源量。這可以防止第三方應用程式15因錯誤配置、軟體問題或對網絡裝置10或第三方應用程式15或外部控制器的惡意攻擊而耗盡轉發路徑資源。

圖2是進一步詳細示出根據在本文中描述的技術配置數據平面沙盒的示例網絡裝置的方框圖。在圖2示出的網絡裝置10可以表示圖1的網絡裝置10的示例實例。

在該示例中,控制單元12包括提供控制平面操作環境以執行在用戶空間41內執行的各種用戶級主機應用程式的軟體和硬體的組合。通過示例,主機應用程式可以包括第三方應用程式15、具有命令行接口的管理接口處理57和/或用於接收並且響應於管理指令的圖形用戶接口處理、用於執行協議48a–48k(統稱為「協議48」)中的一個或多個路由協議的本地應用程式14的路由協議處理、用於執行協議中的一個或多個網絡管理協議的本地應用程式14的網絡管理處理、用於根據協議48中的arp協議響應於arp請求的本地應用程式14的arp處理、用於根據一個或多個用戶會話管理協議(例如,gprs隧道協議-c(ontrol))管理用戶會話設置和維護的本地應用程式14的用戶管理處理等。在這方面,控制單元12可以給網絡裝置10提供路由平面、服務平面以及管理平面功能。

本地應用程式14、第三方應用程式15以及管理接口57在內核43上執行並且與該內核交互,該內核為用戶級處理提供運行時間操作環境。例如,內核43可以表示unix作業系統衍生物,例如,linux或伯克利軟體分布(bsd)。內核43提供用戶級處理可以與基礎系統交互所利用的庫和驅動器。控制單元12的硬體環境30包括微處理器52,該微處理器執行從儲存裝置(在圖2也未示出)中載入主存儲器(在圖2未示出)內的程序指令,以便執行控制單元12的軟體堆棧,還包括內核43和用戶空間41。微處理器52可以表示一個或多個通用或專用處理器,例如,數位訊號處理器(dsp)、專用集成電路(asic)、現場可編程門陣列(fpga)或任何其他等效的邏輯裝置。因此,在本文中使用的術語「處理器」或「控制器」可以表示任何一個或多個以上結構或者可操作以執行在本文中描述的技術的任何其他結構。

在該示例中,本地應用程式14的路由協議處理執行一個或多個內部和/或外部路由協議,以與其他網絡裝置交換路由信息並且將所接收的路由信息儲存在路由信息庫45(「rib45」)內。rib45可以包括限定網絡拓撲的信息,包括一個或多個路由表和/或鏈路狀態資料庫。路由協議處理解析由在rib45內的路由信息限定的拓撲,以通過網絡選擇或確定一個或多個活動路徑,然後,將這些路徑安裝到轉發信息庫42(「fib42」)中。通常,路由協議處理生成具有根或其他查找樹的形式的fib42,以將數據包信息(例如,具有目的地信息的報頭信息和/或標籤堆棧)映射到下一跳並且最後映射到與相應的轉發單元20a–20n相關聯的接口卡的接口埠。每個轉發單元20可以使用不同的fib進行編程。

網絡裝置10還包括多個轉發單元20a–20n(統稱為「轉發單元20」)和交換結構(未示出),其共同提供數據平面以用於轉發網絡流量。轉發單元20在該示例中由可以表示乙太網網絡的通信鏈路23連接至控制單元12。

每個轉發單元20可以包括執行基本上相似的功能的基本上相似的元件,在後文中主要關於在圖2詳細示出的轉發單元20a描述所述元件和功能。圖2的轉發單元20a可以進一步詳細示出圖1的轉發單元20a的示例。轉發單元20a分別通過轉發單元20a的接口卡(ifc)22的入站接口35和出站接口37接收和發送網絡數據包。轉發單元20a還包括數據包處理器24a,該處理器表示硬體或者提供網絡流量的高速轉發的硬體和軟體的組合。同樣,轉發單元20b包括數據包處理器24b等。在一些示例中,一個或多個轉發單元20均可以包括與數據包處理器24a基本上相似的多個轉發元件。

每個ifc22可以包括層2(l2)技術的各種組合的接口,包括乙太網、千兆乙太網(gige)以及同步光纖網絡(sonet)接口。在各個方面,每個轉發單元20可以包括更多或更少的ifc。在一些示例中,每個數據包處理器24與數據包處理器所在的轉發單元的不同ifc相關聯。連接轉發單元20的交換結構(再次在圖2未示出)提供高速互連,用於將進入的傳輸網絡數據包轉發給所選擇的一個轉發單元20,以通過一個ifc22輸出。

在某些情況下,網絡裝置10可以表示多底盤路由器,並且交換結構可以包括多級交換結構,例如,3級clos交換結構,該交換結構使用多路復用通信通過光學互連在多底盤路由器的路由節點之間,而中繼數據包交換的通信和電路交換的通信。在於2007年8月1日提交的題為multi-chassisrouterwithmultiplexedopticalinterconnects的美國公開號2008/0044181中,描述了使用利用多路復用通信的光學互連的這種多底盤路由器,該案之全文通過引證結合於此。

網絡裝置10的轉發單元20a–20n對網絡裝置10的控制平面和數據平面進行分界。即,轉發單元20a執行控制平面和數據平面功能。通常,數據包處理器24a和ifc22實現轉發單元20a的數據平面,而轉發單元處理器62(顯示為「fwdg.單元處理器62」)執行軟體,包括在轉發單元20a內實現網絡裝置10控制平面的一部分的本地接口16、沙盒接口18a以及數據包處理器驅動器60。控制單元12也實現網絡裝置10控制平面的一部分。轉發單元20a的轉發單元處理器62管理數據包處理器24a並且執行給控制單元12提供接口並且處理主機綁定的或其他局部網絡數據包(例如,包括選項欄位值的數據包或ttl到期數據包)的指令。轉發單元處理器62可以執行轉發單元20a的微內核。由轉發單元處理器62執行的微內核可以提供多線程執行環境,用於執行本地接口16、沙盒接口18a以及數據包處理器驅動器60。

數據包處理器24a可以包括可編程的基於asic、基於fpga或其他類型的數據包處理器,在數據包穿過網絡裝置10的內部架構時,這些處理器通過對經由相應的內部數據包轉發路徑的每個數據包執行一系列操作來處理網絡數據包。數據包處理器24a包括轉髮結構,在執行時,所述結構檢查每個數據包的內容(或另一個數據包性能,例如,進入接口),並且在此基礎上,例如,做出轉發決定,應用濾波器,和/或執行結算、管理、流量分析以及負荷平衡。在一個示例中,數據包處理器24a沿著數據包處理器24a的內部數據包轉發路徑66設置作為下一跳數據的轉髮結構,這些轉髮結構可以串連在一起作為一系列「下一跳」。數據包處理的結果確定數據包由數據包處理器24從其在轉發單元20的入口轉發單元上的輸入接口中轉發給其在轉發單元20的出口轉發單元上的輸出接口或者由該數據包處理器處理的方式。

數據包處理器24a識別數據包性能並且執行綁定到所述性能的動作。數據包處理器24a的一個或多個關鍵引擎71執行微碼(或「微指令」),以控制和應用轉發路徑的固定硬體元件以處理數據包「密鑰」。數據包密鑰包括數據包欄位和確定數據包沿著內部轉發路徑的數據包處理的流的其他參數。內部轉發路徑66(「轉發路徑66」)可以表示計算機可讀儲存介質,例如,隨機存取存儲器,並且包括具有可編程、可執行的微碼形式的轉發路徑部件以及確定由數據包處理器24a執行的數據包處理動作和其他操作的固定硬體元件。轉發路徑66可以包括例如可執行指令、可編程邏輯以及專用邏輯,除了其他功能以外,這些邏輯還執行查找、速率限制數據包流(例如,使用策略器)並且操縱數據包密鑰。轉發路徑部件可以包括基元(例如,查找表和查找樹)以及速率限制器、策略器、計數器、防火牆以及其他部件。

網絡裝置10的內部轉發路徑可以包括多個不同的數據包處理器24的相應轉發路徑66的組合。換言之,數據包處理器24a的轉發路徑66可以僅僅包括網絡裝置10的總體內部轉發路徑的一部分。控制單元12可以將數據包處理器24a的轉發路徑66配置為識別主機綁定的網絡數據包並且朝著控制單元12轉發這種數據包。例如,控制單元12可以將包括網絡裝置10的網絡地址的過濾器進行編程並且引導數據包處理器24a將具有與網絡地址匹配的目的地地址的網絡數據包朝著控制單元12轉發。

在一些示例中,數據包處理器24a將要對由數據包處理器24a接收的數據包執行的動作綁定到數據包的一個或多個性能的識別中。即,在識別某些數據包性能時,數據包處理器24a執行綁定至這些性能的動作。數據包性能可以包括數據包元數據,例如,特定數據包的進口接口或出口接口(由pfe確定)以及由數據包和數據包報頭攜帶的信息,例如,數據包報頭欄位、目的地路由前綴、層4(l4)或傳輸層協議目的地埠以及數據包有效載荷。綁定至數據包性能的動作可以包括計數、丟棄以及向特定的下一跳或接口的轉發、過濾、採用、速率限制以及服務質量(qos)標記、差異化服務(diffserv)、負荷平衡、入侵檢測和預防、l2服務等級(cos)、以及l2或l2虛擬專用網絡(l2vpn)交換。

每個關鍵引擎71包括一個或多個關鍵緩衝器,以儲存關鍵引擎目前正在處理的對應數據包的數據包欄位數據。關鍵緩衝器還可以提供限制的可寫存儲器,內部轉發路徑的部件可以寫入該存儲器中以傳遞未來部件可訪問的消息。在某些情況下,根據在本文中描述的技術,數據包元數據可以包括沙盒的標識符,以指示應通過識別的沙盒處理數據包。例如,綁定至跳入沙盒的接口的數據包可以促使數據包處理器24a將沙盒標識符加入數據包元數據中,因此,向關鍵引擎71指示應通過沙盒處理數據包。在某些情況下,由沙盒處理的數據包可以在轉發單元20之間進行內部轉發。中間和出口轉發單元20可以使用數據包元數據內的沙盒標識符,來確保所識別的沙盒用於處理數據包。

轉發路徑66的基元包括具有條目或「項目」的數據結構,其對應於數據包關鍵值並且將這些值綁定至通過執行轉發路徑66的關鍵引擎71要執行的動作。在這方面,基元表示對應於綁定的動作的可執行指令的以及針對可能數據包關鍵值的數據的緊密耦合的組合。樹查找基元可以在路由表內執行最長匹配前綴查找或者在過濾程序內搜索前綴列表。表格查找基元可以確定另一個基元是否應由關鍵引擎71執行。例如,關鍵引擎71可以執行數據包性能的表格查找,以確定關鍵引擎71應進一步執行樹查找,以識別數據包的出站接口。數據包處理器24a可以在計算機可讀儲存介質內儲存基元和轉髮結構(例如,指令),例如,靜態隨機存取存儲器(sram)。雖然在數據包處理器24a內示出,但是基元和轉髮結構可以儲存在位於在轉發單元20a上的數據包處理器24a外面的存儲器內。

在某些方面,轉發路徑66的動作使用下一跳數據結構來開始處理。在通過一個關鍵引擎71結束每個處理步驟時,例如,執行基元或轉髮結構中的一個,結果是可以規定例如額外處理或處理結束的下一跳。此外,下一跳可以規定關鍵引擎71要執行的一個或多個功能。示例下一跳功能包括監控(即,速率限制)、計數以及取樣。因此,下一跳形成原始數據結構,該結構可以用於開始查找或另一個下一跳、鏈查找以及下一跳,以允許對單個數據包執行多個查找和其他操作,並且結束查找。關鍵引擎71可以與儲存用於執行下一跳的結果的相應結果(或「查找」)緩衝器相關聯。例如,關鍵引擎71可以執行由下一跳規定的查找並且將查找結果儲存到相關聯的結果緩衝器中。結果緩衝器的內容可以影響下一跳鏈內的下一跳的動作。在於2008年11月6日提交的美國申請號12/266,298的platform-independentcontrolplaneandlower-levelderivationofforwardingstructures中可獲得關於下一跳和下一跳鏈的額外信息,該案之全文通過引證結合於此。在於2011年7月29日提交的題為packetforwardingpathprogrammingusingahigh-leveldescriptionlanguage的美國專利申請13/194,571中,並且在於2007年5月8日發布的以及題為systemsandmethodsforprocessingpackets的美國專利7,215,637中,描述了控制平面將具有轉髮結構的轉發平面編程的網絡路由器的示例細節,這兩個專利的全部內容都通過引證結合於此。

轉發單元20a通過ifc22接收入站網絡流量,並且數據包處理器24a使用內部轉發路徑66處理網絡流量。數據包處理器24a通過出站接口37查找針對傳輸網絡數據包的出站接口並且轉發該傳輸網絡數據包作為出站流量,所述傳輸網絡數據包並非主機綁定的並且也不需要控制平面對邏輯決定進行響應。

轉發單元20a執行軟體並且向控制單元12呈現接口以配置轉發路徑66。被配置成由轉發單元處理器62執行的數據包處理器驅動器60(在後文中稱為「驅動器60」)為轉發路徑66配置轉發路徑部件,以由數據包處理器24a執行。轉發路徑部件可以包括數據包處理器24a可執行的指令。更具體而言,驅動器60可以接收表示數據包處理操作的數據27,並且將數據27轉化成可執行指令,驅動器60將這些指令作為互連的轉發路徑部件安裝到轉發路徑66中,以為由轉發單元20a接收的數據包動態生成轉發路徑66。

根據在本文中描述的技術,驅動器60被配置成通過在總體轉發路徑內實現獨立的、並行的以及異步轉發路徑邏輯(沙盒28a),來促進多個不同的客戶端配置轉發路徑66。驅動器60呈現單獨的接口、本地接口16a以及沙盒接口18a,這些接口能夠使沙盒28a的控制與本地應用程式14分離。通過這種方式,沙盒28a表示用於由第三方應用程式15通過沙盒接口18a在數據包處理器24a的內部轉發路徑內內聯配置的指令的邏輯容器。該分離可以促進沙盒28a邏輯獨立於由本地應用程式14配置的本地部件70,並且還可以促進本地部件70和沙盒28a的並行控制平面配置。通過本地接口16a,本地應用程式14根據通過管理接口57接收的配置數據47(顯示為「配置47」)配置沙盒28a。沙盒28a的配置數據47可以指定沙盒28a的埠映射/綁定,並且在某些情況下,指定沙盒28a的尺寸。該尺寸可以規定為轉發路徑66資源(例如,內存大小)的百分比或其他相對尺寸標記,或者可以以絕對項(例如,以字節為單位)規定。在圖2的示例中,埠映射49將沙盒28a埠映射到ifc22的接口37、39中。

下面是兩個沙盒「紅色」和「藍色」的配置數據47的示例:

在以上示例中,沙盒「紅色」具有規定為轉發路徑66資源的10%的最大尺寸。沙盒「紅色」具有綁定至接口xe-0/0/0的埠p0以及綁定至接口xe-0/0/1的埠p1。沙盒藍色具有規定為轉發路徑66資源的10%的最大尺寸。沙盒紅色具有綁定至接口xe-3/0/1的埠p0、綁定至接口xe-3/0/2的埠p1以及綁定至接口xe-0/0/2的埠p3。以上示例的配置數據的埠容器可以表示埠映射49的示例數據,這表示表格、列表或其他數據結構,以使沙盒28a的虛擬埠與ifc22的物理接口35、37相關聯。

在某些情況下,沙盒「紅色」和「藍色」可以由相應的客戶端管理,這些客戶端連接至沙盒接口18a並且通過調用沙盒的名稱(例如,「紅色」)來管理其沙盒。如果識別的沙盒由本地應用程式14配置,則客戶端可以接收具有被限定和連接的配置埠的沙盒環境。如果運營商在配置數據47內重新配置沙盒的埠,則埠從沙盒中消失或出現。這與熱交換相似。驅動器60可以配置

沙盒28a向第三方應用程式15呈現獨立的轉發引擎。驅動器60管理轉發路徑66,使得在沙盒28a與轉發路徑66的剩餘指令(例如,本地部件70)之間的接觸點在本地應用程式14的控制下並且被確定性管理。具體而言,根據配置數據25配置沙盒28a的驅動器60為沙盒28a配置入口埠53和出口埠55。入口埠53表示沙盒28a的一個或多個虛擬埠,通過這些埠,轉發路徑66的指令可以跳入沙盒28a並且通過這種方式,進入沙盒28a的數據包處理。驅動器60可以確保本地部件70並不進入經由入口埠53的沙盒28a的任何指令。在以上示例的配置數據中,沙盒「紅色」具有直接綁定於ifc22的物理接口35、37的埠,使得到達任何這些綁定的物理埠的數據包通過入口埠53進入沙盒28a和由沙盒28a指令處理。

出口埠55表示沙盒28a的一個或多個虛擬埠,通過這些埠,沙盒28a的指令跳入與沙盒28a不相關聯的本地部件70並且通過這種方式離開沙盒28a的數據包處理。驅動器60可以確保經由出口埠55的沙盒28a的任何指令不跳入任何本地部件70。在以上示例配置數據中,沙盒「紅色」具有直接綁定於ifc22的物理接口35、37的埠,使得從沙盒埠離開的數據包從「紅色」沙盒進入綁定至沙盒出口埠的物理埠。

在一些示例中,入口埠53和出口埠55表示由本地應用程式14控制的間接下一跳,以促進剩餘轉發路徑66與沙盒28a之間的管理的接觸點和依賴性。即,數據包分別通過均表示間接下一跳的入口埠53和出口埠55進入和離開。通常,間接下一跳是引用下一跳的中間數據結構。查找數據結構(例如,查找表和查找樹)可以進入入口埠53的間接下一跳。通過這種方式,本地應用程式14可以將轉發路徑66配置成具有由本地應用程式14控制的沙盒28a的定義明確的入口。通過在入口埠53的間接下一跳內修改參考,驅動器60可以規定沙盒28a內的下一跳。通過這種方式,第三方應用程式15可以規定從入口埠53到沙盒28a的剩餘部分的轉發路徑。通過向本地應用程式14和第三方應用程式15提供對間接下一跳的每「側」的控制,本公開的技術促進沙盒分界。同樣,相對於出口埠55,通過切換管理方,沙盒28a的部件可以進入表示一個出口埠55的間接下一跳。通過修改在出口埠55的間接下一跳內的參考,本地應用程式14可以規定從出口埠55到轉發路徑66的剩餘部分的轉發路徑或者至一個埠37的輸出。

在一些示例中,由沙盒接口18a提供的這組數據包處理操作不包括由本地接口16a提供的每個數據包處理操作。例如,沙盒接口18a可以提供更多限制的數據包處理操作,用於由網絡裝置10進行數據包接收和傳輸。在某些情況下,沙盒28a可以僅僅被配置成由第三方應用程式15啟用流量路由確認,但是不提供用於由網絡裝置進行的數據包接收和傳輸的設施。例如,沙盒接口18a可以提供在沙盒28a內配置標籤匹配表格的能力,這造成出站標籤被操縱並且然後被輸出至相應埠。沙盒接口18a可以不提供將沙盒28a配置成直接接收數據包(例如,主機綁定的流量)的能力。換言之,沙盒接口18a可以促進基本轉發支持,用於在沙盒28a內建立表格查找和所產生的下一跳,但是具有很少或沒有用於數據包接收的設施。通過這種方式,沙盒接口18a可以執行促使所有主機綁定的流量由本地部件70處理的約束,例如,通過發送給本地應用程式14。沙盒接口18a還可以執行防止任何主機起源的流量由第三方應用程式15注入沙盒28a內的約束。為了執行約束,在一些示例中,沙盒28a不提供防止數據包匹配接收(即,向硬體指示接收數據包並且發送給控制平面的能力)而建立任何這種請求。

作為另一個示例,沙盒接口18a可以不提供與數據包重寫相關的數據包處理操作。雖然沙盒接口18a可以允許將一些元數據重新分類,用於數據包查找(例如,改變qos特徵或標記數據包,用於結算),但是在這種情況下,沙盒28a不訪問數據包本身。該特徵組可以允許第三方進行數據包的「更深的」分類,但是不改變其通過轉發路徑66的基本流。

在某些情況下,沙盒接口18a可以可配置成動態改變每個客戶端可用的數據包處理操作的類型。換言之,轉發路徑66內的沙盒可以具有其可用的不同的幾組數據包處理操作。通常,然而,沙盒28a將具有從數據包處理器24a中可能具有的特徵組中減少的特徵組。

沙盒接口18a可以相對於某些數據包處理操作具有高度限制。例如,沙盒接口18a在任何情況下可不允許配置硬體進行的物理埠設置,或者提供到任何嵌入的微碼特徵的訪問,例如,內聯持續管理。操作可以通過本地接口16a嚴格地保留到配置轉發路徑66的本地應用程式14中。

圖3是示出具有根據本公開中描述的技術配置的轉發路徑沙盒的網絡裝置數據平面的方面的方框圖。在該示例中,邏輯接口查找表80的邏輯入站接口82a–82c綁定到沙盒28a的入口埠53。每個邏輯入站接口82a–82d(「邏輯入站接口82」)可以表示邏輯層2或層3接口,該接口使用識別信息的數據包與在任何入站接口35上接收的數據包匹配並且限定匹配的數據包的轉發路徑。在某些情況下,邏輯層2接口稱為「ifd」,並且邏輯層3接口稱為「ifl」或「iff」。

在示出的示例中,與任何邏輯入站接口82a–82c匹配的數據包通過入口埠53跳入沙盒28a,並且數據包處理器24a使用沙盒28a處理這種數據包。相反,與任何邏輯入站接口82d匹配的數據包跳入本地部件70(尤其是部件86),並且數據包處理器24a並不通過沙盒28a處理這種數據包。邏輯入站接口82可以通過這種方式被配置成將那些數據包導向沙盒28a,以由沙盒28a處理,例如,與第三方應用程式15的客戶端相關聯的數據包流的數據包。

在該示例中,沙盒28a的出口埠55根據沙盒的「防火牆模式」跳入本地部件70。在該模式中,數據包查找和路由由本地應用程式14配置,並且比在沙盒28a內執行的數據包處理操作更早或者在其後發生在處理路徑66內。在該模型中,沙盒28a可以具有單個輸入和至少一個輸出,這取決於應用程式。沙盒28a在入口或出口轉發路徑內的特定位置綁定到轉發路徑66內。防火牆模式促進與由智能和動態防火牆提供的功能相似的沙盒功能,第三方應用程式15可以使用該功能在數據包查找和路由之前或之後操縱和過濾沙盒28a內的流量。

在另一種模式(「埠接口映射模式」)中,如上面相對於圖2所示和所述,沙盒28a的入口埠53和出口埠55綁定至特定的接口。在該模式中,沙盒28a在概念上是由第三方應用程式15通過沙盒接口18a可配置的微型路由器或微型交換機。該模式可以對sdn應用程式特別有用,例如,openflow和p4應用程式。

圖4是進一步詳細示出根據本公開中描述的技術配置的示例沙盒的方框圖。沙盒100可以表示圖1至圖3中的任一個的沙盒28a的示例實例。沙盒100包括入口埠53a–53d和出口埠55a–55d。沙盒100包括具有根或其他查找樹的形式的查找樹102,以將數據包信息(例如,具有目的地信息的報頭信息和/或標籤堆棧)映射到下一跳104、106,並且最後映射到與轉發單元20相關聯的接口卡22的出站埠。下一跳104、106和108表示轉發路徑部件,如在本文中所述。

圖5是示出根據在本公開中描述的技術配置的網絡裝置的元件的方框圖。沙盒接口150可以表示圖1至圖3的沙盒接口18a的示例實例。在該示例中,沙盒接口150使第三方應用程式能夠配置沙盒100,以標記數據包從而用於本地接收。沙盒接口150還用作數據包接口,以通過插口160將針對本地接收標記的數據包發送給第三方應用程式15。插口160可以表示linux/bsd或與沙盒100環境相關聯的其他網絡插口。

第三方應用程式15可以調用沙盒接口150,以向沙盒100配置匹配和接收轉發指令,以便將流量重新導向外部軟體處理程序中。在示出的示例中,部件106表示匹配和接收下一跳,其將匹配的數據包導向沙盒接口150中,以通過插口160傳輸給第三方應用程式15。

用於由第三方應用程式15重新注入轉發路徑內的數據包可以通過相似的方式在沙盒100上往回插入轉發路徑內。在示出的示例中,部件108表示下一跳,該下一跳使沙盒接口150能夠通過插口160從第三方應用程式15中接收數據包。這可以使得從沙盒客戶端進行的數據包傳輸能夠由沙盒100監控和控制並且也由客戶端控制。

通過綁定至沙盒的插口的本地接收和傳輸可以促進輕型方法,以使第三方連結在轉發路徑內的服務,而不需要對本地應用程式14進行任何修改以配置這種連結。第三方可以使用以上技術來執行在轉發路徑內內聯的服務處理,並且通過級聯多個沙盒,可以沿著具有由綁定至相應沙盒的插口可到達的服務節點(例如,應用程式、虛擬機以及器具)的服務鏈引導數據包。例如,沙盒100可以將數據包重新導向插口160以用於服務處理,例如,ipsec處理、防火牆、網絡地址轉化、傳輸控制協議(tcp)代理以及其他網絡服務。

圖6是示出用於根據在本公開中描述的技術配置和使用數據平面沙盒的網絡裝置的示例操作模式的流程圖。為了說明的目的,相對於圖2的網絡裝置描述該操作模式。

根據從網絡裝置10的運營商接收的配置數據47,通過經由本地接口16a發送配置數據25,在控制單元12上執行的本地應用程式14創建沙盒28a,該配置數據可以規定標識符、分配的資源的指示以及位置沙盒28a。本地接口16a根據配置數據25在轉發路徑66內創建沙盒28a(200)。本地接口16a可以將一些配置數據25提供給沙盒接口18a,以用於沙盒28a配置。隨後,第三方應用程式15使用關於沙盒28a的參考,來將表示數據包處理操作的數據27發送給沙盒接口18a,該沙盒接口生成實現數據包處理操作的指令並且將指令安裝到沙盒28a(202)中。本地應用程式14進一步將轉發路徑66配置成將數據包流映射到沙盒28a(204)。例如,本地應用程式14可以將選擇的入站接口35或邏輯接口映射到沙盒28a的入口埠53。可替換地,本地應用程式14可以配置轉發路徑66內跳入沙盒28a的入口埠53的下一跳。這樣,數據包處理器24a使用沙盒28a處理在這種接口上接收的/與這種接口匹配的數據包流。在一些示例中,這種數據包流可以與第三方客戶相關聯,第三方客戶將沙盒28a配置成將沙盒操作約束到與第三方客戶和第三方應用程式15相關聯的那些數據包流。通過執行沙盒28a,數據包處理器24a處理由轉發單元20a接收的並且映射到沙盒28a中的數據包(206)。

在本公開中描述的技術可以至少部分以硬體、軟體、固件或其任何組合實現。例如,所描述的技術的各個方面可以在一個或多個處理器內實現,包括一個或多個微處理器、數位訊號處理器(dsp)、專用集成電路(asic)、現場可編程門陣列(fpga)或任何其他等效的集成或離散邏輯電路以及這種元件的任何組合。術語「處理器」或「處理電路」可以通常表示單獨的或者與其他邏輯電路相結合的任何上述邏輯電路或者任何其他等效電路。包括硬體的控制單元還可以執行本公開的一個或多個技術。

這種硬體、軟體以及固件可以在相同的裝置內或者在單獨的裝置內實現,以支持在本公開中描述的各種操作和功能。此外,任何描述的單元、模塊或元件可以共同地或者作為離散的但是互操作的邏輯裝置單獨地實現。將不同的特徵描述為模塊或單元旨在突出不同的功能方面,並且不必表示這種模塊或單元必須由單獨的硬體或軟體元件實現。確切地說,與一個或多個模塊或單元相關聯的功能可以由單獨的硬體或軟體元件執行,或者整合在共同的或單獨的硬體或軟體元件內。

在本公開中描述的技術還可以在包含指令的計算機可讀介質中體現或編碼,例如,永久性計算機可讀介質或計算機可讀儲存介質。在計算機可讀介質內嵌入或編碼的指令可以促使可編程處理器或其他處理器執行該方法,例如,在執行指令時。計算機可讀儲存介質可以包括隨機存取存儲器(ram)、只讀存儲器(rom)、可編程只讀存儲器(prom)、可擦可編程只讀存儲器(eprom)、電可擦可編程只讀存儲器(eeprom)、閃速存儲器、硬碟、cd-rom、軟盤、盒式磁帶、磁性介質、光學介質或其他計算機可讀儲存介質。應理解的是,雖然術語「計算機可讀介質」除了物理儲存介質以外還可以包括瞬時介質(例如,信號),但是術語「計算機可讀儲存介質」表示物理儲存介質,而非信號或載波。

除了或者代替以上內容,描述以下示例。在任何以下示例中描述的特徵可以供在本文中描述的任何其他示例使用。

示例1.一種方法,包括:

由網絡裝置的控制平面執行的第一應用程式通過由網絡裝置的轉發單元執行的第一接口向所述轉發單元的內部轉發路徑配置有確定由所述轉發單元接收的數據包的處理的第一指令,

其中,所述第一應用程式將所述內部轉發路徑配置成包括沙盒,所述沙盒包括用於所述內部轉發路徑內內聯配置的指令的容器,並且

其中,所述內部轉發路徑的至少一部分儲存到所述轉發單元的存儲器中並且由所述轉發單元的數據包處理器可執行;

由網絡裝置的控制平面執行的第二應用程式通過由網絡裝置的轉發單元執行的第二接口為所述沙盒配置有確定在所述沙盒內處理數據包的第二指令;並且

由所述數據包處理器響應於確定由所述轉發單元接收的數據包與至少部分由第二應用程式控制的數據包流相關聯,通過執行為所述沙盒配置的第二指令,來處理所述數據包。

示例2.根據示例1所述的方法,其中,將所述內部轉發路徑配置成包括沙盒包括為沙盒配置入口埠,其限定所述內部轉發路徑的第一指令進入沙盒所經由的虛擬埠。

示例3.根據示例2所述的方法,進一步包括:將所述內部轉發路徑配置成將所述轉發單元的邏輯入站接口映射到沙盒的入口埠,其中,確定由所述轉發單元接收的數據包與至少部分由第二應用程式控制的數據包流相關聯包括:由所述數據包處理器使所述數據包與所述邏輯入站接口匹配。

示例4.根據示例2所述的方法,其中,所述入口埠包括包含基準的間接下一跳,其中,配置所述入口埠包括由第一接口將所述間接下一跳存儲到存儲器中,其中,為所述沙盒配置用於確定在所述沙盒內處理數據包的第二指令包括:由第二接口將所述間接下一跳的參考配置成參考在沙盒內配置的轉發路徑部件。

示例5.根據示例1所述的方法,其中,將所述內部轉發路徑配置成包括沙盒包括:為沙盒配置出口埠,其限定所述沙盒內配置的第二指令離開沙盒所經由虛擬埠。

示例6.根據示例5所述的方法,進一步包括:將所述內部轉發路徑配置成將沙盒的出口埠映射到轉發路徑部件;並且在通過執行所述沙盒來處理數據包之後,由所述數據包處理器通過執行轉發路徑部件來處理所述數據包。

示例7.根據示例1所述的方法,其中,確定在所述沙盒內處理數據包的第二指令包括一個或多個轉發路徑部件,每個部件執行查找樹、查找表、速率限制器、策略器以及計數器中的一個。

示例8.根據示例1所述的方法,其中,所述第一接口為數據包處理器提供第一組數據包處理操作,其中,所述第二接口為數據包處理器提供第二組數據包處理操作,並且其中,所述第二組數據包處理操作比所述第一組數據包處理操作包括更少的數據包處理操作。

示例9.根據示例1所述的方法,其中,所述第一應用程式包括由網絡裝置的製造商開發的本機應用程式,其中,所述第二應用程式表示呈現外部應用程式編程接口的第三方應用程式,所述方法進一步包括:由第二應用程式經由外部應用程式編程接口從位於網絡裝置外面的控制器接收數據包處理操作,其中,通過執行為沙盒配置的第二指令來處理數據包執行從所述控制器接收的數據包處理操作。

示例10.根據示例1所述的方法,進一步包括:由第一應用程式為沙盒配置插口,其中,通過執行為沙盒配置的第二指令來處理數據包包括:由所述數據包處理器將所述數據包引向插口;由轉發單元通過插口將數據包發送給第二應用程式。

示例11.根據示例1所述的方法,進一步包括:由第二應用程式將服務應用於數據包中。

示例12.根據示例1所述的方法,進一步包括:由第一應用程式為沙盒配置插口;並且由轉發單元通過插口從第二應用程式接收數據包。

示例13.根據示例1所述的方法,進一步包括:由轉發單元的轉發單元處理器執行第一接口和第二接口。

示例14.根據示例13所述的方法,進一步包括:由所述轉發單元的轉發單元處理器執行數據包處理器的驅動器;由所述驅動器響應於從第一接口接收第一數據包處理操作生成第一指令,以實現所述第一數據包處理操作,並且將第一指令安裝到內部轉發路徑中;由所述驅動器響應於從第二接口接收第二數據包處理操作而生成第二指令,以實現所述第二數據包處理操作,並且將第二指令安裝到沙盒中。

示例15.根據示例1所述的方法,其中,所述轉發單元包括可插入網絡裝置的底盤內的線卡。

示例16.根據示例1所述的方法,其中,在所述轉發單元的內部轉發路徑內配置沙盒包括:由第一應用程式通過第一接口為所述沙盒配置限定所述沙盒可以配置有的指令量的資源限制。

示例17.根據示例1所述的方法,其中,在所述轉發單元的內部轉發路徑內配置沙盒包括:由第一應用程式通過第一接口為所述沙盒配置沙盒標識符,並且其中,為所述沙盒配置確定在沙盒內處理數據包的第二指令包括:將表示數據包處理操作和沙盒標識符的數據從第一應用程式發送給第一接口,以引導第一接口為所述沙盒配置在沙盒內實現數據包處理操作的第二指令。

示例18.根據示例1所述的方法,進一步包括:由所述數據包處理器將沙盒的標識符加入數據包的數據包元數據中,其中,確定由所述轉發單元接收的數據包與至少部分由第二應用程式控制的數據包流相關聯包括:由所述數據包處理器確定所述數據包元數據包括沙盒的標識符。

示例19.根據示例1所述的方法,其中,所述沙盒包括在所述數據包處理器的內部轉發路徑內內聯配置的指令的邏輯容器。

示例20.一種網絡裝置,包括:控制平面,其被配置成執行第一應用程式和第二應用程式;以及轉發單元,包括:接口卡,其被配置成接收數據包;數據包處理器,其可操作地耦接至存儲器;內部轉發路徑,其中,所述內部轉發路徑的至少一部分儲存到所述存儲器中並且由數據包處理器可執行;轉發單元處理器;以及第一接口和第二接口,其被配置成由所述轉發單元處理器執行,其中,所述第一應用程式被配置成通過所述第一接口將所述內部轉發路徑配置成包括沙盒,所述沙盒包括用於所述內部轉發路徑內內聯配置的指令的容器,其中,所述第二應用程式被配置成通過所述第二接口為所述沙盒配置有確定在所述沙盒內處理數據包的第二指令,並且其中,所述數據包處理器被配置成響應於確定由所述轉發單元接收的數據包與至少部分由第二應用程式控制的數據包流相關聯,通過執行為所述沙盒配置的第二指令,來處理所述數據包。

示例21.根據示例20所述的網絡裝置,其中,為了將所述內部轉發路徑配置成包括沙盒,所述第一應用程式進一步被配置成為為沙盒配置入口埠,其限定所述內部轉發路徑的第一指令進入沙盒所經由的虛擬埠。

示例22.根據示例21所述的網絡裝置,其中,所述第一應用程式進一步被配置成將所述內部轉發路徑配置成將所述轉發單元的邏輯入站接口映射到沙盒的入口埠,其中,為了確定由所述轉發單元接收的數據包與至少部分由第二應用程式控制的數據包流相關聯,所述數據包處理器被配置成使所述數據包與所述邏輯入站接口匹配。

示例23.根據示例21所述的網絡裝置,其中,所述入口埠包括包含基準的間接下一跳,其中,為了配置所述入口埠,所述第一接口將所述間接下一跳存儲到存儲器中,其中,為了為所述沙盒配置有確定在所述沙盒內處理數據包的第二指令,所述第二接口被配置成將所述間接下一跳的參考配置成參考在沙盒內配置的轉發路徑部件。

示例24.根據示例20所述的網絡裝置,其中,為了將所述內部轉發路徑配置成包括沙盒,所述第一接口被配置成為為沙盒配置出口埠,其限定在所述沙盒內配置的第二指令離開沙盒所經由的虛擬埠。

示例25.根據示例20所述的網絡裝置,其中,所述第一接口為數據包處理器提供第一組數據包處理操作,其中,所述第二接口為數據包處理器提供第二組數據包處理操作,並且其中,所述第二組數據包處理操作比所述第一組數據包處理操作包括更少的數據包處理操作。

示例26.根據示例20所述的網絡裝置,進一步包括:驅動器,用於數據包處理器並且被配置成由所述轉發單元處理器執行以:響應於從第一接口接收第一數據包處理操作生成第一指令,以實現所述第一數據包處理操作,並且將第一指令安裝到內部轉發路徑中;響應於從第二接口接收第二數據包處理操作生成第二指令,以實現所述第二數據包處理操作,並且將第二指令安裝到沙盒中。

示例27.根據示例20所述的網絡裝置,其中,所述轉發單元包括可插入網絡裝置的底盤內的線卡。

示例28.根據示例20所述的網絡裝置,其中,為了在所述轉發單元的內部轉發路徑內配置沙盒,所述第一應用程式通過第一接口為所述沙盒配置限定所述沙盒可以配置有的指令量的資源限制。

示例29.一種永久性計算機可讀介質,包括用於促使網絡裝置的一個或多個可編程處理器進行以下操作的指令:被配置成由網絡裝置的控制平面執行的第一應用程式通過被配置成由網絡裝置的轉發單元執行的第一接口為所述轉發單元的內部轉發路徑配置有第一指令,所述第一指令確定處理由所述轉發單元接收的數據包,其中,所述第一應用程式將所述內部轉發路徑配置成包括沙盒,所述沙盒包括用於所述內部轉發路徑內內聯配置的指令的容器,並且其中,所述內部轉發路徑的至少一部分儲存到所述轉發單元的存儲器中並且由所述轉發單元的數據包處理器可執行,其中,所述數據包處理器是所述一個或多個可編程處理器的可編程處理器;被配置成由網絡裝置的控制平面執行的第二應用程式通過被配置成由網絡裝置的轉發單元執行的第二接口為所述沙盒配置有第二指令,第二指令確定在所述沙盒內處理數據包;並且由所述數據包處理器響應於確定由所述轉發單元接收的數據包與至少部分由第二應用程式控制的數據包流相關聯,通過執行為所述沙盒配置的第二指令,來處理所述數據包。

而且,在上述任何示例中陳述的任何特定特徵可以組合成所描述的技術的有利示例。即,任何特定特徵通常適用於本發明的所有示例。描述了本發明的各種示例。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀