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