通过较高延迟网络执行快速光纤信道写操作的装置和方法转让专利

申请号 : CN200480033685.4

文献号 : CN1918925B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 马拉里·巴萨瓦埃赫萨梯什·阿姆巴梯玛格什·伊耶戈尔托马斯·埃兹尔迪内希·G·杜特西尔瓦诺·加伊瓦拉古尔·V·查卓瑟卡兰

申请人 : 思科技术公司

摘要 :

本发明公开了用于提高通过高延迟网络的SCSI写性能的装置和方法。该装置包括靠近第一SAN中的发起者的第一交换机,以及靠近第二SAN中的目标的第二交换机。在各个实施例中,这两个交换机是将它们各自的SAN连接到这两个SAN之间的较高延迟网络的边界交换机。此外,发起者可直接或间接连接到第一SAN中的第一交换机。目标也可直接或间接连接到第二SAN中的第二交换机。在操作期间,该方法包括第一交换机响应于从发起主机去往目标的SCSI写命令,基于缓冲器可用性向主机发送一个或多个传递就绪(Xfr_rdy)帧。然后,第一和第二交换机通过独立于目标的知识向彼此发送传递就绪命令来相互协同工作。第二交换机缓冲从主机接收的数据,直到目标指示其已就绪于接收数据。由于交换机独立于目标地向发起主机发送帧,因此交换机操作与SCSI写相关联的各个命令的光纤信道头部中的OX_ID和RX_ID字段。OX_ID和RX_ID字段被操作以使命令陷入,从而交换机可跟踪与SCSI写相关联的各个命令。

权利要求 :

1.一种用于通过较高延迟网络执行快速光纤信道写操作的装置,包括:交换机,该交换机包括:

端口,该端口被配置为接收具有头部并且定义了发起主机和目标的写命令帧,所述头部具有发起者交换标识符和接收者交换标识符,所述写命令帧还指定了要写入的数据量,其中所述发起者交换标识符和所述接收者交换标识符被用于跟踪所述发起主机和目标之间的交换;

捕获机构,该捕获机构被配置为在所述写命令帧指定了预定的主机ID和预定的目标ID的情况下捕获所述写命令帧;以及处理器,该处理器被配置为通过修改所述写命令帧的头部的发起者交换标识符来处理所捕获的写命令;

其中所述交换机还被配置为初始化传递就绪命令的接收者交换标识符,并在所述交换机确定它有足够的存储空间用于缓冲该数据量的情况下在从所述目标接收到传递就绪命令之前将具有经初始化的接收者交换标识符的传递就绪命令发送到所述发起主机。

2.如权利要求1所述的装置,其中所述交换机是耦合到第一SAN中的发起主机的发起交换机。

3.如权利要求2所述的装置,其中所述发起交换机的处理器还被配置为在向所述目标转发所述写命令之前修改所述写命令帧。

4.如权利要求1所述的装置,其中所述交换机还被配置为使用所述经初始化的接收者交换标识符作为用于访问会话ID表中与写命令会话有关的信息的句柄。

5.如权利要求2所述的装置,其中所述发起交换机还被配置为使用所述经初始化的接收者交换标识符用于与所述发起交换机和所述发起主机之间的写命令帧有关的所有通信。

6.如权利要求1所述的装置,其中所述交换机还被配置为在涉及所述交换机和所述目标之间的写操作的所有通信中使用经修改的发起者交换标识符。

7.如权利要求2所述的装置,其中所述发起交换机还被配置为在所述发起交换机接收到与来自所述目标的写命令帧相关联的传递就绪命令时,向所述目标传递额外的数据帧。

8.如权利要求1所述的装置,其中所述交换机还被配置为使用捕获的写命令的接收者交换标识符来指定所述写命令所需的缓冲器空间量,以及使用所述写命令帧来请求所需的缓冲器空间。

9.如权利要求8所述的装置,其中所述交换机还被配置为使用捕获的写命令的接收者交换标识符值来指定大于所述写命令所需的缓冲器空间量,并使用额外的缓冲器空间量以用于后续写命令,从而所述交换机不需要等待传递就绪命令来传递与所述后续写命令有关的数据。

10.如权利要求1所述的装置,其中所述交换机还被配置为在所述交换机不具有用于所述写命令的足够的缓冲器空间的情况下:(i)生成去往所述发起主机的忙状态信号;

(ii)将所述写命令置于未决等待列表上;或者

(iii)将所述写命令转发到所述目标。

11.如权利要求1所述的装置,还包括:

包括所述交换机的第一SAN;

包括第二交换机的第二SAN;以及

连接所述第一SAN和所述第二SAN的SAN间网络。

12.一种用于通过较高延迟网络执行快速光纤信道写操作的方法,包括:在交换机处捕获这样的写命令,该写命令指定了与主机相对应的主机ID和与目标相对应的目标ID,并且包括发起者交换标识符值和接收者交换标识符值,其中所述写命令还指定了要写入的数据量,并且所述发起者交换标识符值和所述接收者交换标识符值被用于跟踪所述主机和所述目标之间的交换;

配置所述交换机以通过修改所述写命令的发起者交换标识符值来处理所捕获的写命令;

配置所述交换机以初始化传递就绪命令的接收者交换标识符值;以及配置所述交换机以在所述交换机确定它有足够的存储空间用于缓冲该数据量的情况下在从所述目标接收到传递就绪命令之前将具有经初始化的接收者交换标识符值的传递就绪命令发送到所述主机。

13.如权利要求12所述的方法,还包括配置所述交换机,以将与响应于所述传递就绪命令接收到的写命令相关联的数据帧转发到所述目标。

14.如权利要求13所述的方法,还包括:

在第二SAN中包括的第二交换机处接收由所述交换机转发到所述目标的所述写命令,其中所述第二SAN经由SAN间网络连接到包括所述交换机的第一SAN;

配置所述第二交换机,以将所述写命令转发到所述目标;以及缓冲由所述交换机转发到所述目标的数据帧,直到从所述目标接收到传递就绪命令;

或者

如果已经从所述目标接收到所述传递就绪命令,则将所述数据帧从所述交换机转发到所述目标。

说明书 :

通过较高延迟网络执行快速光纤信道写操作的装置和方法

技术领域

[0001] 本发明一般地涉及网络通信,更具体而言涉及通过较高延迟网络执行快速光纤信道写操作的装置和方法。

背景技术

[0002] 随着因特网商务和网络中心计算的日益普遍,企业和其他组织变得越来越依赖于信息。为了处理所有数据,存储区域网或SAN已变得非常普遍。SAN一般包括若干个存储设备,多个主机以及若干个布置在将存储设备和主机连接在一起的交换结构中的交换机。 [0003] 大多数SAN依赖于用于在结构内通信的光纤信道协议。关于对光纤信道协议和光纤信道交换结构和服务的详细说明,请见Fibre ChannelFraming and Signaling Standard,Rev 1.90,International Committee forInformation Technology Standards(INCITS),April 9,2003,和Fibre ChannelSwitch Fabric-2,Rev.5.4,INCITS,June 26,2001,和Fibre Channel GenericServices-3,Rev.7.01,INCITS,November 28,2000,它们均通过引用而被包含于此,以用于各种目的。
[0004] 很多网络的基础设施常常包括多种类型的链路级传输。例如,跨国公司的通信网络可能分别在它们的纽约、硅谷和东京办公室处有本地SAN。但是,由于跨长距离维护SAN很昂贵,因此该组织可能依赖于另一SAN间链路(例如千兆比特以太网、SONET、ATM、波分复用等等)上的因特网协议(IP)来连接这些SAN。
[0005] 在典型的具有光纤信道交换机间链路(ISL)的SAN中,主机和存储设备(即目标)之间的访问时间一般很快。光纤信道链路的速度是这样的:通过多个交换机的性能或访问时间接近理想状态,即主机和目标设备附接到同一交换机上。换言之,即使需要跨过多个交换机来完成访问,但 是单个交换机的速度是如此之快,以至于延迟时间一般是非常小的。例如在写操作中,数据分组可没有延迟地通过SAN的交换机被传递,因为ISL之间的延迟很小。
[0006] 但是,在采用高延迟SAN间链路的情况下,在一个SAN中的主机与远程SAN中的存储设备之间的写操作的访问时间将恶化。延迟可能起因于链路速度、主机和目标之间的距离、SAN间链路上的拥塞,等等。例如,当IP被用来连接两个光纤信道SAN时,通过网络的IP部分的延迟与SAN内的访问相比一般较慢。
[0007] 利用SCSI写命令,主机将发出定义了要写的一定量的数据的写(Wr)命令。该命令通过网络从交换机到交换机,直到它到达目标。在回复中,目标响应以定义了目标可以接受的一定量数据的Xfer就绪命令。当主机接收到Xfer就绪命令时,它将要写的数据以最大为网络的最大传递单元(MTU)的单位的形式进行传递。在大多数光纤信道SAN中,MTU大约是每次传递2K字节。因此,如果要写的数据量是8K字节,则需要总共4次传递。当在此情形下,所有4次数据传递都被接收到时,目标就生成状态成功命令。如果由于某种原因,主机在经过预定时间段后没有接收到状态命令,则其假定写操作发生了问题。主机可以在以后发出另一写命令。
[0008] 完成SCSI写操作所需的时间在高延迟SAN间网络上可能会很长。由于高延迟SAN间网络的低速性能,在初始Wr命令被发出与Xfer就绪被主机接收之间可能会经过大量的时间。在此期间,主机是空闲的,并且必须等待直到向主机发出传递数据的数据传递命令之前。目标也是空闲的,直到它接收到来自发起主机的数据。换言之,发起主机是空闲的,直到它接收到Xfer就绪,目标在发出Xfer就绪之后也是空闲的,直到它接收到数据。 [0009] 因此需要提高通过较高延迟网络的SCSI写的性能的装置和方法。 发明内容
[0010] 为了达到上述和其他目的,根据本发明的目的,提供了提高通过高延 迟网络的SCSI写性能的装置和方法。该装置包括靠近第一SAN中的发起者的第一交换机,以及靠近第二SAN中的目标的第二交换机。在各个实施例中,这两个交换机是将它们各自的SAN连接到这两个SAN之间的较高延迟网络的边界交换机。此外,发起者可直接或间接连接到第一SAN中的第一交换机。目标也可直接或间接连接到第二SAN中的第二交换机。在操作期间,该方法包括第一交换机响应于从发起主机去往目标的SCSI写命令,基于缓冲器可用性向主机发送一个或多个传递就绪(Xfr_rdy)帧。然后,第一和第二交换机通过独立于目标的知识向彼此发送传递就绪命令来相互协同工作。第二交换机缓冲从主机接收的数据,直到目标指示其已就绪于接收数据。由于交换机独立于目标地向发起主机发送帧,因此交换机操作与SCSI写相关联的各个命令的光纤信道头部中的OX_ID和RX_ID字段。OX_ID和RX_ID字段被操作以使命令捕获,从而交换机可跟踪与SCSI写相关联的各个命令。 附图说明
[0011] 参考下面对当前优选实施例的描述和附图能够最好地理解本发明的特征。 [0012] 图1是连接第一SAN中的主机和第二SAN中的存储设备的高延迟网络的示意图。 [0013] 图2A-2D分别是SCSI命令、数据、响应和传递就绪帧。
[0014] 图3是光纤信道头部的示意图。
[0015] 图4是根据本发明一个实施例的示出了通过高延迟网络的SCSI快速写操作的时序图。
[0016] 图5是根据本发明另一实施例的示出了通过高延迟网络的SCSI快速写操作的时序图。
[0017] 图6是根据本发明的交换机的框图。
[0018] 在附图中,相似的标号指代相似的元件。

具体实施方式

[0019] 参考图1,示出了连接第一SAN 12中的主机H1和第二SAN 14中的目标存储设备T1的高延迟SAN间网络10的示意图。主机H1通过SAN12中的第一交换机SW1耦合到高延迟网络10。目标存储设备T1通过第二交换机SW2耦合到网络10。交换机SW1和SW2被视为“边界”交换机,因为它们分别位于网络10与SAN 12和14的接口处。根据各个实施例,主机H1和目标T1可分别直接连接到交换机SW1和SW2,或者通过任意数量的中间交换机间接连接。网络10例如可以使用SAN间链路(例如千兆比特以太网、SONET、ATM、波分复用等)上的因特网协议(IP)来连接SAN 12和14。而且,由于诸如链路速度、链路上的拥塞或距离之类的各种原因,网络10与SAN 12和14相比可能有高延迟。
[0020] 本发明涉及增加或减少执行通过高延迟网络(例如SAN间网络10)的发起主机H1和目标存储设备T1之间的写操作所需的时间的SCSI写操作。两个交换机SW1和SW2的智能端口(I端口)充当主机H1和存储设备T1之间的中介。写操作期间的数据传递的传递大小是在任何写操作被执行之前被协商的。最初,主机H1定义(即指定它想要写的数据量)写命令的传递大小。交换机SW1基于(i)写命令中指定的数据大小和(ii)其具有的缓冲器空间量来指示其就绪于接收的数据量。SW1上的I端口响应以指示数据传递的最大大小的传递就绪(Xfer)。交换机SW2上的I端口类似地接收定义了数据传递的最大大小的Xfer就绪。在上述实施例中,涉及的端口是发起者和目标附接到的智能端口(I端口)。在此情形下,I端口一般是有时也被称为Fx_Port的FC端口。在可替换实施例中,目标和发起主机不直接连接到正被讨论的交换机。在此情形下,I端口可以是IP端口或I端口。 [0021] 一般地,快速写操作在初始协商后以下列顺序执行:(i)当主机H1生成定义了目标T1的SCSI写命令时,交换机SW1的I端口使该命令捕获;(ii)交换机SW1将该命令转发到目标;(iii)交换机SW1还代表目标T1或作为目标T1的代理向主机H1发出传递就绪命令;(iv)主机H1响应于接收到的传递就绪命令,向目标T1发送由传递就绪量指示的量的数据,该数据可以基于网络的最大传递单元(MTU)被排序或分解成多个 帧;(v)交换机SW1的I端口接收数据帧,并将其转发到目标T1;(vi)前面的两步被重复,直到所有数据都被传递到目标;以及(vii)在所有数据都被传递之后,交换机SW1等待来自目标T1的成功或差错状态命令。在接收后,交换机SW1将状态命令转发回主机H1。如果目标返回差错命令,则I端口不尝试纠正该差错。应当注意,在可替换实施例中,上述序列可通过将上面定义的步骤(ii)和(iii)的顺序交换来执行。
[0022] 第二交换机SW2的I端口与交换机SW1的操作基本相同,只是它缓冲接收到的数据帧,直到接收到来自目标T1的传递就绪命令。具体而言,交换机SW2的I端口:(i)将从交换机SW1接收的SCSI写命令转发到目标;(ii)作为目标T1的代理向交换机SW1发出传递就绪命令;(iii)缓冲从交换机SW1接收的数据帧;(iv)当从目标T1接收到传递就绪命令时,将数据帧传递到目标T1;以及(v)在所有数据都被传递之后,交换机SW2等待来自目标T1的成功或差错状态命令。在接收后,交换机SW2将状态命令转发回交换机SW1。如果目标返回差错命令,则交换机SW2的I端口不尝试纠正该差错。
[0023] 为了标识FC设备,使用了光纤信道标识符(FCID)。FC主机和目标之间的事务被称为交换。在典型的光纤信道网络中,有很多主机和目标。每个主机可以发起很多读和/或写操作。为了使网络中的主机和目标能够跟踪彼此之间的各个事务,所有的SCSI命令、数据、响应和传递就绪帧的光纤信道头部中都有两个字段可用。第一字段被称为发起者交换标识符或OX_ID。第二字段被称为接收者交换标识符或RX_ID。主机依赖于OX_ID来维护其本地状态,目标依赖于RX_ID来维护其本地状态。在这两种情形下,OX_ID和RX_ID一般是16位宽。
[0024] OX_ID和RX_ID一般分别被事务的发起主机和目标用来跟踪这两个实体之间正在进行的事务。一般地,SAN中的交换机不跟踪这种事务。但是,利用本发明,交换机SW1和SW2充当发起主机和目标T1之间的中介。因此交换机SW1和SW2也使用OX_ID和RX_ID值来跟踪主机H1和目标T1之间的交换。
[0025] 参考图2A-2D,其分别示出了SCSI命令、数据、响应和传递就绪 帧。如图2A所示,SCSI命令帧包括FC头部字段20、SCSI头部字段22和FC-CRC字段24。如图2B所示,SCSI数据帧包括FC头部字段20和数据字段26。如图2C所示,SCSI响应帧包括FC头部字段20和响应帧28。如图2D所示,SCSI传递就绪帧包括FC头部字段20和传递就绪(Xfr-rdy)字段30。
[0026] 参考图3,其示出了光纤信道头部字段20的示意图。该帧包括OX_ID字段32和RX_ID字段34以及若干个其他字段(它们在图中被标记,但出于简明考虑未在此处描述)。如前所述,OX_ID字段32和RX_ID字段34都是16位宽,并且被用来标识发起主机和目标设备。由于上述SCSI帧中的每一个都包括具有OX_ID字段32和RX_ID字段34的头部字段
20,因此光纤信道网络中的交换机能够跟踪被标识的发起主机和目标设备之间的给定SCSI交换。
[0027] 参考图4,其示出了根据本发明通过SAN间网络10进行的SAN 12中的主机H1和目标T1之间的SCSI写操作的时序图。在图中,箭头方向示出了写操作期间的帧流。垂直列从上到下指示了时间的流逝。当在主机H1和目标T1之间执行SCSI写操作时,发生以下事件序列:
[0028] a.主机H1通过发出SCSI写命令(Wr:OX_ID=1 RX_ID=0OXffff,大小=10MB)发起快速写操作。该命令将发起交换标识符定义为1(OX_ID=1)。但是,接收交换标识符RX_ID“未初始化”,并且被设置为默认值“Oxffff”。该写命令还指定了要写的数据量,在本例中是10兆字节(MB)。
[0029] b.在接收后,交换机SW1初始化接收交换标识符RX_ID。在本例中,RX_ID被初始化为10。然后,交换机SW1确定它是否有足够的存储空间用于缓冲数据。如果有,则交换机SW1发送传递就绪命令(Xrdy:OX_ID=1,RX_ID=10,大小=10MG)到主机H1。与该SCSI写操作相关联的主机和交换机SW1之间以及交换机SW1和主机之间的所有后续命令或帧都定义OX_ID=1和RX_ID=10。如果交换机SW1没有足够的缓冲器空间,则SCSI忙状态被返回主机H1,模拟目标在目标 不具有用于新交换的资源时的行为。
[0030] c.发起交换机SW1使用OX_ID来跟踪事务。因此,交换机SW1改变发起主机H1提供的OX_ID。在本例中,交换机SW1将OX_ID值变为10。然后,交换机SW1将写命令转发到目标T1,并且RX_ID保持为未初始化(Wr:OX_ID=10,RX_ID=OXffff,大小=10MB)。此后涉及该写操作的在第一交换机SW1和目标之间的所有通信都包括OX_ID=10和RX_ID=Oxffff。发起交换机SW1使用OX_ID值作为进入在交换机SW1处维护的会话表36的句柄或指针。该表包括包含与被RX_ID句柄访问的会话有关的信息的条目。
[0031] d.当第二交换机SW2接收到写命令时,其初始化会话表38中的交换标识符条目,并且如果交换机SW2有足够的缓冲器空间的话,它立即将该命令转发到目标T1。如果它没有足够的空间,则SCSI忙状态被发送回发起主机H1。
[0032] e.如果目标T1就绪于接收数据,则它将传递就绪命令发送回交换机SW2。根据一个实施例,目标指定写事务的RX_ID值。
[0033] 在此情形下,目标将RX_ID值指定为50。因此,交换机SW2接收到的传递就绪命令表现为:(Xrdy:OX_ID=10,RX_ID=50,大小=10MB)。涉及该事务的在交换机SW2和目标T1之间的所有后续通信都包括值为10的OX_ID和值为50的RX_ID。交换机SW2还维护会话ID表38。在接收到传递就绪命令后,交换机SW2将RX_ID=50插入该表。交换机SW2使用修改后的OX_ID=10值作为进入会话ID表38的句柄或指针。交换机SW2使用OX_ID值作为会话表38中用于该会话的句柄或指针。该表包括包含与该会话有关的信息(例如目标RX_ID)的条目。
[0034] f.如果第二交换机SW2在来自目标T1的传递就绪之前接收到来自交换机SW1的数据帧(Wdata:OX_ID=10,RX_ID=Oxffff),则第二交换机SW2缓冲该数据。当接收到传递就绪 命令时,(一个或多个)数据帧随后被转发到目标T1。另一方面,如果数据帧在传递就绪命令之后到达,则数据帧被立即转发到目标T1。
[0035] g.当所有数据都已被传递时,目标T1生成状态命令(状态:OX_ID=10,RX_ID=50)。第二交换机SW2修改RX_ID=Oxffff,并将该状态命令转发到交换机SW1。交换机SW1又改变RX_ID=10,并将该状态命令发送到主机H1,从而完成快速写操作。应当注意,在目标T1提供的传递大小小于所请求的大小的情形下,交换机SW2上的I端口等待连续的传递就绪命令,直到满足所请求的大小。
[0036] 还应当注意,交换机SW1和SW2使在净荷中包含原始OX_ID和RX_ID的扩展链路服务或ELS帧(状态管理帧)“捕获”,因为交换机改变OX_ID和RX_ID的原始值。ELS帧被发起者H1和目标T1用来查询和管理状态事务,例如ABTS和REC ELS帧。
[0037] 参考图5,其示出了本发明的可替换实施例。利用该实施例,RX_ID、命令帧Wr和传递就绪帧Xry被交换机SW1和SW2用来针对用于事务的缓冲器可用性和分配彼此进行通信。例如在图5中,交换机SW1使用Wr命令(Wr:OX_ID=10,RXID=10MB,大小=10MB)中的RX_ID=10值来(i)指定写事务所需的缓冲器空间量;以及(ii)使用该命令帧来请求所需的缓冲器空间。交换机还使用传递就绪帧来许可用于事务的缓冲器空间。在本例中,交换机SW2生成在RX_ID值中编码了5MB的第一传递就绪命令(Xrdy:OX_ID=1,RX 5MB)。发出的传递就绪命令向交换机SW1指示5MB已被分配用于写事务。因此,交换机SW1发送多达5MB到交换机SW2。当第二个5MB缓冲器空间变为可用时,第二传递就绪命令被发出(Xrdy:OX_ID=1,RX_ID=10,大小=10MB)。注意,第二命令的RX_ID值被设置为10MB,指示用于该事务的累计或总分配缓冲器空间是10MB。第二传递就绪指示剩余的5MB缓冲器空间现在是可用的。
[0038] 在可替换实施例中,交换机SW2可以许可比SW1所请求的更多的缓 冲器空间。基于前一示例,SW2可以许可15MB而不是10MB。其余的未使用的缓冲器被用于来自主机H1的后续写命令。例如,考虑用于例如来自主机H1的1MB的第二写命令。利用该实施例,SW1将把1MB的Xfr_Rdy发送到主机H1,并经由SW2将该命令发送到目标,如第21段所述。当主机H1发送数据时,SW1现在立即开始向SW2传递数据,而不是在发送数据之前等待来自SW2的Xrdy_Rdy。它可以这样做是因为SW2先前已经通过最近的Xrdy_Rdy命令向SW1许可了额外的缓冲器。基本理念是数据可从SW1被传递到SW2以用于后续的(在第一次之后的)写命令,而不用等待与后续写有关的来自SW2的特定Xrdy_Rdy。
[0039] 在本发明的各个实施例中,在交换机SW1没有可用的缓冲器空间的情况下,可以发生若干个替换。在一个实施例中,主机H1接收忙状态信号并且主机必须重试写事务;在第二实施例中,命令被置于未决命令列表中。最后,交换机SW1仅在处理列表上的在先事务之后才对写作出响应。在另一实施例中,交换机SW1可简单地将写命令转发到目标。 [0040] 在另一实施例中,交换机SW1和SW2被配置为将传递就绪帧中的突发长度和相对偏移字段都设置为零(0)。这使得其他交换机能够区分该传递就绪命令是由目标交换机还是由目标本身生成的。当两个字段都被设置为零(0)时,发起交换机和主机意识到目标交换机发出了传递就绪,因为目标本身决不会针对给定事务将二者都设置为零。如果两个字段中仅有一个或二者都未被设置为零,则发起交换机SW1和主机意识到传递就绪是由目标生成的。
[0041] 在数据网络中,数据帧有时会丢失。在本发明的各个实施例中,可以使用若干个不同的缓冲器信用恢复方案之一。
[0042] 参考图6,其示出了根据本发明的交换机SW的框图。交换机40包括数据平面42和控制平面44。在数据平面42中,交换机包括连接在两组端口(包括I端口)48a和48b之间的交换逻辑46。交换逻辑46被配置为将在一个端口48a处接收的流量路由或内部交换到另一个端口48b,以及将在一个端口48b处接收的流量路由或内部交换到另一个端口48a。控制平面44包括处理器50,用于实现所有交换光纤信道功能和协议,例如在上 述通过引用而被包含于此的INCITS文件中所规定的那些功能和协议、OSPFv3、IS-IS和/或BGP4+路由协议或用于交换机内或交换机间通信的任何其他协议的光纤信道适应性版本。
在本发明的各个实施例中,处理器50可以在状态机、微控制器、硬件、固件、可编程逻辑或其组合中实现。如前所述,交换机40的I端口与发起主机协商可通过写命令(Wr)传递的数据量,而无需等待来自目标的传递就绪命令。该协商例如可发生在发起主机向目标存储设备发出PLOGI或PRLI时。在协商之后,发起和目标交换机SW1和SW2的I端口将硬件过滤器设置为使指定的虚拟SAN(VSAN)与发起主机FC_ID和目标设备FC_ID之间的任何SCSI写命令捕获。该捕获是基于由帧的VSAN、主机FC_ID、目标FC_ID、OX_ID和RX_ID所定义的元组的。只要接收到定义了特定元组的命令,交换机就使该命令捕获。这里使用的术语“捕获”意味着帧没有向目的地转发,而是被提供给交换机的处理器50以供进一步处理。 [0043] 当在发起交换机SW1处接收到指定了要捕获的元组的写命令时,交换机将其转发到处理器50。在回复中,处理器50负责将原始帧转发到原始目的地,并生成去往发起主机H1的传递就绪命令。传递就绪命令定义了由交换机SW1处的现有缓冲器空间确定的数据大小。处理器还定义了用于交换机SW1和发起主机H1之间的所有后续通信的在本地生成的RX_ID。当在交换机SW1的I端口处接收到来自主机H1的数据帧时,使该帧捕获。处理器
50又指示交换机SW1传送最大为经协商的大小的数据帧,而不必等待接收传递就绪命令。
任何剩余要求都被缓冲。类似地,在交换机SW2的I端口处,与该交换相关联的任何数据帧都被捕获并被缓冲。当从目标T1接收到传递就绪时,交换机SW2传递缓冲的数据。 [0044] 交换机SW1和SW2接收的涉及该交换的传递就绪帧也被捕获,并且被转发到处理器50。目标交换机SW2使用该传递就绪帧来开始向目标传递数据。另一方面,发起交换机SW1使用传递就绪命令来向目标传送更多的数据帧。在任何一种情况下,两个交换机SW1和SW2的I端口都修改RX_ID。
[0045] 根据一个实施例,光纤信道头部20中包括的光纤信道循环冗余校验 或CRC被重新计算,以保护重写操作。CRC保护FC净荷和FC头部在穿过光纤信道SAN的各个部分时不被破坏。利用本发明,RX_ID和OX_ID字段被修改,FC头部需要被保护,并且CRC被重新计算以保护重写不被破坏。
[0046] 虽然仅详细描述了本发明的几个实施例,但是应当理解本发明可用很多其他形式实现,而不脱离本发明的精神或范围。因此,本示例应被理解为示例性而非限制性的,本发明不应被限制为这里给出的细节,而是可以在所附权利要求的范围内被修改。