光纤通道(Fibre Channel,FC)以可扩展性好、高带宽、通用性强及传输距离远等优点而成为存储区域网(SAN)的主流技术之一,速率已从1G、2G发展到4G、8G。近年来,企业的存储应用出现了急剧增长,公众对业务连续性和灾难恢复的重要性也有了更多的认识。随着SAN规模的不断扩大,及基于数据安全性的考虑,企业的服务器和数据中心,或主、备数据中心很可能处在不同的地理位置。因此,企业SAN应用也自然而然出现了存储扩展(Storage Extension)的需求,即在企业内部不同存储岛(SAN Island)之间传送数据的需求。
现有的FC长途传送方法
FC标准ANSI INCITS 404 FC-PI-2规定了1G、2G、和4G FC设备的光接口标准,可在850nm波段多模光纤中传输300米,或在1310nm波段单模光纤中传输10km。这两类接口比较适合校园大小的SAN的楼间或楼内连接。对于更远的FC连接,比较现实的做法是通过已有的城域网(MAN,传送距离200km以上)或广域网(WAN,传送距离1000km以上)来传送FC信号。
图1:不同信用时2G FC在不同传送距离处出现了有效通量降低。
通过现有的MAN或WAN传送FC信号的传统办法有:可以直接把FC信号调制到波分复用(WDM)波长上,通过城域或长途波分复用设备来传送(可经过2R或3R再生),或者先通过ITU-T G.7041同步GFP-T封装然后通过虚级联或相邻级联映射入SDH/SONET帧中传送,或者这两种办法结合起来使用。但本质上来讲,以上提到的这些办法都是对FC信号的完全透明传送(即使在同步GFP-T封装时对FC信号进行了8B/10B编解码),传送设备不需要知道传送的内容是什么,FC完全按照自身的协议控制数据流的传送。FC光信号的传送在物理层上或许因为更小的衰减可以传得更远,然而实际上,由于FC自身的缓存到缓存流量控制(BB Flow Control)协议的限制,当FC信号在传送了一定距离后,数据的有效通量(Effective Throughput)迅速下降。
FC架构采用了基于信用(Credit)的流量控制协议,以避免接收设备发生拥塞而被迫丢弃帧的事件。FC发送端的Credit代表了FC接收设备接收帧的能力。如果接收端没有颁发信用(Issue Credit)给发送端,发送端就不可以发送帧。这种基于Credit的流量控制机制,有助于避免帧的丢失,减少了重发整个FC序列的概率。FC标准定义了两种流量控制协议,一个是端到端流量控制(EE Flow Control),另一个是缓存到缓存流量控制。
缓存到缓存流量控制是相互通讯的两个FC端口的连接通路上的任意两个相邻的FC端口之间的流量控制。例如两个节点端口(N-Port)直接相连或通过Fabric进行端到端通讯,那么相邻的节点端口到节点端口(N-Port to N-Port)之间,节点端口到Switch端口(N-Port to F-Port)之间,或Switch端口与Switch端口(E-Port to E-Port)之间的流量控制均为缓存到缓存的流量控制。缓存到缓存流量控制的信用(BB-Credit)也是在相邻两个FC端口相互Login时达成的。Login完成后,端口的BB-Credit-CNT置为0。当FC发送端口发送一个数据帧或者链路控制响应帧时,其BB-Credit-CNT增加1。当每个数据帧或链路控制响应帧被接收端口收到并能够处理,接收端口就回发一个原语信号(Primary Signal)R-RDY。当FC发送端口收到一个R-RDY时,其BB-Credit-CNT就减小1。当一个FC端口的BB-Credit-CNT增至Credit时,它就不可以继续发送数据帧或链路控制响应帧。缓存到缓存的流量控制适合Class 2、3、F及帧起始定界符(SOF)为SOFc1的Class 1、6业务类型的传送。
图2:FC-BB-3-GFPT协议层和传送模型。[2]
在缓存到缓存流量控制模式下,如果接收端接收帧的能力有限(即发送端的Credit较低),或者发送端和接收端的距离过远(更确切地说是时延过大)以至于不能很快收到回发的R-RDY,这样,发送端就很快用完了Credit而经常处于等待R-RDY的状态,因而不能持续发帧。这就是为什么FC的传送经过一段距离后就出现了有效通量降低。这个现象降低了MAN或WAN的带宽利用率。在两端口相互Login时增加Credit倒是一个有效的办法,但通常FC设备分配给每一个端口的资源是有限的,不可能无限提高每一个端口的接收能力(很多FC设备的每个端口所能支持的最大Credit在30左右,但也有一些设备分配给特殊端口几百个Credit)。当然,增加帧的平均帧长,也可以缓解Credit不足的压力。测试发现,当传送最大帧长2148字节的1G FC帧并设置信用为32时,在传送距离约80公里的时候开始出现有效通量降低。然而,规定帧以最大帧长发送并不是切实可行的。
新标准
由此看来,即便是通过现有的MAN或WAN来传送FC,其传送距离的受限很可能不是因为传送网络的限制,而是FC自身的流量控制协议限制了业务的传送。为了克服这个问题,各种距离延伸传送方案也就应运而生了。
2006年7月,T11技术委员会批准了一个新的FC标准,即ANSI INCITS 414 FC-BB-3。在这个标准里针对缓存到缓存流量控制模式的FC业务提出了一种新的长距传送方案,即FC-BB-3-GFPT。这个方案里,距离延伸传送功能是由FC-BB-3-GFPT器件实现的。标准只对FC-BB-3-GFPT器件的功能进行了定义,在具体设计中,可由多个ASIC或FPGA联合实现。这个方案可使FC在基于SONET/SDH/OTN/PDH的MAN或WAN上实现长距离传送。
图3:透明传送的FC和FC-BB-3-GFPT长距传送的FC。
FC-BB-3-GFPT是个双向传送的器件。它一端连接客户FC设备,另外一端连接MAN或WAN(在FC-BB-3标准中,传送网一侧在功能上被定义为WAN)。面向FC设备的一端,FC-BB-3-GFPT仿真成一个FC-2层接口并适配到编码层FC-1和物理层FC-0。然而,FC-BB-3-GFPT并不是一个真正的FC器件,它只具有FC协议的最低两层,因此FC-BB-3-GFPT在客户端只是一个FC的物理接口。这个物理接口甚至可以支持同相连的FC客户设备进行链路速率协商。两端客户FC设备,以点对点的方式,通过两端带FC-BB-3-GFPT器件的SONET/SDH/OTN/PDH传送网相连。每一个FC-BB-3-GFPT器件也许面对多个客户端FC接口,然而,每一对经过FC-BB-3-GFPT和传送网络相连的客户FC设备之间的通讯,占用的都是各自专用的传送路径。这里所说的专用传送路径,是逻辑上的概念,或许是物理上走不同的光纤,或许是同一个SONET/SDH帧中不同的支路时隙。
FC-BB-3-GFPT器件把从一端FC设备收到的帧经过传送网全部转发给另一端的FC设备。FC-BB-3-GFPT器件本身并不产生FC帧,也并不直接参与FC端口的初始化。FC-BB-3-GFPT器件不必遵守关于FC端口认证的要求,它也不干涉通过FC-BB-3-GFPT器件连接的FC设备间所发生的这类过程。FC-BB-3-GFPT器件不具有FC身份和可见性。从管理上来讲,FC-BB-3-GFPT可以同FC设备完全隔离开。
图4:FC-BB-3-GFPT状态机。
那么,FC-BB-3-GFPT是怎样延长FC传送距离的呢?奥秘在于FC-BB-3-GFPT器件参与了FC的缓存到缓存的流量控制。当FC-BB-3-GFPT器件在收到来自于相连的FC设备的帧后,马上代替远端的FC设备回发了R-RDY,而不必等到远端的FC设备发送R-RDY回来(实际上,FC-BB-3-GFPT器件终结了R-RDY,而不是在两个FC设备之间转发R-RDY)。收到R-RDY后,FC设备的Credit得以释放,从而得以继续发送帧,从而减小或消除了透明传送FC时产生的等待时间,提高了FC业务传送的有效通量。因此,两个FC-BB-3-GFPT器件的距离,也就是传送网的传送距离,被“隐藏”起来了。当然,为配合FC-BB-3-GFPT器件跟FC设备之间的流量控制,两个FC-BB-3-GFPT器件之间也采用了一种称为ASFC(Alternate Simple Flow Control)流量控制协议。基于FC-BB-3-GFPT的长距传送方案可以将1G的FC信号传送5000km,2G的FC信号传送2500km,因此可以非常快地实现跨国甚至跨洲的数据访问、存储。
两个FC-BB-3-GFPT器件及中间的传送网构成了一个传送FC的“桥梁”,桥梁一旦架成之后,就可以传送FC业务了。这个桥梁在FC-BB-3标准中被称为GFPT-WAN。桥梁的两端,即FC-BB-3-GFPT器件,有自己的状态机,并且状态机的转化与承载的FC没有关系。
FC-BB-3-GFPT的状态机一共有三个状态:S1、S3和S2。其中,S1的状态是最初始的状态,当设备上电时,或外部命令要求初始化时都可以转到这个状态。进入S1后,FC-BB-3-GFPT器件确定传送网络是否正常,即GFPT-WAN有没有缺陷。如没有缺陷,则进入S3状态。进入S3状态后,一端的FC-BB-3-GFPT器件会向另一端的FC-BB-3-GFPT器件发送GFPT-WAN流量控制所用的原语信号PING及PING-ACK来确定GFPT-WAN是否配置了足够的缓存资源。如GFPT-WAN配置的缓存资源足够,则从状态S3进入S2,否则,从状态S3返回S1。S2是FC-BB-3-GFPT器件的正常工作状态,进入S2状态之后,两端FC设备就可以通讯了。在S2状态时,FC-BB-3-GFPT器件仍然周期性地发送PING及PING-ACK来检查当前GFPT-WAN配置的缓存资源是否够用,如果不够用,则从状态S2转入S1。另外,如果在状态S2发现GFPT-WAN有时间长于100毫秒的缺陷,也会转入S1状态。
图5:LEM监测双方FC设备Login并在FC-BB-3-GFPT器件上设定相应的Credit。
进入S2状态后,FC-BB-3-GFPT器件两端的FC设备开始初始化链路,并向对方Login以交换操作参数包括流量控制等信息。FC-BB-3-GFPT器件会对这种Login交换进行监测(LEM)。
FC-BB-3-GFPT所支持的FC设备间的Login从高到低有三个级别:ELP(E-Port到E-Port),FLOGI(N-Port到F-Port)和PLOGI(N-Port到N-Port)。在FC-BB-3-GFPT收到Login申请时打开LEM,在收到Login确认(SW-ACC对应ELP,LS-ACC对应FLOGI和PLOGI)后关闭。LEM负责“截获”Login中的Credit信息,并把FC-BB-3-GFPT的Credit设成远端FC设备的Credit。这样,每一个FC设备跟相连的FC-BB-3-GFPT器件通讯时,就如同跟另一端的FC设备通讯一样,只不过距离拉近了。
当两端的FC设备完成注册,并且FC-BB-3-GFPT的LEM成功关闭之后,数据流就可以在两个FC设备之间正常传送了。当一端FC设备由于数据拥塞而不能继续接收来自FC-BB-3-GFPT器件的帧时,这个FC-BB-3-GFPT器件就向远端FC-BB-3-GFPT器件发出停止转发FC帧和原语信号的请求。这个请求是通过发送GFPT-WAN专用的原语信号ASFC-PAUSE来实现的。当本端FC设备可以继续接收帧时,本端的FC-BB-3-GFPT器件就向远端FC-BB-3-GFPT器件发出另一种GFPT-WAN专用的原语信号ASFC-RESUME以表明可以继续转发FC帧和原语信号了。
FC数据在FC-BB-3-GFPT器件中适配和解适配运用了ITU-T G.7041异步GFP-T封装模式。在ITU-T G.7041中,虽然异步GFP-T和同步GFP-T封装都是基于8B/10B编码流的,但它们之间有着根本的不同。后者是两个FC端口间全速、完全透明的传送,只相当于传输线的延长。异步GFP-T允许FC业务向任意带宽的GFPT-WAN上进行适配,虽然一般在实际应用中会给FC业务分配全速的带宽。
FC业务通过FC-BB-3-GFPT实现了长距离传送,但目前无论是MAN还是WAN,GFP层都不是传送网的最低层。现在的城域SDH多业务平台和城域或长途WDM传送平台都在尽可能集成各种类型的数据或图像业务,为了有效地利用带宽,可以把FC-BB-3-GFPT通过虚级联(VC)和链路容量调整方案(LCAS)映射到城域SDH传送平台,或者再继续映射到OTN/WDM以便在城域或广域WDM传送平台上传送。
图6:基于FC-BB-3-GFPT的传送设备功能模块的设计范例。
除了通过FC-BB-3-GFPT(基于SONET/SDH平台)的办法能够实现FC的长距离传送,FC还可以通过IP方式实现长距离传送,如FCIP和iFCP。但是,除了能够支持Fabric到Fabric的互连及一点到多点的SAN业务路由等优点之外,FC通过IP传送的缺点是显而易见的,如很大的传送时延、较大的抖动、不可预料的可靠性、不能提供小于50毫秒的保护和恢复、较差的配置和升级灵活性、较大的协议开销、很难实现同步备份,还有高带宽要求下的高成本。然而,这些缺点却正是FC-BB-3-GFPT/SDH/SONET传送平台所擅长的地方。
FC-BB-3-GFPT的传送机制也在不断地完善。下一代传送机制,即FC-BB-4-GFPT已经在酝酿之中了。FC-BB-4-GFPT将准备在FC-BB-3-GFPT的基础上进一步使用压缩技术来传送FC数据流,这样可以更加高效地利用带宽。
参考文献
1. McDATA White Paper,“Buffer-to-Buffer Credits and Their Effect on FICON Performance”,http://www.mcdata.com/downloads/mkt/wpaper/wp-buffer-to-buffer-941.pdf。
2. ANSI INCITS 414-2006, “Fibre Channel – Backbone - 3 (FC-BB-3)”, July 25,2006。