采用FC SAN技术的数据中心一般包括独立的LAN(Local Area Network,局域网)网络和SAN(Storage Area Networks,存储区域网络)网络。LAN网络应用于传统的以太网/IP业务,SAN网络应用于网络存储。
数据中心服务器既要通过LAN网络提供IP业务的服务,又要通过SAN网络实现存储设备的访问。传统的网络架构中,服务器分别安装独立的以太网卡和FC网卡,以太网卡通过以太网交换机接入IP网络,FC网卡通过FC交换机接入存储网络。由于分别搭建两个网络,使用两套接入网卡,以及相应的线缆,设备投资及维护管理成本非常高。
FCoE技术的目标是整合以太网和FC存储网络,减少数据中心的网卡,交换设备以及线缆的使用数量,降低成本。
FCoE(Fibre Channel over Ethernet,基于以太网的光纤通道)是将FC(Fibre Channel,光纤通道)协议承载在以太网上的一种协议。在FCoE解决方案中,服务器只使用支持FCoE协议的以太网卡即可,而支持FCoE协议的FCF交换机可以同时承担传统以太网交换机和FC交换机的角色,使网卡、交换机和连接线缆的数量大为减少,降低设备及网络维护管理成本。
图1 FCoE实现I/O整合示意图
如图1所示,在传统组网中,服务器分别通过以太网接口和FC接口接入到LAN网络和SAN网络。而在FCoE组网中,服务器可以通过支持FCoE协议的以太网卡连接到支持FCoE协议的存储交换机FCF交换机上(服务器和FCF交换机之间的链路可以同时收发以太网报文和FC报文),然后FCF交换机通过以太网接口接入到LAN网络,通过FC接口接入到SAN网络中。
支持FC和FCoE协议的交换机,称为FCF(FCoE Forwarder,FCoE交换机)。
支持FCoE协议的节点设备(服务器或存储)称为ENode。
FCoE协议的主要目的是将FC报文封装成以太网报文在以太网链路上传输,在FC报文进入以太网时,将FC报文封装成以太网报文;在FC报文传出以太网时,将以太网报文解封装成FC报文继续转发,这个封装/解封装的过程称为FCM(FC Mapping,FC封装)。
FCM进行报文封装时,ENode设备MAC地址使用FPMA(Fabric Provided MAC Address,网络映射MAC地址)方式获得。
图2 FPMA地址映射示意图
它是根据FC-MAP和ENode接口FC地址映射得到,映射方法为FC-MAP为高24位,FC-ID为低24位。其中,FC-MAP的作用就是用来生成FPMA地址,可以通过命令行进行配置,取值范围为0x0EFC00~0x0EFCFF,默认值为0x0EFC00。FC-ID是ENode进行FLOGI时交换机分配的FC地址。
在FC协议中,两台FC交换机之间通过点对点的链路连接,而在以太网中,两台FCF交换机可以通过广播链路连接到一起,因此,在FC网络和以太网中,连接FC逻辑实体的网络拓扑不同,这就要求在FCF交换机之间建立点对点的虚链路以保证FC协议运行的拓扑不变。VFC链路即为两个FCoE通信实体之间的虚拟FC链路。VFC接口即为两个FCoE通信实体上的虚拟FC接口。
FIP(FCoE Initialization Protocol,FCoE初始化协议)用来完成VFC虚链路的建立和维护过程。
DCE(Data Center Ethernet,数据中心以太网)也称为增强以太网,其增加了基于优先级的流控、带宽管理等特性,以保证FC报文在以太网上可以实现无损传输。
DCBX(Data Center Bridging Exchange Protocol,数据中心桥能力交换协议)用来在DCE设备之间交换DCE特性的能力以及配置参数。
PFC(Priority-based Flow Control,基于优先级的流控)用来在以太网中为FCoE流量和其他流量划分优先级,对FCoE流量实行流控,保证不丢包,其他流量不进行流控。
ETS(Enhanced Transmission Selection,增强带宽选择)是基于轮转算法的带宽调度,用以保证FCoE流量和其他流量在共享以太网链路上的带宽分配。
FIP协议在FCF与ENode之间建立VFC链路,VFC链路建立以后,FC协议可以基于VFC链路运行。
FIP报文又分为发现请求(FIP Discovery Solicitation)、发现通告(FIP Discovery Advertisements)、虚链路实例化请求(Virtual Link Instantiation Request)、虚链路实例化应答(Virtual Link Instantiation Reply)、保活报文(FIP Keep Alive)、清除虚链路报文(FIP Clear Virtual Links)、VLAN发现请求(FIP VLAN Request)、VLAN通告(FIP VLAN Notification)等报文。
如图3所示,描述的是一个典型的通过FIP协议在ENode和FCF交换机间建立虚链路的过程。
图3 FIP虚链路建立示意图
ENode通过VLAN发现报文从FCF获取运行FCoE协议的VLAN(简称FCoE VLAN)。除了VLAN发现协议以外的所有FIP协议都只在FCoE VLAN内执行。
ENode在一个可以使用的VLAN(如缺省VLAN)上发送目的MAC地址为ALL-FCF-MACs组播地址的“VLAN发现请求”报文,此VLAN内的FCF收到并处理此报文,在该VLAN内回应“VLAN通告”报文,并在报文中列出本机上配置的所有FCoE VLAN列表。
FCF交换机在所有运行FCoE VLAN内定期发送目的MAC地址为All-ENode-MACs组播地址的非请求发现通告报文,使得当前VLAN内的所有ENode发现自己。在发现通告报文中会携带以下参数:
· FCF优先级:用于ENode选择FCF建立VFC连接。
· 保活定时器值:用于ENode周期发送VFC链路保活报文。
· FC-MAP:用户ENode生成FPMA地址。
· FCF的MAC地址:用于ENode在FCM过程中封装/解封装报文使用。
ENode也可以主动在FCoE VLAN内发送目的MAC地址为All-FCF-MACs组播地址的发现请求报文来发现网络中的所有FCF交换机。FCF交换机在收到ENode的发现请求报文时需要回复请求的发现通告报文给ENode。
ENode通过收到的发现通告报文获取网络中所有的FCF交换机信息,如果存在多个FCF交换机,可根据发现通告报文中携带的优先级,选择高优先级的FCF交换机建立VFC连接。
ENode向选中的FCF发送FIP FLOGI报文或FIP FDISC报文建立VFC链路。FCF收到ENode发送的FIP FLOGI或FIP FDISC报文后,回应FIP ACC报文为ENode分配FC_ID,ENode获取到FC_ID的同时,与FC-MAP组合到一起,生成FPMA地址。
FCF之间的VFC链路建立通过FIP ELP完成,双方通过FIP ELP和FIP ACC协商参数,协商通过后,VFC链路建立。
VFC链路建立后,ENode周期发送保活报文,FCF仍然周期发送非请求发现通告报文。与ENode连接的FCF上通过监听保活报文来进行VFC链路的维持,与FCF连接的ENode/FCF上通过监听FCF发送的非请求发现通告报文来进行VFC链路的维持。
VFC链路建立后,ENode和FCF可以基于VFC接口收发报文。
FCoE报文以太头封装格式如图4所示。
图4 FCoE报文以太头封装格式
FCF发送报文时,封装报文源MAC地址为本交换机FCF MAC,目的MAC地址为ENode FPMA地址或对端FCF MAC;ENode发送报文时,封装报文源MAC地址为自己的FPMA地址,目的MAC地址为对端FCF MAC。
Priority为FCoE报文优先级,默认为3,可配置。
VLAN ID标识当前承载FCoE流量的VLAN。
图5 FCoE报文转发示意图
FCoE报文经过FCF转发,会逐跳的进行报文以太头的去封装和封装,每一跳封装的报文头信息如图5所示。
协议可以保证同一个VSAN内的报文都在同一个VLAN内传输,即VLAN xx保持不变。
ENode的MAC地址使用FC-MAP和FC_ID拼装而成。FC-MAP为高24位MAC地址,设备FC_ID为低24位MAC地址。
FCF始终使用本机FCF-MAC发送或接收报文。
DCE特性保证FCoE报文在以太网的无损传输。主要由PFC和ETS实现。
首先,FCF通过DCBX将FCoE能力、FCoE报文使用的Priority发布给ENode,ENode发送FCoE报文时,就会使用该Priotity封装FCoE报文。
FCF上为此优先级流量预留用户指定的带宽,例如50%。如果其他流量很小,FCoE流量可以超过50%的上限,甚至使用100%带宽,如果其他数据流量也很大,FCoE至少可以保证50%的带宽使用。
当带宽不足时,FCoE流量超过PFC配置的上水位阈值,FCF会发送pause帧通知上游设备,停止发送FCoE数据。如果流量恢复,不再拥塞,FCF会通知上游,可以继续发送。从而达到无损转发FCoE数据的目的。
在该组网环境中,服务器通过支持FCoE功能的网卡和FCF交换机相连,而FCF交换机分别通过以太网交换机和FCF接入到LAN网络和SAN网络,SAN网络中可以接入FCoE存储设备,也可以接入FC存储设备。
图6 FCoE典型组网图