FCoE BB6 相关学习笔记
?FC擁有自己的獨(dú)立層次結(jié)構(gòu),FC-0到FC-4對(duì)應(yīng)OSI模型的1-5層,但也并非一一對(duì)應(yīng),完整協(xié)議內(nèi)容請(qǐng)大家自行查閱標(biāo)準(zhǔn)文檔。其中FC-2定義了數(shù)據(jù)通信的內(nèi)容,是與網(wǎng)絡(luò)方面息息相關(guān)的,下面介紹的內(nèi)容也都是以FC-2為主。
在FC網(wǎng)絡(luò)中一共有三種主要的接口角色,NPort,FPort和EPort,其中N是服務(wù)器或存儲(chǔ)等終端節(jié)點(diǎn)連接FC網(wǎng)絡(luò)的的接口,F是FC交換機(jī)設(shè)備連接服務(wù)器或存儲(chǔ)等終端節(jié)點(diǎn)的接口,E是FC交換機(jī)互聯(lián)接口。 FC設(shè)備都擁有2個(gè)重要標(biāo)識(shí):?????WWN(World Wide Name):64bit,節(jié)點(diǎn)和每個(gè)接口都有各自固定的WWN且所有的WWN均是唯一的,WWN的作用是為了身份識(shí)別和安全控制,有些類似于MAC,但不做轉(zhuǎn)發(fā)尋址使用。 FC ID:24bit,由8個(gè)bit的Domain ID,8bit的Area ID和8bit的Port ID組成,每個(gè)Domain ID代表一臺(tái)FC Switch(由此可以算出每個(gè)FC網(wǎng)絡(luò)最多支持256個(gè)Switch節(jié)點(diǎn),減去部分保留ID,實(shí)際能夠支持最多239個(gè)Switch)。終端節(jié)點(diǎn)的FC ID是基于接口的,每個(gè)NPort的FC ID是由直連的FC Switch動(dòng)態(tài)分配。FC ID的主要作用就是供數(shù)據(jù)報(bào)文在FC網(wǎng)絡(luò)中尋址轉(zhuǎn)發(fā)。 ?????有了標(biāo)識(shí)的Tag,那么就需要個(gè)動(dòng)態(tài)協(xié)議供FC Switch互相學(xué)習(xí)了,FC網(wǎng)絡(luò)使用FSPF(Fabric Shortest Path First)進(jìn)行FC ID的尋址學(xué)習(xí),看名字就知道其協(xié)議機(jī)制和OSPF沒有什么大的區(qū)別。 ? FC技術(shù)體系還有最重要的一個(gè)關(guān)鍵流控技術(shù)Buffer to Buffer Credits用來確保無丟包轉(zhuǎn)發(fā)。BB Credits和TCP滑動(dòng)窗口相似,規(guī)則很簡單,兩個(gè)相鄰FC節(jié)點(diǎn)在連接初始化的時(shí)候先協(xié)商一個(gè)度量收包設(shè)備Buffer大小的數(shù)值N出來,發(fā)包設(shè)備每發(fā)一個(gè)數(shù)據(jù)報(bào)文就做N-1,收包設(shè)備每收一個(gè)報(bào)文就回一個(gè)R_RDY報(bào)文回來,發(fā)包設(shè)備每收到一個(gè)R_RDY就做N+1,當(dāng)N=0時(shí),發(fā)包設(shè)備就停止發(fā)包。這樣當(dāng)突發(fā)擁塞時(shí),上游設(shè)備們都把報(bào)文存在本地緩存中等著,下游有空間時(shí)再發(fā),可以最簡單的避免丟包。BB Credits是以報(bào)文數(shù)目衡量buffer能力,與報(bào)文長度無關(guān)(FC報(bào)文最大長度2112Byte)。 FC設(shè)備(一般指服務(wù)器,稱為Initiator)在傳輸數(shù)據(jù)之前需要進(jìn)行兩步注冊(cè)動(dòng)作,NPort先通過FLOGI(Fabric Login)注冊(cè)到最近的Fabric交換機(jī)上,獲取FC ID及其他一些服務(wù)參數(shù)并初始化BB Credits。然后再通過PLOGI(Port Login)注冊(cè)到遠(yuǎn)端的目的設(shè)備(一般指存 儲(chǔ),稱為Target)的NPort上建立連接,并在P2P直連的拓?fù)湎鲁跏蓟疊B Credits。 ?????FC從標(biāo)準(zhǔn)建立伊始就開始被研究跨傳統(tǒng)TCP/IP/Ethernet網(wǎng)絡(luò)傳播,目前主要有iSCSI(IP SAN)、FCIP、iFCP和FCoE四條道路。其中FCIP和iFCP應(yīng)用最少,iSCSI緩慢增長,FCoE后來居上。
?
SCSI也做過一些研究,后面有專門文章。FCP(Fibre Channel Protocol)是用來協(xié)助SCSI進(jìn)行尋址的協(xié)議。iSCSI、FCIP和iFCP都是依靠TCP的可靠連接確保無丟包,但封的報(bào)頭多了開銷很大。iSCSI由于需要全新的存儲(chǔ)設(shè)備支持,過于激進(jìn),目前雖然有發(fā)展,但是受傳統(tǒng)存儲(chǔ)設(shè)備廠商制約始終很緩慢。FCIP和iFCP都是支持FC網(wǎng)絡(luò)跨IP核心網(wǎng)傳輸時(shí)用到的網(wǎng)絡(luò)協(xié)議,由于目前SAN還是本地組網(wǎng)或使用光纖直連方式的遠(yuǎn)程組網(wǎng)較多,此場(chǎng)景并不多見,因此也應(yīng)用很少,其中FCIP已經(jīng)成為RFC,而iFCP止步于Draft。FCoE相比較來說對(duì)上層協(xié)議改動(dòng)較少,開銷較低,且有利于減少服務(wù)器網(wǎng)絡(luò)接口數(shù)量,在傳統(tǒng)交換機(jī)廠商的大力鼓吹下當(dāng)前發(fā)展最為迅猛,數(shù)據(jù)中心網(wǎng)絡(luò)畢竟會(huì)是交換機(jī)的天下。 ? ? ?FCoE基于FC模型而來,仍然使用FSPF和WWN/FC ID等FC的尋址與封裝技術(shù),只是在外層新增加了FCoE報(bào)頭和Ethernet報(bào)頭封裝和相應(yīng)的尋址動(dòng)作,可以理解為類似IP和Ethernet的關(guān)系。 看一下FCoE的幀結(jié)構(gòu): 尋址稍微說一下,FCoE使用FIP(FCoE Initialization Protocol)進(jìn)行初始化連接,FIP運(yùn)行于VFPort和VNPort之間或VEPort之間,所謂的V就是前面介紹FC的接口角色中的名稱前面加了個(gè)Virtual。 ? ?????FCoE使用FIP(FCoE Initialization Protocol)進(jìn)行初始化連接,FIP運(yùn)行于VFPort和VNPort之間或VEPort之間,所謂的V就是前面介紹FC的接口角色中的名稱前面加了個(gè)Virtual。FIP在接口使能后一共做了三件事:1.?FIP VLAN Discovery 過程
FIP VLAN Discovery 過程用于發(fā)現(xiàn) FIP 協(xié)議以及后來的 FCoE 中使用的 FCoE VLAN 。 ENode 首先向一個(gè)所謂的?All-FCF-MACs?的 MAC 地址發(fā)送 FIP VLAN Discovery Request 。本地 VLAN 上的所有的 FCFs (Fibre Channel Forwarder) 都會(huì)監(jiān)聽這個(gè) MAC 地址,并對(duì)該地址上的 FIP VLAN Discovery 進(jìn)行響應(yīng), 向 ENode 發(fā)送 ENode 可以進(jìn)行 VN_Port Login 的 FCoE VLAN 。FIP VLAN Discovery 是一個(gè)可選的步驟,它的作用僅僅是告訴 ENode 可用的 VLAN, 但并不會(huì)引發(fā) ENode 對(duì) VLAN 進(jìn)行選擇。
2.?FIP FCF Discovery
FIP FCF Discovery 用于發(fā)現(xiàn)那些 FCFs 可以接受 ENodes 的 LOGIN。 FCFs 會(huì)定時(shí)地向 FCoE VLAN 上的 ALL-ENode-MACS 發(fā)送 FIP FCF Discovery Advertisement 。?All-ENode-MACs?與前面的?All_FCF-MACs?對(duì)應(yīng),該地址被所有的 ENodes 監(jiān)聽。 這些 Advertisement 中包含了 FCF 的 MAC 地址,以及一些建立鏈接所需的其他參數(shù)。 FCF 會(huì)定時(shí)的發(fā)送這些 Advertisement,然而對(duì)于新添加的 ENodes 來講, 這些 ENodes 一般不愿意在啟動(dòng)之后傻等著“收看廣告”,對(duì)此,ENode 可以向?All-FCF-MACs?發(fā)送 solicit unicast Advertisement 。FCFs 在接收到這個(gè)單播之后,會(huì)向發(fā)送的 ENode 發(fā)送一個(gè) unicast FIP FCF Discovery Advertisement。ENode 在收集到了足夠的信息之后,就可以決定和哪一個(gè) FCF 建立連接了。
3.?FIP FLOGI 以及 FDISC
ENode 在發(fā)現(xiàn)了所有的 FCFs 并選了了待 Login 的 FCF 之后, FIP 過程最后的一步就是通知所選擇的 FCF: 我要和你的 VF_Port 建立虛擬連接了! 這個(gè)過程中可能會(huì)涉及到多個(gè) FIP 數(shù)據(jù)包,并最終為 N_Port 分配 FC_ID。
FIP 協(xié)議交互和虛擬鏈接的建立一般來講,這兩個(gè)協(xié)議的發(fā)起者都是 Initiator, 但某些情況下, FCFs 也可能會(huì)主動(dòng)發(fā)送一些廣播信息。圖中,紅色部分采用的是 FIP 協(xié)議,而綠色部分,則是建立鏈接以后,使用的是 FCoE 協(xié)議。 FIP幀格式: FCF(Fibre Channel Forwarder)是FCoE里面重要的角色,可以是軟件或者芯片硬件實(shí)現(xiàn),需要占用Domain ID,處理FCoE交換機(jī)中所有與FC相關(guān)的工作,如封裝解封裝和FLOGI等。 Enode是指網(wǎng)絡(luò)中所有以FCoE形式轉(zhuǎn)發(fā)報(bào)文的節(jié)點(diǎn)設(shè)備,可以是服務(wù)器CAN網(wǎng)卡、FCoE交換機(jī)和支持FCoE的存儲(chǔ)設(shè)備。FCoE外層封裝的Ethernet報(bào)頭中MAC地址在Enode間是逐跳的,而FC ID才是端到端的。下圖是一個(gè) ENode 的 VN_Port 與 FCFs 的 VF_Port 的鏈接示意圖:
?
FCoE VN_Port to VF_Port Example
圖中,藍(lán)色的實(shí)線表示 Ethernet 連接,綠色的實(shí)線表示 Fibre Chanle連接,而紅色的虛線則表示虛擬的 VN_Port 和 VF_Port 的連接。每個(gè) ENode 和 FCF 都有唯一的一條網(wǎng)線接入 Ethernet, 而在這些 Ethernet 連接之上,則可以虛擬出多個(gè) VN_Port 與 VF_Port 的連接。VE_Port to VE_Port Virtual Links :
?
?
圖中線條顏色的含義與前面的圖類似,不過紅色的虛線在這里表示了 VE_Port 和 VE_Port 之間的虛擬鏈接。 從圖中可以看出,每個(gè) FCF 可以擁有多個(gè) VE_Port,通過 Ethernet 連接,實(shí)現(xiàn)了多個(gè) VE_Port 的虛擬鏈接。 從前面的兩附圖可以看出:- 一個(gè) ENode 可以通過一個(gè)無損 EtherNet 與多個(gè) FCF 建立虛擬鏈接。?
- 一個(gè) FCF 可以通過一個(gè)無損 Ethernet 與多個(gè) Enode 建立虛擬鏈接。?
- 一個(gè) FCF 可以通過無損 Ethernet 與多個(gè)其他的 FCF 建立虛擬鏈接。?
?
ENode Model
對(duì)于每一個(gè) NIC,都對(duì)應(yīng)惟一的一個(gè) FCoE Controller, Linux 中, 當(dāng)為指定的網(wǎng)卡創(chuàng)建 FCoE 實(shí)例的時(shí)候,會(huì)自動(dòng)創(chuàng)建響應(yīng)的 FCoE Controller 。
FCoE Controller 的主要作用包括:
- 發(fā)起 FIP VLAN Discovery 以搜索可用的 VLANs (可選);
- 對(duì) FCF 發(fā)起 FIP discovery 以所搜該 FCF 上可用的 VF_Port。
- 向 FCF 發(fā)起 FIP FLOGI Exchange , 如果該 FLOGI 成功,則還需要 VN_Port/FCoE_LEP 對(duì)。
- 發(fā)起 FIP NPIV FDISC Exchange (可選)。
- 當(dāng)需要顯示的從 FCF 中 Logout 時(shí)候,發(fā)起 FIP LOGO Exchanges。
- 當(dāng) VN_Port 從 FCF 中 logout 后,反實(shí)例化 VN_Port/FCoE_LEP (也就是刪除響應(yīng)的數(shù)據(jù)結(jié)構(gòu)等等)。
- 收到 FIP Clear Virtual Link 請(qǐng)求的時(shí)候,反實(shí)例化 VN_Port/FCoE_LEP 。
- 后臺(tái)發(fā)送 FIP Keep Alive 。
- 監(jiān)視 VN_Port/FCoE_LEP 的狀態(tài);
- 監(jiān)視 FCF 上的 VF_Port 狀態(tài)。
總結(jié)
以上是生活随笔為你收集整理的FCoE BB6 相关学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小机器人 wxpy模块,自动化发送消
- 下一篇: python wxpy模块,python