具体实施方式
为了使本发明实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
为便于说明,下面介绍本发明的一个具体实施例。如图1所示,为本发明实施例中的组网示意图,图中包括:FCoE启动器101、FCoE转发器102、FCoE目标器103、FC目标器104,其中,FCoE启动器101、FCoE转发器102、FCoE目标器103均位于无损以太网络或以太网络中,FC目标器104位于光纤网络中,FCoE启动器101用于发起对FCoE目标器103和/或FC目标器104的数据访问操作,FCoE目标器103和FC目标器104可以是用于存储数据的存储阵列,FCoE转发器102负责FCoE通信连接的建立,分配MAC地址和N_Port_ID,虚线和实线分别表示一个FCoE通信连接。
以下以上图的网络实体为例,先对实施例中常用的几个标准操作,做一个简要介绍:
FLOGI(Fabric Login,交换结构注册)操作--连接到FCoE转发器或FCoE目标器上的操作。例如:FCoE启动器101向FCoE目标器103发起FLOGI操作的具体流程如下:
FCoE启动器101向FCoE转发器102发送FLOGI报文,当FCoE转发器102接受注册时,为FCoE启动器101分配一个N_Port_ID(N端口标识),并通过LS_ACC(链路服务接受)报文回传给FCoE启动器101;当FCoE转发器102不接受注册时,向FCoE启动器101发送LS_RJT(链路服务拒绝)报文以指示注册失败。
PLOGI NS(Port Login Name Server,端口注册名字服务器)操作--根据WWN(World Wide Name,全球惟一名字),对名字服务器发出请求操作,以获取WWN对应的N_Port_ID(N端口标识)的操作。例如:FCoE启动器101向FCoE转发器102发起PLOGI NS操作的具体流程如下:
FCoE启动器101向FCoE转发器102发送PLOGI NS报文,该PLOGINS报文携带有FCoE启动器101将要访问的目标器的WWN,FCoE转发器102根据该WWN,在名字服务器上查询到FCoE启动器101将要访问的目标器的N_Port_ID,通过PLOGI NS响应报文将该N_Port_ID回传给FCoE启动器101。
PLOGI(Port Loqin,端口注册)操作--FCoE启动器对FCoE目标器的端口注册,通过该注册过程,FCoE启动器与FCoE目标器建立FCoE通信连接;或者,FCoE启动器对FC目标器的端口注册,通过该注册过程,FCoE启动器与FC目标器建立FCoE通信连接,例如:FCoE启动器101对FCoE目标器103发起PLOGI操作的具体流程如下:
FCoE启动器101向FCoE目标器103发送PLOGI报文,以注册到FCoE目标器103的端口,当FCoE目标器103接受注册时,向FCoE启动器101回传PLOGI ACC(端口注册接受)报文,以指示FCoE启动器101与FCoE目标器103的FCoE通信连接建立,当FCoE目标器103不接受注册时,向FCoE启动器101回传LS_RJT(链路服务拒绝)报文,以指示FCoE启动器101与FCoE目标器103的FCoE通信连接建立失败。
本实施例中,FCoE启动器101访问FCoE目标器103和/或FC目标器104时,需要首先建立FCoE连接,下面以FCoE启动器101为例,对建立FCoE通信连接的流程进行详细介绍:
本发明实施例1中提供了一种建立FCoE通信连接的方法,方法流程如图1所示,包括:
步骤201、根据待访问目标器的WWN全球唯一名字标识,获取用于访问所述待访问目标器的目的MAC地址;
其中,通过所述目的MAC地址FCoE启动器101可以对FCoE目标器103或FC目标器104进行访问;
步骤202、根据所述目的MAC地址,对所述待访问目标器进行登录操作,以建立FCoE以太网光纤通道通信连接。
其中,当访问FCoE目标器103时,以建立如图1中实线所示的FCoE通信连接,当访问FC目标器104时,以建立如图1中虚线所示的FCoE通信连接。
通过根据待访问目标器的WWN全球唯一名字标识,获取用于访问所述待访问目标器的目的MAC地址,根据所述目的MAC地址,对所述待访问目标器进行登录操作,以建立FCoE以太网光纤通道通信连接,实现了FCoE启动器与FCoE目标器可直接建立通信连接,减少了数据传输延时,减轻了原有FCoE转发器的处理负荷。
上述实施例中,步骤201之前还可以包括,获取网络中相关设备的地址信息(例如:FCoE目标器103的MAC地址和FCoE转发器102的)和获取本地MAC地址(即FCoE启动器101的MAC地址)的操作,如图3所示,为本发明实施例2中提供的一种建立FCoE通信连接的方法,包括:
步骤301、获取网络中相关设备的地址信息;
其中,本步骤具体可以包括:发送发现请求报文;接收第一发现通告报文,所述第一发现通告报文中携带发送端的MAC地址;记录发送端的所述MAC地址;或者,发送发现请求报文;接收第二发现通告报文,所述第二发现通告报文携带发送端的的MAC地址和发送端的WWN标识;生成发送端的所述MAC地址与发送端的所述WWN标识的映射关系。
当FCoE转发器101发送发现请求报文时,网络中的FCoE转发器102和FCoE目标器103均会对发现请求报文做出响应,但也可以是发送发现请求报文时,只有FCoE转发器102对发现请求报文做出响应。
通过步骤301收集了网络中FCoE目标器和FCoE转发器的MAC地址。
步骤302、获取本地的虚拟MAC地址;
其中,本步骤具体可以包括:根据步骤301中记录的MAC地址,生成MAC地址列表;根据所述MAC地址列表,选择一个MAC地址或者选择一个FCoE转发器的MAC地址;发送FLOGI报文,以获得本地的MAC地址,所述FLOGI报文的目的MAC地址为选择的所述MAC地址。其中,所述本地的MAC地址可以为FCoE启动器101本地的虚拟MAC地址,选择一个MAC地址可以采用随机方式或是基于位置指定的方式等,不具体限定。
通过步骤302,FCoE启动器101获得了分配的MAC地址,其中,这个MAC地址可能是由FCoE转发器102分配,也有可能是由FCoE目标器104分配。
步骤303、根据待访问目标器的WWN全球唯一名字标识,获取访问所述待访问目标器的目的MAC地址;
步骤304、根据所述目的MAC地址,对所述待访问目标器进行登录操作,以建立FCoE以太网光纤通道通信连接。
通过根据待访问目标器的WWN全球唯一名字标识,获取用于访问所述待访问目标器的目的MAC地址,根据所述目的MAC地址,对所述待访问目标器进行登录操作,以建立FCoE以太网光纤通道通信连接,实现了FCoE启动器与FCoE目标器可直接建立通信连接,减少了数据传输延时,减轻了原有FCoE转发器的处理负荷。
上述实施例中,步骤303中还可以包括:
当接收到来自FCoE转发器102和FCoE目标器101的第一发现通告报文时,根据选择的MAC地址,发送PLOGI NS端口注册名字服务器报文,以查询所述待访问目标器的N_Port_ID N端口标识,所述PLOGI NS报文携带所述待访问目标器的WWN标识;接收PLOGI NS应答报文,所述PLOGINS应答报文携带所述待访问目标器的N_Port_ID;获取所述待访问目标器的N_Port_ID;判断所述待访问目标器的N_Port_ID与记录的MAC地址是否匹配;如果不匹配,说明访问的是FC目标器104,则将所述FCoE转发器102的MAC地址作为所述目的MAC地址,如果匹配,说明访问的是FCoE目标器103,则将匹配的MAC地址作为所述目的MAC地址;
或者,
当接收到来自FCoE转发器102的第一发现通告报文时,根据选择的MAC地址,发送PLOGI NS报文,以查询所述待访问目标器的N_Port_ID,所述PLOGI NS报文携带所述待访问目标器的WWN标识;接收PLOG NS应答报文,所述PLOGI NS应答报文携带所述待访问目标器的N_Port_ID;获取所述待访问目标器的N_Port_ID;采用特定网络前缀和所述待访问目标器的所述N_Port_ID生成探测MAC地址;以所述探测MAC地址为目的MAC地址,发送探测报文,例如可以为FLOGI报文;如果在预设时间之内接收到响应报文,例如响应报文为FLOGI LS_ACC或FLOGI LS_RJT,说明访问的是FCoE目标器103,则将探测MAC地址作为所述目的MAC地址;如果在预设时间之内未接收到响应报文,说明访问的是FC目标器104,则将所述FCOE转发器102的MAC地址作为所述目的MAC地址;
或者,
当接收到来自FCoE转发器102的第一发现通告报文时,根据选择的MAC地址,发送PLOGI NS报文,以查询所述待访问目标器的N_Port_ID,所述PLOGI NS报文携带所述待访问目标器的WWN标识;接收PLOG NS应答报文,所述PLOGI NS应答报文携带所述待访问目标器的N_Port_ID和所述待访问目标器的类型标识,所述类型标识用于指示所述待访问目标器的类型,所述类型包括FCoE目标器类型和FC目标器类型;获取所述待访问目标器的N_Port_ID;如果所述类型标识指示为FCoE目标器类型,说明访问的是FCoE目标器103,则采用特定网络前缀和所述N_Port_ID生成所述目的MAC地址;如果所述类型标识指示为FC目标器类型,说明访问的是FC目标器104,则将所述FCoE转发器102的MAC地址作为所述目的MAC地址;
或者,
当接收到第二发现通告报文时,根据生成的所述映射关系,查询所述待访问目标器的WWN标识对应的MAC地址,如果查询出MAC地址,说明访问的是FCoE目标器103,则将查询出的MAC地址作为所述目的MAC地址;如果未查询出MAC地址,说明访问的是FC目标器104,则将所述FCoE转发器102的MAC地址作为所述目的MAC地址。
本实施例中,FCoE启动器101访问FCoE目标器103和/或FC目标器104时,需要首先建立FCoE连接,可能是通过FCoE转发器102建立与FC目标器104的FCoE通信连接,也有可能是直接与FCoE目标器102建立FCoE通信连接,其中,FCoE转发器102与现有技术中FCoE转发器的功能类似,在此不再赘述;对应FCoE目标器103的处理流程,以下做详细介绍:
如图4所示,为本发明实施例3中提供的一种建立FCoE通信连接的方法,假定本方法之前,FCoE目标器103已经通过向FCoE转发器102或者一个名字服务器Name server发起了FLOGI操作,并获得了虚拟MAC地址,该方法包括:
步骤401、接收来自FCoE启动器的登录操作请求;
在本实施例中,FCoE启动器101建立与FCoE目标器103建立FCoE通信连接,需要接收来自FCoE启动器101的登录操作请求,该登录操作请求属于现有技术中的FLOGI操作和PLOGI操作,再次不再赘述。
步骤402、根据所述登录操作请求,建立与所述FCoE启动器之间的FCoE通信连接。
FCoE目标器103通过接收来自FCoE启动器101的登录操作请求,根据所述登录操作请求,建立与所述FCoE启动器101之间的FCoE通信连接,实现了FCoE启动器101与FCoE目标器103可直接建立通信连接,减少了数据传输延时,减轻了原有FCoE转发器的处理负荷。
上述实施例中,步骤401之前还可以包括,通告设备地址信息(例如:FCoE目标器103向FCoE启动器101通告FCoE目标器103的MAC地址)和分配MAC地址(例如:FCoE目标器103为FCoE启动器101分配虚拟MAC地址)的操作,如图5所示,为本发明实施例4中提供的一种建立FCoE通信连接的方法,包括:
步骤501、通告设备地址信息,具体为:
接收来自所述FCoE启动器101的发现请求报文;向所述FCoE启动器101发送第一发现通告报文,以对所述发现请求报文做出响应,所述第一发现通告报文中携带本地的虚拟MAC地址,所述虚拟MAC地址由特定网络前缀和N_Port_ID组成;
或者,
接收来自所述FCoE启动器101的发现请求报文;向所述FCoE启动器101发送第二发现通告报文,以对所述发现请求报文做出响应,所述第二发现通告报文中携带本地的MAC地址和本地WWN标识,其中,携带的所述本地的MAC地址为虚拟MAC地址或实际MAC地址,所述虚拟MAC地址由特定网络前缀和N_Port_ID组成。
步骤502、分配MAC地址,具体为:
接收来自所述FCoE启动器101的FLOGI报文;根据所述FLOGI报文进行登录操作;当登录操作成功时,为所述FCoE启动器101分配MAC地址;发送FLOGI响应报文,所述FLOGI响应报文中携带分配的所述MAC地址。
步骤503、接收来自FCoE启动器的登录操作请求;
步骤504、根据所述登录操作请求,建立与所述FCoE启动器之间的FCoE通信连接。
其中,步骤503与步骤401类似,步骤504与步骤402类似,在此不再赘述。
如图6所示,为本发明实施例5中提供的一种建立FCoE通信连接的方法,此时,FCoE转发器102可以替换为一个名字服务器(Name server),假定本方法之前,FCoE目标器103已经通过向FCoE转发器102(或一个名字服务器)发起了FLOGI操作,并获得了虚拟MAC地址,此时,FCoE转发器102的方法流程包括:
步骤601、接收来自FCoE启动器的PLOGI NS报文,所述PLOGI NS报文携带待访问目标器的WWN标识;
步骤602、根据所述WWN标识,查询所述待访问目标器的N_Port_ID;
步骤603、发送PLOG NS应答报文,所述PLOGI NS应答报文中携带所述N_Port_ID,以使所述启动器获得所述待访问目标器的N_Port_ID。
FCoE目标器103通过接收来自FCoE启动器101的PLOGI NS报文,所述PLOGI NS报文携带待访问目标器的WWN标识,接收来自FCoE启动器的PLOGI NS报文,所述PLOGI NS报文携带待访问目标器的WWN标识,发送PLOG NS应答报文,所述PLOGI NS应答报文中携带所述N_Port_ID,以使所述启动器获得所述待访问目标器的N_Port_ID,使得FCoE启动器101获得了待访问目标器的N_Port_ID。
上述的PLOGI NS应答报文中还可以携带所述待访问目标器的类型标识,所述类型标识用于指示所述待访问目标器的类型,其中,所述类型包括FCoE目标器类型和FC目标器类型,这样通过PLOGI NS应答报文携带类型标识可以告知FCoE启动器101确定访问的目标器类型,直接对相应的目标器进行访问,减少了FCoE启动器101处理环节。
上述实施例中,步骤601之前还可以包括,通告设备地址信息(例如:FCoE目标器103向FCoE启动器101通告FCoE目标器103的MAC地址)和分配MAC地址(例如:FCoE目标器103为FCoE启动器101分配MAC地址)的操作,如图7所示,为本发明实施例6中提供的一种建立FCoE通信连接的方法,包括:
步骤701、通告设备地址信息;具体为:
接收来自所述FCoE启动器101的发现请求报文;向所述FCoE启动器101发送第一发现通告报文,以对所述发现请求报文做出响应,所述第一发现通告报文中携带本地的MAC地址;
或者,
接收来自所述FCoE启动器101的发现请求报文;向所述FCoE启动器101发送第二发现通告报文,以对所述发现请求报文做出响应,所述第二发现通告报文中携带本地的MAC地址和本地的WWN标识。
步骤702、分配MAC地址;具体为:
接收来自所述FCoE启动器101或FCoE目标器103的FLOGI报文;
根据所述FLOGI报文进行登录操作;
当登录操作成功时,为所述FCoE启动器101或所述FCoE目标器103分配MAC地址;
发送FLOGI响应报文,所述FLOGI响应报文中携带分配的所述MAC地址。
这里使得FCoE启动器101获得了分配的虚拟MAC地址;FCoE目标器103获得了分配的虚拟MAC地址
步骤703、接收来自FCoE启动器的PLOGI NS报文,所述PLOGI NS报文携带待访问目标器的WWN标识;
步骤704、根据所述WWN标识,查询所述待访问目标器的N_Port_ID;
步骤705、发送PLOG NS应答报文,所述PLOGI NS应答报文中携带所述N_Port_ID,以使所述启动器获得所述待访问目标器的N_Port_ID。
其中,步骤703与步骤601类似,步骤704与步骤602类似,在此不再赘述。
以上的实施例中,以FCoE启动器101、FCoE转发器102、FCoE目标器103均位于无损以太网络中来举例说明,实际上,FCoE启动器101、FCoE转发器102、FCoE目标器103可以位于其它网络中,例如:以太网等。
下面详细介绍本发明实施例的完整流程,如下:
图8为本发明实施例7提供的一种建立FCoE通信连接的方法的流程图,如图8所示,图中只表示出了,FCoE启动器81建立与FCoE目标器83的通信连接的过程,其中,建立FCoE通信连接的过程包括:
步骤801、发送发现请求报文;
FCoE目标器83启动时,发送目的MAC地址为All-FCF-MACs的Discovery Solicitation报文,以获得接收端的MAC地址,这里的接收端可能为网络中所有的FCoE转发器和FCoE目标器,其中,All-FCF-MACs为广播地址,例如:可以为0x’FFFFFF。
步骤802、接收发现通告报文;
FCoE转发器82接收到Discovery Solicitation报文之后,回送DiscoveryAdvertisement报文作为响应,Discovery Advertisement报文中携带FCoE转发器82的EMAC地址;若图中的FCoE转发器82为FCoE目标器82时,接收到Discovery Solicitation报文之后,回送Discovery Advertisement报文作为响应,DiScoVery Advertisement报文中携带FCoE目标器82的VMAC地址,其中,EMAC地址是实际MAC地址,VMAC地址是虚拟MAC地址,其高24比特位为特定网络前缀(例如,可以采用FC-MAP),低24比特位为N_Port_ID(N端口号)。
步骤803、识别FCoE转发器;
FCoE目标器83接收到多个Discovery Advertisement报文之后,从步骤802获得的MAC地址中,识别出高24比特位不为特定网络前缀的EMAC地址,该EMAC地址对应的就是FCoE转发器;
步骤804、执行FLOGI操作;
FCoE目标器83以步骤803获得的EMAC地址为目的MAC地址,向FCoE转发器82发送FLOG报文,FCoE目标器83通过FLOGI操作获得FCoE转发器82分配的虚拟MAC地址,该虚拟MAC地址由两部分组成,高24比特位为特定网络前缀,低24比特位为N_Port_ID。
通过以上步骤801至步骤804,FCoE目标器83获得了分配的虚拟MAC地址,如果FCoE目标器83在本操作之前已经获得了虚拟MAC地址,则不需要在执行步骤801至步骤804以获得虚拟MAC地址。
以下步骤为FCoE启动器81建立FCoE通信连接的过程:
步骤805、发送发现请求报文;
FCoE启动器81发送目的MAC地址为All-FCF-MACs的DiscoverySolicitation报文,已获得接收端的MAC地址。
步骤806、接收发现通告报文;
FCoE转发器82接收到Discovery Solicitation报文之后,回送DiscoveryAdvertisement报文作为响应,Discovery Advertisement报文中携带FCoE转发器82的EMAC地址;若图中的FCoE转发器82为FCoE目标器82时,接收到Discovery Solicitation报文之后,回送Discovery Advertisement报文作为响应,Discovery Advertisement报文中携带FCoE目标器82的VMAC地址,其中,EMAC地址是实际MAC地址,VMAC地址是虚拟MAC地址,其高24比特位为特定网络前缀。事实上,连接到网络中的所有的FCoE转发器和所有的FCoE目标器都会接收到Discovery Solicitation报文,并做出响应,回传Discovery AdVertisement报文。
步骤807、记录MAC地址;
记录步骤806中接收的MAC地址。
步骤808、选择一个MAC地址执行FLOGI操作;
在步骤806中接收的MAC地址中,选择一个MAC作为目的MAC地址以进行FLOG操作,这些MAC地址包括FCoE转发器82的EMAC地址,FCoE目标器82的VMAC地址,还有其它FCoE转发器和FCoE目标器的MAC地址。另外,选择MAC地址的方式不限于选择的方式,例如可以为随机选择方式等,或者,选择一个FCoE转发器的MAC地址。
步骤809、执行FLOGI操作;
向步骤808中选择的一个MAC进行FLOG操作,其中,当选择的MAC地址为FCoE转发器82的EMAC地址时,向FCoE转发器82发起FLOGI操作;当选择的MAC地址为FCoE目标器82的VMAC地址时,向FCoE目标器82发起FLOGI操作,事实上,连接到网络中的所有的FCoE转发器和所有的FCoE目标器都会可能被选择成为执行FLOGI操作的对象。
通过这一步骤FCoE启动器81可获得分配的虚拟MAC地址,该虚拟MAC地址由两部分组成,高24比特位为特定网络前缀,低24比特位为N_Port_ID。
另外,以上FCoE启动器81建立FCoE通信连接的过程中,步骤805至步骤809其实不是必须的,例如:当FCoE启动器81之前已经建立过一次FCoE通信连接,如果需要再次建立FCoE通信连接,步骤805至步骤809是可以省略的。
步骤810、获取用于访问待访问目标器的目的MAC地址;
FCoE启动器81向步骤808中选择的MAC地址对应的FCoE目标器或FCoE转发器发起PLOGI NS操作,图中只表示出了,选择FCoE目标器82或FCoE转发器82时,向FCoE目标器82或FCoE转发器82发起PLOGI NS操作,这样FCoE启动器81获取了待访问目标器的WWN对应的N_Port_ID;将获得的待访问目标器的N_Port_ID与步骤807中记录的所有MAC地址的后24位进行匹配,如果不匹配,说明访问的是FC目标器104,则将所述FCoE转发器102的MAC地址作为所述目的MAC地址,如果匹配,说明访问的是FCoE目标器103,则将匹配的MAC地址作为所述目的MAC地址。
步骤811、登录到待访问目标器;
当步骤810中确定待访问目标器类型为FC目标器时,注册登录过程完全遵循FC-BB-5协议,在此不再赘述;当步骤810中确定待访问目标器类型为FCoE目标器时,根据步骤810获得的目的MAC地址,向FCoE目标器发起注册登录,例如:如图中所示,FCoE启动器81向FCoE目标器83发起FLOGI操作和PLOGI操作,以登录到FCoE目标器83,其中,本步骤中FLOGI的操作可以选择是否给FCoE启动器81重新分配一个虚拟MAC地址,如果选择不重新分配一个虚拟MAC地址,可以继续使用步骤809中获得的虚拟MAC地址,如果选择重新分配一个虚拟MAC地址,可以重新获得一个虚拟MAC地址。
FCoE通信连接建立成功。
图9为本发明实施例8提供的一种建立FCoE通信连接的方法的流程图,如图9所示,该方法包括:
步骤901、发送发现请求报文;
步骤902、接收发现通告报文;
步骤903、选择一个FCoE转发器;
步骤904、执行FLOGI操作;
其中以上的步骤901至步骤904与上面的步骤801至步骤804类似,区别在于,步骤901至步骤910中的交互操作只涉及FCoE目标器93与FCoE转发器92或网络中的其它FCoE转发器的交互操作,而不涉及与其它FCoE目标器的交互操作,例如:步骤901发出Discovery Solicitation报文之后,只有FCoE转发器92和网络中的其它FCoE转发器回送DiscoveryAdvertisement报文作为响应;步骤903中只需要从Discovery Advertisement报文中获得的EMAC地址中,选择一个FCoE转发器,以该FCoE转发器发起FLOGI操作,以获得MAC虚拟地址。另外,如果FCoE目标器93在本操作之前已经获得了虚拟MAC地址,则不需要在执行步骤901至步骤904以获得虚拟MAC地址。
以上步骤901至步骤904,为了使FCoE目标器不涉及交互操作,可以采用多种方法,例如:设置FCoE目标器对发现请求报文不作出响应,或者,更改发现请求报文的目的MAC地址,使得FCoE目标器不接收该发现请求报文。
以下步骤为FCoE启动器91建立FCoE通信连接的过程:
步骤905、发送发现请求报文;
步骤906、接收发现通告报文;
步骤907、记录FCoE转发器的MAC地址;
步骤908、选择一个FCoE转发器执行FLOGI操作;
步骤909、执行FLOGI操作;
其中以上的步骤905至步骤909与上面的步骤805至步骤810类似,区别在于,步骤905至步骤910中的交互操作只涉及FCoE启动器91与FCoE转发器92或网络中的其它FCoE转发器的交换操作,而不涉及与FCoE目标器93或其它FCoE目标器的交互操作,例如:步骤905发出DiscoverySolicitation报文之后,只有FCoE转发器92和网络中的其它FCoE转发器回送Discovery AdVertisement报文作为响应;步骤906只需要从DiscoveryAdvertisement报文中获得的EMAC地址中,选择一个FCoE转发器对应的MAC地址,以该MAC地址为目的MAC地址,对FCoE转发器发起FLOGI操作。
另外,以上FCoE启动器91建立FCoE通信连接的过程中,步骤905至步骤909其实不是必须的,例如:当FCoE启动器91之前已经建立过一次FCoE通信连接,如果需要再次建立FCoE通信连接,步骤905至步骤909是可以省略的。
步骤910、获取用于访问待访问目标器的目的MAC;
其中,该步骤可以包括:
FCoE启动器91向步骤908中选择的MAC地址对应的FCoE转发器发起PLOGI NS操作,这样FCoE启动器91获取了待访问目标器的WWN对应的N_Port_ID;通过该N_Port_ID与特定网络前缀,生成探测MAC地址,通过生成的探测MAC地址,FCoE启动器91向待访问目标器发起探测操作,如果在预定时间之内,没有接收到探测响应报文,则说明待访问目标器的类型是FC目标器,则将所述FCOE转发器的MAC地址作为所述目的MAC地址;若在预定时间之内,接收到探测响应报文,则说明待访问目标器的类型是FCoE目标器,则将探测MAC地址作为所述目的MAC地址。例如:可以以探测MAC地址为目的MAC地址,进行FLOGI操作,如果在预定时间之内,没有接收到FLOGI LS_ACC报文或LS_RJT报文,则说明待访问目标器的类型是FC目标器,若在预定时间之内,接收到FLOGI LS_ACC报文,则说明待访问目标器的类型是FCoE目标器。
或者,
FCoE启动器91向步骤908中选择的MAC地址对应的FCoE转发器发起PLOGI NS操作,同时,发送给FCoE启动器91的PLOGI NS响应报文中同时携带待访问目标器的WWN对应的N_Port_ID和待访问目标器的类型标识,该类型标识用于指示该N_Port_ID是FC目标器的N_Port_ID,还是FCoE目标器的N_Port_ID;如果该类型标识指示为FC目标器类型,则说明待访问目标器的类型是FC目标器,则将所述FCOE转发器的MAC地址作为所述目的MAC地址;如果该类型标识指示为FCoE目标器类型,则说明待访问目标器的类型是FCoE目标器,则采用特定网络前缀和所述N_Port_ID生成所述目的MAC地址。
步骤911、登录到待访问目标器;
当步骤910中确定待访问目标器类型为FC目标器时,注册登录过程完全遵循FC-BB-5协议,在此不再赘述;当步骤910中确定待访问目标器类型为FCoE目标器时,根据步骤910获得的目的MAC地址,向FCoE目标器发起注册登录,例如:如图中所示,FCoE启动器91向FCoE目标器93发起FLOGI操作和PLOGI操作,以登录到FCoE目标器93,其中,本步骤中FLOGI的操作可以选择是否给FCoE启动器91重新分配一个虚拟MAC地址,如果选择不重新分配一个虚拟MAC地址,可以继续使用步骤909中获得的虚拟MAC地址,如果选择重新分配一个虚拟MAC地址,可以重新获得一个虚拟MAC地址。
FCoE通信连接建立成功;
图10为本发明实施例9提供的一种建立FCoE通信连接的方法的流程图,如图10所示,该方法包括:
步骤1001、发送发现请求报文;
步骤1002、接收发现通告报文;
步骤1003、识别FCoE转发器;
步骤1004、执行FLOGI操作;
其中以上的步骤1001至步骤1004与上面的步骤801至步骤804一样,区别在于,步骤1002中,FCoE目标器和FCoE转发器返回的DiscoveryAdvertisement报文中,除了携带MAC地址而外,还可以携带FCoE目标器和FCoE转发器对应的WWN标识。
另外,如果FCoE目标器103在本操作之前已经获得了虚拟MAC地址,则不需要在执行步骤1001至步骤1004以获得虚拟MAC地址。
以下步骤为FCoE启动器101建立FCoE通信连接的过程:
步骤1005、发送发现请求报文;
步骤1006、接收发现通告报文;
步骤1007、记录MAC地址和WWN标识,并生成映射表;
步骤1008、选择一个MAC地址执行FLOGI操作;
步骤1009、执行FLOGI操作;
其中以上的步骤1005至步骤1009与上面的步骤805至步骤809类似,区别在于,步骤1006中,FCoE目标器和FCoE转发器返回的DiscoveryAdvertisement报文中,除了携带MAC地址而外,还需要携带FCoE目标器和FCoE转发器对应的WWN标识,其中,携带的MAC地址为虚拟MAC地址或实际MAC地址,所述虚拟MAC地址由特定网络前缀和N_Port_ID组成;步骤1007中,除了记录MAC地址之外,还要记录WWN标识,并建立MAC地址与WWN标识的映射表,例如:FCoE目标器102返回一个DiscoveryAdvertisement报文,该报文中携带FCoE目标器102的MAC地址(VMAC1)和WWN(WWN1)标识,则FCoE启动器101需要建立VMAC1--WWN1这样一个映射表项,建立了多个表项之后,就是一个MAC地址--WWN标识的映射表。
以上FCoE启动器101建立FCoE通信连接的过程中,步骤1005至步骤1009其实不是必须的,例如:当FCoE启动器101之前已经建立过一次FCoE通信连接,如果需要再次建立FCoE通信连接,步骤1005至步骤1009是可以省略的。
以上步骤FCoE启动器101获得了MAC地址。
步骤1010、获取用于访问待访问目标器的目的MAC;
FCoE启动器101根据待访问目标器的WWN标识,在步骤1007中生成的映射表中查询是否有对应该WWN标识的表项,如果存在该表项,则说明待访问目标器的类型是FCoE目标器,则将该表项对应的MAC地址作为所述目的MAC地址,否则,说明待访问目标器的类型是FC目标器,则将所述FCoE转发器的MAC地址作为所述目的MAC地址。
步骤1011、登录到待访问目标器;
当步骤1010中确定待访问目标器类型为FC目标器时,注册登录过程完全遵循FC-BB-5协议,在此不再赘述;当步骤1010中确定待访问目标器类型为FCoE目标器时,根据步骤1010获得的目的MAC地址,向FCoE目标器发起注册登录,例如:如图中所示,FCoE启动器101向FCoE目标器103发起FLOGI操作和PLOGI操作,以登录到FCoE目标器103,其中,本步骤中FLOGI的操作可以选择是否给FCoE启动器101重新分配一个虚拟MAC地址,如果选择不重新分配一个虚拟MAC地址,可以继续使用步骤1009中获得的虚拟MAC地址,如果选择重新分配一个虚拟MAC地址,可以重新获得一个虚拟MAC地址。
FCoE通信连接建立成功。
本发明实施例中还提供了一种建立FCoE通信连接的装置,如图11所示,该装置包括:
地址获取模块1110,用于根据待访问目标器的WWN全球唯一名字标识,获取用于访问所述待访问目标器的目的MAC地址;
连接建立模块1120,用于根据所述地址获取模块1110获取的所述目的MAC地址,对所述待访问目标器进行登录操作,以建立FCoE以太网光纤通道通信连接。
该装置还可以包括:
设备地址信息获取模块1130,用于发送发现请求报文;接收第一发现通告报文,所述第一发现通告报文中携带发送端的MAC地址;记录发送端的所述MAC地址;或者,用于发送发现请求报文;接收第二发现通告报文,所述第二发现通告报文携带发送端的的MAC地址和发送端的WWN标识;生成发送端的所述MAC地址与发送端的所述WWN标识的映射关系。
该装置还可以包括:
网络地址获取模块1140,用于根据记录的发送端的所述MAC地址,生成MAC地址列表;根据所述MAC地址列表,选择一个MAC地址或者选择一个FCoE转发器的MAC地址;发送FLOGI报文,以获得本地的MAC地址,所述FLOGI报文的目的MAC地址为选择的所述MAC地址。
其中,地址获取模块1110包括:
第一端口标识获取单元1111,用于当接收到来自FCoE转发器和FCoE目标器的第一发现通告报文时,根据所述网络地址获取模块1140选择的MAC地址,发送PLOGI NS端口注册名字服务器报文,以查询所述待访问目标器的N_Port_ID N端口标识,所述PLOGI NS报文携带所述待访问目标器的WWN标识;接收PLOGI NS应答报文,所述PLOGI NS应答报文携带所述待访问目标器的N_Port_ID;获取所述待访问目标器的N_Port_ID;
第一MAC地址获取单元1112,用于判断所述第一端口标识获取单元1111获取的所述待访问目标器的N_Port_ID与所述设备地址信息获取模块1130记录的MAC地址是否匹配;如果不匹配,则将所述FCoE转发器的MAC地址作为所述目的MAC地址,如果匹配,则将匹配的MAC地址作为所述目的MAC地址;
或者,
第二端口标识获取单元1113,用于当接收到来自FCoE转发器的第一发现通告报文时,根据所述网络地址获取模块1140选择的MAC地址,发送PLOGI NS报文,以查询所述待访问目标器的N_Port_ID,所述PLOGI NS报文携带所述待访问目标器的WWN标识;接收PLOG NS应答报文,所述PLOGI NS应答报文携带所述待访问目标器的N_Port_ID;获取所述待访问目标器的N_Port_ID;
第二MAC地址获取单元1114,用于采用特定网络前缀和所述第二端口标识获取单元1113获取的待访问目标器的所述N_Port_ID生成探测MAC地址;以所述探测MAC地址为目的MAC地址,发送探测报文;如果在预设时间之内接收到响应报文,则将探测MAC地址作为所述目的MAC地址;如果在预设时间之内未接收到响应报文,则将所述FCoE转发器的MAC地址作为所述目的MAC地址;
或者,
第三端口标识获取单元1115,用于当接收到来自FCoE转发器的第一发现通告报文时,根据所述网络地址获取模块1140选择的MAC地址,发送PLOGI NS报文,以查询所述待访问目标器的N_Port_ID,所述PLOGI NS报文携带所述待访问目标器的WWN标识;接收PLOG NS应答报文,所述PLOGI NS应答报文携带所述待访问目标器的N_Port_ID和所述待访问目标器的类型标识,所述类型标识用于指示所述待访问目标器的类型,所述类型包括FCoE目标器类型和FC目标器类型;获取所述待访问目标器的N_Port_ID;
第三MAC地址获取单元1116,用于当所述第三端口标识获取单元1115获取的所述类型标识指示为FCoE目标器类型,则采用特定网络前缀和所述第三端口标识获取单元1115获取的待访问目标器的所述N_Port_ID生成所述目的MAC地址;如果所述类型标识指示为FC目标器类型,则将所述FCoE转发器的MAC地址作为所述目的MAC地址。
或者,
第四MAC地址获取单元1117,用于当接收到第二发现通告报文时,根据所述设备地址信息获取模块1130生成的所述映射关系,查询所述待访问目标器的WWN标识对应的MAC地址,如果查询出MAC地址,则将查询出的MAC地址作为所述目的MAC地址;如果未查询出MAC地址,则将所述FCoE转发器的MAC地址作为所述目的MAC地址。
本发明实施例中还提供了另一种建立FCoE通信连接的装置,如图12所示,该装置包括:
请求接收模块1210,用于接收来自FCoE启动器的登录操作请求;
请求处理模块1220,用于根据所述请求接收模块1210接收的所述登录操作请求,建立与所述FCoE启动器之间的FCoE通信连接。
所述装置还可以包括:
第一设备地址信息通告模块1230,用于接收来自所述FCoE启动器的发现请求报文;向所述FCoE启动器发送第一发现通告报文,以对所述发现请求报文做出响应,所述第一发现通告报文中携带本地的虚拟MAC地址,所述虚拟MAC地址由特定网络前缀和N_Port_ID组成;或者,向所述FCoE启动器发送第二发现通告报文,以对所述发现请求报文做出响应,所述第二发现通告报文中携带本地的MAC地址和本地WWN标识,其中,携带的所述本地的MAC地址为虚拟MAC地址或实际MAC地址,所述虚拟MAC地址由特定网络前缀和N_Port_ID组成。
该装置还可以包括:
第一网络地址分配模块1240,用于接收来自所述FCoE启动器的FLOGI报文;根据所述FLOGI报文进行登录操作;当登录操作成功时,为所述FCoE启动器分配MAC地址;发送FLOGI响应报文,所述FLOGI响应报文中携带分配的所述MAC地址。
本发明实施例中还提供了一种名字服务器,如图13所示,该名字服务器包括:
接收模块1310,用于接收来自FCoE启动器的PLOGI NS报文,所述PLOGI NS报文携带待访问目标器的WWN标识;
端口号查询模块1320,用于根据所述接收模块1310接收的所述WWN标识,查询所述待访问目标器的N_Port_ID;
发送模块1330,用于发送第一PLOG NS应答报文,所述第一PLOGI NS应答报文中携带所述端口号查询模块1320查询出的所述N_Port_ID,以使所述FCoE启动器获得所述待访问目标器的N_Port_ID。
上述的发送模块1330,还可以用于发送第二PLOG NS应答报文,所述第二PLOGI NS应答报文中携带所述N_Port_ID和所述待访问目标器的类型标识,所述类型标识用于指示所述待访问目标器的类型,其中,所述类型包括FCoE目标器类型和FC目标器类型。
该名字服务器还可以包括:
第二设备地址信息通告模块1340,用于接收来自所述FCoE启动器的发现请求报文;向所述FCoE启动器发送第一发现通告报文,以对所述发现请求报文做出响应,所述第一发现通告报文中携带本地的MAC地址;或者,用于向所述FCoE启动器发送第二发现通告报文,以对所述发现请求报文做出响应,所述第二发现通告报文中携带本地的MAC地址和本地的WWN标识。
该名字服务器还可以包括:
第二网络地址分配模块1350,用于接收来自所述FCoE启动器或FCoE目标器的FLOGI报文;根据所述FLOGI报文进行登录操作;当登录操作成功时,为所述FCoE启动器或所述FCoE目标器的分配MAC地址;发送FLOGI响应报文,所述FLOGI响应报文中携带分配的所述MAC地址。
本发明实施例中还提供了一种建立FCoE通信连接的系统,该系统包括:
至少一个如上述实施例中提供的一种建立FCoE通信连接的装置;
至少一个如上述实施例中提供的一种建立FCoE通信连接的装置或者,至少一个如上述实施例中提供的一种名字服务器。
本发明实施例1中,步骤201还可以包括:
FCoE启动器101向名字服务器发送名字服务器查询报文,以查询所述待访问目标器的N_Port_ID N端口标识,所述名字服务器查询报文携带所述待访问目标器的WWN标识;接收名字服务器查询应答报文,该名字服务器查询应答报文是名字服务器查询报文的应答报文;
当名字服务器查询应答报文不携带N_Port_ID时,说明访问的是FC目标器104,则将FCoE转发器102的MAC地址作为所述待访问目标器的目的MAC地址,通过FCoE转发器102实现对FC目标器104的访问;当名字服务器查询应答报文携带N_Port_ID和待访问目标器的目的MAC地址时,通过该目的MAC地址实现对FCoE目标器103的访问,待访问目标器的目的MAC地址包括:采用特定网络前缀(例如为FC-MAP(Fiber ChanneI MappedAddress Prefix))和所述N_Port_ID生成所述目的MAC地址,或者,实际MAC地址。实际使用中,可以使用PLOGI NS端口注册名字服务器报文代替名字服务器查询报文,也可以使用自定义的报文代替名字服务器查询报文;在这里,名字服务器中保存有FCoE目标器的N_Port_ID与WWN对应关系,而没有,FC目标器的N_Port_ID与WWN对应关系,因此,如果名字服务器返回的查询应答报文不携带N_Port_ID信息时,说明没有查询到对应的FCoE目标器,可判断待访问目标应该为FC目标器。
或者,
FCoE启动器101发送目的MAC地址为All-FCF-MACs或ALL_VN2VN_MACs的发现请求报文,该报文携带待访问目标器的WWN,对于目的地址为All-FCF-MACs,接收端可能为网络中所有的FCoE节点(FCoE启动器和FCoE目标器)和FCoE转发器,对于目的地址为ALL_VN2VN_MACs,接收端可能为网络中所有的FCoE节点,其中,All-FCF-MACs为广播地址,例如:可以为0x’FFFFFF,ALL_VN2VN_MACs为针对FCoE节点的组播地址;如果FCoE启动器没有接收到对应发现请求报文的发现请求应答报文,说明访问的是FC目标器104,则将FCoE转发器102的MAC地址作为所述目的MAC地址,通过FCoE转发器102实现对FC目标器104的访问;如果接收到发现请求应答报文,该发现请求应答报文中携带待访问目标器的N_Port_ID和待访问目标器的目的MAC地址,通过获取该目的MAC地址实现对FCoE目标器103的访问,实际使用中,可以使用PLOGI NS端口注册名字服务器报文代替名字服务器查询报文,也可以使用自定义的报文代替名字服务器查询报文,在这里,接收到发现请求报文的FCoE目标器,都会查找自身的WWN是否与待访问目标器的WWN相同,如果相同,则会回传一个发现请求应答报文,告知FCoE启动器自身的N_Port_ID。
对应的,FCoE启动器101没有获得自身的N_Port_ID时,步骤201之前还可以包括,获取FCoE节点MAC地址的操作,如图14所示,为本发明实施例10中提供的一种建立FCoE通信连接的方法,包括:
步骤1401、获取本地的虚拟MAC地址;
其中,本步骤具体可以包括:FCoE启动器101执行FLOGI操作,获得了名字服务器分配的N_Port_ID,所述虚拟MAC地址由特定网络前缀和N_Port_ID组成。
通过步骤1401,名字服务器为FCoE节点分配的虚拟MAC地址,保证了FCoE节点能够快速获取虚拟MAC地址,提高了地址分配效率。
步骤1402、根据待访问目标器的WWN全球唯一名字标识,获取访问所述待访问目标器的目的MAC地址;
步骤1403、根据所述目的MAC地址,对所述待访问目标器进行登录操作,以建立FCoE以太网光纤通道通信连接。
通过根据待访问目标器的WWN全球唯一名字标识,获取用于访问所述待访问目标器的目的MAC地址,根据所述目的MAC地址,对所述待访问目标器进行登录操作,以建立FCoE以太网光纤通道通信连接,实现了FCoE启动器与FCoE目标器可直接建立通信连接,减少了数据传输延时,减轻了原有FCoE转发器的处理负荷。
上述实施例中,步骤1403中具体可以包括:
当步骤1402中确定待访问目标器类型为FC目标器时,注册登录过程完全遵循FC-BB-5协议,在此不再赘述;当步骤1402中确定待访问目标器类型为FCoE目标器时,根据步骤1402获得的目的MAC地址,向FCoE目标器发起注册登录,例如:如图中所示,FCoE启动器101向FCoE目标器103发起FLOGI操作和PLOGI操作,以登录到FCoE目标器103,其中,本步骤中FLOGI的操作可以选择是否给FCoE启动器101重新分配一个虚拟MAC地址,如果选择不重新分配一个虚拟MAC地址,可以继续使用步骤1401中获得的虚拟MAC地址,如果选择重新分配一个虚拟MAC地址,可以重新获得一个虚拟MAC地址。
FCoE通信连接建立成功。
上述实施例中,步骤1401之前,需要获取名字服务器的MAC地址和FCoE转发器的MAC地址,可以包括:
FCoE节点预先配置名字服务器的MAC地址和FCoE转发器的MAC地址;
或者,
对于名字服务器和FCoE转发器采用不同的发现请求,通过接收应答报文,获取名字服务器的MAC地址和FCoE转发器的MAC地址,例如:针对FCoE转发器,发送组播发现请求,组播目的MAC地址为All-FCF-MACs,接收来自网络中的FCoE转发器发送的应答报文,该应答报文中携带FCoE转发器的MAC地址;针对名字服务器,发送组播发现请求,组播目的MAC地址为ALL-NS-MACs,接收来自网络中的名字服务器发送的应答报文,该应答报文中携带名字服务器的MAC地址。
图15为本发明实施例中提供的一种建立FCoE通信连接的装置,该装置包括:地址获取模块1510和连接建立模块1520。其中,
地址获取模块1510,可以包括:
第五端口标识获取单元1511,用于发送名字服务器查询报文,所述名字服务器查询报文携带所述待访问目标器的WWN标识;接收名字服务器查询应答报文,所述名字服务器查询应答报文中携带待访问目标器的N_Port_ID;
第五MAC地址获取单元1512,用于获取所述第四端口标识获取单元接收的名字服务器查询应答报文中携带的待访问目标器的N_Port_ID,由特定网络前缀和所述N_Port_ID生成所述目的MAC地址;
或者,
第六端口标识获取单元1513,用于发送发现请求报文,所述发现请求报文携带待访问目标器的WWN;接收发现请求应答报文,所述发现请求应答报文中携带待访问目标器的N_Port_ID;
第六MAC地址获取单元1514,用于获取所述第五端口标识获取单元接收的发现请求应答报文中携带的待访问目标器的N_Port_ID,由特定网络前缀和所述N_Port_ID生成所述目的MAC地址。
连接建立模块1520,用于根据所述地址获取模块1510获取的所述目的MAC地址,对所述待访问目标器进行登录操作,以建立FCoE以太网光纤通道通信连接;
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,上述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种数据访问方法及通信系统以及相关装置进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,因此,本说明书内容不应理解为对本发明的限制。