隨著5G商用的漸近,通信行業也迎來了5G的機遇與挑戰。大規模機器類通信、超可靠、低延遲通信需求場景(智能家居、智慧城市、增強現實、工業自動化、自動駕駛等)的興起,對未來網絡的計算和流量轉發能力提出了更高的要求。通用CPU設備已經無法滿足處理海量數據、圖片、流量的需求。
根據不同業務場景和自身優勢,通訊廠商引入GPU、FPGA等進行加速,推出了各種加速硬件方案。對于異構加速硬件,要運行在各種CloudOS上,再被上層廠家的VNF調用,假如沒有一個統一的標準來管理這些加速卡,沒有統一的接口來讓上層網元調用,將會造成比較嚴重的問題。
為了實現NFV異構加速硬件的統一管理, ETSI制定了NFV加速硬件統一管理軟件框架標準。此后,該標準被拓展至更多場景,并在OpenStack孵化出了Cyborg項目。
Cyborg,目前唯一的開源硬件加速管理軟件項目
Cyborg的主要功能包括硬件資源的發現、上報、掛載卸載等資源管理。用戶可以通過Cyborg列出計算節點上已經被發現和上報的加速器、并創建帶加速器的實例。對于一些特殊硬件的特殊功能或配置(如:FPGA的編程),也將在cyborg實現。
Cyborg采用經典架構,由cyborg-api、cyborg-conductor、cyborg-agent、 cyborg-db幾個模塊組成。其中Cyborg-agent位于計算節點,用于監控加速器;cyborg-conductor位于控制節點,管理整個系統和操作數據庫。cyborg-api和cyborg-db分別為接口和數據庫,均位于控制節點。
下面通過Cyborg的兩個流程來介紹其主要功能:資源發現和上報流程、創建帶加速硬件的實例流程。
加速資源發現和上報流程:
1. 各設備的driver為加速設備構造Cyborg中用于描述設備的數據結構,等待cyborg-agent輪詢取走設備數據;
2. cyborg-agent周期性掃描計算節點enabled的driver;
3. cyborg-agent獲取到driver上報來的數據信息后,通過cyborg-conductor將資源信息寫入placement(更新Resource Provider(RP), Resource Class(RC),traits)和cyborg-db(更新devices, deployables, attach_handles, attributes, controlpath_ids)
創建帶加速硬件的實例流程:
1. User在cyborg創建一個加速資源模板device_profile(類似于nova flavor);
2. User創建flavor,并在extra-spec屬性中設置device_profile的name;
3. User 使用已創建的flavor 發送boot虛機請求;
4. Nova-api接受到請求以后, 向cyborg發起請求獲取device_profile信息,并將device_profile信息合入request_spec,用于調度;
5. 調度過程中nova-scheduler向placement請求獲取符合request_spec中要求的硬件加速資源,placement返回滿足要求的主機列表,之后主機列表再通過nova-scheduler其他Filter的過濾,排序后選定某個主機;
6. Nova-compute在選定的主機上部署實例,并向cyborg請求加速資源的掛載操作:
Nova-compute根據device_profile向cyborg請求創建加速器請求(Accelerator Request, ARQ),并為每個ARQ匹配硬件資源Resource Provider(RP)。 需要說明的是:ARQ包含instance_uuid、 resource_provider_id、host_name、 device_profile_id等字段信息。一個ARQ對應一個device_profile_group, 一個device_profile_group對應request spec中的一個request group。
Nova-compute向cyborg發送綁定設備(bind_ARQ)的請求。Cyborg根據ARQ信息綁定instance、host、device,綁定結束后更新ARQ的狀態,并通知nova當前ARQ綁定操作是否成功;
Nova-compute接到ARQ綁定操作結束的通知后,從ARQ獲取設備信息,并將設備BDF信息寫入instance的XML文件。
中興通訊持續社區貢獻
社區T版本的主要工作在于實現S版本重新定義的加速硬件數據結構、基本發現、上報、掛載流程,目前社區已實現基本的管理功能,與placement交互基本完成,與nova組件的交互尚在推進中,有待成熟。另一方面社區在提升Cyborg代碼規范、及產品可用性方面也投入了大量精力:T版本引入集成測試、并全面引入flak8測試提升源代碼的規范、python3支持。Driver的支持方面,cyborg社區T版本新增了AICHIP ASCEND Driver。
我司從Queens版本開始投入Cyborg,歷經四個版本,見證了Cyborg功能的逐步實現和完善。總體來說,中興通訊的貢獻主要在三方面: 第一、Cyborg與Nova交互的集成測試以促進Cyborg的商用進程 (包括了加速硬件需求的接口測試,?設備調度和掛載測試,設備上報數據庫,Tempest CI及測試);第二、對現有Driver 的維護、支持更多的Driver (eg. ZTE自研高精度時鐘卡Driver);第三、提升源代碼規范和質量(全面改善flake8測試)、完善接口文檔。
在OpenStack Train Release中,中興通訊在項目的commits和reviews均排名第二。中興通訊在項目擁有兩位Core Reviewer。在未來,中興通訊將持續投入在Cyborg中,為Cyborg項目的發展做出貢獻。
-
中興
+關注
關注
6文章
1995瀏覽量
66011 -
5G
+關注
關注
1353文章
48370瀏覽量
563412 -
OpenStack
+關注
關注
1文章
69瀏覽量
18898
發布評論請先 登錄
相關推薦
評論