謝景昭,單煒,肖暢,馬鐵,陳力,虞紅芳,孫罡
(1. 電子科技大學(xué),四川 成都 611731;2. 華為技術(shù)有限公司,廣東 深圳518129)
工業(yè)互聯(lián)網(wǎng)、遠(yuǎn)程醫(yī)療、VR/AR等新興應(yīng)用場景與5G通信、云網(wǎng)融合等新型承載技術(shù)的出現(xiàn),對數(shù)據(jù)網(wǎng)的內(nèi)生能力和性能指標(biāo)提出了更高要求。網(wǎng)絡(luò)技術(shù)創(chuàng)新作為數(shù)據(jù)網(wǎng)發(fā)展的根本動力,是應(yīng)用和業(yè)務(wù)創(chuàng)新的使能條件,是關(guān)乎整個行業(yè)進(jìn)步的關(guān)鍵環(huán)節(jié)。為了凝聚共識,以頂層設(shè)計的方式提出面向未來的網(wǎng)絡(luò)創(chuàng)新目標(biāo),推進(jìn)關(guān)鍵技術(shù)創(chuàng)新和行業(yè)發(fā)展,也有網(wǎng)絡(luò)5.0這樣的網(wǎng)絡(luò)跨代演進(jìn)概念被提出。然而創(chuàng)新技術(shù)的開發(fā)和驗證仍然面臨許多現(xiàn)實性的難題,如成本、效率、安全以及系統(tǒng)復(fù)雜性和可重復(fù)性等,嚴(yán)重阻礙了技術(shù)的創(chuàng)新,因此亟須一個網(wǎng)絡(luò)創(chuàng)新平臺為其提供可用且友好的開發(fā)和實驗環(huán)境??梢娋W(wǎng)絡(luò)創(chuàng)新平臺對網(wǎng)絡(luò)技術(shù)的創(chuàng)新具有重要意義,是網(wǎng)絡(luò)未來發(fā)展的關(guān)鍵。
網(wǎng)絡(luò)創(chuàng)新平臺提供新技術(shù)的開發(fā)環(huán)境以及用于評估和驗證創(chuàng)新技術(shù)的具體實驗場景,通常包括網(wǎng)絡(luò)仿真平臺和網(wǎng)絡(luò)模擬平臺兩類。與完全基于軟件模型的仿真平臺相比,網(wǎng)絡(luò)模擬平臺依賴實體的模擬網(wǎng)絡(luò)進(jìn)行技術(shù)的開發(fā)和實驗,因而更接近實際的網(wǎng)絡(luò)運(yùn)行、更具有現(xiàn)實意義,模擬平臺上開發(fā)的網(wǎng)絡(luò)新技術(shù)也可以更快速地落地部署。盡管目前的網(wǎng)絡(luò)模擬平臺能在一定程度上支持技術(shù)創(chuàng)新,但大多仍存在規(guī)模有限、適用的創(chuàng)新形式單一、可執(zhí)行的操作少、實驗開展難度高等問題,沒有充分挖掘模擬平臺的優(yōu)勢,難以應(yīng)對網(wǎng)絡(luò)未來發(fā)展過程中規(guī)模大且場景復(fù)雜、技術(shù)創(chuàng)新多樣化且發(fā)展迅速的趨勢。
針對網(wǎng)絡(luò)未來的發(fā)展需要,本文提出了一種面向技術(shù)創(chuàng)新的網(wǎng)絡(luò)模擬實驗平臺Klonet。首先,Klonet模擬的網(wǎng)絡(luò)可以根據(jù)需求靈活擴(kuò)展,支持網(wǎng)絡(luò)層、傳輸層、應(yīng)用層等多層次網(wǎng)絡(luò)技術(shù)的創(chuàng)新,符合網(wǎng)絡(luò)進(jìn)入超大規(guī)模時代的特征以及從頂層設(shè)計網(wǎng)絡(luò)的目標(biāo);其次,Klonet支持在實驗的運(yùn)行過程中引入動態(tài)網(wǎng)絡(luò)事件,并為網(wǎng)絡(luò)實驗的完整流程提供相應(yīng)的輔助功能,使得實驗場景更加真實、過程更加便捷,加速了創(chuàng)新概念轉(zhuǎn)化為實際部署的進(jìn)程,從而推動網(wǎng)絡(luò)技術(shù)的創(chuàng)新發(fā)展。通過兩個具體用例分析說明了使用Klonet進(jìn)行網(wǎng)絡(luò)創(chuàng)新的方法,并且展現(xiàn)了Klonet為技術(shù)創(chuàng)新帶來的多種可能性。
通過對比網(wǎng)絡(luò)創(chuàng)新平臺兩類方法的不同實現(xiàn)思路,闡述網(wǎng)絡(luò)仿真的局限性以及網(wǎng)絡(luò)模擬在開發(fā)和測試網(wǎng)絡(luò)創(chuàng)新技術(shù)上的優(yōu)勢,并對幾種具有代表性的網(wǎng)絡(luò)模擬平臺進(jìn)行分析,同時指出它們面對技術(shù)創(chuàng)新時的不足。
當(dāng)前存在多種用于開發(fā)、評估和驗證新技術(shù)的網(wǎng)絡(luò)創(chuàng)新平臺,按照本質(zhì)實現(xiàn)方法的不同將這些平臺分為兩類:網(wǎng)絡(luò)仿真平臺和網(wǎng)絡(luò)模擬平臺。網(wǎng)絡(luò)仿真平臺依據(jù)離散事件模型為真實網(wǎng)絡(luò)的邏輯結(jié)構(gòu)和運(yùn)行狀態(tài)建模,通過逐層嵌套的軟件模塊構(gòu)建網(wǎng)絡(luò)系統(tǒng)抽象,是一種完全基于軟件的實現(xiàn)方法,比較具有代表性的仿真平臺有OMNeT++[1]、NS3[2]和OPNET[3]等。網(wǎng)絡(luò)模擬平臺則通過物理設(shè)備或虛擬化技術(shù)構(gòu)建實際的網(wǎng)絡(luò),對真實網(wǎng)絡(luò)進(jìn)行模擬,該模擬網(wǎng)絡(luò)與目標(biāo)網(wǎng)絡(luò)的原型相同或是對其最小規(guī)模的近似,是模擬平臺的實現(xiàn)基礎(chǔ),其中比較有代表性的模擬平臺包括PlanetLab[4]、Emulab[5]和Mininet[6]等。
網(wǎng)絡(luò)仿真依賴于對網(wǎng)絡(luò)的建模,是一種在事件、時序、語義層面上對網(wǎng)絡(luò)的模仿,所以網(wǎng)絡(luò)仿真過程中沒有真實的網(wǎng)絡(luò)應(yīng)用、協(xié)議或報文,因此網(wǎng)絡(luò)仿真存在許多固有的局限性。
首先,仿真模型要盡量完美地反映、捕捉現(xiàn)實中的實體對象、操作邏輯和動作行為,因此對建模的要求很高、建立模型的過程很難;其次,仿真只是一種邏輯和數(shù)學(xué)上的表示和計算,而不是網(wǎng)絡(luò)系統(tǒng)中的真實實現(xiàn),因此通過仿真實現(xiàn)和測試的網(wǎng)絡(luò)創(chuàng)新與能夠在實際網(wǎng)絡(luò)中部署的成品間還存在非常大的差距;最后,仿真實驗中的理想模型與真實網(wǎng)絡(luò)環(huán)境中的實際運(yùn)行情況也很難保持完全一致,因此對網(wǎng)絡(luò)運(yùn)行的還原度較低。可見依賴網(wǎng)絡(luò)仿真方法構(gòu)建的創(chuàng)新環(huán)境,只能對網(wǎng)絡(luò)創(chuàng)新做相對理想化的分析和評估。
網(wǎng)絡(luò)模擬通過物理或虛擬形式的模擬網(wǎng)絡(luò)來分析真實網(wǎng)絡(luò)系統(tǒng)中的行為和表現(xiàn),以此對運(yùn)行在模擬網(wǎng)絡(luò)上的創(chuàng)新技術(shù)進(jìn)行評估和驗證。模擬網(wǎng)絡(luò)在終端節(jié)點方面,包含真實的操作系統(tǒng),具有完整的內(nèi)核協(xié)議棧,可發(fā)送標(biāo)準(zhǔn)分組,可運(yùn)行真實的網(wǎng)絡(luò)應(yīng)用;在網(wǎng)絡(luò)節(jié)點方面,運(yùn)行真實網(wǎng)絡(luò)設(shè)備的固件或軟件,執(zhí)行真實的網(wǎng)絡(luò)協(xié)議,可交換和轉(zhuǎn)發(fā)標(biāo)準(zhǔn)分組;在網(wǎng)絡(luò)工具方面,具有同真實網(wǎng)絡(luò)一致的測試工具、配置工具和程序腳本等,其交互模式同生產(chǎn)網(wǎng)絡(luò)一致。
對比基于軟件模型的網(wǎng)絡(luò)仿真,模擬方法中的各類對象和事件是真實存在和發(fā)生的,不依賴煩瑣的模型語言描述;在模擬網(wǎng)絡(luò)上開發(fā)和測試創(chuàng)新實例,所使用的方法和工具與在實際網(wǎng)絡(luò)中相同,創(chuàng)新成果更接近于能夠在現(xiàn)網(wǎng)中部署的形式;模擬方法中的測試結(jié)果是網(wǎng)絡(luò)實體間相互作用的真實體現(xiàn),因此得到的評估和驗證結(jié)果也更能反映網(wǎng)絡(luò)創(chuàng)新在真實運(yùn)行情況下的性能和表現(xiàn)。總而言之,網(wǎng)絡(luò)模擬能夠高度還原真實網(wǎng)絡(luò)的運(yùn)行過程,基于模擬開發(fā)的網(wǎng)絡(luò)創(chuàng)新實例更接近于實際部署,實驗結(jié)果更為可信。
許多機(jī)構(gòu)和高校設(shè)計實現(xiàn)了網(wǎng)絡(luò)模擬平臺用于網(wǎng)絡(luò)研究和技術(shù)創(chuàng)新工作,其中常見的有如下3個。
(1)SDN原型測試工具M(jìn)ininet
Mininet支持在單臺主機(jī)上快速地構(gòu)建大型SDN,憑借其輕量、易用等特點Mininet已經(jīng)成為近幾年熱門的網(wǎng)絡(luò)模擬工具。利用Linux的容器技術(shù),Mininet可以輕松地在單臺主機(jī)上快速搭建一個包含上百網(wǎng)絡(luò)節(jié)點和吉比特級別鏈路的虛擬網(wǎng)絡(luò),以支撐SDN系統(tǒng)的創(chuàng)新和研究工作。然而,受限于單機(jī)的計算資源,Mininet不能支持大規(guī)?;蛸Y源敏感的網(wǎng)絡(luò)技術(shù)、應(yīng)用進(jìn)行創(chuàng)新和實驗。
(2)分布式系統(tǒng)開發(fā)平臺PlanetLab
PlanetLab向網(wǎng)絡(luò)研究人員提供全球覆蓋的網(wǎng)絡(luò)平臺,以支持全球級別大規(guī)模網(wǎng)絡(luò)服務(wù)或應(yīng)用的開發(fā)工作[7],自上線以來取得了非常大的成功。PlanetLab通過虛擬機(jī)向用戶提供上層的overlay網(wǎng)絡(luò),服務(wù)切片初始化后可作為獨(dú)立的網(wǎng)絡(luò)實驗資源被用戶訪問和控制,用于業(yè)務(wù)和應(yīng)用的創(chuàng)新開發(fā)。然而,PlanetLab只模擬端到端的應(yīng)用層網(wǎng)絡(luò),缺乏對網(wǎng)絡(luò)拓?fù)浜途W(wǎng)元功能的考慮,無法用于底層網(wǎng)絡(luò)技術(shù)的創(chuàng)新。
(3)網(wǎng)絡(luò)控制平面模擬器CrystalNet
CrystalNet[8]是微軟提出的網(wǎng)絡(luò)模擬平臺,利用Docker模擬大規(guī)模的生產(chǎn)網(wǎng)絡(luò),并承諾其具有高保真的控制平面。新網(wǎng)絡(luò)架構(gòu)、設(shè)備固件和配置策略被實際部署之前,可以首先利用CrystalNet進(jìn)行測試以驗證其正確性,從而減少各種未知錯誤可能對生產(chǎn)網(wǎng)絡(luò)造成的影響以及隨之而來的經(jīng)濟(jì)損失。然而,CrystalNet僅模擬網(wǎng)絡(luò)的控制面,不提供網(wǎng)絡(luò)的數(shù)據(jù)面屬性,難以應(yīng)用于與數(shù)據(jù)面相關(guān)的技術(shù)創(chuàng)新之中。
綜上所述,現(xiàn)有的網(wǎng)絡(luò)模擬平臺常常聚焦于網(wǎng)絡(luò)的個別特征,缺乏全方位模擬大規(guī)模網(wǎng)絡(luò)的能力,只支持特定類型或特定場景下的網(wǎng)絡(luò)技術(shù)創(chuàng)新。并且這些平臺部署的模擬網(wǎng)絡(luò)大部分是“靜態(tài)的”,缺少細(xì)粒度的網(wǎng)元、鏈路操作能力,很難模擬像鏈路增加、移除這樣的網(wǎng)絡(luò)動態(tài)事件。此外很少有平臺考慮專門輔助網(wǎng)絡(luò)實驗的功能,因此需要額外借助多種工具用于分析研究,不利于新技術(shù)的評估和驗證??梢姡绾卧O(shè)計一個以技術(shù)創(chuàng)新為目標(biāo)的網(wǎng)絡(luò)模擬實驗平臺,仍是一個充滿挑戰(zhàn)且十分重要問題。
鑒于已有平臺在功能特性上的缺陷和不足,以網(wǎng)絡(luò)發(fā)展現(xiàn)狀、技術(shù)創(chuàng)新的一般性要求以及網(wǎng)絡(luò)實驗的常見需求為基礎(chǔ),分析了Klonet的總體設(shè)計目標(biāo)。
(1)靈活的規(guī)??蓴U(kuò)展能力
不斷擴(kuò)大的網(wǎng)絡(luò)規(guī)模是通信網(wǎng)絡(luò)發(fā)展的顯著特征之一,并且隨著網(wǎng)絡(luò)向工業(yè)、醫(yī)療、交通和市政等領(lǐng)域的垂直延伸,仍有更多的人和海量的新設(shè)備在持續(xù)接入互聯(lián)網(wǎng)絡(luò)。這意味著許多未來的網(wǎng)絡(luò)難題和網(wǎng)絡(luò)創(chuàng)新理念是以大規(guī)模的網(wǎng)絡(luò)系統(tǒng)、網(wǎng)絡(luò)應(yīng)用為背景的,也意味著網(wǎng)絡(luò)創(chuàng)新技術(shù)的開發(fā)和實驗需要大規(guī)模的網(wǎng)絡(luò)環(huán)境作為支撐。因此,Klonet要靈活應(yīng)對網(wǎng)絡(luò)技術(shù)對實驗規(guī)模的需求,其部署的模擬網(wǎng)絡(luò),以及相應(yīng)的平臺資源和平臺整體架構(gòu)都應(yīng)該易于規(guī)模的擴(kuò)展。
(2)全方位的網(wǎng)絡(luò)模擬能力
某些網(wǎng)絡(luò)技術(shù)依賴網(wǎng)絡(luò)的部分特征就能進(jìn)行開發(fā)和實驗。例如,分布式應(yīng)用只重視端到端鏈路的數(shù)據(jù)面屬性,網(wǎng)絡(luò)拓?fù)?、網(wǎng)絡(luò)節(jié)點和網(wǎng)絡(luò)操作并不受重視。但是就路由協(xié)議的創(chuàng)新而言,又需要關(guān)心拓?fù)浣Y(jié)構(gòu)和節(jié)點行為,僅模擬端到端鏈路明顯不夠。所以要真正服務(wù)于網(wǎng)絡(luò)的頂層設(shè)計,滿足網(wǎng)絡(luò)技術(shù)從3層到5層的創(chuàng)新需求,網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)、網(wǎng)絡(luò)層次、網(wǎng)元功能、控制面行為以及數(shù)據(jù)面屬性等因素都不可或缺。因此,Klonet要對實際網(wǎng)絡(luò)進(jìn)行全方位的模擬。
(3)細(xì)粒度的網(wǎng)絡(luò)管理能力
(4)實驗工作流的支撐能力
開展網(wǎng)絡(luò)實驗是復(fù)雜的過程。完整的實驗工作流主要包括網(wǎng)絡(luò)拓?fù)湓O(shè)計、網(wǎng)絡(luò)參數(shù)配置、網(wǎng)絡(luò)流量生成以及最后的實驗數(shù)據(jù)獲取等步驟[9],該流程中的大部分工作很煩瑣且容易出錯,并且在模擬網(wǎng)絡(luò)中生成網(wǎng)絡(luò)流量、收集網(wǎng)絡(luò)運(yùn)行數(shù)據(jù)還需額外借助多種網(wǎng)絡(luò)應(yīng)用和工具。所以當(dāng)實驗規(guī)模較大時,評估和驗證新技術(shù)的難度以及花費(fèi)的大量時間都顯而易見,這極大阻礙了創(chuàng)新概念的快速落地。因此,為了加快技術(shù)創(chuàng)新的進(jìn)程,Klonet要提供與某些實驗步驟相關(guān)的支撐功能。
針對上述設(shè)計目標(biāo),從平臺的系統(tǒng)架構(gòu)、模擬網(wǎng)絡(luò)的構(gòu)建方法、模擬網(wǎng)絡(luò)管理的關(guān)鍵實現(xiàn)以及支撐實驗的具體功能4個方面,對本文面向技術(shù)創(chuàng)新的網(wǎng)絡(luò)模擬實驗平臺Klonet展開論述。
隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,規(guī)模擴(kuò)展能力將會成為網(wǎng)絡(luò)創(chuàng)新平臺最重要的特性。系統(tǒng)架構(gòu)作為平臺的根本設(shè)計,關(guān)乎基礎(chǔ)資源提供、基礎(chǔ)網(wǎng)絡(luò)性能保證以及模擬網(wǎng)絡(luò)擴(kuò)展等重要問題。Klonet系統(tǒng)架構(gòu)如圖1所示。其中,基礎(chǔ)設(shè)施是平臺網(wǎng)絡(luò)和計算資源的根本;模擬網(wǎng)絡(luò)是平臺部署的虛擬網(wǎng)絡(luò),是開展網(wǎng)絡(luò)技術(shù)創(chuàng)新的實際環(huán)境;控制框架是平臺各類控制邏輯的集合,負(fù)責(zé)解析指令并執(zhí)行各類操作;應(yīng)用接口是用戶與平臺交互、開展實驗的接口。
圖1 Klonet系統(tǒng)架構(gòu)
由于資源限制,單臺主機(jī)無法承載大規(guī)模的模擬網(wǎng)絡(luò),更不用談有效的性能保障。所以Klonet的基礎(chǔ)設(shè)施由多臺高性能物理主機(jī)和其底層的高性能物理網(wǎng)絡(luò)(高帶寬、低時延)共同組成。一方面充足的計算能力可以滿足實驗規(guī)模擴(kuò)展的資源需求,同時還能減小干擾、保證性能隔離;另一方面在一定范圍內(nèi)可信且高性能的物理鏈路,能夠為模擬網(wǎng)絡(luò)鏈路屬性的模擬提供基本的網(wǎng)絡(luò)性能支持。
技術(shù)創(chuàng)新環(huán)境可以靈活擴(kuò)展,意味著模擬網(wǎng)絡(luò)能夠在底層分布式的基礎(chǔ)設(shè)施上任意地擴(kuò)展部署,所以Klonet通過計算和網(wǎng)絡(luò)虛擬化技術(shù),利用虛擬網(wǎng)元和虛擬鏈路,在物理underlay網(wǎng)絡(luò)的基礎(chǔ)上,搭建統(tǒng)一的overlay網(wǎng)絡(luò)用于網(wǎng)絡(luò)創(chuàng)新實驗,解決了擴(kuò)展創(chuàng)新實驗規(guī)模的首要問題。
非混合型污染污染物大多呈液態(tài)形式,主要是由于大范圍的開采石油以及相類似的石油產(chǎn)品造成的污染。這種污染情況大多數(shù)出現(xiàn)在電子、化工等工廠附近,被污染后的水源一部分揮發(fā)滯留在地面一層,還有一部分會層層滲透,最終到達(dá)地下水一層。
當(dāng)規(guī)模擴(kuò)展時,控制框架必須將底層分布式的資源、分散部署的模擬網(wǎng)絡(luò)以及上層集中的用戶接口有效地整合到一起。為此Klonet采用分層的控制框架,通過程序與數(shù)據(jù)的分離、主從控制邏輯的拆分以及動作執(zhí)行和軟硬件接口的解耦,在有效整合上下層的同時進(jìn)一步提高平臺的可擴(kuò)展性。首先,控制框架將程序處理所需的關(guān)鍵數(shù)據(jù)從進(jìn)程內(nèi)存中剝離,通過統(tǒng)一的運(yùn)維數(shù)據(jù)庫維護(hù)和存儲,從可存儲的數(shù)據(jù)規(guī)模方面提高了可擴(kuò)展性,同時也提高了平臺運(yùn)行的可靠性。其次,控制架構(gòu)按照主從的形式拆分控制邏輯。主控制器是平臺控制邏輯的核心,對上層的用戶指令進(jìn)行分析和處理,并向下層的各個從控制器發(fā)送相應(yīng)的控制信號;從控制器則與物理主機(jī)一一對應(yīng),根據(jù)自身邏輯分析下達(dá)的命令,對主機(jī)執(zhí)行相應(yīng)的操作。主從設(shè)計在降低集中控制邏輯處理復(fù)雜度的同時,通過一定程度上的自治能力降低了多主機(jī)管理的難度,更利于規(guī)模的擴(kuò)展。最后,Klonet憑借資源適配器將主機(jī)的各類軟硬件資源封裝為統(tǒng)一的網(wǎng)元操作和鏈路操作接口(如網(wǎng)元的創(chuàng)建、停止、銷毀等)供從控制器調(diào)用,使邏輯上的執(zhí)行與具體的資源操作解耦,不僅降低了從控制器管控多維資源的難度,更提高了控制框架對底層資源的兼容性和平臺規(guī)模的擴(kuò)展能力。
面對底層分布式的物理資源以及分散部署的模擬網(wǎng)絡(luò),用戶需要統(tǒng)一的上層接口操作實驗平臺、進(jìn)行大規(guī)模的網(wǎng)絡(luò)實驗。一方面考慮到圖形化界面操作直觀、實時性高、可交互性強(qiáng),另一方面考慮到編程接口較高的靈活性和較高的可定制能力,所以Klonet的應(yīng)用接口由圖形接口和編程接口共同組成,不僅滿足應(yīng)用接口的易用性和功能性,也能夠應(yīng)對大規(guī)模創(chuàng)新環(huán)境帶來的挑戰(zhàn)。
Klonet構(gòu)建的模擬網(wǎng)絡(luò),是實際部署網(wǎng)絡(luò)創(chuàng)新技術(shù)、開展創(chuàng)新實驗的網(wǎng)絡(luò)環(huán)境。為了提供真實、豐富的網(wǎng)絡(luò)實驗場景,支持多種網(wǎng)絡(luò)技術(shù)的行為驗證和性能評估,模擬網(wǎng)絡(luò)應(yīng)該具備任意拓?fù)涞哪M能力,多種網(wǎng)元功能、網(wǎng)絡(luò)層次的模擬能力,以及網(wǎng)絡(luò)控制面和數(shù)據(jù)面的模擬能力。
第一,為了實現(xiàn)任意拓?fù)涞哪M能力,Klonet首先構(gòu)建一個具有任意拓?fù)涞摹岸泳W(wǎng)絡(luò)”。從overlay網(wǎng)絡(luò)的視角來看,虛擬網(wǎng)元要按照任意的連接關(guān)系,通過一條虛擬的二層鏈路互連起來,虛擬網(wǎng)元的網(wǎng)絡(luò)命名空間獨(dú)立,等同于物理的網(wǎng)絡(luò)設(shè)備,而虛擬鏈路要等同于由兩個物理網(wǎng)絡(luò)端口和一條物理網(wǎng)線形成的點到點連接,從而在overlay網(wǎng)絡(luò)的層面達(dá)成真正意義上的任意拓?fù)?。第二,實現(xiàn)多種網(wǎng)元功能、網(wǎng)絡(luò)層次,以及網(wǎng)絡(luò)控制面的模擬能力,實際是要將各層、各類的網(wǎng)絡(luò)設(shè)備軟件以及終端的網(wǎng)絡(luò)應(yīng)用安裝、運(yùn)行到“二層網(wǎng)絡(luò)”的虛擬網(wǎng)元中,而網(wǎng)絡(luò)控制面則會由這些設(shè)備軟件間的網(wǎng)絡(luò)行為形成。第三,為了實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)面的模擬能力,Klonet在“二層網(wǎng)絡(luò)”中的端口設(shè)備上設(shè)置特定的端口規(guī)則,模擬帶寬、時延等數(shù)據(jù)面屬性,最終使該“二層網(wǎng)絡(luò)”逐步構(gòu)建為具有多種網(wǎng)絡(luò)模擬能力的模擬網(wǎng)絡(luò),如圖2所示。
圖2 模擬網(wǎng)絡(luò)構(gòu)建方法
對于虛擬網(wǎng)元的實現(xiàn)。考慮到虛擬網(wǎng)元要具有獨(dú)立的網(wǎng)絡(luò)命名空間、要能夠安裝和運(yùn)行軟件應(yīng)用,并且要具備一定的性能隔離能力,所以Klonet采用虛擬機(jī)或容器作為解決方案。虛擬機(jī)具有完整的操作系統(tǒng)內(nèi)核,性能隔離性好,但較為笨重;容器資源開銷小、輕量且靈活,但缺點在于容器共享宿主機(jī)內(nèi)核,性能干擾較大。因此要根據(jù)不同的性能需求來選擇不同的虛擬化技術(shù)。
對于虛擬鏈路的實現(xiàn)。考慮到要構(gòu)建等同于真實設(shè)備間的點到點連接,網(wǎng)元中要有真實的網(wǎng)卡設(shè)備來配置隊列規(guī)則,所以對于同宿主機(jī)上的網(wǎng)元,Klonet采用vethpair[10]以及tap與虛擬網(wǎng)橋的組合建立容器以及虛擬機(jī)之間的虛擬鏈路;對于不同宿主機(jī)上的網(wǎng)元,Klonet以前者虛擬鏈路為基礎(chǔ),通過添加VxLAN隧道或配置VLAN實現(xiàn)虛擬鏈路。最后使用Linuxtc設(shè)置鏈路的數(shù)據(jù)面屬性。
Klonet支持在實驗運(yùn)行過程中對其模擬網(wǎng)絡(luò)進(jìn)行多種管理操作行為,如網(wǎng)元的創(chuàng)建和刪除、鏈路的增加和移除、創(chuàng)新實例的啟動和停止等。這些操作行為不僅可以幫助用戶將動態(tài)事件引入模擬網(wǎng)絡(luò),使其具有真實場景下復(fù)雜多樣的變化,還可以幫助用戶靈活地管理實例的運(yùn)行狀態(tài)、修改網(wǎng)絡(luò)拓?fù)?、改善實驗方案。另外Klonet還提供實時的網(wǎng)絡(luò)拓?fù)湔故竟δ?,從而提高模擬網(wǎng)絡(luò)的可視化水平和可操作性。
實現(xiàn)網(wǎng)絡(luò)管理操作以及網(wǎng)絡(luò)拓?fù)湔故镜年P(guān)鍵在于模擬網(wǎng)絡(luò)的描述信息,如果有數(shù)據(jù)模型能夠維護(hù)模擬網(wǎng)絡(luò)的狀態(tài)信息,平臺就可以根據(jù)這些數(shù)據(jù)進(jìn)行相應(yīng)的網(wǎng)元和鏈路操作,或根據(jù)數(shù)據(jù)模型來繪制圖形化的拓?fù)浣缑妗?/p>
對于模擬網(wǎng)絡(luò)的展示,需要一種靜態(tài)的模擬網(wǎng)絡(luò)模型向圖形接口描述當(dāng)前時刻的網(wǎng)絡(luò)狀態(tài)以繪制對應(yīng)的界面。當(dāng)然,這類模型同樣可以描述用戶設(shè)計的網(wǎng)絡(luò)拓?fù)洌?wù)于網(wǎng)絡(luò)拓?fù)涠ㄖ乒δ?。為此Klonet設(shè)計了JSON數(shù)據(jù)格式的拓?fù)涿枋鑫募?,作為平臺描述模擬網(wǎng)絡(luò)的規(guī)范模型。但是由于其靜態(tài)性,該模型很難跟蹤模擬網(wǎng)絡(luò)的動態(tài)改變、描述模擬網(wǎng)絡(luò)的實時狀態(tài),而實驗過程中對已部署網(wǎng)絡(luò)的動態(tài)操作和修改又勢必會改變其狀態(tài)以及相應(yīng)的模型表示。
所以Klonet還基于Redis設(shè)計了模擬網(wǎng)絡(luò)的動態(tài)模型。動態(tài)模型的特點是會隨著模擬網(wǎng)絡(luò)狀態(tài)的改變而變化。當(dāng)短時間內(nèi)有大量動態(tài)事件發(fā)生時,動態(tài)模型會隨之產(chǎn)生大量更新,所以適合使用非關(guān)系的內(nèi)存型數(shù)據(jù)庫維護(hù)和存儲。Redis執(zhí)行速度快、適用于頻繁讀寫的場景,并且其鍵值(key-value)存儲系統(tǒng)的性質(zhì),非常利于其動態(tài)表項與JSON格式的靜態(tài)文件進(jìn)行相互轉(zhuǎn)換。綜上,Klonet采用Redis作為運(yùn)維數(shù)據(jù)庫,并以Redis的表項對模擬網(wǎng)絡(luò)中的各類實體進(jìn)行了重新刻畫,最終形成網(wǎng)絡(luò)的動態(tài)模型。
模擬網(wǎng)絡(luò)部署時,靜態(tài)的拓?fù)涿枋霰粚嵗癁樘摂M網(wǎng)元和虛擬鏈路,同時也被實例化為運(yùn)維數(shù)據(jù)庫中的動態(tài)模型。當(dāng)用戶管理和操作模擬網(wǎng)絡(luò)時,控制框架會以動態(tài)模型作為數(shù)據(jù)支持來執(zhí)行相應(yīng)的動作,并按照動作的執(zhí)行結(jié)果進(jìn)行相應(yīng)的模型更新。對于拓?fù)湔故?,圖形接口會定期向控制框架請求當(dāng)前時刻的模擬網(wǎng)絡(luò)描述,控制框架收到請求后將讀取運(yùn)維數(shù)據(jù)庫中此刻的網(wǎng)絡(luò)數(shù)據(jù),并把這些數(shù)據(jù)轉(zhuǎn)換為網(wǎng)絡(luò)的靜態(tài)模型,然后返回到圖形接口用于界面繪制。
考慮到拓?fù)浣Y(jié)構(gòu)、網(wǎng)絡(luò)流量和實驗結(jié)果等網(wǎng)絡(luò)實驗的基本要素[9],Klonet對實驗的支撐能力主要包括網(wǎng)絡(luò)拓?fù)涠ㄖ?、多種流量發(fā)生和實驗結(jié)果分析的功能,給予網(wǎng)絡(luò)實驗必要的功能助力,節(jié)省開發(fā)、測試、分析網(wǎng)絡(luò)創(chuàng)新技術(shù)所需的時間,簡化實驗過程,降低技術(shù)創(chuàng)新門檻。在實驗中,網(wǎng)絡(luò)拓?fù)涠ㄖ茖崿F(xiàn)任意網(wǎng)絡(luò)拓?fù)涞撵`活設(shè)計和部署,多種流量發(fā)生向模擬網(wǎng)絡(luò)注入不同分布、不同模式的流量,實驗結(jié)果分析提供對網(wǎng)絡(luò)指標(biāo)和協(xié)議行為的監(jiān)控、統(tǒng)計、分析和呈現(xiàn),如圖3所示。
圖3 Klonet實驗支撐功能
(1)網(wǎng)絡(luò)拓?fù)涠ㄖ?/p>
Klonet提供兩類拓?fù)涠ㄖ品椒?,圖形化接口定制和編寫拓?fù)涿枋鑫募ㄖ疲謩e對應(yīng)使用圖形接口和編程接口兩種部署方式。圖形化方法在采用典型拓?fù)淠0澹ㄈ鏣ree、FatTree、BCube等)的基礎(chǔ)上手動拖曳網(wǎng)元、鏈路的形式定制拓?fù)?;或者可以完全由手動拖曳網(wǎng)元、鏈路設(shè)計。典型模板用來快速生成大規(guī)模的拓?fù)涔歉桑謩油献t在此基礎(chǔ)上進(jìn)行微調(diào)。拓?fù)湓O(shè)計完成之后,圖形接口會生成相應(yīng)的規(guī)范化拓?fù)涿枋鑫募?。該方法可有效減輕拓?fù)浣Y(jié)構(gòu)設(shè)計負(fù)擔(dān),適應(yīng)特異網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的交互式設(shè)計要求,使拓?fù)涠ㄖ聘又庇^、便捷,交互性更強(qiáng)。編寫拓?fù)涿枋鑫募姆椒ㄒ髮嶒炄藛T向平臺提交可讀的拓?fù)涿枋鑫募?,描繪定制后的拓?fù)浣Y(jié)構(gòu)。所以相較于交互式的手動拖曳,通過程序腳本可以自動化生成規(guī)范的拓?fù)涿枋?,能夠高效定制大?guī)模、有規(guī)律的拓?fù)洌⑶铱梢越馕鲆延械耐負(fù)鋽?shù)據(jù)集和其他平臺的拓?fù)湮募?,便于現(xiàn)有網(wǎng)絡(luò)描述的移植,豐富定制拓?fù)浣Y(jié)構(gòu)的方法。
(2)多種流量發(fā)生
定制好的網(wǎng)絡(luò)拓?fù)浔徊渴鸬接布汉螅魶]有業(yè)務(wù)流量的注入,則只存在路由交換協(xié)議、DHCP等控制平面協(xié)議產(chǎn)生的控制面流量,無法滿足對數(shù)據(jù)面操作行為的觀察和性能指標(biāo)的評估。為了解決這一問題,Klonet提供包含數(shù)據(jù)流生成和數(shù)據(jù)包生成的多種流量發(fā)生功能,向網(wǎng)絡(luò)數(shù)據(jù)面注入可靈活定制的高速數(shù)據(jù)流量。數(shù)據(jù)流生成基于系統(tǒng)的傳輸層接口,Klonet允許用戶定制流請求大小的累積分布函數(shù),請求總時間和期望吞吐等參數(shù)。數(shù)據(jù)包生成則憑借構(gòu)包、發(fā)包的方式產(chǎn)生流量,Klonet允許用戶定制報文的字段格式、取值和長度,允許定制包長的分布,允許按照符合指定分布的時間間隔發(fā)送數(shù)據(jù)包。另外,Klonet還將Iperf以程序化接口的形式提供給用戶,用戶可以利用Iperf產(chǎn)生背景流,也可以在Iperf的基礎(chǔ)上通過編程的方式靈活定義流量發(fā)生模式。
(3)實驗結(jié)果分析
實驗結(jié)果分析是開發(fā)者在平臺上開發(fā)、驗證網(wǎng)絡(luò)創(chuàng)新技術(shù)的最后一步,為此Klonet的實驗結(jié)果分析功能從控制面的協(xié)議行為分析和數(shù)據(jù)面的性能結(jié)果獲取兩個方向出發(fā),對模擬網(wǎng)絡(luò)進(jìn)行監(jiān)測。網(wǎng)絡(luò)監(jiān)測主要基于網(wǎng)絡(luò)端口上的報文抓取,為了提高抓包效率、減小抓包開銷,平臺引入可編程的eBPF技術(shù)在內(nèi)核中設(shè)置鉤子捕獲事件信息,使報文信息獲取更加輕量且賦予其更加豐富的定制化能力。對于可定制的協(xié)議分析部分,平臺提供對常用協(xié)議的報文過濾能力以及字段提取、分析能力,可按照協(xié)議類型或字段類型對報文進(jìn)行抓取、聚合等操作。對于性能結(jié)果的獲取,平臺提供部分常見性能指標(biāo)(如吞吐率)的計算獲取。與網(wǎng)元資源用量有關(guān)的分析和驗證,平臺主要通過集成Prometheus監(jiān)控系統(tǒng)實現(xiàn),支持對計算、存儲等資源使用情況的收集、存儲和處理。實驗結(jié)果分析功能允許通過可視化接口或描述文件對具體的監(jiān)控事件進(jìn)行定制,支持監(jiān)測數(shù)據(jù)的可視化分析,并且允許以文件形式導(dǎo)出原始數(shù)據(jù)和結(jié)果圖像。
通過對兩類面向不同網(wǎng)絡(luò)研究問題的實驗場景分析,具體說明平臺對網(wǎng)絡(luò)技術(shù)創(chuàng)新的支撐能力,以及利用平臺開展實驗的大致方法。
TCP作為互聯(lián)網(wǎng)的主流傳輸協(xié)議,其擁塞控制方法對端到端數(shù)據(jù)傳輸?shù)男阅鼙憩F(xiàn)和帶寬資源的使用情況具有重大影響。隨著近年來網(wǎng)絡(luò)環(huán)境愈發(fā)復(fù)雜、網(wǎng)絡(luò)應(yīng)用場景愈發(fā)多樣的發(fā)展趨勢,網(wǎng)絡(luò)擁塞控制方法仍在面臨著源源不斷的需求和挑戰(zhàn),該研究也一直都是網(wǎng)絡(luò)創(chuàng)新中的熱點。
為了在現(xiàn)實中評估擁塞控制算法,基于UDP套接字的用戶態(tài)實現(xiàn)方式通常會被采用[11],該方法不用改動內(nèi)核協(xié)議棧中的具體實現(xiàn),可以作為用戶態(tài)應(yīng)用程序執(zhí)行。另外,為了理解算法的真實表現(xiàn),通常要在廣域網(wǎng)鏈路、衛(wèi)星鏈路等不同的網(wǎng)絡(luò)條件下對其進(jìn)行測試。
在用戶態(tài)進(jìn)行擁塞控制研究以及模擬復(fù)雜的網(wǎng)絡(luò)鏈路場景Klonet都能夠支持。首先,Klonet構(gòu)建的模擬網(wǎng)絡(luò),其虛擬網(wǎng)元采用虛擬機(jī)或容器實現(xiàn),具有完整的內(nèi)核協(xié)議棧,易于封裝和執(zhí)行用戶態(tài)的算法實現(xiàn)。其次,Klonet能夠模擬網(wǎng)絡(luò)數(shù)據(jù)面的多種屬性并支持屬性的定制化配置,具體見表1。通過對帶寬、往返時延、丟包率以及端口緩存大小等屬性的有機(jī)組合,可以模擬出多種不同的網(wǎng)絡(luò)條件用于性能表現(xiàn)的評估(如吞吐率、緩存占用率、時延敏感性、公平性等)。最后,Klonet的Web接口可以幫助用戶進(jìn)行可視化的拓?fù)涠ㄖ坪玩溌穼傩耘渲茫趯嶒炦^程中便捷引入新的鏈路競爭以及改變網(wǎng)絡(luò)屬性。Klonet使得擁塞控制算法的開發(fā)和實驗可以更靈活、高效地開展。
表1 網(wǎng)絡(luò)屬性定制能力
隨著5G時代的到來和網(wǎng)絡(luò)應(yīng)用場景的不斷擴(kuò)展,基于IPv6的網(wǎng)絡(luò)應(yīng)用創(chuàng)新和網(wǎng)絡(luò)協(xié)議創(chuàng)新成為下一代互聯(lián)網(wǎng)的重要發(fā)展動力。其中,IPv6段路由SRv6作為最具代表性的創(chuàng)新協(xié)議之一,憑借其易擴(kuò)展、易編程、高可靠等特性吸引了廣大的研究人員,也有不少方案已經(jīng)落地部署。
利用Klonet可以設(shè)計、搭建完整的網(wǎng)絡(luò)測試環(huán)境,用于SRv6創(chuàng)新實例的功能性驗證,參考網(wǎng)絡(luò)場景如圖4所示。該網(wǎng)絡(luò)由兩部分組成,一部分是控制和管理平面,另一部分是數(shù)據(jù)平面。對于數(shù)據(jù)平面的模擬,Klonet能夠在“二層網(wǎng)絡(luò)”的虛擬節(jié)點中安裝、運(yùn)行FRR(FRRouting)等軟件路由協(xié)議族使其成為基于內(nèi)核的SRv6路由器網(wǎng)元。通過eBPF和XDP等可編程技術(shù),可以在內(nèi)核層面對路由器網(wǎng)元進(jìn)行功能擴(kuò)展和數(shù)據(jù)路加速,實現(xiàn)SRv6網(wǎng)絡(luò)的數(shù)據(jù)平面創(chuàng)新。對于控制平面的模擬,Klonet單獨(dú)為網(wǎng)元和控制器創(chuàng)建一個上層的控制網(wǎng)絡(luò),用于SRv6南向接口的創(chuàng)新實現(xiàn),并且當(dāng)路由網(wǎng)絡(luò)的測試場景規(guī)模較大時,可以利用Klonet編程接口在可定制程度和大批量操作等方面的優(yōu)勢,采用多樣的方式編寫拓?fù)涿枋鑫募?、定制網(wǎng)絡(luò)拓?fù)洌膳匾敫黝惥W(wǎng)絡(luò)事件、執(zhí)行各類操作。
圖4 SRv6網(wǎng)絡(luò)場景參考
本文面向網(wǎng)絡(luò)技術(shù)創(chuàng)新在開發(fā)和實驗方面的需求,提出了網(wǎng)絡(luò)模擬實驗平臺Klonet的設(shè)計目標(biāo)和具體實現(xiàn)方法。Klonet首先能夠滿足大規(guī)模的實驗場景,并且其搭建的模擬網(wǎng)絡(luò)具有任意拓?fù)洹⒃诠δ芎蛯傩陨鲜仲N近真實的網(wǎng)絡(luò)情況,使多類別的網(wǎng)絡(luò)技術(shù)創(chuàng)新能夠部署、運(yùn)行到多樣化的網(wǎng)絡(luò)場景中,以進(jìn)行相應(yīng)的正確性驗證和性能表現(xiàn)評估,最后憑借實驗過程中的拓?fù)湔故灸芰?、網(wǎng)絡(luò)操作能力,以及對實驗從拓?fù)涞搅髁吭俚浇Y(jié)果的全方位功能支持,帶來更多方案上的可行性和操作上的便利性。Klonet能夠應(yīng)對由網(wǎng)絡(luò)規(guī)模不斷擴(kuò)大和技術(shù)創(chuàng)新形式不斷豐富所帶來的挑戰(zhàn),有望助力網(wǎng)絡(luò)技術(shù)的創(chuàng)新和發(fā)展。
現(xiàn)有Klonet是基于容器的虛擬化技術(shù)實現(xiàn),更適合進(jìn)行功能方面的創(chuàng)新驗證,后續(xù)將考慮采用高速互聯(lián)的多卡高性能服務(wù)器集群來支撐性能方面的創(chuàng)新試驗。同時,現(xiàn)有Klonet對模擬網(wǎng)絡(luò)的優(yōu)化部署研究不夠深入,導(dǎo)致平臺資源利用率不高。未來Klonet將會關(guān)注平臺各類資源的量化描述,通過大量測試建立合理的資源需求模型,并以此為基礎(chǔ)設(shè)計模擬網(wǎng)絡(luò)切分和放置算法,從而實現(xiàn)資源的高效利用。