吳楚雄 施海鋒
(南京電子技術(shù)研究所 南京 210039)
隨著“萬物互聯(lián)”時(shí)代的到來,網(wǎng)絡(luò)中的設(shè)備量和數(shù)據(jù)量爆炸式地增長(zhǎng),這對(duì)數(shù)據(jù)的傳輸與存儲(chǔ)提出了更高的要求。光纖通道(Fibre Channel,F(xiàn)C)技術(shù)兼具通道傳輸和網(wǎng)絡(luò)傳輸?shù)膬?yōu)點(diǎn),傳輸帶寬高、延時(shí)低、擴(kuò)展性好和可靠性高,已廣泛應(yīng)用于存儲(chǔ)區(qū)域網(wǎng)絡(luò)(Storage Area Network,SAN)、航空航天等領(lǐng)域[1]。光纖通道協(xié)議的快速更迭和蓬勃發(fā)展,不僅保證了通信系統(tǒng)能始終使用最先進(jìn)的數(shù)據(jù)傳輸技術(shù),滿足性能需求;也使得數(shù)據(jù)傳輸速率需求不同的系統(tǒng)能夠采用相應(yīng)的光纖通道技術(shù),用以節(jié)約成本[2]。然而,市面上光纖通道設(shè)備接口傳輸速率的不統(tǒng)一,也帶來了不同設(shè)備之間無法互連通信的問題。
為此,本文針對(duì)市面上不同速率接口光纖通道設(shè)備大量共存的現(xiàn)狀,在研究光纖通道協(xié)議的基礎(chǔ)上,對(duì)速率自適應(yīng)功能進(jìn)行分析與總結(jié),設(shè)計(jì)了一種光纖通道速率自適應(yīng)狀態(tài)機(jī),實(shí)現(xiàn)光纖通道模塊的兼容設(shè)計(jì),使其能與不同傳輸速率的光纖通道設(shè)備互連通信。該設(shè)計(jì)方案具有一定的通用性,可應(yīng)用于其他光纖通道設(shè)備接口設(shè)計(jì)中,提高設(shè)備的可擴(kuò)展性和兼容性,方便不同設(shè)備之間的互連和組網(wǎng),降低研發(fā)以及生產(chǎn)成本。
光纖通道協(xié)議分層模型較為簡(jiǎn)單,一共分為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層組成了物理和信號(hào)層,而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)機(jī)的子狀態(tài)機(jī)。FC端口狀態(tài)機(jī)一共由三個(gè)子狀態(tài)機(jī)組成,分別是速率協(xié)商狀態(tài)機(jī)、發(fā)射器訓(xùn)練狀態(tài)機(jī)和正常運(yùn)行狀態(tài)機(jī)[4]。其中,速率協(xié)商狀態(tài)機(jī)、發(fā)射器訓(xùn)練狀態(tài)機(jī)是可選功能,而正常運(yùn)行狀態(tài)機(jī)是必要功能。本文針對(duì)速率自適應(yīng)狀態(tài)機(jī)進(jìn)行研究與設(shè)計(jì)。
速率協(xié)商狀態(tài)機(jī)中,F(xiàn)C端口通過循環(huán)切換其支持的速率,直到它確定鏈路支持的最高速率[5]。本文所述“速率自適應(yīng)”功能中的“速率”指的是比特傳輸速率。速率自適應(yīng)功能能夠使鏈路實(shí)現(xiàn)以端口和連接端口的基礎(chǔ)結(jié)構(gòu)共有的最高速率進(jìn)行通信[6]。在速率自適應(yīng)功能中,每個(gè)端口最多可支持4個(gè)不同速率,且每個(gè)端口支持的4個(gè)速率可不相同,但需保證相連的端口至少支持一個(gè)相同的速率,從而使鏈路能夠正常進(jìn)行通信。
圖1 速率自適應(yīng)鏈路物理架構(gòu)
如圖1所示,速率自適應(yīng)算法只針對(duì)點(diǎn)對(duì)點(diǎn)的物理連接[7]。雖然速率自適應(yīng)算法能夠同時(shí)被兩個(gè)端口執(zhí)行,但是算法本身針對(duì)的是同一個(gè)物理端口。例如,當(dāng)端口A開始速率自適應(yīng)過程的時(shí)候,算法中所提到的發(fā)送器和接收器都是針對(duì)A端口的發(fā)送器和接收器,跟B端口無關(guān)。
速率自適應(yīng)過程應(yīng)當(dāng)在鏈路物理狀態(tài)相對(duì)穩(wěn)定的情況下進(jìn)行,否則,速率自適應(yīng)算法可能不會(huì)將鏈路傳輸速率設(shè)置為兩端口支持的最大公共速率,而是根據(jù)當(dāng)前鏈路連接質(zhì)量將速率設(shè)定在一個(gè)相對(duì)欠優(yōu)的值。一旦鏈路以特定速率建立起連接,速率自適應(yīng)過程將不會(huì)再次啟動(dòng),除非監(jiān)測(cè)到信號(hào)故障。
速率自適應(yīng)算法一共由三個(gè)必要獨(dú)立的子協(xié)商過程構(gòu)成,依次是信號(hào)等待狀態(tài)、主協(xié)商狀態(tài)和從協(xié)商狀態(tài)。以上三個(gè)子協(xié)商狀態(tài)分別對(duì)應(yīng)于速率自適應(yīng)過程中的一段時(shí)間,在這段時(shí)間中,進(jìn)行速率自適應(yīng)的光纖通道N端口將會(huì)通過一些重復(fù)性的活動(dòng)來確定鏈路連接的狀態(tài)以及對(duì)方相連端口的狀態(tài),從而調(diào)整改變自己的狀態(tài),達(dá)到速率自適應(yīng)的目的。在每一個(gè)子協(xié)商狀態(tài)中,F(xiàn)C端口滿足特定條件后就會(huì)進(jìn)入下一子協(xié)商狀態(tài),最后,從協(xié)商狀態(tài)結(jié)束,標(biāo)志著FC端口成功完成速率協(xié)商,鏈路將以特定的傳輸速率進(jìn)行通信,F(xiàn)C端口退出速率協(xié)商狀態(tài),進(jìn)入端口狀態(tài)機(jī)進(jìn)行下一步操作[8]。
2.2.1 信號(hào)等待狀態(tài)
在信號(hào)等待狀態(tài)下,Tx端口以一個(gè)較低的速度循環(huán)切換Tx端口所支持的速率,以使對(duì)方的Rx端口能夠進(jìn)行同步。同時(shí),Rx循環(huán)切換Rx端口所支持的速率,以尋求對(duì)方的Tx端口發(fā)送來的信號(hào)。此狀態(tài)用來在端口連接后啟動(dòng)設(shè)備,使得Tx端口處于所支持的最高速率。
圖2 信號(hào)等待狀態(tài)流程圖
2.2.2 主協(xié)商狀態(tài)
在主協(xié)商狀態(tài)下,Tx端口一開始處于所支持的最高速率,然后向下循環(huán)切換速率。Tx端口每改變一次速率都會(huì)維持在該速率一段時(shí)間,以使得其他設(shè)備能夠與之進(jìn)行通信。如果通過了同步測(cè)試并且Rx端口速率大于等于Tx端口速率,則將結(jié)束主協(xié)商狀態(tài),進(jìn)入速率自適應(yīng)從協(xié)商狀態(tài)。
圖3 主協(xié)商狀態(tài)流程圖
圖4 看門狗計(jì)時(shí)器流程圖
看門狗程序?qū)嶋H上是一個(gè)計(jì)時(shí)器,用來記錄主協(xié)商過程同步測(cè)試持續(xù)的時(shí)間,當(dāng)tneg大于或等于t_fail的時(shí)候,看門狗程序?qū)⒁龑?dǎo)整個(gè)系統(tǒng)回到信號(hào)等待狀態(tài)。
2.2.3 從協(xié)商狀態(tài)
在從協(xié)商狀態(tài)下,Tx端口速率等于Rx端口速率。從協(xié)商狀態(tài)用來測(cè)試Rx速率的穩(wěn)定性以確認(rèn)速率協(xié)商成功。如果由于不穩(wěn)定或者丟失信號(hào)等發(fā)生了超時(shí)的現(xiàn)象,那么系統(tǒng)將會(huì)返回到等待信號(hào)狀態(tài)。如果信號(hào)穩(wěn)定,那么系統(tǒng)將進(jìn)入正常運(yùn)行狀態(tài)。
速率從協(xié)商狀態(tài)使用的看門狗程序與速率主協(xié)商狀態(tài)中使用的看門狗程序是相同的。如果系統(tǒng)沒有通過同步測(cè)試,那么系統(tǒng)將改變Rx端口的速率來尋求同步,同步后,Tx端口的速率值將被設(shè)置為Rx端口的速率值,然后啟動(dòng)對(duì)t_stbl的計(jì)時(shí)器tsync。同步時(shí)間超過t_stbl后,則認(rèn)為系統(tǒng)成功完成速率自適應(yīng)過程,進(jìn)而可以進(jìn)入FC端口狀態(tài)機(jī)進(jìn)行端口狀態(tài)的調(diào)整。
圖5 從協(xié)商狀態(tài)流程圖
對(duì)于速率自適應(yīng)模塊的設(shè)計(jì),本文采用“自頂向下”的設(shè)計(jì)方法,按照FC-FS-4協(xié)議標(biāo)準(zhǔn)中相關(guān)章節(jié)的規(guī)定,對(duì)速率自適應(yīng)算法步驟進(jìn)行研究,逐步分解細(xì)化形成有限狀態(tài)機(jī),配以若干計(jì)時(shí)器實(shí)現(xiàn)速率自適應(yīng)功能。設(shè)計(jì)出的速率自適應(yīng)控制模塊如圖6所示。速率自適應(yīng)控制模塊由速率自適應(yīng)控制狀態(tài)機(jī)與外部接口組成,通過速率自適應(yīng)控制狀態(tài)機(jī)實(shí)現(xiàn)光纖通道速率自適應(yīng)算法,通過外部接口與端口進(jìn)行通信了解鏈路及端口的運(yùn)行狀態(tài),并控制鏈路及端口的傳輸速率[9]。
該模塊中,輸入信號(hào)是FC原語序列和原語信號(hào),用來指示鏈路的速率狀況以及相連端口的狀態(tài)。輸出信號(hào)一部分由速率自適應(yīng)控制模塊輸出的關(guān)于當(dāng)前端口發(fā)送端和接收端的速率信息組成,另一部分與鏈路層配置管理模塊、時(shí)鐘復(fù)位同步模塊和端口狀態(tài)機(jī)模塊相連,從而使速率自適應(yīng)控制模塊具有切換和控制鏈路層速率的功能。同時(shí),模塊內(nèi)的速率自適應(yīng)控制狀態(tài)機(jī)模塊用于依據(jù)當(dāng)前端口和鏈路連接狀態(tài),使用速率自適應(yīng)算法,完成算法對(duì)鏈路連接速率的調(diào)整。鏈路層配置管理模塊使用Xilinx FPGA芯片的動(dòng)態(tài)重配置端口(Dynamic Reconfiguration Port,DRP)對(duì)GTH高速收發(fā)器的速率進(jìn)行動(dòng)態(tài)改變,使得鏈路的物理狀態(tài)與FPGA芯片內(nèi)部信號(hào)一致,正確完成速率的協(xié)商與適配。DRP端口為用戶提供了較為便捷的同步接口和控制信號(hào),通過配置相應(yīng)的DRP地址對(duì)應(yīng)的參數(shù)值,可以對(duì)實(shí)現(xiàn)光纖通道鏈路層的管理[10]。
圖6 速率自適應(yīng)控制模塊接口
圖7 速率自適應(yīng)算法狀態(tài)轉(zhuǎn)換
對(duì)于速率自適應(yīng)控制狀態(tài)機(jī),由前文對(duì)速率自適應(yīng)算法的研究與分析,可以總結(jié)出相應(yīng)的速率自適應(yīng)算法狀態(tài)轉(zhuǎn)換圖,如圖7所示。速率自適應(yīng)過程可分為信號(hào)等待、速率自適應(yīng)主協(xié)商、速率自適應(yīng)從協(xié)商、正常工作4種模式。信號(hào)等待、主協(xié)商和從協(xié)商狀態(tài)參照光纖通道協(xié)議的要求,對(duì)速率自適應(yīng)算法的實(shí)現(xiàn)步驟需要再次進(jìn)行細(xì)分,繼續(xù)設(shè)計(jì)出相應(yīng)的有限狀態(tài)機(jī)[11]。正常工作模式是速率自適應(yīng)過程完成后進(jìn)入的工作狀態(tài),用以維持速率自適應(yīng)的結(jié)果,并對(duì)鏈路信號(hào)進(jìn)行監(jiān)測(cè),在信號(hào)故障或者鏈路重啟時(shí)再次進(jìn)行速率自適應(yīng)過程。
在信號(hào)等待模式中,初始收發(fā)速率均工作于最大支持速率,并逐級(jí)下調(diào)收發(fā)速率,直至接收同步測(cè)試通過或信號(hào)未丟失才進(jìn)入速率自適應(yīng)主協(xié)商模式;在速率自適應(yīng)主協(xié)商模式中,收發(fā)速率按照以切換接收速率為內(nèi)循環(huán)、切換發(fā)送速率為外循環(huán)的方式進(jìn)行同步測(cè)試,若接收同步測(cè)試通過時(shí)接收速率不小于發(fā)送速率,則進(jìn)入速率自適應(yīng)從協(xié)商模式,否則繼續(xù)在速率自適應(yīng)主協(xié)商模式中循環(huán)測(cè)試;在速率自適應(yīng)從模式中,發(fā)送速率等于接收速率,通過切換收發(fā)速率直至通過同步穩(wěn)定性測(cè)試后進(jìn)入正常工作模式。在正常工作模式中,若遇到信號(hào)丟失或同步丟失超時(shí)或速率自適應(yīng)請(qǐng)求來臨,則重新進(jìn)入等待啟動(dòng)模式。
基于FC-FS-4協(xié)議對(duì)FC端口狀態(tài)機(jī)的規(guī)定,本文針對(duì)Xilinx公司Kintex Ultrascale架構(gòu)的XCKU115芯片,在Vivado集成開發(fā)環(huán)境下,采用Verilog編程語言,實(shí)現(xiàn)FC端口速率自適應(yīng)功能[12]。由于光纖通道協(xié)議標(biāo)準(zhǔn)規(guī)定,支持速率自適應(yīng)功能的光纖通道端口至多可支持四種不同的線速率,因而設(shè)計(jì)的16G模塊向下與8G、4G和2G光纖通道模塊兼容。仿真實(shí)驗(yàn)中,將待測(cè)16G光纖通道N端口與不同速率的其他N端口相連,通過觀察兩個(gè)端口協(xié)商所得鏈路通信速率,進(jìn)行速率自適應(yīng)功能的評(píng)估。
由仿真結(jié)果可看出,當(dāng)speedneg_result_valid_o為1時(shí),速率協(xié)商過程結(jié)束,此時(shí),各連接條件下的仿真結(jié)果表明speedneg_transmit_speed_o和speedneg_receive_speed_o均相等,且為兩相連端口支持的最大公共速率,表明端口收發(fā)端速率相同且工作在最優(yōu)速率下,能夠完成速率自適應(yīng)功能??梢钥吹剑郎y(cè)模塊與16G FC模塊相連時(shí),兩個(gè)端口從16Gbps開始進(jìn)行速率協(xié)商,由于兩個(gè)端口均支持16G標(biāo)準(zhǔn),因而速率協(xié)商過程中不需要頻繁切換端口速率,經(jīng)過若干個(gè)狀態(tài)轉(zhuǎn)換后,較快完成速率協(xié)商。而隨著相連端口之間速率差距的增加,速率自適應(yīng)過程所需時(shí)間也在增加,這是因?yàn)槊看吻袚Q速率,端口都會(huì)保持該速率一段時(shí)間以期鏈路同步,而相連端口速率差距越大,端口需要切換速率的次數(shù)就越多,消耗的時(shí)間也越長(zhǎng)。
本文根據(jù)ANSI制定的FC-FS-4協(xié)議標(biāo)準(zhǔn)中對(duì)速率自適應(yīng)功能的有關(guān)規(guī)定,對(duì)速率自適應(yīng)算法進(jìn)行研究與細(xì)分,設(shè)計(jì)出有限狀態(tài)機(jī)和狀態(tài)轉(zhuǎn)換圖,并提出了一種基于FPGA的光纖通道速率自適應(yīng)功能的設(shè)計(jì)方法。實(shí)驗(yàn)與仿真結(jié)果表明:使用FPGA實(shí)現(xiàn)的端口速率自適應(yīng)能夠完成協(xié)議中規(guī)定的各項(xiàng)功能,能夠根據(jù)相連端口所支持的傳輸速率以及鏈路連接質(zhì)量,自適應(yīng)地調(diào)節(jié)本模塊收發(fā)端口的傳輸速率,與鏈路遠(yuǎn)端端口速率匹配,實(shí)現(xiàn)產(chǎn)品的向下兼容,有較強(qiáng)的可擴(kuò)展性。該設(shè)計(jì)具有一定的通用性,可推廣到不同應(yīng)用場(chǎng)景下光纖通道設(shè)備的研發(fā)中,降低研發(fā)以及生產(chǎn)成本。