大话存储笔记云原生

【大话存储】学习笔记(7,8章),FC协议

2018-02-09  本文已影响16人  dy2903

Fibre Channnel

我们之前引入了SAN的概念,SAN首先是个网络,而不是存储设备。这个网络是专门来给主机连接存储设备用的。

我们知道按照SCSI总线16个节点的限制,不可能接入很多的磁盘,要扩大SAN的规模,只使用SCSI总线是不行的,所以必须找到一种可寻址容量大、稳定性强、速度块、传输距离远的网络结构。FC网络就应运而生。

FC网络

Fibre Channnel也就是网状通道,FC协议从1988年出现,最开始作为高速骨干网技术。

任何互联系统都逃不过OSI模型,所以我们可以用OSI来将FC协议进行断层分析。

物理层

首先有较高的速度:1Gb/s,2Gb/s,4Gb/s,8Gb/s到16Gbps

为了实现远距离传输,传输介质起码是光纤

链路层

字符编码及FC帧结构

FC协议的帧头有24字节,比以太网帧头(14字节)还要长。

比如下图为以太网的报文格式。

image.png

为什么FC协议需要这么长的帧头呢?因为24字节的帧头不但包含了寻址功能,还包含了传输功能保障。也就是说网络层和传输层的逻辑都用这24字节来传输。

这点就与TCP/IP+以太网不同,以太网基本上没有传输功能保证功能,主要需要靠TCP来进行端到端的传输保障。

我们可以对比一下TCP/IP和FC协议的开销:

基于以太网的TCP/IP网络,开销为:

14字节(以太网帧头) + 20字节(IP头) + 20字节(TCP头) =54字节,或者把TCP帧头变为UDP(8字节)一共是42字节

而FC协议就24字节,所以开销比TCP/IP的要小。

网络层

FC网络中的节点要通信,无非也就是连、找、发三大要素。

从这个方面基本上就可以了解FC各节点交互的流程了。

连:拓扑

与以太网类似,FC也有两种拓扑:FC-AL和Fabric

仲裁环是应该 由所有设备串联而成的闭合环路,每个接口上都有一套旁路电路(Bypass Circuit),一旦检测到本地设备故障,就会自动将这个接口短路。

一跳一跳的传输,而且任何时候只能按照一个方向向下游传输。

image.png

相对于仲裁环路来说转发效率提升了很多,联入矩阵所有节点可以同时进行点对点通信,加上包交换所带来的并发和资源充分利用,可使得交换架构获得的总带宽为所有端口带宽之和。

而AL架构下,不管接入的节点有多少,带宽为恒定,即共享环路带宽。

下图为交换矩阵的示意图。


image.png

FC终端设备接入矩阵端点,一个设备发给另一个设备数据帧被交换矩阵收到后,矩阵会拨动交叉处的开关,连通电路,传输数据。所以可以把交换矩阵是一个大的电路开关矩阵,根据通信的源和目的决定波动哪些开关。

FC交换拓扑寻址容量是2的24次方个地址,比以太网理论值(2的48次方)少,但是对于专用的存储网足够。

找:编址

任何网络都需要寻址机制,所以需要对FC网络的每个设备定义一个唯一的标识。

以太网交换设备的端口不需要有MAC地址,而FC交换机却需要每个端口都有自己的WWPN。这是因为FC要做的工作比以太网交换机多,许多FC的逻辑都集成在了FC交换机。 需要处理到FC协议的最上层。而以太网相对简单,因为上层逻辑都被交给TCP/IP这样的上层协议来实现了。

WWPN:长度是64位,比MAC地址多16位。长度太长,速度低,所以在WWPN上映射一层寻址机制,分配一个Fabric ID,嵌入链路帧里面来做路由

这样WWPN被映射到了Fabric ID,一个24位的Fabric ID又被分为Domain ID、Area ID、Port ID三个亚寻址单元

发:地址映射过程

如下的讲解主要是针对Fabric 交换架构网络。

既然要把WWPN映射到Fabric ID上,就一定要有映射机制,那么每个端口如何获得Fabric ID的呢?过程比较类似于RARP协议。

当一个端口接到FC网络的时候,会向注册服务器发送一个注册申请,然后这个注册服务器会返回给它动态分配一个Fabric ID。当然此时注册服务器会记录这个映射关系。

此后这个接口的帧不会携带WWPN,而是携带其被分配的ID作为源地址。这点就与以太网不同,我们知道 以太网既携带MAC又携带IP,所以在效率上打了折扣。

image.png

发:同步其他节点信息

不过还有一个问题,一个端口要与另一个端口通信,那么怎么知道要通信目标的Fabric ID是多少呢?

每个节点获得自己的Fabric ID之后,还会进行名称注册。同样也是向名称服务器发送注册帧,主动告知自己的Fabric ID等信息。然后名称服务器其他节点的信息返回给它。这样就知道了其他节点地址呢。

如果FC网络比较大,则可能不只一台FC交换机。也就是说有若干FC交换机互联。与IP网络不同的是,FC网络不需要太多的人工介入,它们会自动协商自己的Domain ID(可以回过去看看Fabric ID的结构),选举出主交换机,由主交换机来为其他的交换机分配Domain ID。交换机之间会运行OSPF等路由协议,这样可以交互节点信息,寻址各个节点。

现在我们可以与IP网络对比一下,IP网络需要很强的人为介入性,需要人来配置节点的IP地址、路由信息等,而FC网络则可以自动分配和管理地址。最根本原因是因为FC协议一开始设计就是为了高速、高效的网络,而不是给Internet使用的。所以自动分配地址当然适合。

发:与目标通信

此时每个节点已经获得了Fabric ID了,同时还从名称服务器得知网络上其他节点的ID,万事俱备,完全可以与其他节点进行通信了。

FC网络中还有一中FC Control Service,如果节点向这个服务进行注册了以后,一旦网络状态有变动,将会把最新的信息同步到这些节点。

最后一点

上面提到的名称服务器、注册服务器其实一般都是运行在交换机内部的,而不是物理上的服务器。

传输层

FC协议的传输层的作用与TCP相似,也也进行Segment以及通过端口号区分上层应用。

FC适配器

要构建一个完整的FC网络,除了需要FC交换机,还需要FC适配器(FC HBA,Host Bus Adapter)

HBA可以指代任何一种设备,只要这个设备的作用是将一个外部功能接入主机总线,所以PCIE网卡、声卡和显卡都可以叫HBA。

下图是用来接入FC网络的各种线缆,有SC光纤,DB9铜线和RJ45/47线缆。可以看出FC不一定是光纤

image.png

FC适配器有自己的CPU、RAM、ROM。是一个嵌入式设备。与RAID卡类似,只是不像RAID卡需要那么多的RAM来做数据缓存。

image.png

SCSI迁移到FC

如何迁移

在上面一章我们把FC协议进行了简单的介绍,现在是时候把SCSI迁移到FC上了。

回顾一下,为什么要这么做,因为SCSI总线只能接16个节点,不利于扩展,同时传输的距离有限,而且不够高效等。所以我们可以在主机与后端存储之间使用FC协议,把基于并行SCSI总线的存储网络架构迁移到FC的网络架构。

迁移的过程中存在一个问题,我们知道FC协议并没有定义SCSI指令集这样面向磁盘存储数据的通用语言。那怎么解决这个问题呢?

【大话存储】学习笔记(13章),协议融合中提到了协议融合,此时FC协议与SCSI协议有重叠,但是FC协议在某些方面可以做得更好,所以可以将SCSI语言承载于FC协议进行传送。

将连接主机和磁盘阵列的通路从并行的SCSI总线替换为串行传输的FC通路。但是盘阵后端连接磁盘的接口还是SAS接口。

image.png

这样单台盘阵所能接入的磁盘容量没有提升,但是前端的性能提升了,因为使用FC协议,可以更为的高速。

好处

引入FC之后,带来的好处为

image.png

这样就实现了多台主机共享一个盘阵,提升了盘阵的利用率。

image.png

多路径访问目标

如果盘阵有两个控制器,每个主机上都有两块FC适配卡,它们都连接到了FC交换机。

这样会存在一个问题,因为主机有两块HBA卡,而每块HBA可以识别两块LUN,所以整个主机会识别出4块磁盘,这就有问题了,因为这样磁盘就有重复了,造成了混乱。

image.png

那么你可能会说,为啥要两块FC HBA卡呢?因为一块HBA有单点故障,如果使用两块HBA卡,一旦一块HBA卡出现了故障,另一块卡依然可以维持主机到盘阵的通路。

那多路径的问题怎么解决:可以在操作系统中安装多路径软件,它可以识别FC提交上来的LUN,向操作系统提交单份LUN。这个软件还有个作用,如果某个控制器发生故障,通过这个软件立即重定向到另一个控制器。

image.png
上一篇 下一篇

猜你喜欢

热点阅读