<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 網(wǎng)絡(luò )與存儲 > 設計應用 > SDN可編程交換芯片架構核心:RMT,一個(gè)可編程的網(wǎng)絡(luò )DSA

SDN可編程交換芯片架構核心:RMT,一個(gè)可編程的網(wǎng)絡(luò )DSA

作者: 時(shí)間:2024-07-31 來(lái)源:軟硬件融合 收藏

編者按

本文引用地址:http://dyxdggzs.com/article/202407/461544.htm

Nick McKeown 在 ONF Connect 2019演講中定義了發(fā)展的三個(gè)階段:

l第一階段(2010–2020年):通過(guò)Openflow將控制面和數據面分離,用戶(hù)可以通過(guò)集中的控制端去控制每個(gè)交換機的行為;

l第二階段(2015–2025年):通過(guò)P4編程語(yǔ)言以及可編程FPGA或ASIC實(shí)現數據面可編程,這樣,在包處理流水線(xiàn)加入一個(gè)新協(xié)議的支持,開(kāi)發(fā)周期從數年降低到數周;

l第三階段(2020–2030年):展望未來(lái),網(wǎng)卡、交換機以及協(xié)議棧均可編程,整個(gè)成為一個(gè)可編程平臺。


(備注:引用部分為《軟硬件融合——超大規模云計算架構創(chuàng )新之路》圖書(shū)內容的節選。)

Nick為我們描繪了發(fā)展的一個(gè)非常美好的未來(lái),而這美好未來(lái)的核心是可編程DSA。Barefoot公司(Nick是Barefoot創(chuàng )始人之一,Intel于2019年收購了Barefoot)的核心競爭力在于圍繞著(zhù)P4網(wǎng)絡(luò )編程語(yǔ)言構建的一整套芯片及軟件生態(tài),其構建的全球唯一商用的可編程交換芯片的核心架構是PISA(Protocol Independent Switch Architecture,協(xié)議無(wú)關(guān)的交換架構),而PISA的原型來(lái)自于RMT(可重構匹配表)。

本文是RMT的經(jīng)典論文,希望通過(guò)此篇論文,管中窺豹,能夠學(xué)習到PISA架構的核心精髓。


參考文獻

Forwarding Metamorphosis: Fast Programmable Match-Action Processing in Hardware for , Pat Bosshart, Glen Gibb, Hun-Seok Kim, etc., SIGCOMM’13

(原標題)轉發(fā)變形:硬件實(shí)現的快速可編程SDN數據面匹配-動(dòng)作處理


摘要

在SDN (Software Defined Networking)中,控制平面和轉發(fā)平面在物理上是分離的??刂栖浖褂瞄_(kāi)放接口(如OpenFlow)對轉發(fā)平面(如交換機和路由器)進(jìn)行編程。本文旨在克服當前交換芯片和OpenFlow協(xié)議的兩個(gè)限制:

  1. 當前硬件交換機非常嚴格,只允許在一組固定的字段上進(jìn)行“匹配-動(dòng)作”處理,

  2. OpenFlow規范僅定義了有限的包處理動(dòng)作集。

我們提出了RMT(可重構匹配表)模型,這是一種新的基于RISC的交換芯片流水線(xiàn)結構,我們確定了基本的最小動(dòng)作原語(yǔ)集,以指定在硬件中如何處理報頭。RMT允許在不修改硬件的情況下在字段中更改轉發(fā)平面。與在OpenFlow中一樣,程序員可以指定多個(gè)任意寬度和深度的匹配表,只受總體資源限制,每個(gè)表可配置為在任意字段上進(jìn)行匹配。然而,RMT允許程序員比OpenFlow更全面地修改所有報頭字段。本文描述了一個(gè)實(shí)現RMT模型的64端口10Gb /s開(kāi)關(guān)芯片的設計。我們的具體設計表明,與社區內部的擔憂(yōu)相反,靈活的OpenFlow硬件交換機實(shí)現幾乎不需要額外的成本或電力。

1 介紹

改進(jìn)就是改變;要做到完美就要經(jīng)常改變?!鸺獱?/p>


好的抽象——比如虛擬內存和分時(shí)——在計算機系統中是至關(guān)重要的,因為它們允許系統處理變化,并允許在更高的層次上簡(jiǎn)化編程。網(wǎng)絡(luò )的發(fā)展得益于關(guān)鍵的抽象:TCP提供端點(diǎn)之間連接隊列的抽象,IP提供從端點(diǎn)到網(wǎng)絡(luò )邊緣的簡(jiǎn)單數據報抽象。然而,網(wǎng)絡(luò )中的路由和轉發(fā)仍然是一個(gè)令人困惑的集合,路由協(xié)議(如BGP、ICMP、MPLS)和轉發(fā)行為(如路由器、網(wǎng)橋、防火墻),控制和轉發(fā)平面仍然交織在封閉的、垂直集成的盒子中。

軟件定義網(wǎng)絡(luò )(SDN)在抽象網(wǎng)絡(luò )功能方面邁出了關(guān)鍵一步,它通過(guò)一個(gè)開(kāi)放的接口(如OpenFlow[27])將控制平面和轉發(fā)平面的角色分離開(kāi)來(lái)??刂破矫姹惶鸩㈦x開(kāi)交換機,將其置于外部軟件中。這種對轉發(fā)平面的編程控制允許網(wǎng)絡(luò )所有者向其網(wǎng)絡(luò )添加新功能,同時(shí)復制現有協(xié)議的行為。OpenFlow作為一種基于“Match-Action”方法的控制平面和轉發(fā)平面之間的接口,已經(jīng)非常出名了。粗略地說(shuō),數據包字節的子集與表相匹配;匹配的表項指定了對報文應用的相應動(dòng)作。

我們可以想象在通用CPU上的軟件中執行Match-Action。但是對于我們感興趣的速度——今天大約1Tb/s——我們需要專(zhuān)用硬件的并行性。10年來(lái),交換芯片的交換速度一直比CPU快兩個(gè)數量級,比網(wǎng)絡(luò )處理器快一個(gè)數量級,而且這種趨勢不太可能改變。因此,我們需要考慮如何在硬件中實(shí)現Match-Action來(lái)利用流水線(xiàn)和并行性,同時(shí)又受到片上表內存的限制。

在可編程性和速度之間有一個(gè)自然的權衡。如今,要支持新特性,經(jīng)常需要更換硬件。如果Match-Action硬件允許在現場(chǎng)進(jìn)行足夠的重新配置,以便在運行時(shí)支持新類(lèi)型的包處理,那么它將改變我們對網(wǎng)絡(luò )編程的看法。這里真正的問(wèn)題是,能否在不犧牲速度的情況下,以合理的成本完成這項工作。

單匹配表:最簡(jiǎn)單的方法是在我們稱(chēng)為SMT(單匹配表)模型中抽象匹配語(yǔ)義。在SMT中,控制器告訴交換機將任何一組報頭字段與單個(gè)匹配表中的條目進(jìn)行匹配。SMT假設解析器定位并提取正確的報頭字段以與表匹配。例如,一個(gè)以太網(wǎng)包可能有一個(gè)可選的MPLS標記,這意味著(zhù)IP報頭可以位于兩個(gè)不同的位置。當所有字段都完全指定時(shí),匹配是二進(jìn)制精確匹配,當某些位被關(guān)閉時(shí),匹配是三元匹配(通配符項)。表面上,SMT抽象對程序員(還有什么比單一匹配更簡(jiǎn)單的呢?)和實(shí)現者(SMT可以使用寬的三元內容可尋址內存(TCAM)來(lái)實(shí)現)都有好處。請注意,轉發(fā)數據平面抽象具有最嚴格的硬件實(shí)現約束,因為轉發(fā)通常需要以大約1Tb/s的速度運行。

然而,進(jìn)一步觀(guān)察會(huì )發(fā)現,由于一個(gè)經(jīng)典問(wèn)題,SMT模型的使用成本很高。表需要存儲每個(gè)頭文件的組合;如果報頭行為是正交的(條目將有許多通配符位),那么這是浪費。如果一個(gè)報頭匹配影響到另一個(gè)報頭,則會(huì )更加浪費,例如,如果第一個(gè)報頭的匹配決定了第二個(gè)報頭匹配一組不相連的值(例如,在虛擬路由器[11]中),則需要表保存兩者的笛卡爾積。

多匹配表:MMT(多匹配表)是SMT模型的自然細化。MMT在一個(gè)重要方面超越了SMT:它允許多個(gè)較小的匹配表通過(guò)包字段的子集進(jìn)行匹配。所述匹配表被布置成一系列的階段;階段j的處理可以依賴(lài)于階段i (i < j) 的處理,i階段修改報頭或其他信息然后傳遞給j階段;MMT很容易實(shí)現,在每個(gè)階段使用一組更窄的表;事實(shí)上,它與現有的交換芯片的實(shí)現方式非常接近,可以很容易地映射到現有的流水線(xiàn)上[3,14,23,28]。谷歌報告使用商業(yè)交換機芯片[13]將他們的整個(gè)私有廣域網(wǎng)轉換為這種方法。

OpenFlow規范轉變?yōu)镸MT模型[31],但沒(méi)有規定表的寬度、深度,甚至表的數量,讓實(shí)現者可以自由選擇他們希望的多個(gè)表。雖然許多字段已經(jīng)標準化(如IP和以太網(wǎng)字段),但OpenFlow允許通過(guò)用戶(hù)定義的字段設施引入新的匹配字段。

現有的交換芯片實(shí)現了少量(4-8)的表,其寬度、深度和執行順序在芯片制造時(shí)設置。但這嚴重限制了靈活性。用于核心路由器的芯片可能需要一個(gè)非常大的32位IP最長(cháng)匹配表和一個(gè)小的128位ACL匹配表;用于L2橋的芯片可能希望有一個(gè)48位目的MAC地址匹配表和第二個(gè)48位源MAC地址學(xué)習表;企業(yè)路由器可能希望有一個(gè)較小的32位IP前綴表和一個(gè)更大的ACL表以及一些MAC地址匹配表。為每個(gè)用例制造單獨的芯片是低效的,因此商業(yè)交換機芯片往往被設計為支持所有通用配置的超集,并以預先確定的流水線(xiàn)順序安排一組固定大小的表。這給網(wǎng)絡(luò )所有者帶來(lái)了一個(gè)問(wèn)題,他們希望調整表大小以?xún)?yōu)化他們的網(wǎng)絡(luò ),或者實(shí)現超出現有標準定義的新轉發(fā)行為。在實(shí)踐中,MMT通常轉換為固定的多個(gè)匹配表。

第二個(gè)更微妙的問(wèn)題是,交換芯片只提供了與常見(jiàn)處理行為相對應的有限的操作集,例如轉發(fā)、刪除、減少TTL、推送VLAN或MPLS報頭以及GRE封裝。到目前為止,OpenFlow只指定了其中的一個(gè)子集。這個(gè)操作集不容易擴展,也不是很抽象。更抽象的操作集將允許修改任何字段,更新與包關(guān)聯(lián)的任何狀態(tài)機,并將包轉發(fā)到任意一組輸出端口。

可重構匹配表:因此,在本文中,我們探索了MMT模型的一個(gè)改進(jìn),我們稱(chēng)之為RMT(可重構匹配表)。與MMT一樣,理想的RMT將允許一組流水線(xiàn)階段,每個(gè)階段都具有任意深度和寬度的匹配表。RMT超越了MMT,它允許以以下四種方式重新配置數據平面。

  • 首先,可以修改字段定義并添加新字段;

  • 其次,可以指定匹配表的數量、拓撲結構、寬度和深度,只受匹配位數的總體資源限制;

  • 第三,可以定義新的操作,比如寫(xiě)入新的擁塞字段;

  • 第四,可以將任意修改的數據包放置在指定的隊列中,以便在端口的任意子集輸出,并為每個(gè)隊列指定排隊規則。

這種配置應該由一個(gè)SDN控制器來(lái)管理,但在本文中我們沒(méi)有定義控制協(xié)議。

考慮到最近幾年提出的新協(xié)議,如PBB[16]、VxLAN[22]、NVGRE[19]、STT[21]和OTV[20],可以看出RMT的好處。每個(gè)協(xié)議都定義了新的報頭字段。如果沒(méi)有像RMT這樣的體系結構,就需要新的硬件來(lái)匹配和處理這些協(xié)議。

注意,RMT與當前的OpenFlow規范完全兼容(甚至部分實(shí)現)。單個(gè)芯片顯然可以允許接口重新配置數據平面。事實(shí)上,一些現有的芯片,至少在一定程度上是受多個(gè)細分市場(chǎng)需求的驅動(dòng),已經(jīng)有了一些可重構性,可以通過(guò)芯片的特別接口來(lái)表達。

許多研究人員已經(jīng)認識到需要類(lèi)似于RMT的東西,并提倡它。例如,IETF ForCES工作組開(kāi)發(fā)了一個(gè)靈活的數據平面[17];類(lèi)似地,ONF中的轉發(fā)抽象工作組也致力于可重構性[30]。然而,人們對RMT模型能否以非常高的速度實(shí)現持懷疑態(tài)度,這是可以理解的。如果沒(méi)有芯片提供RMT的存在證明,將控制器和數據平面之間的重構接口標準化似乎是徒勞的。

從直覺(jué)上看,以太比特速度任意重構似乎是一項不可能完成的任務(wù)。但在這些速度下,什么樣的受限形式的可重構性是可行的?受限制的可重構性是否涵蓋了我們前面提到的需求的足夠大的一部分?人們能否通過(guò)使用包含這些想法的硅來(lái)證明其可行性?與固定桌面的MMT芯片相比,這種RMT芯片有多貴?這些是我們在本文中要解決的問(wèn)題。

通用Payload處理不是我們的目標。SDN/OpenFlow(以及我們的設計)的目標是確定在硬件中處理報頭的最小原語(yǔ)集??梢园阉醋魇窍馬ISC那樣的最小指令集,它被設計成在大量流水線(xiàn)操作的硬件中運行得非???。我們非常靈活的設計是在成本上具有競爭力的固定設計。在美國,靈活性幾乎不需要任何成本。

論文貢獻:我們的論文對以下?tīng)幷撟龀隽司唧w貢獻:哪些轉發(fā)抽象在高速下是實(shí)用的,以及轉發(fā)平面在多大程度上可以由控制平面重新配置。具體來(lái)說(shuō),我們對上述問(wèn)題的處理如下:

  • 1)一個(gè)RMT的體系結構(第2章):我們描述了一個(gè)RMT交換體系結構,它允許定義任意的報頭和報頭序列,通過(guò)任意數量的表任意匹配字段,任意寫(xiě)入包報頭字段(但不包括包體),以及每個(gè)包的狀態(tài)更新。為了實(shí)現該體系結構,引入了一些限制條件。我們概述了如何通過(guò)解析圖來(lái)表示所需的配置,以定義標題,以及表流圖來(lái)表示匹配表拓撲。

  • 2)用例(第3章):我們提供的用例顯示了如何配置RMT模型來(lái)使用以太網(wǎng)和IP頭實(shí)現轉發(fā),并支持RCP[8]。

  • 3)芯片設計和成本(第4-5章):我們展示了我們所提倡的可重構性的具體形式是切實(shí)可行的,并描述了一個(gè)640Gb/s (64 x 10Gb/s)交換芯片的實(shí)現。我們的架構和實(shí)施研究包括邏輯和電路設計的重要細節,布圖規劃和布局,使用的技術(shù)經(jīng)過(guò)設計團隊開(kāi)發(fā)復雜數字集成電路的長(cháng)期歷史證明。采用了工業(yè)標準的28nm工藝。這項工作是必要的,以證明可行性的目標,如時(shí)間和芯片面積(成本)。我們還沒(méi)有生產(chǎn)出一個(gè)完整的設計或實(shí)際的硅。根據我們的調查,我們表明重配置的成本預計是適中的:比固定(不可重配置)版本的成本高出不到20%。

我們并不聲稱(chēng)我們是第一個(gè)提倡可重新配置匹配的人,或者我們所提議的重新配置功能是“正確的”。我們確實(shí)認為,重要的是通過(guò)對RMT模型進(jìn)行具體定義,并通過(guò)展示芯片來(lái)證明它是可行的,就像我們在本文中試圖做的那樣。雖然芯片設計通常不是SIGCOMM的領(lǐng)域,但我們的芯片設計表明,RMT模型的一種相當普遍的形式是可行的,而且價(jià)格低廉。我們展示了RMT模型不僅是一種考慮網(wǎng)絡(luò )編程的好方法,而且還可以使用匹配表和動(dòng)作處理器的可配置流水線(xiàn)在硬件中直接表達。

2 RMT架構

我們說(shuō)RMT是“允許一組流水線(xiàn)階段……每個(gè)字段都有一個(gè)任意深度和寬度的匹配表”。一個(gè)邏輯推論是,RMT交換機由一個(gè)解析器組成,用于在字段上進(jìn)行匹配,然后是任意數量的匹配階段。審慎性建議我們在輸出中加入某種排隊來(lái)處理?yè)砣?/p>

讓我們再深入一點(diǎn)。解析器必須允許修改或添加字段定義,這意味著(zhù)解析器是可重構的。解析器輸出是一個(gè)包報頭向量,它是一組報頭字段,如IP dest、Ethernet dest等。此外,包報頭向量包括“元數據”字段,如包到達的輸入端口和其他路由器狀態(tài)變量(例如,路由器隊列的當前大小)。向量流過(guò)一系列的邏輯匹配階段,每個(gè)階段抽象出圖1a中包處理(如以太網(wǎng)或IP處理)的邏輯單元。

每個(gè)邏輯匹配階段都允許配置匹配表的大?。豪?,對于IP轉發(fā),可能需要一個(gè)包含256K 32位前綴的匹配表,對于以太網(wǎng),可能需要一個(gè)包含64K 48位地址的匹配表。輸入選擇器選擇要匹配的字段。包修改使用寬指令(圖1c中的VLIW-超長(cháng)指令字)來(lái)完成,該指令可以同時(shí)對包報頭向量中的所有字段進(jìn)行操作。


(a) RMT模型作為邏輯匹配動(dòng)作階段的序列


(b) 靈活的匹配表配置 (c) VLIW動(dòng)作架構

圖1:RMT模型架構

更準確地說(shuō),包報頭向量中的每個(gè)字段F都有一個(gè)操作單元(圖1c),它最多可以接受三個(gè)輸入參數,包括頭向量中的字段和匹配的操作數據結果,并重寫(xiě)F。允許每個(gè)邏輯階段重寫(xiě)每個(gè)字段似乎有點(diǎn)過(guò)分,但它在移動(dòng)頭文件時(shí)很有用;我們稍后將說(shuō)明,與匹配表相比,動(dòng)作單位成本較小。一個(gè)邏輯的MPLS階段可能彈出一個(gè)MPLS報頭,將后續的MPLS報頭向前移動(dòng),而一個(gè)邏輯的IP階段可能只是減少TTL。指令還允許修改有限狀態(tài)(例如計數器),這可能會(huì )影響后續包的處理。

控制流是通過(guò)提供下一個(gè)要執行的表的索引的每個(gè)表匹配的附加輸出來(lái)實(shí)現的。例如,階段1中特定以太類(lèi)型上的匹配可以指導后面的處理階段在IP(路由)上進(jìn)行前綴匹配,而不同的以太類(lèi)型可以在以太網(wǎng)DA(橋接)上指定精確匹配。數據包的命運是通過(guò)更新一組目標端口和隊列來(lái)控制的;它可以用來(lái)丟棄數據包、實(shí)現多播或應用指定的QoS(如令牌桶)。

在流水線(xiàn)的末端需要一個(gè)重組塊來(lái)將包報頭向量修改推回數據包(圖1a)。最后,包被放置在指定輸出端口的指定隊列中,并應用一個(gè)可配置的隊列規則。

總之,圖1a的理想RMT允許通過(guò)修改解析器來(lái)添加新字段,通過(guò)修改匹配內存來(lái)匹配新字段,通過(guò)修改階段指令來(lái)執行新動(dòng)作,通過(guò)修改每個(gè)隊列的隊列規則來(lái)創(chuàng )建新的隊列。理想的RMT可以模擬現有的設備,如網(wǎng)橋、路由器或防火墻;可以實(shí)現現有的協(xié)議,如MPLS、ECN,以及文獻中提出的協(xié)議,如使用非標準擁塞字段的RCP[8]。最重要的是,它允許將來(lái)在不修改硬件的情況下修改數據平面。

2.1 在640Gbps下的實(shí)現架構

我們提倡如圖1b所示的實(shí)現體系結構,它由大量的物理流水線(xiàn)階段組成,根據每個(gè)邏輯階段的資源需求,可以將少量的邏輯RMT階段映射到這些物理流水線(xiàn)階段。這個(gè)實(shí)現架構的動(dòng)機是:

  1. 分解狀態(tài):路由器轉發(fā)通常有幾個(gè)階段(如轉發(fā)、ACL),每個(gè)階段使用一個(gè)單獨的表;將這些組合到一個(gè)表中會(huì )產(chǎn)生狀態(tài)的叉積。階段是通過(guò)依賴(lài)順序處理的,因此物理流水線(xiàn)是自然的。

  2. 靈活的資源分配最小化資源浪費:物理流水線(xiàn)階段有一些資源(如CPU、內存)。邏輯階段所需的資源可能有很大差異。例如,防火墻可能需要所有ACL,核心路由器可能只需要前綴匹配,邊緣路由器可能各種資源都需要一些。通過(guò)靈活地將物理階段分配到邏輯階段,可以重新配置流水線(xiàn),將其從防火墻轉變?yōu)楝F場(chǎng)的核心路由器。物理階段N的數量應該足夠大,以便使用很少資源的邏輯階段最多浪費1/N的資源。當然,增加N將增加開(kāi)銷(xiāo)(布線(xiàn)、功率):在我們的芯片設計中,我們選擇N = 32作為減少資源浪費和硬件開(kāi)銷(xiāo)之間的折衷。

  3. 布局優(yōu)化:如圖1b所示,通過(guò)將邏輯階段分配給多個(gè)連續的物理階段,可以為邏輯階段分配更多內存。另一種設計是通過(guò)交叉開(kāi)關(guān)[4]將每個(gè)邏輯階段分配給一組解耦的存儲器。雖然這種設計更加靈活(任何內存組都可以分配到任何階段),但在最壞的情況下,處理階段和內存之間的線(xiàn)延遲至少會(huì )以sqrt(M)的速度增長(cháng),而在需要大量?jì)却娴穆酚善餍酒?,M可以很大。雖然這些延遲可以通過(guò)流水線(xiàn)來(lái)改善,但這種設計的終極挑戰是布線(xiàn):除非減少當前的匹配和動(dòng)作寬度(1280位),否則在每個(gè)階段和每個(gè)內存之間運行如此多的布線(xiàn)可能是不可能的。

總而言之,圖1b的優(yōu)勢在于它使用了帶有短線(xiàn)的平鋪架構,其資源可以以最小的浪費重新配置。我們承認有兩個(gè)缺點(diǎn)。首先,物理階段的數量越多,對能量的需求就越高。第二,這個(gè)實(shí)現體系結構合并了處理和內存分配。需要更多處理的邏輯階段必須分配給兩個(gè)物理階段,但是即使它可能不需要內存,它也會(huì )得到兩倍的內存。實(shí)際上,這兩個(gè)問(wèn)題都不重要。我們的芯片設計顯示,階段處理器的功耗最多是總功耗的10%。其次,在網(wǎng)絡(luò )中,大多數用例是由內存使用而不是處理決定的。

2.2 可實(shí)現性限制

物理流水線(xiàn)階段架構需要限制以允許tb級速度實(shí)現:

1、匹配限制:設計必須包含固定數量的物理匹配階段和固定的資源集。我們的芯片設計在入口和出口提供了32個(gè)物理匹配階段。在出口的匹配動(dòng)作處理允許更有效地處理組播數據包,通過(guò)延遲每個(gè)端口的修改,直到緩沖之后。

2、包報頭限制:包含用于匹配和操作的字段的包報頭向量必須受到限制。我們的芯片設計限制是4Kb (512B),這允許處理相當復雜的頭。

3、內存限制:每個(gè)物理匹配階段都包含相同大小的表內存。通過(guò)將每個(gè)邏輯匹配階段映射到多個(gè)物理匹配階段或其分數,可以近似得到任意寬度和深度的匹配表(見(jiàn)圖1b)。例如,如果每個(gè)物理匹配階段只允許1000個(gè)前綴條目,那么2000個(gè)IP邏輯匹配表將分兩個(gè)階段實(shí)現(圖1b左上角的矩形)。同樣,一個(gè)小型Ethertype匹配表可能會(huì )占用匹配階段內存的一小部分。

SRAM中基于哈希的二進(jìn)制匹配比TCAM的三元匹配便宜6倍。兩者都是有用的,因此我們在每個(gè)階段提供固定數量的SRAM和TCAM。每個(gè)物理階段包含106個(gè)1K 112b SRAM塊,用于80b寬哈希表(開(kāi)銷(xiāo)位稍后解釋)和存儲操作和統計數據,以及16個(gè)2K 40b TCAM塊。塊可以并行地用于更寬的匹配,例如,使用四個(gè)塊的160b ACL查找。32級的總內存為370 Mb SRAM和40 Mb TCAM。

4、動(dòng)作限制:為了可實(shí)現,每個(gè)階段的指令數量和復雜性必須受到限制。在我們的設計中,每個(gè)階段可以在每個(gè)字段執行一條指令。指令僅限于簡(jiǎn)單的算術(shù)、邏輯和位操作(見(jiàn)4.3)。這些操作允許實(shí)現RCP[8]這樣的協(xié)議,但不允許在包體上進(jìn)行包加密或正則表達式處理。

指令不能實(shí)現狀態(tài)機的功能;它們只能修改包報頭向量中的字段、更新有狀態(tài)表中的計數器或將包直接發(fā)送到端口/隊列。隊列系統提供了四個(gè)層次和每個(gè)端口2K隊列,允許赤字輪循、分層公平隊列、令牌桶和優(yōu)先級的各種組合。但是,它不能模擬WFQ所需的排序。

在我們的芯片中,每個(gè)階段包含超過(guò)200個(gè)動(dòng)作單元:一個(gè)用于包報頭向量中的每個(gè)字段。芯片中包含超過(guò)7000個(gè)動(dòng)作單元,但與內存相比,這些單元占用的面積很小(<< span="">10%)。動(dòng)作單元處理器是簡(jiǎn)單的,特別的架構,以避免昂貴的執行指令,并需要少于100門(mén)每位。

這樣的RMT體系結構應該如何配置?需要兩段信息:表示允許的報頭序列的解析圖,以及表示匹配表集和它們之間的控制流的表流圖(參見(jiàn)圖2和4.4)。理想情況下,編譯器執行從這些圖到適當的交換配置的映射。我們還沒(méi)有設計出這樣的編譯器。

3 示例用例


(a) L2/L3交換


(b) RCP和ACL支持

圖2 交換配置示例

為了對如何使用RMT芯片有更深層次的理解,我們將看兩個(gè)用例。

例1:L2/L3開(kāi)關(guān)。

首先,我們需要配置解析器、匹配表和操作表。對于我們的第一個(gè)示例,圖2a顯示了L2/L3交換機的解析圖、表流圖和內存分配。解析圖和表流圖告訴解析器在寬報頭總線(xiàn)上提取和放置四個(gè)字段(Ethertype、IP DA、L2 SA、L2 DA)。表流圖告訴我們應該從寬頭總線(xiàn)讀取哪些字段并在表中匹配。內存分配告訴我們如何將這四個(gè)邏輯表映射到物理內存階段。在我們的示例中,Ethertype表自然屬于階段1,其余三個(gè)表分布在所有物理階段,以最大限度地擴大它們的大小。大多數哈希表RAM是在L2 SA和DA之間分割的,每個(gè)有120萬(wàn)個(gè)條目。我們致力于32個(gè)階段的TCAM條目,以容納100萬(wàn)個(gè)IP DA前綴。最后,我們需要存儲VLIW動(dòng)作原語(yǔ),以便在匹配后執行(例如,出口端口,減少TTL,重寫(xiě)L2 SA/DA)。這需要30%的階段RAM內存,剩下的留給L2 SA/DA。如果啟用,包和字節計數器也將消耗RAM, L2表大小減半。

一旦配置完成,控制平面就可以開(kāi)始填充每個(gè)表,例如通過(guò)添加IP DA轉發(fā)表項。

例2:支持RCP和ACL。

我們的第二個(gè)用例為簡(jiǎn)單的防火墻添加了速率控制協(xié)議(RCP)支持[8]和ACL。RCP通過(guò)交換顯式地指示流量的公平共享率,從而減少了流量完成時(shí)間,從而避免了使用TCP慢啟動(dòng)的需求。公平共享速率被每個(gè)開(kāi)關(guān)標記到RCP報頭中。圖2b顯示了新的解析圖、表流圖和內存分配。

為了支持RCP,數據包的當前速率和估計的RTT字段被解析器提取并放置在頭部向量中。第32階段的出口RCP表更新出包的RCP速率——小的動(dòng)作選擇包當前速率和鏈路公平共享速率中較小的那個(gè)。(公平份額比率由控制平面定期計算。)

有狀態(tài)表(第4.4節)積累計算公平份額率所需的數據。狀態(tài)表在第32階段實(shí)例化,并為每個(gè)目標端口累積字節和RTT和。

我們還從TCAM的最后兩個(gè)階段創(chuàng )建了20K ACL條目(120b寬),將L3表的前綴減少到960K,以及保存相關(guān)操作(例如,drop、log)的RAM條目。

在實(shí)踐中,用戶(hù)不應該關(guān)注底層配置細節,而應該依賴(lài)編譯器從解析圖和表流圖生成開(kāi)關(guān)配置。

4 芯片設計


圖3 交換芯片架構

到目前為止,我們使用了方便網(wǎng)絡(luò )用戶(hù)的RMT轉發(fā)平面的邏輯抽象和實(shí)現RMT的物理體系結構。

現在我們描述實(shí)現設計細節。我們選擇1 GHz交換芯片工作頻率,因為在64個(gè)10 Gb/s端口的總吞吐量960MPPS,一個(gè)流水線(xiàn)可以處理所有輸入端口數據,服務(wù)所有端口,而在較低的頻率,我們需要使用多個(gè)這樣的流水線(xiàn),需要附加一些區域開(kāi)銷(xiāo)。交換IC的框圖如圖3所示。注意,這與圖1a的RMT體系結構圖非常相似。

輸入信號由64個(gè)10Gb SerDes IO模塊接收。40G通道由4個(gè)10G端口組在一起組成。經(jīng)過(guò)執行低級信令和CRC生成/檢查等MAC功能的模塊后,輸入數據由解析器處理。我們使用16個(gè)入口解析器塊,而不是圖1a中所示的單個(gè)邏輯解析器,因為我們的可編程解析器設計可以處理40Gb的帶寬,四個(gè)10G通道或一個(gè)40G通道。

解析器接受單個(gè)字段位于可變位置的包,并輸出一個(gè)固定的4kb包報頭向量,其中每個(gè)解析字段被分配一個(gè)固定的位置。位置是靜態(tài)的,但可以配置。字段的多個(gè)副本(例如,多個(gè)MPLS標簽或內部和外部IP字段)被分配到包報頭向量中唯一的位置。

輸入解析器的結果被多路復用到單個(gè)流中,以提供由32個(gè)順序匹配階段組成的匹配流水線(xiàn)。一個(gè)大的共享緩沖區提供存儲來(lái)容納由于輸出端口過(guò)度訂閱而導致的排隊延遲;根據需要將存儲分配給通道。分離者將數據包報頭向量中的數據重新組合到每個(gè)數據包中,然后存儲在公共數據緩沖區中。

隊列系統與公共數據緩沖區相關(guān)聯(lián)。數據緩沖區存儲數據包數據,而指向該數據的指針保存在每個(gè)端口的2K隊列中。每個(gè)通道依次使用可配置的隊列策略從公共數據緩沖區請求數據。接下來(lái)是出口解析器、出口匹配流水線(xiàn)(由32個(gè)匹配階段組成)和分離器,在分離器之后,包數據被定向到適當的輸出端口并由64個(gè)SerDes輸出通道驅動(dòng)出芯片。

雖然單獨的32步出口處理流水線(xiàn)似乎有點(diǎn)小題大做,但我們表明出口和進(jìn)口流水線(xiàn)共享相同的匹配表,因此成本最低。此外,出口處理允許組播數據包通過(guò)端口被定制(比如它的擁塞位或MAC目的地),而無(wú)需在緩沖區中存儲幾個(gè)不同的數據包副本?,F在我們描述設計中的每個(gè)主要組件。

4.1 可配置的Parser


圖4 可配置的Parser模型

解析器接受輸入的包數據并生成4K位包報頭向量作為輸出。解析由用戶(hù)提供的解析圖(如圖2)指導,通過(guò)脫機算法轉換為256條目40b TCAM中的條目,該條目匹配入包數據的32b和解析器狀態(tài)的8b。注意,這個(gè)解析器TCAM與每個(gè)階段中使用的匹配TCAM是完全分離的。例如,當以太類(lèi)型的16位到達時(shí),CAM匹配32位中的16位(通配符匹配其余部分),更新指示下一個(gè)報頭類(lèi)型(例如VLAN或IP)的狀態(tài),以指導進(jìn)一步解析。

更一般地說(shuō),TCAM匹配的結果會(huì )觸發(fā)一個(gè)操作,該操作更新解析器狀態(tài),將傳入數據移動(dòng)指定字節數,并將一個(gè)或多個(gè)字段的輸出從輸入包中的位置定向到包報頭向量中的固定位置。重復這個(gè)循環(huán)來(lái)解析每個(gè)包,如圖4所示。通過(guò)將關(guān)鍵更新數據(如輸入移位計數和下一個(gè)解析器狀態(tài))從RAM中提取到TCAM輸出優(yōu)先級邏輯中,循環(huán)得到了優(yōu)化。解析器的單循環(huán)循環(huán)以32Gb/s的速度匹配字段,這意味著(zhù)更高的吞吐量,因為不是所有字段都需要解析器匹配。一個(gè)單獨的解析器實(shí)例很容易支持一個(gè)40Gb/s的包流。

4.2 可配置的Match內存

每個(gè)匹配階段包含兩個(gè)640b寬匹配單元,一個(gè)TCAM用于三元匹配,一個(gè)基于SRAM的哈希表用于精確匹配。SRAM哈希單元的位寬由8個(gè)80b子單元聚合而成,而三元表則由16個(gè)40b TCAM子單元組成。這些子單元可以單獨運行,也可以分組以獲得更寬的寬度,或者組合在一起以形成更深的表。輸入交叉開(kāi)關(guān)為每個(gè)子單元提供匹配數據,子單元從4Kb包報頭向量中選擇字段。如前所述(圖1b),相鄰匹配階段的表格可以組合成更大的表格。在限制下,所有32個(gè)階段都可以創(chuàng )建一個(gè)表。

此外,圖3中的入口和出口匹配流水線(xiàn)實(shí)際上是同一個(gè)物理塊,在入口和出口線(xiàn)程之間以細粒度共享,如圖1b所示。為此,首先在輸入和輸出向量之間共享包報頭向量;向量中的每個(gè)字段都被配置為由入口線(xiàn)程或出口線(xiàn)程擁有。其次,每個(gè)字段對應的功能單元以相同的方式分配入或出。最后,每個(gè)內存塊分配給入口或出口。不會(huì )出現爭用問(wèn)題,因為每個(gè)字段和內存塊都是由出口或入口獨占的。

每個(gè)匹配階段有106個(gè)包含1K項x 112b的RAM塊。分配給匹配、操作和統計內存的RAM塊的分片是可配置的。精確匹配表被實(shí)現為布谷鳥(niǎo)哈希表[10,26,32],(至少)有四種1K條目的方式,每一種方式都需要一個(gè)RAM塊。讀取是確定地在一個(gè)周期內執行的,所有的方式都是并行訪(fǎng)問(wèn)的。每個(gè)比賽階段也有16個(gè)TCAM塊,每塊為2K項x 40b,可以組合成更寬或更深的表。

與每個(gè)匹配表RAM條目相關(guān)聯(lián)的是一個(gè)指向動(dòng)作內存和動(dòng)作大小的指針,一個(gè)指向指令內存的指針,以及下一個(gè)表地址。動(dòng)作內存包含參數(例如,在輸出封裝中使用的下一跳信息),指令指定要執行的函數(例如,添加頭)。動(dòng)作內存和匹配內存一樣,由8個(gè)更窄的單元組成,每個(gè)單元包含1K個(gè)112位字,每個(gè)單元產(chǎn)生96b數據(以及字段有效位和內存ECC位-錯誤糾正碼)。操作內存從106個(gè)RAM塊中分配,而操作指令保存在一個(gè)單獨的專(zhuān)用內存中。

與OpenFlow一樣,我們的芯片為每個(gè)流表條目存儲包和字節統計計數器。這些計數器的完整64b版本包含在片外DRAM中,芯片上使用1K RAM塊并應用LR(T)算法[33]提供可接受的DRAM更新速率的有限分辨率的計數器。一個(gè)字的統計內存可配置地容納兩個(gè)或三個(gè)流條目的計數器,允許在統計內存成本和DRAM更新速率之間進(jìn)行權衡。每個(gè)計數器增量都需要一個(gè)讀寫(xiě)內存操作,但在1GHz的流水線(xiàn)中,每個(gè)包只有一個(gè)操作可用,因此通過(guò)增加一個(gè)內存塊,就合成了第二個(gè)內存端口。

4.3 可配置的動(dòng)作引擎

為每個(gè)包報頭字段提供一個(gè)單獨的處理單元(參見(jiàn)圖1c),以便所有字段都可以被同時(shí)修改。包報頭向量中分別有64、96和64個(gè)字(8、16和32b),每個(gè)單詞對應一個(gè)有效位。較小的字的單位可以組合起來(lái)執行一個(gè)較大的字段指令,例如,兩個(gè)8b的單位可以合并成一個(gè)單獨的16b字段來(lái)操作它們的數據。每個(gè)VLIW包含每個(gè)字段字的單個(gè)指令字段。

OpenFlow指定了簡(jiǎn)單的操作,如將字段設置為值,以及復雜的操作,如PBB封裝和從內到外或從外到內的TTL副本,其中外部和內部字段可能是眾多選擇之一。復雜的修改可以是低速的子例程,但必須在我們的1GHz時(shí)鐘速率下使用精心選擇的指令集將其簡(jiǎn)化為單周期操作。


表1:部分動(dòng)作指令集

表1是我們的操作指令的子集。

  • Deposit-bype允許從源字的任意位置存儲任意字段到背景字的任意位置。

  • Rot-mask-merge獨立地旋轉兩個(gè)源,然后根據一個(gè)字節掩碼合并它們,這在執行Pv6到IPv4地址轉換[18]時(shí)很有用。

  • bitmask-set用于選擇性的元數據更新;它需要三個(gè)源:兩個(gè)源要合并和一個(gè)位掩碼。

  • Move,和其他操作符一樣,只會(huì )在源有效的情況下將源移動(dòng)到目的地,也就是說(shuō),如果該字段存在于包中。

  • 另一個(gè)通用的可選條件化是目標有效。cond-move和cond-mux指令對于從內到外和從外到內的字段拷貝是有用的,其中內部和外部字段是依賴(lài)于包的。例如,一個(gè)到MPLS標簽的從內到外的TTL拷貝可以從內部MPLS標簽獲取TTL(如果它存在的話(huà)),或者從IP頭獲取TTL。移位、旋轉和字段長(cháng)度值通常來(lái)自指令。一個(gè)源操作數從包報頭向量中選擇字段,而第二個(gè)源操作數從包報頭向量或動(dòng)作字中選擇字段。

一個(gè)復雜的操作,如PBB、GRE或VXLAN封裝,可以被編譯成一個(gè)單獨的VLIW指令,然后被認為是一個(gè)原語(yǔ)。靈活的數據平面處理也可以用網(wǎng)絡(luò )處理器、FPGA或軟件實(shí)現操作,但是需要更高的成本功能才能達到640Gb/s。

4.4 其他特性

通過(guò)依賴(lài)分析減少延遲:通過(guò)要求物理匹配階段I只在階段I-1完全完成處理P后才處理包頭向量P,可以很容易地確保正確性。但在許多情況下,這是過(guò)度殺傷,并可能?chē)乐卦黾友舆t。減少延遲的關(guān)鍵是在連續的階段確定匹配表之間的三種依賴(lài)關(guān)系:匹配依賴(lài)關(guān)系、動(dòng)作依賴(lài)關(guān)系和繼承依賴(lài)關(guān)系[2],每一種都在下面描述。


圖5 匹配階段依賴(lài)

當一個(gè)匹配階段修改數據包報頭字段,并且隨后的階段對該字段進(jìn)行匹配時(shí),就會(huì )產(chǎn)生匹配依賴(lài)。在這種情況下不可能有執行重疊(圖5a)。當匹配階段修改數據包報頭字段,而后續階段使用該字段作為動(dòng)作的輸入時(shí),動(dòng)作依賴(lài)就會(huì )發(fā)生,例如,如果一個(gè)階段設置了一個(gè)TTL字段,而下一個(gè)階段減少了TTL。部分執行重疊是可能的(圖5b)。當匹配階段的執行是基于前一階段的執行結果時(shí),就會(huì )產(chǎn)生后續依賴(lài)關(guān)系;前一階段的執行可能會(huì )導致后續階段被跳過(guò)。如果后續階段是推測運行的,并且在后續結果提交之前解決了預測,則后續階段可以與其前身階段并發(fā)運行(圖5c)。沒(méi)有依賴(lài)關(guān)系的表也可以同時(shí)運行。連續階段之間的流水線(xiàn)延遲是在圖5的三個(gè)選項之間靜態(tài)配置的,分別針對入口和出口線(xiàn)程。

組播和ECMP:組播處理在入口和出口之間進(jìn)行分割。輸入處理寫(xiě)入輸出端口位向量字段,以指定輸出,并可選地寫(xiě)入用于以后匹配的標記和路由到每個(gè)端口的副本數量。每個(gè)多播包的一個(gè)副本存儲在數據緩沖區中,多個(gè)指針?lè )胖迷陉犃兄?。當數據包被注入出口流水線(xiàn)時(shí),就會(huì )創(chuàng )建副本,在出口流水線(xiàn)中,表可以匹配標簽、輸出端口和數據包拷貝計數,以允許每個(gè)端口的修改。ECMP和uECMP處理類(lèi)似。

計量器和狀態(tài)表:計量器對匹配表項的流量速率進(jìn)行測量和分類(lèi),可用于修改或丟棄報文。計量只是有狀態(tài)表的一個(gè)例子,其中一個(gè)操作修改了后續包可見(jiàn)的狀態(tài),并可用于修改它們??梢匀我庠黾雍椭刂玫挠袪顟B(tài)計數器。例如,它們可以用來(lái)實(shí)現GRE序列號(在每個(gè)封裝包中遞增)和OAM[15,25]。

一致性和原子更新:為了允許一致性更新[34],版本信息包含在表項中,版本ID通過(guò)流水線(xiàn)與每個(gè)包一起流動(dòng),根據版本兼容性對表進(jìn)行匹配。

5 評估

相對于傳統的可編程開(kāi)關(guān)芯片,我們通過(guò)增加設計面積和功耗來(lái)描述可配置性的成本。我們的比較在第5.5節中對總芯片面積和功耗進(jìn)行了比較。為了達到這個(gè)目的,我們依次考慮解析器、匹配階段和動(dòng)作處理,從而考慮成本的組成。

5.1 可編程解析器成本

可編程性是有代價(jià)的。傳統解析器針對一個(gè)解析圖進(jìn)行優(yōu)化,而可編程解析器必須處理任何受支持的解析圖。通過(guò)比較常規設計和可編程設計的綜合結果來(lái)評估成本。圖6顯示了實(shí)現幾個(gè)解析圖和一個(gè)可編程解析器的傳統解析器的總門(mén)數。我們假設通過(guò)組合運行在1GHz的40 Gb/s解析器的16個(gè)實(shí)例,解析器的總吞吐量為640 Gb/s。所有設計的結果模塊在解析時(shí)都包含4Kb的包報頭向量。該可編程解析器使用256 x 40位TCAM和256 x 128位動(dòng)作RAM。


圖6 提供640Gb/s聚合吞吐量的Parser總門(mén)數

解析器門(mén)計數由填充解析器報頭向量的邏輯決定。傳統設計需要290 - 300萬(wàn)個(gè)門(mén),這取決于解析圖,而可編程設計需要560萬(wàn)個(gè)門(mén),其中160萬(wàn)個(gè)由增加的TCAM和動(dòng)作RAM模塊貢獻。從這些結果來(lái)看,解析器可編程性的成本約為2(5.6/3.0 = 1.87 ≈ 2)。

盡管將解析器門(mén)數增加了一倍,但解析器只占芯片總體面積不到1%,因此使解析器可編程的成本不是問(wèn)題。

5.2 內存成本

讀者可能會(huì )擔心內存的成本。

  • 首先,內存技術(shù)本身(哈希表,TCAM)相對于標準SRAM內存的成本,以及將內存分割成可以重新配置的更小塊的成本;

  • 其次,每個(gè)匹配表條目需要額外的數據來(lái)指定操作和保持統計數據;

  • 第三,當一個(gè)48位的以太網(wǎng)目的地址被放置在112位寬的內存中時(shí),有內部碎片的成本。


我們輪流處理每個(gè)開(kāi)銷(xiāo),并特別指出可編程性的(小的)額外成本。在接下來(lái)的內容中,我們將匹配表(例如48位以太網(wǎng)DA)中的條目稱(chēng)為流條目。

5.2.1 內存技術(shù)成本

精確匹配:我們使用布谷鳥(niǎo)哈希進(jìn)行精確匹配,因為它的填充算法占用率很高,對于4路哈希表,通常超過(guò)95%。布谷鳥(niǎo)哈希表通過(guò)遞歸地將沖突項逐出到其他位置來(lái)解決填充沖突。此外,雖然我們的內存系統是由1K × 112位RAM塊構成的,但與使用更大、更高效的內存單元相比,可能會(huì )有一個(gè)面積代價(jià)。然而,使用1K RAM塊只會(huì )帶來(lái)大約14%的面積損失,可以說(shuō)是該技術(shù)實(shí)現的最密集的SRAM模塊。

通配符匹配:我們在芯片上使用了大量的TCAM,直接支持前綴匹配、ACL等通配符匹配。TCAM傳統上被認為是不可行的,因為電力和地區的考慮。然而,TCAM的工作功率已經(jīng)被新的TCAM電路設計技術(shù)[1]減少了大約4/5。因此,在最壞的情況下,在所有通道上的最小包大小的最大包速率下,TCAM功率是對總芯片功率的少數幾個(gè)主要貢獻者之一;在更典型的長(cháng)包和短包混合物中,TCAM功率降低到總功率的一個(gè)非常小的比例。

其次,相當于一個(gè)等效的比特數SRAM,TCAM通常需要6-7倍的面積,三元和二元流項都有與它們相關(guān)的其他位,包括動(dòng)作內存、統計計數器、指令、動(dòng)作數據和下一個(gè)表指針。例如,使用32位IP前綴、48位統計計數器和16位動(dòng)作內存(假設用于指定下一跳),TCAM部分僅為內存比特數的1/3,因此TCAM的面積代價(jià)降至3左右。

雖然3倍是重要的,考慮到32b (IPv4)或128b (IPv6)最長(cháng)前綴匹配和ACL是所有現有路由器的主要使用案例,為T(mén)CAM投入大量資源以允許1M IPv4前綴或300K ACL似乎是有用的。雖然我們可以使用具有特殊用途的LPM算法的SRAM,而不是像[6]那樣,實(shí)現32位或128位LPM的TCAM的單周期延遲是非常困難甚至不可能的。然而,決定三元表和二進(jìn)制表容量的比率(我們的芯片提出1:2的比率)是一個(gè)重要的實(shí)現決策,具有重大的成本影響,目前還沒(méi)有什么現實(shí)世界的反饋。

5.2.2 動(dòng)作規格的代價(jià)

除了流條目外,每個(gè)匹配表RAM條目還有一個(gè)指向動(dòng)作內存(13b)的指針,一個(gè)動(dòng)作大小(5b)的指針,一個(gè)指向指令內存(32條指令的5b)的指針,以及一個(gè)下一個(gè)表地址(9b)。對于最窄的流入口來(lái)說(shuō),這些額外的位大約占35%的開(kāi)銷(xiāo)。也有版本和錯誤校正位,但這些是常見(jiàn)的任何匹配表設計,所以我們忽略他們。

除了流條目中的開(kāi)銷(xiāo)位外,還需要其他內存來(lái)存儲操作和統計信息。這些增加了總開(kāi)銷(xiāo)(匹配字段所需的總位數與匹配字段位的比率),但有時(shí)這兩種額外成本都可以降低。我們將展示如何在某些情況下減少流入口開(kāi)銷(xiāo)位。此外,應用程序需要不同數量的操作內存,有時(shí)不需要統計數據,因此可以減少或消除這些內存成本。

給定匹配、操作和統計數據之間的內存塊的可變配置,我們使用一些配置示例來(lái)了解與不可配置的固定分配相比,記帳開(kāi)銷(xiāo)是如何變化的。


圖7 匹配階段單元內存映射示例


表2 內存單元分配和相對精確匹配容量

在第一個(gè)配置中,如圖7a和表2所示,在一個(gè)階段中使用32個(gè)內存塊來(lái)匹配內存,實(shí)現32K 80b寬的精確匹配流條目。另一個(gè)16K 80b三元項在TCAM模塊中。所有流條目都具有相同大小的操作條目,操作需要48個(gè)內存。統計信息消耗24個(gè)內存塊組,以及用于多移植統計信息內存的備用存儲塊組。為每個(gè)匹配內存分配大約相等的操作內存份額,可以將其視為具有最小流表容量的基本情況。

除去用例a中用于三元操作和統計的24個(gè)塊組,用于二元操作的銀行中有40%是匹配表,這表明開(kāi)銷(xiāo)為2.5倍。再加上匹配表中35%的位開(kāi)銷(xiāo),總的二進(jìn)制開(kāi)銷(xiāo)是3.375,即總比特數與匹配數據比特數的比率。換句話(huà)說(shuō),只有三分之一的RAM位可以用于流入口。

表2中的用例a2和a3將匹配寬度分別更改為160和320位,減少了動(dòng)作和統計需求,增加了匹配容量。

配置表2的b進(jìn)一步增加二元和三元流表匹配寬度640位,如圖7所示(水平的內存寬度顯示),比基本情況,減少8倍流條目的數量,以及所需的動(dòng)作和統計能力。雖然這種廣泛的匹配可能很少見(jiàn)(比如整個(gè)標題匹配),但我們看到,與上面的基本情況相比,有8個(gè)更寬的流條目,80個(gè)塊組可以用于精確匹配,內存容量的75%,比基本情況高2.5個(gè)表容量。

表2的c1配置,如圖7c所示,利用了單個(gè)操作數量有限的用例。例如,一個(gè)數據中心地址虛擬化應用程序需要大量的流條目,但是匹配條目可能指向TOR交換機的1000個(gè)可能的目的地中的一個(gè)。因此4K的動(dòng)作內存就足夠了。這將允許62個(gè)內存塊用于匹配,40個(gè)內存塊用于統計,幾乎是基本情況下精確匹配條目數量的兩倍。如果不需要統計信息,則可以使用102個(gè)內存塊進(jìn)行匹配,如表項c2所示,占總內存容量的96%。

簡(jiǎn)而言之,如果動(dòng)作或統計數據減少或消除,流入密度將大大增加。如果芯片的用戶(hù)認為這些復雜的操作和統計數據是必要的,那么將這種開(kāi)銷(xiāo)歸咎于芯片可配置選項是不公平的。唯一可以直接歸因于可編程性的基本記事簿成本是指令指針(5b)和下一個(gè)表地址(9b),大約占15%。

在固定行為的表格中,成本可以進(jìn)一步降低。一個(gè)固定函數表使用相同的指令和下一個(gè)表指針為所有的條目,例如,L2 dest MAC表;可以為這些屬性配置靜態(tài)值,允許14位指令和下一表指針被回收以匹配。更一般地,流條目中的可配置寬度字段可以選擇性地為操作、指令或下一表地址提供LSB,從而允許減少不同指令或操作的數量,或為下一表尋址一個(gè)小數組,同時(shí)回收盡可能多的指令、下一個(gè)表、和動(dòng)作地址位盡可能考慮到功能的復雜性。

接下來(lái),表可以提供一個(gè)動(dòng)作值作為一個(gè)直接常量,而不是小常量的動(dòng)作內存指針,從而保存指針和動(dòng)作內存位。

一個(gè)簡(jiǎn)單的機制可以實(shí)現這些優(yōu)化:匹配表字段邊界可以靈活配置,允許每個(gè)字段具有任意大小的表配置范圍,受總位寬限制。帶有固定或幾乎固定函數的表可以有效地實(shí)現,與固定的表相比幾乎沒(méi)有任何損失。

5.2.3 交叉開(kāi)關(guān)成本

每個(gè)階段中的交叉開(kāi)關(guān)從報頭向量中選擇匹配表輸入。從4Kb輸入向量中選擇1280個(gè)輸出位(TCAM和哈希表各為640b)。每個(gè)輸出位由一個(gè)224輸入多路復用器驅動(dòng),該多路復用器由與-或-反 AOI22門(mén) 的二叉樹(shù)組成,每多路復用器輸入成本為0.65μm2??倷M木面積為1280 x 224 x 0.65μm2 x 32階段 ≈ 6 mm2。動(dòng)作單元數據輸入多路復用開(kāi)關(guān)的面積計算也是類(lèi)似的。

5.3 碎片的成本

最后一個(gè)開(kāi)銷(xiāo)是內部分裂或打包的成本。顯然,放置在112b寬內存中的48位以太網(wǎng)目的地址浪費了超過(guò)一半的內存。相比之下,固定功能的以太網(wǎng)橋包含定制的48位寬RAM。因此,這一成本完全歸因于可編程性和我們選擇的112b寬RAM。人們可以通過(guò)選擇48b作為基本RAM寬度來(lái)減少以太網(wǎng)的這種開(kāi)銷(xiāo),但是為通用用途(和未來(lái)協(xié)議)設計的芯片如何預測未來(lái)的匹配標識符寬度呢?

幸運的是,通過(guò)另一種架構技巧,甚至可以減少這種開(kāi)銷(xiāo),這種技巧允許將流條目集打包在一起,而不損害匹配功能。例如,標準的TCP 五元組是104位寬。其中三個(gè)條目可以被打包到四個(gè)寬度為448b的內存單元中,而不是分別要求每個(gè)條目消耗兩個(gè)內存單元?;蛘?,使用相當于簡(jiǎn)單成功/失敗的低輸入開(kāi)銷(xiāo),由于ECC比特在更寬的數據上的攤銷(xiāo),其中4個(gè)可以被打包成4個(gè)字。從根本上說(shuō),這是可行的,因為本質(zhì)上,較長(cháng)的匹配是由較小的8位匹配樹(shù)構建的;靈活性只是稍微使這個(gè)邏輯復雜化了一些。

這兩種技術(shù)的結合,將可變數據打包到一個(gè)數據字(以降低操作規范成本),和將可變流輸入打包到多個(gè)數據字(以降低碎片成本)確保了在廣泛配置下的高效內存利用??偠灾?,雖然傳統的交換機對特定的表配置有高效的實(shí)現,但這種架構可以達到這種效率,不僅對那些特定的表配置,而且對許多其他配置也是如此。

5.4 動(dòng)作可編程性的成本

除了指令RAM和動(dòng)作存儲器的成本,大約有7000個(gè)處理器數據路徑,寬度從8位到32位不等。幸運的是,因為它們使用簡(jiǎn)單的RISC指令集,它們的總面積只占用芯片的7%。

5.5 面積及功耗成本

這個(gè)交換機設計有很大的匹配表容量,所以匹配和動(dòng)作存儲器很大程度上貢獻了芯片面積估計,如表3所示。第一項包括IO、數據緩沖區、CPU等,在傳統交換機中占據了類(lèi)似的區域??梢钥闯?,VLIW動(dòng)作引擎和解析器/分離器對區域的貢獻相對較小。


表3 評估芯片面積


表4 評估芯片功耗

我們之前提出過(guò),與最優(yōu)的RAM設計相比,匹配階段單元RAM遭受了14%的面積懲罰??紤]到對匹配階段SRAM(不是TCAM)面積的懲罰,以及與傳統交換機(15%)相比額外比特數的一些許可,剩余內存區域約為芯片總數的8%。如果解析器和動(dòng)作引擎中的多余邏輯又增加了6.2%,那么就會(huì )產(chǎn)生14.2%的區域成本,這證明了之前宣稱(chēng)的低于15%的成本差異是正確的。

評估的交換機最壞操作條件(溫度、芯片處理)下的功耗詳情見(jiàn)表4,100%流量混合大包(1.5KB)小包各一半的數據包,以及所有匹配和動(dòng)作表填滿(mǎn)容量的情況下,評估的交換功率詳見(jiàn)表4。輸入/輸出功率相當于一個(gè)常規開(kāi)關(guān)。內存泄漏功率與內存比特數成正比,所以如果這個(gè)可編程交換機可以實(shí)現與傳統交換機相同的比特數,功率將是相當的。剩下的部分,總數為30%,比傳統的交換機少,因為減少了功能的匹配動(dòng)作流水線(xiàn)。我們估計,可編程芯片比傳統的交換機多消耗12.4%的功率,但執行更實(shí)質(zhì)性的包操作。

與傳統交換機的整體競爭評估表明,該交換機可以用相同的存儲位數執行相同的功能。這反過(guò)來(lái)又推動(dòng)了芯片成本和功率方面的優(yōu)勢??紤]到交換機的更全面的功能,可編程解決方案所承擔的額外功耗和面積成本非常小。

6 相關(guān)工作

靈活的處理可以通過(guò)許多機制實(shí)現。在處理器上運行軟件是一種常見(jiàn)的選擇。我們的設計性能比CPU高出兩個(gè)數量級[7],比GPU和NPU高出一個(gè)數量級[5,9,12,29]。

現代FPGA,如Xilinx Virtex-7[35],可以以接近1Tb/s的速度轉發(fā)流量。不幸的是,FPGA提供更低的總內存容量,模擬TCAM很差,消耗更多的電力,而且非常昂貴。目前最大的Virtex-7設備是Virtex-7 690T,總內存為62Mb,約占我們芯片容量的10%。來(lái)自?xún)蓚€(gè)匹配階段的TCAM將消耗用于實(shí)現用戶(hù)邏輯的大部分查找表(LUT)。產(chǎn)品清單價(jià)格超過(guò)10,000美元,這比我們芯片的預期價(jià)格高出一個(gè)數量級。這些因素一起排除了FPGA作為解決方案的可能性。

與NPU相關(guān)的是PLUG[6],它提供了許多通用的處理核心,與內存和路由資源配對。將處理過(guò)程分解成數據流圖,數據流圖分布在整個(gè)芯片上。PLUG主要關(guān)注于實(shí)現查找,而不是解析或包編輯。

英特爾FM6000 64端口10Gb/s交換芯片[24]包含一個(gè)可編程解析器,由32個(gè)階段構建,每個(gè)階段都有一個(gè)TCAM。它還包括一個(gè)兩級匹配行動(dòng)引擎,每個(gè)級包含12塊1K 36b TCAM。這只占總表容量的一小部分,其他表在固定的流水線(xiàn)中。

最新的OpenFlow[31]規范提供了一個(gè)MMT抽象,并部分實(shí)現了一個(gè)RMT模型。但是它的動(dòng)作能力仍然是有限的,并且它也不確定是否會(huì )有一個(gè)功能完整的動(dòng)作標準。

7 總結

理想情況下,交換機或路由器應該使用多年。應對不斷變化的世界需要可編程性,允許軟件升級在該領(lǐng)域添加新功能和新協(xié)議。網(wǎng)絡(luò )處理器(NPU)被引入來(lái)支持這一愿景,但無(wú)論是NPU還是GPU都無(wú)法接近使用ASIC實(shí)現固定功能交換機的速度;我們也沒(méi)有見(jiàn)過(guò)對基于NPU的路由器(如思科的CRS-1)進(jìn)行重新編程以添加新協(xié)議的案例研究。同樣地,FPGA最近才達到ASIC轉發(fā)速度,但仍然非常昂貴。

我們的芯片設計再現了這種古老的可編程性愿景,在RMT模型中表達,在真實(shí)芯片的約束條件下實(shí)現??梢蕴砑有碌淖侄?,可以重新配置查找表,可以添加新的頭處理,所有這些都是通過(guò)軟件重新配置。雖然我們的芯片不能做正則表達式,或操縱包體,但用這種芯片構建的盒子可能會(huì )從周二的以太網(wǎng)芯片變成周三的防火墻,周四變成一個(gè)全新的設備,所有這些都是通過(guò)正確的軟件升級。今天的挑戰是在接近1萬(wàn)億比特的容量下做到這一點(diǎn)。我們提出的芯片設計有驚人的規格:它包含7000個(gè)處理器數據通道,370 Mb的SRAM和40 Mb的TCAM,跨越32個(gè)處理階段。

就創(chuàng )意而言,我們將RMT模型作為一種強大的方式,將程序員所需的轉發(fā)行為映射到一個(gè)由靈活的解析器構建的流水線(xiàn)上,一個(gè)具有任意寬度和深度的存儲器的邏輯匹配階段的可配置安排,以及靈活的包編輯。這些抽象要求以太比特的速度高效地實(shí)現新的算法。我們使用的內存塊可以在階段內或跨階段組合,這是實(shí)現可重構匹配表的關(guān)鍵;我們對TCAM的大規模使用,大大提高了匹配的靈活性;最后,我們使用完全并行的VLIW指令是包編輯的關(guān)鍵。我們的設計表明,這種大大提高靈活性的額外成本不到15%的面積和功耗的芯片。最終,我們已經(jīng)解決的實(shí)現挑戰對SIGCOMM用戶(hù)來(lái)說(shuō)可能不是很明顯,那就是生產(chǎn)一個(gè)可以在芯片上有效連接的架構。

雖然OpenFlow規范暗示RMT和一些研究人員[17]已經(jīng)積極地追求這個(gè)夢(mèng)想,但RMT模型仍然是理論的,沒(méi)有存在的證據證明芯片設計工作在太比特的速度。本文提出了一個(gè)具體的RMT方案,并證明了其可行性。

顯然,我們有可能進(jìn)一步采取行動(dòng),取消我們因為而施加的一些限制。但是現在這個(gè)討論可以開(kāi)始了。

(正文完)




關(guān)鍵詞: SDN 網(wǎng)絡(luò )

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>