橙姐導讀:隨著云規模的不斷擴大,以及業務層面對時延和帶寬的要求越來越高,使用DPDK加速網絡數據包處理的方法在縱向和橫向擴展上都存在局限性。 可編程芯片已成為業界的熱門話題。 本文主要介紹可編程網卡芯片在滴滴云網絡的應用實踐、遇到的問題、帶來的利潤以及開源社區的貢獻。
1.
數據中心面臨的問題
隨著滴滴云規模不斷擴大,業務層面對時延、帶寬的要求越來越高。 2018年,滴滴云網絡團隊基于開源社區推出了OVS-DPDK解決方案。 DPDK 是用于在 X86 平臺上快速處理消息的庫和驅動程序的集合。 它的主要優點是通過Linux內核、顯存和PMD()模型驅動來實現加速。 我們為OVS-DPDK提供在線熱升級功能,保證升級過程中虛擬機服務無感知,網絡時間在微秒級。 同時,我們對OVS-DPDK數據轉發平面進行了優化。 為不同化學主機上的虛擬機實現了網絡延遲)
滴滴內部云接入、高性能計算HPC、機器學習對網絡提出了更高的要求。 通過處理消息的形式在性能和延遲方面遠遠優于基于Linux內核的轉發實現。 然而早已無法滿足數據中心流量劇增帶來的需求。
2.
技術方案選擇
在云網絡環境下,估計節點DPDK不會占用太多CPU,否則會影響CPU銷量物理網卡mac怎么修改,通常使用1-2個CPU進行數據包處理。 同時物理網卡mac怎么修改,DPDK處理數據包的性能強烈依賴于CPU的計算能力。 因此,估計節點網絡的縱向擴展和橫向擴展都存在局限性。
在邊緣網段節點,我們可以通過擴展服務器來增加網絡處理能力,以滿足業務需求。 而且服務器的大規模擴容需要更多的機器、功耗和運維成本。
軟件定義網絡(SDN)是一種新的網絡創新架構,也是網絡虛擬化的一種方法。 其核心思想是將網絡設備的控制平面和數據平面分離。 控制平面可以通過集中控制實現不同的業務邏輯:拓撲發現、路由管理、安全策略、網絡虛擬化等。數據平面更專注于數據包轉發。 在 AWSre: 2018 上,AWS 推出了 Nitro。 系統通過硬件芯片加速虛擬機IO處理(網絡、存儲、安全等)。
目前業界加速網絡處理的重點在硬件層面:AISC、FPGA、P4、可編程網卡、智能網卡等。
3.
基于可編程芯片的解決方案
▍3.1 硬件芯片選型
傳統 AISC 卡
該卡相對成熟,但業務邏輯固定,難以適應云上復雜的業務場景。
可編程門隊列 FPGA
FPGA實現網絡加速需要專業的FPGA技術人員,以及專業的網絡研發人員。 同時,成本和開發周期必然有一定的限制。
P4
P4具有靈活的可編程性,更適合網段節點的數據處理。 它不適合在估計節點中使用。 同時,價格也是一個考慮的誘因。
可編程網卡芯片
通過檢查發現,可編程網卡不僅具有通用網卡的功能,還可以實現報文匹配,并對報文進行特定操作,如:修改、封裝、轉發、上報等通過發布流表規則。 文本到CPU等。這些靈活可編程的硬件芯片可以滿足快速迭代的需求。
▍3.2 轉發模型
為了滿足網元業務靈活性和多樣性的要求,我們將網元業務與底層平臺功能分離,放棄傳統的數據平面轉發模型,采用類似于的macth+的形式。 這樣,不同的匹配規則、不同的匹配就可以實現不同的業務邏輯。 這些弱依賴關系能否剝離業務和底層細節,方便業務功能迭代,快速上線,同時底層可編程芯片的更新不會影響業務邏輯。
▍3.3 網絡平臺化
隨著云上業務場景的復雜化以及使用云的客戶數量的不斷增加,云上網絡的功能也變得更加復雜。 為了統一估計節點和網段節點的功能,我們實現了統一的編程框架。 這樣可以快速開發不同功能的網段節點,減輕運維負擔。
▍3.4 落地練習
我們基于OVS-DPDK框架實現流表規則。 OVS以第一條消息觸發的形式發送硬件流表規則。 這種方式的優點是需要的時候才下發規則,達到保存流表的目的,缺點是首條消息會有延遲。 經過檢查,我們發現網卡至少支持百萬級流表(使用x86顯存或者其他擴展顯存),最后我們放棄了OVS-DPDK轉發層,使用dpctl套接字下發流表,這樣就沒有第一條消息的延遲問題,也減少了使用TC時數據平面過多的問題(那些轉發平面包括:硬件芯片轉發、TC數據平面、內核模塊轉發、層)。 我們更改了OVS-DPDK流表老化方法,以確保通過dpctl下發的規則不會被刪除。 最后,消息處理受到限制。
滴滴云的網絡數據面主要分為兩部分:估算節點和網段節點。 估算節點主要負責虛擬機和容器網絡的虛擬化,網段節點主要負責各種邊緣節點服務如:SLB負載均衡、EIP包處理、分流器、SNAT、云企業網等。可編程網卡芯片通過平臺方式應用于兩個主要節點。
SLB負載均衡
提供四層負載均衡,根據用戶策略將網絡報文分發到虛擬網絡服務節點。
提供彈性EIP服務。 用戶可以將網段IP地址綁定到虛擬機、容器或裸機上,以獲得網段訪問功能。
通過連接滴滴數據中心和滴滴云虛擬網絡,滴滴數據中心可以方便快捷地訪問云端資源。
網絡地址轉換
提供虛擬機、容器、裸金屬的接入網段服務。
云企業網絡互聯
互聯服務支持將滴滴云上的多個VPC網絡添加到云互聯中,任意兩個VPC網絡都可以實現資源之間的相互訪問。
估計節點
估算節點上主要有兩種應用場景:一種場景是為估算節點上的虛擬機和容器提供VPC服務(網絡隧道、限速、轉發、換包、網段服務)和RDMA網絡。 另一種場景是使用智能網卡為裸金屬提供VPC服務。
▍3.5 遇到的問題
在調研開發過程中遇到諸多問題,在這里和大家總結分享下:
OVS-DPDK 支持有限
首先,OVS社區對DPDK套接字()的支持有限:實現極其有限。 用戶需要獨立完成開發:如設置、計量、vxlan隧道報文處理等。
端口轉發限制
目前網卡芯片不支持從芯片的一個PF端口到另一端口的轉發。 最后我們通過SRIOV+方法解決了這個問題。 據了解,后續網卡芯片開始支持該功能(該功能也受到固件的限制)。
打開崩潰
當包含儀表流表的規則被刪除時,OVS進程退出。 這個問題確實是DPDK的一個bug。 目前該問題已修復,發送至社區并已接收。
調用 套接字會導致崩潰。 目前該問題已修復,發送至社區并已接收。
更改 OVS 配置導致 被刪除。 目前該問題已修復并發送給社區并已接收。
儀表
OVS社區并沒有實現這個功能。 我們根據業務特點創建了一個,并在OVS中實現了一個meter。 該系列補丁文件正在OVS社區發布,即將上線。
Decap/Encap 流表限制
早上下發多條帶decap/encap的流表規則報錯。 這個問題最終確實是DPDK的一個bug,而且這個問題已經被修復了,并且已經和社區合作修復了。
開蓋+儀表限制
使用 decap+meter 作為交付規則時失敗。 這個問題最終確實是DPDK的一個bug。 目前該問題已經修復,社區正在共同修復 id=
性能問題
在高并發的情況下,網卡芯片的性能會提升40%左右,最終確認是網卡驅動的問題。 目前該問題已得到確認并給出修復方案。
流表限制
通過移除流表蓋來修復問題:
MAC地址對VxLAN的影響
化學主機的源MAC地址改變后,vxlan報文仍然使用原來的MAC地址,會導致收不到響應報文:
編號=
多次修改消息不生效的問題
使用多次更改消息,但問題不生效。 最后確認是內核驅動問題:
編號=
和mac配置不當導致=
編號=
▍3.6 性能數據
以實現的彈性網段為例(基礎網絡):
每秒(64B)
Mpbs(64B)
每秒(1500B)
兆比特(1500B)
8660.25
10067.98
服務延遲數據如下(使用-dpdk):
背景流量
段延遲
10W流表,并發流量
3你
10W流表,并發流量
6u
4.
開源社區貢獻
不僅為開源社區提供,我們還會向開源社區反饋新功能和性能優化補丁:OVS、DPDK、Linux內核社區(約80+個補丁),Linux內核補丁列表如下如下:
團隊介紹
?
滴滴云平臺事業群滴滴SDN網絡團隊負責云網絡產品的規劃、設計和開發。 為公有云提供負載均衡SLB、私網VPC、彈性網段EIP、SNAT、云互聯等服務。 團隊在Linux內核網絡虛擬化、DPDK、OVS、可編程芯片、RDMA、智能網卡、云網絡業務需求的系統優化等領域有著廣泛而深入的研究。 團隊擁有多個開源社區,涉及OVS、DPDK、Linux內核等。
關于作者
?
專注高性能網絡技術,從事云網絡研發。 活躍于 Linux 內核、OVS 和 DPDK 開源社區。
