楊昌勝,姜興,廖欣,傅天文
(桂林電子科技大學(xué),廣西桂林,541004)
天地一體化網(wǎng)絡(luò)的優(yōu)勢(shì)可實(shí)現(xiàn)空間網(wǎng)絡(luò)與地面網(wǎng)絡(luò)資源的充分共享和高效利用。以衛(wèi)星等空間飛行器為節(jié)點(diǎn)組成的天基空間通信網(wǎng)相對(duì)于地面網(wǎng)絡(luò),具有網(wǎng)絡(luò)覆蓋范圍大、不受環(huán)境影響、資源利用率高等優(yōu)點(diǎn)[1]。隨著衛(wèi)星通信技術(shù)的發(fā)展,衛(wèi)星節(jié)點(diǎn)之間的信息互通不再是點(diǎn)對(duì)點(diǎn)地通信,而是網(wǎng)絡(luò)的拓?fù)湟约奥酚蓞f(xié)議。IPv6協(xié)議相比于IPV4協(xié)議而言其網(wǎng)絡(luò)地址資源更豐富,可為空間組網(wǎng)增加許多優(yōu)勢(shì),用戶可根據(jù)需求擴(kuò)展定義,備受衛(wèi)星通信研究者青睞。CCSDS-AOS 是IP Over CCSDS Space Links中提出的一種高級(jí)在軌系統(tǒng)(Advanced Orbit System,AOS),AOS協(xié)議適用于航天器之間以及航天器與地面之間的通信。AOS協(xié)議可以實(shí)現(xiàn)高速率通信、處理多種數(shù)據(jù)類型以及大容量信息數(shù)據(jù),實(shí)現(xiàn)高速的上行和下行鏈路。光纖通信技術(shù)具有通信容量大、傳輸距離遠(yuǎn)、傳輸速度快和抗干擾性強(qiáng)等優(yōu)點(diǎn),它與FPGA技術(shù)相結(jié)合是解決高速數(shù)據(jù)傳輸?shù)闹髁鞣桨浮?/p>
天地一體化信息網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)具有高度動(dòng)態(tài)變化,網(wǎng)絡(luò)采用多層封裝的IP統(tǒng)一承載開(kāi)銷較大,從而出現(xiàn)了網(wǎng)絡(luò)端到端的路由尋址、鏈路和用戶切換控制等技術(shù)難題。本文采用標(biāo)簽交換方式,將標(biāo)簽值封裝在AOS數(shù)據(jù)幀特定位置中,從而根據(jù)標(biāo)簽實(shí)現(xiàn)空間數(shù)據(jù)轉(zhuǎn)發(fā)。該轉(zhuǎn)發(fā)方式無(wú)需涉及上層協(xié)議,避免大量的拆解封包操作,從而實(shí)現(xiàn)數(shù)據(jù)高效轉(zhuǎn)發(fā)。
本文使用型號(hào)為XC7K325T Xilinx Kintex-7系列的FPGA芯片,設(shè)計(jì)了四路GTX接口電路,參考時(shí)鐘采用可編輯時(shí)鐘芯片SI5338提供,F(xiàn)PGA可通過(guò)I2C配置方式根據(jù)不同速率需求可修改GTX參考時(shí)鐘,數(shù)據(jù)傳輸接口全部外接SFP模塊。串口(UART)用于接收CPU控制板下發(fā)的標(biāo)簽交換表,同時(shí)上報(bào)FPGA當(dāng)前數(shù)據(jù)流量傳輸狀態(tài);DDR3用于緩存?zhèn)鬏敂?shù)據(jù),其設(shè)計(jì)框圖如圖1所示。
為實(shí)現(xiàn)AOS幀基于標(biāo)簽交換的轉(zhuǎn)發(fā)機(jī)制,需要對(duì)AOS幀格式進(jìn)行修改,標(biāo)準(zhǔn)AOS幀格式依次包括6~8字節(jié)傳送幀的主幀頭(Transfer Frame Primary Header),變長(zhǎng)的插入域(Insert Zone)和數(shù)據(jù)域(Data Field)和可選的中貞尾(Transfer Frame Trailer)本文所用的AOS幀為了支持標(biāo)簽交換,在插入域部分劃出定長(zhǎng)的標(biāo)簽區(qū)域和控制數(shù)據(jù)域,等價(jià)于在AOS幀頭后又增加了一層標(biāo)簽封裝[2],使用插入域中劃定固定長(zhǎng)度方式傳輸控制協(xié)議方式有傳輸速率較為穩(wěn)定、傳輸時(shí)延的抖動(dòng)小、與業(yè)務(wù)數(shù)據(jù)隔離等優(yōu)點(diǎn)。
虛擬通道交叉原理如圖2所示,傳輸以太網(wǎng)數(shù)據(jù)業(yè)務(wù)時(shí)將標(biāo)簽號(hào)、出端口號(hào)等信息封裝在AOS幀特定位置中。虛擬交叉通道結(jié)構(gòu)應(yīng)該能完成兩方面基本功能:一是空間交換,即通過(guò)查詢標(biāo)簽交換表中標(biāo)簽與出端口的映射關(guān)系,將AOS幀從一條鏈路上交換到另一條鏈路上,又叫路由選擇;另一個(gè)功能是VC通道交換,即將AOS幀從特定虛擬通道輸出之前完成標(biāo)簽替換。例如,當(dāng)AOS幀入標(biāo)簽值為X,查詢到對(duì)應(yīng)的出端口為1,將當(dāng)前標(biāo)簽X更新為K后將數(shù)據(jù)轉(zhuǎn)發(fā)至下個(gè)衛(wèi)星節(jié)點(diǎn)。
圖2 虛擬通道交叉工作原理
10G Ethernet Subsystem[3]核實(shí)現(xiàn)了物理層與數(shù)據(jù)鏈路層功能,并為MAC與PCS/PMA之間的連接提供兩種模式(10GBASE-R或10GBASE-KR)接口,發(fā)送和接收數(shù)據(jù)接口可采用內(nèi)部寄存器的AXI4-Stream接口,同時(shí)還提供AXI4-Lite接口完成MDIO管理接口的協(xié)議轉(zhuǎn)換,萬(wàn)兆以太網(wǎng)數(shù)據(jù)傳輸方案如圖3所示。
圖3 兩路萬(wàn)兆以太網(wǎng)數(shù)據(jù)傳輸設(shè)計(jì)
10G Ethernet Subsystem核的參考時(shí)鐘(GTREFCLK)156.25MHz由外部可編輯時(shí)鐘芯片提供,用戶接口數(shù)據(jù)位寬(DATA[63:0])選擇64位,當(dāng)IP核收到以太網(wǎng)數(shù)據(jù)后將其送入接收模塊對(duì)數(shù)據(jù)包進(jìn)行包長(zhǎng)度計(jì)數(shù)、FIFO緩存處理。由于AXI4總線協(xié)議規(guī)定的數(shù)據(jù)傳輸方式是觸發(fā)式的,當(dāng)傳輸?shù)囊蕴W(wǎng)數(shù)據(jù)不是8字節(jié)數(shù)的整數(shù)倍時(shí),在發(fā)送有效數(shù)據(jù)最后64位數(shù)據(jù)時(shí)接口會(huì)自動(dòng)填充無(wú)效數(shù)據(jù)字節(jié)并利用字節(jié)修飾符(TKEEP[7:0])表示出來(lái)。為了實(shí)現(xiàn)以太網(wǎng)發(fā)送控制模塊有效發(fā)送數(shù)據(jù)位的控制,提高數(shù)據(jù)傳輸?shù)乃俾?,將最后有效時(shí)鐘周期的TKEEP值和以太網(wǎng)數(shù)據(jù)獨(dú)立保存,并使TKEEP值伴隨數(shù)據(jù)通過(guò)GTX傳輸。因此,當(dāng)數(shù)據(jù)從GTX傳輸接收模塊到達(dá)以太網(wǎng)發(fā)送模塊時(shí),先發(fā)送以太網(wǎng)數(shù)據(jù),在發(fā)送最后一個(gè)有效時(shí)鐘周期內(nèi)將以太網(wǎng)數(shù)據(jù)發(fā)出的同時(shí)讀出TKEEP值。為了解決10G Ethernet Subsystem核和GTX收發(fā)器時(shí)鐘域匹配、數(shù)據(jù)位寬變換問(wèn)題,采用異步FIFO對(duì)數(shù)據(jù)進(jìn)行緩存處理。寫入以10G Ethernet Subsystem核接收時(shí)鐘(Userclk2)作為參考時(shí)鐘將64位以太網(wǎng)數(shù)據(jù)寫入FIFO中;以GTX高速串行收發(fā)器的發(fā)送時(shí)鐘作為FIFO的讀時(shí)鐘讀出32位以太網(wǎng)數(shù)據(jù)后經(jīng)過(guò)GTX發(fā)送控制模塊后將其發(fā)送至其他光纖設(shè)備。
GTX收發(fā)器[4]是Xilinx公司在FPGA內(nèi)部集成的高速串行收發(fā)模塊,其能提供500Mbps到12.5Gbps的數(shù)據(jù)線路速率,支持多種物理層協(xié)議,包括PCIE接口、萬(wàn)兆網(wǎng)XUAI接口、OC-48、串行RapidIO接口、SATA(SerialATA)接口、數(shù)字分量串行接口(SDI)等等。GTX收發(fā)器內(nèi)置高速串并轉(zhuǎn)換、時(shí)鐘數(shù)據(jù)恢復(fù)、線路編/解碼、時(shí)鐘糾正和通道綁定等功能電路,是實(shí)現(xiàn)高速串行數(shù)據(jù)傳輸?shù)奈锢韺踊A(chǔ)。GTX主要包含PMA(物理媒介適配層)和PCS(物理編碼子層)兩個(gè)子層。PMA子層中集成了SERDES,發(fā)送和接收緩沖,時(shí)鐘發(fā)生器及時(shí)鐘恢復(fù)電路。PCS子層負(fù)責(zé)8b/10b編碼解碼和CRC校驗(yàn),并負(fù)責(zé)通道綁定和時(shí)鐘修正的彈性緩沖。
本文設(shè)計(jì)中設(shè)置GTX串行收發(fā)器的數(shù)據(jù)線路速率(Line Rate)為1.25Gbps/10Gbps,配置的協(xié)議格式為Aurora協(xié)8b/10b協(xié)議的4Byte單通道模式,收發(fā)器的參考時(shí)鐘為125MHz(GTXREFFCLK);外部數(shù)據(jù)寫入為32位數(shù)據(jù),外部數(shù)據(jù)寫入時(shí)鐘(TXUSERCLK)千兆以太網(wǎng)數(shù)據(jù)傳輸時(shí)為125MHz,萬(wàn)兆千兆以太網(wǎng)數(shù)據(jù)傳輸時(shí)為156.25MHz。為了接收端解串器數(shù)據(jù)位的對(duì)齊,我們必須在數(shù)據(jù)通道中發(fā)送相應(yīng)的COMMA,它指示幀的開(kāi)始和結(jié)束標(biāo)志,或始終修正和數(shù)據(jù)流對(duì)齊的控制字符,設(shè)置為K28.5。TXCHARISKGTX[3:0]用來(lái)指示發(fā)送的數(shù)據(jù)是同步碼控制字符還是正常傳輸數(shù)據(jù),高電平表明是同步碼控制字符。收發(fā)器的發(fā)送和接收控制模塊狀態(tài)機(jī)如圖4所示。
圖4 GTX收發(fā)模塊狀態(tài)機(jī)
在GTX發(fā)送控制模塊中,當(dāng)收到以太網(wǎng)發(fā)送請(qǐng)求信號(hào),數(shù)據(jù)發(fā)送通道(TXDATA)首先發(fā)送同步碼,同時(shí)拉高同步碼標(biāo)志信號(hào)(TXCHARISK[3:0])。再發(fā)送數(shù)據(jù)包的長(zhǎng)度、類型,以便于在接收端確保數(shù)據(jù)包的正確長(zhǎng)度,從而停止一包以太網(wǎng)數(shù)據(jù)接收和校驗(yàn)計(jì)算。然后開(kāi)始讀取異步FIFO里的以太網(wǎng)數(shù)據(jù)并通過(guò)GTX發(fā)送出去,為了能判斷接收端數(shù)據(jù)是否正確傳輸,在發(fā)送數(shù)據(jù)的同時(shí)以相鄰字節(jié)累加的方式計(jì)算校驗(yàn)和(Checksum),該校驗(yàn)和用作接收數(shù)據(jù)校驗(yàn)依據(jù),在發(fā)送完成數(shù)據(jù)之后把Checksum以數(shù)據(jù)的形式發(fā)送出去。值得注意的是,當(dāng)傳輸萬(wàn)兆以太網(wǎng)數(shù)據(jù)時(shí),我們還需要在送完成數(shù)據(jù)Checksum發(fā)送其字節(jié)修飾符(TKEEP[7:0])。在GTX接收模塊,當(dāng)檢測(cè)到COMMA時(shí)候并根據(jù)其標(biāo)志信號(hào)RXCHARISKGTX[3:0]判斷數(shù)據(jù)是否出現(xiàn)位移位的情況,若發(fā)生數(shù)據(jù)移位我們則需要進(jìn)行數(shù)據(jù)位對(duì)齊處理,從而使得后續(xù)的COMMA和數(shù)據(jù)實(shí)現(xiàn)對(duì)齊,保證數(shù)據(jù)正確傳輸。數(shù)據(jù)對(duì)齊處理結(jié)束后接收以太網(wǎng)數(shù)據(jù)包長(zhǎng)度、類型,然后開(kāi)始接收以太網(wǎng)有效數(shù)據(jù),并以發(fā)送端同樣的計(jì)算方式進(jìn)行校驗(yàn)和計(jì)算,數(shù)據(jù)接收完成后與發(fā)送端的相比較,兩者相等,則數(shù)據(jù)發(fā)送接收正確,緩存以太網(wǎng)數(shù)據(jù)和字節(jié)修飾符,等待以太網(wǎng)發(fā)送模塊讀取;若兩者不相等,說(shuō)明傳輸數(shù)據(jù)發(fā)生錯(cuò)誤,則丟棄該數(shù)據(jù)包返回等待狀態(tài)。
在FPGA與CPU軟硬件設(shè)計(jì)已完成的基礎(chǔ)上進(jìn)行聯(lián)合調(diào)試,并對(duì)整個(gè)組網(wǎng)協(xié)議的功能進(jìn)行測(cè)試,該測(cè)試通過(guò)自動(dòng)完成LSP(Label Switching Path)的建立來(lái)進(jìn)行。業(yè)務(wù)功能測(cè)試使用PING模擬三顆衛(wèi)星通信。測(cè)試系統(tǒng)如圖5所示。
圖5 以太網(wǎng)測(cè)試系統(tǒng)
萬(wàn)兆以太網(wǎng)傳輸功能測(cè)試時(shí),為了獲得10Gbps數(shù)據(jù)的吞吐量,測(cè)試輸性能之前必須為主機(jī)A和主機(jī)B安裝萬(wàn)兆光纖網(wǎng)卡。網(wǎng)卡在發(fā)送PING包前會(huì)先封裝以太網(wǎng)幀,需要對(duì)端主機(jī)MAC地址,否則其不會(huì)下發(fā)PING包,因此需要配置靜態(tài)ARP映射表。設(shè)定主機(jī)A萬(wàn)兆以太網(wǎng)的IPV6地址為:fe80:0:0:83::,主機(jī)B萬(wàn)兆以太網(wǎng)的IPV6地址為fe80:0:0:85::;添加對(duì)端目的IPV6地址和對(duì)應(yīng)的MAC地址,配置成功后PING可以正常下發(fā)以太網(wǎng)數(shù)據(jù)包。觀察網(wǎng)口連接狀態(tài),鏈路速度設(shè)置為自動(dòng)協(xié)商,可以觀察到其網(wǎng)口狀態(tài)速度協(xié)商結(jié)果為10Gbps,采用分析工具ChipScope觀測(cè)FPGA內(nèi)部以太網(wǎng)數(shù)據(jù)包與網(wǎng)絡(luò)封包分析軟件WireShak捕獲的網(wǎng)口數(shù)據(jù)包作對(duì)比分析,傳輸數(shù)據(jù)完全一致。Ping下發(fā)20000個(gè)測(cè)試請(qǐng)求包,其中收到回應(yīng)數(shù)據(jù)包20000個(gè)丟失了0個(gè)測(cè)試包,驗(yàn)證了標(biāo)簽交換方案的可行性。鏈路測(cè)試結(jié)果如圖6所示。
圖6 萬(wàn)兆以太網(wǎng)數(shù)據(jù)傳輸鏈路測(cè)試結(jié)果
本文根據(jù)實(shí)際需求,在硬件設(shè)備上設(shè)計(jì)了四路SFP接口電路,軟件上設(shè)計(jì)出兩套高速以太網(wǎng)接收轉(zhuǎn)發(fā)代碼,在不改變?cè)O(shè)備硬件的條件下通過(guò)更換不同速率SFP模塊即可實(shí)現(xiàn)設(shè)備接口同時(shí)收發(fā)兩路萬(wàn)兆以太網(wǎng)或千兆以太網(wǎng)數(shù)據(jù)。通過(guò)合理的模塊設(shè)計(jì)、平臺(tái)搭建,傳輸系統(tǒng)性能達(dá)到了預(yù)期效果,數(shù)據(jù)傳輸準(zhǔn)確無(wú)誤。該設(shè)計(jì)為復(fù)雜衛(wèi)星通信組網(wǎng)地面模擬實(shí)驗(yàn)提供高速數(shù)據(jù)源和硬件平臺(tái),并驗(yàn)證了標(biāo)簽交換方案的可行性,具有較高的實(shí)驗(yàn)應(yīng)用價(jià)值。