2.6.5 FCoE控制平面

    在本地FC环境中,N_Port仅在连接到FC光纤的点到点链路上发送FLOGI消息。在FCoE中,ENode需要知道FCF的MAC地址才能执行FLOGI,以太网采用多路访问介质,因此FCoE使用VN_Port与VF_Port之间的点到点虚拟链路来模仿本地FC环境。不过,通过手工配置来完成VN_Port与VF_Port之间的FCoE虚拟链路建设非常麻烦,如果能交给协议来完成就太好了。这也是FIP大显身手之处。FIP帧的概念与FCoE帧不同,它采用8914h以太类型封装在以太网帧中。FIP属于FCoE控制平面,因此FIP以太类型的帧将直接发送至以太网交换机(支持FCoE)以进行处理或拦截,而FCoE以太类型的帧将立即转发到数据平面。FIP能够在数据平面FCoE数据转发开始之前,完成以下属于控制阶段的任务:

    ·发现FCoE VLAN;

    ·发现FCoE实体;

    ·初始化虚拟链路;

    ·维护虚拟链路。

    发现FCoE VLAN

    FCoE VLAN发现协议使用了FIP VLAN请求以及FIP VLAN通告操作,协议由ENode MAC或FCF-MAC发起,FIP VLAN请求则借助任一可得(或默认)的VLAN传送。目标MAC地址为“ALL-FCF-MAC”多路访问地址,源MAC地址为发送者的ENode MAC或FCF-MAC地址。支持FIP VLAN发现协议的FCF会监听所有VLAN上的FIP VLAN请求,FIP VLAN通告消息将会向请求FCoE操作的发起者返回所有可得VLAN的列表。

    说明:每个虚拟SAN(VSAN)的FCoE传输应使用不同的VLAN,这样管理员就能确定该VSAN上的FCoE传输,并且在以太网上对其进行管理。FCoE VLAN也应该仅为特定FCoE传输服务,即不应该再负责诸如IP等其他传输。

    发现FCoE实体

    当FIP发现FCoE VLAN后,就该ENode以及FCF借助FIP发现协议,通过FCoE VLAN来发现彼此了。FIP发现协议支持ENode发现FCF,以便建立VN_Port到VF_Port之间的虚拟链路,也支持FCF发现ENode,以建立VF_Port到VN_Port之间的虚拟链路。在链路建立过程中,ENode和FCF都会使用发现邀请消息,FCF还会使用发现广播消息。

    说明:FCF能够发送和接收发现邀请消息以及发现广播消息,ENode只能发送发现邀请消息,并接收发现广播消息。

    虚拟链路初始化

    一旦ENode发现了可得的FCF-MAC,就会执行FIP FLOGI以建立与FCF-MAC之间的虚拟链路,并要求获得一个FC地址(类似N_Port_ID或FC_ID)。当顺利完成FLOGI后,与FCF-MAC相关的FCoE控制器将会为该链路初始化一个VF_Port以及一个FCoE_LEP,而ENode上的FCoE控制器将会为链路初始化一个VE_Port以及一个FCoE_LEP。接下来的数据操作将使用FCoE协议以及普通的封装FC帧。

    说明:在NPIV应用中,ENode能够发起一个FIP NPIV FDISC(类似FIP FLOGI)以获得额外的N_Port_ID,当某个已登录的ENode发起并与FCF-MAC相关的FCoE控制器成功完成FIP NPIV FDISC交换后,FCoE控制器将会初始化一个额外的FCoE_LEP。

    另一方面,在FCF到FCD发现中,FCF-MAC将会发送一个FIP ELP给其他FCF-MAC,当成功完成ELP交换后,每个FCF-MAC的FCoE控制器也会未虚拟链路初始化一个VE_Port以及一个FCoE_LEP。

    与VE_Port以及VF_Port相关的MAC地址,源自FCF协议,是由IEEE分配的全球唯一MAC地址。VN_Port能够选择两类MAC地址中的一种:服务器提供的MAC地址(Server-Provided MAC address,SPMA)或光纤提供的MAC地址(Fabric-Provided MAC address,FPMA)。如果使用SPMA,终端设备(服务器或存储)将会为每个VN_Port提供一个MAC地址;如果使用FPMA,FCF将会在FIP登录过程中(FIP FLOGI或FIP NPIV FDISC)为VN_Port分配MAC地址。推荐使用FPMA方式,该地址包括24位FCoE MAC地址前缀(MAC Address Prefix,FC-MAP)以及VN_Port的24位FC_ID的组合。例如,一个FC-MAP为0EFC00h以及FI_ID为040506h的地址组合在一起将产生一个值为0EFC00040506h的FPMA地址。

    FC-MAP属于组织唯一标识符(Organization Unique Identifier,OUI),U/L位为1时表示其为本地地址,不具备全球唯一性,FC-MAP的推荐范围为0EFC00h~0EFCFFh(默认为0EFC00h)。之所以要如此确定FC-MAP的范围,是为了便于每个SAN可以分配不同的FC-MAP值,以确保能建立唯一的FPMA,从而防止了两个独立的SAN光纤在整合时会发生地址冲突。由于FC_ID是由SAN唯一确定的,因此所生成的新的FPMA在SAN也是唯一的。

    维护虚拟链路

    在FCoE中,VF_Port以及VN_Port或者两个VE_Port之间的虚拟链路有可能跨越了多个以太网链路以及交换机,当某个中间的以太网链路或交换机发生故障时,FCoE端口有可能并不能直接发现出现故障的链路或交换机。因为在虚拟链路中,某段物理链路的故障状态信息并不足以指明当前是否已经无法访问远程实体,因此需要启动某些增强的故障检测机制。FCoE控制器可以借助定时消息来完成虚拟链路的状态监测任务。

    说明:FCoE控制器通过接收到的FIP发现消息并发送正确的FIP心跳消息来监测相关ENode中VN_Port到VF_Port间虚拟链路的状态,而对于具备VF_Port能力的FCF-MAC,FCoE控制则是通过接收到的FIP心跳消息并发送正确的FIP发现广播消息监测VN_Port到VF_Port间虚拟链路的状态。如果是具备VE_Port能力的FCF-MAC,FCoE控制则是通过接收及发送FIP发现消息监测VE_Port到VE_Port间虚拟链路的状态。

    对于ENode,如果FCoE控制器能够持续接收到来自FCF的周期性组播发现公告,则认为该VF_Port正常。如果连续错过两次组播发现公告,则FCoE将认为该VF_Port已经发生故障,并反实例化相关的VF_Port/FCoE_LEP对。在FCF设备中,如果FCoE能够持续接收到来自VN_Port或ENode的周期性单播FIP心跳消息,将认为该VN_Port或ENode工作正常。如果连续错过两次FIP心跳消息,则FCoE将认为该VN_Port或ENode发生了故障,相关的FCoE_LEP也将被反实例化处理。

    说明:对于ENode,当VN_Port注销后,相关的VF_Port/FCoE_LEP对也将被反实例化。如果是具备VF_Port能力的FCF-MAC,当VN_Port注销后,除非该FCoE_LEP是唯一与VF_Port相连的FCoE_LEP,否则该VF_Port/FCoE_LEP也将被反实例化处理。

    如果是VE_Port与VE_Port之间的虚拟链路,将使用主动组播公告,此外,FCF会使用FIP清理虚拟链路消息来显示反实例化远程VN_Port或VE_Port。