1. 程式人生 > >FPGA用於資料中心的網路加速

FPGA用於資料中心的網路加速

      沒在BAT這些資料中心的大廠工作過哈,從看過的論文以及邏輯推理,推測在資料中心,FPGA可以做哪些網路加速。

1. OVS的在資料中心的應用場景

        一種應該主要解決伺服器中VM間的通訊問題,包括伺服器內部VM通訊以及VM與外部VM間通訊,實現後可以讓VM遷移時比較方便,而且VxLAN支援的標籤數比VLAN大很多,可以讓邏輯網路overlay在物理網路上。不過這個事情現在支援VxLAN的交換晶片或者支援P4可程式設計的barefoot晶片也能支援。但有一類問題中間的交換裝置很難解決,那就是端到端的QoS,在流量未擁塞時就減少流量傳送。

資料中心的網路加速可以考慮解決3類問題:

      1)VxLAN的交換實現。

      2)QoS相關的問題(延時、延時抖動、及頻寬分配),流量統計,以及根據統計結果控制整網的資料流向。

      3)虛擬化支援,這個是資料中心最大的特點,每個節點或者整網都在做虛擬化的事情。

2. FPGA在裡面做什麼

        因為FPGA本質上是實現某種場景的晶片方案,所以他主要處理資料面的事情。在OVS中主要就是快路徑的處理。

主要功能

1)介面:物理口及虛擬口(對應虛擬機器或者容器);

2)OVS快速路徑的表項cache, 掩碼錶、流表、組播出口表;

3)QoS:物理口入口支援PFC,出口支援ETS;虛擬口支援限速;如果做的好,可以支援基於流的限速。

4)隧道封裝解封裝:VXLAN/NVGRE/GENEVE隧道封裝、解封裝;

5) Action動作支援因為是報文處理,所以需要支援各種報文頭欄位修改,替換等,語義可以參考openflow。

3. 設計上要解決的一些問題

    大體可以分為快取管理和業務處理。

    1)PCIE/DMA:支援SR-IOV,控制器要支援VF功能,邏輯要做VF配置暫存器的應答。支援虛擬化不僅僅是PCIE配置空間支援VF,還要考慮其他公共資源的通道隔離,可以方便進行虛擬機器對應虛擬網絡卡的建立和拆解。除此之外還要考慮通道間的排程是否公平以及對延時的影響

    2)OVS快路徑解除安裝

        其實就是parser、Match、Action的設計:

         Parser就是根據支援的報文做解析。

        Match其實就是雜湊演算法以及Match表項中資料結構的設計,匹配欄位、Action動作入口、QoS相關策略等(FPGA缺少TCAM這類資源)。提升效能的關鍵就是:減少每個條目數的長度;可以通過索引到內部RAM的方式來做;減少DDR的訪問次數。

         Action就是根據要求進行報文修改了。(避免Action後報文分片行為)

    3)QoS及流量統計,相關排程演算法實現

         這個要結合快取管理。簡單的就是埠上的PFC。複雜的可以做基於流的頻寬限制。

        難點:流的條目數增加時如何設計。

   4)快取設計

        如何配合使用內部RAM和外部DDR,以及表項和報文如何使用內部RAM和DDR,這個牽涉到延遲大小、峰值頻寬。

         批量及隨機訪問:比如DDR4,批量讀寫時效能很好,隨機短包效能很差

         快取在內部RAM,要考慮會不會太小,比如報文的處理週期長,內部快取會溢位,但放在DDR4中要查表,又要存報文,             一 進一出,可能頻寬不足。

         DDR的地址分配:儲存空間分配到不同bank,實現interleave,可能效能會好些。