吳楚雄 施海鋒
(南京電子技術(shù)研究所 南京 210039)
隨著“萬物互聯(lián)”時代的到來,網(wǎng)絡(luò)中的設(shè)備量和數(shù)據(jù)量爆炸式地增長,這對數(shù)據(jù)的傳輸與存儲提出了更高的要求。光纖通道(Fibre Channel,F(xiàn)C)技術(shù)兼具通道傳輸和網(wǎng)絡(luò)傳輸?shù)膬?yōu)點,傳輸帶寬高、延時低、擴展性好和可靠性高,已廣泛應(yīng)用于存儲區(qū)域網(wǎng)絡(luò)(Storage Area Network,SAN)、航空航天等領(lǐng)域[1]。光纖通道協(xié)議的快速更迭和蓬勃發(fā)展,不僅保證了通信系統(tǒng)能始終使用最先進的數(shù)據(jù)傳輸技術(shù),滿足性能需求;也使得數(shù)據(jù)傳輸速率需求不同的系統(tǒng)能夠采用相應(yīng)的光纖通道技術(shù),用以節(jié)約成本[2]。然而,市面上光纖通道設(shè)備接口傳輸速率的不統(tǒng)一,也帶來了不同設(shè)備之間無法互連通信的問題。
為此,本文針對市面上不同速率接口光纖通道設(shè)備大量共存的現(xiàn)狀,在研究光纖通道協(xié)議的基礎(chǔ)上,對速率自適應(yīng)功能進行分析與總結(jié),設(shè)計了一種光纖通道速率自適應(yīng)狀態(tài)機,實現(xiàn)光纖通道模塊的兼容設(shè)計,使其能與不同傳輸速率的光纖通道設(shè)備互連通信。該設(shè)計方案具有一定的通用性,可應(yīng)用于其他光纖通道設(shè)備接口設(shè)計中,提高設(shè)備的可擴展性和兼容性,方便不同設(shè)備之間的互連和組網(wǎng),降低研發(fā)以及生產(chǎn)成本。
光纖通道協(xié)議分層模型較為簡單,一共分為5層,即FC-0層,F(xiàn)C-1層,F(xiàn)C-2層,F(xiàn)C-3層和FC-4層。其中FC-0層、FC-1層和FC-2層組成了物理和信號層,而FC-3層和FC-4層組成上層協(xié)議[3]。數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中,底層協(xié)議為上層協(xié)議提供數(shù)據(jù)接口與設(shè)備抽象,上層協(xié)議為用戶提供編程接口,并調(diào)用底層協(xié)議完成數(shù)據(jù)傳輸。
速率自適應(yīng)功能作為FC-FS-4協(xié)議規(guī)定的可選功能,由FC-2層定義,是FC端口狀態(tài)機的子狀態(tài)機。FC端口狀態(tài)機一共由三個子狀態(tài)機組成,分別是速率協(xié)商狀態(tài)機、發(fā)射器訓(xùn)練狀態(tài)機和正常運行狀態(tài)機[4]。其中,速率協(xié)商狀態(tài)機、發(fā)射器訓(xùn)練狀態(tài)機是可選功能,而正常運行狀態(tài)機是必要功能。本文針對速率自適應(yīng)狀態(tài)機進行研究與設(shè)計。
速率協(xié)商狀態(tài)機中,F(xiàn)C端口通過循環(huán)切換其支持的速率,直到它確定鏈路支持的最高速率[5]。本文所述“速率自適應(yīng)”功能中的“速率”指的是比特傳輸速率。速率自適應(yīng)功能能夠使鏈路實現(xiàn)以端口和連接端口的基礎(chǔ)結(jié)構(gòu)共有的最高速率進行通信[6]。在速率自適應(yīng)功能中,每個端口最多可支持4個不同速率,且每個端口支持的4個速率可不相同,但需保證相連的端口至少支持一個相同的速率,從而使鏈路能夠正常進行通信。

圖1 速率自適應(yīng)鏈路物理架構(gòu)
如圖1所示,速率自適應(yīng)算法只針對點對點的物理連接[7]。雖然速率自適應(yīng)算法能夠同時被兩個端口執(zhí)行,但是算法本身針對的是同一個物理端口。例如,當(dāng)端口A開始速率自適應(yīng)過程的時候,算法中所提到的發(fā)送器和接收器都是針對A端口的發(fā)送器和接收器,跟B端口無關(guān)。
速率自適應(yīng)過程應(yīng)當(dāng)在鏈路物理狀態(tài)相對穩(wěn)定的情況下進行,否則,速率自適應(yīng)算法可能不會將鏈路傳輸速率設(shè)置為兩端口支持的最大公共速率,而是根據(jù)當(dāng)前鏈路連接質(zhì)量將速率設(shè)定在一個相對欠優(yōu)的值。一旦鏈路以特定速率建立起連接,速率自適應(yīng)過程將不會再次啟動,除非監(jiān)測到信號故障。
速率自適應(yīng)算法一共由三個必要獨立的子協(xié)商過程構(gòu)成,依次是信號等待狀態(tài)、主協(xié)商狀態(tài)和從協(xié)商狀態(tài)。以上三個子協(xié)商狀態(tài)分別對應(yīng)于速率自適應(yīng)過程中的一段時間,在這段時間中,進行速率自適應(yīng)的光纖通道N端口將會通過一些重復(fù)性的活動來確定鏈路連接的狀態(tài)以及對方相連端口的狀態(tài),從而調(diào)整改變自己的狀態(tài),達(dá)到速率自適應(yīng)的目的。在每一個子協(xié)商狀態(tài)中,F(xiàn)C端口滿足特定條件后就會進入下一子協(xié)商狀態(tài),最后,從協(xié)商狀態(tài)結(jié)束,標(biāo)志著FC端口成功完成速率協(xié)商,鏈路將以特定的傳輸速率進行通信,F(xiàn)C端口退出速率協(xié)商狀態(tài),進入端口狀態(tài)機進行下一步操作[8]。
2.2.1 信號等待狀態(tài)
在信號等待狀態(tài)下,Tx端口以一個較低的速度循環(huán)切換Tx端口所支持的速率,以使對方的Rx端口能夠進行同步。同時,Rx循環(huán)切換Rx端口所支持的速率,以尋求對方的Tx端口發(fā)送來的信號。此狀態(tài)用來在端口連接后啟動設(shè)備,使得Tx端口處于所支持的最高速率。

圖2 信號等待狀態(tài)流程圖
2.2.2 主協(xié)商狀態(tài)
在主協(xié)商狀態(tài)下,Tx端口一開始處于所支持的最高速率,然后向下循環(huán)切換速率。Tx端口每改變一次速率都會維持在該速率一段時間,以使得其他設(shè)備能夠與之進行通信。如果通過了同步測試并且Rx端口速率大于等于Tx端口速率,則將結(jié)束主協(xié)商狀態(tài),進入速率自適應(yīng)從協(xié)商狀態(tài)。

圖3 主協(xié)商狀態(tài)流程圖

圖4 看門狗計時器流程圖
看門狗程序?qū)嶋H上是一個計時器,用來記錄主協(xié)商過程同步測試持續(xù)的時間,當(dāng)tneg大于或等于t_fail的時候,看門狗程序?qū)⒁龑?dǎo)整個系統(tǒng)回到信號等待狀態(tài)。
2.2.3 從協(xié)商狀態(tài)
在從協(xié)商狀態(tài)下,Tx端口速率等于Rx端口速率。從協(xié)商狀態(tài)用來測試Rx速率的穩(wěn)定性以確認(rèn)速率協(xié)商成功。如果由于不穩(wěn)定或者丟失信號等發(fā)生了超時的現(xiàn)象,那么系統(tǒng)將會返回到等待信號狀態(tài)。如果信號穩(wěn)定,那么系統(tǒng)將進入正常運行狀態(tài)。
速率從協(xié)商狀態(tài)使用的看門狗程序與速率主協(xié)商狀態(tài)中使用的看門狗程序是相同的。如果系統(tǒng)沒有通過同步測試,那么系統(tǒng)將改變Rx端口的速率來尋求同步,同步后,Tx端口的速率值將被設(shè)置為Rx端口的速率值,然后啟動對t_stbl的計時器tsync。同步時間超過t_stbl后,則認(rèn)為系統(tǒng)成功完成速率自適應(yīng)過程,進而可以進入FC端口狀態(tài)機進行端口狀態(tài)的調(diào)整。

圖5 從協(xié)商狀態(tài)流程圖
對于速率自適應(yīng)模塊的設(shè)計,本文采用“自頂向下”的設(shè)計方法,按照FC-FS-4協(xié)議標(biāo)準(zhǔn)中相關(guān)章節(jié)的規(guī)定,對速率自適應(yīng)算法步驟進行研究,逐步分解細(xì)化形成有限狀態(tài)機,配以若干計時器實現(xiàn)速率自適應(yīng)功能。設(shè)計出的速率自適應(yīng)控制模塊如圖6所示。速率自適應(yīng)控制模塊由速率自適應(yīng)控制狀態(tài)機與外部接口組成,通過速率自適應(yīng)控制狀態(tài)機實現(xiàn)光纖通道速率自適應(yīng)算法,通過外部接口與端口進行通信了解鏈路及端口的運行狀態(tài),并控制鏈路及端口的傳輸速率[9]。
該模塊中,輸入信號是FC原語序列和原語信號,用來指示鏈路的速率狀況以及相連端口的狀態(tài)。輸出信號一部分由速率自適應(yīng)控制模塊輸出的關(guān)于當(dāng)前端口發(fā)送端和接收端的速率信息組成,另一部分與鏈路層配置管理模塊、時鐘復(fù)位同步模塊和端口狀態(tài)機模塊相連,從而使速率自適應(yīng)控制模塊具有切換和控制鏈路層速率的功能。同時,模塊內(nèi)的速率自適應(yīng)控制狀態(tài)機模塊用于依據(jù)當(dāng)前端口和鏈路連接狀態(tài),使用速率自適應(yīng)算法,完成算法對鏈路連接速率的調(diào)整。鏈路層配置管理模塊使用Xilinx FPGA芯片的動態(tài)重配置端口(Dynamic Reconfiguration Port,DRP)對GTH高速收發(fā)器的速率進行動態(tài)改變,使得鏈路的物理狀態(tài)與FPGA芯片內(nèi)部信號一致,正確完成速率的協(xié)商與適配。DRP端口為用戶提供了較為便捷的同步接口和控制信號,通過配置相應(yīng)的DRP地址對應(yīng)的參數(shù)值,可以對實現(xiàn)光纖通道鏈路層的管理[10]。

圖6 速率自適應(yīng)控制模塊接口

圖7 速率自適應(yīng)算法狀態(tài)轉(zhuǎn)換
對于速率自適應(yīng)控制狀態(tài)機,由前文對速率自適應(yīng)算法的研究與分析,可以總結(jié)出相應(yīng)的速率自適應(yīng)算法狀態(tài)轉(zhuǎn)換圖,如圖7所示。速率自適應(yīng)過程可分為信號等待、速率自適應(yīng)主協(xié)商、速率自適應(yīng)從協(xié)商、正常工作4種模式。信號等待、主協(xié)商和從協(xié)商狀態(tài)參照光纖通道協(xié)議的要求,對速率自適應(yīng)算法的實現(xiàn)步驟需要再次進行細(xì)分,繼續(xù)設(shè)計出相應(yīng)的有限狀態(tài)機[11]。正常工作模式是速率自適應(yīng)過程完成后進入的工作狀態(tài),用以維持速率自適應(yīng)的結(jié)果,并對鏈路信號進行監(jiān)測,在信號故障或者鏈路重啟時再次進行速率自適應(yīng)過程。
在信號等待模式中,初始收發(fā)速率均工作于最大支持速率,并逐級下調(diào)收發(fā)速率,直至接收同步測試通過或信號未丟失才進入速率自適應(yīng)主協(xié)商模式;在速率自適應(yīng)主協(xié)商模式中,收發(fā)速率按照以切換接收速率為內(nèi)循環(huán)、切換發(fā)送速率為外循環(huán)的方式進行同步測試,若接收同步測試通過時接收速率不小于發(fā)送速率,則進入速率自適應(yīng)從協(xié)商模式,否則繼續(xù)在速率自適應(yīng)主協(xié)商模式中循環(huán)測試;在速率自適應(yīng)從模式中,發(fā)送速率等于接收速率,通過切換收發(fā)速率直至通過同步穩(wěn)定性測試后進入正常工作模式。在正常工作模式中,若遇到信號丟失或同步丟失超時或速率自適應(yīng)請求來臨,則重新進入等待啟動模式。
基于FC-FS-4協(xié)議對FC端口狀態(tài)機的規(guī)定,本文針對Xilinx公司Kintex Ultrascale架構(gòu)的XCKU115芯片,在Vivado集成開發(fā)環(huán)境下,采用Verilog編程語言,實現(xiàn)FC端口速率自適應(yīng)功能[12]。由于光纖通道協(xié)議標(biāo)準(zhǔn)規(guī)定,支持速率自適應(yīng)功能的光纖通道端口至多可支持四種不同的線速率,因而設(shè)計的16G模塊向下與8G、4G和2G光纖通道模塊兼容。仿真實驗中,將待測16G光纖通道N端口與不同速率的其他N端口相連,通過觀察兩個端口協(xié)商所得鏈路通信速率,進行速率自適應(yīng)功能的評估。
由仿真結(jié)果可看出,當(dāng)speedneg_result_valid_o為1時,速率協(xié)商過程結(jié)束,此時,各連接條件下的仿真結(jié)果表明speedneg_transmit_speed_o和speedneg_receive_speed_o均相等,且為兩相連端口支持的最大公共速率,表明端口收發(fā)端速率相同且工作在最優(yōu)速率下,能夠完成速率自適應(yīng)功能。可以看到,待測模塊與16G FC模塊相連時,兩個端口從16Gbps開始進行速率協(xié)商,由于兩個端口均支持16G標(biāo)準(zhǔn),因而速率協(xié)商過程中不需要頻繁切換端口速率,經(jīng)過若干個狀態(tài)轉(zhuǎn)換后,較快完成速率協(xié)商。而隨著相連端口之間速率差距的增加,速率自適應(yīng)過程所需時間也在增加,這是因為每次切換速率,端口都會保持該速率一段時間以期鏈路同步,而相連端口速率差距越大,端口需要切換速率的次數(shù)就越多,消耗的時間也越長。
本文根據(jù)ANSI制定的FC-FS-4協(xié)議標(biāo)準(zhǔn)中對速率自適應(yīng)功能的有關(guān)規(guī)定,對速率自適應(yīng)算法進行研究與細(xì)分,設(shè)計出有限狀態(tài)機和狀態(tài)轉(zhuǎn)換圖,并提出了一種基于FPGA的光纖通道速率自適應(yīng)功能的設(shè)計方法。實驗與仿真結(jié)果表明:使用FPGA實現(xiàn)的端口速率自適應(yīng)能夠完成協(xié)議中規(guī)定的各項功能,能夠根據(jù)相連端口所支持的傳輸速率以及鏈路連接質(zhì)量,自適應(yīng)地調(diào)節(jié)本模塊收發(fā)端口的傳輸速率,與鏈路遠(yuǎn)端端口速率匹配,實現(xiàn)產(chǎn)品的向下兼容,有較強的可擴展性。該設(shè)計具有一定的通用性,可推廣到不同應(yīng)用場景下光纖通道設(shè)備的研發(fā)中,降低研發(fā)以及生產(chǎn)成本。