1. 程式人生 > >UCloud基於P4交換機的雲平臺網路實踐

UCloud基於P4交換機的雲平臺網路實踐

自2012年UCloud成立起,虛擬網路始終是IaaS產品的一個核心元件,也經過了多次演進。演進中我們始終思考的是:如何在不增加使用者成本的情況下為使用者提供更可靠、更快速的網路。而答案則是要求技術團隊不斷採用新技術,來同時滿足租戶隔離、轉發能力、穩定性等多種需求。

我們最早的SDN方案在轉發面是採用Open vSwitch(以下簡稱OVS)來實現,控制面是自研的控制器。期間亦首先採用盛科的SDN交換機,來解決物理機(bare metal)和公有云之間的互訪需求。為解決SDN交換機OpenFlow流表條目有限的問題,UCloud開始採用DPDK技術的閘道器叢集來替代SDN交換機。經過實踐檢驗的各種DPDK閘道器,越來越多地出現在UCloud的雲平臺中,為使用者提供更快速的網路能力。

DPDK的不足

隨著2017年25G網路開始迅速被採用,對UCloud的虛擬網路又提出了更高的挑戰。在此背景下,DPDK也逐漸暴露出了一些不足:

  • – 基於DPDK的應用可以達到很高的包轉發速率,但這是通過多伺服器、多核負載均衡實現的。且負載均衡演算法通常是由硬體交換機或者網絡卡實現的,並不能被軟體定義。如果網路中出現單個大象流,無法被硬體交換機或者網絡卡的負載均衡演算法很好的分發,就會造成單根網線或者單個CPU Core出現擁塞,對業務造成巨大影響。
  • – 隨著網路頻寬從10G向25G、40G、50G、100G的演進,DPDK需要更強力的CPU才能夠達到線速,而更強力的CPU通常價錢也很昂貴,不利成本。特別是單Core的主頻越高,價格越貴,且主頻增加之間和價格增加是非線性關係。

兩個被排除的方案

2017年中UCloud開始對新的SDN硬體解除安裝方案做評估:

首先進入我們視野的是基於VXLAN VTEP的解決方案。此類方案通常由交換機廠商提供包括SDN Controller在內的整套解決方案,比較適合私有云的環境部署。但缺點也很顯而易見:封閉、非標準化、無法定製。通常使用者只能通過北向廠商特有的API方式和此類方案進行互動。且此類方案通常只支援10w左右的虛擬網路MAC地址,很難滿足UCloud的業務需要。此外UCloud對基於Ethernet Over GRE(Linux GRETAP)的Overlay封裝有需求,但沒有一家硬體交換機支援該Overlay協議。

接下來我們又把目光投向了支援OpenFlow 1.3協議的硬體交換機。經過一番預研和測試,我們發現支援OpenFlow 1.3協議的硬體交換機和OVS間存在著巨大的GAP。實際上不可能把我們的OpenFlow流表移植到硬體交換機上。除了同樣不支援Ethernet Over GRE協議外,我們OVS上使用的Flow Based Tunneling特性也沒有硬體交換機支援。

P4進入視野

2017年Q4,我們開始預研Barefoot的支援P4的可程式設計交換機(Tofino晶片),很快發現了它能夠很好地滿足我們的需求。

提到P4和Barefoot就不能不提Nick Mckeown教授。2007年Nick和夥伴們一起創立了Nicira Networks公司,也幾乎標誌著“軟體定義網路(SDN)”這個產業的誕生。Nicira作為OpenFlow的大本營,接連發布了NOX和Open vSwitch作為OpenFlow的重要元件。

2012年VMware收購Nicira後,Nick認為SDN的第二步則是發展為它專門優化的硬體裝置,又和同伴共同發起了對資料包進行處理的程式語言P4(Programming Protocol-Independent Packet Processors),幫助網路使用者擺脫被晶片硬體廠商各種協議的制約。

– P4在設計上具備如下優點:
– 可靈活定義轉發裝置資料處理流程,且可以做到轉發無中斷的重配置。
– 轉發裝置協議無關轉發。
– 裝置無關性。

2013年Nick成立了Barefoot Networks公司,致力於開發基於P4的網路晶片Tofino和軟體開發套件Capilano,並幫助P4社群發展壯大。

Barefoot支援P4的可程式設計交換機(基於Tofino晶片),具備如下優點:

– 相對DPDK更高的轉發效能
– 1.8T ~ 6.5T線速轉發
– 更低時延
– 單線最高100G,避免單線擁塞
– 轉發效能可預期,DPDK的轉發效能隨業務模型可能變化
– 相對其他硬體交換機,更開放
– 可程式設計能力強,轉發面p4lang定製開發
– 完美解決Ethernet Over GRE和Flow Based Tunneling的問題
– 開發效率高
– 控制面可通過Apache Thrift、gRPC介面遠端管理
– 作業系統採用 Open Network Linux(基於Debian)
– 生態圈:P4 Runtime、Stratum

P4 Switch架構

1.控制面實現

最初我們準備修改Barefoot提供的switch.p4來實現我們的功能,但嘗試閱讀程式碼後發現switch.p4雖然完整的包含交換機所需要的功能,但很多特性我們並不需要,所以我們沒有選擇修改、裁剪switch.p4,而是自己從頭開始寫一個更符合自身需求的控制面。

NOS這層參考我們之前開發DPDK程式的經驗,完全通過Linux來實現。P4程式碼會把所有非Ethernet Over GRE封裝的報文當做控制報文送到CPU口。CPU口在Linux上就是一個虛擬網絡卡,報文再通過Kernel轉發到hostif的虛擬網絡卡上。hostif的虛擬網絡卡上配置IP地址,ARP學習等功能都通過Linux Kernel來實現。Quagga等Userspace的程式就通過hostif虛擬網絡卡上的IP和上級路由器跑BGP,再將學習到的路由寫到Kernel的路由表。我們直接開發的APP模組以bf_switchd外掛的方式載入,通過netlink介面學習Kernel的ARP表、路由表,呼叫P4程式碼編譯後生成的API寫入Tofino晶片。

Controller這一層最早我們是通過P4編譯器生成的Apache Thrift介面將資料下發到bf_switchd,然後寫入Tofino晶片。但通過簡單的效能測試發現,由於Apache Thrift介面設計的限制,每次RPC呼叫只能配置一條資料,因此需要配置大量資料時效能很不理想。為此我們在APP模組中啟動了gRPC server,重新定義了批量下發配置的介面,將配置下發速度提升了8倍。未來我們計劃將控制面演進到P4 Runtime和Stratum。

2.Sharding

P4可程式設計交換機的PPS或者BPS效能很強能夠線速轉發,對比DPDK,制約單機效能的瓶頸主要出現在交換機的DRAM和TCAM上。畢竟DPDK跑在X86伺服器上記憶體64G起步,512G也不稀奇,而交換機晶片上的記憶體資源就相對要少很多。

為了突破單臺交換機的資源瓶頸,我們設計了將資料按租戶分片的方案,從而實現了水平擴充套件的目標。

首先採用64口P4可程式設計交換機作為接入層,主要實現資料分片和灰度釋出的能力。例如採用VNI的後6位分為64個分片,為每個分片指定一個下一跳地址,從而達到整個叢集的資源水平擴充套件的能力。

3.強灰度能力

傳統上網路裝置通常採用主備、或者主主的方式部署,當需要升級的時候將全部流量切到一半裝置上,另外一半裝置下線升級,升級完成後再重新加入叢集分擔一半的流量。這種升級方式簡單粗放,在UCloud我們提出了更高的要求。我們軟體行業的現狀就是不論花多大的成本去測試,真正的使用者行為總是不可能被窮盡的,缺陷總是會有的,這時我們最後的安全網就是“灰度釋出”。在現網真實環境作為終極測試的同時,通過控制變更範圍儘可能的減少風險;一旦真的有缺陷快速回滾,最大程度的降低影響面。在UCloud我們堅定的在每個產品上採用按賬號灰度釋出,即使是在虛擬網路裝置上。

我們將灰度釋出交換機軟體的能力Buildin在Access層:

1. 當需要升級交換機軟體時,將預留灰度交換機安裝新版本軟體;
2. 按照灰度賬號定義新的資料分片,指定灰度交換機同步新的資料分片;
3. 按照VNI+源地址或VNI+目的地址配置灰度規則按VM的粒度將流量切換到灰度交換機處理;
4. 切換完成後立刻自動迴歸測試,Ping檢測各種場景下的網路互通性是否正常;
5. 測試通過則逐步增加灰度的VM地址,直到整個VPC的流量全部切換到灰度交換機;
6. 再切換一個新的VPC,直到所有分片內的VPC都切換到新的交換機下;
7. 舊的交換機下線清洗,安裝新版本軟體,直到整個叢集完成升級。

通過這種傳統網路裝置完全不同的升級方式,在SDN軟體快速迭代的背景下,有力地保障了SDN網路的可靠性。

P4 Switch應用

P4可程式設計交換機在UCloud規劃的使用場景包括:

– 支援租戶的增強交換和路由
– 物理機接入虛擬網路
– 一致性雜湊ECMP負載均衡
– 流量限速與計費
– ARP代理
– 等等

目前UCloud已經採用P4可程式設計交換機完成了新一代交換閘道器UXR的開發和測試工作,同時部署了一個地域並切換灰度流量進行驗證。

總結

Barefoot的Tofino晶片在2018年初量產後,P4可程式設計交換機開始逐漸出現在市場上,但仍是一個新興事物。不可否認目前確實還有一些不足之處,但UCloud確實看到它和之前的交換機相比,能給軟體工程師無與倫比的自由度。

在6月27日Barefoot CEO Craig Barratt先生一行來UCloud總部的技術交流中,大家也認為通過緊密合作,能夠產生更加貼切需求、切實解決痛點的可定製解決方案。我們相信憑藉持續的技術演進,可以不斷為雲平臺使用者提供更快速更強大的網路能力,就像Barefoot主頁所說,We can now finally say “Software is eating the network”。

參考連結:

P4: https://p4.org/

Barefoot: https://www.barefootnetworks.com/

Quagga: https://www.quagga.net/

DPDK: https://dpdk.org/

Open vSwitch: https://openvswitch.org/

想要獲取更多技術和活動資訊,可掃描以下二維碼,關注“UCloud技術公告牌”微信公眾號;或搜尋微信ID:ucloud_tech進行關注。

 

Post Views:  6 *本平臺所釋出文章資訊,版權歸 UCloud所有,如需轉載請註明出處!