具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一个实施例提供的在PCIE总线上传输报文的方法流程图,如图1所示,该方法包括:
步骤101:起始端设备获取预置的协议报文;
本发明实施例可以根据具体的业务类型将预置的协议报文携带在所述PCIE协议报文的处理层协议TLP包中,获得FC-TLP协议报文,其中,FC-TLP协议报文为FC-TLP帧格式,所述预置的协议报文为FC协议报文;
或将所述预置的协议报文携带在所述PCIE协议报文的处理层协议TLP包中,获得FCoPIP-TLP协议报文,FCoPIP-TLP协议报文为FCoPIP-TLP帧格式,其中,所述预置的协议报文为FCoPIP协议报文。
步骤102:获取到所述目标端设备的PCIE设备ID后,将所述预置的协议报文携带在PCIE协议报文中,并通过PCIE总线将所述PCIE协议报文发送给目标端设备,以使所述目标端设备从所述PCIE协议报文中解析出所述预置的协议报文后根据所述预置的协议报文的指令执行相应操作,其中,所述起始端设备和目标端设备,第三方设备之间通过PCIE总线互连。
其中,本实施例中的第三方设备可以是链路中的特定的网络管理设备。
其中,本实施例中的预置的协议报文为FC协议报文或FCoPIP协议报文;
本实施例中的“携带”也在本领域内也可以称为“封装”,实际上指的是将FCoPIP协议报文或FC协议报文映射为符合PCIE协议报文的形式的一种做法。
其中,可以将预置的协议报文携带在PCIE的处理层协议(TransactionLayer Protocol,简称为:TLP)包中。预置的协议报文在PCIE协议报文中具体的位置可以如表1中所示本发明实施例提供的PCIE协议报文的格式示意图。
表1
帧开始 |
DLLP头 |
TLP头 |
预置的协议报文 |
ECRC |
LCRC |
帧结束 |
其中,有多种情况可以使得起始端设备将预置的协议报文进行封装后携带在PCIE协议报文中,例如,计算机应用程序或者CPU希望通过PCIE总线对某一设备进行读写操作,则会将读写请求转换为FC读写命令并对其进行封装,然后携带在PCIE协议报文中。或者,某一通过PCIE总线与计算机相连接的设备接收到计算机通过PCIE总线发送的请求报文后需要返回请求响应报文时,该设备会将请求响应报文转换为本发明实施例的协议报文并对其进行封装,然后携带在PCIE协议报文中。
本发明实施例提供的在PCIE总线上传输报文的方法,使得通过PCIE总线建立彼此连接的任意设备之间均可以通过预置的协议报文进行相互的操作,且数据传输的带宽高、处理速度快,可用于全PCIE连接的多主机集群计算系统中,计算节点与存储节点基于FC协议实现互连。
图2是本发明实施例中预置的协议报文进行封装的方法流程图;
本实施例中,获取到所述目标端设备的PCIE设备ID之前,所述将预置的协议报文携带在PCIE协议报文中包括:
首先,步骤1010,起始端设备,和/或,目标端设备发送设备发现请求,获取第三方设备的PCIE设备ID,例如发送0001h,如表1所示:
其中,FCoPIP Protocol Code为0001h表示设备发现,Subcode为01h时,表示所述业务类型Operation为Discovery Solicitation,表示所述业务内容Contents of Operation包括为PCIE Device ID,FC WWN,MAX Size等信息;Subcode为02h时,表示业务类型为Discovery Advertisement,表示所述业务内容Contents of Operation为Priority(优先级),另外,还包括PCIE Device ID,FC WWN,MAX Size等。其中,MAX Size,表示起始端设备可以接收的报文大小;Priority,表示第三方设备的优先级标识,在PCIE链路上也有可能存在多个第三方设备,此时会有多个第三方设备返回第一请求响应消息,这时可以根据第一请求响应信息中的优先级作为参考,从而优选采用第一请求响应信息中优先级标识较高的第三方设备。
具体的,起始端设备需要在PCIE链路中,发送设备发现请求信息,其中,所述设备发现请求信息中携带有起始端设备和目标端设备之间通信需要的光纤通道协议参数;本实施例中,可以在PCIE链路上通过广播或组播的方式发送设备发现请求信息,并接收第三方设备返回的第一请求响应信息。
步骤1011,接收所述第三方设备返回的第一请求响应信息,其中,所述第一请求响应信息中携带有所述第三方设备的PCIE设备ID。需要说明的是,本实施例中第一请求响应信息可以是上述的Discovery Solicitation,表示设备发现请求;
当然,本发明实施例也可以通过其他方式获取第三方设备的PCIE设备ID,例如,在FCoPIP协议报文中,通过封装Subcode为02h的字段,表示Discovery Advertisement,此时,第三方设备主动向PCIE链路上的其他设备公布自己的PCIE设备ID。
步骤1012,获取到第三方设备的PCIE设备ID后,根据所述第三方设备的PCIE设备ID向第三方设备发送虚拟链路实例化请求信息,并接收PCIE链路上第三方设备返回的第二请求响应信息。
其中,虚拟链路实例化请求信息可以是Virtual Link Instantiation Request,
例如,可以是将携带有FLOGI消息的FCoPIP协议报文携带在PCIE协议报文的TLP包中;
第二请求响应信息可以是Virtual Link Instantiation Reply,表示该第二请求响应信息是虚拟链路实例化响应,例如,可以是将携带有FLOGI响应消息的FCoPIP协议报文携带在PCIE协议报文的TLP包中;
其中,本实施例中根据所述第三方设备的PCIE设备ID向第三方设备发送虚拟链路实例化请求信息,并接收PCIE链路上第三方设备返回的第二请求响应信息,具体可以包括:
起始端设备查询到起始端设备的PCIE设备ID后,
将所述起始端设备的PCIE设备ID携带在虚拟链路实例化请求信息中,在本实施例中,是将所述起始端设备的PCIE设备ID携带携带在FCoPIP协议报文中,向第三方设备发送虚拟链路实例化请求信息,并接收PCIE链路上第三方设备返回的第二请求响应信息;
本领域技术人员可以了解,本实施例中也可以是目标端设备查询到第三方设备的PCIE设备ID后,根据所述第三方设备的PCIE设备ID向第三方设备发送虚拟链路实例化请求信息,并接收PCIE链路上第三方设备返回的第二请求响应信息;
需要将所述目标端设备的PCIE设备ID封装在FCoPIP协议报文中,向第三方设备发送虚拟链路实例化请求信息,并接收PCIE链路上第三方设备返回的第二请求响应信息。
本实施例中,虚拟链路实例化请求信息是FCoPIP-TLP帧格式的协议报文,可以通过发送0002h来实现链路和设备的初始化,如表2所示:
其中Subcode为01h表示业务类型为Virtual Link Instantiation Request,则所述预置的协议报文中包括FC FLOGI消息和起始端设备的PCIE设备ID;02h表示业务类型为Virtual Link Instantiation Reply,表示虚拟链路实例请求信息的响应,即本发明实施例所述的第二请求响应信息,则所述预置的协议报文中包括FC FLOGI响应消息,例如,FC FLOGI响应消息具体可以是对于Fabric login等结构注册信息的响应信息。
步骤1013,第三方设备返回第二请求响应信息后,在第三方设备中记录所述起始端设备的光纤通道端口ID和目标端设备的光纤通道端口ID,以及起始端设备和目标端设备各自的光纤通道协议参数,所述光纤通道端口ID是在路由配置中确定的与设备唯一对应的地址标识。
如表3中所示本发明实施例提供的FCoPIP-TLP协议报文的格式示意图。
其中,Type域表示预置的协议报文的数据帧的类型,如FCoPIP TYPE表示该协议报文是FCoPIP-TLP帧格式的协议报文。Version表示版本,Reserved表示预留。Encapsulated FC Frame(n words)表示封装的具体的内容,Type=FCoPIP_TYPE时,表示该预置的协议报文类型是FCoPIP协议报文。
如表3.1中所示本发明实施例提供的FCoPIP-TLP协议报文的Encapsulated FCoPIP operation所包括的具体的操作内容的示意图,其中的FCoPIP Protocol Code,例如,可以参考表2中所示,对应于0002h,表示链路和设备实例化;Contents of Operation可以是表2中的FC FLOGI消息和PCIE Device ID等。
步骤1014,起始端设备发送注册名称服务器请求信息于第三方设备以获取目标端设备的PCIE设备ID;
具体的,起始端设备可以发送封装有目标端设备的光纤通道协议参数和目标端设备的光纤通道端口ID的注册名称服务器请求信息,并接收目标端设备返回的第三请求响应信息。其中,所述注册名称服务器请求信息为FC-TLP协议报文,所述光纤通道端口ID是在路由配置中确定的与设备唯一对应的地址标识。
其中,第三请求响应信息中携带有所述目标端设备的PCIE设备ID。
步骤1015,起始端设备利用获得的目标端设备的PCIE设备ID向目标端设备发送端口注册请求信息,例如,可以是发送PLOGI信息,接收到目标端设备返回的第四请求响应信息后,起始端设备和目标端设备端完成了光纤通道虚拟链路的建立,并通过该光纤通道虚拟链路进行数据的通信。其中,第四请求响应信息是光纤通道虚拟链路的建立完成响应信息。其中,在协议报文传输过程中,所述端口注册请求信息具体为FC-TLP协议报文。
如表4所示,为一个完整的FC-TLP协议报文的格式:
其中,Type域表示封装的数据帧的类型,FCoP_TYPE表示该协议报文是FC-TLP帧格式的协议报文。Version表示版本,Reserved表示预留。Encapsulated FC Frame(n words)表示封装的具体的内容;
其中上述步骤中,接收到目标端设备返回的第四请求响应信息后,起始端设备和目标端设备确定当所述链路维护周期到达时,可以发送链路维护信息。链路维护信息中包括起始端设备和目标端设备各自的PCIE设备ID和光纤通道端口ID。
具体示例如下:其中,表5是起始端设备和目标段设备进行链路维护的相关信息:
本发明实施例中,起始端设备和目标端设备可以在PCIE链路上发送链路维护信息,以便于在PCIE链路上的其他设备,可以获知到该起始端设备和目标端设备的存活状态。
本实施例中,例如,可以发送FCoPIP Protocol Code为0003h,其中,如上表所示,Subcode为01h,表示业务类型为Keep Alive;业务内容中携带有FC N_Port ID以及PCIE Device ID;其中,Subcode为02h,表示业务类型为Clear Virtual Links,业务内容中携带有FC N_Port ID,PCIE Device ID,FCWWN;所述链路维护信息将所述已封装的FCoPIP携带在所述PCIE协议报文的处理层协议TLP包中。
其中,Keep Alive用于表示发出Keep Alive消息的起始端设备或目标端设备还处于存活状态;Clear virtual links用于第三方设备在PCIE链路上探测是否有起始端设备或目标端设备已不存在,例如设备出现故障,或设备功能关闭,设备下电拔掉等,如第三方设备确定起始端设备或目标端设备已不存在,则通知与其建立通信链路的另一方设备该链路已不存在,请求释放资源,收回分配给起始端设备和/或目标端设备的光纤通道端口ID。
图3为本发明一个实施例提供的在PCIE总线上传输报文的装置的结构示意图,该装置为上述方法的特定执行主体,因此方法实施例中的内容以引用的方式带入本装置实施例中,此处不做赘述。
如图3所示,该设备包括:
封装模块201,用于获取预置的协议报文;
收发模块202,用于将所述预置的协议报文携带在PCIE协议报文中,并通过PCIE总线将所述PCIE协议报文发送给目标端设备,以使所述目标端设备从所述PCIE协议报文中解析出所述预置的协议报文后根据所述预置的协议报文的指令执行相应操作;
解析模块203,用于从接收到的PCIE协议报文中解析出预置的协议报文;
执行模块204,用于根据预置的协议报文的指令执行相应操作。
所述封装模块201具体用于将预置的协议报文携带在PCIE协议报文的处理层协议TLP包中。
本发明实施例提供的在PCIE总线上传输报文的设备,通过将预置的协议报文携带在PCIE协议报文中,并通过PCIE总线将携带有预置的协议报文的PCIE协议报文传输给目标端设备,实现了在PCIE总线上传输预置的协议报文,使得通过PCIE总线建立彼此连接的任意设备之间均可以通过预置的协议报文进行相互的操作,且数据传输的带宽高、处理速度快,可用于全PCIE连接的多主机集群计算系统中,计算节点与存储节点基于FC协议实现互连。
如图4所示,为本发明一个实施例提供的在PCIE总线上传输报文的装置的结构示意图:
封装模块201,包括:第一封装单元2011,用于当发送设备发现请求信息至第三方设备时,获取预置的协议报文;
本发明实施例可以根据具体的业务类型可以将所述预置的协议报文封装在所述PCIE协议报文的处理层协议TLP包中,获得FC-TLP协议报文;
或将所述预置的协议报文封装在所述PCIE协议报文的处理层协议TLP包中,获得FCoPIP-TLP协议报文;
所述收发模块202,用于获取所述目标端设备的PCIE设备ID,将所述目标端设备的PCIE设备ID封装在预置的协议报文中,并将预置的协议报文携带在PCIE协议报文中,通过PCIE总线将所述PCIE协议报文发送给目标端设备,以使所述目标端设备从所述PCIE协议报文中解析出所述预置的协议报文后根据所述预置的协议报文的指令执行相应操作;
当发送设备发现请求信息时,所述收发模块202具体用于发送设备发现请求信息至第三方设备,接收所述第三方设备返回的第一请求响应信息,其中,所述第一请求响应中携带有所述第三方设备的PCIE设备ID。
其中,本实施例中的第三方设备可以是链路中的特定的网络管理设备。
本实施例中,所述收发模块202发送设备发现请求信息至第三方设备可以通过起始端设备向第三方设备发送,同时,也可以是,通过目标端设备向第三方设备发送设备发现请求信息。
当所述预置的协议报文为虚拟链路实例化请求时,第一封装单元2011,还用于当所述收发模块202向第三方设备发送虚拟链路实例化请求时,将所述起始端设备的PCIE设备ID封装在FCoPIP协议报文中,并将FCoPIP协议报文携带在PCIE协议报文中,获得FCoPIP-TLP协议报文。
收发模块202用于向第三方设备发送虚拟链路实例化请求,该请求信息可以是Virtual Link Instantiation Request;
所述收发模块202发送虚拟链路实例化请求至第三方设备可以通过起始端设备向第三方设备发送,同时,还需要,通过目标端设备向第三方设备发送;收发模块202接收PCIE链路上第三方设备返回的第二请求响应信息;
其中,第二请求响应信息可以是Virtual Link Instantiation Reply,表示虚拟链路实例化响应,所述第二请求响应信息中携带有所述起始端设备和目标端设备各自的光纤通道协议参数和所述第三方设备分配给起始端设备的光纤通道端口ID和目标端设备的光纤通道端口ID。
进一步的,如果所述预置的协议报文为注册名称服务器(PLOGI NS)请求时,该封装模块201还可以包括:
第二封装单元2012,用于当发送注册名称服务器请求信息至第三方设备时,对预置的协议报文进行处理,将第三方设备的光纤通道协议参数和光纤通道端口ID封装在FC协议报文中,并将FC协议报文携带在PCIE协议报文中以获得FC-TLP协议报文;
所述收发模块202还用于发送所述注册名称服务器请求到第三方设备,并接收第三方设备返回的第三请求响应信息。其中,所述注册名称服务器请求信息为FC-TLP协议报文,所述光纤通道端口ID是在路由配置中确定的与设备唯一对应的地址标识。其中,第三请求响应信息中携带有所述目标端设备的PCIE设备ID。
如果发送端口注册请求信息到目标端设备,则第二封装单元2012还用于对预置的协议报文进行处理,将目标端设备的PCIE设备ID封装在FC协议报文中,并将FC协议报文携带在PCIE协议报文中以获得FC-TLP协议报文;
所述收发模块202用于发送所述端口注册请求信息到所述目标端设备,接收从目标端设备返回的第四请求响应信息,从而建立从起始端设备到目标端设备的光纤通道虚拟链路。
所述设备还包括:
配置模块401,用于响应接收到的预置的协议报文,为所述起始端设备和目标端设备分别配置各自的光纤通道端口ID,将所述光纤通道端口ID携带于第一请求响应信息中返回至起始端设备和目标端设备;
记录模块402,用于记录所分配的光纤通道端口ID和PCIE设备ID,以及光纤通道协议参数等相关信息,其中,记录的光纤通道协议参数包括起始端设备的光纤通道端口ID和目标端设备的光纤通道端口ID,以及起始端设备和目标端设备各自的光纤通道协议参数。其中,所述光纤通道端口ID是在路由配置中确定的与设备唯一对应的地址标识。
本发明实施例提供的在PCIE总线上传输报文的设备,通过PCIE总线使得使用FC协议的存储系统进行互连,使得通过PCIE总线建立彼此连接的任意设备之间均可以通过预置的协议报文进行相互的操作,可以利用FC协议已有的功能优势和管理工具,且数据传输的带宽高、处理速度快,可用于全PCIE连接的多主机集群计算系统中,计算节点与存储节点基于FC协议实现互连。
图6为本发明一个实施例提供的在PCIE总线上传输报文的系统结构示意图,如图6所示,
该系统包括:
起始端设备20、目标端设备30、以及第三方设备40,其中,起始端设备20、目标端设备30、以及第三方设备40通过PCIE总线连接并进行数据交互。
这里需要说明的是,起始端设备20和目标端设备30在现有技术中可以是计算机及其相关外部设备,如计算机、服务器、存储阵列等设备,但并不限制在计算机及其相关外部设备上,其他通过PCIE总线连接的特定设备都可以成为起始端设备20或者目标端设备30。
本发明实施例可用于全PCI-E连接的多主机集群计算系统中,计算节点与存储节点基于FC协议实现存储网络的虚拟化。
本发明实施例提供了一种在PCIE总线上传输报文的系统,通过将预置的协议报文携带在PCIE协议报文中,并通过PCIE总线将封装有预置的协议报文的PCIE协议报文传输给目标端设备,实现了在PCIE总线上传输预置的协议报文,使得通过PCIE总线建立彼此连接的任意设备之间均可以通过预置的协议报文进行相互的操作,且数据传输的带宽高、处理速度快,提高了报文的传输速度,降低了设备的成本;同时,通过在PCIE总线上传递预置的协议报文,使得通过PCIE总线连接的两个对端设备之间可以通过预置的协议报文进行相互的操作,而不需要定义各种私有的协议进行相互的操作,通用性好。
另外,采用本方案的存储设备,由于PCIE总线沿用了PCI总线的原理,但抛弃了并行共享总线,采用了目前业内流行的点对点串行连接,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽,即所有设备均可通过PCIE进行连接,简化了主板设计上的不必要的麻烦。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。