深度分析FCOE报文中主要字段和FCOE交互过程的主要报文

前文已经介绍了FCOE的背景和来由,本文就不再说明,这里介绍一下FCOE报文主要字段的作用和FCOE交互过程的主要报文报文类型的作用。
第一部分:FCOE报文字段介绍:
一、 FCoE数据帧字段定义:
Ethernet源MAC/目的MAC地址:12字节。
802.1Q Tag首部:4字节。
Ethernet Type + FCoE Header(Including FC SOF):16字节。
FC Frame(Extender Header(optional) + FC Header + FC Data):
Max情况下:40字节扩展首部+20字节FC Header+2112字节FC Data,总计2172字节。
FCoE Tail(Including FC EOF):4字节。
Ethernet CRC:4字节。
所以FCoE数据帧的最大长度为:2112字节。协议中规定最大长度为2112,因为存储的SCIS数据块最大为2112为合理值,大于这个值会使存储性能降低,小于这个值又会浪费资源。
二、 FC网络使用了三类地址。
(1)Node Name ID(节点名称标识符),使用WWN地址(World Wide  name,世界范围的名字)来标识,WWN为一个64位的全球唯一地址,这是一个节点的全局标识。
(2)Port Name ID(端口名称标识符),使用WWPN地址(World Wide Port name)来标识,WWPN也为一个64位的地址,这是一个节点下某个端口的标识。
(3)FC ID地址,24位的本地地址,基于每个Fabric网络分配。简单的说这个FCID的作用就和以太网三层IP的作用一样,通过这个地址标识来寻址。这个地址分为三部分:
a:Domain_ID
在每个Fabric网络中,Domain_ID是用来识别交换机,一个Fabric网络中的交换机Domain_ID是不能一样。通常一个交换机就代表一个domain.一                  个Fabric网络中最大只有239台FCOE设备。
b:   Area_ID
Area_ID用于识别属于一个Fabric的一台交换机中某个或某些F模式接口。一台交换机中某个或某些接口属于一个area。其实这个area和vsan是关联的一个vsan就是一个area,一个area可能包含多个vsan.一个area最多支持256个port。
Area的作用:
由于一个area只支持256个port,所以通过划分多个area来增加port容量。
在cisco的描述文档有这样一种应用场景:某些HBA卡要求和连接在同一台设备上的存储端口的area ID不同。
相关文档有这样描述: Some HBA ports require a different area ID than for the storage ports when they are both connected to the same switch. For example, if the storage port FC ID is 0x6f7704, the area for this port is 77. In this case, the HBA port’s area can be anything other than 77. The HBA port’s FC ID must be manually configured to be different from the storage port’s FC ID.
c:  Port_ID
Port_ID用于识别属于一个Fabric的一台交换机中某个或某些F模式接口所连的虚拟N模式接口。
CISCO交换机可能会发出FF.FC.OC的地址,这个地址分两部分:FF.FC是协议规定给Fabric交换机用的。0C表示这个交换机的Domain id。
三、 ZONE的作用:
Zone相当于在同一vsan下再划分多个隔离的区域。加强网络安全性,同时防止数据流失。
应用场景如下:
HBA1, HBA2,SAN1,SAN2同处于一个VSAN中。默认都处于同一个ZONE,都可以相互访问。按上图应用场景划分后zone1内的服务器和存储不能访问zone2内的服务器和存储设备。Zone相当于在同一vsan下再划分多个隔离的区域。可以属于多个zone。
事实上同一个vsan内,即使设备属于不同zone,他们的登录信息都是可以共享的。这样想要获取不同zone的存储信息,只要能够把DNS报文转发过去就可以实现。这就可以通过软件zone来实现,主要功能就是把获取存储信息的DNS转发到不同zone内。而硬件zone是将不同zone之间通过硬件来隔离的。
四、 Class 服务类别的类型和作用:
(1)Class 2服务类别
基于Class 2服务类别转发的数据帧,在转发过程中无连接要求,即不在乎数据帧如何到达目的地,但要求对数据帧进行应答(ACK)。
对Class 2数据帧的应答不仅包括接收数据帧的终端设备进行应答,还包括转发过程中转发设备对非法的Class 2数据帧丢弃并向发起端发回应答。转发设备需要对非法的Class 2数据帧进行校验,可能的包括情况如:

  • 发送端为本FC交换机直连主机设备,但数据帧的源FC-ID非本FC交换机分配。
  • 数据帧的目的FC-ID不可达。
  • 等等。

(2) Class 3服务类别
基于Class 3服务类别转发的数据帧,在转发过程中也不存在连接要求。同基于Class 2数据帧的区别在于,其不要求对数据帧进行应答(ACK),在这种情况下,只能依赖于高层的协议对帧丢失情况作出反映。
(3)  Class F服务类别
用于交换机到交换机通信的数据帧的类别,要求进行应答(ACK)。
对于主机发送的Class 2的数据帧,Fabric要基于通信的每报文进行错误检查(FC-2V层处理),对检测出的错误,要给发送方回送错误应答报文。这些错误典型的包括如FC帧的源ID非本机分配、FC帧的目的ID不可达,等等。如果是这样,相当于要有机制对Class 2的报文先进行正确校验,在校验通过的情况下才进行转发,这个对转发方案提出了要求,结合我司目前的芯片方案,无法支持,所以本阶段能够支持Class 2数据帧的转发,但不支持对Class 2帧进行每帧校验。
五、  FCOE Fabrac 网络中SPMA和FPMA的作用:
方案1:SPMA(Server Provided MAC Address),由主机设备自身为每个虚拟N模式接口分配一个MAC地址。采用SPMA分配方式,每个虚拟N模式的接口可能仍然会直接采用主机以太网MAC地址,为了区分虚拟N模式接口,将使用SPMA地址和为该虚拟N模式接口分配的FC-ID二元组一起作为该虚拟N模式接口的标识。(最新标准不支持SPMA,被废弃)
方案2:FPMA(Fabric Provided MAC Address),由FCF设备为每个登录的虚拟N模式接口分配一个MAC地址。采用FPMA分配方式,每个虚拟N模式的接口将分配到不同的MAC地址。标准为这样的MAC地址划分了24位的前缀范围“0x0EFC00~0x0EFCFF”,并称为FC-MAP。由于主机MAC地址是链路本地概念,即在支持FCF设备的每个链路上才生效,各链路上可以共用相同的前缀并且不相互影响,所以目前锐捷将只采用0x0EFC00的前缀范围。
六、  FC-MAP的作用:
由FCF设备为每个登录的虚拟N模式接口分配一个MAC地址。采用FPMA分配方式,每个虚拟N模式的接口将分配到不同的MAC地址。标准为这样的MAC地址划分了24位的前缀范围“0x0EFC00~0x0EFCFF”,并称为FC-MAP。
为什么要用FC-MAP ?这个应该是在NPIV模式下必须用这种方式,在NPIV模式下一个端口存在多个VN_PORT,如果是用SPMA就不能保证他在Fabirc的唯一性,而用FPMA就可以保证。

七: FIP priority的作用:

          当主机收到多个FCF响应advertisement时,主机会选择advertisement报文中description priority 优先级最高的建立虚链接。
八、 NAME SERVER
在Fabric拓扑中,存在个知名地址标识0xFFFFFC,该地址标识是作为NAME SERVER的名称服务器的地址标识。
NAME SERVER具有如下功能:

  • N模式接口通过NAME SERVER向Fabric的名称服务器注册该N模式接口信息。
  • N模式接口通过NAME SERVER向Fabric的名称服务器查询其它的N模式接口信息。
  • N模式接口通过NAME SERVER向Fabric的名称服务器注销该N模式接口信息。

第二部分:FCOE协议协商过程中几种主要报文介绍:
一、 FIP报文:
FIP报文分为:
(1)sociation报文:这个报文用于发现FCF设备。
(2) Advertisement报文:报文是个jamborm帧,以确认链路是否能支持这样的mtu.其中FC-MAP信息用于提供给主机生成基于VN_Port的MAC地址FPMA地址。如果主机收到多个交换机发出的SUDA报文后,将从此报文中description priority字段获取到优先最高的做为建立虚链路的交换机设备。
(3)vlan发现报文:用于发现当前vsan属于哪个vlan,此后的报文携带什么vlan tag。

二、 FLOGI/FDISC(fabric login els)

       FLOGI(fabric login els)提供了一种N模式端口向Fabric请求登陆的方式。
FLOGI/FDISC完成如下功能:

  • N模式接口通过发出FLOGI及收到关于FLOGI的应答,能够确认该N模式接口是点对点拓扑还是Fabric拓扑。
  • 在Fabric拓扑模式下

Fabric向N模式接口提供与Fabric相关的工作特性(如是否支持CLASS2/CLASS3的FC帧转发)、F模式接口名称标识和Fabric名称标识。
N模式接口向Fabric提供与该N模式接口相关的工作特性、N模式接口名称和名称标识。
Fabric向发起FLOGI的N模式接口分配或确认地址标识。
初始化N模式接口和F模式接口相关的Buffer-to-Buffer流控。
若N模式接口和Fabric都支持认证,随后N模式接口向Fabric进行认证。
如果N模式接口和Fabric都支持虚拟Fabric,N模式接口和Fabric随后进行虚拟Fabric参数协商。
如果Fabric支持S_ID为0的FDISC,N模式接口和Fabric可能交换潜在用途和可用性的地址标识资源信息。
三、   PLOGI(N_PORT LOGIN)
PLOGI提供了一种N模式接口向另一N模式接口请求登陆的方式;该PLOGI应在完成FLOGI过程之后进行的,先于两接口间数据帧的传递。
PLOGI完成如下功能:

  • 两N模式接口间相互提供与各自相关的工作特性(如是否支持收发CLASS2/CLASS3的FC帧)、FC接口名称标识和节点名称标识。
  • 如果不存在Fabric(即拓扑为点对点拓扑),向这两个N模式接口分配地址标识。
  • 若两个N模式接口间支持收发CLASS2的FC帧,则初始化这两个FC接口间的端到端流控。

四、LOGO报文:
分为FLOGO和PLOGO
FLOGO: 扩展链路服务为移除两个N模式接口间或一个N模式接口和Fabric间的服务提供了一种方法。当FLOGIC完成虚链路建立后,如果不想使用这条链路或是出现故障时主机会发出flogo,退出链路,链路无效。正常情况下要进行后面的PLOGIC和fc转发都要使用这条链路,正常是不会发flogo.
PLOGO:协议上规定主机在完成name server注册和获取注册信息后,就要发出PLOGO表示完成注册和获取到其他的主机的注册信息。有可能是完成所有ns信息后发一次logo,也有可能每次都发一个logo.主机和交换机都有可能发logo.
PLOGO是由N模式接口A向另N模式接口B发起的。FLOGO可以由N模式接口向Fabric发起(目的地址标识为FFFFFEh),也可以由Fabric向N模式接口发起(源地址标识为FFFFFEh)。
五:SCRRSCN报文:
SCR:主机端口通过SCR向交换机注册所关注特定事件变化通告
RSCN: 当端口通过SCR注册关注特定事件变化通告后,在FC拓扑中出现相应的事件变化时,该事件通告将通告RSCN 送交到已注册的端口;已注册的端口收到这些RSCN后,将依据其中的内容进行相应的处理。
N模式接口通过向Fabric发送SCR注册关注特定事件变化通告后,在Fabric拓扑中出现相应的事件变化时,该事件通告将通过RSCN送交到这些已发送SCR注册的N模式接口;这些N模式接口收到RSCN后,将依据其中的内容进行相应的处理。
SCR/RSCN典型应用场景包括:
1、 如磁盘加入或者退出Fabric。
2、 名称服务器注册发生改变。
3、 等等,对于任何影响主机操作的行为。
六、dNS报文:
这个dNS报文并不是我们常见的域名服务,这里指的distribution name service 分布式名称服务,dNS报文类型有很多种,以后会单独一篇文章介绍,这里就不详细说明,主要了解一下这种类型报文:分为两种其中一种是get报文:获取其他节点的FCID,WWPN,WWN等等,还有一种是注册报文,用于注册WWPN,WWN等信息。
七、PRLI:进程登录
作用:获取对端节点是发起端还是存储设备。

weinxin
DC Farm小程序二维码
扫一扫添加博客小程序
Jim

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

    • avatar 匿名 5

      GOOD,相当详细的说明。受用了。

      • avatar douglas 1

        看了阁下的文章,受益匪浅!