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

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

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

圖3 主協商狀態流程圖

圖4 看門狗計時器流程圖
看門狗程序實際上是一個計時器,用來記錄主協商過程同步測試持續的時間,當tneg大于或等于t_fail的時候,看門狗程序將引導整個系統回到信號等待狀態。
2.2.3 從協商狀態
在從協商狀態下,Tx端口速率等于Rx端口速率。從協商狀態用來測試Rx速率的穩定性以確認速率協商成功。如果由于不穩定或者丟失信號等發生了超時的現象,那么系統將會返回到等待信號狀態。如果信號穩定,那么系統將進入正常運行狀態。
速率從協商狀態使用的看門狗程序與速率主協商狀態中使用的看門狗程序是相同的。如果系統沒有通過同步測試,那么系統將改變Rx端口的速率來尋求同步,同步后,Tx端口的速率值將被設置為Rx端口的速率值,然后啟動對t_stbl的計時器tsync。同步時間超過t_stbl后,則認為系統成功完成速率自適應過程,進而可以進入FC端口狀態機進行端口狀態的調整。

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

圖6 速率自適應控制模塊接口

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