高逸龍
(中國電子科技集團(tuán)公司第十研究所,四川 成都 610036)
近年來RapidIO 總線作為嵌入式領(lǐng)域的總線互聯(lián)標(biāo)準(zhǔn)以其高性能低延遲低引腳和低功耗[1-3]等特點(diǎn)得到了廣泛關(guān)注,基于RapidO 總線互聯(lián)的嵌入式系統(tǒng)硬件技術(shù)日益成熟。支持RapidIO 總線的嵌入式節(jié)點(diǎn)FPGA、PPC、DSP[4-6]等器件以高速并行/串行計(jì)算能力,與分布式計(jì)算系統(tǒng)中計(jì)算節(jié)點(diǎn)的需求不謀而合,但是工程中對RapidIO 網(wǎng)絡(luò)的管理技術(shù)還處于針對硬件結(jié)構(gòu)的定制化管理方式,如固定路由,固定規(guī)模等不支持?jǐn)U展的方式[7]。為適應(yīng)分布式計(jì)算系統(tǒng)中快速部署,任意嵌入式節(jié)點(diǎn)間高速通信等需求,本文研究了一套可擴(kuò)展的分布式RapidIO 網(wǎng)絡(luò)管理技術(shù)。
RapidIO 網(wǎng)絡(luò)集群管理軟件包含ETCD(數(shù)據(jù)庫軟件),CNMS(機(jī)箱間網(wǎng)絡(luò)管理軟件)、NMS (機(jī)箱內(nèi)網(wǎng)絡(luò)管理軟件)以及CNMS 軟件提供的對外接口,如圖1 所示。
圖1 系統(tǒng)拓?fù)?/p>
一個機(jī)箱是一個系統(tǒng)可擴(kuò)展單元的最小單位,一個系統(tǒng)含有多個機(jī)箱,每個機(jī)箱內(nèi)有兩個網(wǎng)絡(luò)管理模塊,分別部署主NMS 軟件和備NMS 軟件,主備NMS 軟件只有一個在工作,另外一個軟件作為熱備份。NMS 軟件通過RapidIO 的維護(hù)操作和portWrite 中斷包管理機(jī)箱內(nèi)所有的物理節(jié)點(diǎn),包括動態(tài)配置ID、配置機(jī)箱內(nèi)路由、配置邊緣路由、退網(wǎng)入網(wǎng)管理等功能。NMS 將所有管理的數(shù)據(jù)都存放在ETCD 數(shù)據(jù)庫中,這樣假如其中一個NMS 宕機(jī),切換到備份NMS 后,也可以從ETCD 數(shù)據(jù)庫中獲取數(shù)據(jù)重新開始管理機(jī)箱內(nèi)網(wǎng)絡(luò)。CNMS 集群軟件通過以太網(wǎng)與機(jī)箱內(nèi)NMS 進(jìn)行通信,將所有機(jī)箱內(nèi)節(jié)點(diǎn)匯集到一起,進(jìn)行統(tǒng)一管理。CNMS 對外提供統(tǒng)一的監(jiān)管接口。
NSM 的工作機(jī)制如圖2 所示,系統(tǒng)初始化模塊完成RapidIO 網(wǎng)絡(luò)的初始配置工作,并將掃描到的節(jié)點(diǎn)信息保存在ETCD 中,通過ETCD 的數(shù)據(jù)監(jiān)控功能,通知到CNMS 軟件。路由配置模塊接收CNMS 下發(fā)的路由配置任務(wù),完成機(jī)箱內(nèi)路由配置和機(jī)箱間路由配置。硬件事件處理模塊通過RapidIO 交換芯片portWrite 數(shù)據(jù)包監(jiān)聽機(jī)箱內(nèi)RapidIO 節(jié)點(diǎn)的退網(wǎng)和入網(wǎng)情況,并記錄變化到ETCD,同時通知CNMS。
圖2 NMS 工作機(jī)制
機(jī)箱內(nèi)的RapidIO 網(wǎng)絡(luò)是由多個物理板卡通過底層背板連接起來的,由于物理板卡及背板物理連線的去定性,所以整個網(wǎng)絡(luò)的連接關(guān)系是固定的,NMS 每次初始化的連接拓?fù)涠际亲畲缶W(wǎng)絡(luò)拓?fù)涞淖蛹鐖D3 所示。預(yù)先設(shè)定最大網(wǎng)絡(luò)中每個節(jié)點(diǎn)的關(guān)鍵信息,并將最大網(wǎng)絡(luò)信息保存于ETCD 中,形成網(wǎng)絡(luò)模板,使得系統(tǒng)初始化的每個節(jié)點(diǎn),必然可以在模板網(wǎng)絡(luò)中找到對應(yīng)的節(jié)點(diǎn),枚舉的每個節(jié)點(diǎn)的關(guān)鍵信息(如網(wǎng)絡(luò)ID,物理地址)均可從模板拓?fù)渲刑崛。珻NMS 下發(fā)的路由配置攜帶的ID 信息也從網(wǎng)絡(luò)模板中提取。
圖3 網(wǎng)絡(luò)模板與實(shí)際網(wǎng)絡(luò)
由于在網(wǎng)絡(luò)初始化的過程中,對每個節(jié)點(diǎn)的網(wǎng)絡(luò)ID 都是從模板拓?fù)渲刑崛〉?,因此枚舉的結(jié)果與枚舉的起始節(jié)點(diǎn)也沒有任何關(guān)系,同時,由于主機(jī)節(jié)點(diǎn)不需要從被處理節(jié)點(diǎn)中提取物理地址等信息,避免了主機(jī)節(jié)點(diǎn)獲取拓?fù)鋾r對其它節(jié)點(diǎn)的依賴,減少系統(tǒng)節(jié)點(diǎn)之間的關(guān)聯(lián)性,從而增強(qiáng)系統(tǒng)穩(wěn) 定性。
路由配置分為兩種情況,機(jī)箱內(nèi)路由和機(jī)箱間路由。對于機(jī)箱內(nèi)部,板卡的連接關(guān)系是固定的,但是板卡的數(shù)目不是固定的,如果采用固定路由,則可能由于板卡的缺失,導(dǎo)致某些節(jié)點(diǎn)之間無法通信。NMS 采用A 星最短路徑搜索算法實(shí)現(xiàn)路由動態(tài)分配策略[8],根據(jù)實(shí)際枚舉到的網(wǎng)絡(luò)拓?fù)?,動態(tài)配置路由。
CNMS 的工作機(jī)制如圖4 所示,在網(wǎng)絡(luò)初始化階段從ETCD 獲取每個機(jī)箱的網(wǎng)絡(luò)信息,組合成為機(jī)箱間網(wǎng)絡(luò)拓?fù)?。?shù)據(jù)監(jiān)聽模塊監(jiān)聽ETCD 數(shù)據(jù)庫中各機(jī)箱中的網(wǎng)絡(luò)信息,隨時更新整個網(wǎng)絡(luò)拓?fù)?。命令解析模塊查詢機(jī)箱間網(wǎng)絡(luò)拓?fù)洌纸鈱ν饨涌谙掳l(fā)的路由配置命令,通過數(shù)據(jù)分發(fā)模塊下發(fā)給相關(guān)的NMS 網(wǎng)管進(jìn)行路由配置。
圖4 CNMS 工作機(jī)制
圖5 為系統(tǒng)中節(jié)點(diǎn)和機(jī)箱之間的RapidIO 連接關(guān)系,節(jié)點(diǎn)在機(jī)箱內(nèi)部通過電信號連接到交換芯片組成的交換網(wǎng)絡(luò)中,交換網(wǎng)絡(luò)中有一個或者幾個交換芯片作為橋接交換芯片,與其他機(jī)箱的橋接交換芯片通過光纖連接,通過這種方式使所有節(jié)點(diǎn)物理上可達(dá)。配置機(jī)箱間的路由以節(jié)點(diǎn)為主體,如配置a 機(jī)箱1001 節(jié)點(diǎn)至b 機(jī)箱3002 節(jié)點(diǎn)的路由,而非以配置a 機(jī)箱至b 機(jī)箱路由,機(jī)箱內(nèi)節(jié)點(diǎn)至橋交換芯片--橋交換芯片至橋交換芯片--橋芯片至機(jī)箱內(nèi)節(jié)點(diǎn)組成了一段完成的跨機(jī)箱路由。對于機(jī)箱間路由,NMS 會將非本機(jī)箱的目的節(jié)點(diǎn)模擬枚舉到網(wǎng)絡(luò)中邊緣橋芯片上,然后再使用A 星最短路徑搜索算法配置本機(jī)箱節(jié)點(diǎn)到邊緣橋芯片上虛擬目的節(jié)點(diǎn)的路由。通過多個機(jī)箱NMS 配置的本地節(jié)點(diǎn)至橋交換芯片路由,最終完成跨機(jī)箱路由配置。
圖5 RapidIO 連接關(guān)系
ETCD 是一個高可用的鍵值存儲系統(tǒng),主要用于共享配置和服務(wù)發(fā)現(xiàn)。通過Raft 一致性算法處理日志復(fù)制以保證強(qiáng)一致性,Raft 是一個新的一致性算法,適用于分布式系統(tǒng),Raft 通過選舉的方式來實(shí)現(xiàn)一致性。在分布式系統(tǒng)中,如何管理節(jié)點(diǎn)間的狀態(tài)一直是一個難題,ETCD 像是專門為集群環(huán)境的服務(wù)發(fā)現(xiàn)和注冊而設(shè)計(jì),它提供了數(shù)據(jù)TTL 失效、數(shù)據(jù)改變監(jiān)視、多值、目錄監(jiān)聽、分布式鎖原子操作等功能,可以方便的跟蹤并管理集群節(jié)點(diǎn)的狀態(tài),具有簡單、安全、快速、可靠等特征。
在RapidIO 集群網(wǎng)絡(luò)管理技術(shù)中,ETCD 一方面存儲各個機(jī)箱內(nèi)部的網(wǎng)絡(luò)狀態(tài)信息,同時也為集群網(wǎng)絡(luò)提供服務(wù)發(fā)現(xiàn)服務(wù),如圖6 所示。
圖6 ETCD 目錄結(jié)構(gòu)示意圖
每個機(jī)箱內(nèi)部的NMS 將掃描到的RapidIO 板卡、通信節(jié)點(diǎn)及交換芯片、物理端口等網(wǎng)絡(luò)信息存儲在ETCD 當(dāng)中,自身只存儲少量RapidIO 網(wǎng)絡(luò)信息以加快處理速度,并且該信息可以通過查詢ETCD 數(shù)據(jù)庫后快速重建。ETCD 支持網(wǎng)絡(luò)集群技術(shù),可以保證數(shù)據(jù)可靠性。當(dāng)機(jī)箱內(nèi)發(fā)生主備網(wǎng)絡(luò)切換的時候,備網(wǎng)管可以通過讀取ETCD 數(shù)據(jù)庫,恢復(fù)網(wǎng)絡(luò)狀態(tài),快速進(jìn)入工作狀態(tài)。
作為系統(tǒng)中的關(guān)鍵節(jié)點(diǎn),CNMS 需要做多節(jié)點(diǎn)備份,形成集群,NMS 在機(jī)箱內(nèi)部也做了主備備份。系統(tǒng)控制需要和CNMS 進(jìn)行通信,以控制和獲取整個網(wǎng)絡(luò)的狀態(tài),由于具有多個CNMS 節(jié)點(diǎn),所以需要使用到ETCD 的服務(wù)發(fā)現(xiàn)功能。多個CNMS 需要將自己的IP 地址周期性的注冊到ETCD中的/CNMS 文件夾下,形如/CNMS/1,/CNMS/2,/CNMS/3,設(shè)置TTL(?;顣r間)為5 s。外部接口首先遍歷/CNMS/文件夾,并以最小遍歷到的數(shù)字對應(yīng)的文件中的IP 作為當(dāng)前CNMS 對外的IP 地址,同時監(jiān)控 /CNMS 目錄的變化,以獲得最新的CNMS網(wǎng)管地址。這里需要注意每個ETCD peer 需要先進(jìn)行時間校準(zhǔn),避免出現(xiàn)TTL 設(shè)置不準(zhǔn)確的問題。
外部接口發(fā)出的監(jiān)控命令,是由NMS 最終處理,并將結(jié)果返回給CNMS,然后再由CNMS 將結(jié)果組合,返回給外部接口。在同一個機(jī)箱內(nèi)具有一個主NMS 和一個備NMS,主備NMS 是熱備份的關(guān)系,主備之間通過多種總線的心跳包來作為主備切換的依據(jù)。主備網(wǎng)管也在ETCD 中注冊了IP 地址,形如/BOX/1/NMS/1,/BOX/1/NMS/2。CNMS 需要遍歷所有的/BOX/目錄,以確定網(wǎng)絡(luò)規(guī)模,同時,通過/BOX/1/NMS/目錄下的最大數(shù)字對應(yīng)的IP,確定現(xiàn)在該機(jī)箱內(nèi)正在工作的NMS 的IP 地址,同時監(jiān)聽 /BOX 目錄,響應(yīng)機(jī)箱內(nèi)主備切換事件。
采用RapidIO 網(wǎng)絡(luò)集群管理技術(shù),對兩個機(jī)箱進(jìn)行管理,分別對機(jī)箱內(nèi)通信和機(jī)箱將通信速率進(jìn)行測試。硬件測試環(huán)境如圖7 所示,PPC1 和PPC2在機(jī)箱1 中,通過內(nèi)部交換網(wǎng)絡(luò)3 跳互連。PPC1和PPC3 通過機(jī)箱1 的內(nèi)部交換網(wǎng)- -光纖- -機(jī)箱2 的內(nèi)部交換網(wǎng)絡(luò)總共6 跳互連。整個網(wǎng)絡(luò)為4x 2.5 Gbps 的傳輸速率。
測試用例使用RapidIO DirectIO 通信方式[9],對比從256BYTE 到4MBYTE 數(shù)據(jù)包傳輸在機(jī)箱內(nèi)和機(jī)箱間傳輸?shù)膸挷町悾Y(jié)果如圖8 所示,可以看出機(jī)箱間通過光纖連接并沒有顯著降低通信帶寬。
圖7 測試環(huán)境
圖8 通信帶寬
相較于傳統(tǒng)的RapidIO 網(wǎng)絡(luò)管理方式,集群網(wǎng)絡(luò)管理技術(shù)不僅沒有約束機(jī)箱內(nèi)板卡實(shí)際工作狀態(tài),而是參考模板網(wǎng)絡(luò),枚舉出實(shí)際網(wǎng)絡(luò),同時動態(tài)監(jiān)控板卡工作狀態(tài),支持RapidIO 節(jié)點(diǎn)動態(tài)退網(wǎng)入網(wǎng),同時使用A 星最短路徑算法動態(tài)配置最優(yōu)路由;并且也支持機(jī)箱與機(jī)箱之間的高速RapidIO通信,對嵌入式系統(tǒng)的擴(kuò)展提供了強(qiáng)力支撐,是分布式框架管理嵌入式節(jié)點(diǎn)的基礎(chǔ),具有較高的使用價(jià)值。