DoSTOR存储课堂 深入了解光纤通道(FC)协议

理解光纤通道(FC)的核心,包括其命名格式和位址机制,可以帮助人更好的理解SAN。要全面了解所有有关协议的知识才能够快速浏览问题并找出问题所在。虽然通过图形界面,鼠标点击和有限的知识也可能解决问题,但是这显然并不是好方法。因此我们在这里学习一下光纤通道协议。

在此重复:光纤通道并不是SCSI的替代;一般而言SCSI是光纤通道的上层。有些跑题,现在进入正题。光纤通道一般是指FC-PHY层:FC0-FC2,在我们的上一篇文章已经有过简短提及。术语FCP,即光纤通道协议,是指对SCSI的界面协议或FC-4层映射。我们这里讨论的是光纤通道的内在工作原理,而不是指光纤通道协议。

光纤通道的数据单元叫做帧。即使光纤通道本身就有几个层,大部分光纤通道是指第2层协议。一个光纤通道帧最大是2148字节,而且光纤通道帧的头部比起广域网的IP和TCP来说有些奇怪。光线通道只使用一个帧格式来在多个层上完成各种任务。帧的功能决定其格式。相比我们在IP世界中的概念,光纤通道帧格式是奇特而且奇妙的。

光纤通道帧起始于帧开始(SOF)标志,随后是帧头部,这个一会进行描述。数据,或光纤通道内容,紧随其后,然后是帧结束(EOF)。这样封装的目的是让光纤通道可以在需要时被其他类似于TCP的协议所承载。


 
图1. 光纤通道封装帧头

光纤通道帧本身,在大小上颇有不同。在图1你可以看到我们之前提到过的SOF和EOF。光纤通道帧头奇特之处是它是字导向的,而且一个光纤通道字是4字节。在2148字节容量下,最多允许537字节。

帧头的组成部分,以及可选部分,列示如下:

SOF(1字):帧开始.

帧头(24字节): 帧头决定使用何种协议,以及来源和目的地地址。其变量取决于所使用的协议。

可选ESP帧头(8字节):提供编码;包括SPI和ESP序列号

可选网络帧头(16字节):这样你可以将FC-SAN连接到非FC网络

可选关联帧头(32字节):不是光纤通道协议使用的,但可用于确定节点内的流程

可选设备帧头(最多64字节):不是光纤通道协议使用的,用于特定应用程序

载荷:数据,最多可达2048字节

可选填写字节(可变):用于保证数据载荷的大小不超过字节界限

可选ESP尾(可变):包含ESP检验值

CRC(4字节):一个帧头CRC(循环冗余校验)和光纤通道数据字段

帧结束(4字节):帧结束,并且表示是否是序列的最后一位


 
图 2. 光纤通道帧头

光纤通道帧格式包含光纤通道专有信息,包括来源地和目的地。希望这里可以明白为什么光纤通道具有这么强的灵活性,以及为什么它也给我们带来令人头痛的这么多的基于光纤通道的协议。

图2描述了光纤通道头的实际格式,包括如下字段:

路由控制(1字节):路由部分表示是否是数据帧或链路控制帧(ACK或链路回复),信息部分表示数据类型

目的地ID(3字节):目的地光纤通道地址

类专用控制/优先级(1字节):服务质量

来源地ID(3字节):来源地节点的光纤通道地址

类型(1字节):除非R_CTL表示为控制帧,否则表示下个协议(在数据载荷中)

帧控制(3字节):各种光纤通道选项,例如序列信息以及在发生问题的情况下的反应

序列ID(1字节):序列号,就像IP那样

数据字段控制(1字节):表示是否有可选头部,以及其大小

序列计数(2字节):在一个序列中所传输的帧的数量

发送人交换ID(2字节):由发起人进行指定,用于组合相关的序列

回复人交换ID(2字节):同发送人交换ID相同,但是是由目标节点所指定

参数(4字节):大部分作为序列的"相关偏移量",很类似IP中的偏移量

的确,相对于IP世界,这些是很复杂,而且还有很多新术语。我们将继续在存储基础系列文章里面提到这些头部。在举出一些真实世界的例子后,这些字段和它们的用处将变得清晰起来。

需要掌握的下一个重要概念是光纤通道命名的方式。注意光纤通道帧头中的D_ID和S_ID字段只允许24字节。每个HBA(主机总线控制器)被分配一个WWN(全球名称),而其上的每一个端口被赋予一个端口WWN,或PWWN。这些WWNs的长度是64字节,因此大于光纤通道中的24字节。ANSI T11技术委员会的地址标志符格式规定FCID由三个部分组成,分别是域ID,地区ID和端口ID。

光纤通道网络被动态的分成上下几层。当一个光纤架构通过域ID分配过程连接到网络上时,每个交换机都被分配一个域ID。一般来说,域ID是被强制设置的。域ID,地区ID(第二层级),以及端口ID(由交换机分配)共同构成一个光纤通道节点的地址。因此在SAN路由情况下,WWN并不能代表什么。

域ID由主交换机分配,保证每个人都能获得正确的信息。简而言之,在第一次节点连接时,FCID是完全随机的,除非一个管理员手动设置它。一些域ID被保留用于组播或其他目的,但是这些并不是我们这里讨论的范围。需要更多细节请参照ANSI T11 FC-SW-3手册。

下次我们将进一步探讨光纤通道架构的层级结构,包括VSANs,这是SAN领域的一个非常新的概念。

小知识

一个2148字节的光纤通道帧由封装帧头(图1)和光纤通道帧(图2)所组成。

光纤通道地址是FCIDs,由交换机根据其内部端口的情况进行分配。每个节点都标志为一个8字节的端口ID。

域是SAN架构中的层级结构的最上层,而地区是第二层。地区用于一个交换机的一组端口,而不能跨交换机。