1.SAN说明

     SAN(Storage Area Network,存储局域网络)的诞生,使存储空间得到更加充分的利用以及安装和管理更加有效。SAN是一种将存储设备、连接设备和接口集成在一个高速网络中的技术。SAN本身就是一个存储网络,承担了数据存储任务,SAN网络与LAN业务网络相隔离,存储数据流不会占用业务网络带宽。


iscsi存储和nfs iscsi存储和fc存储区别_TCP

在SAN网络中,所有的数据传输在高速、高带宽的网络中进行,SAN存储实现的是直接对物理硬件的块级存储访问,提高了存储的性能和升级能力。

  早期的SAN采用的是光纤通道(FC,Fiber Channel)技术,所以,以前的SAN多指采用光纤通道的存储局域网络,到了iSCSI协议出现以后,为了区分,业界就把SAN分为FC-SAN和IP-SAN。


2.FC说明

  FC开发于1988年,最早是用来提高硬盘协议的传输带宽,侧重于数据的快速、高效、可靠传输。

         到上世纪90年代末,FC SAN开始得到大规模的广泛应用。

  FC光纤通道拥有自己的协议层,它们是:



iscsi存储和nfs iscsi存储和fc存储区别_流量控制_02



 FC-0:连接物理介质的界面、电缆等;定义编码和解码的标准。l  

  FC-1:传输协议层或数据链接层,编码或解码信号。l  

  FC-2:网络层,光纤通道的核心, 定义了帧、流控制、和服务质量等。l  

  FC-3:定义了常用服务,如数据加密和压缩。l  

  FC-4:协议映射层,定义了光纤通道和上层应用之间的接口,上层应用比如:串行SCSI 协 议,

       HBA卡的驱动提供了FC-4 的接口函数。FC-4 支持多协议,如:FCP-SCSI,FC-IP,FC-VI。

  光纤通道的主要部分实际上是FC-2。其中从FC-0到FC-2被称为FC-PH,也就是“物理层”。

        光纤通道主要通过FC-2来进行传输,因此,光纤通道也常被成为“二层协议”或者“类以太网协议”。

  理解光纤通道(FC)的核心,包括其命名格式和位址机制,可以帮助人更好的理解SAN。要全面了解所有有关协议的知识才能够快速浏览问题并找出问题所在。虽然通过图形界面,鼠标点击和有限的知识也可能解决问题,但是这显然并不是好方法。因此我们在这里学习一下光纤通道协议。

  在此重复:光纤通道并不是SCSI的替代;一般而言SCSI是光纤通道的上层。有些跑题,现在进入正题。光纤通道一般是指FC-PHY层:FC0-FC2,在我们的上一篇文章已经有过简短提及。术语FCP,即光纤通道协议,是指对SCSI的界面协议或FC-4层映射。我们这里讨论的是光纤通道的内在工作原理,而不是指光纤通道协议。

  光纤通道的数据单元叫做帧。即使光纤通道本身就有几个层,大部分光纤通道是指第2层协议。一个光纤通道帧最大是2148字节,而且光纤通道帧的头部比起广域网的IP和TCP来说有些奇怪。光线通道只使用一个帧格式来在多个层上完成各种任务。帧的功能决定其格式。相比我们在IP世界中的概念,光纤通道帧格式是奇特而且奇妙的。

  光纤通道帧起始于帧开始(SOF)标志,随后是帧头部,这个一会进行描述。数据,或光纤通道内容,紧随其后,然后是帧结束(EOF)。这样封装的目的是让光纤通道可以在需要时被其他类似于TCP的协议所承载。

   一个帧是在光纤通道连接中数据包的最小单位 (对上层协议是透明的)



iscsi存储和nfs iscsi存储和fc存储区别_TCP_03



2.1 FC拓扑结构



iscsi存储和nfs iscsi存储和fc存储区别_TCP_04



2.2 光纤通道的寻址方式

     在数据中心网络中,光纤通道(FC:Fibre Channel)是通过 World Wide Name ( WWN)来标识一个唯一的设备。WWN是一个 64 位的地址。WWN 对于光纤通道设备就像Ethernet 的MAC 地址一样都是全球唯一的,它们是由电器和电子工程协会(IEEE)标准委员会指定给制造商,在制造时被直接内置到设备中去的。

   Fabric是指一个或几个可以使用目的标示来传输数据帧的交换机。Fabric通常可以被认作是一个“云团”,也可以当作是一个虚拟连接。每一个设备的唯一标示就是World Wide Name (就像一个人的身份证,终身使用并不会修改)



iscsi存储和nfs iscsi存储和fc存储区别_iscsi存储和nfs_05



通常用 Node WWN 来标示每台不同的FC交换机,它是唯一的;对于FC交换机的端口,则使用PortWWPN 来标示交换机的端口。所以一个交换机只有一个 Node WWN 和多个 Port WWPN。 根据IEEE标准定义,WWN的定义方式有三种,可以见《深度分析FC/FCOE中WWN的类型定义》一文所述。

      

2.3 FC流量控制


        FC中的流量控制机制是在信用度系统上的基础上。所谓的信用度(Credit)是指设备接受额外帧的能力。信用度的多少决定了设备接收额外帧能力的大小。如果接受方没有向发送方发出任何的信用度,那么发送方就不能发送任何帧,在信用度的基础上协调帧传送,可以避免帧的丢失,同时减少了对整个帧序列进行重传的频率。

         实际上,这种基于信用度的机制建立在终端节点能够提供的缓冲区(TX-Buffer和RX-Buffer)的数目上,这些缓冲区用于存储到来的数据流。例如,拥有板上存储器的主机总线适配器,可能被分派作为接受缓冲区,成为FC-1解串和译码功能,以及FC-2的帧重新装配功能之间的接口。当FC-1来提交帧的时候,这种接受缓冲区被充满;当FC-2的装配线取出各个帧进行数据块的重建时,这种接受缓冲区被清空。为了充分的利用FC的传输能力,最好能够连续的多发出多个帧。这一点在事务开始前由授权充分信用度来实现,同时利用FC的全双工能力在帧还未接受时就发出附加的信用度。

          FC中常用的两种是端到端(EE-Credit)和缓冲区到缓冲区(BB-Credit)的流量控制。

         端到端的流量控制机制(EE-Credit)是在两个终端节点之间使用的流量控制。在两个通信节点登录并交换通信参数时候,建立起传输信用度,并且由节点本身来监测。中间的交换机不参与端到端流量控制。如图2所示

 

        一旦一个初始的信用度等级授权后,如果要补充信用度的话,要由接受方向发送出应答(ACK)来实现。每发出一个帧发送方就消耗了一个端到端的信用度(EE-Credit),只有当其接收到一个ACK后才能增加信用度。

           光纤通道中还定义使用BB-Credit的流量控制机制(缓冲区到缓冲区的信用度),并且依靠receive-ready(R-RDY)有序集补充信用度,如图2所示。某个附接到交换机的终端接点将在登录到交换机的过程中建立它的BB-Credit。在交换机远端参与通信的一方将在登录时建立其自身交换机的BB-Credit。BB-Credit没有端到端的成分。发送方在发出一个帧时将BB-Credit减1,直到BB-Credit的数量为零的时候.此时不能再进行帧发送。在接收到R-RDY时将BB-Credit加1。BB-Credit的初始值必须是非零的。如果为零的话,说明不能再接收或者发送帧。


iscsi存储和nfs iscsi存储和fc存储区别_iscsi存储和nfs_06


2.4  FC发现机制

         在FC中,当一个新的设备加入到网络中时,它要与它的网络的管理者(一般是交换机)取得联系,网络管理者便会依次告知所有那些已经注册过的和那些需要被通知这一事件的设备。此外,在FC中,由于为了增强网络的灵活性和安全性,有时可能需要进行分区。当一个新的设备加入到网络中的时候,该设备首先与它同在一个分区的其它现有设备完成注册,然后连接这个设备的交换机会把这一事件告知其他的分区的设备和其它的交换机。

         如图3所示,如果当A区的节点A加入网络时,它先与FC交换机取得联系,那么FC交换机将把A节点加入网络的这一信息先后分别告知节点B和节点C以及B区的节点D和节点E。至此,A节点就加入到网络中,可以与A区与B区中的设备进行通信。



iscsi存储和nfs iscsi存储和fc存储区别_TCP_07



Fabric网络设备注册过程 

如果设备为Fabric模式,将会由设备首先向注册服务器(FFFFFE)发送注册申请(FLOGI),由注册服务器应答(如通则发送端口地址) 。获得许可和Fabric地址后向名称服务器发送端口注册请求,由名称服务器决定,获得许可的同时将同时收到可访问设备列表(主动设备) 





iscsi存储和nfs iscsi存储和fc存储区别_IP_08



2.5 Fabric端口类型及动态地址



iscsi存储和nfs iscsi存储和fc存储区别_IP_09



设备 (节点)端口

N_Port = “Fabric直接连接设备” 


NL_Port = “Loop连接设备” 



交换机端口 


E_Port = “扩展端口” (交换机到交换机) 


F_Port = “Fabric端口” 

FL_Port = “Fabric Loop端口” 

G_Port = “通用(Generic)端口 — 可以转化为E或F”

      因为WWN的地址太长所以用这个地址来寻址的话会影响到路由的性能。这样光纤通道网络采用了另外一种寻址方案。这种方案是用基于交换光纤网络中的光纤端口来寻址称为FCID。基于交换光纤网络中的每个端口有一个唯一的 24位的地址,FCID,这种FCID就类似TCP/IP中的IP地址。用这种 24 位地址方案,这样得到了一个较小的帧头,这能加速路由的处理。但是这个 24 位的地址必须通过某种方式连接到与World Wide Name 相关联的 64 位的地址。

       在光纤通道(SAN)环境中,FC交换机它本身负责分配和维持端口地址。当有一个WWN 登录到交换机的某一个端口时,交换机将会为其分配一个FCID地址,同时交换机也将会创建FCID和登录的WWN 地址之间的关联关系表并维护他们的关系。交换机的这一个功能是使用名字服务器(NAME SERVER)来实现的。

        名字服务器其实是光纤操作系统的一个组件,在交换机内部运行。它本质上是一个对象数据库,光纤设备在连接进来时,向该数据库注册它们的值这是一个动态的过程。动态的寻址方式同时也消除了手工维护地址出错的潜在的可能,而且在移动和改变 SAN 方面也提供了更多的灵活性。



iscsi存储和nfs iscsi存储和fc存储区别_TCP_10



一个 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 个地址。

3.iSCSI协议结构

如同任何一个协议一样,iSCSI也有一个清晰的层次结构,根据OSI模型,iSCSI的协议栈自顶向下一共可以分为五层,如图



iscsi存储和nfs iscsi存储和fc存储区别_iscsi存储和nfs_11



.SCSI层:根据应用发出的请求建立SCSI CDB(命令描述块),并传给iSCSI层;同时接受来自iSCSI层的CDB,并向应用返回数据。
.iSCSI层:对SCSI CDB进行封装,以便能够在基于TCP/IP协议的网络上进行传输,完成SCSI到TCP/IP的协议映射。这一层是iSCSI协议的核心层。   
.TCP层:提供端到端的透明可靠传输。
.IP层:对IP报文进行路由和转发。   
.Link层:提供点到点的无差错传输

3.2 iSCSI 流量控制与超时重发

        流量控制是指发送方控制发送数据帧到网络的速率。发送方发送的速率—般是传送路径上的交换机、路由器或接收方可用的缓冲区大小的函数。iSCSI则采用TCP/lP协议的端到端的流量控制机制,以可变发送窗口的方式进行流量控制。发送窗口在连接建立时由双方面定,但在通信过程中,接收方可根据自己的资源使用情况,随时动态地调整自已的接收窗口(可增大或减小),然后告诉对方,使发送方的发送窗口和自己的接收窗口一致。

         iSCSI采用的是TCP的自适应超时重发算法,可根据网络的情况动态调整。这种算法记录每一个报文段发出的时间以及收到相应的确认报文段的时间,这两个时间之差就是报文段的往返时延RTT,当发送—个数据段时,启动相应的定时器,如果定时器超时确认报文段还没有到达,就触发数据配发机制。如果超时之前得到确认,就记录新的往返时延,将各个报文段的往返时延样本进行加权平均得到新的报文段的平均往返时延RTT,显然定时器设置的重发时间应大于平均的往返时延RTT。在实际应用中,RTT的算法还很复杂,目前一般采用的是Karm算法。

3.3 iSCSI发现机制

        iSCSI发起端为了和iSCSI目标端建立iSCSI会话,iSCSI需要知道ISCSI目标端的IP地址,TCP端口号和名字三个信息。iSCSI发现的目的是为了让iSCSI发起端获取一条到iSCSI目标端的通路。iSCSI有三种发现机制:

⑴ 静态配置:在iSCSI发起端已经知道iSCSI目标端的IP地址TCP端口号和名字信息时,iSCSI发起端不需要执行发现。iSCSI发起端直接通过IP地址和TCP端口来建立TCP连接,使用iSCSI目标端的名字来建立iSCSI会话。这种发现机制比较适合比较小的iSCSI体系结构

⑵ SendTarget发现:在iSCSI发起端知道iSCSI目标端的IP地址和TCP端口的情况下,iSCSI使用IP地址和TCP端口号建立TCP连接后建立发现对话。iSCSI发起端发送SendTarget命令查询网络中的存在的iSCSI信息。这种方法主要用于网关设备,iSCSI发起端被静态配置连接到指定的iSCSI设备。iSCSI发起端和iSCSI网关设备建立对话并发送SendTarget请求给iSCSI网关设备。iSCSI网关设备返回一系列和它相连的ISCSI目标端的信息。iSCSI发起端选择一个目标端来建立对话。

⑶ 零配置发现:这种机制用于iSCSI发送设备完全不知道ISCSI目标端的信息的情况下。iSCSI发起端利用现有的IP网络协议SLP(Service Location Protocol for Discovery,服务定位协议)。iSCSI目标端使用SLP来注册,iSCSI发起端可以通过查询SLP代理来获得注册的iSCSI目标端的信息。当iSCSI目标端加入到网络中的时候,拓扑结构也随之改变。虽然这种方法增加了实现的复杂性,但它不需要重新配置发起端即可找到新的目标端。

4 FC 与iSCSI协议的比较

本文主要从下面几个方面对两个协议进行比较:

4.1 流量控制机制对网络的适应性

         FC采用基于信用的流量控制机制,当接受者有足够的缓存接受发信者的数据时,接受者把Credit(信用度)分配给发信者。它根据发送者的请求分配Credit,仅当发送者没有用完它的Credit时,它才可以发送数据。在MAN/WAN中,发送者必须要等待很长时间来获得接受者的确认消息(以向网络发送新的数据)。这种基于信任的流量控制机制降低了网络的利用率。


          iSCSI是基于窗口的发送机制,由于发送方可以根据网络的拥塞情况动态地调整发送速率,因此iSCSI的流量控制机制对网络的适应性更好,尤其在网络传输延迟较大的网络中。

4.2 超时重发机制的灵活性

              在TCP/IP协议中,TCP使用自适应重传算法以适应互连网络时延的变化。它的要点是:TCP监视每一条连接的性能,并计算出报文的往返时间RTT(Round Trip Time)。当连接的性能变化时,TCP随即修改RTT(也就是说它能自动适应时延的变化)。RTT(Round Trip Time)被发送方用来决定是否重传报文。而Fibre Channe]使用的是静态的超时重发机制,不会根据网络的情况动态地加以改变,因此发送方可能过早或过迟地出现超时,这对改善网络的综合性能不利。相对而言,iSCSI可以动态地自适应于网络的当的情况,可以改善网络的综合性能,从这个角度看,iSCSI应该优于Fibre Channel,更加适合目前的网络情况

4.3 CPU对数据封装的负担大小

           在存储环境中,发出的块I/0请求的大小一般介于4K到64K之间。以8K的块I/0请求为例,已经知道在iSCSI中以太网帧的大小是1.5K,在FC中,FC的帧大小是2K。因此8K的块I/O请求必须被分成多个小的段,以适应不同的传输帧大小。在FC中,分段和重组操作是在网卡中实现的,因此减轻了主机CPU的负担。对于iSCSI协议,由于分段与重装是有CPU来完成的,因此增加了CPU的负担。

4.4 是否能保证数据安全传送

            在安全性方面,因为iSCSI的一个设计标准是它在不受信任的广域环境中的使用,iSCSI规范允许使用多种安全方法。位于iSCSI层下的加密方案(例如,IPsec),不需要在iSCSI端设备之间进行协商,它们对于高层应用程序来说是透明的。对于其他的认证实现(如,KERBEROS或者公钥/私钥的交换),iSCSI登录过程为两个端设备协商两者都支持的安全类型提供了文本字段。如果协商成功,iSCSI设备之间的PDU交换将由所使用的安全程序根据适当的安全确认需求而被格式化。iSNS(Internet Storage Name Server)服务器也可以协助此过程(如作为公钥的仓库)。
光纤通道是工作在第二层的协议,原本并没有建立相应的安全机制以及安全通用协议,只不过是基于逻辑上的数据通道绑定。

5 结束语


        对于传统的基于LAN的SAN来说,FC是比iSCSI更好的网络互连协议,因为FC的零复制和分段组装机制大大地减轻了CPU的负担,加快了数据的处理。但是,随着存储应用的增长,存储网络往往需要跨越很远的距离,由于在流量拥塞控制机制、发现和地址机制、超时重发机制、安全机制等方面的优势,iSCSI比FC更适合这种情况。



<li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
                        <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use>
                    </svg><span class="name">点赞</span>
                    <span class="count">2</span>
                    </a></li>
                    <li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{"mod":"popu_824"}"><svg class="icon" aria-hidden="true">
                        <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-Collection-G"></use>
                    </svg><span class="name">收藏</span></a></li>
                    <li class="tool-item tool-active is-share"><a href="javascript:;"><svg class="icon" aria-hidden="true">
                        <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-fenxiang"></use>
                    </svg>分享</a></li>
                    <!--打赏开始-->
                                            <!--打赏结束-->
                                            <li class="tool-item tool-more">
                        <a>
                        <svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
                        </a>
                        <ul class="more-box">
                            <li class="item"><a class="article-report">文章举报</a></li>
                        </ul>
                    </li>
                                        </ul>
            </div>
                        </div>
        <div class="person-messagebox">
            <div class="left-message"><a href="">
                <img src="" class="avatar_pic" username="Agoni_xiao">
                                        <img src="" class="user-years">
                                </a></div>
            <div class="middle-message">
                                    <div class="title"><span class="tit"><a href="" data-report-click="{"mod":"popu_379"}" target="_blank">Agoni_xiao</a></span>
                                        </div>
                <div class="text"><span>发布了55 篇原创文章</span> · <span>获赞 18</span> · <span>访问量 6万+</span></div>
            </div>
                            <div class="right-message">
                                        <a href="" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-letter">私信
                    </a>
                                                        <a class="btn btn-sm  bt-button personal-watch" data-report-click="{"mod":"popu_379"}">关注</a>
                                </div>
                        </div>
                </div>