周召均,夏浩延,付闖闖
(西南交通大學 電氣工程學院,碩士研究生,四川 成都 610031)
現(xiàn)代列車正朝著高速化、自動化和舒適化方向發(fā)展,與傳統(tǒng)的列車相比,機車車輛各計算機之間相互傳輸交換的信息量越來越大,諸如列車控制信息(如牽引、制動、空調(diào))、診斷信息(如設備故障信息、維修信息)、旅客信息(如預報站、線路)、語音視頻等。列車通信網(wǎng)絡已成為高速列車系統(tǒng)的關鍵技術?,F(xiàn)有的列車工業(yè)現(xiàn)場總線如絞線列車總線(WTB)、多功能車輛總線(MVB)、CAN總線等已逐漸不能夠滿足列車信息的超大容量、實時性的需求。一些新的工業(yè)現(xiàn)場總線就引入了列車通信網(wǎng)絡,工業(yè)以太網(wǎng)就是其中之一〔1〕。
目前,工業(yè)以太網(wǎng)技術在列車通信系統(tǒng)領域中還沒有得到充分應用。但與其他現(xiàn)場總線相比,工業(yè)以太網(wǎng)在列車網(wǎng)絡中具有突出優(yōu)勢。工業(yè)以太網(wǎng)提供了針對控制網(wǎng)絡數(shù)據(jù)傳輸?shù)囊蕴W(wǎng)標準,具有較高的網(wǎng)絡安全性、可操作性與實時性,同時克服了現(xiàn)有列車網(wǎng)絡總線傳輸速度低下、組網(wǎng)拓撲單一等缺陷,非常適合在列車通信網(wǎng)絡中應用〔2〕。其主要優(yōu)勢體現(xiàn):以太網(wǎng)是目前應用最為廣泛的計算機網(wǎng)絡技術,受到廣泛的技術支持,而且基于TCP/IP協(xié)議的以太網(wǎng)是一種標準的開放式網(wǎng)絡,相對于目前使用的令牌總線(ARCNET)、CAN總線等列車網(wǎng)絡,其成本更加低廉。本文的開發(fā)思路是基于NetFPGA硬件平臺作二次開發(fā),在數(shù)據(jù)鏈路層實現(xiàn)負載均衡傳輸,從而減小網(wǎng)絡延時和沖突幾率,提高網(wǎng)絡的實時性,同時增加網(wǎng)絡的帶寬,采用硬件冗余方式,提高網(wǎng)絡系統(tǒng)的性能。
NetFPGA是由美國斯坦福大學開發(fā)的為研究人員可在硬件上搭建千兆的高性能網(wǎng)絡模型的低成本可重用的硬件平臺〔3〕。NetFPGA系統(tǒng)是由NetFPGA開發(fā)板、運行于操作系統(tǒng)的PC機以及相應的軟件組成,通過相互間的配合數(shù)據(jù)交換形成網(wǎng)絡結(jié)構系統(tǒng)。其中NetFPGA開發(fā)板是核心,它是通過PCI與運行軟件的PC機通信的,其包括1個用于用戶自定義的邏輯編程的Virtex-II Pro50和1個用于實現(xiàn)連接主機CPU的PCI接口控制邏輯的Xilinx Spartan以及4個千兆以太網(wǎng)MAC控制器等構成。
本文選取NetFPAGA作為硬件平臺的原因:一是NetFPGA硬件平臺是一個開放的平臺,在網(wǎng)絡上有大量的源代碼和參考設計,在此基礎上做二次開發(fā)比較方便。二是在于其模塊化設計理念,可使開發(fā)者很容易在NetFPGA平臺上設計出高性能的網(wǎng)絡系統(tǒng)〔4-6〕。本文利用NetFPGA平臺參考路由器進行二次開發(fā),在路由器的網(wǎng)絡層實現(xiàn)數(shù)據(jù)的負載均衡,使數(shù)據(jù)在數(shù)據(jù)鏈路層分開,沿不同的物理線路傳輸?shù)侥康牡?,以減小因數(shù)據(jù)量過大而阻塞的幾率,增大骨干網(wǎng)絡各個路由器之間傳輸?shù)男畔⒘俊?/p>
2.1 列車骨干網(wǎng)絡拓撲結(jié)構 列車骨干網(wǎng)絡拓撲結(jié)構的方案是基于IEC61375 2-5〔1〕的工業(yè)以太網(wǎng)進行設計的,使用Xilinx NetFPGA通過二次開發(fā)搭建工業(yè)以太網(wǎng)實驗平臺,每個NetFPGA帶有4個千兆網(wǎng)口,將NetFPGA通過PCI插槽插在一臺PC機上,PC機+NetFPAG模擬中央裝置和終端裝置,設計半實物仿真系統(tǒng)見圖1。每個節(jié)點上的NetFPGA板卡上的4個端口剛好滿足分成2組,在每組上的2個端口上實現(xiàn)負載均衡,以便骨干網(wǎng)絡上的大量數(shù)據(jù)快速的在各節(jié)點之間傳輸。
圖1 基于I EC61375 2-5的列車工業(yè)以太網(wǎng)通信網(wǎng)絡拓撲結(jié)構
2.2 PC機與Ne t FPG A結(jié)構設計 骨干網(wǎng)絡的每個節(jié)點由一臺PC機和一塊NetFPGA板卡構成,它們之間通過高速PCI總線連接,PC機與NetFPGA的結(jié)構設計見圖2所示。
圖2 Ne t FPG A與PC結(jié)構設計
PC機用戶空間運行TTDP、OSPF等相關的路由協(xié)議和一些應用程序,以完成路由計算的工作和提供必要的服務,在內(nèi)核空間生成路由表,并通過PCI總線寫入到NetFPGA的轉(zhuǎn)發(fā)表當中以決定是否轉(zhuǎn)發(fā),由NetFPGA硬件完成數(shù)據(jù)的轉(zhuǎn)發(fā)功能。本方案將NetFPGA板卡的端口nfc0與nfc1分成一組,nfc2與nfc3分成一組,數(shù)據(jù)的均衡傳輸在NetFPGA的硬件層實現(xiàn)。
2.3 Ne t FPG A硬件模塊化路由器設計 模塊化的硬件路由器采用的是管道模型,利用流水線結(jié)構對數(shù)據(jù)進行處理,使用高帶寬的數(shù)據(jù)包通路總線實現(xiàn)Packet的相關分析和處理,低帶寬的寄存器通路來實現(xiàn)各個模塊的寄存器的讀寫以完成用戶軟件對模塊的功能和參數(shù)的配置〔3〕。數(shù)據(jù)通過MAC隊列或者CPU隊列(即由其他主機傳輸過來的數(shù)據(jù)或者是本機產(chǎn)生的待轉(zhuǎn)發(fā)數(shù)據(jù))進入用戶數(shù)據(jù)通道主要經(jīng)過數(shù)據(jù)仲裁模塊、輸出端口查詢模塊然后再進入輸出隊列。輸出隊列分為需要轉(zhuǎn)發(fā)到其他主機的數(shù)據(jù)進入MAC隊列和進入本機的CPU隊列數(shù)據(jù),其隊列調(diào)度input_arbiter是通過輪詢的方式對每個隊列進行訪問的。數(shù)據(jù)包由仲裁模塊出來后會進入核心module輸出端口查詢模塊output_port_lookup,完成數(shù)據(jù)包的分析處理,檢查其目標MAC地址、幀類型、版本號、生存時間以及校驗等。本設計是基于Xilinx的Reference Router設計的,數(shù)據(jù)進入輸入輸出查詢模塊時進行數(shù)據(jù)分流。數(shù)據(jù)頭部處理輸出端口查詢模塊見圖3。2.4 Ve r i l o gHD L負載均衡實現(xiàn) 數(shù)據(jù)輸出進入Output_Queues前需要對入隊進行查詢處理,然后才能決定進入那個隊列。
圖3 數(shù)據(jù)頭部處理輸出端口查詢模塊
頭部處理的狀態(tài)機制很簡單,只有PARSE_HDRS和WAIT_EOP兩個狀態(tài),狀態(tài)機之間的轉(zhuǎn)換條件是in_ctrl和in_wr。負載均衡實現(xiàn)的核心代碼:
3.1 實驗過程 本節(jié)對基于IEC61375 2-5的列車以太網(wǎng)網(wǎng)絡拓撲結(jié)構的負載均衡進行功能測試。
實驗環(huán)境如圖4(a)所示,采用3臺裝有NetFPGA板卡的聯(lián)想IdeaCentre K320的PC機,搭建圖1給出的實驗拓撲結(jié)構。將3臺主機HA,HB,HC串接,主機HA上nfc0,nfc1分別接主機HB上nfc0、nfc1,主機HB上nfc2,nfc3接HC主機nfc0,nfc1;下載本設計生成的bit文件到板卡;ifconfig配置端口的ip地址、子網(wǎng)掩碼(HA主機的nfc0端口10.128.0.1;HB主機nfc0端口10.128.0.2,nfc2端口10.128.0.4;HC主機的nfc0端口0.128.0.3);終端HA ping主機HC的nfc0端口,回顯結(jié)果如圖4(b)所示,主機HA上監(jiān)測端口nfc0和nfc1上接受或發(fā)送的數(shù)據(jù)包數(shù)目和時間的java GUI顯示見圖4(c)。
圖4 負載均衡實驗及結(jié)果
3.2 實驗結(jié)果分析 從實驗結(jié)果中可以看出:數(shù)據(jù)的延時在0.1 ms左右,完全可以滿足列車控制網(wǎng)絡的要求(循環(huán)時間小于1ms);主機HA ping向HC 10個數(shù)據(jù)包,同時收到10個數(shù)據(jù)包并且數(shù)據(jù)在端口0和端口1上均勻地傳輸,實現(xiàn)了數(shù)據(jù)的負載均衡。
本文運用負載均衡的思想主要是為了解決列車骨干網(wǎng)絡的大量數(shù)據(jù)傳輸與端口帶寬不足的矛盾以及減小數(shù)據(jù)在數(shù)據(jù)鏈路層阻塞引起的延時時間。在實際應用中端口的帶寬增加會大量增加成本,負載均衡就解決了這一因單一線路的升級成本太高或難以實現(xiàn)的難題。本文基于NetFPGA實現(xiàn)列車骨干網(wǎng)絡的負載均衡傳輸,為列車骨干網(wǎng)絡的大量數(shù)據(jù)傳輸提供了一條新的解決方案。
〔1〕彭國平,杜亞江.以太網(wǎng)技術在列車通信網(wǎng)絡中的應用探討〔J〕.鐵道車輛.2008,46(12):25-28.
〔2〕黃軼,胡鵬飛.工業(yè)以太網(wǎng)在列車網(wǎng)絡中的應用設計〔J〕.鐵道運營技術,2011 Vol.17 No.1.
〔3〕周劍,陸桂華.零存整取NetFPGA開發(fā)指南〔M〕.北京:北京航空航天大學出版社,2010.6.
〔4〕Glen Gibb,John W.Lockwood,et al.NetFPGA—An Open Platform for Teaching How to Build Gigabit-Rate Network Switches and Routers〔J〕.IEEE Transactions on Education,VOL.51,NO.3,AUGUST 2008.
〔5〕John W.Lockwood,Nick McKeown,Greg Watson,et al.NetFPGA-An Open Platform for Gigabit-rateNetwork Switching and Routing〔C〕.IEEE International Conference on Microelectronic Systems Education(MSE'07),2007.
〔6〕Hamed Tabatabaei,Yashar Ganjali. Preserving Pacing in Real Networks-An Experimental Study Using NetFPGA〔J〕.2nd North American NetFPGA Developers Workshop.Stanford,2010.