董春雷,何斌斌,陳艇
(1.中國(guó)人民解放軍戰(zhàn)略支援部隊(duì)信息工程大學(xué),河南鄭州,450002;2.31121部隊(duì),江蘇徐州,221000)
FC(Fiber Channel)為美國(guó)標(biāo)準(zhǔn)化委員會(huì)(ANSI)在1988 年提出的高速串行傳輸總線,具備高帶寬,高可靠性,高穩(wěn)定性的特點(diǎn),主要應(yīng)用在航空電子,音視頻處理,大數(shù)據(jù)傳輸?shù)戎T多領(lǐng)域。FC 交換芯片是符合FC(Fiber Channel)通信協(xié)議,具備多端口,低延時(shí),高可靠性的交換芯片[1~2]。隨著信息技術(shù)的不斷發(fā)展,交換芯片的應(yīng)用環(huán)境日益復(fù)雜,在航空電子環(huán)境等應(yīng)用中,F(xiàn)C 網(wǎng)絡(luò)可能存在多個(gè)交換設(shè)備級(jí)聯(lián)實(shí)現(xiàn)多個(gè)端點(diǎn)設(shè)備互連,為了滿(mǎn)足實(shí)時(shí)性和可靠性的要求,系統(tǒng)會(huì)根據(jù)CPU 處理延遲對(duì)網(wǎng)絡(luò)中的每個(gè)設(shè)備分配具體的工作時(shí)隙,因此FC 網(wǎng)絡(luò)要求所有設(shè)備在工作之前進(jìn)行時(shí)間同步,然后網(wǎng)絡(luò)中每個(gè)設(shè)備在固定的時(shí)間(時(shí)隙)內(nèi)完成相應(yīng)的任務(wù)(數(shù)據(jù)傳輸和處理),從而避免多臺(tái)設(shè)備同時(shí)傳輸數(shù)據(jù)導(dǎo)致FC網(wǎng)絡(luò)的傳輸擁塞和處理時(shí)延不確定性[3~7]。如果時(shí)間同步精度不高,將導(dǎo)致時(shí)隙之間的保護(hù)間隔過(guò)大,壓縮數(shù)據(jù)傳輸和處理的時(shí)間,因此FC 交換芯片需要具備高精確度的時(shí)間同步功能,實(shí)現(xiàn)全網(wǎng)絡(luò)設(shè)備的時(shí)間同步。
FC-FS 協(xié)議中定義了兩種時(shí)間同步方式,分別是基于擴(kuò)展鏈路服務(wù)(ELS,Extended Link Service)時(shí)間同步和基于原始信號(hào)(PS,Primitive Signal)時(shí)間同步,在時(shí)間同步的FC 網(wǎng)絡(luò)中,一般具有一個(gè)時(shí)間同步服務(wù)器(Server),網(wǎng)絡(luò)中的其他端點(diǎn)或者交換設(shè)備稱(chēng)為時(shí)間同步客戶(hù)端(Client),它們內(nèi)部都集成了實(shí)時(shí)時(shí)間(real time clock,RTC)計(jì)數(shù)器[8]。時(shí)間同步服務(wù)器負(fù)責(zé)向網(wǎng)絡(luò)的其他客戶(hù)端發(fā)送帶有本地RTC 值的ELS 幀或者原始信號(hào),客戶(hù)端接收到時(shí)間同步幀或者原始信號(hào)后,解析出其中的RTC,然后更新各客戶(hù)端本地的RTC,實(shí)現(xiàn)與服務(wù)器的時(shí)間同步。
根據(jù)Fibre Channel Framing and Signaling-4 (FC-FS-4)協(xié)議規(guī)定,ELS 時(shí)間同步是客戶(hù)端(Client)先向時(shí)間同步服務(wù)端(Master)發(fā)送時(shí)間同步請(qǐng)求幀(CSR),服務(wù)器端同意之后,會(huì)向?qū)?yīng)的客戶(hù)端發(fā)送時(shí)間同步更新幀(CSU),如圖1 所示,CSU 幀中帶有時(shí)間同步服務(wù)器生成CSU 幀時(shí)的時(shí)間戳,客戶(hù)端收到CSU 幀之后解析出其中的時(shí)間戳,然后更新本地的RTC,實(shí)現(xiàn)客戶(hù)端與服務(wù)器的時(shí)間同步。服務(wù)端一般會(huì)向每一個(gè)請(qǐng)求的客戶(hù)端定時(shí)發(fā)送CSU 幀,防止本地RTC 因?yàn)榫д裾`差導(dǎo)致本地時(shí)間計(jì)數(shù)器誤差隨時(shí)間而增大。PS 時(shí)間同步通過(guò)服務(wù)端定時(shí)發(fā)送連續(xù)的SYNx、SYNy、SYNz 原語(yǔ)信號(hào)來(lái)實(shí)現(xiàn)時(shí)間同步,SYNx、SYNy、SYNz 原語(yǔ)信號(hào)攜帶有時(shí)間信息,如圖2 所示,每個(gè)原語(yǔ)信號(hào)32bit,相比于ELS 時(shí)間同步,PS 時(shí)間同步占用鏈路帶寬較小,客戶(hù)端接收并解析出SYNx、SYNy、SYNz 原語(yǔ)信號(hào)中攜帶的時(shí)間值,然后更新本地時(shí)間計(jì)數(shù)器,實(shí)現(xiàn)時(shí)間同步。
圖1 FC 網(wǎng)絡(luò)中時(shí)間同步
圖2 時(shí)間同步原語(yǔ)傳輸方式
在FC 網(wǎng)絡(luò)中,無(wú)論是ELS 時(shí)間同步還是PS 時(shí)間同步,F(xiàn)C 交換芯片需要轉(zhuǎn)發(fā)ELS 時(shí)間同步幀或者PS 時(shí)間同步原語(yǔ)信號(hào),實(shí)現(xiàn)服務(wù)端和客戶(hù)端的時(shí)間同步[9],同時(shí)FC 交換芯片也可以作為FC 網(wǎng)絡(luò)中的時(shí)間同步服務(wù)器,向各個(gè)設(shè)備或者端口發(fā)送時(shí)間同步幀或者原語(yǔ)。由于FC 交換芯片具有不可預(yù)知的轉(zhuǎn)發(fā)延遲,因此轉(zhuǎn)發(fā)ELS 時(shí)間同步幀或者PS 時(shí)間同步原語(yǔ)信號(hào)會(huì)引入新的誤差,特別是經(jīng)過(guò)多級(jí)FC 交換芯片,這個(gè)誤差將變得更大并難以確定,因此FC 交換芯片需要對(duì)轉(zhuǎn)發(fā)的ELS 時(shí)間同步或者時(shí)間同步原語(yǔ)進(jìn)行時(shí)間補(bǔ)償,彌補(bǔ)經(jīng)過(guò)FC 交換芯片帶來(lái)的時(shí)間延遲。
FC 協(xié)議定義了時(shí)間同步的方法和原理,并提供了一種簡(jiǎn)單補(bǔ)償交換芯片內(nèi)補(bǔ)充交換調(diào)度延遲的方法,而沒(méi)有考慮交換芯片接收端口、發(fā)送端口,以及光纖傳輸?shù)难舆t補(bǔ)償,時(shí)間同步精度較低。FC 網(wǎng)絡(luò)ELS 時(shí)間同步模型,模型中有一個(gè)時(shí)間同步服務(wù)器,一個(gè)時(shí)間同步服務(wù)端,一個(gè)時(shí)間同步客戶(hù)端。FC 客戶(hù)端先向FC 時(shí)間同步服務(wù)器發(fā)送時(shí)間同步請(qǐng)求幀(CSR),CSR 經(jīng)過(guò)交換轉(zhuǎn)發(fā)至?xí)r間同步服務(wù)器,時(shí)間同步服務(wù)器收到CSR 幀之后,會(huì)定時(shí)向時(shí)間同步客戶(hù)端發(fā)送時(shí)間同步更新幀(CSU),同樣CSU 需要通過(guò)FC 交換芯片轉(zhuǎn)發(fā)至客戶(hù)端,客戶(hù)端收到CSU 幀之后,解析出其中的時(shí)間信息,然后更新本地實(shí)時(shí)時(shí)鐘,達(dá)到與時(shí)間同步服務(wù)器時(shí)間同步。
經(jīng)過(guò)分析,F(xiàn)C 時(shí)間同步ELS 或者PS 在FC 交換中具有不確定的傳輸延遲,如圖3 所示,F(xiàn)C 交換網(wǎng)絡(luò)的延遲主要有接收光纖傳輸延遲rf、FC 協(xié)議鏈路接收通路處理延遲rp、FC 接收幀緩沖延遲、FC 交換轉(zhuǎn)發(fā)延遲、FC 發(fā)送幀緩沖延遲、FC 協(xié)議鏈路發(fā)送通路延遲sp 以及發(fā)送光纖延遲tf,其中rf 和tf 可以根據(jù)實(shí)際的應(yīng)用場(chǎng)景,通過(guò)測(cè)量實(shí)際光纖的長(zhǎng)度計(jì)算得到,rp 和sp 跟FC 交換端口的具體設(shè)計(jì)有關(guān),這兩部分的延遲可通過(guò)實(shí)際的情況加以補(bǔ)償。對(duì)于ELS 時(shí)間同步幀,F(xiàn)C 接收幀緩沖、FC 交換以及FC 發(fā)送幀緩存的延遲可能根據(jù)交換實(shí)際擁塞情況的不同而不同;對(duì)于PS 時(shí)間同步,時(shí)間同步PS 不經(jīng)過(guò)FC 交換進(jìn)行轉(zhuǎn)發(fā),但是FC 發(fā)送通路需要在沒(méi)有發(fā)送報(bào)文的情況下傳輸時(shí)間同步PS,這部分延遲也是不可預(yù)知的[10]。因此需要統(tǒng)計(jì)接收端解析出FC 時(shí)間同步ELS 或者PS 時(shí)刻與發(fā)送端發(fā)送ELS 或者PS 時(shí)刻之間的延遲,然后進(jìn)行補(bǔ)償。
根據(jù)以上的分析,本設(shè)計(jì)在接收通路和接收緩沖之間、發(fā)送緩沖和發(fā)送通路之間分別增加了時(shí)間同步解析模塊和重組模塊用于實(shí)現(xiàn)時(shí)間補(bǔ)償。如圖3 所示,時(shí)間同步電路位于FC 交換芯片的FC 端口模塊上,F(xiàn)C 端口模塊包括:FC協(xié)議鏈路接收通路、FC 協(xié)議鏈路發(fā)送通路、FC 端口狀態(tài)機(jī)、FC 接收幀緩存、FC 發(fā)送幀緩存,基于FC 交換芯片的時(shí)間同步延遲補(bǔ)償電路包括:ELS 時(shí)間同步幀和原語(yǔ)解析模塊、ELS 時(shí)間同步幀和原語(yǔ)重組模塊、接收通路延遲補(bǔ)償寄存器rx_delay 及發(fā)送通路延遲補(bǔ)償寄存器tx_delay。其中,ELS 時(shí)間同步幀和原語(yǔ)解析模塊用于對(duì)接收的ELS 時(shí)間同步幀和時(shí)間同步原語(yǔ)進(jìn)行解析;ELS 時(shí)間同步幀和原語(yǔ)重組模塊用于對(duì)接收的ELS 時(shí)間同步幀和時(shí)間同步原語(yǔ)進(jìn)行重組;接收通路延遲補(bǔ)償寄存器rx_delay 用于對(duì)FC 協(xié)議鏈路接收通路的延遲進(jìn)行補(bǔ)償;發(fā)送通路延遲補(bǔ)償寄存器tx_delay 用于對(duì)FC 協(xié)議鏈路發(fā)送通路的延遲進(jìn)行補(bǔ)償。rx_delay 的值為rp+tf,tx_delay 的值為sp+rf。
在進(jìn)行時(shí)間同步之前,使用ELS 時(shí)間同步幀或者時(shí)間同步原語(yǔ)進(jìn)行時(shí)間同步操作,得到對(duì)應(yīng)的FC 協(xié)議鏈路接收通路處理延遲rp 和FC 協(xié)議鏈路發(fā)送通路處理延遲sp 值。測(cè)量接收和發(fā)送光纖的長(zhǎng)度,將所述接收和發(fā)送光纖的長(zhǎng)度分別除以光速,得到接收光纖傳輸延遲rf 和發(fā)送光纖傳輸延遲tf 值。配置rx_delay 的值為rp+tf,配置tx_delay 的值為sp+rf。
整個(gè)補(bǔ)充原理可概括為:時(shí)間同步解析模塊完成時(shí)間同步ELS 和PS 的解析,解析出時(shí)間同步信號(hào)中的時(shí)間信息,然后加上接收光纖傳輸延遲rf和FC 協(xié)議鏈路接收通路處理延遲rp,補(bǔ)償之后的時(shí)間值與當(dāng)時(shí)時(shí)間同步服務(wù)器的時(shí)間相近,然后更新本地的RTC,此時(shí)本地RTC 將基于更新之后的值進(jìn)行計(jì)時(shí)。在發(fā)送端,發(fā)送時(shí)間同步PS 或者ELS 幀時(shí),先從本地RTC中讀取時(shí)間值,然后加上FC 協(xié)議鏈路發(fā)送通路延遲sp 和發(fā)送光纖延遲tf,使用補(bǔ)償之后的時(shí)間值更換即將發(fā)送的時(shí)間同步PS 或者ELS 幀中的時(shí)間值,重新組裝新的時(shí)間同步原語(yǔ)或者幀發(fā)送出去,實(shí)現(xiàn)時(shí)間同步原語(yǔ)或者幀在FC 交換的透明傳輸。
根據(jù)時(shí)間同步服務(wù)的場(chǎng)景,我們利用JDSU FC 測(cè)試儀與FC 交換芯片NFS6400 形成server 端點(diǎn)和client 端點(diǎn)對(duì)接網(wǎng)絡(luò),并采用以xilinx vu440 系列FPGA 芯片為基礎(chǔ)的原型驗(yàn)證平臺(tái),通過(guò)光纖連接,組成了與實(shí)際情況相吻合的驗(yàn)證環(huán)境,如圖4 所示。
圖4 交換為Client 模式
(1)FC 交換為Client 模式
FC 交換Client 模式主要實(shí)現(xiàn)時(shí)間同步信號(hào)的轉(zhuǎn)發(fā),設(shè)置FC 測(cè)試儀其中一個(gè)端口為Master 模式,另一個(gè)端口為Client 模式,兩個(gè)端口分別與交換相連,如圖4 所示,Master 端口通過(guò)交換向Client 發(fā)送時(shí)間同步信號(hào),通過(guò)交換轉(zhuǎn)發(fā)實(shí)現(xiàn)Master 與Client 的同步,如圖5 所示,Client實(shí)現(xiàn)了與Master 的同步。
圖5 FC 交換為Client 模式時(shí)間同步測(cè)試
(2)FC 交換為Master 模式
FC 交換在master 模式下,主動(dòng)向其他Client 端口發(fā)送時(shí)間同步信號(hào),實(shí)現(xiàn)網(wǎng)絡(luò)的同步,如圖6 所示,從圖中可以看出,兩個(gè)Client 接收的時(shí)間誤差在100ns 以?xún)?nèi)。
圖6 FC 交換為Master 模式時(shí)間同步測(cè)試
針對(duì)現(xiàn)有FC 協(xié)議沒(méi)有考慮交換芯片的接收端口、發(fā)送端口、交換轉(zhuǎn)發(fā)以及光纖傳輸?shù)难舆t補(bǔ)償,時(shí)間同步精度較低的問(wèn)題,本文基于FC 協(xié)議時(shí)間同步原理對(duì)FC 交換延遲進(jìn)行了分析,提出了一種時(shí)間同步實(shí)現(xiàn)方式,驗(yàn)證結(jié)果表明該時(shí)間同步方式時(shí)間同步精度高,時(shí)間誤差可以控制在100ns 以?xún)?nèi)。本文的FC 時(shí)間同步電路適用于FC 協(xié)議中的時(shí)間同步原語(yǔ)與ELS 時(shí)間同步幀,同樣適用于傳統(tǒng)的時(shí)間同步服務(wù)器或者客戶(hù)端,硬件電路實(shí)現(xiàn)簡(jiǎn)易,精度高,進(jìn)一步提高了FC 網(wǎng)絡(luò)的時(shí)間同步精度,可有效提高FC 網(wǎng)絡(luò)的效率。后續(xù)還將在同步精度方面繼續(xù)進(jìn)行探索與優(yōu)化,以適應(yīng)FC 網(wǎng)絡(luò)更大規(guī)模的應(yīng)用。