摘要 FC和iSCSI是目前存储区域网络SAN(Storage Area Network)的两个主流协议。该文介绍FC(Fibre Channel:光纤通道)和iSCSI(Internet SCSI)协议的协议结构以及流量控制和发现机制,在零复制和流量控制等方面对FC 和iSCSI的协议功能进行了分析比较。关键词 存储区域网络; FC;iSCSI;零复制。1 引言SAN是一种专用网络,是网络服务器群的后端,可采用光纤通道或iSCSI等存储专用协议连接成高速专用网络,使网络服务器与多种存储设备直接连接。SAN的最大特点就是可以实现网络服务器与存储设备之间的多对多连接,而且,这种连接是本地的高速连接。SAN架构的优势在于,强大的扩展性、多种存储设备的集中和新架构支撑下的新型数据应用方式,在安全意义下负责可持续的存储和数据传输。目前,FC和iSCSI是应用于存储区域网吉比特速率的两种主要技术。2 FC协议分析2。1 FC协议结构光纤通道按协议层进行分层,各层之间技术相互独立,留有增长空间,并且由被认可的标准化机构进行开发,分层结构共分5层,如图1所示。 图1 FC协议层次⑴ C-0(物理层底层):FC-0层定义了连接的物理端口特性,包括介质和连接器(驱动器、接收机、发送机等)的物理特性、电气特性和光特性、传输速率以及其它的一些连接端口特性。⑵ FC-1(传输协议):规定了8B/10B编码方式和传输协议.包括串行编码、解码规则、特殊字符和错误控制。⑶ C-2(帧协议):规定了具体的传输机制,包括帧格式,节点间的信息交换。⑷ C-3(公共服务):提供高级特性的公共服务,即端口间的结构协议和流动控制,它定义了三种服务:条块化(Striping)、搜索组(Hunt Group)和多路播放(Broadcast Multicast)。⑸ FC-4(ULP映射):定义了Fibre Channel和IP,SCSI-3以及其他的上层协议(ULP)之间的接口。2.2 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所示图2 FC基于信用的流量控制一旦一个初始的信用度等级授权后,如果要补充信用度的话,要由接受方向发送出应答(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的初始值必须是非零的。如果为零的话,说明不能再接收或者发送帧。2.3 FC发现机制 在FC中,当一个新的设备加入到网络中时,它要与它的网络的管理者(一般是交换机)取得联系,网络管理者便会依次告知所有那些已经注册过的和那些需要被通知这一事件的设备。此外,在FC中,由于为了增强网络的灵活性和安全性,有时可能需要进行分区。当一个新的设备加入到网络中的时候,该设备首先与它同在一个分区的其它现有设备完成注册,然后连接这个设备的交换机会把这一事件告知其他的分区的设备和其它的交换机。 图3 FC发现机制如图3所示,如果当A区的节点A加入网络时,它先与FC交换机取得联系,那么FC交换机将把A节点加入网络的这一信息先后分别告知节点B和节点C以及B区的节点D和节点E。至此,A节点就加入到网络中,可以与A区与B区中的设备进行通信。3 iSCSI协议分析3.1 iSCSI协议结构如同任何一个协议一样,iSCSI也有一个清晰的层次结构,根据OSI模型,iSCSI的协议栈自顶向下一共可以分为五层,如图4所示: 图4 iSCSI协议分层模型 .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采用基于信用的流量控制机制,当接受者有足够的缓存接受发信者的数据时,接受者把