今年 6 月,英特爾宣布收購一家名為“Barefoot”的公司,旨在幫助英特爾的數(shù)據(jù)中心部門“更好的應(yīng)對云數(shù)據(jù)中心客戶的不斷變化的各類需求”。伴隨著收購,Barefoot 的 CEO 兼總裁,Craig Barratt 博士(下圖右一)被任命為英特爾數(shù)據(jù)中心部門旗下“互聯(lián)事業(yè)部(connectivity group)”的總經(jīng)理,負(fù)責(zé)英特爾以太網(wǎng)控制器、網(wǎng)卡、交換芯片等一系列網(wǎng)絡(luò)互聯(lián)產(chǎn)品。
?
(圖片來自英特爾)
很多讀者也許并沒有聽說過 Barefoot 這個(gè)公司。事實(shí)上,它的飛速發(fā)展已經(jīng)對諸如博通和英特爾等傳統(tǒng)網(wǎng)絡(luò)交換芯片廠商形成了逼宮之勢,大有一種“光腳的不怕穿鞋的”之感。
在這篇文章中,老石將詳細(xì)解讀這家“赤腳”公司的四大核心競爭科技:
一種編程語言:P4
一種可編程芯片架構(gòu):PISA
一種編譯器與工具鏈:P4 Studio
一種可編程網(wǎng)絡(luò)芯片:Tofino
文章最后,老石將分析 Barefoot 的這些“黑科技”對 FPGA 在網(wǎng)絡(luò)應(yīng)用的影響。
一種編程語言:P4
早在 2014 年,Barefoot 與英特爾、谷歌、微軟,以及斯坦福大學(xué)和普林斯頓大學(xué)聯(lián)合發(fā)表了一篇名為《P4:Programming Protocol-Independent Packet Processors》的論文,這也代表著 P4 編程語言的正式誕生。
P4 本質(zhì)上是一門針對網(wǎng)絡(luò)數(shù)據(jù)包處理的領(lǐng)域?qū)S谜Z言(Domain Specific Language)。從它的全稱可以看出,P4 最主要的特點(diǎn)就是與具體的網(wǎng)絡(luò)協(xié)議無關(guān),這與當(dāng)前正在蓬勃興起的 SDN(軟件定義網(wǎng)絡(luò))概念不謀而合。
在一個(gè) SDN 網(wǎng)絡(luò)中,通??梢詫⑵鋭澐殖煽刂破矫婧蛿?shù)據(jù)平面兩部分,這也是它有別于普通網(wǎng)絡(luò)的最本質(zhì)特點(diǎn)。其中,控制平面負(fù)責(zé)對數(shù)據(jù)平面的各種網(wǎng)絡(luò)設(shè)備進(jìn)行集中管理和配置,二者通過標(biāo)準(zhǔn)化的接口進(jìn)行互聯(lián)。控制平面往往基于標(biāo)準(zhǔn) CPU 實(shí)現(xiàn),因此有著很強(qiáng)的可編程性。而數(shù)據(jù)平面的傳統(tǒng)實(shí)現(xiàn),則是基于各家網(wǎng)絡(luò)設(shè)備廠商、針對不同網(wǎng)絡(luò)功能提供的各種設(shè)備。這樣的實(shí)現(xiàn)方式,說好聽一點(diǎn)是“百花齊放”,說現(xiàn)實(shí)一點(diǎn)就是“雜亂無章”、“各自為戰(zhàn)”。由于各種設(shè)備和網(wǎng)絡(luò)協(xié)議之間的兼容性和通用性不足,極大的限制了 SDN 數(shù)據(jù)平面在規(guī)模和功能上的擴(kuò)展能力。
在現(xiàn)有的 SDN 網(wǎng)絡(luò)中,控制和數(shù)據(jù)兩個(gè)平面之間的標(biāo)準(zhǔn)化接口通常使用 OpenFlow,很多網(wǎng)絡(luò)設(shè)備供應(yīng)商也相繼推出了很多支持 OpenFlow 編程的網(wǎng)絡(luò)硬件。然而,OpenFlow 標(biāo)準(zhǔn)與網(wǎng)絡(luò)協(xié)議緊密相關(guān),它的多次版本更迭都是為了增加對更多協(xié)議的支持,見下圖。
隨著網(wǎng)絡(luò)流量的爆炸性增長,各種新的網(wǎng)絡(luò)協(xié)議層出不窮,比如在云數(shù)據(jù)中心里,各類隧道和封裝協(xié)議(如 VXLAN 等)已經(jīng)被普遍采用。除此之外,很多網(wǎng)絡(luò)設(shè)計(jì)者也希望使用自定義或非公開的網(wǎng)絡(luò)協(xié)議,以更好的滿足自己和客戶的定制化需求。這些新型的應(yīng)用場景,一方面需要 OpenFlow 不斷更新標(biāo)準(zhǔn),另一方面需要硬件廠商不斷更新硬件,以支持這些新興協(xié)議。而這不管從成本還是時(shí)間上看,顯然不能滿足網(wǎng)絡(luò)的發(fā)展需要。
事實(shí)上,P4 誕生的最主要目的就是為 SDN 的數(shù)據(jù)平面提供協(xié)議無關(guān)的可編程能力。如下圖所示,網(wǎng)絡(luò)設(shè)計(jì)者可以通過 P4 定義數(shù)據(jù)平面的轉(zhuǎn)發(fā)和處理規(guī)則,例如報(bào)頭解析、匹配、表項(xiàng)配置等,然后通過編譯器在目標(biāo)交換機(jī)上進(jìn)行實(shí)現(xiàn)。
P4 作為一個(gè)開源的領(lǐng)域?qū)S谜Z言,發(fā)展至今天已有相當(dāng)?shù)囊?guī)模,擁有包括英特爾、賽靈思、微軟、谷歌、思科、阿里、騰訊等幾十家科技公司和大學(xué)的代碼貢獻(xiàn)和支持。
有關(guān) P4 語言的具體技術(shù)細(xì)節(jié),本文不再展開,有興趣的讀者請?jiān)诠娞柡笈_回復(fù)關(guān)鍵字“P4”,或進(jìn)入知識星球“老石談芯 - 進(jìn)階版”查看技術(shù)資料并參與討論。
值得注意的是,OpenFlow 和 P4 均出自一個(gè)大師的手筆,那就是斯坦福大學(xué)教授 Nick McKeown。作為 SDN 的提出者和先驅(qū),他先后發(fā)起成立了開放網(wǎng)絡(luò)基金會(ONF),以及負(fù)責(zé)制定 P4 標(biāo)準(zhǔn)的 P4.org。此外,他也是多個(gè)初創(chuàng)企業(yè)的創(chuàng)始人,其中就包括這篇文章中介紹的 Barefoot:McKeown 教授在 Barefoot 公司擔(dān)任聯(lián)合創(chuàng)始人和首席科學(xué)家。
業(yè)界有“一流的企業(yè)做標(biāo)準(zhǔn)”的說法。Barefoot 公司作為 P4 語言的主要發(fā)起者,又由 SDN 領(lǐng)域最有權(quán)威的大牛創(chuàng)辦,因此在業(yè)界的影響力不言而喻。
一種可編程芯片架構(gòu):PISA
Barefoot 的核心競爭力之一,就是提出了一種通用的、協(xié)議無關(guān)的、可編程的交換機(jī)芯片架構(gòu):PISA(Protocol Independent Switch Architecture)。
PISA 的架構(gòu)示意圖如下所示。它的主要數(shù)據(jù)通路是由大量“匹配 - 動作”單元以流水線的方式組合而成。在流水線入口,有一個(gè)可編程的包頭解析器,負(fù)責(zé)對數(shù)據(jù)包進(jìn)行預(yù)處理和解析。此外,流水線還有一條回流路徑,適用于數(shù)據(jù)包需要進(jìn)行多次解析和反饋處理的情況。
對于每個(gè)“匹配 - 動作”單元,它的微架構(gòu)如下圖所示??梢钥吹?,它里包含多個(gè)并行的由 SRAM 和 TCAM 組成的查找表單元,可以同時(shí)進(jìn)行大量的精確匹配和三元匹配。查找后的表項(xiàng)再通過 ALU 進(jìn)行計(jì)算和修改,組合成新的包頭傳遞到下一級流水線。
PISA 這種架構(gòu)由通用的邏輯單元和流水線組成,因此與具體協(xié)議無關(guān),并且可以通過編程實(shí)現(xiàn)各種標(biāo)準(zhǔn)或自定義的網(wǎng)絡(luò)包處理規(guī)則,而無需進(jìn)行架構(gòu)修改,如下圖。
一種編譯器和工具鏈:P4 Studio
有了編程語言 P4 和底層架構(gòu) PISA,自然需要編譯器將二者進(jìn)行映射。為此,Barefoot 有著名為 P4 Studio 的編譯器和開發(fā)套件。它的功能就是將 P4 語言描述的數(shù)據(jù)包處理規(guī)則,完整、正確的映射到 PISA 架構(gòu)上。其功能架構(gòu)如下圖所示。
P4 Studio 主要包含以下幾個(gè)主要部件:
P4 編譯器、調(diào)試器和 IDE。
P4 語言的仿真環(huán)境和測試框架。
底層硬件的通用接口和驅(qū)動。
對開源網(wǎng)絡(luò)操作系統(tǒng)的支持,如 HPE 的 OpenSwitch、微軟 Azuere 的 SONiC 和 Facebook 的 FBOSS 等。
有了全新的編程語言、編譯器和系統(tǒng)架構(gòu),一款全新的可編程網(wǎng)絡(luò)芯片就誕生了。
一種可編程網(wǎng)絡(luò)芯片:Tofino
Tofino 是 Barefoot 推出的首款可編程交換芯片,它基于臺積電 16nm FinFET+工藝制造。在推出之時(shí),Barefoot 稱這款芯片是世界上最快的交換芯片,性能可以達(dá)到 6.5Tb/s,與博通等公司的旗艦產(chǎn)品性能不相上下。同時(shí),Tofino 基于 PISA 架構(gòu),能通過 P4 語言進(jìn)行現(xiàn)場編程,又有著 ASIC 基本的功耗和成本數(shù)據(jù),這也是它有別于其他“傳統(tǒng)”網(wǎng)絡(luò)交換芯片的最大特點(diǎn)和優(yōu)勢。
Tofino 的芯片架構(gòu)示意圖如下所示??梢钥吹剑琓ofino 有著 4 條 PISA 架構(gòu)的流水線,并通過同一個(gè) TM 負(fù)責(zé)四條流水線之間的流量調(diào)度和管理,最多可以支持 130 萬條 IPv4 路由。在每條流水線里,包含 16 個(gè) 100G MAC,也可以配置成 10G/25G/40G/50G 等多種模式。
目前,Barefoot 又推出了第二代 Tofino 芯片,它基于 7 納米工藝制造,性能提升了一倍,最高支持 12.8Tb/s 的數(shù)據(jù)包處理速率。
基于 P4 的可編程網(wǎng)絡(luò)芯片對 FPGA 的影響
網(wǎng)絡(luò)數(shù)據(jù)處理和加速一直是 FPGA 最主要的應(yīng)用領(lǐng)域,在之前文章中曾介紹過,英特爾近期剛剛進(jìn)行了組織架構(gòu)調(diào)整,將 FPGA 和網(wǎng)絡(luò)平臺部門合二為一,足可見對 FPGA 在網(wǎng)絡(luò)領(lǐng)域的重視。在 SDN 和 NFV 的應(yīng)用中,也有很多實(shí)用 FPGA 進(jìn)行網(wǎng)絡(luò)功能卸載和加速的案例,在老石之前的文章中也詳細(xì)介紹過的智能網(wǎng)卡等等。
不過,F(xiàn)PGA 的開發(fā)難度一直是制約其廣泛使用的最大障礙之一。因此,使用諸如 OpenCL 等高層次語言對 FPGA 進(jìn)行編程開發(fā)就成了業(yè)界和學(xué)術(shù)界研究的熱點(diǎn)之一。
近年來,這類研究的重點(diǎn)開始轉(zhuǎn)向?qū)︻I(lǐng)域?qū)S谜Z言的探索,正如網(wǎng)絡(luò)領(lǐng)域的 P4 語言。前文提到,英特爾和賽靈思都是 P4.org 的成員和代碼貢獻(xiàn)者之一,兩家公司都在進(jìn)行使用 P4 語言編程 FPGA 的相關(guān)研究。
在 2019 年的 FPGA 大會上,賽靈思和 Nick McKeown 教授以及劍橋大學(xué)聯(lián)合發(fā)表了一篇討論 P4 編程 FPGA 的論文,它使用了賽靈思的 P4-SDNet 編譯器生成底層 Verilog 代碼模塊,然后映射到名為“NetFPGA”的參考設(shè)計(jì)上,見下圖。
這篇論文及其他 FPGA’19 大會的重要論文,老石在之前的文章中進(jìn)行過詳細(xì)梳理,有興趣的讀者可以在公眾號后臺回復(fù)“FPGA 論文”查看論文全文。
對于英特爾,在收購 Barefoot 之前,它就也已經(jīng)開始了 P4 編程 FPGA 的研究,在最近發(fā)表的一篇白皮書中(下圖),英特爾和 Netcope 公司合作開發(fā)了一款使用 P4 編程 FPGA 智能網(wǎng)卡,并得到 100G 吞吐量的應(yīng)用實(shí)例。此外,P4 語言的最初作者之一 Dan Daly,一直在英特爾擔(dān)任主任工程師。在收購 Barefoot 之后,相信對無論是 FPGA 還是 ASIC 在內(nèi)的各種英特爾芯片采用 P4 編程會是極大的促進(jìn)。
結(jié)語
Barefoot 作為一個(gè)“出身名門”的初創(chuàng)公司,很好的把握了現(xiàn)在網(wǎng)絡(luò)體系架構(gòu)發(fā)展的最大痛點(diǎn),提出了已經(jīng)成為業(yè)界標(biāo)準(zhǔn)的 P4 語言,開發(fā)了對應(yīng)的 PISA 芯片架構(gòu)和編譯器,并做出了兩款可以完全編程的高性能網(wǎng)絡(luò)交換芯片,可以說構(gòu)建了完整的技術(shù)閉環(huán)。如今被英特爾收購,對雙方都有極大的好處。Barefoot 的整個(gè)創(chuàng)業(yè)過程和理念,值得各家芯片創(chuàng)業(yè)公司借鑒。