今年,ACM通訊專業組(SIGCOMM)的年度旗艦會議SIGCOMM首次在南美洲——巴西舉行。而SIGCOMM會議的開幕式恰好選在奧運會閉幕式的後一天。在這篇文章裡,微軟亞洲研究院實習生李博傑將會帶你體驗一場學術界的“巴西大冒險”。悄悄告訴你,李博傑也是目前中國最年輕的SIGCOMM一作哦!
作者簡介
我叫李博傑,本科畢業於中國科學技術大學少年班學院,2014年加入中國科學技術大學與微軟亞洲研究院的聯合培養博士生專案,師從微軟亞洲研究院無線與網路組的譚焜研究員。我的研究方向是資料中心網路和可重構硬體(FPGA)上的程式設計。
關於SIGCOMM
作為計算機網路領域資歷最老的頂級學術會議,ACM SIGCOMM自1977年起已經舉辦了37屆。美國計算機學會(ACM)通訊專業組(SIGCOMM)在其主頁上無不自豪地將SIGCOMM稱為其年度旗艦會議。40年來,從計算機網路教科書裡的TCP擁塞控制協議到雲資料中心裡的軟體定義網路(SDN)和網路功能虛擬化(NFV),SIGCOMM見證了眾多計算機網路關鍵技術的誕生與發展。
SIGCOMM的論文以高質量著稱,每年只錄用40篇左右,錄取率在15%左右。全世界的網路研究者都把在SIGCOMM上發表論文視為一種榮譽。每篇論文都經過嚴格的雙盲評審,例如今年有三輪評審,第一輪從225篇選出99篇,第二輪選出66篇,第三輪選出60篇進入程式委員會(PC)討論,在一天半的會議後決定最終被錄用的39篇論文。每篇被錄用的論文平均收到了8個評審意見,長達十幾頁。即使最終沒有被錄用,這些專家審稿人的意見對論文後續的改進也是很有幫助的。
內容提要
SIGCOMM議程
SIGCOMM上的中國面孔
Talk to professors!
SIGCOMM研究熱點
熱點1:高效能網路處理
- 體系結構之一:可程式設計交換機晶片
- 體系結構之二:FPGA
- 體系結構之三:多核CPU
熱點2:流量排程
- 資料中心擁塞控制與流量排程
- 廣域網流量工程
- 流量排程與經濟
熱點3:無線背向散射 (backscatter)
SIGCOMM論文是怎樣煉成的
SIGCOMM議程
今年是SIGCOMM會議第一次在南美洲舉行,選擇了奧運之國巴西。會議的開幕式恰好選在奧運會閉幕式的後一天,也就是8月22日。可惜,天有不測風雲,寨卡疫情讓與會者們很擔心,會議地點從東北部的大城市薩爾瓦多遷到東南部的小島Florianópolis。今年的SIGCOMM會議有五天,第一天和最後一天是workshop和tutorial,中間三天是single track的主會,每篇論文都做20分鐘的口頭報告和5分鐘的提問。同樣由於疫情的威脅,今年SIGCOMM破例允許遠端演講,即事先錄好演講影片現場播放,提問環節則透過Skype進行。21篇poster、18篇demo、12篇主會論文附帶的poster和8個工業界demo分為三批,穿插在主會三天的茶歇時間展示。
SIGCOMM會場外的沙灘和大西洋
本屆SIGCOMM會議錄用的39篇論文中,微軟參與其中的就有11篇。其中第一作者為微軟研究院的3篇(ClickNP、ProjectToR、Via),第一作者為微軟工程部門的2篇(Dynamic Pricing、RDMA),與高校合作的6篇(Domino、2DFQ、Control Plane Analysis、Don't Mind the Gap、WebPerf、NetPoirot)。
與往屆SIGCOMM一樣,微軟是網路學術界當之無愧的領導者。微軟一方面發表論文分享來自微軟研究院的“黑科技”(如ClickNP用FPGA實現網路功能)和資料中心運營經驗(如RDMA大規模部署中的問題);另一方面與高校共享來自大規模網路服務的真實問題和資料,便於高校找到真正重要的問題,做出有影響力的工作。
谷歌、Facebook、思科等網路巨頭今年也都有在SIGCOMM上發表論文。繼承往年的傳統,華為派出了十幾名員工的強大陣容參加SIGCOMM大會。思科在會場設定了招聘材料分發點,Facebook也邀請一些論文作者參與沙龍活動。
SIGCOMM上的中國面孔
今年SIGCOMM主會有兩篇論文來自中國大陸(微軟亞洲研究院的ClickNP和中科院的CS2P),兩篇論文來自中國香港(香港科技大學陳凱教授組的CODA和Karuna)。更為振奮的是,主會39個報告裡有14個是華人所作(其中12個是第一作者,2個是第二作者),聽起來倍感親切。
中國大陸學術界在poster和demo上的表現也很優秀。21篇poster中,就有8篇來自中國大陸。清華大學有3篇:PieBridge、SLA-NFV和FAST;西安交大有3篇:SDN編譯器、OpenFlow計數器和流表溢位問題;還有南京大學的Conan和國防科大的任務排程。18篇demo中,也有4篇來自中國大陸,包括清華的SDN源地址檢查、北郵的EasyApp、國防科大的FPGA深度包檢測和華為未來網路實驗室的ADN (Application Driven Network)。
參加poster session的部分華人合影
Talk to professors!
來開會之前,我也猶豫不遠萬里冒著生命危險來開會是否值得。論文都可以在網上看到,為什麼還要千里迢迢來開會呢?導師告訴我,開會是為了當面交流,認識朋友,尋求合作機會。在出發前和我結束自己論文的報告後,導師又反覆叮囑,要多跟教授交流,多認識朋友。
會議第一天的歡迎晚宴(Welcome Reception)沒有座位,所有人在大廳裡站著,吃著自助,跟周圍的人聊著天。第二天的會議晚宴(Conference Banquet),前一半時間也是吃著生蠔,喝著酒,四處找人聊天,後一半時間才是坐下來吃飯。會議組織者之一,阿卜杜拉國王科技大學的Marco Canini教授跟我們說,在會議上最重要的事情是什麼?Talk to professors!可惜我的英語口語不好,也不習慣老外的文化,大多數聊天還是在華人中進行的。儘管有時可以切換到中文模式或者覓食模式休息一會兒,一晚上給自己的論文做十幾次elevator pitch也是蠻累的。
歡迎晚宴
每天的早餐是酒店提供的自助餐,熱情的與會者們早飯的時間也在忙著四處搭訕,瞭解各自的研究方向,討論學術問題。這時我才發現網路學術圈子裡男女比例高得嚇人,餐廳裡經常只有一個妹子(服務員除外)。為了歡迎381位與會者裡20位左右的女生,本屆SIGCOMM還專門組織了一個N2Women晚宴。
每年SIGCOMM在會議晚宴之後,都會有一個笑話專場。今年講笑話的是Marco Canini教授,“釋出”了多個學術研究的應用。Instapaper,模仿Instagram的介面,paper上的圖一定要好看;Snaptract,摘要就是論文,如果30秒內沒有人對你的摘要感興趣,這論文就消失了;Trustnami,研究者聲譽和論文真正影響力的信任系統,每個引用可以是正面也可以是負面的,引用的權重是引用者的h-index;Menta,用網路領域大佬作為訓練集的AI,可以告訴你一個想法是不是新的,生成相關工作列表,對實驗結果給予評價,還能幫論文起好聽的名字,避免名字撞車。
會議晚宴
第三天的學生晚宴是在距離會議地點30公里的市中心的Ataliba餐廳,終於吃到了心心念唸的巴西烤肉!但我太沒經驗了,上來就吃了很多自助,烤肉吃到一半的時候肚子已經快要溢位了……說實話,跟國內的巴西烤肉沒太大區別。
學生晚宴
SIGCOMM研究熱點
接下來是學術時間,總結三個我在會議上看到的熱點研究方向:高效能網路處理、流量排程和無線背向反射(backscatter)。
熱點1:高效能網路處理
今年5月30日的全國科技創新大會上,緊接著習總書記的講話,華為總裁任正非說,“隨著逐步逼近夏農定理、摩爾定律的極限,而對大流量、低時延的理論還未創造出來,華為已感到前途茫茫,找不到方向……重大創新是無人區的生存法則。”
今年的SIGCOMM大會上,就有多篇論文致力於實現大流量、低時延的網路功能。資料中心網路的需求日新月異,網路功能的可程式設計性因而越發重要。在網路處理的效能和可程式設計性之間找到平衡點成為了研究熱點。
資料包處理的硬體體系結構大致分為三個方向:硬體加速器、網路處理器和通用處理器(如多核CPU、眾核CPU、GPU)。本屆SIGCOMM大會上比較火的硬體體系結構包括可程式設計交換機晶片、可重構硬體(FPGA)這兩種硬體加速器,以及多核通用處理器(CPU)。在程式語言方面,P4則快要一統江湖了。
體系結構之一:可程式設計交換機晶片
網路領域大佬、史丹佛大學教授Nick McKeown創立的Barefoot Networks公司今年釋出的可程式設計交換機晶片可提供每秒6.5 Tb的資料包處理速度,並獲得了Google等公司1.3億美元的投資。該可程式設計交換機晶片使用開源的P4語言程式設計,可以支援靈活的網路協議和轉發規則。
Anirudh Sivaraman提出的可程式設計交換機晶片架構(圖片來源:Domino slides)
今年SIGCOMM上麻省理工學院的Anirudh Sivaraman在網路領域新星Mohammad Alizadeh的指導下,在同一個session發了兩篇相關論文,大概是創下了SIGCOMM的記錄。第一篇是用C語言的一個子集(稱為Domino)編寫“資料包事務”來描述資料包處理的行為,編譯到稱為“原子”的指令集,該指令集實現在可程式設計交換機晶片內,每秒可處理10億個資料包,每條原子指令的延遲在納秒級以下。第二篇是在第一篇的基礎上,提出了任意位置入隊、順序出隊的通用佇列(PIFO),在交換機晶片上實現了可程式設計的資料包排程器。
使用可程式設計交換機晶片的一個例子是約翰·霍普金斯大學Zaoxing Liu的UnivMon,提出了一種通用的機率資料結構(universal sketch)來監控網路流量,如統計流量大小分佈、異常檢測、入侵檢測等,比基於取樣的流量監控更加細粒度,可以使用P4語言實現在可程式設計交換機晶片中。
體系結構之二:FPGA
微軟公司引領了FPGA在資料中心中應用的潮流。自2014年微軟研究院在計算機體系結構領域頂級會議ISCA上發表FPGA加速必應搜尋的論文後,微軟、百度等網際網路巨頭相繼把FPGA大規模部署在資料中心,加速深度學習、儲存、網路等應用。Intel公司以167億美元收購了FPGA行業巨頭Altera公司,希望把FPGA整合進CPU,繼續保持在資料中心等領域的優勢。
微軟採用FPGA加速網路功能(圖片來源:ClickNP slides)
在2015年的SIGCOMM大會上,微軟Azure網路部門總監Albert Greenberg獲得SIGCOMM終身成就獎,並在獲獎演講上宣佈了網路卡與FPGA整合的SmartNIC(智慧網路卡)。有了SmartNIC,我們可以把各種網路虛擬化應用的資料平面和一部分控制平面解除安裝(offload)到FPGA中,從而大大減輕CPU的負擔。今年SIGCOMM上我們的ClickNP就是基於這個SmartNIC平臺開發的一套框架,使用類C的高階語言模組化程式設計FPGA,並使CPU和FPGA能夠細粒度分工合作,使得軟體開發者可以輕鬆實現大流量(100 Gbps或每秒2億個資料包)、低時延(微秒級)的網路功能。
FPGA在網路領域的應用源遠流長,十多年前就有史丹佛大學開發的NetFPGA平臺,但FPGA硬體程式語言難寫、難調,大多數軟體開發者長期無法使用。ClickNP利用近年興起的高層次綜合(HLS)技術,使得軟體開發者可以像在多核處理器上一樣用高階語言程式設計FPGA。
ClickNP的程式設計模型(圖片來源:ClickNP slides)
細心的讀者也許注意到了,前面提到的麻省理工學院的論文也是把類C的高階語言編譯到硬體。他們是編譯到可程式設計交換機晶片的指令集,我們是編譯到FPGA。前者效能更高,但程式設計上受到的限制更多,適合用在交換機上;後者能夠實現更為複雜的網路功能,但FPGA時脈頻率就不如專用晶片,FPGA適合在伺服器上做防火牆、加密解密、負載均衡、流量排程等虛擬化網路功能的加速,同時還可用於加速機器學習等其他應用。
無獨有偶,清華畢軍教授實驗室的SLA-NFV也是結合使用FPGA和CPU來實現網路功能虛擬化。與ClickNP的做法略有不同,ClickNP是考慮到FPGA的高吞吐量和低時延,把網路功能優先放在FPGA上,不適合FPGA的任務放在CPU上;而SLA-NFV則是考慮到FPGA片上資源的限制,把網路功能優先放在CPU上,CPU不能達到預期效能的再用FPGA加速。
P4FPGA架構(圖片來源:P4FPGA slides)
本屆SIGCOMM大會上,還有多篇論文使用FPGA。康奈爾大學的
DTP(Datacenter Time Protocol)利用資料中心網路的物理層特徵來實現極高精度的時鐘同步。為了實現該時鐘同步協議,Han Wang同學寫了幾千行Bluespec程式碼來修改NetFPGA的物理層。透過這個專案“練手”之後,Han Wang又實現了一個從P4語言到Bluespec的編譯器,這個P4FPGA的工作發表在會議第一天的NetPL workshop上。P4語言與FPGA的結合也引起了工業界的重視,本屆SIGCOMM的工業界demo中展示了Xilinx公司從P4語言到NetFPGA SUME的編譯器。
在poster和demo環節,國防科大使用FPGA實現了60 Gbps的深度包檢測系統,基於Aho–Corasick演算法進行字串匹配,使用片外DRAM和片上快取來儲存有限狀態自動機(DFA)。西安交大利用FPGA作為OpenFlow計數器的fast path,在FPGA上只快取計數器增量,批次重新整理到CPU cache並壓縮儲存,減少了FPGA的記憶體開銷。
體系結構之三:多核CPU
CPU作為最通用的體系結構,在效能方面也不善罷甘休。近年來netmap和DPDK等高效能資料包處理框架運用多種工程最佳實踐,處理每個資料包平均只需幾十個CPU時鐘週期,單個CPU核每秒能處理逾千萬個資料包。這些最佳實踐包括輪詢取代中斷、使用者態驅動避免系統呼叫和記憶體複製、使用大頁和NUMA-aware記憶體分配減少記憶體訪問、資料結構對齊快取行、使用無鎖佇列、執行緒獨佔CPU減少程式切換、把資料包分片及計算校驗和等操作解除安裝到網路卡硬體。
今年SIGCOMM上,多篇論文和poster、demo利用DPDK在CPU上高效處理資料包。
PISCES把P4程式編譯到Open vSwitch(圖片來源:PISCES slides)
普林斯頓大學Nick Feamster組的PISCES把P4程式編譯成Open vSwitch(最流行的開源虛擬交換機軟體)中的C語言程式碼,解決了在Open vSwitch中增加功能的麻煩。以往在Open vSwitch裡新增一個TCP flag,需要修改20個檔案、370行程式碼。使用PISCES,只需修改4行P4程式碼。
Ericsson研究院的ESwitch提出了一個把OpenFlow(最流行的網路控制平面協議)編譯到x86機器碼的虛擬交換機架構。Open vSwitch的做法是快取已經建立的連線,對於快取未命中的資料包則存在流表查詢慢的問題,這也給拒絕服務攻擊開啟了方便之門。ESwitch的解決方案是讓交換機內的流表自動定製化。儘管使用者指定的OpenFlow轉發規則在一張功能複雜的大表裡,但ESwitch可以自動將這張大表拆分為若干張功能簡單的小表,每張小表只負責特定的匹配功能,整個資料平面的轉發效能提升了數倍至數百倍。
在demo環節,匈牙利Eötvös Loránd大學演示了從P4語言到DPDK和飛思卡爾網路處理器的編譯器,單核每秒可處理1千萬個資料包。
dpdkr poster
義大利Politecnico di Torino大學提出的dpdkr網路處理框架為DPDK增加了虛擬機器之間直接通訊的管道。該管道對應用程式和OpenFlow控制器完全透明,同一物理機的虛擬機器間通訊就可以繞過Open vSwitch實現加速。
熱點2:流量排程
從Van Jacobson在1988年的SIGCOMM上提出TCP擁塞控制協議,擁塞控制和流量排程就是網路領域經久不衰的古老話題。我的導師譚焜的一項重要發明就是CTCP擁塞控制協議,應用在Vista至今的Windows作業系統中。近十年來,擁塞控制和流量排程的研究重心從廣域網轉移到了資料中心。
資料中心擁塞控制與流量排程
虛擬化資料中心裡異構的應用(圖片來源:2DFQ slides)
資料中心裡的不同應用有不同的頻寬和延遲需求,例如響應搜尋引擎查詢顯然比後臺日誌備份更緊迫。為了用有限的頻寬滿足應用千差萬別的需求,伺服器需要決定以怎樣的速度傳送資料包,而交換機需要決定來自不同連線的資料包的排隊順序,以及有多條路徑的情況下資料包從哪條路走。這分別對應著擁塞控制、流量排程和負載均衡三個研究領域,發表了數以千計的論文,近年來也有越來越多的論文將這三個方面結合起來考慮。
琳琅滿目的擁塞控制和流量排程協議(圖片來源:NUMFabric slides)
花樣繁多的擁塞控制協議之間並不都是公平的,例如DCTCP和傳統TCP Cubic共享同一條網路鏈路的時候,DCTCP就會“蠻橫”地擠佔絕大部分頻寬。資料中心裡不同客戶的虛擬機器可能使用不同的作業系統和網路協議棧,如何保證它們之間的公平性呢?如果客戶的虛擬機器在使用老的擁塞控制協議,能不能不要求客戶升級就用上更適合資料中心網路的新協議?
擁塞控制協議的翻譯(圖片來源:Virtualized Congestion Control paper)
今年SIGCOMM有兩篇相似的論文獨立提出並解決了這個問題。其中一篇是史丹佛大學和VMWare的《虛擬化擁塞控制》(VCC),另一篇是威斯康辛大學麥迪遜分校和IBM研究院的《交流/直流TCP》。它們的思想都是在虛擬化層(虛擬交換機)裡對擁塞控制協議進行翻譯,把虛擬機器內採用的不同擁塞控制協議翻譯成統一的擁塞控制協議。這些翻譯方案包括直接讀取和修改虛擬機器記憶體、修改TCP頭、做緩衝、生成虛假TCP ACK、TCP代理等,VCC論文比較了這些方案的優劣。
擁塞控制的首要目標是保證網路連線之間的公平性,而流量排程的首要目標則是最大化網路作為一個整體的效益。在傳統擁塞控制協議中,源端根據網路擁塞的反饋資訊動態調整傳送速率,需要多次往返才能收斂到最佳傳送速率,在收斂之前網路頻寬不能得到充分利用。如果每個連線只有幾個資料包(例如訪問網頁),那麼網路頻寬的利用率是較低的。
史丹佛大學Mohammad Alizadeh研究組提出了一個收斂迅速的公平頻寬分配協議NUMFabric。在NUMFabric中,源端指定每條流的權重而非傳送速率,網路中的交換機透過加權公平佇列(WFQ)進行排程,這保證了網路在加權max-min意義下的公平性(即優先保證需求少的,不能被滿足的需求平均分享剩下的資源)。在此基礎之上,NUMFabric動態調整每條流的權重,快速收斂使得網路效益最大化。
理想排程和2DFQ、WFQ、WF2Q生成的排程(圖片來源:2DFQ paper)
加權公平佇列雖然保證了網路流量的公平性,但從應用的角度來看,流量可能變成了bursty的。如上圖(c)(d)所示,兩個大請求(如資料庫掃描)把兩個CPU核佔滿了,小請求(如資料庫主鍵查詢)被暫時餓了一會兒,小請求的延遲就會顯著升高。如果請求延遲可預測,理想的排程如圖(a)所示,讓一個核專門處理小請求,一個核專門處理大請求。微軟與布朗大學合作提出的2DFQ就是這樣一種排程策略。使用2DFQ後,在大多數請求的延遲可預測的情況下(不可預測的當作是大請求),微軟Azure雲端儲存的響應時間穩定了很多。
使用WFQ、WF2Q、2DFQ後的請求響應時間(圖片來源:2DFQ slides)
這篇論文的演講對WFQ的視覺化做得非常好,個人認為是本屆SIGCOMM最棒的一場演講,建議感興趣的讀者到SIGCOMM會議主頁下載其簡報(等影片釋出了看影片效果更佳)。
Coflow概念(圖片來源:CODA slides)
2012年,加州大學伯克利分校Ion Stoica研究組提出了Coflow的概念,即一個分散式任務由若干條並行的資料流構成,只有這些流都完成了,下一階段的計算才能開始。因此我們關注的不是每條流的完成時間,而是一組Coflow的完成時間。然而,軟體開發者需要修改現有的軟體來指定Coflow資訊。今年SIGCOMM上香港科技大學的張弘提出了CODA (COflows in the DArk),可以自動從網路流量中識別Coflow,並且其排程策略能夠容忍一定程度的識別錯誤,從而不再需要對現有軟體做任何修改。
流量排程領域的另一篇主會論文同樣來自香港科技大學陳凱教授研究組。資料中心裡一部分流是有完成期限的,另一部分流沒有。如果簡單地把有完成期限的流設為高優先順序,那麼其他流就會被餓死。陳力的Karuna論文提出,有完成期限的流並不需要佔用全部的頻寬,只需分配按期完成所需的頻寬,就可以把剩餘頻寬分給沒有完成期限的流,最小化無期限流的完成時間。
廣域網流量工程
以上幾篇都是資料中心內部的流量排程,跨資料中心的廣域網同樣需要流量工程(traffic engineering)。2013年SIGCOMM,谷歌的B4和微軟的SWAN分享了邏輯上集中式的大規模廣域網流量工程經驗。
eBridge(鵲橋) poster
今年SIGCOMM,清華大學張宇超與百度合作的PieBridge(鵲橋)系統使用中心化排程的P2P網路,實現了海量資料在異地資料中心間的高效同步。
華為ADN demo
華為未來網路研究院的ADN (Application Driven Network)是本屆SIGCOMM唯一搬了三臺工作站到現場的demo。他們把工作站放在行李箱裡,搬過來都累壞了。運營商網路中有多種型別的應用,每種應用有不同的服務質量需求(如高頻寬、低時延、保證頻寬和時延),需要若干種型別的網路資源(如無線、廣域網、資料中心網路)。ADN把物理網路分片為若干虛擬網路,把應用對映到虛擬網路,虛擬網路內使用定製的網路拓撲、路由協議和流量排程策略來滿足異構應用的服務質量需求。
流量排程與經濟
流量排程不僅是一個技術問題,同時也是一個經濟問題。本屆SIGCOMM大會上有幾篇論文從經濟的角度探索流量排程的新方向。
在跨資料中心的網路通訊中,客戶有什麼動機來標記出流量的真實優先順序、頻寬保證和完成期限呢?微軟公司調查發現,81%的廣域網客戶希望延遲傳輸來換取更低的價格;如果資料傳輸開始時就能獲得資費、頻寬和完成期限的保證,客戶可以接受動態定價。據此,Pretium提出了一套基於動態定價的流量工程策略,使得使用者在經濟上有動機標記流量的真實需求。
影片流量佔據了網際網路流量的很大一部分,一些網路運營商(ISP)違背了網路中立原則,悄悄對影片流量進行限速。今年SIGCOMM上,谷歌的論文調研了全球範圍內流量限速
(traffic policing)的普遍性和影響。在分析了谷歌CDN伺服器7天的270 TB流量、8億個HTTP請求後,發現大約7%的連線被限速了,被限速的連線丟包率是正常連線的6倍,顯著影響了影片播放的質量。谷歌建議網路運營商採用流量整形(shaping)取代限速,內容下載伺服器也要主動進行限速、pacing。
今年中科院、卡耐基梅隆大學和愛奇藝聯合發表的SIGCOMM論文與谷歌對內容下載伺服器的建議不謀而合。CS2P採用基於機器學習的端到端頻寬估計來選擇影片的最佳位元速率。在訓練階段,首先基於使用者會話(session)特徵進行聚類,然後在每一類中訓練隱馬爾可夫模型(HMM)來預測端到端頻寬。線上上,首先根據會話特徵所屬的聚類決定初始影片位元速率,然後根據反饋和HMM模型來動態調整位元速率。
Network Cookies的工作原理(圖片來源:Network Cookies slides)
史丹佛大學提出,與其要求運營商遵守所有流量一視同仁的網路中立原則,不如把差異化服務的選擇權交給使用者。只有使用者最清楚哪些應用需要什麼樣的服務質量。例如網盤同步和軟體升級一般是後臺流量,但急需某個檔案時又需要高優先順序;影片聊天則需要保證頻寬、儘量降低延遲。這篇論文提出了基於cookie的設計,使用者給每種應用的網路請求打上標籤,網路裝置根據這些標籤提供差異化的服務質量。
熱點3:無線背向散射 (backscatter)
今年SIGCOMM儘管只有5篇無線領域的文章,但其中有兩篇獲得了最佳論文獎(最佳論文共3篇)。
無線通訊比感測需要的能量多很多(圖片來源:Interscatter slides)
無線網路裝置的功耗往往是最大的問題,我們希望在降低功耗的同時,保持較高的資料傳輸速率。無線裝置功耗的主要來源是射頻訊號,因而近年研究者希望利用空間中無處不在的電磁波所攜帶的能量,也就是靠反射來傳遞資訊。
反射電視訊號通訊demo(圖片來源:Youtube Ambient Backscatter demo)
2013年,華盛頓大學的研究者收集和反射環境中的電視訊號,實現了無電源裝置的短距慢速通訊,獲得了當年SIGCOMM最佳論文獎。這種裝置從訊號中收集百微瓦級的能量來驅動晶片執行,把資訊編碼在收集到的訊號上再發射出去。需要一個專門的閘道器裝置來接收和解碼。2014年SIGCOMM,該團隊把反射電視訊號的通訊速度提高了100倍,傳輸距離提高了8倍。
同樣是在2014年SIGCOMM,該團隊開發出了反射WiFi訊號進行通訊的技術,可以透過調製WiFi頻道,與市售的WiFi接入點進行慢速通訊,不再需要專用閘道器裝置。2016年的NSDI上,該團隊進一步發明了被動WiFi(Passive WiFi),透過反射環境中持續發射的訊號,被動WiFi可以比普通WiFi晶片低1萬倍的功耗,按照標準802.11b協議與市售WiFi接入點通訊。被動WiFi的原型最初在FPGA上實現,隨後製成晶片,目前已經商業化。
Interscatter的應用場景(圖片來源:Interscatter paper)
今年SIGCOMM會議,華盛頓大學的最新黑科技Interscatter是在不同種類的無線協議之間實現反射通訊,僅使用市面有售的裝置,不再需要被動WiFi中持續向環境中發射訊號的裝置。這樣植入裝置就可以反射藍芽訊號來生成WiFi訊號,實現上圖所示的三種科幻場景:(a)隱形眼鏡測量醫學特徵,(b)腦機介面,(c)信用卡之間透過反射手機藍芽訊號來通訊。藍芽裝置傳送單頻藍芽訊號,Interscatter裝置將單頻訊號反射到載波頻率的單側,生成802.11b WiFi載波,並將資料調製於其上。類似以前的工作,這次也是用FPGA實現的原型。
馬薩諸塞大學的張鵬宇和胡盼等也在今年SIGCOMM上發表了用於低功耗感測器的實用反射通訊技術FS-Backscatter。針對反射訊號與原訊號互相干擾的問題,Interscatter的解決方案是把藍芽訊號反射到WiFi頻段,而FS-Backscatter的解法是把訊號反射到相鄰的空閒頻段。FS-Backscatter實現了WiFi和藍芽兩種協議的反射通訊,與Interscatter一樣不需要額外的硬體裝置。
主動、背向散射、被動三種無線通訊方式的比較(圖片來源:Bradio slides)
胡盼和張鵬宇等在今年SIGCOMM上還有另一篇論文Bradio,考慮到不同裝置電池容量的天壤之別,在傳統的主動無線電、反射通訊和被動接收之間動態切換,節約。主動無線電傳送和接收方都很耗電,訊號傳輸距離較遠。反射通訊的傳送方很節能,但接收方很耗電,且只適用於近距通訊。被動接收則與反射通訊的耗電情況剛好相反,訊號傳輸距離較遠。Bradio基於裝置電量和通訊距離來選擇無線電的工作模式。
在結束SIGCOMM研究熱點部分之前,我想最後分享一篇微軟研究院的黑科技:ProjectToR。在傳統資料中心網路中,機櫃之間的網路連線是固定的,大多數機櫃之間的連線頻寬閒置,而少數機櫃之間的連線頻寬不夠用。因此,近年SIGCOMM有多篇論文提出可重構的資料中心機櫃互連方案。其中2010年的Helios和2013年的Mordia使用光交換機,2011年的Flyways和2012年的3D Beam forming使用60 GHz無線電,2014年的FireFly和今年的ProjectToR使用自由空間鐳射通訊。
ProjectToR原理示意(圖片來源:ProjectToR slides)
ProjectToR的科幻之處在於,它使用電子微鏡裝置(Digital Micromirror Device,DMD)來反射鐳射。DMD由數十萬個10微米大小的鏡片陣列構成,每個鏡片方向固定,由記憶體的值決定是否反射光線。因此修改記憶體的值,就可以修改DMD的反射方向,就像鏡子轉了一個角度。每個機櫃頂上有若干個鐳射發射和接收裝置,懸在資料中心上空的DMD改變反射方向,可以建立任意兩個機櫃之間的光通道。ProjectToR把一部分鐳射器做成固定網路拓撲,另一部分鐳射器用來做動態調整的機會(opportunistic)連線,並設計了在這種動態網路拓撲上的路由和流量排程演算法。
SIGCOMM論文是怎樣煉成的
雖然我是ClickNP這篇SIGCOMM論文的第一作者,第一個在會議上作口頭報告,但我的導師譚焜研究員應當得到更多的榮譽。
2013年5月,我面試加入中科大與微軟亞洲研究院聯合培養實習生專案。該專案每年在中科大招收20名左右大三學生參與為期一年的實習,本科畢業論文也是在微軟完成。兩個月的實習後,選拔7人左右成為聯合培養博士生。聯合培養博士生第一年在中科大上課,後面四年在微軟亞洲研究院做研究。大四這一年,在無線與網路組資深研究員譚焜博士的指導下,我參與了一個虛擬化網路功能的研究專案,提出了一個可程式設計路由器上的容錯軟體框架,探索了可程式設計路由器的流表翻譯問題。這三項研究並沒有發表論文,但讓我打下了資料中心網路、網路功能虛擬化和可程式設計路由器的知識基礎。
命運總是難以預料。加入聯合培養專案的時候,我絕對不知道,博士期間會做FPGA程式設計方面的研究。2015年7月,當我結束研究生一年級課程,回到微軟亞洲研究院繼續聯合培養博士生專案的時候,譚焜導師對我說,你來負責ClickNP這個專案。他已經設計好了ClickNP的基本元件(element)和管道(channel)的抽象,甚至親自編寫了1000行編譯器程式碼和幾個element。我們組的FPGA專家羅臘詠博士也基本摸清了Altera OpenCL這個高層次綜合(HLS)工具的脾氣,並編寫了一個發包工具。導師安排我和兩位大四的同學,中科大計算機系的羅人千和上海交大ACM班的彭燕慶,一起來做這個專案,幾乎是投入了我們組一半的實習生來做ClickNP。北航的賀同師兄負責整合PCIe channel到OpenCL框架裡。
ClickNP專案的成功,團隊的努力固然重要,但也要考慮到歷史的行程。通用處理器的摩爾定律遇到了瓶頸,資料中心的計算規模、使用者需求的靈活性卻與日俱增。微軟資料中心的解決方案是可程式設計硬體,即FPGA。微軟開發了一套Catapult Shell作為FPGA的作業系統,加速必應搜尋、網路、儲存等,並把研究成果透過多篇論文共享給學術社群。微軟Catapult團隊也與Altera合作開發了適用於Catapult Shell的OpenCL BSP,以便使用Altera OpenCL框架程式設計FPGA,這是ClickNP專案的基礎。
微軟Catapult專案主頁
譚焜導師對我們的指導是循序漸進的。一開始,他讓我們把羅臘詠博士寫的發包工具移植到ClickNP上,做成ClickNP上的第一個應用。這個工作看似簡單,但具體做起來卻遇到了麻煩。OpenCL工具尚不成熟,經常遇到一些bug,我們就把踩過的坑記錄在文件裡。
第二階段,導師指導我們分頭實現各種網路功能。羅人千負責雜湊表。彭燕慶負責編寫一個功能強大的發包工具。我負責給編譯器增加新的語法糖、從Click重構一些基本元件。
雜湊表是我們實現的第一個有狀態的網路應用。由於我們對OpenCL編譯器的原理尚不瞭解,一段程式碼稍微做些修改,效能就變得很差。我就做了一系列的microbenchmark,總結出一些編寫高效能OpenCL程式碼的指導原則,後來其中的一些原則被寫進編譯器,實現了自動最佳化。
實現TCP校驗和的時候,由於讀完整個資料包才能計算出校驗和,而校驗和需要填在資料包頭部,這就需要把整個資料包快取在element內部。我們一籌莫展之際,譚焜導師想出了把兩個element用兩條channel對接,把資料包快取在channel裡的設計,巧妙地解決了這個問題。為了達到預期效能,兩條channel需要能夠同時讀寫,於是我們做了對ClickNP語言迄今最大的修改,放棄了直接函式呼叫的做法,寫了一個簡單的C語言語法解析器來生成中間C程式碼。
第二階段結束已經是九月份,我們開始分頭實現新的網路功能。羅人千負責查詢表,包括IP地址字首匹配和TCAM,做成一個OpenFlow防火牆。TCAM在FPGA中非常耗資源,受到大四在微軟實習期間瞭解的ServerSwitch的啟發,我設計了HashTCAM。彭燕慶負責實現網路虛擬化的加速,即NVGRE隧道協議的封裝和解封裝。我繼續順應團隊的需求給編譯器新增語法糖,探索在OpenCL裡使用片外DRAM,實現限速功能和抓包功能。十月中旬這些功能完成時,我們感覺實現快做完了,可以開始寫論文了,但導師說我們還差得遠。
這段時間裡,我們透過Xilinx的培訓瞭解了Vivado HLS,也掀起了一陣用OpenCL還是用HLS的爭論。最終我們發現OpenCL的程式設計模型並不適合ClickNP的流式資料包處理,從而決定把ClickNP做成跨平臺的框架,不依賴於OpenCL的程式設計模型,後端既可以是Altera OpenCL也可以是Vivado HLS。
ClickNP架構
第四階段則是實現更多的網路功能。有了更方便的ClickNP語法、庫裡更多的elements,我們寫程式碼越來越得心應手,開發一個網路功能的時間從一個月縮短到了一週。羅人千繼續最佳化防火牆,彭燕慶實現了基於sketch的埠掃描檢測(沒有寫入論文),我實現了IPSec資料平面所需的AES和SHA-1協議,以及pFabric資料包排程器。
這個階段,高效能的CPU與FPGA間通訊是個意外收穫。PCIe channel最初的設計是停等協議,只是用來實現CPU給FPGA發控制訊號,但我發現它的傳送和接收鏈路事實上是全雙工的,只要稍作修改就可以變成流水線方式,不僅提高吞吐量,而且允許FPGA主動向CPU傳送訊息。我與賀同學長一起實現了全雙工的PCIe channel,我還在CPU和FPGA上的執行時庫裡增加了自動batch的功能,高負載時batch大,吞吐量高;低負載時batch小,延遲低。
譚焜導師把這個通訊機制拔高到了principle的高度,提出了CPU element的概念,一個element既可以編譯到CPU又可以編譯到FPGA,兩邊的element還可以高效通訊,ClickNP多了一項區別於其他FPGA資料包處理框架的明顯特徵。SIGCOMM論文的多條評審意見表達了對FPGA/CPU聯合處理的讚賞:
- I like the ability to communicate rapidly between SW and HW, and to move functionality across that boundary.
- Very nice modularization design using elements and host <-> FPGA PCIe channels.
- Of particular note is the support for partitioning work between the CPU and the FPGA such that each can be utilized for the tasks best allocated to them.
第四階段結束已是12月,距離截稿日期一個月,我們的evaluation還沒有做。導師希望做一個能體現高效能CPU與FPGA通訊的應用,最後選擇了四層負載均衡器,把每條新連線的後端伺服器分配邏輯放在CPU上。
ClickNP四層負載均衡器與Linux Virtual Server效能的比較(縱軸為對數座標)
第五階段,也就是evaluation,一是測量CPU上網路功能的效能,二是測量ClickNP在FPGA上的效能,三是測量每個element相比CPU的加速比、相比NetFPGA原生Verilog的資源開銷。我們大大低估了這個階段的工作量。首先,FPGA編譯一遍就要幾個小時,發包、測效能的程式經常需要修改。其次,我們沒有DPDK的經驗,花了不少時間搞清楚它的效能瓶頸,以及讓DPDK+Click支援多核並行。再次,在配置StrongSwan的時候遇到了一些困難。最後,實現NetFPGA裡面的網路功能、編譯NetFPGA SUME程式碼也是一件麻煩事。
由於對時間預估不足,大多數應用的結果圖也是最後一週才做出來的。由於當時沒有找到負載均衡器對大資料包偶爾發生死鎖的原因,我們只好全部用小包來做實驗,在最後一天夜裡匆忙做出結果圖。導師告誡我們,以後實驗結果圖要儘早做出來,做實驗前先想清楚這張圖想說明什麼,有些實驗根本沒必要做,有些實驗做不出來也無傷大雅。
最後兩週,譚焜導師仔細揣摩詞句、撰寫論文。很慚愧,我還不能寫出SIGCOMM水準的文字。其中“最佳化”一章,兩頁紙的內容,導師反覆思考修改了五天,我也急中生智想出了delayed write的新最佳化方法。SIGCOMM的評審意見中,這一章也是被評論最多的,可見這章內容的確引起了審稿人的興趣。
SIGCOMM截稿的那一刻,ClickNP的程式碼倉庫剛剛突破一千個提交,約兩萬行程式碼。全組的合作者忙了八個月,大概做了三件事:第一,設計實現了ClickNP語言和工具鏈;第二,設計實現了近百個FPGA上的高效能網路功能模組;第三,設計和評估了五個FPGA加速的網路應用。如果說還有什麼創新,就是在FPGA和CPU之間細粒度的分工和高效能的通訊。儘管ClickNP是第一個在FPGA上用高階語言實現通用網路功能的高效能程式設計框架,我還是很慚愧,只是在現有HLS工具的基礎上做了一點微小的工作,FPGA高階語言程式設計仍然存在諸多困難。
準備SIGCOMM演講的時候,導師組織了三次全組的排練,每頁slides都給了很多建設性的意見。除了譚焜導師,從未有人在演講方面給我如此細緻的指導。
我在微軟學生技術節上向洪小文院長演示ClickNP
今年7月,ClickNP在微軟學生技術節上獲得了微軟全球資深副總裁、微軟亞洲研究院院長洪小文博士的好評,並獲得最佳演示獎。8月,基於ClickNP平臺的“HTTPS加速器”專案獲得微軟Hackathon“Cloud & Enterprise”組全球第二名。在SIGCOMM大會上,ClickNP不僅被安排為第一個口頭報告,還被同一個會議上的兩個口頭報告和另一篇論文引用。
今年SIGCOMM終身成就獎得主Jim Kurose在獲獎感言中說,選擇研究課題的時候要想清楚在解決什麼根本問題,這個問題未來五到十年會有多少人關心,你的優勢又在哪裡。我認為用可程式設計硬體加速資料中心這個課題很符合Jim Kurose的選擇標準:通用處理器的效能瓶頸呼喚新的體系結構,新的體系結構呼喚程式語言的創新;微軟作為FPGA加速資料中心領域的先驅,為學術界和工業界開闢出一片藍海。儘管FPGA不是萬能藥,使用中也存在諸多困難,我還是對這種高度並行和高度靈活的體系結構充滿希望。在SIGCOMM演講的結尾,我用了一句口號:Across the memory wall and reach a fully programmable world.