開放交換機組網技術和前沿進展

SDNLAB君發表於2019-05-31

在第三屆未來網路發展大會SDN/NFV技術與應用創新分論壇上中國銀聯電子商務與電子支付國家工程實驗室周雍愷博士,發表了主題為《開放交換機組網技術和前沿進展》的主題演講。

本次演講內容主要有三大部分的內容,第一部分是開放交換機的前沿進展;第二部分介紹組網,尤其是雲原生資料中心的組網;第三個部分是金融業對開放交換機所做一些研究以及驗證。本文對第一、二部分內容做了整理。

網路技術的堆疊

周博士首先談到了網路技術的堆疊,網路技術堆疊可以分成控制平面和資料平面,在控制平面有,北向介面有Neutron介面,還有K8S CNI介面,以及當前SDN界比較流行的IBN基於意圖的宣告式介面。開源的網路控制器有ODL和ONOS,商業版有思科ACI、華為AC等。南向介面最著名的是OpenFlow,還有最新的P4 runtime,當然傳統裝置廠商可能更傾向於BGP、NETCONF、OPFLEX等介面。

再看資料平面,資料平面可以分成交換機作業系統、硬體抽象層和交換晶片。交換機作業系統是當前網路開源的競爭焦點,開源的系統包括SONiC、FBOSS等。對硬體抽象層,現在發展比較好的是SONiC的SAI層。交換晶片目前正在向可程式設計的方向發展。網路的開放應該還是大勢所趨,上圖中左側紅色字表示的都是開源專案,可以看到開源軟體已經能夠實現對網路堆疊的全覆蓋,標準硬體加開源軟體構成的開放交換機生態也逐漸成形。

開放交換機的技術特徵

周博士將開放交換機的技術特徵歸納為如下三點。第一是小交換機可以組大網,即相對於原來比較複雜的大框交換機,現在用標準的小盒子也能夠擴充套件出一張非常大的網路。第二是標準硬體加上開放控制,也即在整個的硬體體系上,如何能夠構建一個更可控、更精簡的網路作業系統。第三是交換晶片的可程式設計,對於SDN來說,晶片可程式設計才是最徹底的SDN,因為它已經把軟體定義的邊界下沉到了轉發流水線的層次。下面對這三點進行詳細介紹。

小交換機組大網

在談小交換機組大網之前,先介紹一下框式和盒式交換的差別,框式交換機通過背板交換連線多塊線卡,其內部的連線也是CLOS的結構。因此,一個大框可以通過小交換機進行組合構建,用小交換機的好處有如下幾點:1)小交換機比較便宜,可節約成本。2)架構可擴充套件,因為框式交換機一旦被設計出來,它的整個數量就完全確定了。3)可控性更高,但與此同時管理的難度也會逐漸增加。下圖用於比較用框式和盒式堆三層網路,對於框式交換機如果只是組幾千個節點,一臺框式交換機就可以搞定了,但是如果是幾萬個節點,就需要框式堆框式,每一個框裡面至少3塊晶片,一路算下來,從一端到另外一端要經過11跳,而盒式交換機組成三層網路只需要5跳,所以在時延和跳數上是有優勢的。

當前盒式交換機單晶片的埠密度已經很大了,最高的12.8T(有128個100G的埠)都已經出來了,所以通過三層的CLOS就可以組一個很大的網。具體計算一下,一個2級CLOS構成基本單元POD,可以掛幾千臺機器,再擴充套件到三級CLOS,差不多可以無阻塞互聯十萬左右的伺服器,這對於單個資料中心而言已經足夠多了。三級CLOS組網的數量取決於中間層交換機的埠密度。

今年OCP,Facebook釋出了最新的資料中心網路設計——F16。他的前身是幾年前經典的F4組網,該組網的基本單元有48個接入交換機,4箇中間層交換機,差不多每個POD可以連線1000臺伺服器。然後最上層的Spine交換機通過CLOS互聯可以擴充套件互聯數萬臺伺服器的規模,並且在任意兩個伺服器節點之間有多條冗餘路徑可以做負載分擔。當前最新的F16,中間層改成了16*100G的互聯,最頂層的Spine交換平面有36個。如果有六棟樓的話,這種互聯方式還可以將六個AZ的交換機Fabric進行全互連。

網路的開放控制

在這一部分中,周博士首先談到了路由控制,路由控制分兩種傳統的路由控制和SDN路由控制。對於傳統的路由控制,周博士對開源網路作業系統SONiC和Stratum進行了比較。

SONiC
對於SONiC來說,下圖是一個簡單的架構圖,控制平面僅實現了最核心的BGP協議以保障雲資料中心大規模三層網路的互通。資料平面比較核心的是SAI層,這一層目前比較重要因為它的生態發展比較好,它下面支援的晶片非常多。使用者既可以用Switch.p4這樣純可程式設計的晶片來支援SAI,也可以通過博通、盛科等的晶片來實現SAI的介面,最終對映到物理的Chip Target。

開放交換機創新的技術中不得不提一下去堆疊技術。通常情況下,伺服器為了保證高可用性,一般是雙連到兩臺交換機上,如果有一個交換機當機了,另外一個可以接上。上圖中可以看到TOR1和TOR2之間有兩條線,這兩條堆疊線的作用是同步MAC、ARP等狀態。為了達到高可用性,最極端的做法是把兩臺交換機虛擬成一臺控制平面,當使用者登上TOR1和TOR2時會發現它們的管理地址是一模一樣的,這個虛擬程度是很高,但是額外複雜度、不穩定性也增加了。對此,阿里提出了一種比較創新的去堆疊的技術(VPC-lite),他們的想法是伺服器bond口將ARP雙發到兩條鏈上,這樣TOR1和TOR2就不用同步ARP表了。當鏈路斷了,再顯示地通告一下BGP。這種方式達到了原來同樣的效果,但原來的堆疊線沒有了,交換機也相互獨立,實現方面也要簡單很多。

SONiC現在已經成為OCP的一大招牌,因為OCP基本上是以硬體為主,對於軟體方面,現在主推SONiC,也是目前生態最成熟的一個開放交換機作業系統,這套作業系統是微軟的華人工程師建立的,設計精簡前衛,它裡面很多元件的模組性都比較好。在使用案例方面,微軟將SONiC部署到了全球44個region,領英當前40%的資料中心大規模在使用SONiC。此外,OCP也特意強調了中國對於SONiC的貢獻,由阿里牽頭ODCC(中國開放資料中心聯盟)專門成立了一個鳳凰專案,負責SONiC在中國的推廣。阿里是SONiC生產應用最早的也是規模比較大的企業。騰訊、百度包括京東也正在開展密集的驗證測試,而且不久也會正式生產上線。

Stratum
和SONiC相比,Stratum的理念更偏向計算機,它是以IT的方式來管理整個CT系統,也是比較有意思的。整個設計最頂層是遠端的控制器,介面端主要分成三類,一個是P4ruetime,然後就是gOMI和gNOI。g代表gRPC,而不是傳統網路裝置所使用的NETCONF,這可以使得策略的下發效率提升很多。下圖藍色框內便是Stratum的覆蓋範圍。

單獨的Stratum是沒有辦法進行組網獨立工作的,在上層它需要ONOS或者其他的控制器配合,下層是通過Trellis元件提供Fabric SDN的路由控制。這個系統是純SDN選路,所以一旦鏈路端掉線,系統很快就能夠響應,重新編制轉發表項,由此也不存在去堆疊之類的麻煩。

Stratum專案最早是由谷歌發起的,所以谷歌在內部肯定已經大規模使用了Stratum(但是谷歌的控制器不是ONOS),整個專案預計今年6月正式開源。國內在去年12月份左右,由騰訊牽頭舉辦了一場Stratum Developer Day,同時 UCloud、阿里、銳捷也都在積極跟進或者密切關注。

RDMA
在網路的開放控制中SDN解決的是路由控制的問題,而RDMA要解決的是流量控制。要解決什麼樣的流量呢?首先看下圖,如果是點對點兩兩互打的話,這個對交換機來說並沒有什麼太大的壓力,每兩點產生的流量再大,有線速保障的交換晶片都可以處理過來。但是如果碰到多打一的情況,交換機晶片再強大也處理不了。對這種情況只能從源端進行解決,把原來的大流量變成原來的三分之一,出口那邊才可能扛住。在源端分流最常用的方法是從TCP的端側流控,但這有一個缺點,速度比較慢,有可能對端反饋過來的時候在交換機裡已經產生丟包了。於是有了RDMA,可以做端到端的全程流控,整個網路都可以參與流量擁塞的反壓。
這種多打一的情況經常出現在大資料訓練場景下。另外對於25G和100G網路這種情況也非常突出,因為25G和100G網路速度太快了,它的交換機的快取撐不了很長時間,一旦有擁塞,交換機快取就會迅速溢位,所以RDMA技術基本上會運用在25G/100G網路中。

下圖是RDMA的技術實現,首先在網路側需要優化配置PFC和ECN等引數,整個RDMA最難的就是這些引數該怎麼配。智慧網路卡側實現資料遠端搬運,同時可以降低CPU的流控負擔。最後,原有的TCP協議棧也要重新改寫,替換為RoCEv2 verbs的介面。RDMA最終的目標是高吞吐、低時延和不丟包。

RDMA技術最早應用於科學計算,是一套比較封閉而且價格比較昂貴技術。在乙太網中,RDMA主要應用於大資料計算、分散式儲存和深度學習網路等大吞吐量,低時延的場景。目前,RDMA的使用其實已經比較廣泛了,最早是微軟將其應用至雲資料中心的場景,BAT等網際網路公司主要用於為AI訓練任務和分散式儲存。華為也推出了AIFabric這種重量級的產品。值得一提的是,整個RDMA網路棧中,有一個單點,那就是邁絡思(Mellanox)的智慧網路卡。邁絡思對RDMA貢獻很大,它本身就是InfiniBand與RDMA技術的主要發明者。今年3月,英偉達以69億美金收購了這家以色列半導體公司,今後GPU記憶體中的資料就可以通過RDMA實現“遠端搬運”了。在金融行業,招行和浦發已經分別有生產應用和深度驗證,銀聯也在驗證。

可程式設計交換晶片

最後是可程式設計晶片(Programmable Switch Chip)。可程式設計交換晶片有三個特點,首先它肯定是ASIC,第二要實現可程式設計的前提是效能不降級,第三要有特定的程式設計模型。

在程式設計模型方面,以前的交換晶片普遍是固定的流水線,P4的程式設計模型是PISA,協議無關的交換流水線架構。下圖是P4的一個流水線,從圖中可以看到每一級都是長的一模一樣的,中間是TM,用來緩衝入流水線和出流水線。它的核心仍然是高速交換、處理相關的資料,多了靈活匹配和靈活編輯,小容量的高速儲存和查詢功能。使用P4語言,使用者可以自定義報文頭、自定義表項,然後還可以通過控制流把它串起來。當然也有些功能是P4實現不了的,比如變長URL的匹配,新的Hash演算法,還有做大容量的儲存,這些都不可能在交換晶片上實現。

從體系架構的視角來看,更高效能始終是體系架構永恆的追求。從最早的單核再到多核,如今摩爾定律已經到了極限,於是各種領域相關的晶片(例如GPU、TPU和FPGA)將發揮重要作用,體系架構也將迎來一個新的黃金時代。對於P4使能的交換晶片來說,它可以用於多節點分散式的協作,像原來的兩兩單播可以變成組播加速,還有就是伺服器部分邏輯到可程式設計交換晶片等等。

整個P4應用場景差不多可以歸納為四個虛擬的P4程式,第一個Telemetry是INT的功能,這個是當時P4的主打功能,還是很驚豔的。其次是NFV,然後是Cluster,它可以實現可程式設計SW+伺服器叢集的架構。最後一個是Fabric的P4,它可以做到服務和通訊的解除安裝。

P4的應用案例基本上是從去年P4 Summit上收集到的,用的最早的還是阿里,當時介紹的是負載均衡的應用,一個單片的Tofino晶片是相當於100臺伺服器的軟LB的效能,而且已經接受了2018雙十一場景的嚴酷考驗。UCloud在P4方面挖掘得很深,主要場景是在雲閘道器,或者說是vPC的閘道器,P2V閘道器,騰訊京東也有涉及。另外就是INT功能,普遍是用在SONIC的叢集當中,實現流量的視覺化。

上述內容是周博士第一部分內容。下面介紹第二部分雲原生時代的開放交換機組網。
從2015年開始容器化、微服務等等就開始火了,隨之雲原生一詞也漸漸傳入大家耳中。雲原生的目標是“業務”極速上線,這是整個的資料中心未來的一個發展方向。資料中心最早使用的是資源池化(Iaas的編排系統),對網路儲存資源進行統一的管理。但是對於從應用的構建、部署的方式、彈性伸縮和高可用保障方面它並沒有本質性的改變,所以當時很多大佬們就提出來了雲原生的概念,就是說明原來的應用其實並不是原生的,所以說現在提出的Paas服務化的理念是什麼呢?就是整個系統的能力都是下沉到平臺級層面,應用主要關注業務邏輯,不再需要顧及負載均衡、彈性伸縮和高可用之類的運維能力。

從七層網路架構來看雲原生網路對組網的要求,周博士介紹了CNI介面和ServiceMesh(服務網格)。CNI介面是基礎的二三層網路聯通,它的介面非常簡單,就是下圖中列舉的四個方法,主要就是要實現一個虛擬隔離的vPC網路。四到七層高階網路功能通過ServiceMesh(服務網格)實現,其中四到七層中的雲原生更加強調以服務為中心的想法,就是把原來的例項IP給弱化了,更加關注服務的IP,其實就是一個虛IP或者是EIP。四到七層的網路還提供安全可靠靈活高效的服務間通訊。

周博士還舉了3個雲原生組網的案例,其中之一是Istio服務網格原生的K8S處理服務間通訊主要是通過Iptables規則的概率匹配進行服務間的負載均衡,當規模一大iptables鏈式匹配會出現瓶頸,而且很多高階功能無法實現。Istio則是在一個POD裡面加入了一個sidecar容器。sidecar將流量“劫持”後,就可以實現流量限制、熔斷、AB釋出、分散式追蹤等一系列的高階功能。右上是整個Istio的控制平面,和前面的Stratum有點像,都有配置策略下發和蒐集網路資料部分。整個Istio周圍還有非常豐富的元件,用於監控的Prometheus+Grafana,用於分散式追蹤的Kiali和Jaeger,可以構成一個完整的閉環功能非常強大。

開放交換機的生態已經成型了,相關技術還是有非常大的創新活力。雲原生將成為未來DC網路的重要驅動力。整個開放交換機市場成熟度還需要進一步打磨,企業使用者有義務積極試用,創新更多的應用場景。
以上內容是周博士演講的內容,部分內容有刪減。

相關文章