姚柯翰/YAO Kehan,陸璐/LU Lu,徐世萍/XU Shiping
(中國移動通信有限公司研究院,中國 北京 100053)
在網(wǎng)計算(INC)指將部分計算任務(wù)卸載至網(wǎng)絡(luò),讓數(shù)據(jù)在完成轉(zhuǎn)發(fā)的同時實現(xiàn)數(shù)據(jù)處理,從而提升數(shù)據(jù)計算效率。如圖1 所示,傳統(tǒng)的計算模式是數(shù)據(jù)由終端產(chǎn)生,全部送往集中的數(shù)據(jù)處理節(jié)點(如數(shù)據(jù)中心)來完成運算。在網(wǎng)計算則可實現(xiàn)數(shù)據(jù)邊轉(zhuǎn)發(fā)邊處理,大大降低數(shù)據(jù)處理節(jié)點的負(fù)載。
▲圖1 端側(cè)計算向在網(wǎng)計算演進
在網(wǎng)計算的技術(shù)理念首次出現(xiàn)在1995 年由美國國防部高級研究計劃局(DARPA)提出的主動網(wǎng)絡(luò)中[1]。在主動網(wǎng)絡(luò)中,網(wǎng)絡(luò)數(shù)據(jù)包不僅攜帶數(shù)據(jù),還攜帶了數(shù)據(jù)的操作信息或程序。在網(wǎng)計算可以給主動網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)節(jié)點使能主動計算屬性,基于數(shù)據(jù)包中的程序指令對數(shù)據(jù)包進行操作,從而實現(xiàn)應(yīng)用相關(guān)的功能,比如防火墻或網(wǎng)頁代理等。但主動網(wǎng)絡(luò)并未形成主流技術(shù)體系,主要原因在于其實現(xiàn)依賴于中央處理器(CPU)的處理能力。而網(wǎng)絡(luò)設(shè)備的核心要務(wù)是進行線速數(shù)據(jù)包轉(zhuǎn)發(fā),這對轉(zhuǎn)發(fā)芯片能力有嚴(yán)格要求。在當(dāng)時,網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)芯片并不支持可編程能力,因此能夠在網(wǎng)絡(luò)設(shè)備做的計算也比較有限。
近年來,隨著可編程網(wǎng)絡(luò)硬件的發(fā)展以及軟件定義網(wǎng)絡(luò)架構(gòu)的逐漸成熟,在網(wǎng)計算技術(shù)不斷發(fā)展。斯坦福大學(xué)N.MCKEOWN教授團隊在2014年發(fā)表的論文中首次提出了協(xié)議無關(guān)的包處理編程語言P4[2],用于對網(wǎng)絡(luò)數(shù)據(jù)平面的算法和處理邏輯進行自定義編程,從而實現(xiàn)更加靈活豐富的功能。目前,大量的學(xué)術(shù)研究聚焦在如何發(fā)揮可編程網(wǎng)絡(luò)的靈活性和高性能,可編程網(wǎng)絡(luò)成為在網(wǎng)計算發(fā)展的關(guān)鍵使能技術(shù)。
在網(wǎng)計算[3]已廣泛用于各種分布式系統(tǒng)。在網(wǎng)計算將應(yīng)用相關(guān)的功能卸載至網(wǎng)絡(luò)節(jié)點,實現(xiàn)分布式應(yīng)用處理性能的有效提升以及網(wǎng)絡(luò)帶寬資源的合理優(yōu)化。本節(jié)中,針對目前在網(wǎng)計算在應(yīng)用加速方面的主要研究,我們進行了總結(jié),內(nèi)容主要包括在網(wǎng)數(shù)據(jù)聚合、在網(wǎng)數(shù)據(jù)推理、在網(wǎng)緩存以及在網(wǎng)共識。
1)在網(wǎng)數(shù)據(jù)聚合
分布式機器學(xué)習(xí)模型訓(xùn)練可以基于在網(wǎng)數(shù)據(jù)聚合進行加速。目前,主流分布式機器學(xué)習(xí)系統(tǒng)架構(gòu)為環(huán)狀規(guī)約(RAR)和參數(shù)服務(wù)器(PS),如圖2所示。RAR架構(gòu)對網(wǎng)絡(luò)帶寬資源占用高,完成一次完整的分布式機器學(xué)習(xí)模型訓(xùn)練任務(wù)需要傳遞約模型總參數(shù)量2倍的通信量,極易引起網(wǎng)絡(luò)擁塞;而PS架構(gòu)則由于集中式服務(wù)器節(jié)點的吞吐瓶頸問題,面臨較大的聚合延遲,限制了分布式機器學(xué)習(xí)模型訓(xùn)練的效率,擴展性較差。
▲圖2 在網(wǎng)數(shù)據(jù)聚合
在網(wǎng)計算可由網(wǎng)絡(luò)交換節(jié)點實現(xiàn)參數(shù)聚合功能,既克服了聚合節(jié)點的吞吐瓶頸問題,也避免了RAR 架構(gòu)高額的帶寬資源占用,實現(xiàn)了訓(xùn)練性能和帶寬資源的有效平衡,極大地提升系統(tǒng)的擴展性。
2)在網(wǎng)數(shù)據(jù)推理
在網(wǎng)數(shù)據(jù)推理可實現(xiàn)網(wǎng)絡(luò)流量分類和控制。業(yè)界相關(guān)的研究包括在網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備實現(xiàn)決策樹、支持向量機(SVM)、樸素貝葉斯等各種分類算法[8],以及通過神經(jīng)網(wǎng)絡(luò)實現(xiàn)聯(lián)邦學(xué)習(xí),支撐網(wǎng)絡(luò)設(shè)備在網(wǎng)絡(luò)路徑上就近返回處理結(jié)果,從而提升集群計算能力。
與基于分析服務(wù)器的推理方式相比,中間層交換機推理提前終止了終端設(shè)備發(fā)往分析服務(wù)器的原始數(shù)據(jù)流量,節(jié)省了更高層核心網(wǎng)絡(luò)的帶寬,同時利用網(wǎng)絡(luò)設(shè)備的高速處理來減少推理時間,加速數(shù)據(jù)實時分析和控制指令響應(yīng)。
3)在網(wǎng)數(shù)據(jù)緩存
高性能的分布式數(shù)據(jù)存儲和索引需要依賴于高性能的Key-Value存儲。在社交網(wǎng)絡(luò)等高并發(fā)應(yīng)用中,慢速的Key-Value存儲可能導(dǎo)致較大的系統(tǒng)尾延遲,進而影響系統(tǒng)性能。通過設(shè)計層次化的緩存系統(tǒng),在邊緣網(wǎng)絡(luò)節(jié)點部署Key-Value 緩存服務(wù),在網(wǎng)絡(luò)設(shè)備中完成高頻內(nèi)容緩存以及快速查詢和響應(yīng)[4]。在網(wǎng)數(shù)據(jù)緩存機制是高性能存儲系統(tǒng)以及高性能流式處理系統(tǒng)加速的關(guān)鍵。
4)在網(wǎng)數(shù)據(jù)共識
在分布式系統(tǒng)中,可以通過共識協(xié)議來實現(xiàn)對某個數(shù)據(jù)值或操作序列的一致性,比如鎖定管理系統(tǒng)、組播通信、一致性協(xié)調(diào)。卸載共識功能的部分或全部功能卸載到網(wǎng)元,可以減少協(xié)調(diào)延遲,提升分布式系統(tǒng)的可用性。文獻[5]利用可編程交換機實現(xiàn)了一致性算法的網(wǎng)內(nèi)卸載,實驗也證明了在網(wǎng)數(shù)據(jù)共識對分布式系統(tǒng)性能的優(yōu)化。
在網(wǎng)計算對系統(tǒng)的性能優(yōu)化已被廣泛地論證,但是在網(wǎng)計算在架構(gòu)設(shè)計層面還面臨碎片化的問題。目前,在網(wǎng)計算主要根據(jù)應(yīng)用場景進行定制化設(shè)計,滿足相關(guān)應(yīng)用的個性化需求,但是這樣的設(shè)計方法擴展性較差,不利于在網(wǎng)計算的規(guī)?;瘧?yīng)用。
同時,對應(yīng)用開發(fā)者而言,想要基于網(wǎng)絡(luò)設(shè)備的計算能力進行系統(tǒng)設(shè)計,既需要了解上層系統(tǒng)的邏輯架構(gòu),還要了解底層物理網(wǎng)絡(luò)的屬性,包括網(wǎng)絡(luò)設(shè)備的編程能力以及網(wǎng)絡(luò)的規(guī)劃能力。這也進一步提升了在網(wǎng)計算系統(tǒng)的設(shè)計門檻,阻礙了在網(wǎng)計算的應(yīng)用。
為解決上述問題,我們在架構(gòu)設(shè)計層面,從在網(wǎng)計算的通用性和應(yīng)用設(shè)計的友好性出發(fā),設(shè)計了S(任務(wù)調(diào)度層)、C(在網(wǎng)計算控制層)、I(基礎(chǔ)設(shè)施層)3 層通用在網(wǎng)計算架構(gòu),系統(tǒng)架構(gòu)如圖3所示。
▲圖3 通用在網(wǎng)計算架構(gòu)
基礎(chǔ)設(shè)施層包含執(zhí)行計算任務(wù)的端側(cè)主機節(jié)點以及在網(wǎng)計算節(jié)點。由于異構(gòu)網(wǎng)絡(luò)設(shè)備在硬件架構(gòu)方面存在較大差異,這些在網(wǎng)計算節(jié)點能夠提供的計算能力也不同。這意味著同一個在網(wǎng)計算原語在異構(gòu)網(wǎng)絡(luò)設(shè)備內(nèi)部可以有不同的實現(xiàn)方式。針對不同場景下在網(wǎng)計算原語,很多研究進行了分類和總結(jié)[7]。本文在這些研究的基礎(chǔ)上,進一步設(shè)計了面向異構(gòu)在網(wǎng)計算節(jié)點的統(tǒng)一北向接口,在網(wǎng)計算節(jié)點通過北向接口上報在網(wǎng)計算原語信息,對外提供統(tǒng)一的服務(wù)接口。這使得在網(wǎng)計算更具通用性。
在端主機側(cè),應(yīng)用程序也需要進行相應(yīng)適配。網(wǎng)絡(luò)無法保證大部分在網(wǎng)計算應(yīng)用獨立完成計算任務(wù),因此需要通過端網(wǎng)協(xié)同機制來完成。端主機側(cè)應(yīng)用程序需要感知在網(wǎng)計算任務(wù),這樣可以保證計算的完整性,同時可以提高網(wǎng)絡(luò)傳輸?shù)目煽啃?。端主機側(cè)通過北向接口連接端側(cè)任務(wù)控制器,實現(xiàn)端側(cè)計算任務(wù)分配。
在網(wǎng)計算控制層是實現(xiàn)端網(wǎng)協(xié)同在網(wǎng)計算的關(guān)鍵??刂茖影鳈C控制器和在網(wǎng)計算控制器。主機控制器根據(jù)應(yīng)用場景按需部署,主要負(fù)責(zé)主機任務(wù)部署以及端到端的可靠性保障。在網(wǎng)計算控制器主要負(fù)責(zé)通用的網(wǎng)絡(luò)管理以及在網(wǎng)計算任務(wù)部署和控制等。在網(wǎng)計算控制器通過南向接口實現(xiàn)網(wǎng)絡(luò)管理功能,包含網(wǎng)絡(luò)設(shè)備管理以及網(wǎng)絡(luò)拓?fù)涔芾?。網(wǎng)絡(luò)設(shè)備管理包括網(wǎng)絡(luò)設(shè)備狀態(tài)、網(wǎng)絡(luò)設(shè)備負(fù)載、網(wǎng)絡(luò)設(shè)備計算能力、網(wǎng)絡(luò)設(shè)備計算資源管理等,其中網(wǎng)絡(luò)設(shè)備的計算能力是在網(wǎng)計算控制器和傳統(tǒng)網(wǎng)絡(luò)控制器最大的不同。網(wǎng)絡(luò)設(shè)備的計算能力通常通過在網(wǎng)計算原語、在網(wǎng)計算數(shù)據(jù)結(jié)構(gòu)來表示。網(wǎng)絡(luò)拓?fù)涔芾戆ňW(wǎng)絡(luò)拓?fù)涓隆㈡溌窢顟B(tài)監(jiān)控等。主機控制器和在網(wǎng)計算控制器共同實現(xiàn)端網(wǎng)協(xié)同控制,并根據(jù)網(wǎng)絡(luò)資源狀態(tài)綜合選路,為在網(wǎng)計算和轉(zhuǎn)發(fā)選擇一條最優(yōu)路徑。
任務(wù)調(diào)度層實現(xiàn)在網(wǎng)計算系統(tǒng)和應(yīng)用的對接。應(yīng)用將任務(wù)需求提交給統(tǒng)一的任務(wù)調(diào)度器。任務(wù)調(diào)度器通過南向接口對接端側(cè)控制器以及在網(wǎng)計算控制器,收集端側(cè)和網(wǎng)側(cè)的當(dāng)前計算資源狀態(tài)。任務(wù)調(diào)度器結(jié)合應(yīng)用任務(wù)請求及計算資源狀態(tài),基于特定的算法進行計算圖設(shè)計,生成計算節(jié)點之間的邏輯依賴關(guān)系,進而產(chǎn)生具體的任務(wù)分配策略。恰當(dāng)?shù)娜蝿?wù)調(diào)度策略可以實現(xiàn)合理的在網(wǎng)計算資源分配,從而在保證任務(wù)處理性能的同時優(yōu)化網(wǎng)絡(luò)管理。
通用在網(wǎng)計算框架不約束數(shù)據(jù)面轉(zhuǎn)發(fā)協(xié)議。本節(jié)中,我們以數(shù)據(jù)面運行基于IPv6 的段路由(SRv6)協(xié)議為例,說明通用在網(wǎng)計算框架的工作機制。
基于SRv6 的集中式通用在網(wǎng)計算架構(gòu)如圖4 所示。該架構(gòu)未部署主機控制器,任務(wù)調(diào)度器直接對接服務(wù)器,在網(wǎng)計算控制器負(fù)責(zé)承接在網(wǎng)計算任務(wù),數(shù)據(jù)面運行SRv6協(xié)議,SRv6包頭在接入交換機上封裝。
▲圖4 集中式通用在網(wǎng)計算框架
1)管理員配置在網(wǎng)計算控制器,將在網(wǎng)計算原語和在網(wǎng)計算數(shù)據(jù)結(jié)構(gòu)模型配置生成模板庫。
2)網(wǎng)絡(luò)設(shè)備初始化時,上報自身在網(wǎng)計算能力,實現(xiàn)標(biāo)準(zhǔn)的在網(wǎng)計算原語和在網(wǎng)計算數(shù)據(jù)結(jié)構(gòu)。設(shè)備自身的實現(xiàn)可能有計算精度、數(shù)據(jù)范圍等差異。網(wǎng)絡(luò)設(shè)備平穩(wěn)運行后,周期上報自身負(fù)載和在網(wǎng)計算能力變化。
3)調(diào)度器根據(jù)任務(wù)分解策略將計算任務(wù)拆解為主機任務(wù)和在網(wǎng)計算任務(wù),拆解時需要考慮主機和在網(wǎng)計算的能力和資源,然后告知在網(wǎng)計算控制器該任務(wù)具體要執(zhí)行哪些在網(wǎng)計算原語。
4)當(dāng)主機節(jié)點有數(shù)據(jù)要執(zhí)行在網(wǎng)計算時,首先向在網(wǎng)計算控制器發(fā)送請求,說明在網(wǎng)計算任務(wù)ID、源節(jié)點、目的節(jié)點、要執(zhí)行的在網(wǎng)計算原語,然后由UniqueID 對業(yè)務(wù)分配標(biāo)識。
5)在網(wǎng)計算控制器根據(jù)網(wǎng)絡(luò)拓?fù)?、在網(wǎng)計算能力、網(wǎng)絡(luò)負(fù)載等情況進行綜合選路,將選路結(jié)果反饋給主機側(cè),并在網(wǎng)絡(luò)設(shè)備上做在網(wǎng)計算資源預(yù)留。
6)源服務(wù)器發(fā)送數(shù)據(jù)包,接入交換機封裝SRv6頭,各網(wǎng)絡(luò)節(jié)點根據(jù)協(xié)議包頭在網(wǎng)計算指示信息執(zhí)行在網(wǎng)計算。
國際互聯(lián)網(wǎng)工程任務(wù)組(IETF)定義了SRv6段標(biāo)識符(SID)中的Function字段的通用轉(zhuǎn)發(fā)行為[9]。如圖5所示,我們新增了INC Segment 定義在網(wǎng)計算行為。其中,Locator與其他segment保持一致,表示路由位置信息;Function字段表示具體要做的在網(wǎng)計算原語;Arguments指示對應(yīng)Optional TLV(類型、長度、值的組合)的類型,可以由應(yīng)用自行定義;Optional TLV可以用來攜帶在網(wǎng)計算原語所需要的信息,例如需要處理的數(shù)據(jù)偏移、計算需要的參數(shù)等。節(jié)點在執(zhí)行在網(wǎng)計算時,不能影響正常轉(zhuǎn)發(fā),因此需要增加復(fù)合Segment,使在網(wǎng)計算交換機同時支持正常轉(zhuǎn)發(fā)和在網(wǎng)計算能力,具體如圖6所示。復(fù)合Segment用來指示后續(xù)兩個連續(xù)的Segment都需要在本節(jié)點處理,第1 個為正常轉(zhuǎn)發(fā)Segment(Forwarding Segment),第2個為在網(wǎng)計算Segment。
▲圖5 SRH協(xié)議支持在網(wǎng)計算協(xié)議擴充
▲圖6 復(fù)合Segment使交換機同時支持轉(zhuǎn)發(fā)和在網(wǎng)計算
交換機的在網(wǎng)計算原語可以由控制器統(tǒng)一管理,并基于路由協(xié)議進行信息擴展,再傳遞到相應(yīng)的在網(wǎng)計算執(zhí)行節(jié)點。例如,自治域內(nèi)源路由使用內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)來傳播SID和對應(yīng)的Function等信息。以中間系統(tǒng)-中間系統(tǒng)協(xié)議(ISIS)為例,傳遞在網(wǎng)計算可以使用兩種方式。
1)擴展ISIS SRv6協(xié)議中Sub-TLV字段
SRv6 Locator TLV 用于發(fā)布SRv6 Locator 以及該Locator相關(guān)的Endpoint SID。Locator 具有定位功能,一般要在段路由域內(nèi)唯一標(biāo)識,Endpoint SID 用于標(biāo)識網(wǎng)絡(luò)中的某個目的節(jié)點。
ISIS的SRv6 Locator TLV格式如圖7所示。其中,Locator(variable)表示發(fā)布的SRv6 Locator,長度可變;Sub-TLVs(variable)可以根據(jù)類型不同,攜帶不同信息,長度可變。
▲圖7 中間系統(tǒng)-中間系統(tǒng)協(xié)議SRv6 Locator TLV
因此,可以有方案1:擴展Sub-TLVs,新增一種描述在網(wǎng)計算原語信息的報文結(jié)構(gòu)。其中,Type 字段表示在網(wǎng)計算原語類型,Length字段表示Value長度。Value為交換機支持的在網(wǎng)計算原語補充信息,如果Value 等于0 則無補充信息。
2)擴展一種新類型的SRv6 Sub-TLV
ISIS本身有多種Sub-TLV協(xié)議報文格式,分別用來傳遞不同信息。其中,SRv6 Capabilities Sub-TLV 用于通告SRv6能力。SRv6 Capabilities Sub-TLV 的格式如圖8所示。
▲圖8 中間系統(tǒng)-中間系統(tǒng)協(xié)議SRv6 Capabilities Sub-TLV報文格式
因此,可以有方案2:新定義一種用于傳遞在網(wǎng)計算原語能力的Sub-TLV 類型SRv6 INC Sub-TLV。其中,Type 字段為網(wǎng)計算原語能力,Optional Sub-sub-TLVs 為交換機支持的在網(wǎng)計算原語。
目前,可編程網(wǎng)絡(luò)設(shè)備尚不能支持大規(guī)?;蚍涸诘脑诰W(wǎng)計算,主要原因在于可編程硬件片上資源受限。例如Tofino交換芯片,其片上的靜態(tài)隨機存取存儲器(SRAM)、三態(tài)內(nèi)容可尋址存儲器(TCAM)存儲空間約數(shù)十兆字節(jié)[6],只能存儲少量的帶狀態(tài)數(shù)據(jù)。另外,分布式機器學(xué)習(xí)及高性能計算需要在網(wǎng)計算具備高精度浮點數(shù)處理能力,但目前可編程交換芯片只能支持整型數(shù)據(jù)處理。
分布式系統(tǒng)中高并發(fā)、大數(shù)據(jù)量的處理任務(wù)對在網(wǎng)計算資源提出挑戰(zhàn),這導(dǎo)致在網(wǎng)計算的加速性能有限,因此需要設(shè)計跨交換資源的管理機制以及任務(wù)跨設(shè)備的分解調(diào)度機制,以實現(xiàn)在網(wǎng)計算的規(guī)模擴展。交換機資源如何池化以及如何利用控制器進行資源和任務(wù)協(xié)同,還有待進一步研究。
在網(wǎng)計算在轉(zhuǎn)發(fā)的同時要實現(xiàn)對數(shù)據(jù)的處理,這給傳統(tǒng)的可靠性機制帶來了挑戰(zhàn)。網(wǎng)絡(luò)盡力而為的轉(zhuǎn)發(fā)機制可能會造成在網(wǎng)計算結(jié)果錯誤。例如,在網(wǎng)數(shù)據(jù)在聚合過程中會丟棄已聚合的數(shù)據(jù)包,只保留最后的聚合結(jié)果,傳統(tǒng)的可靠性機制會將這一行為判斷為丟包。再如,在網(wǎng)計算設(shè)備可能由于資源不足或其他原因?qū)е聼o法完成在網(wǎng)計算任務(wù),可靠性機制需要能夠靈活判斷和計算。不同的場景對于可靠性的要求不同,這給在網(wǎng)計算的發(fā)展帶來了很大的挑戰(zhàn)。
在網(wǎng)計算需要在網(wǎng)絡(luò)轉(zhuǎn)發(fā)節(jié)點終結(jié)一部分?jǐn)?shù)據(jù)流并進行數(shù)據(jù)操作,這在一定程度上為網(wǎng)絡(luò)引入了安全風(fēng)險。目前,在網(wǎng)計算的主要應(yīng)用和設(shè)計聚焦在安全可控的網(wǎng)絡(luò)場景中。未來,面向通用泛在的在網(wǎng)計算應(yīng)用場景,如何提升系統(tǒng)安全性,降低數(shù)據(jù)計算結(jié)果被篡改的風(fēng)險成為挑戰(zhàn)。
本文分析了在網(wǎng)計算在多種應(yīng)用場景下的共性能力,并針對在網(wǎng)計算系統(tǒng)碎片化問題進行架構(gòu)設(shè)計,提出了S、C、I 的3 層通用在網(wǎng)計算系統(tǒng)架構(gòu)。異構(gòu)在網(wǎng)計算節(jié)點通過統(tǒng)一的北向接口向在網(wǎng)計算控制器上報計算能力,為不同應(yīng)用場景提供共享的網(wǎng)絡(luò)基礎(chǔ)設(shè)施。同時架構(gòu)簡化了在網(wǎng)計算應(yīng)用開發(fā),應(yīng)用只需要向任務(wù)調(diào)度器提出需求,再由任務(wù)調(diào)度器綜合決策,有效避免了應(yīng)用開發(fā)者對底層物理網(wǎng)絡(luò)復(fù)雜邏輯的理解,降低了應(yīng)用開發(fā)門檻。本文以SRv6 數(shù)據(jù)面協(xié)議為例,設(shè)計了通用在網(wǎng)計算的實現(xiàn)機制,同時針對在網(wǎng)計算的通用性和擴展性的提升提出了一些需要關(guān)注的問題。