饒新宇,戴錦友,汪懷坤
(1. 光纖通信技術(shù)和網(wǎng)絡(luò)國家重點實驗室 湖北 武漢430074;2.武漢郵電科學(xué)研究院 湖北 武漢430074;3.武漢烽火網(wǎng)絡(luò)有限責(zé)任公司 湖北 武漢 430074)
當(dāng)前, 數(shù)據(jù)中心網(wǎng)絡(luò)中存儲網(wǎng)和數(shù)據(jù)網(wǎng)是相對分離的,各自擁有獨立的通道。 隨著服務(wù)器數(shù)量的增加,和數(shù)據(jù)中心內(nèi)部虛擬化的發(fā)展,數(shù)據(jù)中心布線數(shù)量、能耗不斷上升,控制物理鏈路成了刻不容緩的任務(wù)。 FCoE 將LAN 與SAN 流量集中到一套網(wǎng)絡(luò)上傳輸將數(shù)據(jù)中心內(nèi)部的網(wǎng)絡(luò)縮減為一套單一的網(wǎng)絡(luò),為網(wǎng)絡(luò)的進(jìn)一步融合掃清了障礙。 FCoE 在維持原有服務(wù)的基礎(chǔ)上,可以大幅減少服務(wù)器上的網(wǎng)絡(luò)接口數(shù)量,從而解決上述數(shù)據(jù)中心面臨的問題。
FCoE(Fibre Channel over Ethernet,基于以太網(wǎng)的光纖通道)[1]協(xié)議由美國INCITS T11 委員會提出,于2010 年標(biāo)準(zhǔn)化,公開標(biāo)準(zhǔn)是FC-BB-5 和FC-BB-6, 有獨立的以太網(wǎng)數(shù)據(jù)類型0x8906。 FCoE 將FC 協(xié)議棧的下兩層用無損以太網(wǎng)取代,將OSI 七層協(xié)議模型的物理層、 數(shù)據(jù)鏈路層映射到FC 協(xié)議棧的最下兩層, 并加入倒數(shù)第三層為FCoE 映射層, 構(gòu)成FCoE 協(xié)議棧,如圖1 所示。 FCoE 使用一塊CNA 網(wǎng)卡取代原有的HBA 卡和NIC 卡,實現(xiàn)了網(wǎng)絡(luò)的融合。
圖1 FCoE 協(xié)議棧映射原理Fig. 1 Mapping principle of FCoE stack
FCoE 網(wǎng) 絡(luò) 架 構(gòu) 中 有 兩 種 設(shè) 備 類 型[2]:ENode 和FCF。ENode(FCoE Node)是負(fù)責(zé)終結(jié)FCoE 流量的設(shè)備,一般指裝配在服務(wù)器主機(jī)上的CNA 網(wǎng)卡,相當(dāng)于FC SAN 中的HBA 卡。服務(wù)器上電后,ENode 一般率先發(fā)起FIP 請求,以尋找合適的FCoE VLAN。 FCF(FCoE Forwarder)是轉(zhuǎn)發(fā)FCoE 流量的交換機(jī),也就是ENode 的直接上聯(lián)設(shè)備。
目前的FCoE 技術(shù)只解決了服務(wù)器到接入交換機(jī)之間的傳輸問題。但是從存儲設(shè)備到服務(wù)器HBA 卡之間是一個完整的FC 鏈路,需要端到端的解決方案,因此需要實現(xiàn)FCoE的多跳傳輸[3]。 目前影響力比較大的FCoE 多跳方案主要有4種: 純 以 太 網(wǎng) 模 式、FIP snooping 橋 接 模 式、NPV 模 式 和VE_Port 互聯(lián)模式。 FIP snooping 橋接模式實現(xiàn)相對簡單,同時能夠很好的保護(hù)FC 協(xié)議棧, 所以我們優(yōu)先選擇該方案實現(xiàn)FCoE 多跳,延長FCoE 鏈路的長度。
FCoE 的控制平面是由FIP (FCoE Initialization Protocol,F(xiàn)CoE 初始化協(xié)議)[4]來實現(xiàn)的。FIP 將FC 控制平面的指令反映到以太網(wǎng)的環(huán)境中, 仿佛打通了FC 和以太兩個世界的通道。FIP 有獨立的以太網(wǎng)類型0x8914。FIP 協(xié)議建立和維護(hù)虛鏈路的過程主要包括四個步驟:VLAN 發(fā)現(xiàn)、FCF 發(fā)現(xiàn)、 虛鏈路建立和虛鏈路維護(hù)四個階段,如圖2 所示。
圖2 FIP 協(xié)議交互過程Fig. 2 The interactive process of FIP protocol
FIP snooping(FCoE Initialization Protocol Snooping,F(xiàn)CoE初始化探測協(xié)議) 在線路中偵聽并轉(zhuǎn)發(fā)FIP 報文。 運行FIP snooping 的設(shè)備又叫transit 交換機(jī),橋接在ENode 和FCF 設(shè)備之間,通過偵聽FIP 報文,建立FCoE 報文的轉(zhuǎn)發(fā)規(guī)則。
首先,ENode 在默認(rèn)VLAN 內(nèi)向?qū)Χ说腇CF 設(shè)備發(fā)出一個廣播報文, 以獲取VLAN 信息.FIP snooping 收到后將報文在所有的FCF 模式端口轉(zhuǎn)發(fā)。 對端的FCF 設(shè)備收到FIP VLAN 發(fā)現(xiàn)報文后,向ENode 回應(yīng)VLAN 通告報文,內(nèi)含可用的VLAN id。 FIP snooping 對報文進(jìn)行解析,將FCF 和ENode方向的接口分別加入到報文中的VLAN 中, 并轉(zhuǎn)發(fā)此報文。ENode 在收到的報文中選取一個VLAN 來進(jìn)行后續(xù)的數(shù)據(jù)傳輸。 (這一過程是可選的, 因為ENode 和FCF 交互所用的VLAN 可以是靜態(tài)配置)。
確定VLAN 后, 會馬上選取一個FCF 進(jìn)行注冊。 ENode節(jié)點發(fā)出發(fā)現(xiàn)請求報文,用于發(fā)現(xiàn)FCF 設(shè)備。 FIP snooping 收到報文后記錄報文中的源、目的MAC 地址、端口號等信息,并轉(zhuǎn)發(fā)至FCF。FCF 收到發(fā)現(xiàn)請求報文后,向回應(yīng)請求發(fā)現(xiàn)通告報文, 其中description priority 字段包含了該FCF 的優(yōu)先級,F(xiàn)IP snooping 用數(shù)據(jù)包里面的MAC 地址查找ENode 表中對應(yīng)的表項,如果找到,則從指定ENode 端口轉(zhuǎn)發(fā),如果沒找到,則丟棄。 ENode 選取優(yōu)先級最高的FCF 作為建立虛鏈路的交換機(jī)設(shè)備。
確定了FCF 后,ENode 便向該FCF 設(shè)備發(fā)出FLOGI 注冊報文。FIP snooping 收到FLOGI 后根據(jù)其中目的MAC 查找記錄的FCF 信息,并根據(jù)FCF 表項里的port 轉(zhuǎn)發(fā),如果不在表項中則丟棄。 FCF 收到FLOGI 請求后,將分配一個地址標(biāo)識FCID 給ENode 設(shè)備,FIP snooping 記錄后轉(zhuǎn)發(fā)給ENode。同時虛鏈路的建立完成。
虛鏈路成功建立后,F(xiàn)CF 交換機(jī)周期性向ENode 發(fā)送非請求發(fā)現(xiàn)通告報文來維護(hù)建立的虛鏈路。FIP snooping 偵聽并轉(zhuǎn)發(fā)此報文。 如果ENode 在一定的時間周期(老化時間)內(nèi)沒有接收到非請求發(fā)現(xiàn)通告報文,則刪除該虛鏈路。
FIP snooping 通過對報文MAC 地址的檢查來限定ENode發(fā)送的報文僅能轉(zhuǎn)發(fā)給FCF 交換機(jī), 不能轉(zhuǎn)發(fā)給ENode,且只有成功注冊的ENode 發(fā)送的FCoE 報文才能被Transit 交換機(jī)轉(zhuǎn)發(fā)給FCF 交換機(jī), 以及限定FCF 交換機(jī)發(fā)送的FCoE報文僅能被Transit 交換機(jī)轉(zhuǎn)發(fā)給已經(jīng)注冊的ENode[4]。 FIP snooping 通過綁定socket 函數(shù)截獲FIP 報文收發(fā)包, 通過ACL 設(shè)置VLAN 轉(zhuǎn)發(fā)規(guī)則和生成FIP snooping 轉(zhuǎn)發(fā)規(guī)則。 生成的FIP snooping 規(guī)則為:
1)FCF 模式接口生成FCF FIP snooping 規(guī)則:
入方向允許源MAC 地址為FCF 交換機(jī)的FCoE MAC 地址、 目的MAC 地址高三個字節(jié)為FC-MAP 的FCoE 報文通過,出方向允許源MAC 地址高三個字節(jié)為FC-MAP 的FCoE報文、目的MAC 地址為FCF 的FCoE MAC 的報文通過。
2)ENode 模式接口生成ENode FIP snooping 規(guī)則:
入方向允許源MAC 地址為FC 地址對應(yīng)的MAC 地址(即高三個字節(jié)為FC-MAP , 低三個字節(jié)為FC 地址)、 目的MAC 地址為FCF 交換機(jī)的FCoE MAC 地址的FCoE 報文通過, 出方向允許源MAC 地址為FCF 交換機(jī)的FCoE MAC 地址、目的地址為ENode 的FCoE MAC 地址通過。
當(dāng)一臺transit 交換機(jī)通電后, 使能FIP snooping 功能后即可在鏈路中收發(fā)偵聽FIP 協(xié)議報文包。FIP snooping 按收到報文的端口和報文種類不同,調(diào)用不同的處理函數(shù)進(jìn)行處理。設(shè)計收發(fā)包流程如圖3 所示。
搭建的測試環(huán)境拓?fù)浣Y(jié)構(gòu)如圖6 所示,transit 設(shè)備為烽火的某款交換機(jī),手動配置VLANid 為2。 當(dāng)transit 交換機(jī)通電后,使能fip snooping 功能,然后偵聽FIP 報文。 圖4、圖5、圖6、 圖7 分別為transit 交換機(jī)偵聽到的鏈路中ENode、FCF信息,會話信息和建立的FIP snooping 規(guī)則。
圖3 FIP snooping 協(xié)議處理流程Fig. 3 The processing flow of FIP snooping protocol
圖4 顯示ENode 信息Fig. 4 Show ENode information
圖5 顯示FCF 信息Fig. 5 Show FCF information
圖4 、 圖5 分別顯示出了連接transit 交換機(jī)的ENode 和FCF 的WWN 和MAC 地址。ENode 和FCF 在VLAN2 中通信。
圖6 顯示會話信息Fig. 6 Show interview information
會話信息里的FCF 和ENode 的MAC 與先前顯示的ENode 和其中一個FCF 的MAC 相同, 說明ENode 選取了接口號為1/0/2 的FCF 進(jìn)行會話。
圖7 顯示了會話過程中建立的FIP snooping 規(guī)則,F(xiàn)CF模式和ENode 模式接口分別限定了報文的源地址為連接自身的FCF、ENode 的MAC, 目的地址為對端的ENode 或者FCF 的MAC.
圖7 建立的FIP snooping 規(guī)則Fig. 7 The built FIP snooping principle
FIP snooping 橋接模式作為FCoE 由一跳向多跳演化的一種過渡方式,雖然不具備完整的FC 協(xié)議棧,但是在純以太網(wǎng)模式的基礎(chǔ)上提高了網(wǎng)絡(luò)的可靠性,并且易于實現(xiàn),適用于數(shù)據(jù)中心LAN 和SAN 網(wǎng)絡(luò)由傳統(tǒng)的分離走向融合的過渡時期。 同時實現(xiàn)FIP snooping 為實現(xiàn)后續(xù)的NPV 模式多跳FCoE 也奠定了良好的基礎(chǔ)。
[1]American National Standards Institute.International Committee for Information Technology Standards FC—BB—6 Rev 2[S].American.2013.
[2]American National Standards Institute.International Committee for Information Technology Standards FC—BB—5 Rev 2[S].American.2009.
[3] 羅敏.FCoE協(xié)議FIP模塊的設(shè)計與實現(xiàn)[D]. 北京:北京郵電大學(xué),2010.
[4] 徐立冰. 云計算和大數(shù)據(jù)時代網(wǎng)絡(luò)技術(shù)揭秘[M].北京:人民郵電出版社,2013.
[5] 鄭云峰. FCoE網(wǎng)絡(luò)中FLOGIN過程的研究與實現(xiàn)[D]. 北京:北京郵電大學(xué),2013.
[6] 艾克寶.FCoE項目接口模塊和配置管理模塊的設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué),2010.