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