摘要 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采用基于信用的流量控制机制,当接受者有足够的缓存接受发信者的数据时,接受者把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更适合这种情况。
参考文献:
[1] iSCSI Protocol Concepts and Implementation。Cisio Systems Inc。,2001。
罗金平,汪东,方兴 等译TOM Clark。IP SAN权威指南:存储区域网络中的iSCSI,iFCP和FCIP协议[M]。北京:中国电力出版社,2003
iSCSI Review[EB/OL ].http://www.digit—life.com/artieles2/iSCSI/.
朱立古,赵青梅,梁哲伟,等.iSCSI协议的研究[J].计算机工程与应用,2002,(15):44。
马米.IP存储展望 计算机世界[EB/OL].http://www.csec。com。cn/ittouch/020716/9.htm,2002-04-08.