1FC协议详解存储技术——第3部分2目标深刻理解FC协议的物理层、链路层、网络层、传输层认识FC协议的七种端口类型FC适配器的作用从SCSI迁移到FC网络3目录4.1FC协议详解4.2FC协议的端口类型4.3FC适配器和迁移到FC44.1FC协议详解54.1.1FC网络和SAN的定义FibreChannel的定义:也就是“网状通道”的意思,简称FC。Fiber和Fibre只有一字之差,所以产生很多误解。FC只代表FibreChannel,而不是FiberChannel,后者被翻译为“光纤通道”。像TCP/IP一样,FC协议集同样具备TCP/IP和以太网中的很多概念,例如:FC交换机、FC路由器、SPF算法等。你完全可以将FC协议理解为SAN中的TCP/IP,因为他们都遵循OSI模型。SAN的定义:它首先是一个网络,全称“存储区域网络”,而不是指存储设备,这个网络是专门用来给主机连接存储设备使用的,使用FC协议集,而不是TCP/IP。SAN网络与LAN网络相隔离,存储数据流不会占用业务网络带宽。64.1.2FC协议——物理层传输速率:作为一种高速的网络传输技术,FC协议体系的物理层具有比较高的速度,从1Gb/s、2Gb/s、4Gb/s和8Gb/s,注意:其底层是使用了同步串行传输方式,采用NMB编码方式。传输介质:FC在物理层并不仅仅只有光介质,还可以有铜介质,但如果要实现远距离传输,就必须使用光纤介质,铜介质容易受干扰,所以传输距离受限制。74.1.3FC协议——链路层:封包结构现代通信在链路层一般都是成帧的,也就是将上层发来的数据封装报头和报尾然后再传输,因此FC协议在链路层也是成帧的。如下图:在链路层定义了24字节的帧头,这24字节还包含了网络层和传输层的功能,因此FC的开销比TCP/IP(54字节)要小的多。FC链路层的MTU是2148字节,减去一些开销(帧开始、帧头、CRC、帧结束),可以容纳最大2112字节的数据,FC相对以太网(1500字节)效率又提高了3分之1。FC协议封包结构84.1.3FC协议——链路层:帧头结构下面是FC协议的帧头结构:——R_CTL:路由部分标示是数据帧或链路控制帧,信息部分标示数据类型。——D_ID:目的设备的FC地址——CS_CTL/PRI:服务质量控制——S_ID:源设备的FC地址——Type:表明下一个协议,在R_CTL中指的是一个控制帧——F_CTL:各种FC选项,例如序列信息以及出现问题的时候应该如何处理——SEQ_ID:一个和IP类似的序列号94.1.4FC协议——网络层:拓扑FC提供了两种网络拓扑模式:——FC-AL:如右上图所示,该拓扑类似于以太网共享总线的拓扑,所有设备都连接在一个仲裁环中,首位相接,一个环路最多能接入128个节点,数据是按照一个方向被一跳一跳传输的,同一时间只能有一个发送者。一旦中间一个设备发送故障,将实现“旁路功能”,自动将接口短路,从而使得整个环路将整个故障设备忽略掉。不影响其他设备正常工作。——Fabric:如右下图所示,该拓扑类似于以太网交换机,Fabric的意思为“网状网络”,表明这种拓扑其实是一个网状交换矩阵,相对于仲裁环,交换矩阵的转发效率大大提高了,连入这个矩阵的所有节点之间都可以同时进行点对点的通信,它的交换带宽是接口带宽的总和,而仲裁环不管接口有多少,带宽都是恒定的。104.1.4FC协议——网络层:编址任何网络都需要寻址机制,FC当然也不例外,但FC的寻址和编制方式与以太网有所不同,例如:在以太网交换机的端口上不需要有MAC地址,而FC交换机上的端口都有自己的WWPN地址,这是因为在FC网络中,FC交换机担当了很重要的角色,它要处理到FC协议的最上层——应用层。也就是说,FC终端设备只负责产生数据,其他功能(封包、流控和安全等)均由FC交换机来保障,下面是FC的编址类型:——WWNN:不管这个设备上有多少个FC端口,FC设备自身都有一个唯一的WWNN地址来代表它自己。——WWPN:FC设备的每个端口都有一个全球唯一的WWPN地址,地址的长度是64位,但用8个字节来做路由,是不明智的,因此还需要再映射一层地址。——FabricID:WWPN和FabricID之间需要建立映射关系,就像MAC和IP的映射一样,设备会为每个连接到FC网络中的接口分配一个FabricID,用这个ID嵌入到链路帧中做路由,这个ID长24位,格式如下:DomainID:前8位是DomainID,用来区分网络中每台FC交换机。WWNN最小者获胜成为主交换机,然后这个交换机向所有其他交换机分配DomainID。AreaID:中8位是AreaID,用来区分同一台交换机上不同的端口组,比如1、2、3、4端口属于Area1。PortID:后8位是PortID,用来区分一个同Area中不同端口。通过这样的寻址体系,可以在一个FC网络中,区分每个交换机、每个端口组、每个端口114.1.4FC协议——网络层:寻址(1)既然定义了两套编制体系:WWPN和FabricID,那么一定要有映射机制,就像ARP协议一样,FC协议中的地址映射步骤如下:1.注册:一个接口连接到FC网络中时,如果是Fabric架构,那么这个接口会发起一个注册到Fabric网络的动作,向目的地址FFFFFE发送一个登录帧,称为FLOGIN。2.映射:交换机收到目的地址为FFFFFE的帧之后,会动态的给这个接口分配一个24位的FabricID,并记录这个接口对应的WWPN,做好映射。3.发送:此后这个接口发出的所有帧都不会携带WWPN地址,而是携带其被分配的FabricID作为源地址。4.仲裁环:当连接到仲裁环网络中时,所有节点会选出一个临时节点(WWPN号最小者胜出),然后由这个节点发送一系列的初始化帧,给每个节点分配环路ID。12134.1.4FC协议——网络层:寻址(2)因为从一开始FC就是被设计给专用、高速、高效的网络使用的,为了避免人为操作失误,FC网络中所有操作都不需要人工介入,设备将自动分配和管理各种地址(WWPN)、自动运行和设置路由协议(SPF最短路径优先)。FC交换机接口所连接的设备在登录到FC网络时都会向一个指定的ID(这个ID只是运行在交换机上的一个名称服务程序)发送注册帧,设备完成注册之后,名称服务程序便会将网络上存在的其他节点信息告诉这个接口上所连接的设备。寻址的安全性问题:——软ZONE:让名称服务器只告诉某个设备特定的节点。例如:网络上存在A、B、C三个节点,可以让名称服务只向A通告B节点,而隐藏C节点,这样A看不到C。但如果A知道C的ID,也可以直接去访问d,这就是软ZONE。——硬ZONE:也可以将A和B划入一个ZONE中,该方式为底层硬件隔离,这样即使知道ID也无法通信了。——LUNMasking:SCSI指令集中有一个指令叫做ReportLUN,作用是发起端发出这条指令,目标端收到后,就要向发起端报告自己的LUN信息。根据这个原理,我们可以让磁盘控制器根据发起端的WWPN地址,提供相应的LUN给它。例如:针对主机A,控制器就报告LUN1、LUN2,主机B,就报告LUN3,如果某个主机强行访问不属于它的LUN,盘阵控制器便会拒绝这个请求。还可以配置选择性的将某个LUN分配到盘阵的指定前端端口上。14FC传输层同样也与TCP类似,也对上层的数据进行segment,而且还要区分上层程序,TCP是利用端口来区分,FC则是利用ExchangeID来区分。4.1.5FC协议——传输层:包结构每个Exchange发过来的数据包,被FC传输层分割成InformationUnit,也就相当于TCP分割成的Segment。然后FC传输层将这些Unit提交给FC的下层进行传输。下层将每个segment当作一个Sequence,并给予一个SequenceID,然后将这个Sequence再次分割成FC所适应的帧,给每个帧赋予一个SequenceCount,这样便可以保证帧的排列顺序。接收方接收到帧之后,会组合成Sequence,然后根据SequenceID来顺序提交给上层协议处理。154.1.5FC协议——传输层:功能传输层还有一个重要角色,就是适配上层协议,如下图所示:比如IP可以通过FC进行传输,SCSI指令也可以通过FC传输。FC会提供适配上层协议的接口,就是IPoverFC及SCSIoverFC。FC只是给IP和SCSI提供了一种通路,一种传输手段,就像IPoverEthernet和IPoverATM一样。164.1.5FC协议——传输层:服务种类在传输层,FC定义了几种服务类型,也就是类似于TCP/IP协议中规定的TCP和UDP,具体类型如下:——Class1:这是一种面向连接的服务,类似于电路交换的模式,将为通信的双方保留一条虚电路,以进行可靠地传输。——Class2:它提供的是一种端到端确认传输的服务,类似于TCP。——Class3:这种服务类型不提供确认,类似于UDP。——Class4:这种类型是在链路上保留一定的带宽资源给上层应用,但不是保留整个链路,工作原理类似于RSVP服务。为了进一步提高FC网络的速度和效率,FC协议的大部分逻辑功能被直接做到一块独立的适配卡当中,而不是运行在操作系统中,因为如果将协议逻辑置于系统上运行,会占用主机CPU和内存资源,下面是TCP/IP和FC协议之间的比较:操作系统中运行:IP和TCP/UDP模块就是运行在操作系统之上的协议,而只有以太网逻辑是运行在以太网卡芯片中,CPU从以太网卡接受到的数据时携带有IP头部及TCP/UDP头部的,需要运行在CPU中的TCP/IP协议代码来进一步处理这些头部,才能生成最终的应用程序需要的数据。适配卡中运行:FC协议物理层到传输层的逻辑功能,大部分都运行在FC交换机和FC适配卡的芯片中,只有小部分关于上层API的逻辑运行于操作系统FC卡驱动程序中,这样就使FC协议的速度和效率都较TCP/IP协议高。174.2FC协议的端口类型18——L端口:它指的是仲裁环上各个节点的端口类型。环路上的所有设备可以通过一个FCAL的集线器相连,如下图所示。当然,也可以使用最原始的方法,就是首尾相接。4.2.1FC协议的七种端口类型在FC网络中,存在七种类型的接口,其中N、L和NL端口被用于终端节点,F、FL、E、和G端口在交换机中实现。——N端口和F端口:如下图所示,这两个端口类型专用于Fabric交换架构中。连入FC交换机终端节点的端口为N端口,对应的交换机上的端口为F端口。用N端口模式连入F端口之后,网络中的N节点之间就可以互相进行点对点通信了。194.2.1FC协议的七种端口类型在学习其他类型端口之前,首先来看一下FC仲裁环的几种类型:——私有环:是指这个FC仲裁环是封闭的,只能在这个环中所包含的节点之间相互通信,而不能和环外的任何节点通信。——开放环:是指环内节点之间可以相互通信,而且还可以和环外的节点通信。也就是说开放环是连接在FC交换机上的一个单元,因此环内的节点可以和位于FC交换机上的N节点通信,但要实现这种架构,需要特殊的端口,即下面描述的NL和FL端口。NL端口和FL端口:如右图所示,NL端口是开放环中的一类端口,它具有N端口和L端口的双重特性。换句话说,NL端口既支持Fabric架构,也支持仲裁环架构。而FL端口是FC交换机上用于连接开放环的中介端口。开放环可以同时存在NL节点和L节点,而只有NL节点才能和环外的N节点通信,L节点只可以与L和NL节点通信E端口:如果FC交换机之间级联,它们之间的端口就是E端口,该端口上面将承载一些控制信息,比如选举协议、路由协议等。G端口:该种类型的端口将根据所连接对方的端口类型进行自动协商变成任何一种端口,它可以转变为上面讲到过的任何一种端口类型,也叫“万能”端口。204.3FC适配器和迁移到FC214.3.1认识FC适配器HBA(