李銘軒 曹暢 楊建軍
摘要:結合最新的可編程網絡技術,提出了算力資源調度技術,并介紹了技術架構和算力調度機制。在算力資源調度技術架構的基礎上,進一步提出了整體平臺功能架構和編程架構?;诳删幊叹W絡的算力資源調度技術解決了目前算力調度過程中無法實現的網絡參數問題,從而能夠更好地實現網絡和算力的融合。
關鍵詞:可編程網絡;云原生;P4;無服務
Abstract: Combined with the latest programmable network technology, the computing power resource scheduling technology is proposed, and the overall technical architecture and computing power scheduling mechanism are introduced. Based on the technical architecture of computing power resource scheduling, the overall platform functional architecture and programming architecture are further proposed. The computing power scheduling mechanism based on the programmable network solves the current bottleneck of network parameters that cannot be achieved in the current computing power scheduling process, which can better achieve the integration of network and computing power.
Keywords: programmable network; cloud native; P4; serverless
軟件定義網絡(SDN)通過網絡控制邏輯(控制平面)與轉發流量(數據平面)的分離,將傳統封閉的網絡體系解耦為數據平面、控制平面和應用平面,簡化策略實施和網絡配置[1]。 2008年,以斯坦福大學Nick MCKEOWN教授為首的研究團隊提出了OpenFlow以及SDN技術。自此,SDN技術獲得了業界的高度關注,一系列相關應用被提出,極大地促進了網絡創新發展。2014年,在SDN基礎上,研究者又提出了可變成數據平臺技術,將網絡編程能力擴展到數據平面,進一步開放了網絡設備的可編程能力[2]。
在從原有的虛擬化技術向云原生技術的演進過程中,傳統的算力資源調度技術往往基于網絡互通,并通過集群自身的調度策略來實現算力的動態調度和應用分配。在這一過程中,固化的組網方式已經無法滿足業務需求,網絡編排能力已成為算力調度能力的制約因素。文章中,我們著重研究基于可編程網絡的算力調度機制,以期能夠將可編程網絡的最大優勢應用于傳統的算力調度機制中。
1 可編程網絡介紹
現有的網絡技術尤其是SDN技術的發展,使得傳統網絡轉發設備能夠從固化在芯片上的轉發機制向基于通用芯片承載的轉發機制轉變,同時也可以為SDN的實現帶來可能性[3]?,F有的以SDN為代表的可編程網絡實現技術,主要是基于可編程的網絡協議和轉發控制協議:應用平面的網絡應用通過控制平面的控制器向底層的數據平面SDN數據轉發設備下發路由協議和轉發策略,從而實現網絡轉發機制[4]。SDN網絡架構如圖1所示。
基于上述SDN網絡架構,網絡應用通過控制器對SDN路由器的轉發機制進行控制。數據報文從源端服務器,經SDN路由器,發送至目的端服務器。在此過程中,網絡應用程序可以通過控制器來選擇不同的轉發路徑,進行數據轉發鏈路的路由。在整個網絡架構中,為了實現兩層解耦,可以通過南向接口對底層數據平面的轉發功能進行封裝,實現控制器和路由器之間的對接;再通過北向接口對SDN控制能力進行封裝,對上層應用提供統一的能力開放。網絡應用則通過調用北向接口來實現對控制器的調用和控制[5]。
1.1 可編程網絡技術架構
SDN的可編程網絡技術架構,可以實現SDN路由器的流量轉發策略控制和軟件定義設定。在數據轉發平臺,現有技術從原有的基于OpenFlow協議相關的數據轉發,逐漸演進到與協議無關的面向高級編程的數據轉發平面??删幊叹W絡技術通過代碼級的自定義網絡數據平面來實現可編程能力,同時還可以實現數據轉發控制和策略[6],具體實現流程如圖2所示。
根據交換機的配置,傳統的可編程網絡數據轉發對解析表和控制流進行編程,并且將解析表下發至數據轉發平臺的解析器中,再通過控制流編程將動作匹配配置下發至數據轉發平臺的動作匹配表中[7]。
數據流在輸入時,首先經過解析器進行報文解析,并通過Ingress負載均衡器進行轉發設置,以實現動作匹配配置,然后進入轉發的隊列和存儲中等待;數據流從隊列中出棧時,先通過對應的Engress反向負載均衡器的解析,再進行報文輸出,從而實現了完整的數據平面數據轉發機制[8]。
1.2 控制面/用戶面分離實現機制
傳統的SDN技術通過控制面和數據面的分離,實現網絡數據流轉發和控制策略制定之間的分離,也為基于可編程網絡的算力調度提供了可能。
從上述的技術架構可以看出,現有的SDN技術實現了兩層解耦:一方面,將控制器集中于上層控制面,實現對SDN路由器或數據轉發設備的統一管理;另一方面,使數據平面的SDN路由器和轉發設備脫離了傳統模式(固化在設備內),并使得轉發功能和轉發規則通過南北向接口開放至上層控制器和網絡應用。這種控制面/用戶面分離機制,為網絡可編程的進一步實現提供了可能。
2 算力調度機制
隨著云計算技術的不斷發展,基礎設施領域已有越來越多的企業采用云計算作為統一資源的管理方式。隨著云資源池規模的不斷擴大,算力節點的調度主要采用分布式的方式;而傳統的基于云計算或云原生的算力資源調度是以虛擬化技術和進程共享技術來實現的[9]?;贠penStack或Kubernetes的算力資源調度將算力節點的空閑度作為算力調度策略的主要評判依據。本文中,我們以Kubernetes的資源調度組件Scheduler為例,重點闡述云原生的算力調度機制。
Scheduler是Kubernetes的核心組件,負責為用戶聲明的Pod資源選擇合適的算力節點,同時保證集群資源的最大化利用,其任務資源調度流程如圖3所示。
現有的Kubernetes資源調度機制根據用戶的請求,從資源管理器中獲取資源信息,并且根據具體的調度策略將任務調度至具體的算力節點上。
在網絡可達的情況下,現有Kubernetes算力節點運行狀態監測控制主要通過算力節點代理監測的方式來實現。通過采集和上傳算力節點上的中央處理器(CPU)、存儲、內存等信息,并將這些信息上傳至資源管理器,再經資源調度器進行策略調度[10],從而將任務調度至指定的算力節點上。這種算力資源調度機制雖然能夠解決分布式環境中、算力資源非均衡情況下的算力動態調度問題,但必須基于網絡可達的情況。該機制并沒有考慮到網絡質量、算力節點的連接,以及傳輸過程中的網絡情況。隨著分布式計算,尤其是大數據等多集群甚至是跨數據中心協同處理的發展,網絡的數據傳輸質量往往會成為影響上層用戶體驗的關鍵因素,同時也會成為跨數據中心算力調度和集群高效協同的制約因素。傳統的算力調度機制僅實現了計算資源在非均衡狀態下的動態調度,卻未考慮網絡的服務質量(QoS)或體驗質量(QoE)。在算網融合應用快速發展的趨勢下,傳統的算力調度方式已無法滿足當前需求。
SDN技術,尤其是可編程網絡技術的發展,促使網絡能力進一步開放、可編程化,并使傳統算力調度機制能夠更好地融合網絡因素。本文中,我們通過算力和網絡協同的方式來實現算力最優化調度,極大地發揮了網絡在數據傳輸和轉發方面的優勢。
3 基于可編程網絡的算力調度方案
基于網絡的可編程、可控制等能力,并結合算力節點空閑度和計算能力等因素,基于可編程網絡的算力調度機制能夠在網絡路由和路徑選擇方面實現算力調度。本文中,我們研究了通過編排調度方式來實現算力服務的編排和管理,以及可編程網絡能力的開放。
3.1 整體網絡架構
基于可編程網絡的管控分離能力,本文在Kubernetes原有調度方式基礎上,進一步研究了基于可編程網絡的算力調度機制。其中,網絡拓撲采用數據控制面和數據轉發面分離模式,容器計算集群承載具體的算力分配和容器承載,控制集群和可編程網絡的數據控制面對接以實現網絡控制。基于可編程網絡的技術架構如圖4所示。
基于可編程網絡的算力調度架構,面向分布式集群通過容器控制集群,向數據控制面下達網絡控制指令;通過控制器,向數據轉發面的轉發設備發送數據轉發策略和數據路由表等網絡轉發協議;通過數據轉發面接入的計算集群,實現算力節點的調度和容器承載。基于可編程網絡架構的數據轉發,可以改變原有容器資源僅能在overlay的數據中心內調度的情況,實現基于underlay的跨數據中心的算力資源調度[11]。
在每一個算力節點上,該架構采用傳統的master/agent模式來代理、發布算力節點的計算、存儲和應用輸入輸出(IO)等情況,并嘗試將這些情況反饋至控制集群中服務器的調度器,從而實現集群內算力節點的統一管理。網絡QoS、QoE以及轉發設備等狀態,通過數據轉發平臺上傳至控制平面,然后被統一管理。在整個算力資源編排調度的過程中,容器控制集群為用戶和開發者提供了統一入口,并通過統一配置腳本、開發變成方式,來實現面向服務的算力和網絡的統一編排和調度,從而實現面向服務的基于可編程網絡的算力調度。
3.2 算力調度機制
在算力調度方面,Kuberenetes云原生平臺提供服務編排調度能力,集成網絡編排能力和計算服務編排能力,并通過Knative實現統一的應用能力封裝和消息隊列。整體算力調度層為上層門戶提供應用程序編程接口(API)網關,也為上層應用提供統一的API。這可以開放可編程網絡的算力能力,屏蔽底層網絡和算力的差異性,并且可以為開發者和用戶提供統一門戶,進一步降低了可編程網絡算力調度的開發門檻。算力調度平臺具體的架構如圖5所示。
整體算力調度機制由Kubernetes實現統一的算力網絡資源調度。其中,根據資源服務對象的不同,Kubernetes調度能力可以分為兩個方面:一方面是以基礎設施平臺即服務(i-PaaS)能力為主,實現對底層基礎設施算力資源的調度,借助控制平面的對接來實現對網絡數據面的調度和管理,通過對接不同的Kuberentes云原生集群實現對底層云原生集群的調度管理;另一方面是以應用層PaaS(A-PaaS)能力為主,實現對網絡編排和計算服務編排的服務能力管理。面向上層的能力調度主要包含網絡編排和服務編排兩個方面。
(1)網絡編排
網絡編排主要是指,對底層的網絡服務編排能力進行硬件資源的抽象和能力的建模,并通過服務編排來實現網絡控制。本文中,我們提出基于 SDN的寬帶接入(SEBA)容器化架構,以實現SDN網絡訪問。SEBA的核心組件主要包括開放網絡操作系統(ONOS)、Kafka、VOLTHA、XOS。
ONOS:實現SDN網絡操作系統,對網絡服務編排實現統一的資源調度和管理。

Kafka:實現REST的消息隊列管理,并通過上層的服務能力對底層硬件的訪問請求消息進行統一管理。
VOLTHA:實現底層網絡接入設備和轉發設備的硬件資源抽象,從而使用和訪問上層的網絡功能。
XOS:實現網絡功能虛擬化和服務化,并可以基于SDN控制器的可編程能力實現網絡控制和功能軟件定義能力。
(2)服務編排
服務編排可以實現對PaaS和軟件即服務(SaaS)能力的容器化調度。由于云原生具有服務化和微服務化的能力,因此在實現算力調度的過程中,基于不同的應用場景,我們提出了3個方面的服務能力。
計算能力集:集成目前云原生統一的計算型能力庫,包括Spark、Hadoop、Hive、Flink等。
數據庫:采用傳統的數據庫服務能力,為上層的應用和業務場景提供一鍵部署式的云原生數據庫,包括Mysql、MangoDB等。
人工智能:包括面向人工智能場景的推理和訓練,以及對硬件加速有特定需求的算力調度能力。
這些服務能力統一由Kubernetes來實現編排。通過Kubernetes的調度擴展接口和平臺內部調度器對接,從而能夠實現PaaS和SaaS服務的容器化調度。
通過Knative來完成統一服務能力的封裝和打包,通過Knative的API網關提供統一的網絡和算力調度接口,并通過統一的門戶對外開放,開發者可以根據網絡和算力調度能力進行網絡編程。這樣可以進一步融合底層網絡和算力,實現基于可編程網絡的算力調度。同時,用戶也可以更加關注上層業務邏輯和業務流程。
3.3 可編程網絡編排機制
構建在傳統SDN架構上的可編程網絡算力調度機制,不僅實現了網絡控制面和用戶面的分離,還實現了基于云原生統一Kubernetes平臺的服務編排調度能力。在可編程網絡服務編排能力方面,隨著網絡轉發設備的普及,基于P4的網絡可編程能力實現了網絡的可編程。另外,網絡組件本身也可以進行容器化,并可以調度到具備P4功能的白盒交換機上?;谌萜骰目删幊叹W絡編排架構如圖6所示。
依據上述可編程網絡算力編排技術架構,P4交換機集成了專門針對P4的運行時(Runtime)。在通用計算節點上,運行時集成了運行應用程序的鏡像。在整個技術架構中,面向上層的網絡功能和應用程序提供了統一的容器封裝能力,用于打包和封裝容器鏡像。其中,在網絡功能容器化封裝的過程中,P4編譯器專門用于服務網絡功能程序,即將網絡功能程序編譯成可在P4交換機上運行的可執行程序后,再進行容器化封裝。Kubernetes平臺實現了P4交換機和通用計算節點的算力資源調度和服務編排。根據網絡功能和應用程序的不同,Kubernetes平臺分別將網絡功能調度到P4交換機上運行,將應用程序調度到通用計算節點上運行[12]。面向上層開發者則提供統一的開發平臺、API、網絡可編程能力和應用程序開發能力,從而實現可編程網絡和應用程序。這樣一來,基于可編程網絡的算力調度技術在代碼開發階段就能夠進行融合開發,滿足目前越來越多的算網融合場景下的應用程序開發需求。
4 結束語
異構算力網絡是下一代云網融合2.0的發展趨勢。基于可編程網絡的算力調度機制,能夠在網絡可編程的基礎上,實現傳統算力調度無法實現的基于網絡的算力調度方式。該機制可以根據網絡情況進行算力調度,也可以基于算力調度需求進行網絡適配和可編程,從而真正實現云網融合[13-15]。本文中,我們所提出的基于可編程網絡的算力調度技術,是基于云原生技術來實現算力網絡的融合調度。傳統的云原生調度僅能基于overlay網絡實現算力調度,而該技術則可以實現基于underlay網絡的算力調度和服務編排能力。該技術還可以提供業務感知的網絡編排能力,從而能為后續的網絡感知業務提供新的研究思路和發展方向。
致謝
本研究得到中國聯通研究院李建飛高級工程師的幫助,同時也得到了中國聯通研究院首席科學家唐雄燕的指導,謹致謝意!
參考文獻
[1] 耿俊杰, 顏金堯. 基于可編程數據平面的網絡體系架構綜述 [J].中國傳媒大學學報(自然科學版), 2019, 26(5): 38-43
[2] 左志斌, 常朝穩, 祝現威.一種基于數據平面可編程的軟件定義網絡報文轉發驗證機制 [J]. 電子與信息學報, 2020, 42(5): 1110-1117
[3] 李銘軒, 邢鑫, 王本忠. 面向電信運營商的容器云SDN云網一體化方案研究 [J].信息通信技術, 2019, 13(2):7-12+25
[4] 房秉毅, 張云勇, 陳清金, 等. 云計算網絡虛擬化技術 [J]. 信息通信技術, 2011, 5(1): 50-53
[5] 程瑩, 張云勇. SDN應用及北向接口技術研究 [J].信息通信技術, 2014, 8(1):36-39
[6] 林耘森簫, 畢軍, 周禹, 等. 基于P4的可編程數據平面研究及其應用 [J]. 計算機學報, 2019, 42(11): 2539-2560
[7] 衣曉玉, 秦斌, 吳文斐, 等. 基于P4交換機的MAP卸載技術設計與實現 [J]. 深圳大學學報(理工版), 2020, 37(S1): 112-117
[8] WANG S, WU J, YANG W, et al. Novel architectures and security solutions of programmable software-defined networking: a comprehensive survey [J]. Frontiers of information technology & electronic engineering, 2018, 19(12): 1500-1521
[9] 李銘軒, 曹暢, 唐雄燕, 等. 面向算力網絡的邊緣資源調度解決方案研究 [J]. 數據與計算發展前沿, 2020, 2(4): 80-91
[10] 劉暢, 毋濤, 徐雷. 基于無服務器架構的邊緣AI計算平臺 [J]. 信息通信技術, 2018, 12(5): 45-49
[11] 何濤, 曹暢, 唐雄燕, 等. 面向6G需求的算力網絡技術 [J]. 移動通信, 2020, 44(6): 131-135
[12] 李銘軒, 魏進武, 張云勇. 面向電信運營商的IT資源微服務化方案 [J]. 信息通信技術, 2017, 11(2): 48-55
[13] 彭新玉.基于軟件定義的可虛擬化未來網絡關鍵技術研究及產業化 [J]. 電子世界, 2020(9): 5-6
[14] SIVARAMAN A, MASON T, PANDA A, et al. Network architecture in the age of programmability [J]. ACM SIGCOMM computer communication review, 2020, 50(1): 38-44
[15] VULETIC P, BOSAK B, DIMOLIANIS M, et al. Localization of network service performance degradation in multi-tenant networks [J]. Computer networks, 2020, 168: 107050
作者簡介
李銘軒,中國聯合網絡通信有限公司研究院高級工程師、IEEE高級會員、中國電子學會高級會員;主要研究方向為大數據技術、云計算技術、業務平臺技術和IT支撐系統技術;已發表論文20余篇,授權專利10余項。
曹暢,中國聯合網絡通信有限公司研究院未來網絡研究部高級專家、智能云網技術研究室主任;主要研究方向為IP網寬帶通信、SDN/NFV、新一代網絡編排技術等。
楊建軍,中國聯合網絡通信公司研究院未來網絡研究部高級工程師,主要研究方向為開放網絡、未來網絡、SDN/NFV、開放硬件、網絡開源軟件等;獲得授權專利20余項。