Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11625749
  • 博文数量: 8065
  • 博客积分: 10002
  • 博客等级: 中将
  • 技术积分: 96708
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-16 17:06
文章分类

全部博文(8065)

文章存档

2008年(8065)

分类: 服务器与存储

2008-04-16 18:36:23

存储基础:浅析光纤通道协议
理解光纤通道协议本身,包括命名方式和寻址规则,能够让你更好地理解SAN里到底在发生什么。能够飞快地扫一眼,就知道问题出在哪里的功力需要透彻地理解所用到的协议。尽管可以通过使用鼠标点击的图形用户界面,用很少一点知识就可以操作一个SAN,但我们并不推荐你这样做。所以还是让我们学习一些FC协议的知识吧。

  重申一下:光纤通道并不是SCSI的替代品,SCSI通常是处于光纤通道的基础之上的。现在让我们开始吧。光纤通道总的来说指的是FC-PHY层:FC0-FC2,我们在上一部分重点讨论过了。FCP,光纤通道协议,指的是针对SCSI的接口协议,或者FC-4映射。我们在这里谈论的是FC的内部工作,不是FCP。

  FC的数据单元叫作"帧"(Frame)。即使它有自己的层,FC基本上还是第二层的协议。FC 帧最大是2148字节。FC 帧的报头有点奇怪,起码和以太网的IP和TCP协议相比是这样。FC的帧格式有多种用途,并且有很多层。帧的功用决定了它的格式,和我们在IP世界里的想法相比,它显得奇怪却精彩。

  FC 帧是从一个SOF标记开始的,紧随其后的是帧的报头,我们接下来会进行介绍。接下来是数据,也就是FC内容,接下来是EOF。进行封装是因为这样FC就可以通过其他的协议进行传输了,例如TCP。

存储基础:浅析光纤通道协议

1.FC 封装报头  

  FC 帧本身格式在大小上相差很多。在图1中,你可以看到我们在前面提到的SOF和EOF标记。FC报头的奇怪之出在于它们是word导向的,一个FC word是4字节。最多允许使用537个word,也就是2148字节的容量。

  报头可能包含以下组成部分:

  • SOF(1个字节):帧的开始
  • 帧头(24字节):报头指明了所使用的协议,以及源地址和目标地址。区别在于协议。
  • Optional ESP Header(8字节):提供加密,包括SPI和ESP序号。
  • Optional Network Header(16字节):这样你可以将一个FC-SAN连接到非FC网络上。
  • Optional Association Header(32字节):FCP并不使用它,但是可以用于在一个节点内识别进程。
  • Optional Device Header(最高可达64字节):FCP并不使用它,它是针对应用的。
  • 有效内容载荷(Payload):数据,最多2048字节。
  • Optional Fill Bytes (变量):用于标记不同长度的有效载荷的边界。
  • Optional ESP Trailer(变量):包含了ESP的校验值。
  • CRC(4字节):报头的CRC和FC数据区域。
  • End of Frame(4字节):帧的结尾,标记是否已经到了结尾。FC 帧格式包括FC特有信息,例如源和目的地等。它解释了FC为什么能如此灵活,也解释了为什么有这么多的FC协议让你头痛。

    存储基础:浅析光纤通道协议

    FC 帧头内容

      图2中展示了一个真实的FC报头,其中包括以下内容:

    • Routing Control(1字节):路由部分标明这是一个数据帧还是一个链接控制帧(是ACK还是Link_Response),信息部分标明数据的类型。
    • Destination ID(3字节):目的地的FC地址。
    • Class Specific Control/Priority(1字节):本质上是指服务质量。
    • Source ID(3字节):源节点的FC地址。
    • Type(1字节):表明(有效载荷中的)下一个协议,不过R_CTL指的是一个控制帧。
    • Frame Control(3字节):各种FC选项,例如序列信息以及出现问题的时候应该如何处理。
    • Sequence ID (1字节): 一个和IP类似的系列号。
    • Data Field Control(1字节):表明存在哪些可选报头,以及它们的大小。
    • Sequence Count(2字节):序列中的帧数量。
    • Originator Exchange ID(2字节):由发起方分配,将相关的序列结合在一起。
    • Responder Exchange ID(2字节):和OX_ID一样,但是是由目标节点分配的。
    • Parameter(4字节):主要是用作序列中的"relative offset",和IP中的offset很类似。

      是的,这很容易把人搞糊涂,和IP世界相比,这里有很多新的术语。我们将继续在以后的存储基础系列文章中提到这些报头,所以希望在举了一些现实的例子之后,大家能够熟悉这些区域和它们的用途。

      另一个需要了解的重要的概念是FC的命名方式。请注意帧报头中的 D_ID和S_ID只允许24位。每个HBA都被分配了一个WWN,每个端口都被分配了一个Port WWN(也被称为PWWN)。这些WWN的长度是64位的,比FC中的24位的长度更长。ANSI T11 Address Identifier Format定义FCID由三部分组成,即Domain_ID、Area_ID和Port_ID。

      FC网络动态地分成几个层级。当一个光纤使用Domain_ID分发流程联线的时候,Domain_ID被分配给了每个交换机。通常Domain_ID是管理员配置的。Domain_ID和Area_ID是第二个层级,和Port_ID(由交换机分配)结合在一起,标示光纤上的每个节点。所以WWN并不完全对应SAN路由。

      Domain_ID是由Principal Switch(主交换机)进行分配的,这就确保了每个人能够获得正确的信息。简而言之,FCID在节点第一次连接的时候完全是随意的,这通常没问题,除非管理员进行手工配置。一些Domain_ID用于多点传送或者其他目的,但这不是我们讨论的范围了。你可以从ANSI T11 FC-SW-3规范中了解更多的详细信息。

      接下来我们将会深入到FC内部的层级构造之中,包括VSAN,一个在SAN世界里相对比较新鲜的概念。

阅读(1397) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~