FC
协议简介
开发于1988年,最早是用来提高硬盘协议的传输带宽,侧重于数据的快速、高效、可靠传输。到上世纪90年代末,
FC
SAN
开始得到大规模的广泛应用。
FC
协议其实并不能翻译成光纤协议,只是FC协议普遍采用光纤作为传输线缆而不是铜缆,因此很多人把FC称为光纤通道协议。在逻辑上,我们可以将FC看作是一种用于构造高性能信息传输的、双向的、点对点的串行数据通道。在物理上,FC是一到多对应的点对点的互连链路,每条链路终结于一个端口或转发器。FC的链路介质可以是光纤、双绞线或同轴电缆。
FC协议栈
FC-0:连接物理介质的界面、电缆等;定义编码和解码的标准。
FC-1:传输协议层或数据链接层,编码或解码信号。
FC-2:网络层,光纤通道的核心, 定义了帧、流控制、和服务质量等。
FC-3:定义了常用服务,如数据加密和压缩。
FC-4:协议映射层,定义了光纤通道和上层应用之间的接口,上层应用比如:串行
SCSI
协 议,HBA卡的驱动提供了FC-4 的接口函数。FC-4 支持多协议,如:FCP-
SCSI
,FC-IP,FC-VI。
光纤通道的主要部分实际上是FC-2。其中从FC-0到FC-2被称为FC-PH,也就是“物理层”。光纤通道主要通过FC-2来进行传输,因此,光纤通道也常被成为“二层协议”或者“类以太网协议”。
在此重复:光纤通道并不是
SCSI
的替代;一般而言SCSI是光纤通道的上层。光纤通道一 般是指FC-PHY层:FC0-FC2。术语FCP,即光纤通道协议,是指对SCSI的界面协议或FC-4层映射。我们这里讨论的是光纤通道的内在工作原理,而不是指光纤通道协议。
光纤通道的数据单元叫做帧。即使光纤通道本身就有几个层,大部分光纤通道是指第2层协议。一个光纤通道帧最大是2148字节,而且光纤通道帧的头部比起广域网的IP和TCP来说有些奇怪。光线通道只使用一个帧格式来在多个层上完成各种任务。帧的功能决定其格式。相比我们在IP世界中的概念,光纤通道帧格式是奇特而且奇妙的。
光纤通道帧起始于帧开始(SOF)标志,随后是帧头部,这个一会进行描述。数据,或光纤通道内容,紧随其后,然后是帧结束(EOF)。这样封装的目的是让光纤通道可以在需要时被其他类似于TCP的协议所承载。
FC协议交换方式
按照连接和寻址方式的不同,FC支持三种拓扑方式:
1. PTP(点对点):一般用于DAS(直连式存储)设置
服务器和存储设备在点对点的环境里都是N_PORT. 通过一条上行一条下行两条通道进行数据存储与读取。
2. FC-AL(光纤通道仲裁环路):采用FC-AL仲裁环机制,使用Token(令牌)的方式进行仲裁。光纤环路端口,或交换机上的FL端口,和HBA上的NL端口(节点环)连接,支持环路运行。采用FC-AL架构,当一个设备加入FC-AL的时候,或出现任何错误或需要重新设置的时候,环路就必须重新初始化。在这个过程中,所有的通信都必须暂时中止。由于其寻址机制,FC-AL理论上被限制在了127个节点。
FC-SW(FC Switchedl 交换式光纤通道):在交换式
SAN
上运行的方式。FC-SW可以按照任意方式进行连接,规避了仲裁环的诸多弊端,但需要购买支持交换架构的交换模块或FC交换机。
光纤信道(FC)中的基本实体是光纤信道网络,与一般分层网络不同的是,一个光纤信道网络很大程度上由功能单元以及各单元间接口所指定,各部分组成如下:
N_PORTs – 光纤信道流量终点;
FC Devices –N_PORT 访问的光纤信道设备;
Fabric Port – 光纤网络接口,连接 N_PORT ;
在 N_PORT 间传输数据帧的网络结构;
交换结构或混合结构下的一组辅助服务器,包括支持设备发现和网络地址解析服务的名称服务器。
主要的光纤信道网络拓扑组成如下所示:
Arbitrated Loop –N_PORTs 以菊花链(daisy-chain)形式连接在一起;
Switched Fabric – 由交换单元组成的网络;
Mixed Fabric – 由交换机和 "fabric-attached" 环路组成的网络。 L_PORT 将 loop-attached N_PORT (NL_PORT)与环路连接起来,并且 NL_PORT 通过 FL_PORT 接入该结构。
光纤通道的寻址方式
在数据中心网络中,光纤通道(FC:Fibre Channel)是通过 World Wide Name (
WWN
)来标识一个唯一的设备。
WWN
是一个 64 位的地址。WWN 对于光纤通道设备就像Ethernet 的MAC 地址一样都是全球唯一的,它们是由电器和电子工程协会(IEEE)标准委员会指定给制造商,在制造时被直接内置到设备中去的。
通常用 Node WWN 来标示每台不同的FC交换机,它是唯一的;对于FC交换机的端口,则使用Port WWPN 来标示交换机的端口。所以一个交换机只有一个 Node WWN 和多个 Port WWPN。 根据IEEE标准定义,WWN的定义方式有三种,可以见
《深度分析FC/FCOE中WWN的类型定义》
一文所述。
因为WWN的地址太长所以用这个地址来寻址的话会影响到路由的性能。这样光纤通道网络采用了另外一种寻址方案。这种方案是用基于交换光纤网络中的光纤端口来寻址称为FCID。基于交换光纤网络中的每个端口有一个唯一的 24 位的地址,FCID,这种FCID就类似TCP/IP中的IP地址。用这种 24 位地址方案,这样得到了一个较小的帧头,这能加速路由的处理。但是这个 24 位的地址必须通过某种方式连接到与World Wide Name 相关联的 64 位的地址。
在光纤通道(SAN)环境中,FC交换机它本身负责分配和维持端口地址。当有一个WWN 登录到交换机的某一个端口时,交换机将会为其分配一个FCID地址,同时交换机也将会创建FCID和登录的WWN 地址之间的关联关系表并维护他们的关系。交换机的这一个功能是使用名字服务器(NAME SERVER)来实现的。
名字服务器其实是光纤操作系统的一个组件,在交换机内部运行。它本质上是一个对象数据库,光纤设备在连接进来时,向该数据库注册它们的值这是一个动态的过程。动态的寻址方式同时也消除了手工维护地址出错的潜在的可能,而且在移动和改变 SAN 方面也提供了更多的灵活性。
一个 24 位的FCID地址由三个部份所组成: Domain,Area,Port组成。
Domain ( 从 23 到 16 位)
Area(从 15 到 08 位)
Port 或仲裁环物理地址-AL_PA( 从 07 到 00 位)
Domain
:端口地址中最重要的字节是 Domain。这是标识交换机本身的地址。最多只能达到256个地址。除了一些被保留使用的地址外,实际上只有 239 个地址可用。这意味着在你的 SAN 环境中,所在在一个SAN网络中最多只可能达 239 个交换机。同时Domain 可以用来标识一个san网络一个FC交换机的唯一性。
Area
:它提供 256 个地址。地址的这一个部份被用于识别个别的 FL_Ports 环,或它可能被用于当做一组F_Port 的识别符,例如,多端口的一个光纤卡的识别符。这意谓着每组端口有一个不同的 area 编号,即使对于只有一个端口的组也是如此。
Port
:地址的最后部份提供 256 个地址,用于识别相连的 N_Port 和 NL_Port。
按上面介绍,可以计算出一个SAN网络最大的地址数目: Domain x Area x Ports = 239 x 256 x 256=15,663,104 个地址。
光纤磁盘阵列
采用光纤通道技术的光纤磁盘阵列有两层含义,一层是指其对外即对主机使用光纤通道接口连接方式,一层是指其内部采用光纤通道技术来连接其内部的各个磁盘。
通常意义来说,
光纤磁盘阵列
指的是后一种含义。但在最初光纤磁盘阵列上市的时候,内部往往采用SCSI、SSA 等存储接口,对外才是光纤通道接口。现在越来越多的光纤磁盘阵列逐渐向内外俱是光纤通道接口的方向发展,这里我们想讨论的就是这种磁盘阵列。至于内部使用IDE 、SCSI、SSA 等接口技术、外部使用光纤通道技术,或者内部使用光纤通道技术,外部使用SCSI等其他接口技术的磁盘阵列(尽管这有些违背常识,但这种磁盘阵列的确存在),虽然也是光纤磁盘阵列,但不在我们的讨论范围内。
从光纤磁盘阵列的名词解释我们可以看出,从硬件构成来说它应当是由一堆磁盘和控制器及内外接口组成。一般的中、低端光纤磁盘阵列也正是这种结构:
光纤磁盘阵列
磁盘柜:主要特点是内部一般至少采用冗余的双FC-AL 仲裁环环路结构,内部硬盘实际上同时接在两条仲裁环上。而中端磁盘阵列支持的环路数更多,可以达到4 、8 、16条之多。这种多冗余仲裁环结构最主要的目的就是为了高可用性,它可以防止单个线路、接口的故障导致整个阵列的失效。而且每个环路采用旁路技术来防止无硬盘接入和硬盘故障对环路通信的影响。