斯坦福大學(xué)與賽靈思研究實(shí)驗(yàn)室(Xilinx Research Labs)聯(lián)手開發(fā)專門面向研究社群的第二代高速網(wǎng)絡(luò)" title="高速網(wǎng)絡(luò)">高速網(wǎng)絡(luò)設(shè)計(jì)平臺(tái) NetFPGA" title="FPGA">FPGA-10G。該新型平臺(tái)采用最先進(jìn)的技術(shù),能夠幫助研究人員迅速構(gòu)建高速?gòu)?fù)雜的原型,以解決網(wǎng)絡(luò)領(lǐng)域新出現(xiàn)的技術(shù)問題。正如第一代平臺(tái)已在世界各地的大學(xué)中得到廣泛應(yīng)用一樣,我們希望新平臺(tái)能夠催生一個(gè)開源社區(qū),貢獻(xiàn)并共享IP,從而加快創(chuàng)新步伐。
開源軟件庫(kù)有助于軟件、IP核以及設(shè)計(jì)經(jīng)驗(yàn)的共享,進(jìn)而催生新一代網(wǎng)絡(luò)問題的解決方案。
基礎(chǔ)平臺(tái)為最終用戶提供了迅速上手所需的所有要素,而開源社區(qū)則可以讓研究人員利用彼此的成果,這樣一來最大限度地減少了理念實(shí)際實(shí)施所需的時(shí)間,從而讓設(shè)計(jì)人員集中精力進(jìn)行創(chuàng)新。
2007年,我們開發(fā)出了第一代開發(fā)板NetFPGA-1G,采用賽靈思Virtex-II Pro 50,主要用于電氣工程和計(jì)算機(jī)科學(xué)系學(xué)生的網(wǎng)絡(luò)硬件教學(xué)。許多電氣工程和計(jì)算機(jī)科學(xué)的畢業(yè)生走上了開發(fā)網(wǎng)絡(luò)產(chǎn)品的崗位,我們希望他們能夠有機(jī)會(huì)進(jìn)行實(shí)際操作,親自動(dòng)手使用業(yè)界標(biāo)準(zhǔn)設(shè)計(jì)流程開發(fā)以線速運(yùn)行且可植入正在運(yùn)行的網(wǎng)絡(luò)中的硬件。為此,最初的開發(fā)板必須具有低成本性。在多家半導(dǎo)體供應(yīng)商的慷慨捐贈(zèng)下,我們得以把設(shè)計(jì)的最終價(jià)格壓到500美元以下。結(jié)果許多大學(xué)很快采用了該開發(fā)板,目前約有2,000個(gè)NetFPGA-1G開發(fā)板被世界各地的150個(gè)學(xué)院使用。
不過很快NetFPGA就超越了教學(xué)工具的范疇。研究社群逐漸將其用于實(shí)驗(yàn)和原型設(shè)計(jì)。為此,NetFPGA小組提供了免費(fèi)的開源參考設(shè)計(jì),并維護(hù)著有約50項(xiàng)研究人員所貢獻(xiàn)設(shè)計(jì)的設(shè)計(jì)庫(kù)。我們?yōu)樾掠脩籼峁┲С?,運(yùn)行在線論壇,提供輔導(dǎo)資料,舉辦夏令營(yíng)和開發(fā)人員技術(shù)座談。
可編程技術(shù)勢(shì)在必行
10多年以來,網(wǎng)絡(luò)技術(shù)在交換機(jī)、路由器及其它產(chǎn)品中的發(fā)展越來越體現(xiàn)出轉(zhuǎn)發(fā)路徑的可編程性。這在很大程度上是因?yàn)殡S著更多隧道格式、服務(wù)質(zhì)量方案、防火墻過濾器和加密技術(shù)等的問世,網(wǎng)絡(luò)硬件日益復(fù)雜化。加上日新月異的標(biāo)準(zhǔn),可編程技術(shù)勢(shì)在必行,比如說使用NPU或FPGA。
研究人員往往想改變部分或所有轉(zhuǎn)發(fā)流水線。近來,有許多人關(guān)注全新的轉(zhuǎn)發(fā)模型,比如OpenFlow。研究人員可以在全國(guó)范圍內(nèi)在國(guó)家級(jí)測(cè)試平臺(tái)上,比如美國(guó)的GENI(http://geni.net)和歐盟的FIRE(http://cordis.europa.eu/fp7/ict/fire/calls_en.html)上試驗(yàn)新型網(wǎng)絡(luò)架構(gòu)。
研究人員還越來越多地將NetFPGA開發(fā)板用于新理念的硬件原型設(shè)計(jì),諸如新的轉(zhuǎn)發(fā)模式、調(diào)度與查找算法,以及新的深層數(shù)據(jù)監(jiān)測(cè)器。NetFPGA開發(fā)板上最常見的參考設(shè)計(jì)是功能齊全的開源OpenFlow交換機(jī),可以讓研究人員體驗(yàn)到標(biāo)準(zhǔn)設(shè)計(jì)的各個(gè)變體。另一項(xiàng)常用的參考設(shè)計(jì)則可以通過鏡像硬件中內(nèi)核路由表并以線速轉(zhuǎn)發(fā)所有數(shù)據(jù)包來加速計(jì)算機(jī)主機(jī)內(nèi)置的路由功能。
第二代NetFPGA
在第二代平臺(tái)NetFPGA-10G上,我們添加了易用性,旨在為最終客戶提供基本的基礎(chǔ)架構(gòu),以簡(jiǎn)化他們的設(shè)計(jì)工作,這不僅擴(kuò)大了我們的原始設(shè)計(jì)目標(biāo),而且這個(gè)目標(biāo)與賽靈思主流目標(biāo)設(shè)計(jì)平臺(tái)的目標(biāo)很接近,即除FPGA芯片外,還為客戶提供工具、IP核和參考設(shè)計(jì),以加快設(shè)計(jì)流程。
為實(shí)現(xiàn)這一目標(biāo),我們將以基礎(chǔ)IP構(gòu)建塊和特定領(lǐng)域IP構(gòu)建塊形式提供與FPGA基礎(chǔ)架構(gòu)設(shè)計(jì)配套的開發(fā)板,以增強(qiáng)易用性,縮短開發(fā)時(shí)間。我們將進(jìn)一步開發(fā)諸如網(wǎng)絡(luò)接口卡和IPv4參考路由器等參考設(shè)計(jì),以及協(xié)助設(shè)計(jì)構(gòu)建、仿真和調(diào)試的基本基礎(chǔ)架構(gòu)。我們的想法是讓用戶把開發(fā)時(shí)間真正聚焦于他們特定的專業(yè)領(lǐng)域或者專題上,無需深入了解底層硬件的詳細(xì)情況。
與主流目標(biāo)設(shè)計(jì)平臺(tái)不一樣,我們的網(wǎng)絡(luò)平臺(tái)針對(duì)的是一個(gè)與眾不同的最終用戶群體,即囊括了學(xué)術(shù)研究和商業(yè)研究的這樣一個(gè)龐大的研究群體。為了讓該開發(fā)板得到廣泛采用,多家半導(dǎo)體合作伙伴慷慨解囊,期望能將其成本降至最低。賽靈思及Micron、賽普拉斯半導(dǎo)體公司和NetLogic Microsystems等其他主力組件制造商也紛紛在向?qū)W術(shù)界最終用戶捐贈(zèng)部件(商業(yè)研究人員則需給付更高的價(jià)格)。
這個(gè)項(xiàng)目的部分優(yōu)勢(shì)在于這個(gè)平臺(tái)得到了社區(qū)和開源硬件庫(kù)的支持,可以以最初的基礎(chǔ)方案為基礎(chǔ),促進(jìn)軟件、IP核和經(jīng)驗(yàn)的共享。這樣,我們期望在眾多知名大學(xué)、研究群體和企業(yè)的支持下,IP庫(kù)能夠日益擴(kuò)大完善,最終能夠覆蓋各種參考組件、網(wǎng)絡(luò)IP核、軟件和尖端的基礎(chǔ)構(gòu)架。我們還期望通過提供精心設(shè)計(jì)的框架,用系統(tǒng)的方法對(duì)專業(yè)知識(shí)和IP的共享稍加協(xié)調(diào),并采用具有標(biāo)準(zhǔn)接口的設(shè)計(jì)精良的即插即用型架構(gòu),就可以讓開源硬件庫(kù)不斷擴(kuò)大,從而催生新一代網(wǎng)絡(luò)問題的解決方案。
圖1:圍繞Virtex-5 FPGA構(gòu)建的NetFPGA-10G板卡。
NetFPGA-10G是一種40Gb/s的PCI Express適配卡,擁有龐大的FPGA架構(gòu),能夠盡可能多地支持各種應(yīng)用。如圖1所示,該板卡設(shè)計(jì)以一個(gè)大型的賽靈思FPGA器件Virtex-5 XC5VTX240T-2為中心。
圖2:FPGA開發(fā)板與網(wǎng)絡(luò)接口、PCIe、擴(kuò)展、存儲(chǔ)器、配置和電源五個(gè)子系統(tǒng)相連。
FPGA與5個(gè)子系統(tǒng)相連(見圖2)。第一個(gè)子系統(tǒng)是網(wǎng)絡(luò)接口子系統(tǒng),有4個(gè)帶有物理層器件的10Gbps以太網(wǎng)" title="以太網(wǎng)">以太網(wǎng)接口,用于讓網(wǎng)絡(luò)流量進(jìn)入FPGA。第二個(gè)子系統(tǒng)是存儲(chǔ)子系統(tǒng),其由多個(gè)QDRII和RLDRAMII組件構(gòu)成。I/O主要用于該接口,用來為諸如路由表或包緩存這樣的功能提供盡可能高的可用片外帶寬。第三個(gè)子系統(tǒng)是PCIe子系統(tǒng)。
第四個(gè)子系統(tǒng)是擴(kuò)展接口,用于加載子卡或與其它板卡通信。為此我們把所有剩余的高速串行I/O連接端都接到了兩個(gè)高速接插件上。第五個(gè)子系統(tǒng)是配置子系統(tǒng),用于FPGA的配置。
總體而言,該板卡就是作為一個(gè)雙插槽、全尺寸PCIe適配器來實(shí)現(xiàn)的。使用兩個(gè)插槽是出于散熱、功耗和高度方面的考慮。與高端圖形卡一樣,該板卡需要外接ATX電源,因?yàn)镕PGA在絕對(duì)最大負(fù)載條件下,功耗可能會(huì)超過單槽PCIe允許的50W。不過該板卡也可在服務(wù)器環(huán)境外獨(dú)立運(yùn)行。
存儲(chǔ)器子系統(tǒng)
我們?cè)O(shè)計(jì)流程的核心焦點(diǎn)是到SRAM和DRAM組件的接口。因?yàn)镕PGA器件上的I/O總數(shù)限制了可用的片外總帶寬,我們必須小心地達(dá)成一定的妥協(xié),爭(zhēng)取盡量多支持一些應(yīng)用。要支持從網(wǎng)絡(luò)監(jiān)控到安全性、路由、流量管理等各類應(yīng)用,會(huì)帶來很大不同的約束。
例如,對(duì)外部存儲(chǔ)器存取來說,網(wǎng)絡(luò)監(jiān)控器會(huì)采用一個(gè)大型的基于流量的統(tǒng)計(jì)表,而且多數(shù)情況下可能還需要一個(gè)流量分類查找表。對(duì)兩者的存取都會(huì)帶來較短的時(shí)延,因?yàn)榱髁糠诸愋枰獙?duì)內(nèi)部依賴性進(jìn)行多次查找,而流量統(tǒng)計(jì)表的更新則一般會(huì)覆蓋整個(gè)讀取—修改—寫入周期。因此,SRAM是合適的器件選擇。不過流量管理器主要需要大量存儲(chǔ)空間用于包緩存,通常出于密度要求,還會(huì)采用DRAM組件。對(duì)外部存儲(chǔ)器而言,最后可以考慮使用需要路由表查找和包緩存的IPv4路由器。
總結(jié)各種應(yīng)用的要求,我們認(rèn)識(shí)到某些功能會(huì)占用外部存儲(chǔ)器帶寬,不管是SRAM還是DRAM。包緩存(要求大量存儲(chǔ)空間)適合采用DRAM,SRAM則更適用于流量分類搜索存取、路由表查詢、基于流量的數(shù)據(jù)統(tǒng)計(jì)表或基于規(guī)則的防火墻、用于包緩沖區(qū)實(shí)現(xiàn)的存儲(chǔ)器管理表以及報(bào)頭隊(duì)列等。
所有這些功能都需要逐包執(zhí)行。因此,假定在最惡劣的情況下最小尺寸的包是帶20字節(jié)開銷的64字節(jié),系統(tǒng)需要處理的包率就是大約每秒6000萬個(gè)包。其次,我們需要將存取做進(jìn)一步的區(qū)分。首先,許多存儲(chǔ)器組件,比如QDR SRAM和RLDRAM SIO器件有獨(dú)立的讀/寫數(shù)據(jù)總線。由于存取模式不能假定為系統(tǒng)分布,我們就無法匯聚總的存取帶寬,不得不對(duì)單獨(dú)考慮每項(xiàng)業(yè)務(wù)。
另外,還存在第三類存取,就是“搜索”。搜索可以通過基于TCAM的器件很好地完成,搜索時(shí)延固定,且確保能獲得搜索結(jié)果。不過,出于價(jià)格和功耗方面的考慮,以及TCAM會(huì)進(jìn)一步限制I/O使用,我們不準(zhǔn)備在我們的開發(fā)板上使用TCAM器件。搜索還可以通過諸如決策樹、哈希算法和分解法等其他方式來完成,可采用高速緩存也可不用,僅以這些為例。為了便于探討,我們假定完成一次搜索平均需要近兩次讀取。鑒于此,以及對(duì)數(shù)據(jù)寬度進(jìn)行了一些慣常的假設(shè)后,我們將要求精簡(jiǎn)為表1所示。
表1:SRAM帶寬需求。
假定接口上的時(shí)鐘速度為300MHz,那么QDRII接口可以實(shí)現(xiàn)每秒2X300=6億次讀/寫存取操作。因此,三個(gè)QDRII x36位的接口就可以滿足我們的所有要求。
對(duì)于DRAM存取,我們主要考慮的是包存儲(chǔ)的方便程度,僅從存儲(chǔ)器中對(duì)包進(jìn)行一次讀/寫。把包開銷從原本進(jìn)入的2x40Gbps中扣除后,這相對(duì)于約62Gbps的存取帶寬。用物理資源來衡量,RLDRAMII存取可以實(shí)現(xiàn)約97%的效率,而DDR2或DDR3存儲(chǔ)設(shè)備則可能在40%左右,因此會(huì)要求多得多的I/O。因此我們選擇了RLDRAMII CIO組件。兩個(gè)運(yùn)行在300MHz的64位RLDRAMII接口提供的總帶寬可以大致滿足這個(gè)要求。
網(wǎng)絡(luò)接口
NetFPGA-10G的網(wǎng)絡(luò)接口由4個(gè)能夠以10Gbps或1Gbps以太網(wǎng)鏈路方式運(yùn)行的子系統(tǒng)構(gòu)成。為了最大化平臺(tái)的利用率和最小化功耗,我們使用了4個(gè)增強(qiáng)型小型封裝可熱插拔(SFP+)模塊(cage)作為物理接口。與XENPAK和XFP等其他10G收發(fā)器標(biāo)準(zhǔn)相比,SFP+在功耗和尺寸方面有著明顯的優(yōu)勢(shì)。使用SFP+模塊,可以支持一系列接口標(biāo)準(zhǔn),包括10GBase-LR、10GBase-SR、10GBase-LRM和低成本直聯(lián)SFP+銅纜(雙同軸)。此外,還可以利用針對(duì)1Gpbs運(yùn)行的SFP模塊,從而支持1000Base-T或1000Base-X物理標(biāo)準(zhǔn)。
4個(gè)SFP+模塊每個(gè)都通過SFI接口連接到一個(gè)NetLogic AEL2005器件。AEL2005是一個(gè)帶有符合IEEE 802.3aq規(guī)范的嵌入式電分散補(bǔ)償引擎的10Gb以太網(wǎng)物理層收發(fā)器。除了常規(guī)的10G模式,該物理層器件還能夠支持千兆位以太網(wǎng)(1G)模式。在系統(tǒng)側(cè),這些物理層器件通過一個(gè)10Gb連接單元接口(XAUI)連接到FPGA。在1G模式下工作時(shí),其中一個(gè)XAUI信道用作串行千兆位介質(zhì)無關(guān)接口(SGMII)。
Virtex-5 FPGA內(nèi)部提供適當(dāng)?shù)腎P核。對(duì)于10Gbps的業(yè)務(wù),賽靈思推出了XAUI LogiCORE IP核和10Gb以太網(wǎng)媒體訪問控制器(10GEMAC)LogiCORE IP核。對(duì)于1G的業(yè)務(wù),接口可以直接連接至賽靈思嵌入式三態(tài)以太網(wǎng)MAC內(nèi)核。
PCIe子系統(tǒng)
NetFPGA-10G平臺(tái)使用開放式組件可移植性基礎(chǔ)架構(gòu)(OpenCPI)作為開發(fā)板和計(jì)算機(jī)主機(jī)通過PCIe互聯(lián)的主要互聯(lián)實(shí)現(xiàn)方式[7]。我們目前支持x8的第一代,將來可能會(huì)升級(jí)到支持第二代。OpenCPI是一種通用開源框架,用于連接使用不同類型的通信接口、且?guī)捄蜁r(shí)延要求不同的IP模塊(串流、字節(jié)可尋址等)。就其本質(zhì)來說,OpenCPI是一種高度可配置的框架,能夠?yàn)橛糜诳焖賹?shí)現(xiàn)新設(shè)計(jì)的IP核提供關(guān)鍵性的通信“橋梁”。
OpenCPI為NetFPGA-10G平臺(tái)帶來了一些關(guān)鍵特性。在軟件側(cè),我們能夠提供無干擾(clean)DMA接口,用于傳輸數(shù)據(jù)(主要是數(shù)據(jù)包,雖然也有其他類型的信息)以及通過編程的輸入/輸出控制器件。對(duì)于網(wǎng)絡(luò)應(yīng)用,我們提供Linux網(wǎng)絡(luò)驅(qū)動(dòng)程序,將網(wǎng)絡(luò)接口導(dǎo)出到NetFPGA器件上的每個(gè)物理以太網(wǎng)端口上。這樣可以讓用戶空間軟件把網(wǎng)絡(luò)數(shù)據(jù)包傳輸?shù)狡骷?,并且讀取設(shè)計(jì)中任何主機(jī)可視寄存器。
在硬件側(cè),OpenCPI為我們提供了無干擾、甚至多種數(shù)據(jù)流接口,而且每個(gè)接口都可以通過OpenCPI框架進(jìn)行配置。此外,OpenCPI能夠處理主機(jī)側(cè)和硬件側(cè)所有的緩存和PCIe事務(wù)處理,這樣用戶就能夠集中精力進(jìn)行特定應(yīng)用開發(fā),而不必處理器件通信的細(xì)節(jié)。
擴(kuò)展接口與配置子系統(tǒng)
擴(kuò)展接口子系統(tǒng)的目的是讓用戶通過連接第二塊NetFPGA-10G板卡來增加端口密度,比如通過光學(xué)子卡來豐富網(wǎng)絡(luò)接口特性,或者通過高速串行接口連接更多搜索組件,比如基于知識(shí)的處理器等。我們將FPGA上的20個(gè)GTX收發(fā)器取出,然后通過AC耦合傳輸線連接到兩個(gè)高速接插件上。這些接插件是為諸如XAUI、PCIe、SATA和Infiniband這樣的傳輸接口設(shè)計(jì)的,既可以通過匹配接插件直接連接到另一塊板卡上,也可以通過電纜組件連接到另一塊板卡上。每條傳輸線經(jīng)測(cè)試雙向傳輸速率均可達(dá)到6.5Gbps,從而為進(jìn)出FPGA提供了一條額外的130Gbps數(shù)據(jù)路徑。
使用不斷變大的比特流位寬來配置FPGA,如果器件的配置時(shí)間超過PCIe的限制,可能就會(huì)出現(xiàn)問題。V5TX240T就會(huì)遇到這樣的問題:平臺(tái)閃存器件的存取速度遠(yuǎn)遠(yuǎn)低于V5TX240T理論上能夠處理的速度,從而帶來了瓶頸。作為應(yīng)對(duì)措施,設(shè)計(jì)人員可以考慮配置部分比特流,并通過并行方式存取平臺(tái)閃存器件,從而以最大速度配置FPGA。為了提高實(shí)現(xiàn)的可能性,我們?yōu)榘蹇ㄅ鋫淞藘蓚€(gè)平臺(tái)閃存器件,可以通過CPLD連接到FPGA的配置接口。此外,該板卡還支持標(biāo)準(zhǔn)的JTAG編程接口。
FPGA設(shè)計(jì)
構(gòu)建成功的開源庫(kù)的一個(gè)關(guān)鍵因素是嚴(yán)格的架構(gòu)規(guī)范以及標(biāo)準(zhǔn)的、抽象且定義準(zhǔn)確的接口。實(shí)際上,我們認(rèn)為這些接口對(duì)提供一個(gè)能夠輕松地將大型全球性社區(qū)貢獻(xiàn)的組件組合在一起的構(gòu)建塊系統(tǒng)具有重要的意義。標(biāo)準(zhǔn)化保證了物理兼容性,物理連接功能之外的清晰定義避免了對(duì)接口協(xié)議的誤解。在理想的情況下,用戶可以不對(duì)實(shí)施內(nèi)在的知識(shí)做詳細(xì)了解,就可以部署抽象組件。
作為完整平臺(tái)發(fā)布的一部分,我們將提供完備的架構(gòu)規(guī)范和帶有關(guān)鍵組件的參考設(shè)計(jì)。這些關(guān)鍵組件包括:
OpenCPI的PCIe端點(diǎn);
4個(gè)XAUI LogiCORE IP模塊和4個(gè)10G模式下的10GEMAC LogiCORE內(nèi)核(后者許可協(xié)議下使用);
2個(gè)基于XAPP852的RLDRAMII存儲(chǔ)器控制器;
3個(gè)基于MIG3.1的QDRII存儲(chǔ)器控制器;
用以檢查時(shí)鐘頻率和加電完畢信號(hào),并生成所有所需系統(tǒng)時(shí)鐘的時(shí)鐘及復(fù)位模塊;
針對(duì)1G運(yùn)行模式的三態(tài)以太網(wǎng)MAC(TEMAC);
用于配置物理層器件的MDIO接口;
帶有能夠處理所有管理任務(wù)的支持系統(tǒng)的MicroBlaze控制處理器;
UART接口;
配置控制和比特流工具箱,為平臺(tái)閃存器件提供編程路徑;
可將所有輸入流量整合成一個(gè)數(shù)據(jù)流的輸入仲裁器;
可將流量分配給指定的輸出端口的輸出仲裁器。
圖3顯示了這些組件如何互聯(lián),以支持10G業(yè)務(wù)。對(duì)數(shù)據(jù)傳輸,我們選擇了AMBA 4 AXI串流協(xié)議。對(duì)控制流量,則選擇了基于AMBA4 AXI-Lite的接口。
圖3:面向10G業(yè)務(wù)的FPGA設(shè)計(jì)架構(gòu)基于AXI協(xié)議。
發(fā)展現(xiàn)狀與未來展望
NetFPGA-10G板卡的設(shè)計(jì)驗(yàn)證已經(jīng)完成。一旦完成產(chǎn)品測(cè)試平臺(tái)開發(fā),該板卡可立即投入生產(chǎn)。目前正在進(jìn)行FPGA的初步設(shè)計(jì)和首次發(fā)布相關(guān)代碼。