FC協議與iSCIS協議詳解

1.SAN說明


     SAN(Storage Area Network,存儲局域網絡)的誕生,使存儲空間得到更加充分的利用以及安裝和管理更加有效。SAN是一種將存儲設備、連接設備和接口集成在一個高速網絡中的技術。SAN本身就是一個存儲網絡,承擔了數據存儲任務,SAN網絡與LAN業務網絡相隔離,存儲數據流不會佔用業務網絡帶寬。


在SAN網絡中,所有的數據傳輸在高速、高帶寬的網絡中進行,SAN存儲實現的是直接對物理硬件的塊級存儲訪問,提高了存儲的性能和升級能力。

  早期的SAN採用的是光纖通道(FC,Fiber Channel)技術,所以,以前的SAN多指採用光纖通道的存儲局域網絡,到了iSCSI協議出現以後,爲了區分,業界就把SAN分爲FC-SAN和IP-SAN。

2.FC說明

  FC開發於1988年,最早是用來提高硬盤協議的傳輸帶寬,側重於數據的快速、高效、可靠傳輸。

         到上世紀90年代末,FC SAN開始得到大規模的廣泛應用。

  FC光纖通道擁有自己的協議層,它們是:


 FC-0:連接物理介質的界面、電纜等;定義編碼和解碼的標準。l  

  FC-1:傳輸協議層或數據鏈接層,編碼或解碼信號。l  

  FC-2:網絡層,光纖通道的核心, 定義了幀、流控制、和服務質量等。l  

  FC-3:定義了常用服務,如數據加密和壓縮。l  

  FC-4:協議映射層,定義了光纖通道和上層應用之間的接口,上層應用比如:串行SCSI 協 議,

       HBA卡的驅動提供了FC-4 的接口函數。FC-4 支持多協議,如:FCP-SCSI,FC-IP,FC-VI。


  光纖通道的主要部分實際上是FC-2。其中從FC-0到FC-2被稱爲FC-PH,也就是“物理層”。

        光纖通道主要通過FC-2來進行傳輸,因此,光纖通道也常被成爲“二層協議”或者“類以太網協議”。


  理解光纖通道(FC)的核心,包括其命名格式和位址機制,可以幫助人更好的理解SAN。要全面瞭解所有有關協議的知識才能夠快速瀏覽問題並找出問題所在。雖然通過圖形界面,鼠標點擊和有限的知識也可能解決問題,但是這顯然並不是好方法。因此我們在這裏學習一下光纖通道協議。

  在此重複:光纖通道並不是SCSI的替代;一般而言SCSI是光纖通道的上層。有些跑題,現在進入正題。光纖通道一般是指FC-PHY層:FC0-FC2,在我們的上一篇文章已經有過簡短提及。術語FCP,即光纖通道協議,是指對SCSI的界面協議或FC-4層映射。我們這裏討論的是光纖通道的內在工作原理,而不是指光纖通道協議。

  光纖通道的數據單元叫做幀。即使光纖通道本身就有幾個層,大部分光纖通道是指第2層協議。一個光纖通道幀最大是2148字節,而且光纖通道幀的頭部比起廣域網的IP和TCP來說有些奇怪。光線通道只使用一個幀格式來在多個層上完成各種任務。幀的功能決定其格式。相比我們在IP世界中的概念,光纖通道幀格式是奇特而且奇妙的。

  光纖通道幀起始於幀開始(SOF)標誌,隨後是幀頭部,這個一會進行描述。數據,或光纖通道內容,緊隨其後,然後是幀結束(EOF)。這樣封裝的目的是讓光纖通道可以在需要時被其他類似於TCP的協議所承載。

   一個幀是在光纖通道連接中數據包的最小單位 (對上層協議是透明的)


2.1 FC拓撲結構


2.2 光纖通道的尋址方式


     在數據中心網絡中,光纖通道(FC:Fibre Channel)是通過 World Wide Name ( WWN)來標識一個唯一的設備。WWN是一個 64 位的地址。WWN 對於光纖通道設備就像Ethernet 的MAC 地址一樣都是全球唯一的,它們是由電器和電子工程協會(IEEE)標準委員會指定給製造商,在製造時被直接內置到設備中去的。

   Fabric是指一個或幾個可以使用目的標示來傳輸數據幀的交換機。Fabric通常可以被認作是一個“雲團”,也可以當作是一個虛擬連接。每一個設備的唯一標示就是World Wide Name (就像一個人的身份證,終身使用並不會修改)


通常用 Node WWN 來標示每臺不同的FC交換機,它是唯一的;對於FC交換機的端口,則使用PortWWPN 來標示交換機的端口。所以一個交換機只有一個 Node WWN 和多個 Port WWPN。 根據IEEE標準定義,WWN的定義方式有三種,可以見《深度分析FC/FCOE中WWN的類型定義》一文所述。


      

2.3 FC流量控制

        FC中的流量控制機制是在信用度系統上的基礎上。所謂的信用度(Credit)是指設備接受額外幀的能力。信用度的多少決定了設備接收額外幀能力的大小。如果接受方沒有向發送方發出任何的信用度,那麼發送方就不能發送任何幀,在信用度的基礎上協調幀傳送,可以避免幀的丟失,同時減少了對整個幀序列進行重傳的頻率。

         實際上,這種基於信用度的機制建立在終端節點能夠提供的緩衝區(TX-Buffer和RX-Buffer)的數目上,這些緩衝區用於存儲到來的數據流。例如,擁有板上存儲器的主機總線適配器,可能被分派作爲接受緩衝區,成爲FC-1解串和譯碼功能,以及FC-2的幀重新裝配功能之間的接口。當FC-1來提交幀的時候,這種接受緩衝區被充滿;當FC-2的裝配線取出各個幀進行數據塊的重建時,這種接受緩衝區被清空。爲了充分的利用FC的傳輸能力,最好能夠連續的多發出多個幀。這一點在事務開始前由授權充分信用度來實現,同時利用FC的全雙工能力在幀還未接受時就發出附加的信用度。


          FC中常用的兩種是端到端(EE-Credit)和緩衝區到緩衝區(BB-Credit)的流量控制。


         端到端的流量控制機制(EE-Credit)是在兩個終端節點之間使用的流量控制。在兩個通信節點登錄並交換通信參數時候,建立起傳輸信用度,並且由節點本身來監測。中間的交換機不參與端到端流量控制。如圖2所示

 

        一旦一個初始的信用度等級授權後,如果要補充信用度的話,要由接受方向發送出應答(ACK)來實現。每發出一個幀發送方就消耗了一個端到端的信用度(EE-Credit),只有當其接收到一個ACK後才能增加信用度。


           光纖通道中還定義使用BB-Credit的流量控制機制(緩衝區到緩衝區的信用度),並且依靠receive-ready(R-RDY)有序集補充信用度,如圖2所示。某個附接到交換機的終端接點將在登錄到交換機的過程中建立它的BB-Credit。在交換機遠端參與通信的一方將在登錄時建立其自身交換機的BB-Credit。BB-Credit沒有端到端的成分。發送方在發出一個幀時將BB-Credit減1,直到BB-Credit的數量爲零的時候.此時不能再進行幀發送。在接收到R-RDY時將BB-Credit加1。BB-Credit的初始值必須是非零的。如果爲零的話,說明不能再接收或者發送幀。


2.4  FC發現機制


         在FC中,當一個新的設備加入到網絡中時,它要與它的網絡的管理者(一般是交換機)取得聯繫,網絡管理者便會依次告知所有那些已經註冊過的和那些需要被通知這一事件的設備。此外,在FC中,由於爲了增強網絡的靈活性和安全性,有時可能需要進行分區。當一個新的設備加入到網絡中的時候,該設備首先與它同在一個分區的其它現有設備完成註冊,然後連接這個設備的交換機會把這一事件告知其他的分區的設備和其它的交換機。

         如圖3所示,如果當A區的節點A加入網絡時,它先與FC交換機取得聯繫,那麼FC交換機將把A節點加入網絡的這一信息先後分別告知節點B和節點C以及B區的節點D和節點E。至此,A節點就加入到網絡中,可以與A區與B區中的設備進行通信。


Fabric網絡設備註冊過程 

如果設備爲Fabric模式,將會由設備首先向註冊服務器(FFFFFE)發送註冊申請(FLOGI),由註冊服務器應答(如通則發送端口地址) 。獲得許可和Fabric地址後向名稱服務器發送端口註冊請求,由名稱服務器決定,獲得許可的同時將同時收到可訪問設備列表(主動設備) 



2.5 Fabric端口類型及動態地址


設備 (節點)端口

N_Port = “Fabric直接連接設備” 

NL_Port = “Loop連接設備” 

交換機端口 
E_Port = “擴展端口” (交換機到交換機) 
F_Port = “Fabric端口” 

FL_Port = “Fabric Loop端口” 

G_Port = “通用(Generic)端口 — 可以轉化爲E或F”


      因爲WWN的地址太長所以用這個地址來尋址的話會影響到路由的性能。這樣光纖通道網絡採用了另外一種尋址方案。這種方案是用基於交換光纖網絡中的光纖端口來尋址稱爲FCID。基於交換光纖網絡中的每個端口有一個唯一的 24位的地址,FCID,這種FCID就類似TCP/IP中的IP地址。用這種 24 位地址方案,這樣得到了一個較小的幀頭,這能加速路由的處理。但是這個 24 位的地址必須通過某種方式連接到與World Wide Name 相關聯的 64 位的地址。


       在光纖通道(SAN)環境中,FC交換機它本身負責分配和維持端口地址。當有一個WWN 登錄到交換機的某一個端口時,交換機將會爲其分配一個FCID地址,同時交換機也將會創建FCID和登錄的WWN 地址之間的關聯關係表並維護他們的關係。交換機的這一個功能是使用名字服務器(NAME SERVER)來實現的。


        名字服務器其實是光纖操作系統的一個組件,在交換機內部運行。它本質上是一個對象數據庫,光纖設備在連接進來時,向該數據庫註冊它們的值這是一個動態的過程。動態的尋址方式同時也消除了手工維護地址出錯的潛在的可能,而且在移動和改變 SAN 方面也提供了更多的靈活性。


一個 24 位的FCID地址由三個部份所組成: Domain,Area,Port組成。 
    Domain ( 從 23 到 16 位) 
    Area(從 15 到 08 位) 
    Port 或仲裁環物理地址-AL_PA( 從 07 到 00 位) 


Domain :端口地址中最重要的字節是 Domain。這是標識交換機本身的地址。最多隻能達到256個地址。除了一些被保留使用的地址外,實際上只有 239 個地址可用。這意味着在你的 SAN 環境中,所在在一個SAN網絡中最多隻可能達 239 個交換機。同時Domain 可以用來標識一個san網絡一個FC交換機的唯一性。


Area :它提供 256 個地址。地址的這一個部份被用於識別個別的 FL_Ports 環,或它可能被用於當做一組F_Port 的識別符,例如,多端口的一個光纖卡的識別符。這意謂着每組端口有一個不同的 area 編號,即使對於只有一個端口的組也是如此。


Port :地址的最後部份提供 256 個地址,用於識別相連的 N_Port 和 NL_Port。

按上面介紹,可以計算出一個SAN網絡最大的地址數目: Domain x Area x Ports = 239 x 256 x 256=15,663,104 個地址。


3.iSCSI協議結構

如同任何一個協議一樣,iSCSI也有一個清晰的層次結構,根據OSI模型,iSCSI的協議棧自頂向下一共可以分爲五層,如圖


.SCSI層:根據應用發出的請求建立SCSI CDB(命令描述塊),並傳給iSCSI層;同時接受來自iSCSI層的CDB,並嚮應用返回數據。
.iSCSI層:對SCSI CDB進行封裝,以便能夠在基於TCP/IP協議的網絡上進行傳輸,完成SCSI到TCP/IP的協議映射。這一層是iSCSI協議的核心層。   
.TCP層:提供端到端的透明可靠傳輸。
.IP層:對IP報文進行路由和轉發。   
.Link層:提供點到點的無差錯傳輸


3.2 iSCSI 流量控制與超時重發

        流量控制是指發送方控制發送數據幀到網絡的速率。發送方發送的速率—般是傳送路徑上的交換機、路由器或接收方可用的緩衝區大小的函數。iSCSI則採用TCP/lP協議的端到端的流量控制機制,以可變發送窗口的方式進行流量控制。發送窗口在連接建立時由雙方面定,但在通信過程中,接收方可根據自己的資源使用情況,隨時動態地調整自已的接收窗口(可增大或減小),然後告訴對方,使發送方的發送窗口和自己的接收窗口一致。

         iSCSI採用的是TCP的自適應超時重發算法,可根據網絡的情況動態調整。這種算法記錄每一個報文段發出的時間以及收到相應的確認報文段的時間,這兩個時間之差就是報文段的往返時延RTT,當發送—個數據段時,啓動相應的定時器,如果定時器超時確認報文段還沒有到達,就觸發數據配發機制。如果超時之前得到確認,就記錄新的往返時延,將各個報文段的往返時延樣本進行加權平均得到新的報文段的平均往返時延RTT,顯然定時器設置的重發時間應大於平均的往返時延RTT。在實際應用中,RTT的算法還很複雜,目前一般採用的是Karm算法。


3.3 iSCSI發現機制

        iSCSI發起端爲了和iSCSI目標端建立iSCSI會話,iSCSI需要知道ISCSI目標端的IP地址,TCP端口號和名字三個信息。iSCSI發現的目的是爲了讓iSCSI發起端獲取一條到iSCSI目標端的通路。iSCSI有三種發現機制:

⑴ 靜態配置:在iSCSI發起端已經知道iSCSI目標端的IP地址TCP端口號和名字信息時,iSCSI發起端不需要執行發現。iSCSI發起端直接通過IP地址和TCP端口來建立TCP連接,使用iSCSI目標端的名字來建立iSCSI會話。這種發現機制比較適合比較小的iSCSI體系結構

⑵ SendTarget發現:在iSCSI發起端知道iSCSI目標端的IP地址和TCP端口的情況下,iSCSI使用IP地址和TCP端口號建立TCP連接後建立發現對話。iSCSI發起端發送SendTarget命令查詢網絡中的存在的iSCSI信息。這種方法主要用於網關設備,iSCSI發起端被靜態配置連接到指定的iSCSI設備。iSCSI發起端和iSCSI網關設備建立對話併發送SendTarget請求給iSCSI網關設備。iSCSI網關設備返回一系列和它相連的ISCSI目標端的信息。iSCSI發起端選擇一個目標端來建立對話。

⑶ 零配置發現:這種機制用於iSCSI發送設備完全不知道ISCSI目標端的信息的情況下。iSCSI發起端利用現有的IP網絡協議SLP(Service Location Protocol for Discovery,服務定位協議)。iSCSI目標端使用SLP來註冊,iSCSI發起端可以通過查詢SLP代理來獲得註冊的iSCSI目標端的信息。當iSCSI目標端加入到網絡中的時候,拓撲結構也隨之改變。雖然這種方法增加了實現的複雜性,但它不需要重新配置發起端即可找到新的目標端。


4 FC 與iSCSI協議的比較

本文主要從下面幾個方面對兩個協議進行比較:

4.1 流量控制機制對網絡的適應性

         FC採用基於信用的流量控制機制,當接受者有足夠的緩存接受發信者的數據時,接受者把Credit(信用度)分配給發信者。它根據發送者的請求分配Credit,僅當發送者沒有用完它的Credit時,它纔可以發送數據。在MAN/WAN中,發送者必須要等待很長時間來獲得接受者的確認消息(以向網絡發送新的數據)。這種基於信任的流量控制機制降低了網絡的利用率。


          iSCSI是基於窗口的發送機制,由於發送方可以根據網絡的擁塞情況動態地調整發送速率,因此iSCSI的流量控制機制對網絡的適應性更好,尤其在網絡傳輸延遲較大的網絡中。


4.2 超時重發機制的靈活性

              在TCP/IP協議中,TCP使用自適應重傳算法以適應互連網絡時延的變化。它的要點是:TCP監視每一條連接的性能,並計算出報文的往返時間RTT(Round Trip Time)。當連接的性能變化時,TCP隨即修改RTT(也就是說它能自動適應時延的變化)。RTT(Round Trip Time)被髮送方用來決定是否重傳報文。而Fibre Channe]使用的是靜態的超時重發機制,不會根據網絡的情況動態地加以改變,因此發送方可能過早或過遲地出現超時,這對改善網絡的綜合性能不利。相對而言,iSCSI可以動態地自適應於網絡的當的情況,可以改善網絡的綜合性能,從這個角度看,iSCSI應該優於Fibre Channel,更加適合目前的網絡情況


4.3 CPU對數據封裝的負擔大小

           在存儲環境中,發出的塊I/0請求的大小一般介於4K到64K之間。以8K的塊I/0請求爲例,已經知道在iSCSI中以太網幀的大小是1.5K,在FC中,FC的幀大小是2K。因此8K的塊I/O請求必須被分成多個小的段,以適應不同的傳輸幀大小。在FC中,分段和重組操作是在網卡中實現的,因此減輕了主機CPU的負擔。對於iSCSI協議,由於分段與重裝是有CPU來完成的,因此增加了CPU的負擔。


4.4 是否能保證數據安全傳送

            在安全性方面,因爲iSCSI的一個設計標準是它在不受信任的廣域環境中的使用,iSCSI規範允許使用多種安全方法。位於iSCSI層下的加密方案(例如,IPsec),不需要在iSCSI端設備之間進行協商,它們對於高層應用程序來說是透明的。對於其他的認證實現(如,KERBEROS或者公鑰/私鑰的交換),iSCSI登錄過程爲兩個端設備協商兩者都支持的安全類型提供了文本字段。如果協商成功,iSCSI設備之間的PDU交換將由所使用的安全程序根據適當的安全確認需求而被格式化。iSNS(Internet Storage Name Server)服務器也可以協助此過程(如作爲公鑰的倉庫)。
光纖通道是工作在第二層的協議,原本並沒有建立相應的安全機制以及安全通用協議,只不過是基於邏輯上的數據通道綁定。


5 結束語

        對於傳統的基於LAN的SAN來說,FC是比iSCSI更好的網絡互連協議,因爲FC的零複製和分段組裝機制大大地減輕了CPU的負擔,加快了數據的處理。但是,隨着存儲應用的增長,存儲網絡往往需要跨越很遠的距離,由於在流量擁塞控制機制、發現和地址機制、超時重發機制、安全機制等方面的優勢,iSCSI比FC更適合這種情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章