許 里,馮國仕,李 璞
(中國電子科技集團公司第三十研究所,四川成都610041)
光纖通道接口通用驅(qū)動程序設(shè)計與實現(xiàn)*
許 里,馮國仕,李 璞
(中國電子科技集團公司第三十研究所,四川成都610041)
光纖通道是一種高性能的光纖通信技術(shù),在軍用和商用的多個領(lǐng)域都有著廣泛應(yīng)用。文中介紹了光纖通道技術(shù)在目前發(fā)展中存在的問題和光纖通道協(xié)議族的基本架構(gòu),分析了光纖通道接口驅(qū)動程序的功能需求和實現(xiàn)方式,提出了一種linux系統(tǒng)下靈活性和通用性較好的驅(qū)動程序設(shè)計架構(gòu),并詳細描述了這種架構(gòu)的程序?qū)崿F(xiàn)要點和技術(shù)優(yōu)勢。最后,在實際硬件環(huán)境中對驅(qū)動程序的性能進行了測試和分析。
光纖通道 接口驅(qū)動程序 接口性能
光纖通道(Fibre Channel,FC)是美國國家標準委員會(ANSI)為網(wǎng)絡(luò)和通道I/O接口建立的一個標準集,它是一種為適應(yīng)高性能數(shù)據(jù)傳輸要求而設(shè)計的通信協(xié)議,具有高帶寬、低延遲、對距離不敏感、拓撲靈活、支持多種上層協(xié)議等優(yōu)點。目前光纖通道已經(jīng)是光通信的一種重要標準,廣泛應(yīng)用于商用在商用存儲區(qū)域網(wǎng)絡(luò)及軍用航電系統(tǒng)中,具有良好的推廣前景。
相對于以太網(wǎng)等常見的通信標準,光纖通道的生態(tài)系統(tǒng)比較封閉,目前的標準規(guī)范和設(shè)備研制基本都由博科等少數(shù)幾家公司控制,而且?guī)缀跞酷槍Υ鎯W(wǎng)絡(luò)進行定制和裁剪。第三方研發(fā)團隊自行研制FC設(shè)備困難較大。因此,本文提出了一種通用的FC接口驅(qū)動程序架構(gòu),并詳細描述了這一架構(gòu)下的驅(qū)動程序?qū)崿F(xiàn)要點。這一程序架構(gòu)有良好的擴展性,易于進行各種定制化修改和二次開發(fā),可以適應(yīng)多種FC設(shè)備的需求。
FC網(wǎng)絡(luò)支持的星形和仲裁環(huán)兩種拓撲。其中,星形是最常見的拓撲類型,即整個網(wǎng)絡(luò)由FC交換機和接入交換機的各個FC節(jié)點(node)組成。本文描述的FC接口協(xié)議棧即是FC節(jié)點側(cè)的FC協(xié)議系統(tǒng)。
根據(jù)FC協(xié)議標準規(guī)定,FC接口的協(xié)議處理分為5層,如圖1所示[1]。FC-0層是物理接口和介質(zhì)層,包括線纜、連接器和它們的各自特性的規(guī)范[2]。FC-1層是傳輸協(xié)議層,包括編解碼、字節(jié)和字之間的轉(zhuǎn)換、發(fā)射機接收機的狀態(tài)轉(zhuǎn)換和錯誤檢測等[3]。FC-2層是幀和信號協(xié)議層,定義FC幀格式、傳輸服務(wù)類型、接口狀態(tài)機等[1]。FC-2層是光纖通道協(xié)議的最復(fù)雜部分,也是光纖通道交換機的主要功能層。它涉及到光纖通道特有的結(jié)構(gòu),過程和操作的大部分環(huán)節(jié)。FC-3層是公共服務(wù)層,主要定義了系統(tǒng)中的擴展鏈路服務(wù)功能[4]。FC-4層定義了光纖通道結(jié)構(gòu)到上層協(xié)議的映射,常見的映射包括SCSI、IP(Internet Protocol),ATM/AAL5等。
圖1 FC協(xié)議體系Fig.1 FC protocol architectural
一般來說,FC-0,FC-1和部分FC-2層次的功能都由硬件模塊完成,FC接口協(xié)議棧軟件需要完成的功能主要包括FC-2層次的交換與序列管理、分片與重組、幀封裝、基本鏈路服務(wù)功能,FC-3的擴展鏈路服務(wù)和FC-4的高層協(xié)議映射功能。
本文作者采用的硬件平臺如圖2所示的開發(fā)板。開發(fā)板CPU采用龍芯2F,FPGA采用Xilinx的Virtex5 50T芯片。雖然目前國內(nèi)已經(jīng)有一些采用fpga實現(xiàn)FC接口功能的研究成果[5],但是考慮到通用性,本文還是選用Xilinx公司提供的FC接口IP核(v3.3)完成FC-0,FC-1和部分FC-2的功能。由于fgpa的FC IP CORE只支持PCI-E接口而龍芯2F只支持PCI接口,因此需要選用PLXtechnology公司的PEX8112芯片完成兩種總線的橋接。
圖2 FC接口開發(fā)板原理示意Fig.2 Development board of FC interface
軟件平臺選用成熟的linux系統(tǒng),內(nèi)核版本為2.6.32。該內(nèi)核成熟可靠,應(yīng)用廣泛,是目前嵌入式設(shè)備開發(fā)中廣泛采用的版本。
文中設(shè)計驅(qū)動架構(gòu)的主要出發(fā)點是將FC接口視為一種網(wǎng)絡(luò)接口,通過各種手段提升驅(qū)動的性能和靈活性。FC接口驅(qū)動的整體架構(gòu)如圖3所示。
圖3 FC接口驅(qū)動架構(gòu)示意Fig.3 Architecture of FC interface driver
本架構(gòu)中,FC接口驅(qū)動與系統(tǒng)其它部分有三類接口。第一類是按照標準的網(wǎng)絡(luò)分系統(tǒng)接口,為系統(tǒng)協(xié)議棧提供協(xié)議報文收發(fā)服務(wù)。具體來說,FC接口驅(qū)動提供的發(fā)送報文的接口是int fc_xmit(struct sk_ buff*skb,struct net_device*dev),將收到的報文送到上層協(xié)議棧時采用的接口是系統(tǒng)提供的void netif_ receive_skb(struct sk_buff*skb)。第二類接口是接收系統(tǒng)對網(wǎng)絡(luò)接口的管理和控制,FC接口驅(qū)動提供inc fc_ioctl(struct net_device*dev,struct ifreq*ifr, int cmd).第三類對外接口是協(xié)議棧與PCI總線驅(qū)動的接口,實現(xiàn)FC數(shù)據(jù)幀的對外收發(fā)。這樣的接口設(shè)計保證了FC接口驅(qū)動能直接嵌入Linux網(wǎng)絡(luò)分系統(tǒng)中,與高層協(xié)議和底層硬件驅(qū)動都是松耦合關(guān)系,可以適應(yīng)不同的硬件平臺和網(wǎng)絡(luò)協(xié)議需求。
在FC接口驅(qū)動中,FC接口協(xié)議棧部分完成上層協(xié)議報文和FC幀之間的相互轉(zhuǎn)換,數(shù)據(jù)收發(fā)調(diào)度則提供驅(qū)動對外的收發(fā)數(shù)據(jù)接口。這二者也是采用松耦合設(shè)計,僅通過標準的struct sk_buff結(jié)構(gòu)傳遞協(xié)議報文。
根據(jù)上述架構(gòu)分析,FC接口驅(qū)動程序的實現(xiàn)要點和難點主要是FC接口協(xié)議棧的設(shè)計和數(shù)據(jù)收發(fā)調(diào)度的設(shè)計。這兩者既是整個驅(qū)動程序的功能主體,又決定了驅(qū)動程序的性能表現(xiàn)。
4.1 FC接口協(xié)議棧
FC接口協(xié)議棧的功能非常復(fù)雜,包括了交換注冊、接口注冊、交換與序列管理、接口狀態(tài)變化響應(yīng)等,不僅僅是報文的封裝和解析。因此,協(xié)議棧程序的實現(xiàn)上沒有拘泥于FC協(xié)議的層次劃分,而是采用了統(tǒng)一的狀態(tài)機編程方式,整個協(xié)議棧的主要狀態(tài)機轉(zhuǎn)換如圖4所示。
圖4 FC協(xié)議棧狀態(tài)轉(zhuǎn)移示意Fig.4 FC protocol state transition diagram
圖中有以下幾點需要特殊說明:
1)狀態(tài)之間的轉(zhuǎn)移條件和操作按照“[條件]/操作”的方式標注。
2)接口在遠端等待狀態(tài)時,會阻塞式調(diào)用遠端查找函數(shù)查找需要進行通信的遠端端口,根據(jù)系統(tǒng)設(shè)計,搜索可能是基于arp,名錄服務(wù)[6]等方式,在驅(qū)動中不作具體限定。
3)在完成接口準備后,回調(diào)上層協(xié)議,表示可以進行業(yè)務(wù)數(shù)據(jù)收發(fā)。
4.2 數(shù)據(jù)收發(fā)調(diào)度
為了提高設(shè)計的靈活性,FC接口的數(shù)據(jù)收發(fā)調(diào)度被設(shè)計為與具體協(xié)議無關(guān),它的主要功能是提供對PCI總線和對系統(tǒng)協(xié)議棧的數(shù)據(jù)收發(fā)接口。
(1)PCI總線數(shù)據(jù)收發(fā)
為了降低CPU負載,選擇采用DMA方式實現(xiàn)PCI總線上的數(shù)據(jù)收發(fā)。Fpga端作為PCI總線的主設(shè)備。
DMA傳輸方式需要一種機制來描述緩沖區(qū)信息。本文的設(shè)計中采用消息循環(huán)隊列機制,即設(shè)置收方向和發(fā)方向各一個消息隊列,每個隊列元素為描述網(wǎng)絡(luò)報文緩沖區(qū)信息的描述符(Buffer Descriptor,簡稱為BD)。BD由總線地址(32位)、數(shù)據(jù)長度(16位)、標志位(16位)三個部分組成,共8個字節(jié)。收和發(fā)消息循環(huán)隊列長度分別置于fpga的寄存器RDCNT和TDCNT中,收和發(fā)BD區(qū)域的基地址分別存儲于RDA和TDA寄存器,BD區(qū)域存放在內(nèi)存中。接收FC幀時,CPU通過BD告知fpga端網(wǎng)絡(luò)接收緩沖區(qū)位置(屬于內(nèi)存區(qū)域),發(fā)送報文時,也是將網(wǎng)絡(luò)報文在內(nèi)存中的地址轉(zhuǎn)換為總線地址后賦到BD中。FC幀是緩存于內(nèi)存區(qū)域而非fpga的內(nèi)置存儲空間中。
(2)上層協(xié)議數(shù)據(jù)收發(fā)
FC接口驅(qū)動與系統(tǒng)協(xié)議棧之間的發(fā)送數(shù)據(jù)接口遵循linux網(wǎng)絡(luò)分系統(tǒng)的標準。接口處理函數(shù)fc_ xmit()主要完成數(shù)據(jù)有效性檢查和高層協(xié)議分流,根據(jù)具體的高層協(xié)議調(diào)用不同的FC協(xié)議適配函數(shù)(即FC-4的協(xié)議數(shù)據(jù)接口)進行報文處理,目前實現(xiàn)的FC接口協(xié)議棧支持IPv4、ARP[7]和ASM[8]等多種上層協(xié)議。
FC接口驅(qū)動與系統(tǒng)協(xié)議棧之間的收數(shù)據(jù)接口選擇NAPI模式[9]。這種模式是Linux新定義一種網(wǎng)絡(luò)接口驅(qū)動架構(gòu),它的主要思想是將收數(shù)據(jù)中斷處理與實際的數(shù)據(jù)接收處理過程分離,并且一次接收中斷觸發(fā)一輪接收處理函數(shù)調(diào)用,收取多個報文,因此很適合高速數(shù)據(jù)接口。實現(xiàn)這個模式的關(guān)鍵工作是實現(xiàn)一個系統(tǒng)規(guī)定的NAPI數(shù)據(jù)接收處理函數(shù),其函數(shù)原型是int(*poll)(struct net_device* dev,int*budget)。在本文描述的FC接口驅(qū)動中,接收函數(shù)fc_poll()的主要處理流程如圖5所示。
圖5 FC_poll函數(shù)流程示意Fig.5 FC_poll function flow diagram
不同的高層協(xié)議具有不同的測試指標,但是作為一個網(wǎng)絡(luò)接口卡本身,有一些基礎(chǔ)性指標是各種協(xié)議共有的。對于一個通用的光纖通道接口卡,采用吞吐量、丟幀率和幀處理時延占用來衡量其性能表現(xiàn)是合理的,測試結(jié)果如表1所示。
1)吞吐量:是指在沒有幀丟失的情況下,設(shè)備能接收并轉(zhuǎn)發(fā)的最大數(shù)據(jù)速率,本指標采用IXIA公司的光纖通道協(xié)議測試儀測得。
2)丟幀率:是指因系統(tǒng)資源不足等原因而導致的幀,丟失率本指標采用IXIA公司的光纖通道協(xié)議測試儀測得。
3)幀處理時延:從線路上受到一個FC幀到送至高層協(xié)議之間的時間差,這個指標是依賴在FC幀的載荷中增加時間戳,由fpga和軟件協(xié)同測得。
表1 性能測試結(jié)果Table 1 Performance test result
從表中的測試結(jié)果可以看出,本文測試的FC接口吞吐量已經(jīng)接近了PCI橋接芯片的處理極限,幀處理時延很低,沒有丟幀情況,說明接口驅(qū)動程序具有較好的性能表現(xiàn)。
上文的分析和性能測試表明,文中提出的光纖通道驅(qū)動架構(gòu)既具備良好的擴展和靈活性,又有較高的的性能表現(xiàn),符合光纖通道接口驅(qū)動研究的目標。與目前可以獲取的各類公開的光纖通道接口協(xié)議實現(xiàn)不同,本文將光纖通道接口標準化為一個網(wǎng)絡(luò)設(shè)備,從而便于與各類網(wǎng)絡(luò)協(xié)議靈活融合。此外,文中驗證平臺采用的一系列常見的商用軟硬件,為后續(xù)的研究和產(chǎn)品開發(fā)奠定了一個高效穩(wěn)定的基礎(chǔ)。當然,隨著光纖通道的傳輸速率不斷提高,驅(qū)動程序的架構(gòu)還需要在后續(xù)研究中進一步優(yōu)化性能,適應(yīng)更高速率接口的要求。
[1] T11 Technical Committee.Fibre Channel Framing and Signaling-4[EB/OL].America:American National Standards Institute,Inc.2014-5-16[2013-1-17].http:// www.t11.org/ftp/t11/pub/fc/fs-4/14-018v1.pdf.
[2] T11 Technical Committee.Fibre Channel Physical and Signaling Interface-3[EB/OL].America:American National Standards Institute,Inc.1997-11-5[2013-1-17].http://www.t11.org/ftp/t11/member/fc/ph-3/ fcph3_94.pdf.
[3] T11 Technical Committee.Fibre Channel Physical Interface-5[EB/OL].America:American National Standards Institute,Inc.2011-1-11[2013-1-17].http:// www.t11.org/ftp/t11/pub/fc/pi-5/11-011v0.pdf.
[4] T11 Technical Committee.Fibre Channel Link Service-3 [EB/OL].America:American National Standards Institute,Inc.2014-2-11[2013-1-17].http://www.t11. org/ftp/t11/pub/fc/ls-3/14-033v0.pdf.
[5] 劉小剛,周東.光纖通道端口狀態(tài)機的研究及FPGA實現(xiàn)[J].通信技術(shù),2011,44(07),1-3.
LIU Xiao-gang,ZHOU Dong.Study on Fiber Channel Port State Machine and its FPCA Implementation[J]. Communications Technology,2011,44(07),1-3.
[6] T11 Technical Committee.Fibre Channel Generic Service -7[EB/OL].America:American National Standards Institute,Inc.2013-6-1[2013-5-3].http://www.t11. org/ftp/t11/pub/fc/gs-7/13-215v0.pdf.
[7] DESANTI C.,CARLSON C.and NIXON R..Transmission of IPv6,IPv4,and Address Resolution Protocol (ARP)Packets over Fibre Channel[EB/OL].America: IETF RFC 4338.2006-1[2013-5-3].http://www.rfceditor.org/rfc/rfc4338.txt.
[8] T11 Technical Committee.Technical Report.Fibre Channel Avionics Environment–AnonyMous Subscriber Messaging With Amendment 1 Changes[EB/OL].America: American National Standards Institute,Inc.2008-1-11 [2013-8-10].http://www.t11.org/ftp/t11/member/ fc/ae-asma1/08-013v1.pdf.
[9] CORBERT Jonathan,RUBINI Alessandro and KROAHHARTMAN Greg.Linux設(shè)備驅(qū)動程序[M].O'RELLY.第三版.2006:518-519.
XU Li(1983-),male,graduate student, engineer,majoring in networking and communication technology.
馮國仕(1981—),男,碩士研究生,工程師,主要研究方向為網(wǎng)絡(luò)通信與技術(shù);
FENG Guo-shi(1981-),male,graduate student,engineer,majoring in networking and communication technology.
李 璞(1981—),男,碩士研究生,工程師,主要研究方向為網(wǎng)絡(luò)通信與技術(shù)。
LI Pu(1981-),male,graduate student,engineer,majoring in networking and communication technology.
Design and Implementation of Fabric Channel Interface Driver
XU Li,FENG Guo-shi,LI Pu
(No.30 Institute of CETC,Chengdu Sichuan 610041,China)
Fibre channel,as a high-performance fiber communication technology,is widely used in both military and commercial areas.This paper firstly describes the problems recently faced by fibre channel and the architecture of the fibre channel protocol suits.Then the function and implomentation of fabric channel interface driver is analyzed,the flexible software architecture of the interface driver proposed,and the programming keys and advantages of this architecture are also specified.Finally the tests and discussions of the driver are done.
fabric channel;interface driver;interface performance
TP393
A
1002-0802(2014)11-1343-04
10.3969/j.issn.1002-0802.2014.11.021
許 里(1983—),男,碩士研究生,工程師,主要研究方向為網(wǎng)絡(luò)通信與技術(shù);
2014-07-05;
2014-08-26 Received date:2014-07-05;Revised date:2014-08-26