CN108471384B - 用于端到端通信的报文转发的方法和装置 - Google Patents
用于端到端通信的报文转发的方法和装置 Download PDFInfo
- Publication number
- CN108471384B CN108471384B CN201810708342.7A CN201810708342A CN108471384B CN 108471384 B CN108471384 B CN 108471384B CN 201810708342 A CN201810708342 A CN 201810708342A CN 108471384 B CN108471384 B CN 108471384B
- Authority
- CN
- China
- Prior art keywords
- switch
- layer data
- identifier
- transaction layer
- global bus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了用于端到端通信的报文转发的方法和装置。该方法的一具体实施方式包括:响应于接收到源设备发送的用于请求读/写目标设备的第一事务层数据报文,获取源设备的全局总线标识。将局部基地址寄存器地址转换成全局总线标识。根据源设备的全局总线标识和目标设备的全局总线标识生成第一事务层数据报文的路由信息。向第一交换机的交换机标识所指示的第一交换机发送目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号,以使得第一交换机根据第一交换机的输出端口的端口号将第一事务层数据报文发送到目标设备。该实施方式能够提升虚拟机中端到端通信的带宽。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及用于端到端通信的报文转发的方法和装置。
背景技术
目前普通的GPU(Graphics Processing Unit,图形处理器)服务器在虚拟机中可以实现GPU和GPU之间的P2P(Peer-to-peer,端到端)通信,但是P2P通信的报文必须经由CPU(Central Processing Unit,中央处理器)转发到目标GPU,这样就导致了上行链路的竞争,降低了GPU P2P通信带宽,同时,增大的GPU P2P通信的延时。针对含有一个或者一个以上PCIe(peripheral component interconnect express,高速串行计算机扩展总线标准)Switch(交换机)的GPU服务器,在现有的方案中,虚拟机中P2P通信的带宽只能达到物理机中的一半,并且对于GPU P2P通信占比比较大的业务模型,其业务性能也只有物理机的三分之一。
发明内容
本申请实施例提出了用于端到端通信的报文转发的方法和装置。
第一方面,本申请实施例提供了一种用于端到端通信的报文转发的方法,包括:响应于接收到源设备发送的用于请求读/写目标设备的第一事务层数据报文,获取源设备的全局总线标识,其中,第一事务层数据报文包括目标设备的局部基地址寄存器地址;将局部基地址寄存器地址转换成全局总线标识;根据源设备的全局总线标识和目标设备的全局总线标识生成第一事务层数据报文的路由信息,其中,第一事务层数据报文的路由信息包括第一事务层数据报文经过的第一交换机的交换机标识及第一交换机的输出端口的端口号;向第一交换机的交换机标识所指示的第一交换机发送目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号,以使得第一交换机根据第一交换机的输出端口的端口号将第一事务层数据报文发送到目标设备。
在一些实施例中,将局部基地址寄存器地址转换成全局总线标识,包括:将局部基地址寄存器地址转换成全局基地址寄存器地址;将全局基地址寄存器地址转换成目标设备的全局总线标识。
在一些实施例中,该方法还包括:接收目标设备发送的用于表征读取完成的第二事务层数据报文,其中,第二事务层数据报文包括目标设备的完成标识;将目标设备的完成标识转换成目标设备的全局总线标识;根据预设的映射表查询根据目标设备的完成标识转换得到的全局总线标识对应的主机的全局总线标识,其中,映射表用于表征目标设备的全局总线标识与主机的全局总线标识之间的对应关系;根据主机的全局总线标识和目标设备的全局总线标识生成第二事务层数据报文的路由信息,其中,第二事务层数据报文的路由信息包括第二事务层数据报文经过的第二交换机的交换机标识及第二交换机的输出端口的端口号;向第二交换机的交换机标识所指示的第二交换机发送主机的全局总线标识和第二交换机的输出端口的端口号,以使得第二交换机根据第二交换机的输出端口的端口号将第二事务层数据报文发送到主机。
在一些实施例中,第一事务层数据报文包括源设备的请求标识;以及该方法还包括:接收目标设备发送的用于响应读取完成的第三事务层数据报文,其中,第三事务层数据报文包括源设备的请求标识;将源设备的请求标识转换成源设备的全局总线标识;根据请求标识转换成的源设备的全局总线标识和目标设备的全局总线标识生成第三事务层数据报文的路由信息,其中,第三事务层数据报文的路由信息包括第三事务层数据报文经过的第三交换机的交换机标识及第三交换机的输出端口的端口号;向第三交换机的交换机标识所指示的第三交换机发送源源设备的请求标识、设备的全局总线标识和第三交换机的输出端口的端口号,以使得第三交换机根据第三交换机的输出端口的端口号将第三事务层数据报文发送到源设备。
在一些实施例中,根据源设备的全局总线标识和目标设备的全局总线标识生成第一事务层数据报文的路由信息,包括:根据源设备的全局总线标识和目标设备的全局总线标识确定出目标设备所连接的交换机与源设备所连接的交换机之间互联的端口的端口集合;从端口集合中确定出用于转发第一事务层数据报文的目标端口;根据目标设备所连接的交换机、源设备所连接的交换机、目标端口生成第一事务层数据报文的路由信息。
第二方面,本申请实施例提供了一种用于端到端通信的报文转发的装置,包括:第一接收单元,被配置成响应于接收到源设备发送的用于请求读/写目标设备的第一事务层数据报文,获取源设备的全局总线标识,其中,第一事务层数据报文包括目标设备的局部基地址寄存器地址;第一转换单元,被配置成将局部基地址寄存器地址转换成全局总线标识;第一生成单元,被配置成根据源设备的全局总线标识和目标设备的全局总线标识生成第一事务层数据报文的路由信息,其中,第一事务层数据报文的路由信息包括第一事务层数据报文经过的第一交换机的交换机标识及第一交换机的输出端口的端口号;第一发送单元,被配置成向第一交换机的交换机标识所指示的第一交换机发送目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号,以使得第一交换机根据第一交换机的输出端口的端口号将第一事务层数据报文发送到目标设备。
在一些实施例中,第一转换单元进一步被配置成:将局部基地址寄存器地址转换成全局基地址寄存器地址;将全局基地址寄存器地址转换成目标设备的全局总线标识。
在一些实施例中,该装置还包括:第二接收单元,被配置成接收目标设备发送的用于表征读取完成的第二事务层数据报文,其中,第二事务层数据报文包括目标设备的完成标识;第二转换单元,被配置成将目标设备的完成标识转换成目标设备的全局总线标识;查询单元,被配置成根据预设的映射表查询根据目标设备的完成标识转换得到的全局总线标识对应的主机的全局总线标识,其中,映射表用于表征目标设备的全局总线标识与主机的全局总线标识之间的对应关系;第二生成单元,被配置成根据主机的全局总线标识和目标设备的全局总线标识生成第二事务层数据报文的路由信息,其中,第二事务层数据报文的路由信息包括第二事务层数据报文经过的第二交换机的交换机标识及第二交换机的输出端口的端口号;第二发送单元,被配置成向第二交换机的交换机标识所指示的第二交换机发送主机的全局总线标识和第二交换机的输出端口的端口号,以使得第二交换机根据第二交换机的输出端口的端口号将第二事务层数据报文发送到主机。
在一些实施例中,第一事务层数据报文包括源设备的请求标识;以及该装置还包括:第三接收单元,被配置成接收目标设备发送的用于响应读取完成的第三事务层数据报文,其中,第三事务层数据报文包括源设备的请求标识;第三转换单元,被配置成将源设备的请求标识转换成源设备的全局总线标识;第三生成单元,被配置成根据请求标识转换成的源设备的全局总线标识和目标设备的全局总线标识生成第三事务层数据报文的路由信息,其中,第三事务层数据报文的路由信息包括第三事务层数据报文经过的第三交换机的交换机标识及第三交换机的输出端口的端口号;第三发送单元,被配置成向第三交换机的交换机标识所指示的第三交换机发送源设备的请求标识、源设备的全局总线标识和第三交换机的输出端口的端口号,以使得第三交换机根据第三交换机的输出端口的端口号将第三事务层数据报文发送到源设备。
在一些实施例中,第一生成单元进一步被配置成:根据源设备的全局总线标识和目标设备的全局总线标识确定出目标设备所连接的交换机与源设备所连接的交换机之间互联的端口的端口集合;从端口集合中确定出用于转发第一事务层数据报文的目标端口;根据目标设备所连接的交换机、源设备所连接的交换机、目标端口生成第一事务层数据报文的路由信息。
第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一的方法。
第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现如第一方面中任一的方法。
本申请实施例提供的用于端到端通信的报文转发的方法和装置,通过将目标设备的局部基地址寄存器地址转换成全局总线标识后生成交换机的路由信息,将路由信息配置给交换机后,使得交换机可直接将报文转发给目标设备,而无需经过主机的CPU转发,从而提升了虚拟机中端到端通信的带宽。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请的一个实施例可以应用于其中的第一个示例性系统架构图;
图2是根据本申请的用于端到端通信的报文转发的方法的第一个实施例的流程图;
图3是根据本申请的用于端到端通信的报文转发的方法的第二个实施例的流程图;
图4是本申请的一个实施例可以应用于其中的第二个示例性系统架构图;
图5是本申请的一个实施例可以应用于其中的第三个示例性系统架构图;
图6是根据本申请的用于端到端通信的报文转发的方法的第三个实施例的流程图;
图7是根据本申请的用于端到端通信的报文转发的方法的第四个实施例的流程图;
图8是本申请的一个实施例可以应用于其中的第四个示例性系统架构图;
图9是根据本申请的用于端到端通信的报文转发的方法的第五个实施例的流程图;
图10是根据本申请的用于端到端通信的报文转发的方法的第六个实施例的流程图;
图11是根据本申请的用于端到端通信的报文转发的装置的一个实施例的结构示意图;
图12是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于端到端通信的报文转发的方法或用于端到端通信的报文转发的装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括PCIe Host(主机)101、PCIe Switch 102、PCIe设备103、配置CPU104。一级及以上的PCIe Switch构成了PCIe网络,每一级由一个或者多个PCIe Switch构成,系统中有一个或者多个PCIe Host,及一个或者多个PCIe设备。另外,每一个PCIe Host中有一个或者多个VM(virtual machine,虚拟机)。每个PCIe Host对应一个CPU,该CPU是传统意义上用于主机的CPU。而配置CPU是与PCIe设备结合使用的CPU。配置CPU和CPU是不同的电子设备。
PCIe Host与PCIe设备之间的访问关系,可以通过配置CPU进行配置。系统中的任意一个PCIe设备可以分配给任意一个PCIe Host。
PCIe Host与PCIe设备之间具备一条或者多条数据访问链路,因此,PCIe Host中的VM与PCIe设备之间也具备一条或者多条数据访问链路,且访问路由可由软件任意设置。
如下所示为PCIe网络各组成部分的详细说明:
1)PCIe Switch,用于连接PCIe设备及访问该设备的PCIe Host。PCIe Switch的端口分为4类:
与其他PCIe Switch之间的互联端口简称为Fabric Port(交置端口),也被称为上行端口,用f加数字表示,例如,f8、f12等。
与PCIe设备连接的端口称为Downstream Port(下行端口),用d加数字表示,例如,d8、d12等。
与PCIe Host连接的端口称为Host Port(主机端口),用h加数字表示,例如,h0、h4等。
与配置CPU连接的端口称为Mgmt Port(管理端口),用mP表示。
2)PCIe设备,用于实现某具体功能的PCIe Endpoint(端点),例如GPU。连接至PCIe网络中的某一个PCIe Switch的Downstream Port。
3)PCIe Host,访问PCIe设备的主机系统,并给PCIe设备分配内存地址,该地址被简称为Host BAR(Base Address Register,基地址寄存器)Address,即,主机基地址寄存器地址。另外,PCIe Host负责创建虚拟机,本方案中一个PCIe Host包括一个或者一个以上虚拟机。
4)虚拟机(Virtual Machine,VM),访问PCIe设备的虚拟主机系统,由PCIe Host创建,在VM中给PCIe设备分配内存地址,该地址被简称为VM BAR Address(虚拟机基地址寄存器地址),也可称为局部基地址寄存器地址。
5)配置CPU,给PCIe设备分配全局的PCIe内存地址空间,该地址被简称为GlobalBAR Address(全局基地址寄存器地址);配置CPU负责建立PCIe设备与PCIe Host或者VM之间的访问关系,建立Global BAR Address与Host BAR Address或者VM BAR Address的映射关系。
6)配置链路,配置CPU通过该链路连接至PCIe网络内的所有PCIe Switch,并对该PCIe Switch及其下行端口的PCIe设备进行配置。
7)数据访问链路,系统中除配置链路以外的其他所有链路,用于PCIe Host或者VM与PCIe设备及PCIe设备之间相互访问的链路。
以图1为例,假设系统中PCIe设备D1至D8配置为由PCIe Host-1访问,PCIe设备D9至D16配置为由PCIe Host-2访问,并且在PCIe Host-1中配置PCIe设备D1至D4配置由VM1访问,PCIe设备D5至D8配置由VM2访问,以D1-D8为例,其与VM之间的可选路由路径如下:
表1
其中L2-1.h0表示PCIe Switch L2-1的h0端口。L1-1.f4表示PCIe Switch L1-1的f4端口。
PCIe规范中每个PCIe Switch默认只有一个上行端口,因此PCIe Host与PCIe设备之间的访问链路是唯一的。默认路由规则是报文中的PCIe Bus Number(PCIe总线序号)或者PCIe Address(PCIe地址)不在PCIe Switch所能处理的范围之内时,将默认转发到唯一的上行端口上。当PCIe Switch有多个可能的上行端口时,必须明确指定路由规则。
PCIe Host在枚举所分配的PCIe设备时,会给PCIe设备分配内存地址及Bus ID(总线标识),该内存地址被称为Host BAR Address,Bus ID称为Host Bus ID(主机总线标识)。同样,VM在枚举所分配的PCIe设备时,也会给PCIe设备分配内存地址及Bus ID,该内存地址被称为VM BAR Address(虚拟机基地址寄存器地址),Bus ID称为VM Bus ID(虚拟机总线标识)。
配置CPU负责管理系统的所有PCIe设备,也会给每个PCIe设备分配全局唯一的PCIe内存地址空间及Bus ID,该地址被称为Global BAR Address(全局基地址寄存器地址),Bus ID称为Global Bus ID(全局总线标识)。
配置CPU也会给系统内的所有PCIe Switch分配全局唯一BAR Window(基地址寄存器窗)及Bus Window(总线窗),对应的BAR Window覆盖其下行端口所有PCIe设备的GlobalBAR Address,对应的Bus Window会覆盖其下行端口所有PCIe设备的Global Bus ID。
PCIe Host的Host Port也会被分配一个全局唯一的Bus ID,称为Host的GlobalBus ID。
这里用到的PCIe switch主要有两个模式,Basic模式和Fabric模式,在本申请中用的是Fabric模式,这种模式下PCIe switch可动态配置的,转发策略是由配置CPU配置到PCIe switch的。通用的情况下PCIe switch一般都是在Basic模式下。
需要说明的是,本申请实施例所提供的用于端到端通信的报文转发的方法一般由配置CPU104和配置过的PCIe switch执行,相应地,用于端到端通信的报文转发的装置一般设置于配置CPU104中,由配置CPU104和配置过的PCIe switch共同完成端到端通信的报文转发。
应该理解,图1中的PCIe Host(主机)、PCIe Switch、PCIe设备、配置CPU的数目仅仅是示意性的。根据实现需要,可以具有任意数目的PCIe Host(主机)、PCIe Switch、PCIe设备、配置CPU。
继续参考图2,示出了根据本申请的用于端到端通信的报文转发的方法的第一个实施例的流程200。该用于端到端通信的报文转发的方法,包括以下步骤:
步骤201,响应于接收到源设备发送的用于请求读/写目标设备的第一事务层数据报文,获取源设备的全局总线标识。
在本实施例中,用于端到端通信的报文转发的方法的执行主体(例如图1所示的配置CPU)可以通过配置链路和数据访问链路从发起读/写目标设备任务的源设备接收第一事务层数据报文(TLP,Transaction Layer Packet)。其中,第一事务层数据报文包括目标设备的局部基地址寄存器地址。这里的局部基地址寄存器地址指的是虚拟机分配的VM BARAddress。例如图1中所示,PCIe设备D1-D4的局部基地址寄存器地址是由PCIe Host-1上的虚拟机VM-1分配的。如果源设备是虚拟机,则虚拟机的全局总线标识是虚拟机所属主机的全局总线标识。可根据PCIe设备的全局总线标识索引查找PCIe设备被分配的主机的全局总线标识索引。主机的主机端口也会被分配一个全局唯一的总线标识,称为主机的全局总线标识。如果源设备是PCIe设备,则PCIe设备的全局总线标识由配置CPU预先分配。
步骤202,将局部基地址寄存器地址转换成全局总线标识。
在本实施例中,当VM访问PCIe设备时,实际是通过Hypervisor(一种运行在物理服务器和操作系统之间的中间软件层)由PCIe Host访问PCIe设备,其TLP中的PCIe地址为VMBAR Address。而PCIe Switch只能转发其BAR Window及Bus Window以内的TLP。可通过PCIe设备自带的ATU(Address Translation Unit,地址转换单元)将一段基地址寄存器地址转换成总线标识。
在本实施例的一些可选的实现方式中,首先将局部基地址寄存器地址转换成全局基地址寄存器地址。然后将全局基地址寄存器地址转换成目标设备的全局总线标识。可将虚拟机分配的局部基地址寄存器地址与配置CPU分配的全局基地址寄存器地址进行映射生成局部基地址寄存器地址和全局基地址寄存器地址的映射表。根据该映射表可将收到的TLP中的局部基地址寄存器地址转换成全局基地址寄存器地址。再将全局基地址寄存器地址转换成总线标识,即为全局总线标识。
步骤203,根据源设备的全局总线标识和目标设备的全局总线标识生成第一事务层数据报文的路由信息。
在本实施例中,第一事务层数据报文的路由信息包括第一事务层数据报文经过的第一交换机的交换机标识及第一交换机的输出端口的端口号。PCIe网络中的交换机可能有多个,每个交换机有多个上行端口。根据起始地址(全局总线标识)和目的地址(目标设备的全局总线标识)可确定出第一事务层数据报文经由哪些交换机,以及交换机上哪个端口转发报文。
在本实施例的一些可选的实现方式中,根据源设备的全局总线标识和目标设备的全局总线标识确定出目标设备所连接的交换机与源设备所连接的交换机之间互联的端口的端口集合。从端口集合中确定出用于转发第一事务层数据报文的目标端口。根据目标设备所连接的交换机、源设备所连接的交换机、目标端口生成第一事务层数据报文的路由信息。当PCIe设备所在的PCIe Switch与VM宿主PCIe Host所在的PCIe Switch之间有多个Fabric Port时,则必须明确指定转发的目的端口。可将Fabric Port进行编码,然后可以指定发往特定Global Bus ID(对应PCIe设备或者PCIe Host)的TLP转发到哪个编码的FabricPort。
以PCIe Host-1中的VM1与PCIe设备D1之间存在两种可能的通信路径,以第二条路径来说明具体原理。
表2
如图1所示,PCIe Host-1上的VM读取PCIe设备D1的内存地址空间流程如下:
1、VM发送读PCIe设备D1的TLP,该TLP中包括D1的VM BAR Address。
2、TLP通过Hypervisor到PCIe Host-1。
3、配置CPU将D1的VM BAR Address转换成D1的Global BAR Address。
4、配置CPU通过D1的Global BAR Address获得D1的Global Bus ID。
5、配置CPU根据表2的第二条路由路径通知PCIe Switch L2-1将h0端口接收到的TLP路由到PCIe Switch L2-1的f4端口、D1的VM BAR Address和Global Bus ID的对应关系。
6、配置CPU根据表2的第二条路由路径通知PCIe Switch L2-2将f4端口接收到的TLP路由到PCIe Switch L2-2的f8端口、D1的VM BAR Address和Global Bus ID的对应关系,以将报文输出到与PCIe设备D1相连接的PCIe Switch L1-1。
7、PCIe Switch L1-1根据接收到的TLP中的VM BAR Address和Global Bus ID找将TLP发送到PCIe设备D1。将VM BAR Address和Global Bus ID、输出端口之间的映射关系保存到路由表中。
步骤204,向第一交换机的交换机标识所指示的第一交换机发送目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号。
在本实施例中,通知第一交换机目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号之间的对应关系。如果第一交换机有多个,则对于每个第一交换机,使得该第一交换机接收到某个目的地址为局部基地址寄存器地址的报文后,找到该局部基地址寄存器地址对应的输出端口以及全局总线标识。然后该第一交换机将第一事务层数据报文转发到输出端口。然后该输出端口连接的交换机根据全局总线标识将第一事务层数据报文发送到目标设备。第一交换机可存储目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号三者之间的对应关系,并生成路由表。配置CPU在生成路由信息后,保存该路由信息到路由信息集合中。当配置CPU接收到新的第一事务层数据报文时,判断出发送该报文的源设备的全局总线标识和接收该报文的目标设备的全局总线标识是否存在于路由信息集合的路由信息中。如果存在,则无需再配置第一交换机。第一交换机可以使用之前配置过的路由表寻找出接收到的报文中的目标设备的局部基地址寄存器地址对应的目标设备的全局总线标识以及输出端口。然后将该报文通过输出端口转发至下一跳的交换机。
本申请的上述实施例提供的方法通过将目标设备的局部基地址寄存器地址转换成全局总线标识,从而使得PCIe设备之间的TLP转发可以不经过CPU中转,从而提升了虚拟机中端到端通信的带宽。
继续参考图3,示出了根据本申请的用于端到端通信的报文转发的方法的第二个实施例的流程300。该用于端到端通信的报文转发的方法,包括以下步骤:
步骤301,响应于接收到源设备发送的用于请求读目标设备的第一事务层数据报文,获取源设备的全局总线标识。
步骤301与步骤201基本相同,该步骤中第一事务层数据报文可包括源设备的VMBAR Address,用于目标设备发送响应的TLP寻址。如果源设备为虚拟机,第一事务层数据报文可不包括VM BAR Address。
步骤302,将局部基地址寄存器地址转换成全局基地址寄存器地址。
在本实施例中,可将虚拟机分配的局部基地址寄存器地址与配置CPU分配的全局基地址寄存器地址进行映射生成局部基地址寄存器地址和全局基地址寄存器地址的映射表。根据该映射表可将收到的TLP中的局部基地址寄存器地址转换成全局基地址寄存器地址。
步骤303,将全局基地址寄存器地址转换成目标设备的全局总线标识。
在本实施例中,可通过PCIe设备自带的ATU(Address Translation Unit,地址转换单元)将一段全局基地址寄存器地址转换成全局总线标识,除了地址转换外,还能提供访问类型等信息。
步骤304,根据源设备的全局总线标识和目标设备的全局总线标识生成第一事务层数据报文的路由信息。
步骤305,向第一交换机的交换机标识所指示的第一交换机发送目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号。
步骤304-305与步骤204-205基本相同,因此不再赘述。
步骤306,接收目标设备发送的用于表征读取完成的第二事务层数据报文。
在本实施例中,由于源设备发送的是“读”目标设备的请求,因此需要目标设备发送用于表征读取完成的第二事务层数据报文。第二事务层数据报文包括目标设备的完成标识(Completer ID)。该完成标识可以是目标设备的局部基地址寄存器地址。
步骤307,将目标设备的完成标识转换成目标设备的全局总线标识。
在本实施例中,将完成标识(即局部基地址寄存器地址)转换成全局基地址寄存器地址。然后将全局基地址寄存器地址转换成目标设备的全局总线标识。可将虚拟机分配的局部基地址寄存器地址与配置CPU分配的全局基地址寄存器地址进行映射生成局部基地址寄存器地址和全局基地址寄存器地址的映射表。根据该映射表可将收到的TLP中的局部基地址寄存器地址转换成全局基地址寄存器地址。再将全局基地址寄存器地址转换成总线标识,即为全局转换成总线标识。
步骤308,根据预设的映射表查询根据目标设备的完成标识转换得到的全局总线标识对应的主机的全局总线标识。
在本实施例中,该映射表用于表征目标设备的全局总线标识与主机的全局总线标识之间的对应关系。配置CPU知道哪个主机控制哪几个PCIe设备。因此在分配全局总线标识时,可以知道目标设备的全局总线标识与主机的全局总线标识之间的对应关系。
步骤309,根据主机的全局总线标识和目标设备的全局总线标识生成第二事务层数据报文的路由信息。
在本实施例中,第二事务层数据报文的路由信息包括第二事务层数据报文经过的第二交换机的交换机标识及第二交换机的输出端口的端口号。该步骤与步骤203基本相同,因此不再赘述。
步骤310,向第二交换机的交换机标识所指示的第二交换机发送主机的全局总线标识和第二交换机的输出端口的端口号。
在本实施例中,该步骤使得第二交换机根据第二交换机的输出端口的端口号将第二事务层数据报文发送到主机。该步骤与步骤204基本相同,因此不再赘述。第二交换机可将主机的全局总线标识和第二交换机的输出端口的端口号保存到第二交换机的路由表中。将第二交换机再次接收到没有目的地址的响应报文时,可知该报文是发向主机的,可从第二交换机的路由表中查找到主机的全局总线标识和第二交换机的输出端口的端口号。然后将响应报文通过第二交换机的输出端口转发至主机。
从图3中可以看出,与图2对应的实施例相比,本实施例中的用于端到端通信的报文转发的方法的流程300突出了用于向虚拟机反馈事务层数据报文读取完成的步骤,由此,本实施例描述的方案可以减少虚拟机访问PCIe设备的事务层数据报文转发的寻址时间,并且由于事务层数据报文不经由主机所属的CPU中转,从而提升了虚拟机中端到端通信的带宽。
图1中的,PCIe Host-1和PCIe Host-2中的VM到每一个PCIe设备的路由都可以通过上述机制由软件设置,因此可充分利用多个链路来提升通信带宽。基本原则是同一个PCIe Switch下面的多个PCIe设备根据上行Fabric Port的数量进行分组,均衡的利用Fabric Port与PCIe Host进行通信。路由设置示例如下,该方案可以充分利用系统中所有Fabric链路以避免部分链路上的通信带宽瓶颈,并且可以同时通过L2-1和L2-2PCIeSwitch与PCIe设备通信,避免单个PCIe Switch的转发瓶颈。
表3
继续参考图4和图5,图4和图5示出了同一VM的所有PCIe设备之间具有一条或多条P2P数据访问链路的示例性系统架构图。其中,图4有两个第二级PCIe switch,涉及同级PCIe switch之间的路由。而图5中只有一个第一级PCIe switch。
以图4和图5所示的两级Switch的拓扑为例,假设系统中所有PCIe设备都配置为由PCIe Host-1访问,并且D1至D8PCIe设备分配由PCIe Host-1中的VM1访问,D9至D16设备分配由PCIe Host-1中的VM2访问。
以VM1中的PCIe设备D1访问其他跨PCIe Switch的PCIe设备为例,D1到D5-D8都有2条路径。同理D1到其他PCIe设备都有2条路径。依次类推,系统中任意一个PCIe设备到其他PCIe设备都存在2条通信路径。
表4
其中L2-1.d8表示PCIe Switch L2-1的d8端口。
当属于同一个VM的PCIe设备访问另外一个PCIe设备时,不管目的PCIe设备与源PCIe设备在同一个Switch或者跨Switch,其TLP中的PCIe地址为VM BAR Address。所以目的PCIe设备的VM BAR Address不在源PCIe设备所属Switch的BAR Window,而PCIe Switch只能转发其BAR Window及Bus Window以内的TLP。因此本申请通过如下图6所示的实施例的流程600实现VM中PCIe设备与PCIe设备之间的P2P报文转发:
以PCIe设备D1与D5采用如下路径进行P2P通信来说明路由规则。
表5
继续参考图6,示出了根据本申请的用于端到端通信的报文转发的方法的第三个实施例的流程600。该用于端到端通信的报文转发的方法,包括以下步骤:
步骤601,响应于接收到源设备发送的用于请求读目标设备的第一事务层数据报文,获取源设备的全局总线标识。
步骤601与步骤301基本相同,该步骤中第一事务层数据报文包括源设备的请求标识(Requester ID),用于目标设备发送响应的TLP寻址。
步骤602,将局部基地址寄存器地址转换成全局基地址寄存器地址。
在本实施例中,可将虚拟机分配的局部基地址寄存器地址与配置CPU分配的全局基地址寄存器地址进行映射生成局部基地址寄存器地址和全局基地址寄存器地址的映射表。根据该映射表可将收到的TLP中的局部基地址寄存器地址转换成全局基地址寄存器地址。
步骤603,将全局基地址寄存器地址转换成目标设备的全局总线标识。
在本实施例中,可通过PCIe设备自带的ATU(Address Translation Unit,地址转换单元)将一段全局基地址寄存器地址转换成全局总线标识,除了地址转换外,还能提供访问类型等信息。
步骤604,根据源设备的全局总线标识和目标设备的全局总线标识生成第一事务层数据报文的路由信息。
步骤605,向第一交换机的交换机标识所指示的第一交换机发送目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号。
步骤604-605与步骤604-605基本相同,因此不再赘述。
步骤606,接收目标设备发送的用于表征读取完成的第三事务层数据报文。
在本实施例中,由于源设备发送的是“读”目标设备的请求,因此需要目标设备发送用于表征读取完成的第三事务层数据报文。第三事务层数据报文包括目标设备的完成标识(Completer ID)。该完成标识可以是目标设备的局部基地址寄存器地址。
步骤607,将源设备的请求标识转换成源设备的全局总线标识。
在本实施例中,将请求标识(即局部基地址寄存器地址)转换成全局基地址寄存器地址。然后将全局基地址寄存器地址转换成源设备的全局总线标识。可将虚拟机分配的局部基地址寄存器地址与配置CPU分配的全局基地址寄存器地址进行映射生成局部基地址寄存器地址和全局基地址寄存器地址的映射表。根据该映射表可将收到的TLP中的局部基地址寄存器地址转换成全局基地址寄存器地址。再将全局基地址寄存器地址转换成总线标识,即为全局转换成总线标识。
步骤608,根据请求标识转换成的源设备的全局总线标识和目标设备的全局总线标识生成第三事务层数据报文的路由信息。
在本实施例中,第三事务层数据报文的路由信息包括第三事务层数据报文经过的第三交换机的交换机标识及第三交换机的输出端口的端口号。该步骤与步骤203基本相同,因此不再赘述。
步骤609,向第三交换机的交换机标识所指示的第三交换机发送源设备的请求标识、源设备的全局总线标识和第三交换机的输出端口的端口号。
在本实施例中,以使得第三交换机根据第三交换机的输出端口的端口号将第三事务层数据报文发送到源设备。该步骤与步骤204基本相同,因此不再赘述。第三交换机可将主机的源设备的请求标识、源设备的全局总线标识和第三交换机的输出端口的端口号保存到第三交换机的路由表中。当第三交换机再次接收到响应报文时,可从响应报文中获取目标设备的请求标识。然后可从第三交换机的路由表中查找到请求标识对应的全局总线标识和第三交换机的输出端口的端口号。然后将响应报文通过第三交换机的输出端口转发至主机。
从图6中可以看出,与图2对应的实施例相比,本实施例中的用于端到端通信的报文转发的方法的流程600突出了用于向同一VM下的源设备反馈事务层数据报文读取完成的步骤,由此,本实施例描述的方案可以减少同一VM下PCIe设备之间的报文转发的寻址时间,并且由于事务层数据报文不经由主机所属的CPU中转,从而提升了虚拟机中端到端通信的带宽。
继续参考图7,示出了根据本申请的用于端到端通信的报文转发的方法的第四个实施例的流程700。该用于端到端通信的报文转发的方法,包括以下步骤:
步骤701,响应于接收到源设备发送的用于请求写目标设备的第一事务层数据报文,获取源设备的全局总线标识。
步骤701与步骤601基本相同,但由于本实施例仅涉及“写”过程,不需要目标设备加响应报文,因此该步骤中第一事务层数据报文不包括源设备的请求标识(RequesterID)。
步骤702,将局部基地址寄存器地址转换成全局基地址寄存器地址。
步骤703,将全局基地址寄存器地址转换成目标设备的全局总线标识。
步骤704,根据源设备的全局总线标识和目标设备的全局总线标识生成第一事务层数据报文的路由信息。
步骤705,向第一交换机的交换机标识所指示的第一交换机发送目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号。
步骤702-705与步骤602-605基本相同,因此不再赘述。
从图7中可以看出,与图2对应的实施例相比,本实施例中的用于端到端通信的报文转发的方法的流程700突出了用于向同一虚拟机下的源设备发送用于写目标设备内存空间的事务层数据报文的步骤,由此,本实施例描述的方案可以减少同一虚拟机下PCIe设备之间的报文转发的寻址时间,并且由于事务层数据报文不经由主机所属的CPU中转,从而提升了虚拟机中端到端通信的带宽。
上述实施例应用于2个PCIe设备位于不同的PCIe Switch的情况。图8所示的一级PCIe Switch的系统中所有的PCIe设备都由PCIe Host访问。假设PCIe设备D1和D2分配由PCIe Host中的VM1访问,PCIe设备D3和D4分配由PCIe Host中的VM2访问。以VM1中D1和D2之间P2P通信为例,由VM1发起D1到D2的读或者写操作,其中TLP中PCIe地址为VM BAR Adress,而该地址不在PCIe Switch的BAR Window中,因此,P2P数据默认会经过VM1的CPU。可采用图9、图10所示的流程解决P2P数据经过VM1的CPU的问题。
继续参考图9,示出了根据本申请的用于端到端通信的报文转发的方法的第五个实施例的流程900。该用于端到端通信的报文转发的方法,包括以下步骤:
步骤901,响应于接收到源设备发送的用于请求读目标设备的第一事务层数据报文,获取源设备的全局总线标识。
步骤901与步骤301基本相同,该步骤中第一事务层数据报文包括源设备的请求标识(Requester ID),用于目标设备发送响应的TLP寻址。
步骤902,将局部基地址寄存器地址转换成全局基地址寄存器地址。
在本实施例中,可将虚拟机分配的局部基地址寄存器地址与配置CPU分配的全局基地址寄存器地址进行映射生成局部基地址寄存器地址和全局基地址寄存器地址的映射表。根据该映射表可将收到的TLP中的局部基地址寄存器地址转换成全局基地址寄存器地址。
步骤903,将全局基地址寄存器地址转换成目标设备的全局总线标识。
在本实施例中,可通过PCIe设备自带的ATU(Address Translation Unit,地址转换单元)将一段全局基地址寄存器地址转换成全局总线标识,除了地址转换外,还能提供访问类型等信息。
步骤904,根据源设备的全局总线标识和目标设备的全局总线标识确定出用于连接源设备与目标设备的第四交换机。
在本实施例中,源设备和目标设备通过第四交换机直接连接,无需要其它交换机中转。因此路由信息简单,只需要知道目标设备的局部基地址寄存器地址和目标设备的全局总线标识即可转发报文。当第四交换机再次接收到来自源设备D1的报文时,通过报文中局部基地址寄存器地址查找到全局总线标识。第四交换机将报文转发到全局总线标识对应的端口。
步骤905,向第四交换机发送目标设备的局部基地址寄存器地址和目标设备的全局总线标识。
步骤905与步骤605基本相同,因此不再赘述。
步骤906,接收目标设备发送的用于表征读取完成的第四事务层数据报文。
在本实施例中,由于源设备发送的是“读”目标设备的请求,因此需要目标设备发送用于表征读取完成的第四事务层数据报文。第四事务层数据报文包括目标设备的完成标识(Completer ID)。该完成标识可以是目标设备的局部基地址寄存器地址。
步骤907,将源设备的请求标识转换成源设备的全局总线标识。
在本实施例中,将请求标识(即局部基地址寄存器地址)转换成全局基地址寄存器地址。然后将全局基地址寄存器地址转换成源设备的全局总线标识。可将虚拟机分配的局部基地址寄存器地址与配置CPU分配的全局基地址寄存器地址进行映射生成局部基地址寄存器地址和全局基地址寄存器地址的映射表。根据该映射表可将收到的TLP中的局部基地址寄存器地址转换成全局基地址寄存器地址。再将全局基地址寄存器地址转换成总线标识,即为全局转换成总线标识。
步骤908,向第四交换机发送源设备的请求标识和源设备的全局总线标识。
在本实施例中,源设备和目标设备通过第四交换机直接连接,无需要其它交换机中转。因此路由信息简单,只需要知道源设备的请求标识和源设备的全局总线标识即可转发报文。
从图9中可以看出,与图2对应的实施例相比,本实施例中的用于端到端通信的报文转发的方法的流程900突出了用于向同一交换机下的源设备反馈事务层数据报文读取完成的步骤,由此,本实施例描述的方案可以减少同一交换机下PCIe设备之间的报文转发的寻址时间,并且由于事务层数据报文不经由主机所属的CPU中转,从而提升了虚拟机中端到端通信的带宽。
继续参考图10,示出了根据本申请的用于端到端通信的报文转发的方法的第六个实施例的流程1000。该用于端到端通信的报文转发的方法,包括以下步骤:
步骤1001,响应于接收到源设备发送的用于请求写目标设备的第一事务层数据报文,获取源设备的全局总线标识。
步骤1001与步骤901基本相同,但由于本实施例仅涉及“写”过程,不需要目标设备加响应报文,因此该步骤中第一事务层数据报文不包括源设备的请求标识(RequesterID)。
步骤1002,将局部基地址寄存器地址转换成全局基地址寄存器地址。
步骤1003,将全局基地址寄存器地址转换成目标设备的全局总线标识。
步骤1004,根据源设备的全局总线标识和目标设备的全局总线标识确定出用于连接源设备与目标设备的第四交换机。
步骤1005,向第四交换机发送目标设备的局部基地址寄存器地址和目标设备的全局总线标识。
步骤1002-1005与步骤902-905基本相同,因此不再赘述。
从图10中可以看出,与图2对应的实施例相比,本实施例中的用于端到端通信的报文转发的方法的流程1000突出了用于向同一交换机下的源设备发送用于写目标设备内存空间的事务层数据报文的步骤,由此,本实施例描述的方案可以减少同一交换机下PCIe设备之间的报文转发的寻址时间,并且由于事务层数据报文不经由主机所属的CPU中转,从而提升了虚拟机中端到端通信的带宽。
进一步参考图11,作为对上述各图所示方法的实现,本申请提供了一种用于端到端通信的报文转发的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图11所示,本实施例的用于端到端通信的报文转发的装置1100包括:第一接收单元1101、第一转换单元1102、第一生成单元1103、第一发送单元1104。其中,第一接收单元1101被配置成响应于接收到源设备发送的用于请求读/写目标设备的第一事务层数据报文,获取源设备的全局总线标识,其中,第一事务层数据报文包括目标设备的局部基地址寄存器地址。第一转换单元1102被配置成将局部基地址寄存器地址转换成全局总线标识;第一生成单元1103被配置成根据源设备的全局总线标识和目标设备的全局总线标识生成第一事务层数据报文的路由信息,其中,第一事务层数据报文的路由信息包括第一事务层数据报文经过的第一交换机的交换机标识及第一交换机的输出端口的端口号。第一发送单元1104被配置成向第一交换机的交换机标识所指示的第一交换机发送目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号,以使得第一交换机根据第一交换机的输出端口的端口号将第一事务层数据报文发送到目标设备。
在本实施例中,用于端到端通信的报文转发的装置1100的第一接收单元1101、第一转换单元1102、第一生成单元1103、第一发送单元1104的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤在本实施例的一些可选的实现方式中,第一转换单元1102进一步被配置成:将局部基地址寄存器地址转换成全局基地址寄存器地址。将全局基地址寄存器地址转换成目标设备的全局总线标识。
在本实施例的一些可选的实现方式中,装置1100还包括:第二接收单元(未示出),被配置成接收目标设备发送的用于表征读取完成的第二事务层数据报文,其中,第二事务层数据报文包括目标设备的完成标识。第二转换单元(未示出),被配置成将目标设备的完成标识转换成目标设备的全局总线标识。查询单元(未示出),被配置成根据预设的映射表查询根据目标设备的完成标识转换得到的全局总线标识对应的主机的全局总线标识,其中,映射表用于表征目标设备的全局总线标识与主机的全局总线标识之间的对应关系。第二生成单元(未示出),被配置成根据主机的全局总线标识和目标设备的全局总线标识生成第二事务层数据报文的路由信息,其中,第二事务层数据报文的路由信息包括第二事务层数据报文经过的第二交换机的交换机标识及第二交换机的输出端口的端口号。第二发送单元(未示出),被配置成向第二交换机的交换机标识所指示的第二交换机发送主机的全局总线标识和第二交换机的输出端口的端口号,以使得第二交换机根据第二交换机的输出端口的端口号将第二事务层数据报文发送到主机。
在本实施例的一些可选的实现方式中,第一事务层数据报文包括源设备的请求标识。装置1100还包括:第三接收单元(未示出),被配置成接收目标设备发送的用于响应读取完成的第三事务层数据报文,其中,第三事务层数据报文包括源设备的请求标识。第三转换单元(未示出),被配置成将源设备的请求标识转换成源设备的全局总线标识。第三生成单元(未示出),被配置成根据请求标识转换成的源设备的全局总线标识和目标设备的全局总线标识生成第三事务层数据报文的路由信息,其中,第三事务层数据报文的路由信息包括第三事务层数据报文经过的第三交换机的交换机标识及第三交换机的输出端口的端口号。第三发送单元(未示出),被配置成向第三交换机的交换机标识所指示的第三交换机发送源设备的请求标识、源设备的全局总线标识和第三交换机的输出端口的端口号,以使得第三交换机根据第三交换机的输出端口的端口号将第三事务层数据报文发送到源设备。
在本实施例的一些可选的实现方式中,第一生成单元1103进一步被配置成:根据源设备的全局总线标识和目标设备的全局总线标识确定出目标设备所连接的交换机与源设备所连接的交换机之间互联的端口的端口集合。从端口集合中确定出用于转发第一事务层数据报文的目标端口。根据目标设备所连接的交换机、源设备所连接的交换机、目标端口生成第一事务层数据报文的路由信息。
下面参考图12,其示出了适于用来实现本申请实施例的电子设备(如图1所示的电子设备)的计算机系统1200的结构示意图。图12示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图12所示,计算机系统1200包括中央处理单元(CPU)1201,其可以根据存储在只读存储器(ROM)1202中的程序或者从存储部分1208加载到随机访问存储器(RAM)1203中的程序而执行各种适当的动作和处理。在RAM 1203中,还存储有系统1200操作所需的各种程序和数据。CPU 1201、ROM 1202以及RAM 1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
以下部件连接至I/O接口1205:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被中央处理单元(CPU)1201执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括第一接收单元、第一转换单元、第一生成单元和第一发送单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一接收单元还可以被描述为“响应于接收到源设备发送的用于请求读/写目标设备的第一事务层数据报文,获取源设备的全局总线标识的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:响应于接收到源设备发送的用于请求读/写目标设备的第一事务层数据报文,获取源设备的全局总线标识。将局部基地址寄存器地址转换成全局总线标识。根据源设备的全局总线标识和目标设备的全局总线标识生成第一事务层数据报文的路由信息。向第一交换机的交换机标识所指示的第一交换机发送目标设备的局部基地址寄存器地址、目标设备的全局总线标识和第一交换机的输出端口的端口号,以使得第一交换机根据第一交换机的输出端口的端口号将第一事务层数据报文发送到目标设备。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (12)
1.一种用于端到端通信的报文转发的方法,包括:
响应于接收到源设备发送的用于请求读/写目标设备的第一事务层数据报文,获取所述源设备的全局总线标识,其中,所述第一事务层数据报文包括所述目标设备的局部基地址寄存器地址;
将所述局部基地址寄存器地址转换成全局基地址寄存器地址,再根据所述全局基地址寄存器地址获得目标设备的全局总线标识;
根据所述源设备的全局总线标识和所述目标设备的全局总线标识生成所述第一事务层数据报文的路由信息,其中,所述第一事务层数据报文的路由信息包括所述第一事务层数据报文经过的第一交换机的交换机标识及所述第一交换机的输出端口的端口号;
向所述第一交换机的交换机标识所指示的第一交换机发送所述目标设备的局部基地址寄存器地址、所述目标设备的全局总线标识和所述第一交换机的输出端口的端口号,以使得所述第一交换机根据所述第一交换机的输出端口的端口号将所述第一事务层数据报文发送到所述目标设备。
2.根据权利要求1所述的方法,其中,所述将所述局部基地址寄存器地址转换成全局总线标识,包括:
将所述局部基地址寄存器地址转换成全局基地址寄存器地址;
将所述全局基地址寄存器地址转换成所述目标设备的全局总线标识。
3.根据权利要求1或2所述的方法,其中,所述方法还包括:
接收所述目标设备发送的用于表征读取完成的第二事务层数据报文,其中,所述第二事务层数据报文包括所述目标设备的完成标识;
将所述目标设备的完成标识转换成所述目标设备的全局总线标识;
根据预设的映射表查询根据所述目标设备的完成标识转换得到的全局总线标识对应的主机的全局总线标识,其中,所述映射表用于表征目标设备的全局总线标识与主机的全局总线标识之间的对应关系;
根据所述主机的全局总线标识和所述目标设备的全局总线标识生成所述第二事务层数据报文的路由信息,其中,所述第二事务层数据报文的路由信息包括所述第二事务层数据报文经过的第二交换机的交换机标识及所述第二交换机的输出端口的端口号;
向所述第二交换机的交换机标识所指示的第二交换机发送所述主机的全局总线标识和所述第二交换机的输出端口的端口号,以使得所述第二交换机根据所述第二交换机的输出端口的端口号将所述第二事务层数据报文发送到所述主机。
4.根据权利要求1或2所述的方法,其中,所述第一事务层数据报文包括所述源设备的请求标识;以及
所述方法还包括:
接收所述目标设备发送的用于响应读取完成的第三事务层数据报文,其中,所述第三事务层数据报文包括所述源设备的请求标识;
将所述源设备的请求标识转换成所述源设备的全局总线标识;
根据所述请求标识转换成的所述源设备的全局总线标识和所述目标设备的全局总线标识生成所述第三事务层数据报文的路由信息,其中,所述第三事务层数据报文的路由信息包括所述第三事务层数据报文经过的第三交换机的交换机标识及所述第三交换机的输出端口的端口号;
向所述第三交换机的交换机标识所指示的第三交换机发送所述源设备的请求标识、所述源设备的全局总线标识和所述第三交换机的输出端口的端口号,以使得所述第三交换机根据所述第三交换机的输出端口的端口号将所述第三事务层数据报文发送到所述源设备。
5.根据权利要求1或2所述的方法,其中,所述根据所述源设备的全局总线标识和所述目标设备的全局总线标识生成所述第一事务层数据报文的路由信息,包括:
根据所述源设备的全局总线标识和所述目标设备的全局总线标识确定出所述目标设备所连接的交换机与所述源设备所连接的交换机之间互联的端口的端口集合;
从所述端口集合中确定出用于转发所述第一事务层数据报文的目标端口;
根据所述目标设备所连接的交换机、所述源设备所连接的交换机、所述目标端口生成所述第一事务层数据报文的路由信息。
6.一种用于端到端通信的报文转发的装置,包括:
第一接收单元,被配置成响应于接收到源设备发送的用于请求读/写目标设备的第一事务层数据报文,获取所述源设备的全局总线标识,其中,所述第一事务层数据报文包括所述目标设备的局部基地址寄存器地址;
第一转换单元,被配置成将所述局部基地址寄存器地址转换成全局基地址寄存器地址,再根据所述全局基地址寄存器地址获得目标设备的全局总线标识;
第一生成单元,被配置成根据所述源设备的全局总线标识和所述目标设备的全局总线标识生成所述第一事务层数据报文的路由信息,其中,所述第一事务层数据报文的路由信息包括所述第一事务层数据报文经过的第一交换机的交换机标识及所述第一交换机的输出端口的端口号;
第一发送单元,被配置成向所述第一交换机的交换机标识所指示的第一交换机发送所述目标设备的局部基地址寄存器地址、所述目标设备的全局总线标识和所述第一交换机的输出端口的端口号,以使得所述第一交换机根据所述第一交换机的输出端口的端口号将所述第一事务层数据报文发送到所述目标设备。
7.根据权利要求6所述的装置,其中,所述第一转换单元进一步被配置成:
将所述局部基地址寄存器地址转换成全局基地址寄存器地址;
将所述全局基地址寄存器地址转换成所述目标设备的全局总线标识。
8.根据权利要求6或7所述的装置,其中,所述装置还包括:
第二接收单元,被配置成接收所述目标设备发送的用于表征读取完成的第二事务层数据报文,其中,所述第二事务层数据报文包括所述目标设备的完成标识;
第二转换单元,被配置成将所述目标设备的完成标识转换成所述目标设备的全局总线标识;
查询单元,被配置成根据预设的映射表查询根据所述目标设备的完成标识转换得到的全局总线标识对应的主机的全局总线标识,其中,所述映射表用于表征目标设备的全局总线标识与主机的全局总线标识之间的对应关系;
第二生成单元,被配置成根据所述主机的全局总线标识和所述目标设备的全局总线标识生成所述第二事务层数据报文的路由信息,其中,所述第二事务层数据报文的路由信息包括所述第二事务层数据报文经过的第二交换机的交换机标识及所述第二交换机的输出端口的端口号;
第二发送单元,被配置成向所述第二交换机的交换机标识所指示的第二交换机发送所述主机的全局总线标识和所述第二交换机的输出端口的端口号,以使得所述第二交换机根据所述第二交换机的输出端口的端口号将所述第二事务层数据报文发送到所述主机。
9.根据权利要求6或7所述的装置,其中,所述第一事务层数据报文包括所述源设备的请求标识;以及
所述装置还包括:
第三接收单元,被配置成接收所述目标设备发送的用于响应读取完成的第三事务层数据报文,其中,所述第三事务层数据报文包括所述源设备的请求标识;
第三转换单元,被配置成将所述源设备的请求标识转换成所述源设备的全局总线标识;
第三生成单元,被配置成根据所述请求标识转换成的所述源设备的全局总线标识和所述目标设备的全局总线标识生成所述第三事务层数据报文的路由信息,其中,所述第三事务层数据报文的路由信息包括所述第三事务层数据报文经过的第三交换机的交换机标识及所述第三交换机的输出端口的端口号;
第三发送单元,被配置成向所述第三交换机的交换机标识所指示的第三交换机发送所述源设备的请求标识、所述源设备的全局总线标识和所述第三交换机的输出端口的端口号,以使得所述第三交换机根据所述第三交换机的输出端口的端口号将所述第三事务层数据报文发送到所述源设备。
10.根据权利要求6或7所述的装置,其中,所述第一生成单元进一步被配置成:
根据所述源设备的全局总线标识和所述目标设备的全局总线标识确定出所述目标设备所连接的交换机与所述源设备所连接的交换机之间互联的端口的端口集合;
从所述端口集合中确定出用于转发所述第一事务层数据报文的目标端口;
根据所述目标设备所连接的交换机、所述源设备所连接的交换机、所述目标端口生成所述第一事务层数据报文的路由信息。
11.一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810708342.7A CN108471384B (zh) | 2018-07-02 | 2018-07-02 | 用于端到端通信的报文转发的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810708342.7A CN108471384B (zh) | 2018-07-02 | 2018-07-02 | 用于端到端通信的报文转发的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108471384A CN108471384A (zh) | 2018-08-31 |
CN108471384B true CN108471384B (zh) | 2020-07-28 |
Family
ID=63260121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810708342.7A Active CN108471384B (zh) | 2018-07-02 | 2018-07-02 | 用于端到端通信的报文转发的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108471384B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109831434B (zh) * | 2019-01-31 | 2021-03-02 | 西安微电子技术研究所 | 一种基于自定义交换策略的多协议通信交换控制器 |
CN110880998B (zh) * | 2019-12-03 | 2022-09-20 | 锐捷网络股份有限公司 | 一种基于可编程器件的报文传输方法及装置 |
CN113498510B (zh) * | 2020-01-22 | 2024-07-16 | 华为技术有限公司 | 一种PCIe的数据传输方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150527A (zh) * | 2007-11-09 | 2008-03-26 | 杭州华三通信技术有限公司 | 一种pcie数据传输的方法、系统及设备 |
CN101202634A (zh) * | 2007-11-29 | 2008-06-18 | 杭州华三通信技术有限公司 | 提高带宽利用率的单板和数据传输系统以及方法 |
CN101206629A (zh) * | 2006-12-19 | 2008-06-25 | 国际商业机器公司 | 在运行的PCIe架构中热插/拔新组件的系统和方法 |
CN101770345A (zh) * | 2008-12-31 | 2010-07-07 | 成都市华为赛门铁克科技有限公司 | 建立逻辑地址空间的方法、访问存储装置的方法及存储架构 |
WO2010138230A2 (en) * | 2009-05-29 | 2010-12-02 | Intel Corporation | Method and apparatus for enabling id based streams over pci express |
CN103078747A (zh) * | 2012-12-28 | 2013-05-01 | 华为技术有限公司 | PCIe交换机及其工作方法 |
CN103117929A (zh) * | 2013-01-31 | 2013-05-22 | 中国科学院计算技术研究所 | 一种基于PCIe数据交换的通信方法及系统 |
CN103166874A (zh) * | 2013-03-25 | 2013-06-19 | 杭州华三通信技术有限公司 | 一种报文转发方法及设备 |
US8995302B1 (en) * | 2013-01-16 | 2015-03-31 | Pmc-Sierra Us, Inc. | Method and apparatus for translated routing in an interconnect switch |
US9003090B1 (en) * | 2014-03-25 | 2015-04-07 | DSSD, Inc. | PCI express fabric routing for a fully-connected mesh topology |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140237156A1 (en) * | 2012-10-25 | 2014-08-21 | Plx Technology, Inc. | Multi-path id routing in a pcie express fabric environment |
-
2018
- 2018-07-02 CN CN201810708342.7A patent/CN108471384B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101206629A (zh) * | 2006-12-19 | 2008-06-25 | 国际商业机器公司 | 在运行的PCIe架构中热插/拔新组件的系统和方法 |
CN101150527A (zh) * | 2007-11-09 | 2008-03-26 | 杭州华三通信技术有限公司 | 一种pcie数据传输的方法、系统及设备 |
CN101202634A (zh) * | 2007-11-29 | 2008-06-18 | 杭州华三通信技术有限公司 | 提高带宽利用率的单板和数据传输系统以及方法 |
CN101770345A (zh) * | 2008-12-31 | 2010-07-07 | 成都市华为赛门铁克科技有限公司 | 建立逻辑地址空间的方法、访问存储装置的方法及存储架构 |
WO2010138230A2 (en) * | 2009-05-29 | 2010-12-02 | Intel Corporation | Method and apparatus for enabling id based streams over pci express |
CN103078747A (zh) * | 2012-12-28 | 2013-05-01 | 华为技术有限公司 | PCIe交换机及其工作方法 |
US8995302B1 (en) * | 2013-01-16 | 2015-03-31 | Pmc-Sierra Us, Inc. | Method and apparatus for translated routing in an interconnect switch |
CN103117929A (zh) * | 2013-01-31 | 2013-05-22 | 中国科学院计算技术研究所 | 一种基于PCIe数据交换的通信方法及系统 |
CN103166874A (zh) * | 2013-03-25 | 2013-06-19 | 杭州华三通信技术有限公司 | 一种报文转发方法及设备 |
US9003090B1 (en) * | 2014-03-25 | 2015-04-07 | DSSD, Inc. | PCI express fabric routing for a fully-connected mesh topology |
Non-Patent Citations (3)
Title |
---|
Jian Xu;Jianquan Zhang;Jian Zhang.Design of embedded heterogeneous platform based on PCIE non-transparent bridge.《2016 2nd IEEE International Conference on Computer and Communications (ICCC)》.2016, * |
基于FPGA的PCIe总线接口的DMA控制器的设计;王之光; 高清运;《电子技术应用》;20180106;全文 * |
基于单根I/O虚拟化的多根I/O资源池化方法;王展;曹政;刘小丽;苏勇;李强;《计算机研究与发展》;20150115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108471384A (zh) | 2018-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9678918B2 (en) | Data processing system and data processing method | |
US8774055B2 (en) | Switching method | |
CN108984465B (zh) | 一种消息传输方法及设备 | |
US11829309B2 (en) | Data forwarding chip and server | |
CN108959127B (zh) | 地址转换方法、装置及系统 | |
CN113296884B (zh) | 虚拟化方法、装置、电子设备、介质及资源虚拟化系统 | |
CN108471384B (zh) | 用于端到端通信的报文转发的方法和装置 | |
US10621124B2 (en) | Method, device and computer program product for enabling SR-IOV functions in endpoint device | |
US20210374086A1 (en) | System and method for scheduling sharable pcie endpoint devices | |
US9753883B2 (en) | Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory | |
WO2020259269A1 (zh) | 转发报文的方法、中间设备和计算机设备 | |
CN113282341B (zh) | 一种业务控制方法、装置、设备和介质 | |
CN112804366A (zh) | 用于解析域名的方法和装置 | |
US11704146B2 (en) | Network transparency on virtual machines using socket impersonation | |
CN116418848A (zh) | 网络节点的配置和访问请求的处理方法、装置 | |
CN113630300A (zh) | 用于报文传输的方法和节点 | |
US20240104045A1 (en) | System and method for ghost bridging | |
CN111782268B (zh) | 分配硬件资源的方法、装置、设备和计算机可读介质 | |
US20230254250A1 (en) | Grouping endpoints of a network for nat to organize ip address space for policy applications | |
CN117280331A (zh) | 用于处理来自通信网络中的外围设备的请求传输的技术 | |
CN116204463A (zh) | 数据处理方法及系统、电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |