文獻(xiàn)標(biāo)識碼: B
文章編號: 0258-7998(2012)01-0044-04
星載交換機(jī)是以衛(wèi)星為核心的天基信息系統(tǒng)的關(guān)鍵子系統(tǒng),是制約天基信息系統(tǒng)發(fā)展的關(guān)鍵技術(shù)之一,而星載交換機(jī)的核心是高性能的交換芯片。由于太空劇烈變化的環(huán)境溫度和各種離子的影響,使得宇航級電子器件的性能指標(biāo)遠(yuǎn)高于地面設(shè)備電子器件,而可選用作為宇航級電子器件的范圍又遠(yuǎn)低于地面設(shè)備器件的選用范圍,同時星載設(shè)備對可靠性的要求遠(yuǎn)高于地面設(shè)備。這就要求星載交換機(jī)在技術(shù)體制、電路結(jié)構(gòu)、數(shù)據(jù)包隊列管理方式、調(diào)度算法等都與地面的交換機(jī)有很大不同,這些問題均有待于進(jìn)行深入研究。
對于以衛(wèi)星為核心的天基信息系統(tǒng),利用地面高性能IP交換機(jī)仍然存在較大問題,使其在天基信息系統(tǒng)中的使用受到了限制。
(1)功耗:星上設(shè)備對功耗有嚴(yán)格的控制,地面高性能骨干IP交換機(jī)的功耗通常在數(shù)百瓦到幾千瓦,這對于星載設(shè)備來說是難以承受的。
(2)系統(tǒng)可靠性:星上設(shè)備對系統(tǒng)可靠性要求極高,需要在不同層面上考慮冗余備份問題。
(3)系統(tǒng)重量與體積:星上載荷的重量是衛(wèi)星系統(tǒng)的重要指標(biāo),星載高性能交換機(jī)在體積和重量上與地面設(shè)備相比必須大幅度減輕。
(4)系統(tǒng)硬件結(jié)構(gòu)優(yōu)化:IP交換機(jī)系統(tǒng)的硬件復(fù)雜度和集成度非常高,但由于空間溫度環(huán)境、空間粒子流等的影響,元器件選擇上存在很大制約,地面設(shè)備中廣泛使用的SDRAM、DDR、高性能CPU等器件都無法直接使用,這要求系統(tǒng)硬件結(jié)構(gòu)和算法的復(fù)雜度必須降低,使之在可用宇航級元器件(如低速SRAM、處理器和存儲器)的基礎(chǔ)上實現(xiàn)較高的交換能力。
(5)系統(tǒng)軟件結(jié)構(gòu)優(yōu)化:IP路由器系統(tǒng)的軟件復(fù)雜度非常高,由于在天基信息系統(tǒng)中高性能網(wǎng)絡(luò)處理器無法直接使用,所以部分傳統(tǒng)上采用軟件實現(xiàn)的功能和算法要采用硬件固化的方法來實現(xiàn)。這就需要簡化復(fù)雜的IP協(xié)議棧。
基于以上分析,地面高性能IP交換機(jī)在天基信息系統(tǒng)中的使用受到了很大限制。由于星上存儲器容量不能像地面那樣寬裕,隊列長度受限,而衛(wèi)星空中接口的往返傳播時延又大于地面,為了更好地設(shè)計流量控制,需要在星載交換機(jī)結(jié)構(gòu)中使用一個復(fù)雜度低且有效的隊列管理器,減少對緩存區(qū)容量的要求,保證低時延,降低掉包率,達(dá)到用戶的QoS要求,提高吞吐量。
1 基本概念
在星載交換機(jī)中,為了實現(xiàn)IP數(shù)據(jù)包快速轉(zhuǎn)發(fā),一般采用基于定長信元的體制,IP數(shù)據(jù)包在進(jìn)入交換結(jié)構(gòu)前,被分割成許多固定長度的分組(下文統(tǒng)稱為信元)。交換結(jié)構(gòu)的緩存方式主要有輸入緩存、輸出緩存和共享緩存。對于一個N×N交換結(jié)構(gòu),輸出緩存中存儲器的訪問速度是線路速率的(N+1)倍;采用共享緩存方式是線路速率的2×N倍;而對于輸入緩存方式,存儲器的訪問速度是線路速率的兩倍,與交換機(jī)的端口數(shù)目無關(guān)。為了增大交換機(jī)的容量,支持更高的線路速率,在星載交換機(jī)中有必要研究輸入緩存的方式。
對于輸入緩存中存在的隊頭阻塞HOL(Head of Line blocking)問題,采用虛擬輸出排隊(VOQ)技術(shù)可改善該問題,使吞吐量達(dá)到100%。VOQ要獲得高的性能,關(guān)鍵問題是要設(shè)計一個匹配輸入和空閑輸出端口的高效、公平的調(diào)度算法,也就是二部圖的匹配問題。
采用虛擬輸出排隊機(jī)制的輸入排隊交換結(jié)構(gòu)模型如圖1所示。在每個輸入端口的緩存區(qū)中,設(shè)置N個(N為交換機(jī)端口數(shù)目)FIFO隊列,每個FIFO隊列對應(yīng)一個輸出端口。也就是說,將輸入端口為i,輸出端口為j的分組緩存到虛擬輸出隊列VOQi,j中,在調(diào)度器的控制下,將匹配的VOQi,j中的分組調(diào)度出去。
2 隊列管理器結(jié)構(gòu)
隊列管理器由輸入控制接口電路、多隊列請求處理電路、多端口請求處理電路、緩沖區(qū)接口控制電路、調(diào)度器等模塊組成。隊列管理器的基本結(jié)構(gòu)如圖2所示。
輸入控制接口電路將接收到的IP數(shù)據(jù)包切割成許多長度為64 B的信元,并做必要的標(biāo)識,以便進(jìn)行IP數(shù)據(jù)包的重組。每個信元都包含一個信頭,信頭結(jié)構(gòu)包括目的輸出端口、優(yōu)先級和可以擴(kuò)展的標(biāo)識。多隊列請求處理電路根據(jù)信元的輸出端口和優(yōu)先級將信元流分成多個VOQ隊列,多端口請求處理電路在調(diào)度器的控制下將信元從信元緩沖區(qū)讀出。
設(shè)星載交換機(jī)有K個輸出端口,信元有N個優(yōu)先級。信元緩沖區(qū)(SRAM)的地址空間被劃分成K個私有區(qū)和1個共享區(qū)。私有區(qū)k(1≤k≤K)只能被去往第k個輸出端口的信元占用,而共享區(qū)可以被去往任何輸出端口的信元占用。設(shè)置K個私有FIFO(PFIFO1,PFIFO2,…,PFIFOK)和1個共享FIFO(SFIFO)。私有區(qū)k(1≤k≤K)的全部可用地址被記錄在(PFIFOK)中,共享區(qū)的全部可用地址被記錄在SFIFO中。
每個輸出端口均維持N個邏輯隊列,第n(1≤n≤N)個邏輯隊列對應(yīng)于第n種優(yōu)先級信元。每個邏輯隊列由兩部分組成;第一部分位于私有區(qū),第二部分位于共享區(qū)。邏輯隊列可能只存在第一部分,而不存在第二部分。在信元緩沖區(qū)中一共形成N×K個邏輯隊列。
在電路模塊中,設(shè)置N×K組寄存器,每個邏輯隊列分別使用一組寄存器來控制信元的寫入與讀出,每組寄存器包括:header、tailer、depth 3個寄存器。其中header為隊首寄存器,記錄每條邏輯隊列的隊首地址;tailer為隊尾寄存器,記錄每條邏輯隊列的隊尾地址;depth為深度寄存器,記錄每條邏輯隊列的信元個數(shù)。每條邏輯隊列中上(前)一個信元和下(后)一個信元的存儲地址分別由前向地址指針pre_addr、后向地址指針nxt_addr記錄。
圖3中給出了前向地址指針pre_addr、后向地址指針nxt_addr以及信元存儲地址之間關(guān)系的一個示例。圖中所示的邏輯隊列的隊首地址由header記錄,隊尾地址由tailer記錄。該邏輯隊列中信元的存儲地址依次是4(隊首),7 026,3 900,5 732,5 733,7 025,1(隊尾)。
在本隊列管理器設(shè)計中,交換機(jī)的端口數(shù)目和信元的優(yōu)先級可以根據(jù)星載交換機(jī)的設(shè)計要求和交換容量進(jìn)行動態(tài)地擴(kuò)展,私有區(qū)和共享區(qū)的存儲容量也可以根據(jù)流量管理的要求進(jìn)行動態(tài)地擴(kuò)展。前向地址指針pre_addr、后向地址指針nxt_addr利用FPGA內(nèi)置RAM實現(xiàn);PFIFO1、PFIFO2,…,PFIFOK和SFIFO利用FPGA內(nèi)置FIFO實現(xiàn);隊首寄存器header和隊尾寄存器tailer利用寄存器實現(xiàn)。
3 隊列管理器工作方法
當(dāng)系統(tǒng)復(fù)位后,隊列管理器對地址空間進(jìn)行初始化,將可用的地址指針寫入到地址空間。信元存儲空間分為兩部分,一部分為共享存儲空間,另一部分為K個針對每個端口固定分配的信元空間,以確保每個端口都有可用的存儲空間。當(dāng)一個信元到達(dá)時,如果固定分配的空間和共享空間剩余容量之和不能滿足該信元時,則拒絕該信元。隊列管理器只需要知道到達(dá)信元的輸出端口和優(yōu)先級,就可以確定其進(jìn)入哪個邏輯隊列。信元的寫入和讀出采用狀態(tài)機(jī)進(jìn)行控制。
當(dāng)有新的信元(n,k)到達(dá)時,其中n為優(yōu)先級,1≤n≤N;k為輸出端口,1≤k≤K。信元寫入控制流程如圖4所示。最后根據(jù)wr_addr,將信元寫入緩沖區(qū)。如果發(fā)生隊列擠占,則被擠占的邏輯隊列需要被更新,如果僅有一個信元,則header和tailer都被置0;反之,用前一個信元的地址來更新tailer。寫入信元的邏輯隊列需要被更新:如果該邏輯隊列沒有信元,則header和tailer都被置為wr_addr;反之,將tailer的內(nèi)容記錄在pre_addr的第wr_addr個地址中,將wr_addr記錄在nxt_addr的第tailer個地址中,tailer的內(nèi)容被更新為wr_addr。
當(dāng)有信元讀出時,各輸出端口采用輪詢的方式,信元讀出控制流程如圖5所示。讀出信元的邏輯隊列需要被更新:如果僅有一個信元,則header和tailer都被置0;反之,用下一個信元的地址來更新header,tailer不變。
4 仿真結(jié)果
本設(shè)計采用Xilinx Vertex-5 FPGA實現(xiàn),開發(fā)環(huán)境是Xilinx集成開發(fā)環(huán)境ISE13.1,電路核心模塊用Verilog HDL編程實現(xiàn),仿真工具采用ModelSim SE。星載交換機(jī)有16個輸出端口,信元有4個優(yōu)先級,PFIFOk為256,SFIFO為4 096。仿真驗證結(jié)果表明電路功能符合設(shè)計要求。
4.1 寄存器讀寫指針時序仿真
由仿真時序圖6可以看出,初始狀態(tài)時,PFIFO0、PFIFO2、…、PFIFO15和SFIFO都為空,隊列管理器將空閑指針依次寫入PFIFO0、PFIFO2、…、PFIFO15中,當(dāng)它們都為滿時,最后寫入SFIFO中。
由仿真時序圖7可以看出,隊列管理器首先從PFIFO0中讀出可用指針,當(dāng)其為空時,就從SFIFO中讀出,然后依次從PFIFO0、PFIFO2、…、PFIFO15中讀出可用指針。當(dāng)它們都為空時,則從SFIFO中讀出,直到no_ptr=1,說明地址空間無可用指針。
4.2 信元的讀寫時序仿真
由仿真時序圖8可以看出,隊列管理器根據(jù)信頭中的輸出端口和優(yōu)先級,依次將信元寫入信元存儲器,信元存儲器形成64個邏輯隊列,然后在調(diào)度器的控制下,依次將信元從相應(yīng)的邏輯隊列中讀出。
在衛(wèi)星通信中,業(yè)務(wù)種類繁多且突發(fā)性強(qiáng),用戶對服務(wù)質(zhì)量(QoS)要求較高,而衛(wèi)星網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)變化快,傳播時延大,這就要求星載交換機(jī)具有較小的交換時延和丟包率。本文設(shè)計了一種高性能隊列管理器,通過硬件仿真驗證,其基本能夠滿足星載交換機(jī)的各種性能指標(biāo)要求,本隊列管理器采用動態(tài)擴(kuò)展的設(shè)計方式,靈活度較大,但也存在許多不足之處,如組播信元的處理考慮不足、可能存在隊頭阻塞問題及IP包的管理問題,有可能由于一個信元的丟失導(dǎo)致整個IP包無法接受,這些都是今后進(jìn)一步的研究工作。
參考文獻(xiàn)
[1] CHAO H J,Liu Bin.High performance switches and routers [M].New Jersey,US:John Wiley & Sons Inc,2007:225-278.
[2] THO Le-Ngoc.Switching for IP-based multimedia satellite communications[J].IEEE Journal on Selected Areas in Communications,22(3),2004(4):318-322.
[3] Zeng Yuan,Gong Wenbin,Liu Huijie,et al.Scheduling algorithm for satellite onboard switch[J].Computer Engineer ing,2009,35(2):158-160.
[4] Zhang Yi,Zhou Quan,Li Jun.An input-buffer scheduling algorithm in satellite switching system[J].Journal of Elec tronics&Information Technology,2009,31(6):1429-1431.
[5] Wang Peng,Yao Mingwu,Bao Minquan,et al.Switch chip of avionics full duplex ethernet based on FPGA[J].Computer Engineering,2008,34(23):261-263.