具体实施方式
下面结合附图和具体的实施方式对本发明进行说明。
请参阅图1,图1是本申请FCoE系统一实施方式的结构示意图。本实施方式中,FCoE系统包括服务器110、第一交换机120、存储设备130,服务器110与存储设备130间的请求和数据通过以太网连接进行传输,形成FCoE网络。具体地,服务器110可通过第一交换机120与存储设备130进行双向通信,即服务器110和存储设备130均可作为本FCoE网络中的发送设备和接收设备,例如,当服务器110向存储设备130发送消息时,服务器110作为发送设备,存储设备130作为接收设备,当存储设备130向服务器发送消息时,存储设备130作为发送设备,服务器110作为接收设备。
下面,以服务器110向存储设备130发送消息为例对本申请FCoE系统进行说明。服务器110通过第一交换机120向存储设备130发送第二消息(例如,光纤通道请求或者数据,如FCP_CMND消息),即服务器110作为发送设备,存储设备130作为接收设备,第一交换机120则实现服务器110和存储设备130间的消息交换,并且,第一交换机120监测发送设备发送的消息是否发生丢包。在第二消息传输过程中,FCoE网络中由于网络信号不稳定或物理线路出现故障等原因(例如第一交换机120与存储设备130间的物理链路发生短暂断开),第二消息的部分数据帧出现丢失,即FCoE网络中发生丢包,第一交换机120监测到第二消息出现丢包,则按照与发送设备间的协议生成第一消息即丢包(英文:Packet Loss,简称PLOSS)消息,以通知作为发送设备的服务器110发生丢包。具体地,第一消息中包括能够识别所述第二消息的信息,例如第二消息的消息头,以及发送设备的地址标识(英文:Identity,简称ID)等,以用于通知所述第二消息发生丢失。
服务器110接收到第一消息时,即确定发送的第二消息出现丢包现象,服务器110则立刻向存储设备130重新发送第二消息。
进一步地,服务器110在重新发送第二消息之前,先对传输路径进行重新选择。为避免第一交换机120与存储设备130间的链路仍存在问题的情况,当在接收第一消息时,服务器110先检测FCoE网络中是否还能够通过其他交换机与存储设备130进行通信。本实施方式中,FCoE系统还可选地包括第二交换机140,服务器110还可以通过第二交换机140与存储设备130进行双向通信。故此时,服务器110通过第二交换机140向存储设备130重新发送第二消息。当然,在其他实施方式中,FCoE系统中除第一交换机外,还可包括多个交换机可实现服务器与存储设备间通信,此时,服务器则先按照所述多个交换机的当前通信状态确定选择哪一个作为第二交换机,以用于重发第二消息,在此需要说明的是,本申请对传输路径的具体选择方法不作任何限定。
更进一步地,服务器在接收到第一消息和确定重传路径后,先向存储设备130发送第三消息如REC消息,以询问存储设备130所接收到的第二消息的数据是否部分丢失,并根据存储设备130的应答情况决定是否重发第二消息。本实施方式中,服务器110在检测到还能够通过第二交换机140与存储设备130通信时,通过第二交换机140向存储设备130发送第三消息。
存储设备130接收到第三消息后,如果判断当前接收到的第二消息的数据有部分丢失,则通过第二交换机140向服务器110发送第四消息(如LS_RJT消息),以告知服务器110重新发送所述第二消息,并且自身也做好重新接收的准备;如果判断当前接收到的第二消息的数据没有丢失,则通过第二交换机140向服务器110发送第五消息(如LS_ACC消息),以告知服务器110无需重新发送。
服务器110在预设时间内接收到第四消息,或者没有接收到存储设备130对第三消息的应答时,重新发送第二消息,以恢复FCoE网络的正常通信,在接收到第五消息时,则不执行重新发送第二消息。
当然,请参阅图2,图2是本申请FCoE系统另一实施方式的结构示意图。在另一FCoE系统实施方式中,服务器110在进行路径选择时,检测到服务器110只能通过第一交换机120与存储设备130进行通信,则仍通过第一交换机120向存储设备130重发第二消息。例如,服务器110在接收到第一交换机120发送的第一消息后,向第一交换机120发送第三消息,第一交换机120接收到第三消息后,先检测之前发生丢包的链路a是否已恢复正常,其中,链路a即为服务器110前次通过第一交换机120向存储设备130发送第二消息的链路。如果检测到链路a已恢复正常,即链路a中第一交换机120到存储设备130间能够正常通信,则第一交换机120通过链路a,将第三消息发送给存储设备130。如果检测到链路a还没恢复正常,则第一交换机120查找出第一交换机120与存储设备130间除链路a外的其他路径,如路径b和路径c,第一交换机120按照最优路径算法,如网络最短路径优先(英文:Fabric Shortest PathFirst,缩写:FSPF)算法,确定第一交换机120与存储设备130间除链路a外的最优路径为路径b,则按照路径b将第三消息发送给存储设备130,以询问存储设备130所接收到的第二消息的数据是否部分丢失。同理于上一实施方式,存储设备130对第三消息作出应答,并把应答消息通过路径b发送给第一交换机120,第一交换机120将所述应答消息反馈回服务器110。服务器110根据应答消息确定存储设备所接收到的第二消息的数据部分丢失时,则将第二消息发送给第一交换机120,第一交换机120将第二消息按照路径b发送给存储设备130,实现消息的重传。
需要说明的是,上述实施方式为以服务器作为发送设备,存储设备作为接收设备,但在其他实施方式中,也可以将存储设备作为发送设备,服务器作为接收设备,或者采用除服务器、存储设备之外的其他设备作为发送或接收设备,其中,FCoE网络中发生丢包时的处理方式同理与上面实施方式,在此不作赘述。
此外,上述实施方式中,FCoE系统中包括一个服务器和存储设备,但在其他方式中,FCoE系统可包括多个服务器和/或多个存储设备,在此不对FCoE系统中服务器、存储设备及交换机的数量作具体限定。
上述实施方式中,由交换机监测FCoE网络是否发生丢包,所述交换机在监测到发生丢包时,主动向发送设备发送第一消息,以告知发送设备发生丢包,发送设备在接收到所述第一消息后,无需等待预设时间,即可实时获知当前发生丢包,进而重发消息,加快了发送设备与接收设备间的通信恢复。
请参阅图3,图3是本申请FCoE网络丢包后快速恢复的方法一实施方式的流程图。本实施方式中,FCoE网络由发送设备、第一交换机和接收设备组成,其中,所述发送设备和接收设备可以为服务器或存储设备,发送设备与接收设备通过第一交换机进行通信。所述方法包括以下步骤:
步骤S301:发送设备接收第一交换机发送的第一消息,其中,所述第一消息为所述第一交换机监测到所述发送设备通过所述第一交换机向接收设备发送的第二消息发生丢包时生成的,所述第一消息包括能够识别所述第二消息的信息。
在FCoE网络中,发送设备通过第一交换机向接收设备发送第二消息(如光纤通道请求或者数据),位于该第二消息的传送通道上的第一交换机还用于监测发送设备发送的第二消息是否发生丢包。在第二消息传输过程中,FCoE网络中的网络信号不稳定或物理线路出现故障等原因(例如第一交换机与接收设备间的物理链路发生短暂断开),第二消息的部分数据帧出现丢失,即FCoE网络中发生丢包,第一交换机监测到第二消息出现丢包,则按照与发送设备间的协议生成第一消息即PLOSS消息,以通知发送设备发生丢包。具体地,第一消息中包括能够识别所述第二消息的信息,例如第二消息的消息头,以及发送设备的地址ID等,以用于通知发送设备所述第二消息发生丢失。发送设备如果接收到第一交换机发送的第一消息,则执行步骤S302,如果没有接收到所述第一消息,按照现有FCoE通信协议与接收设备通信。
步骤S302:所述发送设备根据所述第一消息,确定所述第二消息发生丢失,并重新向所述接收设备发送所述第二消息。
发送设备如果接收到所述第一消息,则确定发送给接收设备的第二消息出现丢包现象,发送设备立刻向接收设备重新发送第二消息。具体,发送设备可在接收到第一消息后直接向接收设备重发消息,或者按照现有FCoE通信协议中的重传恢复机制进行重发消息,例如,发送设备在接收到所述第一消息后,先向接收设备发送REC消息,以询问接收设备所接收到的第二消息的数据是否部分丢失。接收设备在接收到所述REC消息后,如果判断所接收到的第二消息的数据没有发生丢失,则向发送设备发送LS_ACC消息,发送设备接收到所述LS_ACC消息后,则不重传第二消息。接收设备如果判断所接收到的第二消息数据部分丢失,则向发送设备发送LS_RJT消息。发送设备接收到所述LS_RJT消息后,则重新向接收设备发送第二消息。
本申请由交换机监测FCoE网络是否发生丢包,所述交换机在监测到发生丢包时,主动向发送设备发送第一消息,以告知发送设备发生丢包,发送设备在接收到所述第一消息后,无需等待预设时间,即可实时获知当前发生丢包,进而重发消息,加快了发送设备与接收设备间的通信恢复。
请参阅图4,图4是本申请FCoE网络丢包后快速恢复的方法另一实施方式的流程图。本实施方式中,FCoE网络由发送设备、第一交换机和接收设备组成,其中,所述发送设备和接收设备可以为服务器或存储设备,发送设备与接收设备通过第一交换机进行通信,所述方法包括以下步骤:
步骤S401:发送设备接收第一交换机发送的第一消息,其中,所述第一消息为所述第一交换机监测到所述发送设备通过所述第一交换机向接收设备发送的第二消息发生丢包时生成的,所述第一消息包括能够识别所述第二消息的信息。
在FCoE网络中,发送设备通过第一交换机向接收设备发送第二消息(如光纤通道请求或者数据),位于该第二消息的传送通道上的第一交换机还用于监测发送设备发送的消息是否发生丢包。在第二消息传输过程中,第一交换机监测到第二消息出现丢包,则按照与发送设备间的协议生成第一消息即PLOSS消息,以通知作为发送设备发生丢包。具体地,第一消息中包括能够识别所述第二消息的信息,例如第二消息的消息头,以及发送设备的地址ID等,以用于通知发送设备所述第二消息发生丢失。发送设备如果接收到第一交换机发送的第一消息,则执行步骤S402,如果没有接收到所述第一消息,按照现有FCoE通信协议与接收设备通信。
步骤S402:发送设备根据所述第一消息,确定所述第二消息发生丢失后,判断在所述FCoE网络中是否能够通过第二交换机与所述接收设备通信。
发送设备根据所述第一消息,确定所述第二消息发生丢失。发送设备在重新发送第二消息之前,先对传输路径进行重新选择。为避免第一交换机与接收设备间的链路仍存在问题的情况,在接收到第一消息后,发送设备先检测FCoE网络中是否还能够通过其他交换机与接收设备进行通信。如果检测到还可通过FCoE网络中的第二交换机与接收设备进行双向通信,则发送设备执行步骤S403,如果检测到FCoE网络中除第一交换机外不能通过其他交换机与接收设备通信,则执行步骤S405。当然,在其他实施方式中,FCoE系统中除第一交换机外,还可包括多个交换机可实现发送设备与发送设备间通信,此时,发送设备则先按照所述多个交换机的当前通信状态确定选择哪一个作为第二交换机,以用于重发第二消息。在此需要说明的是,本申请对传输路径的具体选择方法不作任何限定。
步骤S403:发送设备通过所述第二交换机向所述接收设备发送第三消息。
发送设备在检测到能够通过第二交换机与接收设备通信时,先通过第二交换机向接收设备发送第三消息如REC消息,以询问接收设备所接收到的第二消息的数据是否部分丢失,并根据接收设备的应答情况决定是否重发第二消息。
接收设备接收到第三消息后,如果判断当前接收到的第二消息的数据有部分丢失,则通过第二交换机向发送设备发送第四消息,以告知发送设备重新发送第二消息,并且自身也做好重新接收的准备;如果判断当前接收到的第二消息数据没有丢失,则通过第二交换机向发送设备发送第五消息,以告知发送设备无需重新发送。
步骤S404:如果预设时间内接收到所述接收设备发送的第四消息,则发送设备通过第二交换机向所述接收设备重发所述第二消息,所述第四消息用于表明所述接收设备所接收到的第二消息部分丢失。
如果预设时间内接收到所述第四消息,或者没有接收到接收设备对第三消息的应答,发送设备则通过第二交换机向所述接收设备重发所述第二消息,以恢复FCoE网络的正常通信。如果预设时间内接收到第五消息时,发送设备则不重新发送所述第二消息。其中,所述预设时间可以为系统默认的或者由用户输入进行预设的。
步骤S405:发送设备通过所述第一交换机向所述接收设备发送第三消息。
发送设备在检测到不能通过第二交换机与接收设备通信时(即发送设备只能通过第一交换机与接收设备通信),发送设备仍通过第一交换机向接收设备重发第二消息。例如,发送设备在接收到第一交换机发送的第一消息后,向第一交换机发送第三消息,第一交换机接收到第三消息后,先检测之前发生丢包的链路是否已恢复正常,其中,发生丢包的链路即为第一交换机监测到丢包时所述发送设备通过第一交换机向接收设备发送第二消息的链路。如果检测到发生丢包的链路已恢复正常,则第一交换机按照发生丢包的链路,将第三消息发送给接收设备。如果检测到发生丢包的链路还没恢复正常,则第一交换机查找出第一交换机与接收设备间除发生丢包的链路外的其他路径,如路径b和路径c,第一交换机按照最优路径算法,如FSPF算法,确定第一交换机与接收设备间除发生丢包的链路外的最优路径为路径b,则按照路径b将第三消息发送给接收设备,以询问接收设备所接收到的第二消息的数据是否部分丢失。
接收设备接收到第三消息后,如果判断当前接收到的第二消息的数据有部分丢失,则通过第二交换机向发送设备发送第四消息;如果判断当前接收到的第二消息的数据没有丢失,则通过第二交换机向发送设备发送第五消息。
步骤S406:如果预设时间内接收到所述接收设备发送的第四消息,则发送设备通过第一交换机向所述接收设备重发所述第二消息,所述第四消息用于表明所述接收设备所接收到的第二消息部分丢失。
如果预设时间内接收到所述第四消息,或者没有接收到接收设备对第三消息的应答,发送设备则通过第一交换机向所述接收设备重发所述第二消息,以恢复FCoE网络的正常通信。如果预设时间内接收到第五消息时,发送设备则不重新发送所述第二消息。
本实施方式中,由交换机监测FCoE网络是否发生丢包,所述交换机在监测到发生丢包时,主动向发送设备发送第一消息,以告知发送设备发生丢包,发送设备在接收到所述第一消息后,无需等待预设时间,即可实时获知当前发生丢包,进而重发消息,加快了发送设备与接收设备间的通信恢复。而且,为防止在重传时发生丢包的链路尚未恢复正常,发送设备在重发第二消息前,以优选其他交换机路径原则,避免重发时仍出现丢包现象,另外,本实施方式采用在接收第一消息后,先发送第三消息询问接收设备,也避免了所述交换机的误判断。
请参阅图5,图5是FCoE网络丢包后快速恢复的方法再一实施方式的流程图。本实施方式中,FCoE网络由发送设备、交换机和接收设备组成,其中,所述发送设备和接收设备可以为服务器或存储设备,发送设备与接收设备通过所述交换机进行通信。所述方法包括以下步骤:
步骤S501:交换机监测在发送设备通过所述交换机向接收设备发送的第二消息是否发生丢包。
在FCoE网络中,发送设备通过交换机向接收设备发送第二消息,所述交换机还用于监测发送设备发送的第二消息是否发生丢包。在第二消息传输过程中,FCoE网络中的网络信号不稳定或物理线路出现故障等原因(例如交换机与接收设备间的物理链路发生短暂断开),第二消息的部分数据帧出现丢失,即FCoE网络中发生丢包,交换机如果监测到第二消息出现丢包,则执行步骤S502。
步骤S502:交换机向所述发送设备发送第一消息,其中,所述第一消息包括能够识别所述第二消息的信息,用于通知所述发送设备所述第二消息发生丢失。
如果交换机监测到第二消息出现丢包,交换机则按照与发送设备间的协议生成第一消息即PLOSS消息,并向FCoE网络中发生丢包的发送设备发送所述第一消息,以通知所述发送设备发生丢包。具体地,所述第一消息中包括能够识别所述第二消息的信息,例如第二消息的消息头,以及发送设备的地址ID等,以用于通知发送设备所述第二消息发生丢失。
发送设备如果接收到交换机发送的第一消息,则重新发送所述第二消息。具体地,发送设备可通过其他交换机或者该交换机进行消息重传,一般,发送设备优选可与该接收设备通信的其他交换机,以避免该交换机所处的链路仍存在异常,若FCoE网络中发送设备仅能通过该交换机与接收设备通信,则发送设备通过该交换机进行消息重传。
可选地,当所述发送设备通过所述交换机重新发送所述第二消息时,所述方法还可以进一步包括步骤S503:在发送所述第一消息后,如果接收到所述发送设备重新发送的第二消息,交换机则将所述第二消息发送给所述接收设备。
例如,交换机如果接收到所述发送设备重新发送的第二消息,则判断发生丢包的链路是否已经恢复正常,其中,所述发生丢包的链路为所述交换机监测到丢包时所述发送设备通过所述交换机向接收设备发送第二消息的路径。如果检测到发生丢包的链路已恢复正常,则交换机通过发生丢包的链路,将第二消息重发给接收设备。如果检测到发生丢包的链路还没恢复正常,则交换机查找出交换机与该接收设备间除发生丢包的链路外的其他路径,如路径b和路径c,所述交换机按照最优路径算法,如FSPF算法,确定交换机与该接收设备间除发生丢包的链路外的最优路径为路径b,则按照路径b将第二消息重发给接收设备。
进一步地,在发送设备采用先询问后重发的机制时,发送设备向交换机发送第三消息如REC消息,以询问接收设备所接收到的第二消息的数据是否部分丢失。交换机根据上述方式选择传输路径,并按照选择的传输路径,将第三消息发送给接收设备。在接收设备对第三消息做出应答时,交换机将接收设备生成的应答消息发送给发送设备。发送设备根据应答消息确定第二消息发生丢包时,将第二消息发送给交换机,交换机再按照上述选择的传输路径,将第二消息发送给接收设备。
本实施方式中,由交换机监测FCoE网络是否发生丢包,所述交换机在监测到发生丢包时,主动向发送设备发送第一消息,以告知发送设备发生丢包,发送设备在接收到所述第一消息后,无需等待预设时间,即可实时获知当前发生丢包,进而重发消息,加快了发送设备与接收设备间的通信恢复。而且,为防止在重传时发生丢包的链路尚未恢复正常,发送设备在重发第二消息前,以优选其他交换机路径原则,避免重发时仍出现丢包现象,另外,本实施方式采用在接收第一消息后,先发送第三消息询问接收设备,也避免了所述交换机的误判断。
请参阅图6,图6是本申请发送设备一实施方式的结构示意图。本实施方式中,所述发送设备用于FCoE网络中,所述FCoE网络由发送设备、第一交换机和接收设备组成,其中,所述发送设备和接收设备可以为服务器或存储设备,发送设备与接收设备通过第一交换机进行通信。具体,所述发送设备包括接收模块610和重发模块620。
接收模块610用于接收到第一交换机发送的第一消息,并把判断结果发送给所述重发模块620,其中,所述第一消息为所述第一交换机监测到所述发送设备通过所述第一交换机向接收设备发送的第二消息发生丢包时生成的,所述第一消息包括能够识别所述第二消息的信息。
在FCoE网络中,发送设备通过第一交换机向接收设备发送第二消息(如光纤通道请求或者数据),位于该第二消息的传送通道上的第一交换机还用于监测发送设备发送的第二消息是否发生丢包。在第二消息传输过程中,由于FCoE网络中的网络信号不稳定或物理线路出现故障等原因(例如第一交换机与接收设备间的物理链路发生短暂断开),第二消息的部分数据帧出现丢失,即FCoE网络中发生丢包,第一交换机监测到第二消息出现丢包,则按照与发送设备间的协议生成第一消息即PLOSS消息,并发送给发送设备的接收模块610,以通知发送设备发生丢包。具体地,第一消息中包括能够识别所述第二消息的信息,例如第二消息的消息头,以及发送设备的地址ID等,以用于通知发送设备所述第二消息发生丢失。接收模块610接收第一交换机发送的第一消息。
重发模块620用于根据所述第一消息,确定所述第二消息发生丢失,并重新向所述接收设备发送所述第二消息。重发模块620在接收模块610没有接收到所述第一消息时,按照现有FCoE通信协议进行与接收设备间的通信。重发模块620在接收模块610接收到所述第一消息时,确定发送给接收设备的第二消息出现丢包现象,并立刻向接收设备重新发送第二消息。具体,重发模块620可在接收到第一消息后直接向接收设备重发消息,或者按照现有FCoE通信协议中的重传恢复机制进行重发消息,例如,重发模块620在接收到所述第一消息后,先向接收设备发送REC消息,以询问接收设备所接收到的第二消息的数据是否部分丢失。接收设备在接收到所述REC消息后,如果判断所接收到的第二消息的数据没有发生丢失,则向重发模块620发送LS_ACC消息,重发模块620在接收到所述LS_ACC消息时,不重传第二消息。接收设备如果判断所接收到的第二消息数据部分丢失,则向重发模块620发送LS_RJT消息。重发模块620在接收到所述LS_RJT消息时,重新向接收设备发送第二消息。
请参阅图7,图7是本申请发送设备另一实施方式的结构示意图。本实施方式的发送设备是在图6所示发送设备基础上的扩展,其区别在于,重发模块720包括判断单元721和发送单元722。
判断单元721用于根据所述第一消息,确定所述第二消息发生丢失后,判断在FCoE网络中是否能够通过第二交换机与所述接收设备通信,并把所述判断结果发送给发送单元722。
发送设备在重新发送第二消息之前,先对传输路径进行重新选择。为避免第一交换机与接收设备间的链路仍存在问题的情况,在接收到第一消息后,判断单元721先检测FCoE网络中是否还能够通过其他交换机与接收设备进行通信。例如,FCoE系统中除第一交换机外,还可包括多个交换机可实现发送设备与发送设备间的通信,此时,判断单元721则先按照所述多个交换机的当前通信状态确定选择哪一个作为第二交换机,以用于重发第二消息。在此需要说明的是,本申请对传输路径的具体选择方法不作任何限定。
发送单元722用于在能通过第二交换机与所述接收设备通信时,通过所述第二交换机向所述接收设备发送所述第二消息,在不能通过第二交换机与所述接收设备通信时,通过所述第一交换机向所述接收设备发送所述第二消息。
进一步地,发送单元722在重发消息前先进行询问,即具体用于向所述接收设备发送第三消息,以询问所述接收设备所接收到的第二消息是否部分丢失,并在预设时间内接收到所述接收设备发送的第四消息时,向所述接收设备重发所述第二消息,所述第四消息用于表明所述接收设备所接收到的第二消息部分丢失。
具体地,发送单元722在确定第二消息的传输路径时,先按照所述确定的传输路径向接收设备发送第三消息如REC消息,以询问接收设备所接收到的第二消息的数据是否部分丢失,并根据接收设备的应答情况决定是否重发第二消息。
接收设备接收到第三消息后,在判断当前接收到的第二消息的数据有部分丢失时,按照确定的传输路径向发送单元722发送第四消息,以发送单元722重新发送第二消息,并且自身也做好重新接收的准备;在判断当前接收到的第二消息数据没有丢失时,确定的传输路径向发送单元722发送第五消息,以告知发送单元722无需重新发送。
发送单元722在发送第三消息后,判断在预设时间内是否接收到所述接收设备的应答消息,在预设时间内接收到所述第四消息,或者没有接收到接收设备对第三消息的应答时,确定的传输路径向所述接收设备重发所述第二消息,以恢复FCoE网络的正常通信。在预设时间内接收到第五消息时,不重新发送所述第二消息。
请参阅图8,图8是本申请发送设备再一实施方式的结构示意图。本实施方式中,所述发送设备用于FCoE网络中,所述FCoE网络由发送设备、第一交换机和接收设备组成,其中,所述发送设备和接收设备可以为服务器或存储设备,发送设备与接收设备通过第一交换机进行通信。具体,所述发送设备包括处理器810、存储介质820、接收器840和发送器850,其中,所述处理器810,存储介质820、接收器840和发送器850通过总线830连接。
存储介质820用于存储处理器810执行的计算机指令以及处理器810工作时所需存储的数据。
接收器840用于接收第一交换机发送的消息。
发送器850用于向第一交换机发送消息。
处理器810执行存储介质820存储的计算机指令,用于在接收器840接收到第一交换机发送的第一消息时,使发送器850重新发送所述第二消息,其中,所述第一消息为所述第一交换机监测到所述发送设备通过所述第一交换机向接收设备发送的第二消息发生丢包时生成的,所述第一消息包括能够识别所述第二消息的信息。
在FCoE网络中,发送设备通过第一交换机向接收设备发送第二消息,位于该第二消息的传送通道上的第一交换机还用于监测发送设备发送的第二消息是否发生丢包。在第二消息传输过程中,第一交换机监测到第二消息出现丢包,则按照与发送设备间的协议生成第一消息即PLOSS消息,并发送给发送设备的接收器840,以通知发送设备发生丢包。
处理器810在接收器840没有接收到所述第一消息时,使发送器850按照现有FCoE通信协议进行与接收设备间的通信;在接收器840接收到所述第一消息时,确定发送给接收设备的第二消息出现丢包,并使发送器850向接收设备重新发送第二消息。具体,处理器810可在接收到第一消息后直接使发送器850向接收设备重发消息,或者按照现有FCoE通信协议中的重传恢复机制使发送器850进行重发消息,例如,处理器810在接收器840接收到所述第一消息后,先使发送器850向接收设备发送REC消息,以询问接收设备所接收到的第二消息的数据是否部分丢失。接收设备在接收到所述REC消息后,如果判断所接收到的第二消息的数据没有发生丢失,则向接收器840发送LS_ACC消息,处理器810在接收器840接收到LS_ACC消息时,不使发送器850重传第二消息。接收设备如果判断所接收到的第二消息数据部分丢失,则向接收器840发送LS_RJT消息。处理器810在接收器840接收到LS_RJT消息时,使发送器850重新向接收设备发送第二消息。
进一步地,处理器810在使发送器850重新发送第二消息之前,先对传输路径进行重新选择。为避免第一交换机与接收设备间的链路仍存在问题的情况,处理器810还用于在接收器840接收到所述第一消息后,判断在FCoE网络中是否能够通过第二交换机与所述接收设备通信,在能够通过第二交换机与所述接收设备通信时,使发送器850通过所述第二交换机向所述接收设备发送所述第二消息,在不能通过第二交换机与所述接收设备通信时,使发送器850通过所述第一交换机向所述接收设备发送所述第二消息。当然,在其他实施方式中,FCoE系统中除第一交换机外,还可包括多个交换机可实现发送设备与接收设备间通信,此时,处理器则先按照所述多个交换机的当前通信状态确定选择哪一个作为第二交换机,以用于重发第二消息,在此需要说明的是,本申请对传输路径的具体选择方法不作任何限定。
更进一步地,处理器810在使发送器850重发消息前先进行询问,即在确定第二消息的传输路径时,先使发送器850按照所述确定的传输路径向接收设备发送第三消息如REC消息,以询问接收设备所接收到的第二消息的数据是否部分丢失,并根据接收设备的应答情况决定是否重发第二消息。
处理器810在发送器850发送第三消息后,判断接收器840在预设时间内是否接收到所述接收设备的应答消息,在接收器840在预设时间接收到接收设备发送的第四消息,或者没有接收到接收设备对第三消息的应答时,使发送器850通过确定的传输路径向所述接收设备重发所述第二消息,以恢复FCoE网络的正常通信。在接收器840在预设时间内接收到接收设备发送的第五消息时,不重新发送第二消息。
本实施方式中,由交换机监测FCoE网络是否发生丢包,所述交换机在监测到发生丢包时,主动向发送设备发送第一消息,以告知发送设备发生丢包,发送设备在接收到所述第一消息后,无需等待预设时间,即可实时获知当前发生丢包,进而重发消息,加快了发送设备与接收设备间的通信恢复。而且,为防止在重传时发生丢包的链路尚未恢复正常,发送设备在重发第二消息前,以优选其他交换机路径原则,避免重发时仍出现丢包现象,另外,本实施方式采用在接收第一消息后,先发送第三消息询问接收设备,也避免了所述交换机的误判断。
请参阅图9,图9是交换机一实施方式的结构示意图。本实施方式中,所述交换机用于FCoE网络中,FCoE网络由发送设备、交换机和接收设备组成,其中,所述发送设备和接收设备可以为服务器或存储设备,发送设备与接收设备通过所述交换机进行通信。所述交换机具体包括监测模块910和第一发送模块920。
监测模块910用于监测发送设备通过所述交换机向接收设备发送的第二消息是否发生丢包,并把检测结果发送给第一发送模块920。在FCoE网络中,发送设备通过交换机向接收设备发送第二消息,而且监测模块910监测发送设备发送的消息是否发生丢包。
第一发送模块920用于在发生丢包时,向所述发送设备发送第一消息,其中,所述第一消息包括能够识别所述第二消息的信息,用于通知所述发送设备所述第二消息发生丢失。
监测模块910在监测到第二消息出现丢包时,按照与发送设备间的协议生成第一消息即PLOSS消息,向FCoE网络中发生丢包的发送设备发送所述第一消息,以通知作为发送设备发生丢包。具体地,所述第一消息中包括能够识别所述第二消息的信息,例如第二消息的消息头,以及发送设备的地址ID等,以用于通知发送设备所述第二消息发生丢失。
发送设备在接收到交换机发送的第一消息时,重新发送所述第二消息。具体地,发送设备可通过其他交换机或者该交换机进行消息重传,一般,发送设备优选可与该接收设备通信的其他交换机,以避免该交换机所处的链路仍存在异常,若FCoE网络中发送设备仅能通过该交换机与接收设备通信,则发送设备通过该交换机进行消息重传。此时,还交换机可选地还包括和第二发送模块930。
第二发送模块930用于在第一发送模块920发送所述第一消息后,在接收到所述发送设备重新发送的第二消息时,将所述第二消息发送给所述接收设备。
例如,第二发送模块930在接收到所述发送设备重新发送的第二消息时,判断发生丢包的链路是否已经恢复正常,其中,所述发生丢包的链路为所述交换机监测到丢包时所述发送设备通过所述交换机向接收设备发送第二消息的路径。在检测到发生丢包的链路已恢复正常时,第二发送模块930通过发生丢包的链路,将第二消息重发给接收设备。在检测到发生丢包的链路还没恢复正常时,第二发送模块930查找出交换机与该接收设备间除发生丢包的链路外的其他路径,如路径b和路径c,第二发送模块930按照最优路径算法,如FSPF算法,确定交换机与该接收设备间除发生丢包的链路外的最优路径为路径b,则按照路径b将第二消息重发给接收设备。
进一步地,在发送设备采用先询问后重发的机制的其他实施方式中,发送设备向第二发送模块发送第三消息如REC消息,以询问接收设备所接收到的第二消息的数据是否部分丢失。第二发送模块根据上述方式选择传输路径,并按照选择的传输路径,将第三消息发送给接收设备。在接收设备对第三消息做出应答时,第二发送模块将接收设备生成的应答消息发送给发送设备。发送设备根据应答消息确定第二消息发生丢包时,将第二消息发送给第二发送模块,第二发送模块再按照上述选择的传输路径,将第二消息发送给接收设备。
请参阅图10,图10是交换机另一实施方式的结构示意图。本实施方式中,所述交换机用于FCoE网络中,FCoE网络由发送设备、交换机和接收设备组成,其中,所述发送设备和接收设备可以为服务器或存储设备,发送设备与接收设备通过所述交换机进行通信。所述交换机包括处理器1010、存储介质1020、接收器1040和发送器1050,其中,所述处理器1010、存储介质1020、接收器1040和发送器1050通过总线1030连接。
存储介质1020用于存储处理器1010执行的计算机指令以及处理器1010工作时所需存储的数据。
接收器1040用于接收发送设备或接收设备发送的消息。
发送器1050用于向发送设备或接收设备发送消息
处理器1010执行存储介质1020存储的计算机指令,用于监测在发送设备通过所述交换机向接收设备发送的第二消息是否发生丢包,在发生丢包时,使发送器1050向所述发送设备发送第一消息,并在发送器1050发送所述第一消息后,在接收器1040接收到所述发送设备重新发送的第二消息时,使发送器1050将所述第二消息发送给所述接收设备。
在FCoE网络中,发送设备通过交换机向接收设备发送第二消息,而且处理器1010监测发送设备发送的消息是否发生丢包。在监测到第二消息出现丢包时,处理器1010按照与发送设备间的协议生成第一消息即PLOSS消息,使发送器1050向FCoE网络中发送第二消息的发送设备发送所述第一消息,以通知作为发送设备发生丢包,其中,所述第一消息包括能够识别所述第二消息的信息,用于通知所述发送设备所述第二消息发生丢失。并在发送设备选择通过该交换机进行消息重传时,使发送器1050将所述第二消息发送给所述接收设备。
具体地,处理器1010在接收器1040接收到所述发送设备重新发送的第二消息时,先判断发生丢包的链路是否已经恢复正常,其中,所述发生丢包的链路为所述交换机监测到丢包时所述发送设备通过第一交换机向接收设备发送第二消息的路径。在检测到发生丢包的链路已恢复正常时,处理器1010使发送器1050通过发生丢包的链路,将第二消息重发给接收设备。在检测到发生丢包的链路还没恢复正常时,处理器1010查找出交换机与该接收设备间除发生丢包的链路外的其他路径,如路径b和路径c,处理器1010按照最优路径算法,如FSPF算法,确定交换机与该接收设备间除发生丢包的链路外的最优路径为路径b,则使发送器1050通过路径b将第二消息重发给接收设备。
进一步地,在发送设备采用先询问后重发的机制的其他实施方式中,发送设备向处理器发送第三消息如REC消息,以询问接收设备所接收到的第二消息的数据是否部分丢失。处理器根据上述方式选择传输路径,并按照选择的传输路径,使发送器将第三消息发送给接收设备。在接收器接收到接收设备对第三消息生成的应答消息时,处理器使发送器将所述应答消息发送给发送设备。发送设备根据应答消息确定第二消息发生丢包时,将第二消息发送给交换机的接收器,处理器再使发送器通过上述选择的传输路径,将第二消息发送给接收设备。
本申请还提供FCoE系统的实施方式,所述FCoE系统包括发送设备、交换机和接收设备,所述发送设备通过交换机与所述接收设备通信,所述发送设备、接收设备可以是服务器或存储设备。其中,所述发送设备为上述实施方式中的发送设备,和/或所述交换机为上述实施方式中的交换机,故具体说明请参阅上述实施方式及图6-10,在此不作赘述。
上述方案中由交换机监测FCoE网络是否发生丢包,所述交换机在监测到发生丢包时,主动向发送设备发送第一消息,以告知发送设备发生丢包,发送设备在接收到所述第一消息后,无需等待预设时间,即可实时获知当前发生丢包,进而重发消息,加快了发送设备与接收设备间的通信恢复。
在本申请所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。