[关闭]
@JCChan 2015-08-27T14:08:36.000000Z 字数 3816 阅读 2794

Fibre Channel协议

大话存储


  1. Fibre Channel 就是“网状通道”的意思,简称FC,但是与光纤通道一点关系都没有

FC协议物理层

  1. 速度:1Gb/s、2Gb/s、4Gb/s甚至到现在的8Gb/s
  2. 使用同步串行传输方式,为了保证传输过程中电直流平衡、时钟恢复和纠错等特性,其传输编码方式采用NMb编码方式。
  3. 为了实现远距离传输,传输介质起码要支持光纤、铜线也可以,但是距离收到限制。FC协议集中物理层的电气子层名为FC0,编码子层名为FC1。

FC协议链路层

(1)字符编码以及FC帧的结构
1. 成帧:将上层发来的一定数量的位流打包加头尾传输。FC协议在链路层也是成帧的,既然需要成帧,就要定义帧控制字符。
2. 控制字符:FC协议定义了一系列的帧控制策略及对应的字符。这些控制字符不是ASCII码字符集中定义的那些控制字符,而是单独定义了一套专门用于FC协议的字符集,成为有序集,其中每个控制字符由4个8位字节组成,称为一个字,每个控制字开头的一个字节总是经过8 10b编码之后的0011111010(左旋)或者1100000101(右旋),编码电路根据上一个10位中包含的1的个数来选择下一个10位中1的个数,来总体平衡1和0的个数。在未编码之前是十六进制BC,低5位为11100,高3位为101,即总体为10111100就,所以又称为K28.5。
3. 每个控制字均由K28.5字符开头,后接3个其他字符,可以是数据字符,由这4个字符组成的字来代表一种意义,比如SOF或者EOF,一共有32位。
4. FC协议的帧头有24B,包含了寻址和传输保障的功能,网络层和传输层的逻辑都用这24B的信息来传递。比TCP的54B和UDP的42B开销均要小。

(2)链路层流量控制
1. P2P的流控,缓存到缓存的流控
2. 接收电路将一帧成功接收后,就放入了缓存中,如果由于上位程序处理缓慢而造成缓存已经充满,FC协议还可以通知发送方减缓发送,如果链路的一段是FC终端设备,另一端为交换机,则只能控制FC终端到FC交换机之间的流量。
3. 如果数据流在一个FC终端之上发生拥塞,则这个FC终端就必须通知发起端降低发送频率,这就是端到端的流量控制

(3)MTU
以太链路通常为1500B,FC链路层可以达到2112B,效率提高了。

FC协议网络层

(1)拓扑
1. 两种拓扑:FC-AL和Fabric
(2)FC-AL
1. 类似于以太网共享总线拓扑,但是连接方式不是总线,是一条仲裁环,有点像FDDI,每个FC-AL设备首尾相接构成了一个环路,一个环路能够接入的最多节点是128个,占用了一个字节的寻址容量。
2. 旁路电路:如果仲裁环中有一个设备故障了,则自动将这个接口电路,从而使得整个环路将这个故障的设备Bypass掉,不影响其他设备的工作。
3. 数据帧在仲裁环内是一跳一跳被传输的,任何时刻数据帧只能按照一个方向向下游传输。
4. 带宽总恒定,为共享的链路带宽。
(3)Fabric
1. Fabric架构下,所有的节点作为矩阵的一个点,连成了一个网络交换矩阵,所有节点之间都可以点对点通信,加上包交换方式所带来的并发和资源充分利用的特性,使得交换架构获得的总带宽为所有带宽之和。
2. 电路矩阵被做成芯片集成到专门的交换机上,然后辅以实现FC逻辑的其他芯片或CPU、ROM,就形成一台用于Fabric交换的交换机。
3. FC交换拓扑寻址容量为2^24个地址,对于专用的存储网络来说足够。
(4)寻址
1. FC网络中的每个设备自身都有一个WWNN,不管这个设备上有多少个FC端口,设备始终拥有一个固定的WWNN来代表它自身,然后FC设备的每个端口都有一个WWPN,世界上没有两个接口的地址是相同的。
2. 与以太网交换设备不同的是,FC交换机需要处理更多的上层逻辑,要处理到FC协议的最上层,每个FC终端设备除了最终通信的目标有交互以外,还需要与FC交换机打好交道。
3. WWNN被写入设备的ROM中,但是在某些条件下也可以通过运行在设备上的程序发生改变。
4. WWPN和三个IDWWPN长度为64位,但是不能用于高效路由,所以FC协议在WWPN上再映射一层寻址机制,这个ID长24位,高8位为Domain ID,中8位为Area ID,低8位为Port 区分符。
5. Domain ID:在大的FC网络中区别每个FC交换机本身,在众多交换机中,WWNN最小者获胜成为主交换机,由它向其他所有交换机分配Domain ID,涉及一系列特殊帧的传送,解析和判断。
6. Area ID:区分同一台交换机上的不同端口组。
7. Port ID: 区分同Area中的不同Port
8. 寻址过程:当一个接口连接到FC网络中时,如果是Fabric架构,接口会发起一个登录注册到Fabric网络的动作,也就是向目的Fabric ID地址FFFFFE发送一个登录帧,称为FLOGIN。交换机收到这个帧后,会动态分配给这个接口一个24b的Fabric ID,并记录这个接口的WWPN,做好映射,此后从这个接口发出的帧不会携带WWPN,而且用这个ID作为源地址。
9. 如果是FC仲裁环过程,那么会选择一个临时节点,根据WWPN号数值,最小的优先级最高,然后发出一系列初始化帧,给每个节点一个环路ID,由于FCID是动态的,所以每个设备每次登录到Fabric所获得的ID可能不一样,同样,FC交换机维护的Fabric ID与WWPN的映射也是动态的。
10. 寻址机制:几台交换机形成一个FC网络,自动协商Domain ID,选举出一个WWPN号最小的交换机来当主交换机,由主交换机来向下每个交换机分配Domain ID,以确保不会冲突。
11. 路由协议:SPF
12. 每个节点在登录到FC网络并且被分配ID之后,会进行一个名称注册过程,也就是接口上的设备会接口上的设备会向一个特定的目的ID发一系列的注册帧来注册自己,这个ID实际上并没有物理设备与其对应,只是运行在交换机上的一套名称服务程序而已,对于终端FC来说,它会认为自己与一个真实的FC设备通信,如同windows系统上的WINS服务器。由此,FC交换机上保存着这个名称服务程序,因为地址是唯一,它不像wins服务器可以配置为任何IP地址,在FC协议中,这个地址是大家公认不会去改变的。可以认为FC交换机本身就是这台服务器。
13. 节点注册到名称服务以后,服务便会将网络上存在的其他节点信息告诉这个借口上所连接的设备,这样子设备便可以知道所有节点和资源。
14. Zone出于安全性考虑,可以进行人为配置,特定服务可以向特定节点报告,但是会存在问题,因为物理链路是通畅的,可能会出现自动协商沟通的情况,而人为配置不知。这种称之为软Zone,当物理链路断开后,没有告知的节点便无法通信,称为硬Zone。
15. 与目标通信从名称服务器得知网络上的节点ID后,如果想发起一个节点的通信,那么这个设备需要直接向目的端口发起一个N_PORT Login过程来交换一系列的参数,再进行Process Login的过程,详细可类比TCP三次握手中的过程。
16. 名称服务器只是FC提供的所有服务中的一个,其他还有时间服务、别名服务等,这些地址都是事先就定好的。还有一种服务叫做FC Control Service,在向FC交换机发送了SCR帧后,一旦整个Fabric有什么变动,每个预定该服务的节点都会受到RSCN帧来更新自己的日志。
17. 对于FC仲裁环架构来说,不存在名称注册过程,环上的每个节点都对环上其他节点了如指掌,可以对任意节点发起通信。

FC协议传输层

  1. 在传输层,为了对上层的数据流进行Segment,还要区分不同的上层数据流,FC使用Exchange ID进行区分,类似于TCP中的端口号,FC传输层将Exchange发过来的数据包分割成Information Unit,提交给下层传输,下层由将其当作一个Sequence,并授予Count,确保帧的排列顺序正确。
  2. 传输层还有一个重要角色就是匹配上层协议,比如IP over FC以及SCSI over FC,这里只是提供一种传输手段而已,就像IP over ATM一样。
  3. FC也是通过发送ACK帧来向对方确认,只是FC的ACK帧是24B加上CRC、SOF和EOF,一共36B,TCP中一共需要54B,差别就出来了。
  4. FC在传输层上定义了几种服务类型:
    (1)Class 1 服务类型是一种面向连接的服务,类似于电路交换,为通信的双方保留一条虚电路,类似于帧中继
    (2)Class 2 服务是一种带端到端确认的保障传输的服务,类似于PPP
    (3)Class 3 服务是不提供确认,类似于UDP
    (4)Class 4 类型是在一条连接上保留一定的带宽给上层使用,而不像Class 1 一样保留整个连接,类似RSVP服务。

FC协议上三层

  1. FC协议的上三层表现为各种Login的过程,包括名称服务在内的各种服务等,都是与网络传输无关的,但是属于在FC协议体系内。

小结

  1. FC协议是一个高速高效、配置简单,不需要太多人为干涉的网络,FC协议的大部分逻辑被直接做到一块独立的硬件卡片中,而不是运行在操作系统中,减少CPU资源的消耗。
  2. TCP/IP是一种运行于主机操作系统上的网络协议,只有以太网逻辑是在以太网卡的芯片中,而FC协议的物理层到传输层的逻辑都是运行在FC适配卡的芯片中,只有少数上层API逻辑在FC协议中,因为其小众要求,确实值得增加成本来提高速度和效率。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注