新聞中心

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

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

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

編者按

本文引用地址:http://www.butianyuan.cn/article/202407/461544.htm

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

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

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

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


(備注:引用部分為《軟硬件融合——超大規(guī)模云計(jì)算架構(gòu)創(chuàng)新之路》圖書內(nèi)容的節(jié)選。)

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

本文是RMT的經(jīng)典論文,希望通過此篇論文,管中窺豹,能夠?qū)W習(xí)到PISA架構(gòu)的核心精髓。


參考文獻(xiàn)

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

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


摘要

在SDN (Software Defined Networking)中,控制平面和轉(zhuǎn)發(fā)平面在物理上是分離的。控制軟件使用開放接口(如OpenFlow)對(duì)轉(zhuǎn)發(fā)平面(如交換機(jī)和路由器)進(jìn)行編程。本文旨在克服當(dāng)前交換芯片和OpenFlow協(xié)議的兩個(gè)限制:

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

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

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

1 介紹

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


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

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

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

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

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

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

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

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

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

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

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

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

  • 其次,可以指定匹配表的數(shù)量、拓?fù)浣Y(jié)構(gòu)、寬度和深度,只受匹配位數(shù)的總體資源限制;

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

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

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

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

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

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

從直覺上看,以太比特速度任意重構(gòu)似乎是一項(xiàng)不可能完成的任務(wù)。但在這些速度下,什么樣的受限形式的可重構(gòu)性是可行的?受限制的可重構(gòu)性是否涵蓋了我們前面提到的需求的足夠大的一部分?人們能否通過使用包含這些想法的硅來證明其可行性?與固定桌面的MMT芯片相比,這種RMT芯片有多貴?這些是我們?cè)诒疚闹幸鉀Q的問題。

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

論文貢獻(xiàn):我們的論文對(duì)以下爭(zhēng)論做出了具體貢獻(xiàn):哪些轉(zhuǎn)發(fā)抽象在高速下是實(shí)用的,以及轉(zhuǎn)發(fā)平面在多大程度上可以由控制平面重新配置。具體來說,我們對(duì)上述問題的處理如下:

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

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

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

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

2 RMT架構(gòu)

我們說RMT是“允許一組流水線階段……每個(gè)字段都有一個(gè)任意深度和寬度的匹配表”。一個(gè)邏輯推論是,RMT交換機(jī)由一個(gè)解析器組成,用于在字段上進(jìn)行匹配,然后是任意數(shù)量的匹配階段。審慎性建議我們?cè)谳敵鲋屑尤肽撤N排隊(duì)來處理?yè)砣?/p>

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

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


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


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

圖1:RMT模型架構(gòu)

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

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

在流水線的末端需要一個(gè)重組塊來將包報(bào)頭向量修改推回?cái)?shù)據(jù)包(圖1a)。最后,包被放置在指定輸出端口的指定隊(duì)列中,并應(yīng)用一個(gè)可配置的隊(duì)列規(guī)則。

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

2.1 在640Gbps下的實(shí)現(xiàn)架構(gòu)

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

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

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

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

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

2.2 可實(shí)現(xiàn)性限制

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

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

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

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

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

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

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

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

這樣的RMT體系結(jié)構(gòu)應(yīng)該如何配置?需要兩段信息:表示允許的報(bào)頭序列的解析圖,以及表示匹配表集和它們之間的控制流的表流圖(參見圖2和4.4)。理想情況下,編譯器執(zhí)行從這些圖到適當(dāng)?shù)慕粨Q配置的映射。我們還沒有設(shè)計(jì)出這樣的編譯器。

3 示例用例


(a) L2/L3交換


(b) RCP和ACL支持

圖2 交換配置示例

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

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

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

一旦配置完成,控制平面就可以開始填充每個(gè)表,例如通過添加IP DA轉(zhuǎn)發(fā)表項(xiàng)。

例2:支持RCP和ACL。

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

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

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

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

在實(shí)踐中,用戶不應(yīng)該關(guān)注底層配置細(xì)節(jié),而應(yīng)該依賴編譯器從解析圖和表流圖生成開關(guān)配置。

4 芯片設(shè)計(jì)


圖3 交換芯片架構(gòu)

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

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

輸入信號(hào)由64個(gè)10Gb SerDes IO模塊接收。40G通道由4個(gè)10G端口組在一起組成。經(jīng)過執(zhí)行低級(jí)信令和CRC生成/檢查等MAC功能的模塊后,輸入數(shù)據(jù)由解析器處理。我們使用16個(gè)入口解析器塊,而不是圖1a中所示的單個(gè)邏輯解析器,因?yàn)槲覀兊目删幊探馕銎髟O(shè)計(jì)可以處理40Gb的帶寬,四個(gè)10G通道或一個(gè)40G通道。

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

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

隊(duì)列系統(tǒng)與公共數(shù)據(jù)緩沖區(qū)相關(guān)聯(lián)。數(shù)據(jù)緩沖區(qū)存儲(chǔ)數(shù)據(jù)包數(shù)據(jù),而指向該數(shù)據(jù)的指針保存在每個(gè)端口的2K隊(duì)列中。每個(gè)通道依次使用可配置的隊(duì)列策略從公共數(shù)據(jù)緩沖區(qū)請(qǐng)求數(shù)據(jù)。接下來是出口解析器、出口匹配流水線(由32個(gè)匹配階段組成)和分離器,在分離器之后,包數(shù)據(jù)被定向到適當(dāng)?shù)妮敵龆丝诓⒂?4個(gè)SerDes輸出通道驅(qū)動(dòng)出芯片。

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

4.1 可配置的Parser


圖4 可配置的Parser模型

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

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

4.2 可配置的Match內(nèi)存

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

4.4 其他特性

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


圖5 匹配階段依賴

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

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

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

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

5 評(píng)估

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

5.1 可編程解析器成本

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


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

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

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

5.2 內(nèi)存成本

讀者可能會(huì)擔(dān)心內(nèi)存的成本。

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

  • 其次,每個(gè)匹配表?xiàng)l目需要額外的數(shù)據(jù)來指定操作和保持統(tǒng)計(jì)數(shù)據(jù);

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


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

5.2.1 內(nèi)存技術(shù)成本

精確匹配:我們使用布谷鳥哈希進(jìn)行精確匹配,因?yàn)樗奶畛渌惴ㄕ加寐屎芨撸瑢?duì)于4路哈希表,通常超過95%。布谷鳥哈希表通過遞歸地將沖突項(xiàng)逐出到其他位置來解決填充沖突。此外,雖然我們的內(nèi)存系統(tǒng)是由1K × 112位RAM塊構(gòu)成的,但與使用更大、更高效的內(nèi)存單元相比,可能會(huì)有一個(gè)面積代價(jià)。然而,使用1K RAM塊只會(huì)帶來大約14%的面積損失,可以說是該技術(shù)實(shí)現(xiàn)的最密集的SRAM模塊。

通配符匹配:我們?cè)谛酒鲜褂昧舜罅康腡CAM,直接支持前綴匹配、ACL等通配符匹配。TCAM傳統(tǒng)上被認(rèn)為是不可行的,因?yàn)殡娏偷貐^(qū)的考慮。然而,TCAM的工作功率已經(jīng)被新的TCAM電路設(shè)計(jì)技術(shù)[1]減少了大約4/5。因此,在最壞的情況下,在所有通道上的最小包大小的最大包速率下,TCAM功率是對(duì)總芯片功率的少數(shù)幾個(gè)主要貢獻(xiàn)者之一;在更典型的長(zhǎng)包和短包混合物中,TCAM功率降低到總功率的一個(gè)非常小的比例。

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

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

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

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

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

給定匹配、操作和統(tǒng)計(jì)數(shù)據(jù)之間的內(nèi)存塊的可變配置,我們使用一些配置示例來了解與不可配置的固定分配相比,記帳開銷是如何變化的。


圖7 匹配階段單元內(nèi)存映射示例


表2 內(nèi)存單元分配和相對(duì)精確匹配容量

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

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

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

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

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

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

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

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

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

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

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

5.3 碎片的成本

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

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

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

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

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

5.5 面積及功耗成本

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


表3 評(píng)估芯片面積


表4 評(píng)估芯片功耗

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

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

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

6 相關(guān)工作

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

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

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

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

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

7 總結(jié)

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

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

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

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

顯然,我們有可能進(jìn)一步采取行動(dòng),取消我們因?yàn)槎┘拥囊恍┫拗?。但是現(xiàn)在這個(gè)討論可以開始了。

(正文完)




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

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉