2.6.4 FCoE数据平面
FCoE实际包含两个不同的协议:FCoE协议及FCoE初始化协议(FCoE Initialization Protocol,FIP)。FCoE协议负责管理数据平面,FIP则属于控制平面协议。本节将探讨FCoE数据平面,更多FIP的内容请参考2.6.5节。
图2-21展示了一个简化的FCoE组件及架构:
图 2-21 FCoE组件及简化架构
·FC实体(FC entity):FC交换机元素(属于FCF)或FC栈(属于ENode)与FCoE实体之间的接口,每个FC实体包括一个单一实例,可以是VE_Port、VF_Port或VN_Port。
·FCoE实体(FC entity):FC实体与无损以太网MAC之间的接口,每一个FCoE实体包括一个或多个FCoE_LEPs。
·FC交换机元素(未在图中显示):属于体系结构实体,负责转发VF_Ports与VE_Ports之间的FC帧。
·无损以太网桥接元素(未在图中显示):以太网桥接模块,支持无损以太网MAC的基本功能。
·无损以太网MAC:全双工以太网MAC,支持至少2.5KB的巨帧,并且具备拥塞扩展功能,能够避免丢失以太网帧(更多细节,请参考2.6.2节的相关内容)。
·无损以太网网络:由全双工链路、以太网MAC以及无损以太网桥接组件组成的以太网网络。
·虚拟F_Port(VF_Port):FC实体中模仿F_Port的数据转发组件,在FLOGI交换成功完成后动态初始化,每一个VF_Port都与一个或多个FCoE_LEP配对。
说明:F_Port(光纤端口)是FC互连内对N_Port(节点端口)的附加端口。N_Port通过光纤登录(Fabric Login,FLOGI)建立到光纤的会话,光纤只接收那些完成登录的N_Port帧。
·虚拟N_Port(VN_Port):FC实体中模仿N_Port的数据转发组件,当FLOGI或FDISC交换成功完成后被动态初始化,每一个VN_Port都与1个FCoE_LEP配对。
说明:N_Port是FC节点端口,是FC的连接点。N_Port ID虚拟化(N_Port ID Virtualization,NPIV)使用了发现光纤服务参数(Discover Fabric Service Parameter,FDISC),向光纤登录地址0xFFFFFE发送一个请求以获得一个新的N_Port ID。
·虚拟E_Port(VE_Port):FC实体中模仿E_Port进行数据转发的组件,当ELP交换完成后被动态初始化,每一个VE_Port都与一个FCoE_LEP配对。
说明:E_Port(扩展端口)是FC交换机中通过内部交换机链路(Inter-switch Link,ISL)连接另一个FC交换机的端口。交换链路参数(Exchange Link Parameter,ELP)是FC交换机内部链路服务参数,用于交换机端口之间服务参数交换。
·FCoE链路端点(FCoE_LEP):FCoE实体的数据转发组件,负责FC帧封装/解封以及通过单个虚拟链路发送/接收封装后的帧。EN_Node的FCoE_LEP仅支持VN_Port,而位于FCF的FCoE_LEP既支持VF_Port,也支持VE_Port。
·FCoE控制器:功能实体,与无损以太网MAC一起工作。与ENode相关的FCoE控制器其主要功能为实例化新的VN_Port并/或生成新FCoE_LEP;而与FCF-MAC相关的FCoE控制器其主要功能为实例化新的VE_Port并/或生成新FCoE_LEP。
·FCoE终端节点(ENode):FCoE终端节点是一个带有一个或多个无损以太网MAC的FC节点,每一个节点都配备了一个FCoE控制器,它实际上是以太网NIC内的FC HBA,通常被称为CNA(聚合网络适配器),有两种“版本”的CNA:
·第一代(Gen-1)CNA:标准FC HBA与10GE NIC通过一种中间“胶合”ASIC连接在一起,在OS看来,CNA由两块独立的适配器,FC HBA以及以太网NIC组成,CNA无需改造就可以继续使用现有FC及以太网驱动器,Gen-1类型的CNA通常不具备FIP功能,因此被称为pre-FIP。
·第二代(Gen-2)CNA:Gen-2型CNA是首先方案,它由单块芯片构成,能够兼容FIP。
说明:读者也可以采用软件驱动器(更多细节,请参考http://www.open-fcoe.org/)来实现FCoE,这对那些没有配备密集I/O负载但又需要经常访问FC存储阵列的服务器特别合适。
·FCoE转发器(FCoE forwarder,FCF):FCF为FC交换组件,带有一个或多个无损以太网MAC,每一个都配备了相应的FCoE控制器。每个以太网MAC拥有一个MAC地址,称为FCF-MAC地址,可以为每个FCF-MAC配置一无损以太网桥接组件。也可以为FC交换机组件配置FC光纤接口,实现本地E_Port以及F_Port的连通。如果以太网目的地址是一个FCF,该FCoE帧将被转发至相应的FCF-MAC地址,然后由FCoE_LEP对封装了的FC帧解封,FC交换机组件将基于其相应的FC目的地址或FC目标ID(Destination ID,DID)转发解封后的FC帧。如果该FC帧需要经过一个以太网端口被转发出去,系统会将该FC帧封装在一个以太网帧中,附带以太网源地址与FCF-MAC的关联,以及以太网目标地址集与到正确目标MAC的映射等信息。FCF的功能本质上与带有一个或多个以太网端口的FC交换机类似,FCF也可以选择本地FC端口。
说明:如果FCF配备的是本地FC光纤接口,那些目标地址为本地FC的帧将被当做本地FC帧通过本地FC端口经由相关FC链路转发。如果FCF-MAC配备了以太网桥(或以太网交换机),目标地址非FCF-MAC的以太网帧被接受后,将通过以太网桥按常规方式转发到相应的目标地址。
·虚拟链路(Virtual Link):虚拟链路是在无损以太网上连接到两个FCoE_LEP的逻辑链路,如图2-21所示,虚拟链路由两个终端的MAC地址对确定。也可以将虚拟链路看成无损以太网上的一条隧道,将封装好的FC帧从源MAC地址转发至目标MAC地址。
FC包含由FC-0~FC-4,5个不同功能级别的层次,FCoE中将FC-2级进一步细化成3个子级,如图2-22左边上部所示,以便能够实现更灵活地虚拟化处理。
·FC-4定义了包括SCSI、IPV4及IPV6等不同上层协议(ULP)与FC的映射方式。
·FC-3定义了跨越多个节点间可选的常用服务或功能。
·FC-2V(FC-2——虚拟)定义了对FC帧处理,以支持上层应用。
·FC-M(FC-2——多路复用器)定义了如何将FC-2P子级实例的FC帧切分成FC-2V子级实例。
·FC-2P(FC-2——物理)定义了底层物理介质实际发送及接收帧的相关功能,包括帧发送及接收、CRC生成及校验以及链路级别(缓存到缓存)流量控制。
·FC-1定义了传输协议,包括连续编码、解码及错误控制。
·FC-0定义了系统的承载介质类型。
FC-2P、FC-1以及FC-0级别定义FC物理端口功能和行为说明,这些端口包括物理N_Port(Physical N_Port,PN_Port)、物理F_Port(Physical F_Port,PF_Port)以及物理E_Port(Physical E_Port,PE_Port)等。在FCoE环境中,如图2-22右边所示,这些功能则被FCoE_LEP以及无损以太网代替了。FCoE能够保证FC_2V以及其上更高层不受影响,也说明了对于OS而言FCoE是透明度,系统可以延续一样的FC操作及管理模型。
图 2-22 FCoE栈以及封装
FCoE封装如图2-22底部所示,其中FCoE的以太类型为8906h。FCoE为无状态封装及接封装备,不会影响实际FC帧,这也使得FCoE不需要网关就能与现有FC SAN集成。如果包括FCoE的帧检验序列(Frame Check Sequence,FCS)一起,则FCoE帧最大不超过2180个字节,如果不包括FCS,则最大不超过2176字节,而为了能够容纳下最大尺寸的FC帧,FCoE要求采用至少2.5KB的小巨帧。FCoE同时也能够满足以太网规定最小有效载荷不超过46KB的限制:14字节(FCoE头)+24字节(FC头)+0字节(FC有效负载)+4字节(CRC)+4字节(FCoE trailer)。固定的FCoE头及trailer字段保证了最小尺寸的FC帧总是能够产生合法的最小尺寸以太网帧。
说明:FC帧首(Start-of-Frame,SOF)定界符包含在FCoE头中,帧尾(End-of-Frame,EOF)定界符包含在FCoE trailer字段中。