它提出了一種可預測的虛擬結構解決方案——FAB,能夠實現為所有流明確選擇適當的路徑并且在亞毫秒時間尺度內收斂到理想的帶寬分配。
背景
在多租戶數據中心中,即使所有租戶共享相同的物理網絡,租戶的虛擬機(VMs)也應通過虛擬網絡結構(VF)進行邏輯互連。雖然已經提出了許多解決方案來提高多租戶數據中心網絡的性能,但它們仍然無法提供高度可預測的VF服務——帶寬保證、有限的尾延遲。
因此本文提出FAB,這是一個為數據中心租戶提供高度可預測的VF服務的框架。它利用可編程數據平面來構建活動邊緣(如NIC)和信息核心(如交換機)的融合。在核心中,每個交換機通過網絡遙測(INT)將關鍵信息(如鏈路利用率和活動帶寬訂閱)發送給活動邊緣。借助核心的實時反饋,邊緣可以對路徑選擇和流量準入做出及時準確的決策來實現預期的網絡性能。
設計
FAB整體系統架構如圖所示:
圖中顯示了FAB將邊緣代理(FAB-E)和核心代理(FAB-C)分別安裝到DCN邊緣和DCN核心中,兩種類型的代理通過周期性探測和相應的響應協同工作。在邊緣,FAB-E通過隧道或源路由將一個租戶的應用程序流從一個VM匯聚到一定數量的底層網絡(定向)路徑中再發送到另一個VM。
源FAB-E將本地的VF信息,即最小帶寬和發送窗口插入到探針中。沿著轉發路徑,FAB-C將聚合的VF信息,即總帶寬訂閱和總發送窗口以及網絡信息,即鏈路容量、隊列大小、TX速率通過INT插入到探針中。目標FAB-E返回所有在探測器中搭載的信息和響應以及它的本地最小帶寬。源FAB-E將目標帶寬與其本地帶寬進行比較以確定VM對的最小帶寬保證。
FAB整體工作流程如圖所示:
圖中顯示了FAB的整體工作流程。首先,每個FAB-E沿著活動底層路徑發送探針(步驟1)。探針到達FAB-C后,FAB-C讀取搭載的VF信息并將其與內部VF信息聚合(步驟2),然后將更新的結果插入到探針(步驟3)。
接下來,探針沿著路徑轉發到目的地(步驟4)。當目標FAB-E發送的相應返回時(步驟5),源FAB-E將根據相應中提供的信息決定是繼續使用經過速率調整的路徑還是如果當前路徑不再合格就遷移到其他的路徑(步驟6)。
性能實驗
本文通過使用商品SmartNIC和可編程交換機全面實施FAB。評估表明,在探測帶寬開銷有限的各種網絡情況下,FAB可以保持最小帶寬保證、高帶寬利用率和接近最優的出傳輸延遲。
對于如計算和存儲場景的應用級實驗,FAB相比于替代方案可以將QPS提高2.5倍,并將尾部延遲減少21倍以上。
總結
新推出的可編程數據平面是解決在多租戶DCN中提供可預測虛擬結構所面臨特殊挑戰的關鍵。FAB就是利用可編程數據平面來融合信息核心和活動邊緣來構建可預測的虛擬結構服務。它的創新在于簡單有效的機制,使整個網絡收斂到可預測的租戶級性能(例如保證帶寬和有效延遲)和亞毫秒級時間尺度的高利用率。
個人觀點
在傳統的網絡架構中,網絡核心(交換機)通常與邊緣(終端主機)獨立工作,導致核心幾乎被視為沒有直接反饋的管道,對于這個問題,傳統的方式是要么假設一個理想的核心,要么利用啟發式推斷網絡狀態。從根本上來說,如果網絡核心能夠提供明確的信息,這個問題就可以得到解決。利用商品可編程交換機,以前無法訪問的網絡信息現在都可以被方便的計算、存儲和傳輸。
這類信息允許網絡邊緣對數據傳輸做出及時的決策,從而無需經過耗時且不準確的啟發式方法。因此,本文的創新點即是利用可編程數據平面來探索如何建立網絡核心與邊緣之間的協作關系從而在根本上提高VF的可預測性。
Using Trio -- Juniper Networks’ Programmable Chipset -- for Emerging In-Network Applications
Mingran Yang (Massachusetts Institute of Technology), Alex Baban (Juniper Networks), Valery Kugel (Juniper Networks), Jeff Libby (Juniper Networks), Scott Mackie (Juniper Networks), Swamy Sadashivaiah Renu Kananda (Juniper Networks), Chang-Hong Wu (Juniper Networks), Manya Ghobadi (Massachusetts Institute of Technology)
這篇文章來自麻省理工學院和瞻博網絡團隊的研究者。它介紹了一種用于瞻博網絡MX系列路由器和交換機的可編程芯片組——Trio。
背景
可編程交換機的出現,為設計新的數據包處理協議和編譯器創造了機會,Tofino交換機還為使用網絡內計算來加速應用程序(如緩存、數據庫查詢處理、機器學習)鋪平了道路。盡管可編程交換機一直是這種新范式的關鍵推動力,但協議獨立交換機架構(PISA)通常不適合新興的網絡內應用,因此限制了進一步的增長并阻礙了廣泛采用網絡內計算的應用程序。
因此,本文介紹了一種用于瞻博網絡MX系列路由器和交換機的可編程芯片組——Trio,它的架構基于多線程可編程數據包處理引擎和高容量內存系統的層次結構,使其與基于流水線的架構有根本的不同,此外,Trio還能夠處理不同的數據包處理速率,使其成為新興網絡應用程序的理想平臺。
設計
1、非流水線架構:基于 Trio 的路由器/交換機和基于 PISA 的交換機的高級比較如下圖所示:
Trio 的架構與 Tofino 的架構有著根本的不同。Trio 具有非流水線架構,因此不同的數據包不會必然流經芯片上相同的物理路徑。Trio 中的傳入數據包使用數以千計的并行線程獨立處理。
這些線程使用 run-tocompletion 模型,其中線程將執行所需的指令,以完成對當前正在處理的數據包的處理。Trio 有專門的邏輯來確保相同流的數據包按順序傳遞,但不同流的數據包可以亂序處理,從而使其能夠有效地處理并發應用程序的混合。
2、中央處理元件:Trio中央處理元件如下圖所示:
PFE 是 Trio 轉發平面的中央處理元件,用于系統地將數據包移入和移出設備。基于 Trio 的設備由一個或多個 PFE 組成。每個 PPE 都在入口和出口方向處理數據包。
每個 PFE 都有數百個多線程數據包處理引擎 (PPE)。當一個新的數據包到達時,PFE 內部的一個硬件模塊,稱為 Dispatch 模塊,根據可用性將數據包頭發送到 PPE 進行處理,PPE 為這個數據包頭生成一個新線程。數據包尾部保存在內存和排隊子系統的 PFE 數據包緩沖區中,以避免在 PPE 線程中存儲大量字節。默認情況下,每個線程處理一個數據包。許多 PPE 線程并行工作以提供所需的處理帶寬。
當數據包處理完成時,修改后的數據包頭被發送到重新排序引擎。重新排序引擎保持更新的數據包頭,直到同一流中所有較早到達的數據包都已被處理以確保按順序交付。然后,重新排序引擎將修改后的數據包頭發送到內存和排隊子系統,以便排隊進行傳輸。
3、共享內存系統:Trio的共享存儲系統如下圖所示:
對于交換機和路由器,一些數據結構,例如計數器和監管器,需要高速修改。為了支持數百個 PPE 線程對這些數據結構的高效訪問,Trio 的共享內存系統充當所有線程訪問和修改數據的地方。數據修改發生在讀-修改-寫引擎內部,這允許在內存附近進行高速數據更新,很好地滿足了數據包處理應用程序的需求。
相比之下,傳統處理器使用的基于緩存行的一致性模型需要在訪問期間將數據移動到線程,當多個線程嘗試修改相同的內存位置時,這會產生更長的延遲。
4、編程語言Microcode:程序員使用一種名為 Microcode 的類 C 語言來編寫新應用程序并配置目標 Trio 路由器
Trio 的設備的編程語言是一種類似于 C 的語言,稱為 Microcode。程序員在 Microcode 中實現所有數據包處理操作,包括數據包解析、路由查找、數據包重寫和網絡內計算(如果有)。
為了在 Trio 上編寫新應用程序,程序員使用 Microcode 語言編寫新應用程序并將新的 Microcode 程序添加到現有代碼庫中。然后程序員使用 Trio 的編譯器生成軟件映像并配置目標器件。
性能實驗
本文使用三個真實的 DNN 模型(ResNet50、DenseNet161 和 VGG11)在測試平臺上對使用網絡內聚合進行分布式機器學習訓練和網絡內落后者緩解兩個用例進行了原型設計,以展示 Trio 在執行網絡內聚合時緩解落后者的能力。評估表明,當集群中出現落后者時,Trio 的性能比當今基于管道的解決方案高出 1.8 倍。
總結
本文介紹了瞻博網絡的可編程芯片組Trio及其在新興密集數據型網絡應用程序中的用途。本文通過描述Trio的多線程和可編程數據包轉發和數據包處理引擎對Trio的設計進行了介紹。然后,使用網絡內聚合進行分布式機器學習訓練和網絡內落后者緩解兩個用例來進行了原型設計以展示 Trio 在執行網絡內聚合時緩解落后者的能力。
個人觀點
本文的創新點在于Trio芯片組的設計使其不僅具有傳統ASIC的性能, 而且它能夠完全利用可編程處理器的靈活性。它的靈活架構能夠使其支持在芯片組發布很久之后開發的功能和協議。它的內存系統也對于具有大內存占用的新興應用程序的可擴展性至關重要。
Thanos:Programmable Multi-Dimensional Table Filters for Line Rate Network Functions
Vishal Shrivastav (Purdue University)
這篇文章來自普渡大學的Vishal Shrivastav。它主要介紹了Thanos,可以增強現有的可編程交換機pipeline,支持對一組資源進行可編程的多維過濾。
背景
對于性能感知路由、資源感知負載平衡、網絡診斷、安全和防火墻等幾個關鍵網絡功能來說,基于多維策略在有狀態資源特定指標上從一組資源中過濾數據平面中的條目的能力是至關重要的。然而,當前的可編程交換機不支持行率的表級狀態過濾。
本文提出了Thanos,它增強了現有的可編程開關管道交換機pipeline,并且Thanos無縫集成多太比特可編程開關管道在名義芯片面積的開銷。此外,在交換數據平面表達豐富的過濾策略的能力不僅為網絡運營商提供了更多的靈活性,而且它還大大提高了網絡性能。然而,不幸的是,由于內存和計算語義的限制,當前一代的可編程交換機無法以線速度表達這樣的過濾策略。
Thanos 交換機整體架構:
上圖顯示了Thanos的高級架構,其中過濾器模塊與RMT管道的Match-Action階段內聯集成。通常,可以有多個這樣的篩選器模塊與RMT管道集成,其中每個模塊將表示不同資源集上的篩選器策略。每當有數據包到達過濾模塊時,該模塊就會被觸發。
信息包將不加修改地通過過濾器模塊,同時,編程的過濾策略將應用于資源集。過濾操作的輸出被寫入包的元數據,以便在過濾模塊之后的RMT階段進行進一步處理。過濾器模塊是完全流水線的,因此可以在每個時鐘周期為一個新的包服務。此外,它不希望應用過濾策略的包可以完全跳過過濾模塊。
硬件設計
1、資源表:
Thanos使用名為Sorted多維雙向映射(SMBM)的新硬件數據結構將資源表存儲為關系表,具體結構如上圖所示。
2、可編程過濾單元:
UFPU的輸入和輸出如圖上所示。
3、可編程過濾器鏈管道:
該管道是由N個uppu組成的線性鏈。我們稱之為K-UFPU。K-UFPU的接口與UFPU相同,除了一個名為K的額外輸入外,它指定了用操作碼中指定的操作來編程的upu的數量(從N開始)。編程后的K個ufpu總是流水線中最接近輸入的第一個K個ufpu,而最后剩下的N-K個ufpu使用操作碼no-op編程,只是作為一個對最終輸出沒有影響的旁路電路。
鏈中每個UFPU的輸入根據公式1生成,使用上圖所示的一系列I/O生成器實現。注意,通過設置K=1, K-UFPU在功能上等價于UFPU。最后,我們的設計是完全流水線的,假設它的構建塊ufpu和bfpu的實現是完全流水線的。
性能測試
本文基于FPGA原型和模擬器進行的評估表明,與最先進的技術相比,Thanos中表達的策略可以將關鍵網絡功能的性能提高1.7倍。
個人觀點
Thanos可以使得RTM交換機架構支持多維過濾一系列資源,相比于前代有了很大的性能提升。并且,對于支持Thanos的內網,在一些常見的分布式應用問題上都有很大的性能提升。
Stateful Multi-Pipelined Programmable Switches
Vishal Shrivastav (Purdue University)
這篇文章來自普渡大學的Vishal Shrivastav。它主要介紹了MP5的設計和實現。
背景
由于晶體管擴展速度放緩,單個包處理管道的時鐘速率已經飽和,今天的可編程交換機采用多個并行管道來滿足高包處理速率。然而,并行處理對有狀態包處理提出了挑戰,在保持線速率處理的同時,很難保證功能的正確性。本文介紹了MP5的設計和實現,MP5是一種新的多流水線可編程交換機的結構、編譯器和運行時,它在功能上相當于邏輯上的單流水線交換機,同時處理數據包的速度也接近理想的所有數據包處理程序。
交換機架構
MP5的架構如上圖所示。MP5中的k個管道在架構上是相同的。此外,每個管道階段都與Banzai的管道階段相同,并包含匹配表、作為操作單元的Banzai原子和有狀態寄存器。然而,與Banzai不同的是,MP5中連續管道階段之間的互連不是線性的,而是由一個交叉桿組成,遵循D3的設計原則。此外,MP5有兩個物理上獨立且并行的互連通道,一個用于傳輸數據包(“數據”通道),另一個用于傳輸幻像數據包(“幻像”通道),遵循D4的設計原則。
此外,MP5的每個階段也有k個fifo,每個管道一個,在它的輸入,緩沖數據包(數據或幻影)等待訪問該階段的寄存器狀態。當來自多個管道的數據包可能希望進入相同時鐘周期的給定階段時,需要fifo來處理爭用場景。每個管道都有一個單獨的FIFO, MP5可以解決這樣的爭用。物理上,每個FIFO實現為一個獨立的環形緩沖區,但邏輯上,k個FIFO作為一個單獨的FIFO運行。
語言和編譯器
MP5可以使用Domino編程,Domino是一種用于編寫Banzai管道的領域特定語言。與P4相比,Domino是一種類似c語言的語言,它提供了編寫包處理程序(尤其是有狀態程序)的高級抽象。上圖展示了一個Domino示例程序。
實現和原型
本文在System Verilog中實現了MP5的設計。本文從單個RMT管道的開源硬件實現開始,并復制它來實現多個管道。本文還使用Banzai模型引入的有狀態動作單元來擴充管道。最后,本文加入了互聯的crossbar和每個階段的fifo,以及包轉向和動態分片邏輯。
接下來,本文在FPGA和ASIC模擬器上綜合了本文的實現。本文使用FPGA原型來運行和評估真正的有狀態數據包處理程序,而本文使用ASIC模擬器來估計我們設計的時鐘速度和芯片面積開銷。最后,由于本文的FPGA原型只有4個端口,每個端口的帶寬為10 Gbps,本文還在Python中實現了一個MP5模擬器,以評估MP5在更真實的交換機配置下的性能。
個人觀點
MP5既是一種新型的交換機架構,也是一種新型的交換機編譯器和并行包處理管線,它和邏輯單數據包處理管線有著同等的效果,也能達到理想的包處理速率。
FAst In-Network GraY Failure Detection for ISPs
Edgar Costa Molero (ETH Zurich), Stefano Vissicchio (University College London), Laurent Vanbever (ETH Zurich)
這篇文章來自 ETH Zurich 和 University College London 的研究者們。主要描述了FANcY的設計和實現。
背景
避免丟包對isp來說至關重要。不幸的是,isp的硬件故障可能會導致長期的數據包丟失,也被稱為灰色故障,這是現有的監控工具無法檢測到的。本文描述了FANcY的設計和實現,這是一個以isp為目標的系統,可以快速準確地檢測和定位灰色故障。FANcY是對以前監控方法的補充,以前的監控方法主要針對低延遲網絡,如數據中心網絡,不適用于ISP規模。
FANCY整體設計描述
FANcY工作在每個鏈路的粒度上,為每個交換機端口分別報告丟失。為了檢測和定位影響輸入表項的灰色故障,每個向下游發送報文的上游FANcY交換機都與下游建立計數會話,一旦上一個會話關閉,就會打開新的會話。在每個計數會話中,上游對下游計數的報文進行標記,標記為待增加的計數器,使兩臺交換機一致地對同一子集的報文進行相同的計數。
在每個會話結束時,下游將其計數器發回上游,上游將比較計數器,然后立即開始一個新的會話。當它檢測到計數器與下游計數器之間的差異時,上游開關通過填充本地寄存器來標記不匹配的計數器。
FANcY計數器被小心地放置,以避免記錄由于擁塞而造成的包丟失。在任何交換機中,擁塞通常發生在流量管理器(TM),它實現了實際的交換邏輯,即將數據包從入口管道重定向到配置的出口管道。在FANcY模式中,報文的計數順序為上游交換機的TM之后,下游交換機的TM之前。
本文設計了FANcY的計數協議,使其對包丟失具有彈性,同時在交換機上使用最小的內存。為了為最佳努力條目提供良好的準確性,本文依賴于一種縮放算法,該算法允許交換機的數據平面在運行時動態地探索基于哈希的樹。這減少了FANcY在交換機上的內存消耗,從而允許每個交換機與所有下游交換機保持計數會話。
性能測試
本文通過實驗證實了FANcY的能力,可以在數秒內準確檢測出灰色故障,只要交通損失的比例很小。本文還在Intel Tofino交換機中實現了FANcY,演示了它如何實現細粒度的快速重路由。本文的評估表明,FANcY可以在ISP設置中快速、準確地檢測和定位灰色故障,除了那些導致每個條目很少、零星數據包丟失的故障——正如預期的那樣,因為FANcY是一個數據驅動的系統。
個人觀點
FANcY是一種數據平面系統,它可以在ISPs中檢測內網潛在錯誤。雖然FANcY主要用來檢測和報告錯誤,但是它的接口仍然能支持未來的一些可選擇的快速重路由應用。此外,這篇文章還做了一系列測試,FANcY都能快速檢測并定位錯誤。
審核編輯:劉清
-
虛擬機
+關注
關注
1文章
962瀏覽量
29036 -
QPS
+關注
關注
0文章
24瀏覽量
8927 -
FAB
+關注
關注
1文章
33瀏覽量
10037
原文標題:SIGCOMM 2022 閱讀評述——可編程數據平面
文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論