電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>可編程邏輯>一種介紹DPU架構(gòu)(自適應(yīng)交換機(jī))的文章

一種介紹DPU架構(gòu)(自適應(yīng)交換機(jī))的文章

2021-02-04 | pdf | 783.49KB | 次下載 | 3積分

資料介紹

本文轉(zhuǎn)載自:網(wǎng)絡(luò)交換FPGA微信公眾號(hào)

推薦一篇論文,論文題目翻譯過來為:自適應(yīng)交換機(jī):用于網(wǎng)絡(luò)中心計(jì)算的異構(gòu)交換機(jī)體系結(jié)構(gòu)。該論文可以認(rèn)為是一篇介紹DPU架構(gòu)的文章。文章由新加坡Xilinx/西交大的 胡成臣老師共同撰寫,發(fā)表在2020年12月IEEE Communication Magazine上,其主旨思想,是利用FPGA作為協(xié)處理器,補(bǔ)充現(xiàn)有可編程交換ASIC的不足,給出了三個(gè)場(chǎng)景(NDP、DISCO、Stateful Firewall)作為例證;代碼已在Github開源。一個(gè)新興的范例是采用SmartNIC進(jìn)行以網(wǎng)絡(luò)為中心的計(jì)算,它在主機(jī)的網(wǎng)絡(luò)接口上引入了特定于用戶的處理。作者采取了這一舉措,進(jìn)一步解決了網(wǎng)絡(luò)核心(交換機(jī))中當(dāng)前專有的處理和計(jì)算問題。鏈接:https://ieeexplore.ieee.org/abstract/document/9311937.

以網(wǎng)絡(luò)為中心的計(jì)算可將計(jì)算和數(shù)據(jù)處理從CPU卸載到并分解到CPU,以支持不斷增長(zhǎng)的吞吐量,大數(shù)據(jù)量和數(shù)據(jù)中心的信息復(fù)雜性。一個(gè)新興的范例是采用SmartNIC進(jìn)行以網(wǎng)絡(luò)為中心的計(jì)算,它在主機(jī)的網(wǎng)絡(luò)接口上引入了特定于用戶的處理。在本文中,我們將進(jìn)一步采取主動(dòng)行動(dòng),以解決網(wǎng)絡(luò)核心(交換機(jī))中當(dāng)前的專有處理和計(jì)算問題。我們提出了一種新的硬件架構(gòu),稱為自適應(yīng)交換機(jī)。基于對(duì)其支持三個(gè)用例的原型的測(cè)試,我們證明了在可適應(yīng)的交換機(jī)上可以同時(shí)實(shí)現(xiàn)高吞吐量和處理靈活性。

1. 引言

在嚴(yán)格的延遲要求下傳輸海量數(shù)據(jù)的需求不斷增長(zhǎng),并將CPU推向了現(xiàn)代數(shù)據(jù)中心可擴(kuò)展性的極限。從數(shù)據(jù)中心到網(wǎng)絡(luò)接口卡(NIC)的卸載網(wǎng)絡(luò)堆棧和計(jì)算已越來越多地部署在數(shù)據(jù)中心中[1]。這種方法稱為SmartNIC,它使人們進(jìn)一步擁抱網(wǎng)絡(luò)內(nèi)計(jì)算或以網(wǎng)絡(luò)為中心的計(jì)算,以通過網(wǎng)絡(luò)卸載和分解計(jì)算,存儲(chǔ)和其他功能。在本文中,我們提出了一種適應(yīng)性強(qiáng)的交換機(jī)體系結(jié)構(gòu),以支持網(wǎng)絡(luò)核心中的用戶特定處理和專有協(xié)議,以補(bǔ)充主機(jī)網(wǎng)絡(luò)中現(xiàn)有的SmartNIC。

引入用戶定義的流量穿越交換機(jī)的動(dòng)作的開創(chuàng)性工作是OpenFlow交換機(jī)[2]。這個(gè)相當(dāng)不靈活的數(shù)據(jù)平面后來被開發(fā)成為便攜式交換機(jī)架構(gòu)(PSA)[3]??梢詮莫?dú)立于編程協(xié)議的分組處理器(P4)語言[4]靈活定義和編譯PSA兼容數(shù)據(jù)平面目標(biāo)。PSA存在一些局限性,這些局限性促使了本文的工作。

首先,PSA僅在數(shù)據(jù)包到達(dá)和/或離開時(shí)觸發(fā)處理,從而不支持其他事件的操作。例如,在PSA中,很難在新穎的數(shù)據(jù)平面?zhèn)鬏攨f(xié)議(NDP)[5]提議中啟用控制,在這種提議中,當(dāng)緩沖區(qū)擁塞時(shí),交換機(jī)應(yīng)該做出反應(yīng)。稍后將在我們的實(shí)驗(yàn)中詳細(xì)介紹NDP的一個(gè)使用案例。

其次,PSA在計(jì)算操作(例如,代數(shù)計(jì)算)方面缺乏能力,這阻止了在PSA兼容交換機(jī)上部署許多算法。稍后將討論一個(gè)利用復(fù)雜計(jì)算的流量統(tǒng)計(jì)方法(折扣計(jì)數(shù),DISCO [6])的具體示例。

第三,PSA最初是為對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行無狀態(tài)處理而設(shè)計(jì)的。PSA通常很難基于歷史狀態(tài)進(jìn)行狀態(tài)協(xié)議處理和/或狀態(tài)計(jì)算。為了更好地理解這一點(diǎn),稍后將討論防火墻[7]用例。

PSA非常適合無狀態(tài)和基于轉(zhuǎn)發(fā)的數(shù)據(jù)平面,但是我們的目標(biāo)遠(yuǎn)不止PSA的范圍:我們的目標(biāo)是設(shè)計(jì)一種交換架構(gòu),以將計(jì)算量卸載和分解到網(wǎng)絡(luò)中。在語言級(jí)別,P4的最新版本(P4_16)引入了P4_extern的概念,以描述該語言的標(biāo)準(zhǔn)格式不支持的任何功能。但是,沒有靈活的交換機(jī)體系結(jié)構(gòu)具有匹配的“ PSA_extern”用于由P4_extern定義的處理。解決方案始終是在添加新的P4_extern時(shí)具有新的專用硬件目標(biāo)。但是,這與PSA作為便攜式可編程數(shù)據(jù)平面的最初思想相沖突,應(yīng)該避免。

我們通過提出一種異構(gòu)硬件交換機(jī)體系結(jié)構(gòu)來進(jìn)行創(chuàng)新,以支持任何可能的P4_extern定義的處理。我們將此架構(gòu)命名為自適應(yīng)交換機(jī),我們已經(jīng)解決了兩個(gè)技術(shù)挑戰(zhàn),這是我們的主要貢獻(xiàn)。第一個(gè)是自適應(yīng)交換機(jī)的異構(gòu)硬件體系結(jié)構(gòu)設(shè)計(jì)。第二個(gè)是如何基于自適應(yīng)開關(guān)以最佳方式開發(fā)程序并將其映射到目標(biāo)。據(jù)我們所知,這是第一個(gè)開關(guān)架構(gòu),既提供現(xiàn)場(chǎng)可編程門陣列(FPGA)級(jí)別的可編程性,又達(dá)到與切換專用集成電路(ASIC)相當(dāng)?shù)耐掏铝?。借助提出的自適應(yīng)交換機(jī)體系結(jié)構(gòu),我們可以消除對(duì)P4兼容ASIC芯片的限制,并支持事件觸發(fā),復(fù)雜的算術(shù)計(jì)算和狀態(tài)處理,所有這些都以線路速率實(shí)現(xiàn)。為了評(píng)估我們的建議,我們?cè)谝粋€(gè)可適配交換機(jī)的原型上實(shí)現(xiàn)了三個(gè)用例,并在評(píng)估部分與其他可編程數(shù)據(jù)平面進(jìn)行了比較。

2. 架構(gòu)設(shè)計(jì)

圖1是自適應(yīng)交換機(jī)的硬件架構(gòu)的框圖。它由固定交換系統(tǒng)(SS)部分和用戶可編程邏輯(PL)部分組成。SS部分實(shí)現(xiàn)了標(biāo)準(zhǔn)交換功能,而PL部分則部署了FPGA以對(duì)定制處理進(jìn)行編程。所提出的體系結(jié)構(gòu)中的SS和PL這兩個(gè)部分可以通過兩芯片方法來實(shí)現(xiàn),其中SS可以是具有或不具有P4兼容性的傳統(tǒng)交換ASIC,PL可以是FPGA芯片,即片上多處理器系統(tǒng)(MPSoC)或?qū)PGA與其他處理器(例如ARM內(nèi)核)集成在單個(gè)SoC中的自適應(yīng)計(jì)算加速平臺(tái)(ACAP)芯片。在兩芯片解決方案中,兩個(gè)物理上分離的芯片使用PCle或以太網(wǎng)接口或收發(fā)器連接?;蛘?,我們還可以用一個(gè)高帶寬片上總線(如AXI)來實(shí)現(xiàn)單芯片的解決方案。

SS中的交換結(jié)構(gòu)通常采用交叉開關(guān)在入口和出口之間進(jìn)行高速交換。來自網(wǎng)絡(luò)接口的數(shù)據(jù)包在交換矩陣之前/之后經(jīng)過入口/出口管道。在入口或出口管道中,通常有解析器(提取感興趣的標(biāo)頭字段),流表(與提取的標(biāo)頭匹配以執(zhí)行操作),解析器(重組或/和操作數(shù)據(jù)包)和流量管理器(緩沖區(qū)管理,數(shù)據(jù)包調(diào)度,整形等)。

所有傳入的數(shù)據(jù)包都首先進(jìn)入SS,并且大多數(shù)數(shù)據(jù)包完全在SS中處理。只有那些依賴于SS不支持的功能的分組才會(huì)被進(jìn)一步發(fā)送給PL進(jìn)行協(xié)同處理。在數(shù)據(jù)包觸發(fā)PL中的處理的情況下,SS將數(shù)據(jù)包存儲(chǔ)在片上或片外存儲(chǔ)器中,并將專用元數(shù)據(jù)發(fā)送到PL。自定義元數(shù)據(jù)以承載從PL中進(jìn)行處理所需的數(shù)據(jù)包中提取的信息。PL中的處理將更新元數(shù)據(jù)并將其返回給SS。SS將原始數(shù)據(jù)包與返回的元數(shù)據(jù)合并為一個(gè)完整的數(shù)據(jù)包以進(jìn)行轉(zhuǎn)發(fā),或者只是丟棄該數(shù)據(jù)包。

我們引入了一個(gè)額外的內(nèi)存管理單元(MMU),如圖1所示。MMU管理內(nèi)存以緩沖等待PL更新元數(shù)據(jù)的數(shù)據(jù)包。更具體地說,它包括三個(gè)主要功能:
1、動(dòng)態(tài)分配存儲(chǔ)塊以存儲(chǔ)數(shù)據(jù)包。

2、將數(shù)據(jù)包數(shù)據(jù)寫入內(nèi)存。

3、從內(nèi)存中讀回存儲(chǔ)的數(shù)據(jù)包數(shù)據(jù),并使用從PL返回的元數(shù)據(jù)組裝輸出數(shù)據(jù)包。

我們基于兩個(gè)觀察或假設(shè)來設(shè)計(jì)自適應(yīng)交換機(jī)體系結(jié)構(gòu)。
1、PL中的大多數(shù)處理通常僅基于數(shù)據(jù)包頭或/和有效載荷中前幾個(gè)字節(jié)的數(shù)據(jù)包段。我們的設(shè)計(jì)僅交換可以靈活定義的元數(shù)據(jù),從而保證了SS和PL之間有限的互連帶寬消耗。在極少數(shù)情況下,查看整個(gè)數(shù)據(jù)包的處理將用整個(gè)數(shù)據(jù)包填充元數(shù)據(jù)。

2、并非所有流量都需要在PL中進(jìn)行處理:否則,相關(guān)功能將成為現(xiàn)成交換ASIC的一部分,或者直接轉(zhuǎn)移到自適應(yīng)交換體系結(jié)構(gòu)中的SS部分。

考慮到平均數(shù)據(jù)包長(zhǎng)度約為600B,并且假設(shè)元數(shù)據(jù)大小為64B,如果通過PCle Gen4*16進(jìn)行接口連接,則在不犧牲端口密度的情況下,即使使用最大的交換,也可以在PL中進(jìn)一步處理20%的流量以12Tb/s作為SS的ASIC。在兩芯片解決方案中,允許10%的端口密度連接SS和PL,同樣,在平均數(shù)據(jù)包長(zhǎng)度為600B,元數(shù)據(jù)為64B的情況下,所有原始流量可以在PL中進(jìn)行進(jìn)一步的處理。

3. PL中用戶定制處理流程

為了有效地映射PL中基于用戶特定數(shù)據(jù)流的計(jì)算,我們引入了微并行處理流水線,如圖1右側(cè)。我們將每個(gè)處理階段抽象為一個(gè)基本處理單元(BPU)。通過將輸入流量負(fù)載分配給多個(gè)執(zhí)行引擎,還為每個(gè)BPU引入了并行性。執(zhí)行引擎由操作模塊組成,該模塊對(duì)保存在內(nèi)存中的一組數(shù)據(jù)進(jìn)行操作。在通用BPU抽象中,到BPU的輸入(數(shù)據(jù)流)數(shù)量與其前身的執(zhí)行引擎數(shù)量相同,但對(duì)于一個(gè)BPU中的輸入和輸出數(shù)量而言,不一定相同。

數(shù)據(jù)拆分的優(yōu)化問題是NP難題,可以從多項(xiàng)式時(shí)間的平均除法問題中減少。遵循模擬退火算法解決平均分割問題的思想,我們開發(fā)了一種啟發(fā)式算法,用于將與流程相關(guān)的處理相關(guān)數(shù)據(jù)映射到每個(gè)執(zhí)行引擎中。

在本節(jié)的其余部分,我們將回答有關(guān)此PL體系結(jié)構(gòu)的兩個(gè)問題:
1、如何為BPU開發(fā)操作模塊以適合特定于用戶的PL。
2、如何在每個(gè)BPU中正確地填充數(shù)據(jù)內(nèi)存,以便調(diào)度模塊可以盡可能均勻地分配流量負(fù)載,從而最終最大化處理吞吐量。

開發(fā)流程

我們使用Xilinx P4-SDNet[8]作為開發(fā)流程的基礎(chǔ)來構(gòu)建我們的原型,如圖2所示。P4-SDNet是一種現(xiàn)成的商用產(chǎn)品(COTS),涵蓋了從P4語言到SDNet規(guī)范,再到基于FPGA的數(shù)據(jù)平面的編譯工具鏈。P4-SDNet產(chǎn)品的最新版本支持P4_16,提供了兩個(gè)內(nèi)置的P4_externs。內(nèi)置的P4_externs支持通過使編譯器前端能夠識(shí)別高級(jí)描述來展示將編譯器擴(kuò)展到更多用戶特定處理的方法。另外,我們?cè)诰幾g器后端使用注釋,這些注釋將轉(zhuǎn)換為適當(dāng)?shù)闹虚g表示(IR)(例如SDNet [9])。規(guī)范),最后映射到PL。一般而言,對(duì)于用戶特定的PL,還可以使用硬件描述語言(Verilog HDL,VHDL等)進(jìn)行編碼,然后編譯為BPU和PL中的處理管道,這是另一種選擇。

優(yōu)化
如前所述,BPU中的調(diào)度模塊將流量負(fù)載分配給BPU中的多個(gè)執(zhí)行引擎。稻草人解決方案將所有與處理相關(guān)的數(shù)據(jù)復(fù)制到每個(gè)執(zhí)行引擎,這通過以循環(huán)方式分配流量負(fù)載來簡(jiǎn)單地實(shí)現(xiàn)大吞吐量。但是,每個(gè)執(zhí)行引擎中數(shù)據(jù)存儲(chǔ)器的大小是有限的,不足以容納處理相關(guān)數(shù)據(jù)的完整副本。由于這個(gè)原因,通過回答在每個(gè)執(zhí)行引擎中保留完整處理相關(guān)數(shù)據(jù)的哪個(gè)子集來解決數(shù)據(jù)拆分和分配問題并非易事。目的是通過平衡每個(gè)執(zhí)行引擎中處理的工作量來最大化并行處理吞吐量。不失一般性,我們使用流表來保持對(duì)相關(guān)數(shù)據(jù)的處理,并將其表示為一種優(yōu)化問題。

對(duì)象
最大程度地增加可發(fā)送到每個(gè)執(zhí)行引擎的工作量。

約束
約束處理
單個(gè)執(zhí)行引擎具有最大吞吐量,無法將更多的負(fù)載分派到達(dá)到容量限制的執(zhí)行引擎。

流關(guān)聯(lián)約束
來自同一流的所有數(shù)據(jù)包應(yīng)該由同一處理流水線的同一執(zhí)行引擎處理,以保持處理依賴關(guān)系,避免出現(xiàn)無序問題。

調(diào)度約束
流的處理只能調(diào)度到執(zhí)行引擎(其中一個(gè)),在該執(zhí)行引擎中分配要處理該流的數(shù)據(jù)(例如,執(zhí)行引擎中的流表具有該流的信息條目)。

內(nèi)存大小約束
如果數(shù)據(jù)存儲(chǔ)器的大小小于完整處理相關(guān)數(shù)據(jù),則只能將完整數(shù)據(jù)的一部分(例如流表)放入執(zhí)行引擎中。引入更多的數(shù)據(jù)副本可以減輕數(shù)據(jù)訪問沖突,但需要更多的(片上)內(nèi)存,因此流可能在執(zhí)行引擎之間具有冗余性。

數(shù)據(jù)分割的優(yōu)化問題是NP難問題,可以從多項(xiàng)式時(shí)間內(nèi)的平均分割問題中得到簡(jiǎn)化[10]。根據(jù)模擬退火算法求解平均分割問題的思想,我們開發(fā)了一種啟發(fā)式算法,用于將與處理相關(guān)的流數(shù)據(jù)映射到每個(gè)執(zhí)行引擎中。我們介紹了該算法的主要思想;有關(guān)詳細(xì)信息,請(qǐng)參閱github網(wǎng)站[10]上的代碼。首先,我們使用散列函數(shù)將流拆分為多個(gè)組;每個(gè)組的處理相關(guān)數(shù)據(jù)少于執(zhí)行引擎可以承載的數(shù)據(jù)(數(shù)據(jù)大小約束)。請(qǐng)注意,如果流的匯總工作負(fù)載需要多個(gè)執(zhí)行引擎(處理約束),則有包含相同組的執(zhí)行引擎。其次,我們首先將流組映射到不同的執(zhí)行引擎中,而不破壞約束。第三,以迭代的方式,我們通過將一個(gè)流組從一個(gè)源執(zhí)行引擎隨機(jī)移動(dòng)到另一個(gè)目標(biāo)引擎來調(diào)整流組分配到執(zhí)行引擎。執(zhí)行引擎的工作負(fù)載越多,它將流組移出的概率就越大;而選擇移動(dòng)組的目標(biāo)執(zhí)行引擎的概率與執(zhí)行引擎的工作負(fù)載成反比。如果通過約束檢查的調(diào)整能夠改進(jìn)對(duì)目標(biāo)的評(píng)估,那么它將以很大的概率被接受(為了跳出局部搜索陷阱,并不總是接受)。在找到足夠好的解決方案或達(dá)到預(yù)設(shè)的迭代輪數(shù)后,調(diào)整迭代停止。

在實(shí)際應(yīng)用中,作為啟發(fā)式算法輸入的流量分布隨著時(shí)間的推移而變化,因此使用遠(yuǎn)程控制器來收集執(zhí)行引擎之間的工作負(fù)載變化,作為運(yùn)行時(shí)重新計(jì)算和配置的反饋。算法的計(jì)算時(shí)間評(píng)估如下。

3. 評(píng)測(cè)

我們已經(jīng)在Xilinx ZC706開發(fā)板上實(shí)現(xiàn)了自適應(yīng)開關(guān)的原型,其中包含4000余行代碼,包括SS函數(shù),PL映射優(yōu)化算法和PL中的三個(gè)用例??梢栽趃ithub [10]上訪問測(cè)試代碼,在開發(fā)過程中我們引用了NetFPGA使用的P4-SDNet工具集的代碼庫。我們利用五種跟蹤進(jìn)行評(píng)估,包括從ISP主干收集的一條真實(shí)ISP跟蹤,從LTE基站收集的一條LTE跟蹤,以及按照跟蹤名稱指示的分布的三種綜合跟蹤(指數(shù)跟蹤,帕累托跟蹤和統(tǒng)一跟蹤)。

使用案例
擁塞控制:NDP [5]確保在交換機(jī)中檢測(cè)到擁塞時(shí)小批量數(shù)據(jù)包的低轉(zhuǎn)發(fā)延遲。NDP是事件驅(qū)動(dòng)處理的一個(gè)示例,現(xiàn)有交換機(jī)無法很好地支持它。為了在自適應(yīng)交換機(jī)中部署NDP,我們?cè)赟S部分的MMU中分配邏輯輸出隊(duì)列。PL中實(shí)現(xiàn)了兩種NDP操作:一種監(jiān)視隊(duì)列深度作為擁塞觸發(fā)信號(hào),另一種發(fā)送顯式通知以調(diào)整數(shù)據(jù)包大小。前端編譯器將用戶邏輯包裝到操作模塊中,以生成BPU和處理管道。

網(wǎng)絡(luò)測(cè)量:DISCO [6]是一種有效的流量統(tǒng)計(jì)算法,但是由于缺乏指數(shù)和對(duì)數(shù)計(jì)算支持,因此在(P4或非P4)COTS交換機(jī)中部署DISCO頗具挑戰(zhàn)性。在我們的自適應(yīng)交換機(jī)上的DISCO實(shí)現(xiàn)中,PL的輸入元數(shù)據(jù)包括流ID和每個(gè)傳入數(shù)據(jù)包的長(zhǎng)度,而輸出是保存在片上存儲(chǔ)器中的流統(tǒng)計(jì)計(jì)數(shù)器值。我們使用Verilog HDL為DISCO實(shí)現(xiàn)P4_extern函數(shù)。

有狀態(tài)防火墻:我們還提供了一個(gè)有狀態(tài)防火墻[11]轉(zhuǎn)發(fā)引擎,其形式為可適配交換機(jī)支持的P4_extern功能,這對(duì)商品交換機(jī)是一個(gè)挑戰(zhàn)。實(shí)現(xiàn)的引擎記錄用于過濾數(shù)據(jù)包的連接狀態(tài)。實(shí)現(xiàn)了兩個(gè)硬件流表:一個(gè)用于基本匹配操作,另一個(gè)存儲(chǔ)每個(gè)相應(yīng)流的狀態(tài)列表。當(dāng)來自流的數(shù)據(jù)包到達(dá)時(shí),它根據(jù)當(dāng)前流狀態(tài)和感興趣的數(shù)據(jù)包字段執(zhí)行操作。它還更新匹配操作表以指示下一個(gè)狀態(tài)。

4. 實(shí)驗(yàn)結(jié)果
我們量化了原型的五種硬件資源消耗。查找表(LUT)用作組合邏輯實(shí)現(xiàn)。LUT隨機(jī)存取存儲(chǔ)器(LUT RAM)是用于緩存短變量值的寄存器資源。觸發(fā)器(FF)電路單元可以由時(shí)鐘信號(hào)驅(qū)動(dòng),以建立時(shí)序邏輯。Block RAM(BRAM)是片上大型存儲(chǔ)單元。數(shù)字信號(hào)處理器(DSP)是分布式快速單時(shí)鐘周期數(shù)學(xué)計(jì)算核心。

在表1中,我們展示了當(dāng)我們?yōu)槊總€(gè)用例啟用一個(gè)分派和20個(gè)執(zhí)行引擎時(shí)的結(jié)果。表中的結(jié)果以“數(shù)量/比例”的形式顯示,其中我們顯示了實(shí)現(xiàn)原型的FPGA的確切消耗量和占總資源的比例。dispatch行同時(shí)考慮了20個(gè)解析器(SDNet生成)和一個(gè)2020交換機(jī)(具有20個(gè)均衡器體系結(jié)構(gòu))的消耗,以將流量負(fù)載分配給執(zhí)行引擎。對(duì)于這三個(gè)case行,每個(gè)執(zhí)行引擎都包含一個(gè)精確匹配表(200個(gè)條目)作為數(shù)據(jù)存儲(chǔ)(在實(shí)踐中可以根據(jù)需求和硬件容量進(jìn)行調(diào)整)。在擁塞控制用例中,對(duì)于擁塞控制用例,有20個(gè)輸出端口的40個(gè)優(yōu)先級(jí)隊(duì)列,每個(gè)端口的隊(duì)列大小為64 kB。此外,我們還部署了20個(gè)計(jì)數(shù)引擎,在測(cè)量情況下總共有4k計(jì)數(shù)器,在防火墻情況下有20個(gè)可編程狀態(tài)轉(zhuǎn)換表。隨著使用的執(zhí)行引擎、階段、管道和條目數(shù)量的增加,資源消耗幾乎呈線性增加。從結(jié)果中,我們觀察到一個(gè)典型的FPGA足以部署這三個(gè)用戶案例。

圖3中,我們描述了增加執(zhí)行引擎數(shù)量時(shí)的吞吐量趨勢(shì)。我們根據(jù)最大頻率、數(shù)據(jù)總線寬度和平均數(shù)據(jù)包大?。?00b)計(jì)算吞吐量。使用更多的執(zhí)行引擎時(shí),最大頻率會(huì)下降,而使用20個(gè)以上的執(zhí)行引擎時(shí),吞吐量增益會(huì)變得平緩。我們觀察到,對(duì)于擁塞控制和測(cè)量用例,原型最多達(dá)到8tb/s左右,對(duì)于有狀態(tài)防火墻用例,原型最多達(dá)到6tb/s左右的吞吐量。

通過查看每個(gè)用例所需的周期,我們將擁塞控制、網(wǎng)絡(luò)測(cè)量和防火墻用例的PL處理延遲分別確定為0.130ms、0.136ms和0.142ms。

我們還使用300多行Python代碼在運(yùn)行時(shí)進(jìn)行配置來實(shí)現(xiàn)PL映射優(yōu)化,并使用PyPy工具集將其部署在Dell R620服務(wù)器(具有8G RAM和運(yùn)行Ubuntu 16.04 LTS OS的2.80 GHz四核Intel CPU)中。和即時(shí)(JIT)編譯器來加速Python程序。圖4繪制了本節(jié)前面介紹的五個(gè)流量跟蹤下的平均計(jì)算時(shí)間。共有五個(gè)燭臺(tái)組,分別代表執(zhí)行引擎(具有一個(gè)階段和一個(gè)處理管道)數(shù)量的不同設(shè)置,即K = 4、8、12、16和20個(gè)執(zhí)行引擎。K值較大時(shí),運(yùn)行時(shí)映射優(yōu)化需要花費(fèi)較長(zhǎng)時(shí)間。使用20個(gè)執(zhí)行引擎,在我們測(cè)試的所有跟蹤下,計(jì)算時(shí)間不到8.30 s,置信度為95%。

表2總結(jié)了各種常見可編程數(shù)據(jù)平面的特征,例如,基于軟件的交換機(jī)[12]、基于FPGA的交換機(jī)[13]和基于P4兼容交換ASIC的交換機(jī)[14]。在介紹[11]中,我們提到了很多基于事件驅(qū)動(dòng)的ASIC和基于觸發(fā)的ASIC的特性,而在介紹[11]中,我們提到了基于事件驅(qū)動(dòng)的ASIC和基于觸發(fā)的ASIC的特性。所提出的可適應(yīng)性交換機(jī)將其自身定位在設(shè)計(jì)空間中,具有與基于純軟件/FPGA的交換機(jī)相似的可編程性和與P4兼容ASIC相當(dāng)?shù)模ㄉ晕⒌鸵稽c(diǎn))吞吐量。

5. 結(jié)論
我們提出了一種適用于網(wǎng)絡(luò)中心計(jì)算的自適應(yīng)交換體系結(jié)構(gòu)。Adaptive switch背后的關(guān)鍵是利用交換系統(tǒng)提供高吞吐量,同時(shí)將硬件可編程處理卸載到FPGA上。我們已經(jīng)實(shí)現(xiàn)了一個(gè)原型和三個(gè)用例。實(shí)驗(yàn)表明,該結(jié)構(gòu)的靈活性優(yōu)于現(xiàn)有的固定功能交換機(jī)。此外,所實(shí)現(xiàn)的設(shè)計(jì)可以很好地控制資源消耗,以每秒數(shù)太比特的速率提供處理吞吐量。盡管PL部分的處理吞吐量仍然小于交換ASIC的吞吐量,但是我們認(rèn)為,整個(gè)分組或所有數(shù)據(jù)流都不需要在PL中使用用戶定義的處理來處理,因此,自適應(yīng)交換體系結(jié)構(gòu)具有與COTS交換機(jī)兼容的總吞吐量。

參考文獻(xiàn)

[1] G. Lu et al., “Serverswitch: A Programmable and High Performance Platform for Data Center Networks,” Proc. 2011 USENICS NSDI, Boston,MA, vol. 11, 2011.

[2] N. McKeown et al., “OpenFlow: Enabling Innovation in Campus Networks,” ACM SIGCOMM CCR, vol. 38, no. 2, 2008,pp. 69–74.

[3] P4.org Architecture WG, “Portable Switch Architecture (PSA),” Nov. 2018; https://p4.org/p4-spec/docs/PSA-v1.1.0.html, accessed July 15, 2020.

[4] P. Bosshart et al., “P4: Programming Protocol-Independent Packet Processors,” ACM SIGCOMM CCR, vol. 44, no. 3, 2014, pp. 87–95.

[5] M. Handley et al., “Re-Architecting Datacenter Networks and Stacks for Low Latency and High Performance,” Proc. 2017 ACM SIGCOMM, Los Angeles, CA, 2017, pp. 29–42.

[6] C. Hu et al., “Disco: Memory Efficient and Accurate Flow Statistics for Network Measurement,” Proc. 2010 IEEE ICDCS, Genova, Italy, 2010, pp. 665–74.

[7] S. Zerkane et al., “Software Defined Networking Reactive Stateful Firewall,” Proc. 2016 IFIPSEC, Ghent, Belgium, 2011, pp. 119–32.

[8] Xilinx, “User Guide: P4-SDNet Translator,” Jan. 2017; https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_1/ug1..., accessed July 15, 2020.

[9] Xilinx, “User Guide: SDNet Packet Processor,” Jan. 2017; https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_1/UG1..., accessed July 15, 2020.

[10] S. Qiao et al., “Testing Code of Adaptable Switch Project,” Sept. 2020; https://github.com/Adaptable-Switch/AS_test/, accessed Sept. 21, 2020.

[11] S. Pontarelli et al., “Flowblaze: Stateful Packet Processing in Hardware,” Proc. 2019 USENICS NSDI, Boston, MA, 2019, pp. 531–48.

[12] M. Shahbaz et al., “Pisces: A Programmable, Protocol-Independent Software Switch,” Proc. 2016 ACM SIGCOMM, Florianopolis, Brazil, 2016, pp. 525–38.

[13] H. Wang et al., “P4FPGA: A Rapid Prototyping Framework for p4,” Proc. 2017 ACM SOSR, Santa Clara, CA, 2017, pp.122–35.

[14] P. Bosshart et al., “Forwarding Metamorphosis: Fast Programmable Match-Action Processing in Hardware for SDN,” ACM SIGCOMM CCR, vol. 43, no. 4, 2013, pp. 99–110.

[15] S. Ibanez et al., “Event-Driven Packet Processing,” Proc. 2019 ACM HOT NETS, Princeton, NJ, 2019, pp. 133–40.

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費(fèi)下載
  2. 0.00 MB  |  1491次下載  |  免費(fèi)
  3. 2單片機(jī)典型實(shí)例介紹
  4. 18.19 MB  |  95次下載  |  1 積分
  5. 3S7-200PLC編程實(shí)例詳細(xì)資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識(shí)別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關(guān)電源原理及各功能電路詳解
  10. 0.38 MB  |  11次下載  |  免費(fèi)
  11. 6100W短波放大電路圖
  12. 0.05 MB  |  4次下載  |  3 積分
  13. 7基于單片機(jī)和 SG3525的程控開關(guān)電源設(shè)計(jì)
  14. 0.23 MB  |  4次下載  |  免費(fèi)
  15. 8基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
  16. 0.11 MB  |  4次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費(fèi)
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費(fèi)
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費(fèi)
  7. 4LabView 8.0 專業(yè)版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費(fèi)
  9. 5555集成電路應(yīng)用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費(fèi)
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費(fèi)
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費(fèi)
  15. 8開關(guān)電源設(shè)計(jì)實(shí)例指南
  16. 未知  |  21539次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537793次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191183次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138039次下載  |  免費(fèi)