關(guān)于ClickNP的幾點(diǎn)討論
發(fā)布時(shí)間:2016-11-13
引言:最近在FAST開源項(xiàng)目群中對(duì)2016 SIGCOMM論文ClickNP進(jìn)行了討論,我們總結(jié)了五個(gè)問(wèn)題。我們與ClickNP的第一作者李博杰進(jìn)行了溝通和討論,在此對(duì)博杰表示感謝。下面把關(guān)于ClickNP的五個(gè)問(wèn)題和博杰的回復(fù)向大家分享一下,希望大家能有所收獲,并多多發(fā)表意見。
問(wèn)題一:FPGA在數(shù)據(jù)中心交換中大有可為。隨著多核處理器能力提升(特別是核數(shù)提升),數(shù)據(jù)中心端系統(tǒng)連接網(wǎng)絡(luò)的第一跳交換機(jī)已經(jīng)逐漸由外部TOR交換機(jī)遷移到服務(wù)器內(nèi)部的OVS交換機(jī),一些復(fù)雜的網(wǎng)絡(luò)處理功能也由TOR上實(shí)現(xiàn)轉(zhuǎn)移到OVS上實(shí)現(xiàn)。由于OVS性能受限,在網(wǎng)卡上對(duì)交換進(jìn)行加速是趨勢(shì)。ClickNP研究的點(diǎn)十分關(guān)鍵,實(shí)現(xiàn)的各種網(wǎng)絡(luò)功能對(duì)于第一跳交換機(jī)來(lái)說(shuō)也十分關(guān)鍵,因此研究的意義很重要。而數(shù)據(jù)中心網(wǎng)絡(luò)中協(xié)議發(fā)展很快,使用FPGA來(lái)實(shí)現(xiàn)對(duì)這些協(xié)議的處理十分合適,通過(guò)FPGA邏輯的重構(gòu)可以支持各種新的,甚至是未來(lái)出現(xiàn)的協(xié)議。
另外,隨著OVS/FPGA成為第一跳交換機(jī),因此TOR交換機(jī)已經(jīng)逐漸變成匯聚交換機(jī)的角色,對(duì)TOR交換機(jī)的編程(如利用p4)意義可能已經(jīng)不大。因此個(gè)人感覺(jué)類似Barefoot的可編程芯片在數(shù)據(jù)中心中不一定有很好的發(fā)展前景,因?yàn)門OR和其他匯聚交換機(jī)以及核心交換機(jī)只需要簡(jiǎn)單和快速即可。
博杰回復(fù):我和你們的觀點(diǎn)一致,微軟的策略也是在端上而非網(wǎng)絡(luò)里實(shí)現(xiàn)網(wǎng)絡(luò)功能。網(wǎng)絡(luò)就做三層路由,因?yàn)槲④浉鶬ntel是同盟嘛。然而其他公司不一定這么想,比如Google跟Cisco是同盟,他們比較想把復(fù)雜性放在網(wǎng)絡(luò)里面,這時(shí)可編程交換機(jī)就有用了。在現(xiàn)實(shí)中,這兩種方案我認(rèn)為不是對(duì)立的,比如微軟數(shù)據(jù)中心在端上用FPGA做NFV,又在網(wǎng)絡(luò)里用可編程交換機(jī)(Azure cloud switch,Broadcom trident II)做靈活的Scheduling和負(fù)載均衡器的Data path offloading。
問(wèn)題二:HLS/OpenCL面向的用戶群體應(yīng)該是各種應(yīng)用開發(fā)人員,用于面向應(yīng)用算法加速,(如神經(jīng)網(wǎng)絡(luò)算法處理加速,基因計(jì)算加速等等)。而這些完全人沒(méi)有也不需要掌握底層FPGA結(jié)構(gòu)和編程的知識(shí)。而網(wǎng)絡(luò)設(shè)備研制是網(wǎng)絡(luò)設(shè)備制造商專業(yè)開發(fā)人員負(fù)責(zé),因此應(yīng)該使用Verilog等寄存器傳輸級(jí)的硬件描述語(yǔ)言開發(fā),以追求更高的性能和更低的功耗。論文用HLS/OpenCL來(lái)設(shè)計(jì)幾乎標(biāo)準(zhǔn)的,功能變化頻率很低的網(wǎng)絡(luò)設(shè)備,應(yīng)該是沒(méi)有必要,現(xiàn)實(shí)中也是沒(méi)有需求的。
博杰回復(fù):在傳統(tǒng)數(shù)據(jù)中心網(wǎng)絡(luò)中也許網(wǎng)絡(luò)功能相對(duì)固定,但在云數(shù)據(jù)中心中網(wǎng)絡(luò)功能經(jīng)常變化,這也是各大云服務(wù)商使用虛擬化網(wǎng)絡(luò)功能的原因。比如流表的Match和Action、壓縮算法、負(fù)載均衡策略、數(shù)據(jù)包調(diào)度策略、RoCE等傳輸協(xié)議,都是不斷演進(jìn)的。我們使用FPGA也是為了兼具靈活性和性能,解決CPU做網(wǎng)絡(luò)功能的性能瓶頸。
您說(shuō)的用HLS/OpenCL沒(méi)有必要,這一點(diǎn)微軟產(chǎn)品部分也是認(rèn)同的。因此ClickNP目前只是研究部門在用。產(chǎn)品部門有專業(yè)的硬件工程師寫Verilog,部署規(guī)模那么大,用Verilog寫出來(lái)的代碼資源占用明顯少于HLS生成的(ClickNP論文中也有比較),因此他們選擇了Verilog路線。
問(wèn)題三:關(guān)于性能評(píng)測(cè)的方法有些看不懂,例如表2中,LPM_tree邏輯最大頻率為221.8MHz,最大的性能也是221.8MPPS,而Hash_TCAM的最大頻率和性能值也是一致的,這說(shuō)明這不是一個(gè)測(cè)試結(jié)果,而是人為的認(rèn)為通過(guò)流水就可以讓每個(gè)時(shí)鐘周期出一個(gè)結(jié)果?這種估計(jì)太樂(lè)觀了吧。例如一次LPM查表需要n次訪存,必須完全實(shí)現(xiàn)n級(jí)流水線才能現(xiàn)實(shí)中是很難實(shí)現(xiàn)的。
博杰回復(fù):ClickNP中所有的Element都是完全流水的,用HLS的說(shuō)法是II=1。這也是HLS相比Verilog編程的一種優(yōu)勢(shì)。Verilog寫流水線費(fèi)時(shí)費(fèi)力,而且不知道能把多少個(gè)組合邏輯運(yùn)算合并到一個(gè)時(shí)鐘周期中。HLS工具則可以根據(jù)邏輯延遲估算一個(gè)時(shí)鐘周期能做多少事,自動(dòng)排好流水,所生成的Verilog代碼不僅不會(huì)浪費(fèi)硬件資源,而且能在流水深度(延遲)和時(shí)鐘頻率間取得平衡,更不用說(shuō)開發(fā)效率的差別了。
問(wèn)題四:作者使用的BRAM TCAM的實(shí)現(xiàn),應(yīng)該是把FPGA的邏輯單元用作64*1的寄存器使用,難道不是用Verilog等寄存器傳輸級(jí)語(yǔ)言編程+相關(guān)的綜合約束實(shí)現(xiàn)的,也是由HLS綜合實(shí)現(xiàn)的嗎?HLS這么強(qiáng),這個(gè)有點(diǎn)顛覆我的認(rèn)識(shí)了。
博杰回復(fù):BRAM TCAM的實(shí)現(xiàn)是Xilinx的一篇論文里提出的,基本思路是把一個(gè)較長(zhǎng)的匹配拆分成多個(gè)較短的匹配,然后對(duì)每個(gè)n位的短匹配預(yù)先計(jì)算出所有可能(2的n次方),直接查表。
ClickNP論文里提到的Element都是用C語(yǔ)言編寫,HLS工具編譯出來(lái)的。我承認(rèn)在HLS里面實(shí)現(xiàn)涉及到Memory的處理比較麻煩,因此訪存有延遲,HLS工具只會(huì)根據(jù)最差的可能安排Pipeline,然而硬件工程師可以合理安排這些訪存,這使得它們之間不存在沖突。解決訪存依賴就是編譯器的一種優(yōu)化。當(dāng)然還有其他類型的手工優(yōu)化,但沒(méi)有寫進(jìn)論文,因?yàn)檫@些優(yōu)化是針對(duì)HLS編譯器特性的,而不具有普適性。
問(wèn)題五:作者在今年SIGCOMM綜述和ClickNP論文撰寫體會(huì)中,著重提出的軟件Element和硬件Element協(xié)同處理的問(wèn)題在論文中描述不充分?是篇幅原因?個(gè)人感覺(jué)這個(gè)應(yīng)該寫詳細(xì)一些,而4.2.1中對(duì)訪存依賴的描述應(yīng)該不是很重要(抱歉,可能沒(méi)有理解作者用意),因?yàn)閷?duì)于寄存器傳輸級(jí)的編程來(lái)說(shuō),這個(gè)問(wèn)題不存在,只有使用HLS才有這個(gè)問(wèn)題,而個(gè)人感覺(jué)HLS不是NF實(shí)現(xiàn)應(yīng)該使用的方法(第二點(diǎn)已經(jīng)指出)。
博杰回復(fù):在軟硬件協(xié)同處理方面我們的例子確實(shí)不太充分,只有一個(gè)PacketCapture和一個(gè)L4 Loadbalancer。不過(guò)這一部分沒(méi)有太多東西可說(shuō),就是把復(fù)雜的部分通過(guò)PCIE channel發(fā)到CPU,處理之后再通過(guò)PCIE channel發(fā)回去。編譯器并不能自動(dòng)做軟硬件之間的切割。
PS:歡迎大家關(guān)注FAST公眾號(hào),并對(duì)我們提出的話題發(fā)表更多的觀點(diǎn),同時(shí)我們會(huì)向大家推送FAST的最新成果和相關(guān)資料。
我們創(chuàng)建了一個(gè)FAST項(xiàng)目交流群,歡迎大家加入和眾多老師專家一起討論網(wǎng)絡(luò)交換方面的問(wèn)題,下面是FAST項(xiàng)目交流群的二維碼。