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

2021-08-21 02:40:52 字數 3924 閱讀 8348

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

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

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

2023年中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特性也沒有硬體交換機支援。

2023年q4,我們開始預研barefoot的支援p4的可程式設計交換機(tofino晶元),很快發現了它能夠很好地滿足我們的需求。

提到p4和barefoot就不能不提nick mckeown教授。2023年nick和夥伴們一起創立了nicira networks公司,也幾乎標誌著「軟體定義網路(sdn)」這個產業的誕生。nicira作為openflow的大本營,接連發布了nox和open vswitch作為openflow的重要元件。

2023年vmware收購nicira後,nick認為sdn的第二步則是發展為它專門優化的硬體裝置,又和同伴共同發起了對資料報進行處理的程式語言p4(programming protocol-independent packet processors),幫助網路使用者擺脫被晶元硬體廠商各種協議的制約。

– p4在設計上具備如下優點:

– 可靈活定義**裝置資料處理流程,且可以做到**無中斷的重配置。

– **裝置協議無關**。

– 裝置無關性。

2023年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

1.控制面實現

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

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可程式設計交換機在ucloud規劃的使用場景包括:

– 支援租戶的增強交換和路由

– 物理機接入虛擬網路

– 一致性雜湊ecmp負載均衡

– 流量限速與計費

– arp**

– 等等

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

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

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

新華三交換機基於MAC的vlan劃分

經常會有這樣的案例,一會議室內只有一條網線且這條網線接入了交換機的d1 0 41埠,財務部 vlan10 行政部 vlan20 攜帶筆記本來開會,我們希望財務部能獲取到192.168.10.0 網段的位址,而行政部獲取到192.168.20.0網段的位址。這是一種基於mac vlan劃分的方式,請看...

華為交換機學習指南基於埠劃分VLAN的四種方案

拓撲圖 方案一 使用者埠採用access型別,而交換機連線的埠採用trunk型別 方案二 使用者埠採用access型別,而交換機連線的埠採用帶標籤的hybrid型別。switcha配置 inte ce gigabitethernet0 0 1 port hybrid tagged vlan 2 to...

H3C交換機基於埠VLAN的配置示例

以下內容摘自筆者2009年度巨作,獲得多項大獎,並在半年內成功重印的圖書 cisco h3c交換機配置與管理完全手冊 當當網 卓越網和互動出版網上都有得銷售。18.2.6 基於埠vlan的配置示例 為了幫助大家對以上vlan建立和基於埠vlan的配置方法有乙個全面的掌握,現例舉兩個典型的h3c交換機...