FC协议读书笔记
1、光纤通道的英文拼写是Fibre Channel;
2、FC的链路介质可以是光纤、双绞线或同轴电缆;
3、FC系统中设备的连接有三种拓扑方式:点对点方式(Point to Point)、交换方式(Fabric)、仲裁环方式(Arbitrated Loop);
4、FC协议栈模型可以用下图来表示:
FC-0:物理层,定制了不同介质,传输距离,信号机制标准,也定义了光纤和铜线接口以及电缆指标
FC-1:定义编码和解码的标准
FC-2:定义了帧、流控制、和服务质量等
FC-3:定义了常用服务,如数据加密和压缩
FC-4:协议映射层,定义了FC底层协议与高层协议之间的映射,SCSI协议的映射是通过FCP来完成的
5、WWN 是一个64位的地址。WWN对于FC设备就像Ethernet的MAC地址一样,它们是由电器和电子工程师协会(IEEE)标准委员会指定给制造商, 在制造时被直接内置到设备中去的。
对于光纤交换机,我们使用Node WWN来标示交换机,它是唯一的;对于交换机的端口,我们使用Port WWN来标示交换机的端口。所以一个交换机有一个Node WWN和多个Port WWN。
6、每个端口有它独有的24位的地址。用这种24 位地址方案,我们得到了一
个较小的帧头,这能加速路由的处理。在基于交换的光纤环境中,交换机它本身负责分配和维持端口地址。当含有某WWN 的装置进入在某一个特定的端口上登录到交换机时,交换机将会分配端口的地址到那一个端口,而且交换机也将会维护那个端口地址和在那个端口上的设备的WWN 地址之间的关联。交换机的这一个功能是使用名字服务器(NAME SERVER)来实现的。
7、一个24个位的端口地址由三个部份所组成:
Domain:交换机本身的地址。一个字节最多允许256个可能的地址。因为有一些地址被保留(例如广播地址等),实际上只有239个地址可用。
Area: 它提供256个地址。用于一个交换机的一组端口,而不能跨交换机。Port: 地址的最后部份提供256个地址,用于识别相连的N_Port 和NL_Port。可用的地址数目:Domain x Area x Ports =239 x 256 x 256=15,663,104个地址可以用。
二、FC-0层
三、FC-1层
四、FC-2层
1、光纤通道的数据单元叫做帧。一个光纤通道帧最大是2148字节。
光纤通道封装帧头
负载最多能有537个传输字(2112个字节),数据帧格式如下图所示。
FC-2的帧格式
帧内容域的数据长度是4字节的整数倍,当长度不足4字节的整数倍时将采用向内容域中填充1-3个字节,从而使其长度达到4字节的整数倍。内容域中字段描述如下图所示:
图4-3 帧内容
帧数据段中的可选报头是提供给FC-4层使用的
一个光纤通道字是4字节。在2148字节容量下,最多允许537字节。
帧头的组成部分,以及可选部分,列示如下:
SOF(1字):帧开始.
帧头(24字节):帧头决定使用何种协议,以及源和目的地址。
可选ESP帧头(8字节):提供编码;包括SPI和ESP序列号
可选网络帧头(16字节):这样你可以将FC-SAN连接到非FC网络
可选关联帧头(32字节):不是光纤通道协议使用的,但可用于确定节点内的流程
可选设备帧头(最多64字节):不是光纤通道协议使用的,用于特定应用程序载荷:数据,最多可达2048字节
可选填写字节(可变):用于保证数据载荷的大小不超过字节界限
可选ESP尾(可变):包含ESP检验值
CRC(4字节):一个帧头CRC(循环冗余校验)和光纤通道数据字段
帧结束(4字节):帧结束,并且表示是否是序列的最后一位
帧头字段的主要作用是唯一的标识帧。每个帧是由称为帧ID值的(S_ID,D_ID,OX_ID,RX_ID,SEQ_ID和SEQ_CNT)值来唯一地标识。
图2. 光纤通道帧头
路由控制(1字节):起到归类帧的作用,包括两个四位的子字段,即:路由子字段和信息子字段,路由控制字段R_CTL 类别码如下表所示
R_CTL 类别码
目的标识符(3字节):目的地光纤通道地址;
类专用控制/优先级(1字节):用于与服务类型有关的帧处理。这个字段只在第1类和第4类帧中才有意义;
源点标识符(3字节):来源地节点的光纤通道地址
类型(1字节):该字段和R_CTL字段共同标识出帧的具体类型。首先通过R_CTL 字段标识出该帧是数据帧还是链路控制帧,再通过该字段进一步标识出帧的类型。例如当R_CTL=0xh, TYPE=0Ah 则表示该帧为承载SCSI协议的数据帧;
帧控制(3字节):控制帧处理的重要字段,对于不同的服务类型来说,相关的控制位有不同的值,同时控制字段的有效性也不同。F_CTL各字段的详细描述如下表所示:
F_CTL格式
序列ID(1字节):序列号,由序列发起端分配;
数据字段控制(1字节):表示是否有可选头部,以及其类型、大小。数据字段中定义的可选报头是:网络报头(Network Header)、关联报头(Association Header)和设备报头(Device Header)。对应位与所定义的附加报头如下表所示。
附加报头
序列数(2字节):在一个序列中所传输的帧的数量;
发送端交换ID(2字节):由发送端进行指定,是除了FFFFh以外的值
回复端交换ID(2字节):由目标节点所指定
参数(4字节):此字段与帧类型有关。对链路控制帧而言,参数字段给出链路控制帧的特定类型。对数据帧而言,参数字段包含相对偏转值。这规定从ULP 缓冲区与ULP基础地址的偏移。
2、FC-2层定义了4种数据传输单位:帧、帧序列、帧交换和数据包。
帧序列:表示一个上层协议数据单元,当上层协议的数据单元长度大于光纤通道数据帧负载的最大长度2112个字节时,则需要被分割成多个数据帧。序
列是从一个节点端口向另外一个节点端口单向发送的一个或多个相关
帧,每个帧都根据序列总数(SEQ-CNT)有一个在整个序列中唯一的序列
标识(SEQ-ID);
帧交换:表示上层协议的一个操作。一个帧交换内只能有一个帧序列处于活动状态。交换是由一个或多个用作两个节点端口之间单一操作的非并发序列组成的.交换可以是单向的也可是双向的。不同交换之间可以有多个序列被同时激活;数据包:由一个或若干个帧交换组成。