王薊翔
光纖通道(FC,Fibre Channel)協議由美國國家標準委員會(ANSI)負責制定和維護,具有很高的可靠性與實時性,適用于高帶寬、多媒介、長距離傳輸[1],具有傳輸效率高、支持上層協議種類多、工業標準開放等特點[2],是倍受關注的通道標準和網絡協議。
光纖通道協議具有分層結構,其中:FC-0與FC-1位與光纖通道底層。負責定義系統的物理鏈路、傳輸介質,為數據傳輸提供適應性編碼方法。FC-2是中間層,主要功能是定義獨立于上層協議的數據傳輸方法或機制,比如,分幀協議和流控制。上層協議包括 FC-3層和 FC-4層,它們不僅增強了纖維通道的功能還提供了更大范圍內的互操作性。
光纖通道協議還提供了三種用于網絡設計的拓撲結構:點到點、仲裁環和交換結構。所有拓撲結構都是基于GB/s數據傳輸速度的,其中有效帶寬為100 MB/s(對于全雙工模式可以達到200 MB/s)[3]。
現將重點研究仲裁環結構下的端口仲裁機制,結合UML語言進行系統建模,并且通過 C++代碼實現端口類相關功能。
仲裁環拓撲結構中,成環狀連接的每一個端口都被分配一個物理地址(AL_PA),它能夠確立該端口的優先級高低:地址越小,優先級越高。
光纖通道協議 FC-FS[4]提出了一種光纖通道通用的數據編碼方式及尋址機制:8b/10b編碼和地址的中型不均衡性機制。滿足這 2個條件的有效地址覆蓋從 hex'00'到 hex'EF'的總共127個數據。
1.2.1 原語信號及端口歷史變量
光纖通道仲裁環的有序集[5]是一個 32個比特位傳輸字。其中第一個字節是 K28.5專用字符。原語信號是有特殊意義的有序集,它分配傳輸過程中的動作或者事件,環路端口觸發一次響應只需要接收一個原語信號。歷史變量是一個二值變量,用來記憶端口操作過程,方便了系統其它部分隨時檢查端口之前的工作記錄。
仲裁機制下的原語信號及端口歷史變量如表 1和表 2所示。

表1 原語信號

表2 端口歷史變量
1.2.2 公平訪問算法
公平訪問算法能夠避免高優先級端口壟斷環路。它通過需要發送消息的端口組成一個窗口,其中的端口都有機會申請仲裁并且贏得環路訪問權。如果一個贏得控制權的端口沒有完成所有數據的發送就放棄控制權,那么它必須等到所有端口都有一次訪問了環路后,一個新的訪問窗口開始建立時,重新贏得仲裁繼續發送數據。
如果同一時刻多個端口競爭控制權,具有最高優先級AL_PA的那個才會贏。例如,某個端口正在仲裁,同時又收到了上游端口傳來的 ARB(x),它就會將 AL_PA的值同自己的值進行比較,發送出優先級相對較高的 AL_PA的ARB(x)。所以在同時仲裁時,只有優先級最高的設備才能回收自己發出的ARB(x),從而贏得仲裁。
公平算法由 ARB(F0)監控:當一個環端口贏得仲裁時,它將所有接收到的原語信號都用 ARB(F0)代替,告知其他設備已經有端口贏得仲裁。而參與競爭的端口在收到ARB(F0)之后,又會用自己的 ARB(AL_PA)代替ARB(F0)(F0的優先級最低),告知取得控制權的端口,環路還有其他端口正在申請仲裁。因此,只要還有活躍的仲裁者在競爭控制權,ARB(F0)就會不斷的流向當前的勝利者。
作為一種可視化建模語言,UML在面向對象的系統分析與設計中得到了廣泛的應用[6]。它能夠可視化構造系統開發的各階段,并提供豐富的表達方式,系統用戶、分析人員、測試人員和管理人員都可以從 UML模型中無歧義地獲取所需信息[7]。
標準建模語言UML 的主要內容可歸納為靜態建模和動態建模兩大類:其中用例圖、 類圖等主要用來描述系統的靜態結構,活動圖等主要描述系統對象之間的交互關系及相應的時序狀態[8]。
端口需求分析如圖1所示。

圖1 仲裁機制需求分析
“底層電路”是光纖通道仲裁環協議硬件電路。主要負責定義光纖通道中的傳輸介質和傳輸速率;“上層請求”映射上層協議規則,使系統工作于不同的環境中,這里研究仲裁環環路端口的仲裁請求。“端口仲裁”是仲裁環端口競爭對環路控制權的工作機制。結合“接收數據”和“發送數據”完成數據接收、編碼、格式轉換等任務。
根據環路仲裁機制設計的端口類如圖2所示。

圖2 仲裁環端口類
該類包含的端口屬性有:仲裁歷史變量以及端口物理地址;端口操作有:接收上層請求、接收下層數據、判斷信號類型和發送信號及解析信號。
行為建模是針對需求分析中“端口仲裁”這一用例,依賴“接收消息”和“發送消息”兩個用例的業務流程建模。以不同原語信號作為消息,通過活動圖描述不同端口類對象之間收發消息的關系,以及端口申請仲裁并且贏得環路控制權的過程。
假定環路拓撲為一個三端口結構,優先級高低順序為端口2>端口1>端口3,端口連接方式為:端口1->端口2->端口3->端口1。詳細行為建模如圖3所示。

圖3 環路仲裁行為建模
根據以上建模結果,可以用 C++編寫端口類(代碼省略構造函數)及相關操作函數,對仲裁環環路端口從申請仲裁到贏得環路控制權這一工作機制進行軟件實現。
初始化端口地址為hex'0xc1',所有歷史變量都為0,上層發送仲裁請求,端口開始從底層依次接收原語信號:IDLE、ARB(E1)、ARB(A3)、ARB(F0)、ARB(C1)、ARB(E1)和IDLE、ARB(A3)。端口仲裁實現為圖4所示。

圖4 端口仲裁實現
仲裁環拓撲結構是一種重要的光纖通道網絡連接方式,它比交換結構簡單,且較點對點拓撲靈活,有很強的研究意義。這里結合UML建模語言對公平訪問算法進行重點分析。這種語言具有圖形化的建模風格,讓端口建模條理清晰、功能描述全面,適于在通信協議分析領域大范圍推廣。
[1]孫琦,吳勇,鄭昕,等.光纖通道技術在統一航空電子網絡中的應用[J].信息安全與通信保密,2009(05):80-82.
[2]于曉磊,陳紹緯,周虎.FC-AE-1553B通信結構的仿真研究[J]. 信息安全與通信保密,2010(05):52-54.
[3]NGT.存儲區域網概念與應用[M].北京:人民郵電出版社,2002.
[4]INCITS.Fibre Channel-Framing And Signaling(FC-FS).[EB/OL].(2008-10-23)[2011-02-11]. http://www.t11.org/ftp/t11/pub/fc/fs-3/08-137v3.pdf.
[5]INCITS. Fibre Channel Arbitrated Loop(FC-AL-2).[EB/OL].(1999-06-28)[2011-02-11].http://www.t11.org/ftp/t11/member/fc/al-2/99-524v0.pdf.
[6]BOOCH G. Object-oriented Analysis and Design with Applications[M]. USA:Benjamin/Cummings Publishing Company,1994.
[7]張龍祥.UML與系統分析設計[M].北京:人民郵電出版社,2001.
[8]方紅萍,陳和平.信息系統建模研究[J].計算機工程與設計,2006,27(09):3613.
[9]郭寧.UML及建模[M].北京:清華大學出版社,2007:66-76.