CN110688237A - 转发报文的方法、中间设备和计算机设备 - Google Patents

转发报文的方法、中间设备和计算机设备 Download PDF

Info

Publication number
CN110688237A
CN110688237A CN201910786539.7A CN201910786539A CN110688237A CN 110688237 A CN110688237 A CN 110688237A CN 201910786539 A CN201910786539 A CN 201910786539A CN 110688237 A CN110688237 A CN 110688237A
Authority
CN
China
Prior art keywords
unit
address information
network adapter
cpu
information
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.)
Granted
Application number
CN201910786539.7A
Other languages
English (en)
Other versions
CN110688237B (zh
Inventor
李涛
黄磊
孙贝磊
耿云志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN110688237A publication Critical patent/CN110688237A/zh
Priority to EP20833292.4A priority Critical patent/EP3813308A4/en
Priority to PCT/CN2020/094995 priority patent/WO2020259269A1/zh
Priority to US17/171,344 priority patent/US11604742B2/en
Application granted granted Critical
Publication of CN110688237B publication Critical patent/CN110688237B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3808Network interface controller

Abstract

本申请提供一种转发报文的方法、中间设备和计算机设备。本申请提供的计算机设备包括CPU、网络适配器、总线和中间设备,所述中间设备通过所述总线分别与所述CPU和所述网络适配器连接,用于建立代理单元的地址信息与功能单元的地址信息之间的对应关系,并根据所述对应关系,实现所述CPU与所述网络适配器之间报文的转发。所述CPU可以不再通过其它CPU实现报文的转发,省去了转发到其它CPU时的软件转换等操作,降低了发送数据报文或命令报文时的时延。同时,也能够避免因CPU间通信总线带宽不足导致的时延过大的问题。

Description

转发报文的方法、中间设备和计算机设备
技术领域
本申请涉及信息技术领域,尤其涉及一种转发报文的方法、中间设备和计算机设备。
背景技术
随着多核处理器、虚拟化技术、分布式存储等技术的兴起,产生了一种新型的计算模式:云计算。云计算是一种基于网络的、可配置的共享计算资源池,能够通过网络提供动态易扩展的资源。因此,虚拟化技术成为云计算的一种重要技术特点,虚拟化通常包括资源虚拟化和应用虚拟化等。
由于云计算应用的不断深入,以及对大数据处理需求的不断扩大,具备性能强大、可用性高的2路、4路或8路服务器被广泛应用。
以2路服务器为例,通常配置2个中央处理器(central processor unit,CPU)和单个网络适配器。在这种配置下,当一个CPU需要通过其它CPU与网络适配器连接时,来自该CPU的报文的转发会存在转发时延较大的问题。
发明内容
本申请实施例提供一种转发报文的方法、中间设备和计算机设备,以降低由报文转发带来的时延较大的问题,提高报文发送的效率。
第一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括第一中央处理器CPU、网络适配器和总线,其特征在于,所述计算机设备还包括中间设备,所述中间设备通过所述总线分别与所述第一CPU和所述网络适配器连接,所述网络适配器包括多个基于虚拟化技术产生的功能单元;
所述中间设备,用于获取所述网络适配器中第一功能单元的信息,并为所述第一功能单元分配地址;
所述第一CPU,用于获取所述中间设备中第一代理单元的信息,为所述第一代理单元分配地址,并将所述第一代理单元的地址信息发送给所述中间设备;其中,所述第一代理单元是所述第一功能单元的代理;
所述中间设备,还用于根据所述第一代理单元的地址信息,建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,并根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,实现所述第一CPU与所述网络适配器之间报文的转发。
上述计算机设备中的中间设备能够实现报文在所述第一CPU与所述网络适配器之间的转发;所述第一CPU可以不再通过其它CPU实现报文与所述网络适配器之间的转发,省去了转发到其它CPU时的软件转换等操作,降低了转发报文时的时延。并且,由于不再通过CPU之间的通信总线转发报文,不会出现因CPU之间通信总线带宽不足导致的时延过大的问题。
可选的,所述报文包括数据报文或命令报文。所述数据报文包括但不限于需要读写的数据,所述命令报文包括但不限于需要发送的控制命令或控制消息。
可选的,所述总线可以是快捷外围部件互连标准(Peripheral ComponentInterconnect Express,PCIe)总线或超级通道互联(Ultra Path Interconnect,UPI)总线。当所述总线是PCIe总线时,所述中间设备作为PCIe的根节点,通过PCIe枚举发现所述网络适配器,并获取所述网络适配器中功能单元的信息。所述功能单元用于实现所述网络适配器的功能,所述功能单元可以包括物理功能(physical function,PF)PF或虚拟功能(virtual function,VF)。
可选的,所述第一功能单元是所述网络适配器包括的多个基于虚拟化技术产生的功能单元中的一个。
可选的,所述第一代理单元是所述第一功能单元的代理,即所述第一代理单元是所述中间设备中用于代理所述第一功能单元的功能的单元。例如,当所述第一功能单元是PF时,所述第一代理单元是所述PF的代理单元;当所述第一功能单元是VF时,所述第一代理单元是所述VF的代理单元。
可选的,所述第一代理单元是所述中间设备中包括的多个功能单元中的一个,所述第一代理单元用于实现网络适配器的功能。
可选的,所述第一代理单元的信息是用于标识所述第一代理单元的信息。所述用于标识所述第一代理单元的信息,可以存储在所述中间设备的端点端口的寄存器中。所述第一CPU在通过PCIe枚举所述中间设备时,通过获取所述端点端口的寄存器中的信息,获取所述第一代理单元的信息。可选的,所述端点端口的寄存器中存储的是作为代理单元的PF的信息。
可选的,所述中间设备还用于存储所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系。
当所述总线是PCIe总线时,所述第一CPU作为PCIe的根节点,通过PCIe枚举发现所述中间设备,并获取所述中间设备中所述第一代理单元的信息。所述第一CPU在PCIe枚举中发现中间设备中的所述第一代理单元信息后,为发现的所述第一代理单元分配地址信息,分配的地址信息包括但不限于分配总线设备功能(Bus Device Function,BDF)和基地址寄存器(base address register,Bar)空间地址信息。
在一种可能的设计中,所述计算机设备还包括第二CPU;所述第二CPU通过所述总线分别与所述第一CPU和所述中间设备连接;所述中间设备,还用于获取所述网络适配器中第二功能单元的信息,并为所述第二功能单元分配地址,所述第二功能单元用于实现所述网络适配器的功能;所述第二CPU,用于获取所述中间设备中第二代理单元的信息,为所述第二代理单元分配地址,并将所述第二代理单元的地址信息发送给所述中间设备;其中,所述第二代理单元是所述第二功能单元的代理;所述中间设备,还用于根据所述第二代理单元的地址信息,建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,并根据所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,实现所述第二CPU与所述网络适配器之间报文的转发。
相对于所述计算机设备中没有所述中间设备时,所述第一CPU需要收发的报文,需要通过与所述第二CPU之间的总线以及所述第二CPU,才能转发到所述网络适配器。本申请实施例提供的上述计算机设备中,所述第一CPU通过所述中间设备实现了报文的转发,省去了转发到所述第二CPU时的软件转换等操作,降低了转发报文时的时延。并且,由于不再通过所述第二CPU之间的通信总线转发报文,不会出现因通信总线带宽不足导致的时延过大的问题。
可选的,所述第二代理单元是所述第二功能单元的代理,即所述第二代理单元是所述中间设备中用于代理所述第二功能单元的功能的单元。例如,当所述第二功能单元是PF时,所述第二代理单元是所述PF的代理单元;当所述第二功能单元是VF时,所述第二代理单元是所述VF的代理单元。
可选的,所述第二代理单元的信息是用于标识所述第二代理单元的信息。所述用于标识所述第二代理单元的信息,可以存储在所述中间设备的端点端口的寄存器中。所述第二CPU在通过PCIe枚举所述中间设备时,通过获取所述端点端口的寄存器中的信息,获取所述第二代理单元的信息。可选的,所述端点端口的寄存器中存储的是作为代理单元的PF的信息。
可选的,所述中间设备还用于存储所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系。
当所述总线是PCIe总线时,所述第二CPU作为PCIe的根节点,通过PCIe枚举发现所述中间设备,并获取所述中间设备中所述第二代理单元的信息。所述第二CPU在PCIe枚举中发现中间设备中的所述第二代理单元信息后,为发现的所述第二代理单元分配地址信息,分配的地址信息包括但不限于BDF和Bar空间地址信息。
在一种可能的设计中,所述计算机设备还包括第二CPU;
所述第二CPU通过所述总线分别与所述第一CPU和所述网络适配器连接;
所述网络适配器,还用于实现所述第二CPU与网络之间报文的转发。
上述计算机设备中的所述第二CPU需要收发的报文通过所述网络适配器转发,而所述第一CPU需要收发的报文通过所述中间设备转发;省去了所述第一CPU转发到所述第二CPU时的软件转换等操作,降低了转发报文时的时延。并且,由于所述第一CPU需要收发的报文不再通过所述第二CPU转发,不会出现因通信总线带宽不足导致的时延过大的问题。
在一种可能的设计中,所述中间设备包括:控制器和存储器;
所述控制器,用于获取所述第一功能单元的信息,为所述第一功能单元分配地址并根据所述第一代理单元的地址信息建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述存储器,用于存储所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述控制器,还用于根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,实现所述第一CPU与所述网络适配器之间报文的转发。
在一种可能的设计中,所述第一CPU获取所述中间设备中第一代理单元的信息,为所述第一代理单元分配地址包括:
所述第一CPU通过枚举所述中间设备,获取所述中间设备中第一代理单元的信息,并为所述第一代理单元分配地址。
在一种可能的设计中,所述第二CPU获取所述中间设备中第二代理单元的信息,为所述第二代理单元分配地址包括:
所述第二CPU通过枚举所述中间设备,获取所述中间设备中第二代理单元的信息,并为所述第二代理单元分配地址。
在一种可能的设计中,所述中间设备获取所述网络适配器中第一功能单元的信息,并为所述第一功能单元分配地址包括:
所述中间设备通过枚举所述网络适配器,从所述网络适配器获取所述第一功能单元的信息,并为所述第一功能单元分配地址。
在一种可能的设计中,所述中间设备获取所述网络适配器中第二功能单元的信息,并为所述第二功能单元分配地址包括:
所述中间设备通过枚举所述网络适配器,从所述网络适配器获取所述第二功能单元的信息,并为所述第二功能单元分配地址。
在一种可能的设计中,所述中间设备,例如所述中间设备中的控制器,还用于根据所述第一功能单元的信息,在第一端点端口中配置所述第一代理单元的信息,所述第一端点端口是所述中间设备中与所述第一CPU连接的端口。
可选的,所述第一端点端口的寄存器中包括用于标识PF的信息。所述第一端点端口的寄存器中包括的用于标识PF的信息,可以是所述中间设备在制造时就配置好的,也可以是所述控制器获取到所述网络适配器中PF和VF的信息后配置在所述第一端点端口中的。当所述第一端点端口的寄存器中包括的用于标识PF的信息,是所述控制器获取到所述网络适配器中PF和VF的信息后配置在所述第一端点端口中时,所述中间设备能够根据连接的网络适配器的具体情况配置相应的代理单元,能够更灵活地实现所述中间设备的功能。
可选的,当所述第一CPU通过PCIe枚举获取所述第一端点端口的寄存器中包括的用于标识PF的信息后,使能该PF的单根IO虚拟化(Single Root IO Virtualization,SR-IOV)配置空间的VF Enable寄存器,配置VF的属性以发现VF。所述配置VF的属性可以通过配置所述PF的SR-IOV的capability以发现VF。所述第一CPU发现的PF和VF都可以是所述第一代理单元的一种实现方式。
可选的,所述第一CPU在PCIe枚举过程中,根据获取到的PF和/或VF在PCIe拓扑中的位置,为相应的PF和VF分配BDF,即为发现的代理单元分配相应的BDF。
可选的,所述第一CPU通过枚举获取代理单元(PF’或VF’)的Bar空间大小并配置Bar空间地址的起始地址和地址长度,以配置所述第一代理单元的Bar空间地址信息。
可选的,所述第一CPU还可以通过传输层包(transaction layer packet,TLP)报文将所述第一代理单元的地址信息,包括但不限于所述第一代理单元的BDF和Bar空间地址信息,发送给所述中间设备。
在一种可能的设计中,所述中间设备,例如所述中间设备中的控制器,还用于根据所述第二功能单元的信息,在第二端点端口中配置所述第二代理单元的信息,所述第二端点端口是所述中间设备中与所述第二CPU连接的端口。
可选的,所述第二端点端口的寄存器中包括用于标识PF的信息。所述第二端点端口的寄存器中包括的用于标识PF的信息,可以是所述中间设备在制造时就配置好的,也可以是所述控制器获取到所述网络适配器中PF和VF的信息后配置在所述第二端点端口中的。当所述第二端点端口的寄存器中包括的用于标识PF的信息,是所述控制器获取到所述网络适配器中PF和VF的信息后配置在所述第二端点端口中时,所述中间设备能够根据连接的网络适配器的具体情况配置相应的代理单元,能够更灵活地实现所述中间设备的功能。
可选的,当所述第二CPU通过PCIe枚举获取所述第二端点端口的寄存器中包括的用于标识PF的信息后,使能该PF的SR-IOV配置空间的VF Enable寄存器,配置VF的属性以发现VF。所述配置VF的属性可以通过配置所述PF的SR-IOV的capability以发现VF。所述第二CPU发现的PF和VF都可以是所述第二代理单元的一种实现方式。
可选的,所述第二CPU在PCIe枚举过程中,根据获取到的PF和/或VF在PCIe拓扑中的位置,为相应的PF和VF分配BDF,即为发现的代理单元分配相应的BDF。
可选的,所述第二CPU通过枚举获取代理单元(PF和/或VF)的Bar空间大小并配置Bar空间地址的起始地址和地址长度,以配置所述第二代理单元的Bar空间地址信息。
在一种可能的设计中,所述第一功能单元的地址信息包括BDF信息和所述第一功能单元的Bar空间地址信息;所述第一代理单元的地址信息包括所述第一代理单元的BDF信息和所述第一代理单元的Bar空间地址信息。
可选的,所述第二CPU还可以通过TLP报文将所述第二代理单元的地址信息,包括但不限于所述第二代理单元的BDF和Bar空间地址信息,发送给所述中间设备。
在一种可能的设计中,所述网络适配器支持SR-IOV功能,所述功能单元包括物理功能或虚拟功能。
可选的,所述中间设备可以通过现场可编程门阵列(field programmable gatearray,FPGA)、专用集成电路(application-specific integrated circuit,ASIC)或FPGA+ASIC等设备实现。
第二方面,本申请实施例提供了一种中间设备,所述中间设备通过总线与计算机设备中的第一中央处理器CPU和网络适配器连接,所述中间设备包括控制器和存储器;
所述控制器,用于获取所述网络适配器中第一功能单元的信息,为所述第一功能单元分配地址,获取第一代理单元的地址信息,并建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;其中,所述第一功能单元为所述网络适配器中基于虚拟化技术产生的单元,所述第一代理单元是所述第一功能单元的代理;
所述存储器,用于存储所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述控制器,还用于根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,实现所述第一CPU与所述网络适配器之间报文的转发。
所述中间设备,由于存储有所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,其能够根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,能够实现其所在的计算机设备中所述第一CPU与所述网络适配器之间报文的转发。这样,能够使得所述第一CPU不再通过其它CPU将报文转发到网络适配器,省去了转发到其它CPU时的软件转换等操作,降低了发送报文时的时延。并且,由于不再通过CPU之间的通信总线转发报文,不会出现因CPU之间的通信总线带宽的不足导致的时延过大的问题。
可选的,所述报文包括数据报文或命令报文。所述数据报文包括但不限于需要读写的数据,所述命令报文包括但不限于需要发送的控制命令或控制消息。
可选的,所述第一功能单元是所述网络适配器包括的多个基于虚拟化技术产生的功能单元中的一个,所述第一功能单元用于实现所述网络适配器的功能。
可选的,所述第一代理单元是所述第一功能单元的代理,即所述第一代理单元是所述中间设备中用于代理所述第一功能单元的功能的单元。例如,当所述第一功能单元是PF时,所述第一代理单元是所述PF的代理单元;当所述第一功能单元是VF时,所述第一代理单元是所述VF的代理单元。
可选的,所述第一代理单元是所述中间设备中包括的多个功能单元中的一个,所述第一代理单元用于实现网络适配器的功能。
在一种可能的设计中,所述中间设备还与所述计算机设备中的第二CPU连接;
所述控制器,还用于获取所述网络适配器中第二功能单元的信息,为所述第二功能单元分配地址,获取第二代理单元的地址信息,并建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系;其中,所述第二功能单元用于实现所述网络适配器的功能,所述第二代理单元是所述第二功能单元的代理;
所述存储器,用于存储所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系;
所述控制器,还用于根据所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,实现所述第二CPU与所述网络适配器之间报文的转发。
上述中间设备能够实现所述第一CPU和所述第二CPU,与所述网络适配器之间报文的转发,相对于所述第一CPU需要通过所述第二CPU转发报文到所述网络适配器的方式,省去了转发到所述第二CPU时的软件转换等操作,降低了转发报文时的时延。并且,由于不再通过所述第二CPU之间的通信总线转发报文,不会出现因通信总线带宽不足导致的时延过大的问题。
可选的,所述第二代理单元是所述第二功能单元的代理,即所述第二代理单元是所述中间设备中用于代理所述第二功能单元的功能的单元。例如,当所述第二功能单元是PF时,所述第二代理单元是所述PF的代理单元;当所述第二功能单元是VF时,所述第二代理单元是所述VF的代理单元。
可选的,所述第二代理单元的信息是用于标识所述第二代理单元的信息。所述用于标识所述第二代理单元的信息,可以存储在所述中间设备的端点端口的寄存器中。所述第二CPU在通过PCIe枚举所述中间设备时,通过获取所述端点端口的寄存器中的信息,获取所述第二代理单元的信息。可选的,所述端点端口的寄存器中存储的是作为代理单元的PF的信息。
在一种可能的设计中,所述控制器,还用于通过枚举所述网络适配器,获取所述网络适配器中所述第一功能单元的信息,为所述第一功能单元分配地址信息,并将所述第一功能单元的地址信息保存在所述存储器中。
在一种可能的设计中,所述中间设备还包括第一端点端口,所述中间设备通过所述第一端点端口与所述第一CPU连接;
所述控制器,还用于根据所述第一功能单元的信息在所述第一端点端口中配置所述第一代理单元的信息。
在一种可能的设计中,所述中间设备还包括第二端点端口,所述中间设备通过所述第二端点端口与所述第二CPU连接;
所述控制器,还用于根据所述第二功能单元的信息在所述第二端点端口中配置所述第二代理单元的信息。
在一种可能的设计中,所述控制器建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系包括:
所述控制器根据接收到的所述第一CPU发送的所述第一代理单元的地址信息,建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系。
在一种可能的设计中,所述控制器建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系包括:
所述控制器根据接收到的所述第二CPU发送的所述第二代理单元的地址信息,建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系。
在一种可能的设计中,所述中间设备还包括端点端口,所述中间设备通过所述端点端口与所述第一CPU连接;所述端点端口包括预设的所述第一代理单元的信息;
所述控制器还用于,根据所述第一CPU发送的所述第一代理单元的地址信息,建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系。
第三方面,本申请实施例提供了一种报文的转发方法,所述方法包括:
获取网络适配器中功能单元的信息,为所述功能单元分配地址,获取代理单元的地址信息,并建立所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系;其中,所述功能单元是所述网络适配器包括的多个基于虚拟化技术产生的功能单元中的一个,所述代理单元是所述功能单元的代理,所述网络适配器是计算机设备与网络实现报文转发的设备;
根据所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系,实现所述计算机设备中的中央处理器CPU与所述网络适配器之间报文的转发。
上述方法能够根据所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系,实现所述CPU与所述网络适配器之间报文的转发。这样,能够使得所述CPU不再通过其它CPU将报文转发到网络适配器,省去了转发到其它CPU时的软件转换等操作,降低了发送报文时的时延。并且,由于不再通过CPU之间的通信总线转发报文,不会出现因CPU之间的通信总线带宽的不足导致的时延过大的问题。
可选的,所述报文包括数据报文或命令报文。所述数据报文包括但不限于需要读写的数据,所述命令报文包括但不限于需要发送的控制命令或控制消息。
可选的,所述功能单元用于实现所述网络适配器的功能。可选的,所述代理单元是所述功能单元的代理,即所述代理单元是所述中间设备中用于代理所述功能单元的功能的单元。例如,当所述功能单元是PF时,所述代理单元是所述PF的代理单元,当所述功能单元是VF时,所述代理单元是所述VF的代理单元。
可选的,所述代理单元是所述中间设备中包括的多个功能单元中的一个,所述代理单元用于实现网络适配器的功能。
在一种可能的设计中,所述方法还包括:
存储所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系。
在一种可能的设计中,所述方法还包括:
通过枚举所述网络适配器,获取所述网络适配器中功能单元的信息。
在一种可能的设计中,所述方法还包括:
根据所述功能单元的信息,在与所述CPU连接的端点端口中配置所述代理单元的信息。
可选的,所述端点端口的寄存器中包括用于标识PF的信息。所述端点端口的寄存器中包括的用于标识PF的信息,可以是所述中间设备在制造时就配置好的,也可以是所述控制器获取到所述网络适配器中PF和VF的信息后配置在所述端点端口中的。当所述端点端口的寄存器中包括的用于标识PF的信息,是所述控制器获取到所述网络适配器中PF和VF的信息后配置在所述端点端口中时,所述中间设备能够根据连接的网络适配器的具体情况配置相应的代理单元,能够更灵活地实现所述中间设备的功能。
在一种可能的设计中,所述建立所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系包括:
接收所述CPU发送的所述代理单元的地址信息,根据所述代理单元的地址信息,建立所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系。
在一种可能的设计中,所述地址信息包括BDF信息和Bar空间地址信息。
第四方面,本申请实施例提供了一种计算机设备,所述计算机设备包括第一中央处理器CPU、中间设备、网络适配器和总线,所述计算机设备还包括中间设备,所述中间设备通过所述总线分别与所述第一CPU和所述网络适配器连接,所述网络适配器包括多个基于虚拟化技术产生的功能单元;
所述中间设备,用于枚举所述网络适配器,获取所述网络适配器中第一功能单元的信息;
所述第一CPU,用于通过枚举发现与其连接的所述中间设备,为所述中间设备中的第一代理单元分配地址信息;其中,所述第一代理单元是所述第一功能单元的代理;
所述中间设备,还用于建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系实现所述第一CPU与所述网络适配器之间的报文转发。
上述计算机设备中的中间设备能够实现报文在所述第一CPU与所述网络适配器之间的转发;所述第一CPU可以不再通过其它CPU实现报文与所述网络适配器之间的转发,省去了转发到其它CPU时的软件转换等操作,降低了转发报文时的时延。并且,由于不再通过CPU之间的通信总线转发报文,不会出现因CPU之间通信总线带宽不足导致的时延过大的问题。
可选的,所述第一CPU还用于通过枚举将所述中间设备识别为网络适配器。
可选的,所述第一功能单元是所述网络适配器包括的多个基于虚拟化技术产生的功能单元中的一个。
可选的,所述第一代理单元是所述第一功能单元的代理,即所述第一代理单元是所述中间设备中用于代理所述第一功能单元的功能的单元。例如,当所述第一功能单元是PF时,所述第一代理单元是所述PF的代理单元;当所述第一功能单元是VF时,所述第一代理单元是所述VF的代理单元。
可选的,所述第一代理单元是所述中间设备中包括的多个功能单元中的一个,所述第一代理单元用于实现网络适配器的功能。
可选的,所述第一代理单元的信息是用于标识所述第一代理单元的信息。所述用于标识所述第一代理单元的信息,可以存储在所述中间设备的端点端口的寄存器中。所述第一CPU在通过PCIe枚举所述中间设备时,通过获取所述端点端口的寄存器中的信息,获取所述第一代理单元的信息。可选的,所述端点端口的寄存器中存储的是作为代理单元的PF的信息。
可选的,所述中间设备还用于存储所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系。
当所述总线是PCIe总线时,所述第一CPU作为PCIe的根节点,通过PCIe枚举发现所述中间设备,并获取所述中间设备中所述第一代理单元的信息。所述第一CPU在PCIe枚举中发现中间设备中的所述第一代理单元信息后,为发现的所述第一代理单元分配地址信息,分配的地址信息包括但不限于BDF和Bar空间地址信息。
可选的,本申请实施例中的枚举是发现和/或获取设备的信息,所述设备的信息包括设备中功能单元的信息。示例性的,中间设备枚举网络适配器,即中间设备根据发现和/或获取网络适配器中功能单元的信息,其中,功能单元信息包括但不限于功能单元的BDF号和Bar空间地址;CPU枚举中间设备,即CPU发现和获取中间设备中代理单元的信息,其中,代理单元的信息包括但不限于代理单元的BDF号和Bar空间地址。
在一种可能的设计中,所述第一CPU,还用于根据在枚举过程中获取到的所述第一代理单元在拓扑中的位置,为所述第一代理单元分配相应的总线设备功能BDF。
在一种可能的设计中,所述第一CPU,还用于通过枚举获取所述第一代理单元的Bar空间大小并配置Bar空间地址的起始地址和地址长度,以配置所述第一代理单元的Bar空间地址信息。
在一种可能的设计中,所述中间设备为所述网络适配器的根节点,所述网络适配器为所述中间设备的端点设备;所述中间设备为所述第一CPU的端点设备,所述第一CPU为所述中间设备的根节点。
在一种可能的设计中,所述计算机设备还包括第二CPU;
所述第二CPU通过所述总线分别与所述第一CPU和所述中间设备连接;
所述中间设备,还用于为所述网络适配器中的第二功能单元分配地址信息;
所述第二CPU,用于通过枚举发现与其连接的所述中间设备,为所述中间设备中的第二代理单元分配地址信息;其中,所述第二代理单元是所述第二功能单元的代理;
所述中间设备,还用于建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,根据所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系实现所述第二CPU与所述网络适配器之间的报文转发。
相对于所述计算机设备中没有所述中间设备时,所述第一CPU需要收发的报文,需要通过与所述第二CPU之间的总线以及所述第二CPU,才能转发到所述网络适配器。本申请实施例提供的上述计算机设备中,所述第一CPU通过所述中间设备实现了报文的转发,省去了转发到所述第二CPU时的软件转换等操作,降低了转发报文时的时延。并且,由于不再通过所述第二CPU之间的通信总线转发报文,不会出现因通信总线带宽不足导致的时延过大的问题。
可选的,所述第二CPU还用于通过枚举将所述中间设备识别为网络适配器。
可选的,所述第二代理单元是所述第二功能单元的代理,即所述第二代理单元是所述中间设备中用于代理所述第二功能单元的功能的单元。例如,当所述第二功能单元是PF时,所述第二代理单元是所述PF的代理单元;当所述第二功能单元是VF时,所述第二代理单元是所述VF的代理单元。
可选的,所述第二代理单元的信息是用于标识所述第二代理单元的信息。所述用于标识所述第二代理单元的信息,可以存储在所述中间设备的端点端口的寄存器中。所述第二CPU在通过PCIe枚举所述中间设备时,通过获取所述端点端口的寄存器中的信息,获取所述第二代理单元的信息。可选的,所述端点端口的寄存器中存储的是作为代理单元的PF的信息。
可选的,所述中间设备还用于存储所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系。
当所述总线是PCIe总线时,所述第二CPU作为PCIe的根节点,通过PCIe枚举发现所述中间设备,并获取所述中间设备中所述第二代理单元的信息。所述第二CPU在PCIe枚举中发现中间设备中的所述第二代理单元信息后,为发现的所述第二代理单元分配地址信息,分配的地址信息包括但不限于BDF和Bar空间地址信息。
在一种可能的设计中,所述计算机设备还包括第二CPU;
所述第二CPU通过所述总线分别与所述第一CPU和所述网络适配器连接;
所述网络适配器,还用于实现所述第二CPU与网络之间报文的转发。
在一种可能的设计中,所述中间设备还用于根据所述第一功能单元的信息,在第一端点端口中配置所述代理单元的信息,所述第一端点端口是所述中间设备中与所述第一CPU连接的端口。
上述计算机设备中的所述第二CPU需要收发的报文通过所述网络适配器转发,而所述第一CPU需要收发的报文通过所述中间设备转发;省去了所述第一CPU转发到所述第二CPU时的软件转换等操作,降低了转发报文时的时延。并且,由于所述第一CPU需要收发的报文不再通过所述第二CPU转发,不会出现因通信总线带宽不足导致的时延过大的问题。
在一种可能的设计中,所述中间设备包括:控制器和存储器;
所述控制器,用于建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述存储器,用于存储所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述控制器,还用于根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,实现所述第一CPU与所述网络适配器之间报文的转发。
在一种可能的设计中,所述第一功能单元的地址信息包括所述第一功能单元的总线设备功能BDF信息和所述第一功能单元的基地址寄存器Bar空间地址信息;
所述第一代理单元的地址信息包括所述第一代理单元的BDF信息和所述第一代理单元的Bar空间地址信息。
可选的,所述第一端点端口的寄存器中包括用于标识PF的信息。所述第一端点端口的寄存器中包括的用于标识PF的信息,可以是所述中间设备在制造时就配置好的,也可以是所述控制器获取到所述网络适配器中PF和VF的信息后配置在所述第一端点端口中的。当所述第一端点端口的寄存器中包括的用于标识PF的信息,是所述控制器获取到所述网络适配器中PF和VF的信息后配置在所述第一端点端口中时,所述中间设备能够根据连接的网络适配器的具体情况配置相应的代理单元,能够更灵活地实现所述中间设备的功能。
可选的,当所述第一CPU通过PCIe枚举获取所述第一端点端口的寄存器中包括的用于标识PF的信息后,使能该PF的SR-IOV配置空间的VF Enable寄存器,配置VF的属性以发现VF。所述配置VF的属性可以通过配置所述PF的SR-IOV的capability以发现VF。所述第一CPU发现的PF和VF都可以是所述第一代理单元的一种实现方式。
可选的,所述第一CPU在PCIe枚举过程中,根据获取到的PF和/或VF在PCIe拓扑中的位置,为相应的PF和VF分配BDF,即为发现的代理单元分配相应的BDF。
可选的,所述第一CPU通过枚举获取代理单元(PF’或VF’)的Bar空间大小并配置Bar空间地址的起始地址和地址长度,以配置所述第一代理单元的Bar空间地址信息。
可选的,所述第一CPU还可以通过TLP报文将所述第一代理单元的地址信息,包括但不限于所述第一代理单元的BDF和Bar空间地址信息,发送给所述中间设备。
在一种可能的设计中,所述网络适配器支持单根输入输出虚拟化SR-IOV功能,所述第一功能单元包括第一物理功能或第一虚拟功能。
本申请实施例还提供了一种计算机可读存储介质,包括程序代码,该程序代码包括用于执行第三方面提供的任一方法的部分或全部步骤的指令。
本申请实施例还提供了一种计算机可读存储介质,其上储存有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第三方面提供的任一种可能的方法。
本申请实施例还提供了一种计算机程序产品,当其在计算机上运行时,使得第三方面提供的任一方法被执行。
可以理解地,上述提供的任一种存储设备、计算机可读存储介质或计算机程序产品等均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
附图说明
下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种服务器实现方式的结构示意图;
图2A为本申请实施例提供的服务器200的一种是实现方式结构示意图;
图2B为本申请实施例提供的服务器200的另一种实现方式结构示意图;
图2C为本申请实施例提供的服务器200的再一种实现方式结构示意图;
图2D为本申请实施例提供的服务器200的再一种实现方式结构示意图;
图3为本申请实施例提供的服务器300的一种实现方式结构示意图;
图4A为图3中中间设备304建立映射表的方法流程示意图;
图4B为本申请实施例提供的BDF信息记录方式的示意图;
图4C为本申请实施例提供的Bar空间地址信息记录方式的示意图;
图4D为本申请实施例提供的PF与PF’,以及VF与VF’之间的BDF对应关系的示意图;
图4E为控制器3041建立的PF’与PF,以及VF’与VF之间的Bar空间地址之间对应关系的示意图;
图5为本申请实施例提供的中间设备304实现虚拟机与网络适配器之间转发数据报文的方法流程示意图;
图6A为本申请实施例提供的一种计算机设备600的结构示意图;
图6B为本申请实施例提供的一种计算机设备600的另一种结构示意图;
图6C为本申请实施例提供的一种计算机设备600的再一种结构示意图;
图6D为本申请实施例提供的一种计算机设备600的再一种结构示意图;
图7为本申请实施例提供的一种中间设备700的结构示意图;
图8A为本申请实施例提供的一种报文的转发方法的流程示意图;
图8B为本申请实施例提供的另一种报文的转发方法的流程示意图;
图9A为本申请实施例提供的一种计算机设备900的结构示意图;
图9B为本申请实施例提供的一种计算机设备900的另一种结构示意图;
图9C为本申请实施例提供的一种计算机设备900的再一种结构示意图;
图9D为本申请实施例提供的一种计算机设备900的再一种结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下中的至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a、b、c、a-b、a-c、b-c或a-b-c,其中a、b、c可以是单个,也可以是多个。
本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了帮助本领域技术人员更好地理解本申请的技术方案,首先对本申请实施例中所涉及到的一些概念进行介绍。
BDF:PCIe设备的中的每一项功能的唯一的标识符。每个PCIe设备可以只有一个功能,也可以拥有最多8个功能。无论一个PCIe设备拥有多少个功能,其每一个功能都有一个唯一独立的配置空间。PCIe的配置软件(例如PCIe的Rootcomplex等)能够识别出PCIe总线系统的拓扑逻辑,以及其中的每一条总线,每一个PCIe设备和PCIe设备的每一项功能,即能够识别出BDF。在BDF中,Bus Number占用8位,Device Number占用5位,Function Number占用3位。
PCIe设备枚举:PCIe体系架构一般由root complex,switch,endpoint等类型的PCIe设备组成,并且在root complex和switch中通常还会有一些embeded endpoint(这种设备对外无PCIe接口)。当PCIe设备所在的计算机系统启动后,CPU需要识别这些设备。Rootcomplex通常是采用特定的算法,例如深度优先算法,访问每一个可能的分支路径,直到不能再深入访问为止,且每个PCIe设备只访问一次。这个过程称为PCIe设备枚举。
SR-IOV技术:一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。通过SR-IOV技术,单个输入输出(input/output,I/O)资源可由多个虚拟机共享,每个虚拟机都可访问唯一的I/O资源。启用了SR-IOV并且具有适当的硬件和操作系统(operating system,OS)支持的PCIe设备(例如以太网端口)可以显示为多个单独的物理设备,每个都具有自己的PCIe配置空间。该技术抽象出两种功能类型供用户使用,分别称为PF和VF。PF是全功能的PCIe功能,可以像其他任何PCIe设备一样被发现、管理和处理。PF拥有完全配置资源,可以用于配置或控制PCIe设备。VF是与PF关联的一种功能,是一种轻量级PCIe功能,可以与PF以及与同一PF关联的其他VF共享一个或多个物理资源。VF仅允许拥有用于其自身行为的配置资源。每个实现SR-IOV的设备都可以有一个PF或多个PF,并且每个PF最多可有64,000个与其关联的VF。PF可以通过寄存器创建VF,这些寄存器设计有专用于此目的的属性。每个VF都具有一个PCIe内部空间,用于映射其寄存器集。VF设备驱动程序对寄存器集进行操作以启用其功能,并且显示为实际存在的PCIe设备。每个PF或VF在PCIe总线系统中都有一个唯一的BDF。
多PF场景:是指一个物理网卡的物理端口可以分成多个PF,即物理上只出一个端口,但在基本输入输出系统(basic input/output system,BIOS)扫描和OS下可以看到多个独立的PCIE设备,独立的网口,独立的媒体接入控制(Media Access Control,MAC)地址等。例如:Intel XL710网卡,支持40千兆以太网(Gigabit Ethernet,GE),出1个物理网口;可以将40GE的网口分成4个10GE的网口,此时就是1个物理端口分4个PF的场景。
TLP报文:PCIe总线在传输数据的时候使用事务进行传输,这种事务又称为TLP报文。TLP报文通常包含报文头,数据段,以及校验信息等。PCIe报文主要分为:内存访问读/写,I/O访问读/写,配置空间访问读/写,以及消息事务等。
Bar空间地址:每个PCIe设备(例如PF或VF)都有自己的内部空间,这部分内部空间不能直接被CPU访问。当CPU需要读取PF或VF的内部空间的数据时,首先由Root complex通过TLP报文把数据从PF或VF读到CPU可访问的内存,然后CPU从可访问的内存中读取数据;如果CPU要往PF或VF的内部空间写入数据时,则先把数据写入内存中,然后由Root complex通过TLP报文将数据写入PF或VF的内部空间中。
虚拟化:将一种形式的资源抽象成另外一种形式就是虚拟化,虚拟化本质上是一种模拟。系统虚拟化是将一台物理计算机系统(Host主机)虚拟化为一台或多台虚拟计算机(virtual machine,VM)。每台VM都有自己的硬件,如CPU、内存和各种外设,每台VM上都可以运行自己的OS和应用程序。VM拥有的硬件资源既可以是软件模拟的也可以是真实的物理硬件。
图1为服务器的一种实现方式的结构示意图。如图1所示,服务器100包括CPU101、CPU102和网络适配器103,CPU101与CPU102之间通过通信总线104连接,通信总线104包括但不限于快速路径互联(Quick Path Interconnect,QPI)、UPI或Intel加速器链路(
Figure BDA0002178217530000141
accelerator Link,IAL)总线等。CPU101与网络适配器103连接并通信,CPU102通过CPU101与网络适配器103连接并通信,网络适配器103与网络连接并通信。需要说明的是,图1只是为描述的方便,只显示了CPU和网络适配器等硬件资源,在具体实现时,图1所示的服务器100还可以包括内存、硬盘等硬件资源,以及需要运行的操作系统、应用程序等软件资源,不再赘述。
服务器100中运行一定数量的虚拟机VM。图1中以通过CPU101运行虚拟机1011,通过CPU102运行虚拟机1021为例进行说明。当虚拟机1011需要与网络进行通信(例如通过网络发送或接收数据)时,虚拟机1011通过网络适配器103与网络建立通信连接。当虚拟机1021需要与网络通信时,虚拟机1021需要通过通信总线104,经过CPU101并通过网络适配器103与网络建立通信连接。
图1中,虚拟机1011与网络适配器103直接连接,而虚拟机1021需要通过通信总线104并经过CPU101才能与网络适配器103连接。当虚拟机1021发送数据报文或命令报文经过网络适配器103转发时,需要进行相关的软件转换,包括但不限于虚拟机1021需要收发的报文协议与通信总线104的报文协议之间的转换等,这就使得虚拟机1021与网络适配器103之间转发报文的时延加大。并且,通信总线104在用于传输虚拟机1021转发到网络适配器103之间报文的同时,还会用于传输CPU101与CPU102之间需要传输的其它业务,当虚拟机1021运行数据密集型应用程序导致需要访问大量的数据时,通信总线104的带宽可能不能满足虚拟机1021传输数据对带宽的需求。这就会导致虚拟机1021收发数据报文或命令报文的时延因带宽的不足而加大。
为解决上述图1所示场景中CPU102与网络适配器之间传输数据报文或命令报文时延大的问题,本申请实施例提供一种包含中间设备的计算机设备,通过所述中间设备能够实现计算机设备中CPU与网络适配器之间数据报文或命令报文的转发,以降低CPU与网络适配器之间转发数据报文或命令报文时的时延。
下面以服务器为例,对本申请实施例提供的计算机设备进行说明。可以理解,对于其它形式的计算机设备,例如便携式电脑或终端设备,只要是两个或两个以上的处理器通过一个网络适配器与网络连接并通信,都可以参照本申请实施例提供的技术方案来实现,不再赘述。
如图2A所示,服务器200包括CPU201、CPU202、中间设备204和网络适配器203。其中,中间设备204可以通过FPGA、ASIC或FPGA+ASIC等设备实现。网络适配器203是物理网卡,用于与网络连接并实现数据报文或命令报文的转发。CPU201与CPU202之间通过通信总线205连接并通信,其中,通信总线205包括但不限于QPI总线、UPI总线、IAL总线等。CPU201和CPU202分别与中间设备204通过总线(包括但不限于PCIe总线或UPI总线)连接,中间设备204与网络适配器203之间通过总线(包括但不限于PCIe总线或UPI总线)连接。
为清楚地对本申请实施例提供的技术方案进行描述,下面以CPU201和CPU202分别通过PCIe总线与中间设备204连接,中间设备204通过PCIe总线连接与网络适配器203连接,虚拟机2011通过CPU201运行,虚拟机2021通过CPU2021运行,网络适配器203支持SR-IOV,中间设备204通过FPGA实现为例,对图2A所示的服务器200的实现方式做进一步的说明。可以理解,对于其它实现方式,例如CPU201与中间设备之间以及中间设备204与网络适配器之间通过UPI总线连接的实现方式,可以参考以PCIe总线相类似的实现方式来实现,不再赘述。
图2A中,支持SR-IOV的网络适配器203包含PF2031和PF2032。并且,在网络适配器203中,VF20311与PF2031关联,VF20321与PF2032关联。网络适配器203的端点端口2034通过PCIe总线与中间设备204的根端口2045连接。网络端口2033是网络适配器203与网络连接的端口。
中间设备204包括控制器2041、存储器2042、端点端口2043、端点端口2044和根端口2045。控制器2041用于实现对中间设备204的控制;可选的,控制器2041可以是片上系统(System-on-a-Chip,SoC)。根端口2045作为根复合体(Root complex)中的Root Port,与网络适配器203通过PCIe总线连接。所述Root complex是PCIe拓扑结构的根节点,通常包括Host bridge,Root Port和内部总线。在本申请实施例中,所述Host bridge可以通过控制器2041实现。当然,Host bridge也可以通过中间设备204中的其它控制部件或中间设备与网络适配器203之间的其它控制设备来实现,本申请实施例不限定Host bridge的具体实现方式。
通过在中间设备204实现Root complex,中间设备204中的控制器2041可以作为PCIe拓扑结构的根节点,能够通过PCIe枚举发现与根端口2045相连的PCIe端点设备:网络适配器203。例如,控制器2041通过PCIe枚举,发现网络适配器203,并进一步发现网络适配器203中的PF:PF2031和PF2032。控制器2041使能每个PF的SR-IOV配置空间的VF Enable寄存器,配置VF的属性以发现VF,例如发现VF20311和VF20321。示例性的,中间设备通过配置PF2031的SR-IOV的capability以发现VF20311,通过配置PF2032的SR-IOV的capability以发现VF20321。
控制器2041通过PCIe枚举发现PF和VF,并根据PF和VF在PCIe拓扑中的位置,为发现的PF和VF分配相应的BDF,并将分配的BDF存储在存储器2042中。例如,控制器2041将PF2031的BDF、VF20311的BDF、PF2032的BDF和VF20321的BDF,存储在存储器2042中。同时,控制器2041还通过枚举获取每个功能单元(例如PF或VF)的Bar空间大小并配置Bar空间地址。以VF20311为例,控制器2041获取VF20311的Bar空间大小,配置VF20311的Bar空间的起始地址和地址长度,配置的VF20311的Bar空间的起始地址和地址长度为VF20311的Bar空间地址信息。通过类似的实现方式,控制器2041还可以获取到PF2031的Bar空间地址、PF2032的Bar空间地址和VF20321的Bar空间地址信息。控制器2041获取到各个功能单元的Bar空间地址后,将其存储在存储器2042中。
存储器2042可以是中间设备204中独立的存储器,例如随机存取存储器(RandomAccess Memory,RAM)等,用于存储上述BDF信息和Bar空间地址信息。当然,控制器也可以将上述BDF信息和Bar空间地址信息存储在中间设备204其它的存储器中,该其它的存储器可以是非独立的存储器。本申请实施例不限定存储BDF信息和Bar空间地址信息的具体位置。
图2A中,CPU201和CPU202分别运行Root complex,使得CPU201和CPU202分别作为PCIe拓扑结构的根节点,能够通过PCIe枚举发现中间设备204为PCIe拓扑结构中的端点设备。根端口2012作为Root complex中的Root Port,与中间设备204的端点端口2043通过PCIe总线连接;根端口2022作为Root complex中的Root Port,与中间设备204中的端点端口2044通过PCIe总线连接。在本申请实施例中,以CPU实现Root complex中的Host bridge为例进行说明。在具体实现时,Host bridge也可以通过北桥芯片组,或输入/输出中心(input output hub,IOH)芯片组等实现。
端点端口2043和端点端口2044分别是中间设备204与CPU201、CPU202连接的端口。CPU201在对中间设备204进行PCIe枚举时,能够通过端点端口2043发现PF2031’,CPU202在对中间设备204进行PCIe枚举时,能够通过端点端口2044发现PF2032’。以CPU201为例,其在PCIe枚举过程中,读取端点端口2043的寄存器,该寄存器中存储有标识PF2031’的信息,CPU201根据该信息发现PF2031’。其中,标识PF2031’的信息可以是一段代码,例如“非FFFF”等。CPU201通过该非FFFF”将中间设备204识别为支持SR-IOV的端点设备。可选的,标识PF2031A’的信息还可以包括class code,CPU201通过该class code将中间设备204识别为网络适配器。
示例性的,端点端口(例如端点端口2043或端点端口2044)的寄存器中包括用于标识PF功能的信息,可以是中间设备204在制造时就配置好的,也可以是控制器2041获取到网络适配器203中PF和VF的信息后,根据网络适配器203中PF和VF的信息配置在端点端口中的。如果端点端口的寄存器中用于标识PF功能的信息是在制造时就配置好的,需要在制造中间设备204时根据可能连接的网络适配器相关信息配置相应的PF功能。如果端点端口的寄存器中用于标识PF功能的信息,是控制器2041获取到网络适配器203中PF和VF的信息后配置在端点端口中的,控制器2041可以根据与中间设备204连接的网络适配器203中PF的信息,在端点端口的寄存器中配置用于标识PF功能的信息。
以CPU201为例,CPU201通过枚举发现中间设备204,并进一步发现中间设备204中的PF2031’,使能PF2031’的SR-IOV配置空间的VF Enable寄存器,配置VF的属性以发现VF20311’。例如,CPU201通过配置PF2031’的SR-IOV的capability以发现VF20311’等。CPU201根据PF2031’和VF20311’在PCIe拓扑中的位置,为PF2031’和VF20311’分配相应的BDF。同时,CPU201还通过枚举获取PF’和VF’的Bar空间大小并配置Bar空间地址。以VF20311’为例,CPU201获取VF20311’的Bar空间大小,配置VF20311’的Bar空间的起始地址和地址长度,配置的VF20311’的Bar空间的起始地址和地址长度为VF20311’的Bar空间地址信息。
CPU201在完成枚举后,通过TLP报文将PF2031’的BDF信息和Bar空间地址信息,以及VF20311’的BDF信息和Bar空间地址信息发送给中间设备204。控制器2041根据CPU201发送的信息,建立PF2031’的BDF与PF2031的BDF之间的对应关系,以及VF20311’的BDF与VF20311的BDF之间的对应关系,并将建立的对应关系存储在存储器2042中。同时,控制器2041建立PF2031’的Bar空间地址与PF2031的Bar空间地址的对应关系,以及VF20311’的Bar空间地址与VF20311的Bar空间地址之间的对应关系,并将建立的对应关系存储在存储器2042中。
这样,PF2031’可以被看作PF2031在中间设备204中的代理,或PF2031’为中间设备204中与PF2031对应的虚拟的PF;VF20311’可以被看作VF20311在中间设备204中的代理,或VF20311’为中间设备204中与VF20311对应的虚拟的VF。CPU201通过枚举发现中间设备204具备PF的功能(PF2031’)和VF的功能(VF20311’),可以将中间设备204作为PCIe链路上的一个网络适配器,并通过中间设备204实现数据报文或命令报文的转发。中间设备204进而根据存储的对应关系,对接收到的数据报文或命令报文在中间设备204到网络适配器203之间的转发。
CPU202对中间设备204进行枚举的实现过程与上述CPU201对中间设备204进行枚举的过程类似。例如,在CPU202作为PCIe拓扑结构的根节点进行PCIe枚举时,CPU202发现PF2032’并配置VF20321’。CPU202在完成枚举后,通过TLP报文将PF2032’的BDF信息和Bar空间地址信息,以及VF20321’的BDF信息和Bar空间地址信息发送给控制器2041。控制器2041将PF2032’的BDF与PF2032的BDF之间的对应关系,以及VF20321’的BDF与VF20321的BDF之间的对应关系存储在存储器2042中。同时,控制器2041将PF2032’的Bar空间地址与PF2032的Bar空间地址的对应关系,以及VF20321’的Bar空间地址与VF20321的Bar空间地址之间的对应关系存储在存储器2042中。
这样,PF2032’可以被看作PF2032在中间设备204中的代理,或PF2032’为中间设备204中与PF2032对应的虚拟的PF;VF20321’可以被看作VF20321在中间设备204中的代理,或VF20321’为中间设备204中与VF20321对应的虚拟的VF。CPU202通过枚举发现中间设备204中的PF2032’和VF20321’,并将中间设备204作为PCIe链路上的一个网络适配器,可以通过中间设备204实现数据报文或命令报文的转发。中间设备204进而根据存储的对应关系,对接收到的数据报文或命令报文在中间设备204到网络适配器203之间的转发。
通过上述方式,对于中间设备204,通过PCIe枚举发现网络适配器203为PCIe拓扑结构中的端点设备;对于CPU201和CPU202,通过PCIe枚举发现中间设备204为PCIe拓扑结构中的端点设备。中间设备204中存储有网络适配器203中的PF与中间设备204中PF’的对应关系,以及存储有网络适配器203中的VF与中间设备204中VF’的对应关系。中间设备204可以根据建立的VF’与VF的对应关系,实现虚拟机2011、虚拟机2021与网络适配器203之间数据报文或命令报文的转发。由于中间设备204能够实现VM2021传输的数据报文或命令报文在VM2021与网络适配器203之间的转发,无需通过通信总线205再经过CPU201转发到网络适配器203,避免了软件转换等操作,降低了VM2021发送数据报文或命令报文时的时延。并且,虚拟机2021发送的数据报文或命令报文,不再通过通信总线205转发,避免了因通信总线205带宽不足导致的转发时延过大的问题。
需要说明的是,为清楚显示中间设备204的组成以及中间设备204与CPU、网络适配器之间的关系,中间设备204中的代理单元,例如PF2031’、VF20311’、PF2031’和VF20311’等,不再在图中显示。本申请其它实施例中提到的代理单元,也不再对应的中间设备中显示。
本发明实施例中,虚拟机与网络适配器之间转发的数据报文,例如上述虚拟机2011、虚拟机2021与网络适配器203之间转发的数据报文,包括但不限于虚拟机需要读写的数据;虚拟机与网络适配器之间转发的命令报文,例如上述虚拟机2011、虚拟机2021与网络适配器203之间转发的命令报文,包括但不限于虚拟机需要发送的控制命令或控制消息等。
示例性的,本申请实施例中,中间设备204对网络适配器203的枚举过程先于CPU(CPU201、CPU202)对中间设备204的枚举过程。例如,中间设备204和网络适配器203在服务器200启动时先上电,中间设备204对网络适配器203进行PCIe枚举,在获取到网络适配器203中的PF和VF信息后,CPU(CPU201、CPU202)上电,再启动对中间设备204的枚举过程。这样,中间设备204能够根据网络适配器203中PF和VF的资源情况,配置相应的PF’和VF’资源。其中,所述PF’资源是网络适配器203中PF资源的代理,所述VF’资源是网络适配器203中VF资源的代理;或,所述PF’资源为中间设备204中与网络适配器203中PF资源对应的虚拟的PF,所述VF’资源为中间设备204中与网络适配器203中VF资源对应的虚拟的VF。
示例性的,上述中间设备204和网络适配器203在服务器200启动时先上电,CPU(CPU201、CPU202)后上电的方式,包括但不限于将所述中间设备204和网络适配器203的电源与所述CPU(CPU201、CPU202)的电源分开设置并先后上电的方式来实现;或通过控制电路的器件,例如通过复杂可编程逻辑器件(complex programmable logic device,CPLD),控制中间设备204和网络适配器203先上电,再控制CPU(CPU201、CPU202)上电的方式来实现。本申请实施例对具体的实现方式不做限定。
图2A中,是以服务器200中包括CPU201、CPU 202和网络适配器203为例进行说明,在具体实现时,服务器200还可以包括两个以上的CPU。例如,服务器200中还可以包括4个CPU或8个CPU,每两个CPU通过一个网络适配器与网络通信连接。其中,对于每两个CPU的实现方式,可以参照上述CPU201和CPU202通过中间设备204的实现方式来实现,不再赘述。
以服务器200包括4个CPU为例,如图2B所示,服务器200包括CPU201、CPU202、CPU211和CPU212。其中,CPU201和CPU202共享网络适配器203,即CPU201和CPU202通过网络适配器203与网络连接;CPU211和CPU212共享网络适配器213,即CPU211和CPU212通过网络适配器213与网络连接。参考上述图2A中实现方式,服务器200中的CPU201和CPU202可以通过中间设备204与网络适配器203连接并通信,服务器200中的CPU211和CPU212可以通过中间设备214与网络适配器213连接并通信。中间设备214的实现方式,与上述中间设备204的实现方式类似。这样,不仅通过CPU202运行的VM2021发送数据报文或命令报文时的时延能够降低,通过CPU212运行的VM2121发送数据报文或命令报文时的时延也能够降低。
作为一种可选的实现方式,图2A中中间设备204的控制器2041也可以部署在中间设备204的外部。如图2C所示,控制器2041与中间设备204通过总线(例如PCIe总线)连接。示例性的,图2C中的控制器2041可以由SOC实现。图2C是以控制器2041中包括存储器2042为例进行说明;在具体实现时,存储器2042也可以位于控制器2041的外部。图2C中的存储器2042可以通过RAM等存储介质实现,用于存储PF的BDF与PF’的BDF、VF的BDF与VF’的BDF、PF的Bar空间地址与PF’的Bar空间地址以及VF的Bar空间地址与VF’的Bar空间地址之间的映射关系。
本申请实施例中,基于图2A中所描述的实现方式,在图2B和图2C所示的场景下也能够适用。例如图2B中CPU211、CPU212通过中间设备214与网络适配器213实现数据报文或命令报文的转发方式,可以参考图2A中CPU201、CPU202通过中间设备204与网络适配器203实现数据报文或命令报文的转发方式来实现。或者,图2C中控制器2041的实现方式可以参考图2A中控制器2041的实现方式来实现;或者,图2B中控制器也可以部署在中间设备204的外部等。不同的变换结合方式,都在本申请实施例覆盖的范围内,不再赘述。
作为一种可选的实现方式,如图2D所示,中间设备204可以只用于CPU202与网络适配器203之间数据报文或命令报文的转发;CPU201可以直接与网络适配器203连接并实现数据报文或命令报文的转发。在这种场景下,网络适配器203具有两个端点端口(端点端口2034和端点端口2035),CPU201和CPU202在进行PCIe枚举时通过这两个端点端口发现网络适配器203。这样,虚拟机2011收发的数据报文或命令报文,直接通过网络适配器203转发;虚拟机2021收发的数据报文或命令报文,通过中间设备204在网络适配器203之间转发,也能够降低虚拟机2021通过通信总线205收发数据报文或命令报文时的时延。
图2A至图2D是以一个CPU支持运行一个虚拟机,网络适配器支持两个PF,每个PF关联一个VF为例,对本申请实施例提供的技术方案进行的描述。在具体实现时,一个CPU可能支持运行多个虚拟机,一个网络适配器可能支持多个PF,每个PF可能关联多个VF。为进一步清楚地描述本申请实施例提供的技术方案,下面以服务器包括两个CPU和一个网络适配器,每个CPU支持运行128个VM,网络适配器支持4个PF,每个PF关联64个VF,通信总线为PCIe总线为例,对中间设备实现VM的数据报文或命令报文转发的方式进行描述。
如图3所示,服务器300包括CPU301、CPU302、中间设备304和网络适配器303。其中,中间设备304与上述中间设备204类似,可以通过FPGA、ASIC或FPGA+ASIC等设备实现。网络适配器303是物理网卡,通过PCIe总线与中间设备304连接。CPU301与CPU302之间通过通信总线305连接并通信,且CPU301和CPU302分别与中间设备304通过PCIe总线连接。其中,通信总线305包括但不限于QPI总线、UPI总线或IAL总线等。端点端口3043是中间设备304与CPU301连接的端口,端点端口3044是中间设备304与CPU302连接的端口。网络适配器303支持SR-IOV,网络适配器303的端点端口3032通过PCIe总线与中间设备304的根端口3045连接。网络端口3033是网络适配器303与网络连接的端口。
可以理解,图3只是为描述的方便,只显示了CPU和网络适配器等硬件资源,在具体实现时,图3所示的服务器300还可以包括内存、硬盘等硬件资源,以及需要运行的操作系统、应用程序等软件资源。图3中针对网络适配器303中的一个PF和一个VF的实现方式,可以参考上述图2A中网络适配器203包括一个PF和一个VF的实现方式来实现;针对中间设备304中一个PF’和一个VF’的实现方式,也可以参考上述图2A中中间设备204中的一个PF’和一个VF’的实现方式来实现。并且,图3所示的实现方式,也可以应用到上述图2B至图2D所示的应用场景中,不再赘述。
图3中,CPU301支持运行VM0-VM127,CPU302支持运行VM128-255。网络适配器303包括PF0-PF3,每个PF关联64个VF:VF0-VF63。示例性的,PF0关联的VF和PF1关联的VF分别对应于VM0-127,用于实现VM0-127中数据报文或命令报文的转发;PF2关联的VF和PF3关联的VF分别对应于VM128-255,用于实现VM128-255中数据报文或命令报文的转发。CPU301和CPU302中分别运行相应的PF驱动和VF驱动以支持相应的VM完成相应的功能。
可以理解,只是为方便描述,图3中CPU301支持运行VM0-VM127,CPU302支持运行VM128-255,且服务器300中的VM与网络适配器303中的VF数量相同且一一对应。在具体实现时,CPU301和CPU302中运行的VM的数量也可以与网络适配器303中VF的数量不同,例如,CPU301支持运行100个VM,该100个VM分别与100个VF对应,使得该100个VM分别通过对应的VF实现数据报文或命令报文的转发。本申请实施例不限定服务器300中运行的VM的数量,或网络适配器303中PF或VF的数量,只要VM有相应的VF实现数据报文或命令报文的转发的即可。
以为图3中的中间设备304建立映射表的方法为例进行说明,如图4A所示,该方法包括:
步骤400:中间设备304枚举网络适配器303;
当服务器300上电时,中间设备304作为Root complex通过端点端口3032枚举网络适配器303。
示例性的,可以是中间设备304中的控制器3041实现Root complex中的Hostbridge的功能,实现对网络适配器303的PCIe枚举。
步骤402:中间设备304获取网络适配器303中PF和VF的信息;
示例性的,中间设备304中的控制器3041通过根端口3045对网络适配器303进行PCIe枚举时,首选枚举到的是网络适配器303中的PF,即PF0-PF3。控制器3041使能各个PF的SRIOV配置空间的VF Enable寄存器,配置VF的属性,进一步枚举到每个PF关联的64个VF。这样,控制器3041通过PCIe枚举,发现网络适配器303中包括4个PF,以及每个PF关联的64个VF。
步骤404:中间设备304将各个PF的BDF信息和各个VF的BDF信息写入BDF信息表格中,并将各个PF的Bar空间地址和各个VF的Bar空间地址写入地址信息表中;
中间设备304中的控制器3041根据步骤402获取的网络适配器303中各个PF的BDF信息和各个VF的BDF信息,以BDF信息表格的形式写入存储器3042中。所述BDF信息表格可以如图4B所示。需要说明的是,图4B只是BDF信息表格的一种具体实现方式,例如以PF和VF的依次顺序为索引记录PF和VF的BDF信息。并且,图4B只是显示了PF0以及与PF0关联的VF0-63的信息,对于PF1-3以及其关联的VF的信息在BDF信息表格中记录的形式,与PF0以及与PF0关联的VF0-63记录的形式类似,不再赘述。控制器3041还将获取的各个PF的Bar空间地址信息,以及各个VF的Bar空间地址信息,以Bar空间地址信息表格的形式写入存储器3042中。图4C所示的Bar空间地址信息表,记录了PF的Bar空间地址信息和VF的Bar空间地址信息。同样的,图4C只是显示了PF0的Bar空间地址信息,以及与PF0关联的VF0-63的Bar空间地址信息,对于PF1-3以及其关联的VF的Bar空间地址信息的记录形式,与PF0以及与PF0关联的VF0-63记录的形式类似。
本申请实施例不限定记录BDF信息或Bar空间地址信息的具体形式,对于其它的实现方式,例如根据BDF标号的方式建立索引以建立BDF信息表等实现方式,也在本申请实施例保护的范围之内。
步骤406:CPU(CPU301、CPU302)枚举中间设备304,并将枚举到的各个PF’的BDF信息和各个VF’的BDF信息,以及各个PF’的Bar空间地址信息和各个VF’的Bar空间地址信息通过TLP报文发送给中间设备304;
具体的,CPU301或CPU302在枚举中间设备304时,枚举到的是多个PF’和VF’。对于枚举过程中每个PF’或VF’相关信息的获取方式,可以参考上述图2A中CPU201或CPU202枚举中间设备204时相应PF’或VF’相关信息获取方式的实现方式来实现,不再赘述。
示例性的,CPU也可以通过其它报文,例如能够用于传输地址信息的其它报文,或根据UPI协议用于传输地址信息的其它报文,将枚举到的各个PF’的BDF信息和各个VF’的BDF信息,以及各个PF’的Bar空间地址信息和各个VF’的Bar空间地址信息发送给中间设备304。
步骤408:中间设备304根据接收到的CPU(CPU301、CPU302)发送的TLP报文,将各个PF’的BDF信息和各个VF’的BDF信息,以及各个PF’的Bar空间地址和各个VF’的Bar空间地址信息存储在存储器3042中,并建立每个PF’与网络适配器303中每个PF的对应关系,以及每个VF’与网络适配器中每个VF的对应关系。
示例性的,CPU301通过TLP报文将枚举到PF0’和PF1’的信息,PF0’关联的VF0’-VF63’的信息,以及PF1’关联的VF64’-VF127’的信息发送给中间设备304后,控制器3041在存储器3042的BDF信息表和Bar空间地址信息表中记录PF0’、PF1’、VF0’-VF63’以及VF64’-VF127’的信息,以建立PF’与PF的对应关系,以及VF’与VF的对应关系。VF0’-VF127’分别与VM0-127对应,分别用于实现VM0-127中数据报文或命令报文的转发。
类似的,CPU302通过TLP报文将枚举到PF1’和PF2’的信息,PF2’关联的VF128’-VF191’的信息,以及PF3’关联VF192’-VF255’的信息发送给中间设备304后,控制器3041在存储器3042的BDF信息表和Bar空间地址信息表中记录PF2’、PF3’、VF128’-VF191’以及VF192’-VF255’的信息,以建立相应的PF’与PF的对应关系,以及VF’与VF的对应关系。
图4D为控制器3041建立的PF’与PF,以及VF’与VF之间的BDF信息表的示意图。图4E为控制器3041建立的PF’与PF,以及VF’与VF之间的Bar空间地址之间对应关系示意图。需要说明的是,图4D和图4E只是示意性的显示了部分对应关系,对于未在图4D和图4E中显示的PF’与PF,以及VF’与VF之间的对应关系,与图示中显示的方式类似。
通过上述图4A所示的方法,中间设备304通过PCIe枚举发现网络适配器303,CPU在PCIe枚举过程中发现中间设备304,中间设备304存储PF’与网络适配器303中PF的对应关系,以及VF’与网络适配器303中VF的对应关系,使得转发304能够根据存储的对应关系,实现CPU中运行的虚拟机与网络适配器之间数据报文或命令报文的转发,降低了CPU中运行的虚拟机在通过其它CPU转发数据报文或命令报文时的时延。
下面以VM128发起读请求为例,对中间设备304实现虚拟机与网络适配器之间数据报文的方法进行说明。如图5所示,所述方法包括:
步骤500:VM128发起读请求;
具体的,CPU302通过运行VM128对应的驱动,通过根端口3022发起读请求。所述读请求包括请求数据的地址信息,所述地址信息包括但不限于VM128对应的VF’的BDF信息和Bar空间地址信息。
步骤502:中间设备304接收所述读请求,将所述读请求转发给网络适配器303;
具体的,中间设备304通过端点端口3044接收所述读请求,控制器3041根据所述读请求中的地址信息(例如VM128对应的VF’的地址信息),查询存储的地址信息表,例如查询存储的BDF信息表和Bar空间地址信息表,获取与所述读请求中的地址信息(例如VM128对应的VF’的地址信息)对应的网络适配器303中的地址信息,并将所述读请求中的地址信息替换为网络适配器303中对应的地址信息。
示例性的,VM128发送的读请求的目的地址为VF128’的BDF和Bar空间地址,控制器3041通过查询存储的BDF信息表和Bar空间地址信息表,将所述读请求中VF128’的BDF和Bar空间地址,替换为与VF128’的BDF和Bar空间地址对应的网络适配器303中的BDF和Bar空间地址,并将替换后的读请求发送给网络适配器303。
步骤504:中间设备304接收所述网络适配器303发送的所述读请求的响应消息,并将所述读请求响应消息转发给VM128;
中间设备304通过根端口3045接收网络适配器303返回的所述读请求的响应消息后,查询存储的地址信息表,获取与所述读请求的响应消息中的源地址信息对应的中间设备304中的地址信息,并将所述读请求的响应消息中的源地址替换为中间设备304中对应的地址信息。
示例性的,网络适配器303发送的读请求的响应消息的源地址为与PF2关联的VF0的BDF和Bar空间地址,控制器3041通过查询存储的BDF信息表和Bar空间地址信息表,将所述读请求的响应消息中与PF2关联的VF0的BDF和Bar空间地址,替换为对应的中间设备304中的BDF和Bar空间地址,并将替换后的读请求的响应消息发送给VM128。
对于VM128发起写请求或收发命令报文等实现方式,可以基于中间设备304中存储的BDF信息表和Bar空间地址信息表,参考图5所示实现方式类似的方式实现地址的替换并转发,不再赘述。
图6A为本申请实施例提供的一种计算机设备600的结构示意图。如图6A所示,计算机设备600包括CPU601、网络适配器603和中间设备602,所述中间设备602通过所述总线分别与所述CPU601和所述网络适配器603连接,所述网络适配器603包括多个基于虚拟化技术产生的功能单元;例如所述网络适配器603包括多个基于SR-IOV虚拟化技术产生的PF或VF;
所述中间设备602,用于获取所述网络适配器603中第一功能单元的信息,并为所述第一功能单元分配地址,所述第一功能单元用于实现所述网络适配器603的功能;
所述CPU601,用于获取所述中间设备602中第一代理单元的信息,为所述第一代理单元分配地址,并将所述第一代理单元的地址信息发送给所述中间设备602;其中,所述第一代理单元是所述第一功能单元的代理;
所述中间设备602,还用于根据所述第一代理单元的地址信息,建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,并根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,实现所述CPU601与所述网络适配器603之间报文(例如数据报文或命令报文)的转发。
上述计算机设备600中包括中间设备602,该中间设备602能够实现数据报文或命令报文在CPU601与所述网络适配器603之间的转发。通过上述中间设备602建立并存储所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,并根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,能够实现数据报文或命令报文在所述CPU601与所述网络适配器603之间的转发。这样,CPU601可以不再通过其它CPU实现数据报文或命令报文与网络适配器603之间的转发,省去了转发到其它CPU时的软件转换等操作,降低了发送数据报文或命令报文时的时延。并且,由于不再通过CPU之间的通信总线转发数据报文或命令报文,不会出现因通信总线带宽不足导致的时延过大的问题。
可选的,如图6B所示,所述计算机设备600还包括CPU604;
所述CPU604通过所述总线分别与所述CPU601和所述中间设备602连接;
所述中间设备602,还用于获取所述网络适配器603中第二功能单元的信息,并为所述第二功能单元分配地址,所述第二功能单元用于实现所述网络适配器603的功能;
所述CPU604,用于获取所述中间设备602中第二代理单元的信息,为所述第二代理单元分配地址,并将所述第二代理单元的地址信息发送给所述中间设备6002;其中,所述第二代理单元是所述第二功能单元的代理;
所述中间设备602,还用于根据所述第二代理单元的地址信息,建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,并根据所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,实现数据报文或命令报文在所述CPU604与所述网络适配器603之间的转发。
可选的,如图6C所示,所述计算机设备600还包括CPU604;
所述CPU604通过所述总线分别与所述CPU601和所述网络适配器603连接;
所述网络适配器603,还用于实现数据报文或命令报文在所述CPU604与网络之间的转发。
本申请实施例中,如图6D所示,中间设备602还可以包括:控制器6021和存储器6022。所述控制器6021,用于获取所述第一功能单元的信息,为所述第一功能单元分配地址并根据所述第一代理单元的地址信息建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述存储器6022,用于存储所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述控制器6021,还用于根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,实现所述数据报文或命令报文在所述CPU601与所述网络适配器603之间的转发。
示例性的,所述控制器6021配置所述第一代理单元可以通过在端点端口6023中配置所述第一代理单元的信息来实现。所述端点端口6023是所述中间设备602中与所述CPU601连接的端口。
在具体实现时,图6A至图6D所示的计算机设备600的实现方式,可以参考上述图2A至图2D中服务器200,以及图3中服务器300的实现方式来实现。例如,中间设备602可以参考图2A至图2D中中间设备204的实现方式来实现,也可以参考图3中中间设备304的实现方式来实现;控制器6021可以参考图2A至图2D中控制器2041的实现方式来实现,也可以参考图3中控制器3041的实现方式来实现;CPU601可以参考图2A至图2D中CPU202的实现方式来实现,也可以参考图3中CPU302的实现方式来实现;CPU604可以参考图2A至图2D中CPU201的实现方式来实现,也可以参考图3中CPU301的实现方式来实现;网络适配器603可以参考图2A至图2D中网络适配器203的实现方式来实现,也可以参考图3中网络适配器303的实现方式来实现。并且,上述图6A和图6B所描述的实施例中的所述第一功能单元或所述第二功能单元,可以参考上述2A至图2D中或图3中提到的PF和/或VF的实现方式来实现,所述第一代理单元或所述第二代理单元可以参考上述2A至图2D中或图3中提到的PF’和/或VF’的实现方式来实现。不再赘述。
可以理解,当上述中间设备602通过FPGA芯片实现时,该FPGA芯片可以包括控制器6021和存储器6022。当上述中间设备602通过ASIC芯片实现时,所述控制器的功能可以通过ASIC芯片实现,所述存储器6022的功能,可以由与该ASIC芯片连接的存储器(例如RAM等存储器)实现存储器6022的功能。示例性的,当所述中间设备602通过ASIC实现时,可以由ASIC实现控制器6021的功能,与所述ASIC连接的存储器实现所述存储器6022的功能;当所述中间设备602通过FPGA+ASIC实现时,可以由ASIC实现控制器6021的功能,所述FPGA实现所述存储器6022的功能;或当所述中间设备602通过FPGA+ASIC实现时,可以由FPGA和ASIC共同实现控制器6021的功能,所述FPGA实现所述存储器6022的功能,不再赘述。
图7为本申请实施例提供的一种中间设备700的结构示意图,中间设备700通过总线与计算机设备中的第一中央处理器CPU和网络适配器连接。如图7所示,中间设备700包括控制器701和存储器702;
所述控制器701,用于获取所述网络适配器中第一功能单元的信息,为所述第一功能单元分配地址,获取第一代理单元的地址信息,并建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;其中,所述第一功能单元为所述网络适配器中基于虚拟化技术产生的单元,所述第一代理单元是所述第一功能单元的代理;
所述存储器702,用于存储所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述控制器701,还用于根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,实现所述第一CPU与所述网络适配器之间报文,例如数据报文或命令报文,的转发。
上述中间设备700,由于存储有所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,其能够根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,能够实现所述第一CPU与所述网络适配器之间数据报文或命令报文的转发。这样,能够使得所述第一CPU不再通过其它CPU将数据报文或命令报文转发到网络适配器,省去了转发到其它CPU时的软件转换等操作,降低了发送数据报文或命令报文时的时延。并且,由于不再通过CPU之间的通信总线转发数据报文或命令报文,不会出现因CPU之间的通信总线带宽的不足导致的时延过大的问题。
可选的,所述中间设备还与所述计算机设备中的第二CPU连接;
所述控制器,还用于获取所述网络适配器中第二功能单元的信息,为所述第二功能单元分配地址,获取第二代理单元的地址信息,并建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系;其中,所述第二功能单元用于实现所述网络适配器的功能,所述第二代理单元是所述第二功能单元的代理;
所述存储器,用于存储所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系;
所述控制器,还用于根据所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,实现所述第二CPU与所述网络适配器之间数据报文或命令报文的转发。
如图7所示,上述中间设备700还可以包括端点端口703,所述中间设备700通过所述端点端口703与所述第一CPU连接;所述控制器701还用于根据所述第一功能单元的信息在所述端点端口703中配置所述第一代理单元的信息。
控制器701将所述第一代理单元的信息配置在端点端口703后,中间设备700在所述第一CPU枚举过程中,能够呈现为一个端点设备,能够使得所述第一CPU从端点端口703中获取代理单元的信息。
上述中间设备700具体的实现方式,可以参考上述图2A至图2D中中间设备204,以及图3中中间设备304的实现方式来实现。并且,中间设备700的实现方式中所描述的所述第一功能单元或所述第二功能单元,可以参考上述2A至图2D中或图3中提到的PF和/或VF的实现方式来实现,所述第一代理单元或所述第二代理单元可以参考上述2A至图2D中或图3中提到的PF’和/或VF’的实现方式来实现。不再赘述。
可以理解,图7是中间设备700通过FPGA芯片实现的结构示意图。当中间设备700通过ASIC芯片实现时,所述控制器701的功能可以通过ASIC芯片实现,所述存储器702的功能可以由与该ASIC芯片连接的存储器(例如RAM等存储器)实现。示例性的,当所述中间设备700通过ASIC实现时,可以由ASIC实现控制器701的功能,与所述ASIC连接的存储器实现所述存储器702的功能;当所述中间设备700通过FPGA+ASIC实现时,可以由ASIC实现控制器701的功能,所述FPGA实现所述存储器702的功能;或当所述中间设备700通过FPGA+ASIC实现时,可以由FPGA和ASIC共同实现控制器701的功能,所述FPGA实现所述存储器702的功能,不再赘述。
图8为本申请实施例提供的一种报文的转发方法的流程示意图。如图8所示,所述方法包括:
步骤800:获取网络适配器中功能单元的信息,为所述功能单元分配地址,获取代理单元的地址信息,并建立所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系;其中,所述功能单元是所述网络适配器包括的多个基于虚拟化技术产生的功能单元中的一个,所述代理单元是所述功能单元的代理,所述网络适配器是计算机设备与网络实现报文(例如数据报文或命令报文)转发的设备;
步骤802:根据所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系,实现所述计算机设备中的CPU与所述网络适配器之间报文(例如数据报文或命令报文)的转发。
上述方法能够根据所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系,实现计算机设备中CPU与所述网络适配器之间数据报文或命令报文的转发。特别是所述计算机设备中包括两个以上CPU,且该两个以上CPU需要通过所述网络适配器与网络连接时,能够使得其中一个CPU不再通过其它CPU将数据报文或命令报文转发到网络适配器,省去了转发到其它CPU时的软件转换等操作,降低了发送数据报文或命令报文时的时延。并且,由于不再通过CPU之间的通信总线转发数据报文或命令报文,不会出现因CPU之间的通信总线带宽的不足导致的时延过大的问题。
在另外一种实现方式中,如图8B所示,所述方法还包括:
步骤801:存储所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系。
上述方法具体可以由上述图2A至图2D中的中间设备204,或图3中的中间设备304实现。即可以参考上述图2A至图2D中的中间设备204,或图3中的中间设备304实现图8所示的方法流程。并且,图8所示实现方式中所描述的功能单元可以参考上述2A至图2D中或图3中提到的PF和/或VF的实现方式来实现,代理单元可以参考上述2A至图2D中或图3中提到的PF’和/或VF’的实现方式来实现。不再赘述。
图9A为本申请实施例提供的一种计算机设备900的结构示意图。如图9A所示,计算机设备900包括CPU901、网络适配器903和中间设备902,所述中间设备902通过所述总线分别与所述CPU901和所述网络适配器903连接,所述网络适配器903包括多个基于虚拟化技术产生的功能单元;例如所述网络适配器903包括多个基于SR-IOV虚拟化技术产生的PF或VF;
所述中间设备902,用于通过枚举发现与其连接的所述网络适配器903,为所述网络适配器903中第一功能单元分配地址信息;
所述CPU901,用于通过枚举发现与其连接的所述中间设备902,将所述中间设备902中的第一代理单元分配地址信息;其中,所述第一代理单元是所述第一功能单元的代理;
所述中间设备902,还用于建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系实现所述CPU901与所述网络适配器903之间的报文(例如数据报文或命令报文)的转发。
上述计算机设备900中包括中间设备902,该中间设备902能够实现数据报文或命令报文在CPU901与所述网络适配器903之间的转发。通过上述中间设备902建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,并根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,能够实现数据报文或命令报文在所述CPU901与所述网络适配器903之间的转发。这样,CPU901可以不再通过其它CPU实现数据报文或命令报文与网络适配器903之间的转发,省去了转发到其它CPU时的软件转换等操作,降低了发送数据报文或命令报文时的时延。并且,由于不再通过CPU之间的通信总线转发数据报文或命令报文,不会出现因通信总线带宽不足导致的时延过大的问题。
可选的,如图9B所示,所述计算机设备900还包括CPU904;
所述CPU904通过所述总线分别与所述CPU901和所述中间设备902连接;
所述中间设备902,还用于为所述网络适配器903中的第二功能单元分配地址信息;
所述CPU904,用于通过枚举发现与其连接的所述中间设备902,为所述中间设备902中的第二代理单元分配地址信息;其中,所述第二代理单元是所述第二功能单元的代理;
所述中间设备902,建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,并根据所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,实现所述CPU904与所述网络适配器903之间报文(数据报文或命令报文)的转发。
可选的,如图9C所示,所述计算机设备900还包括CPU904;
所述CPU904通过所述总线分别与所述CPU901和所述网络适配器903连接;
所述网络适配器903,还用于实现报文(例如数据报文或命令报文)在所述CPU904与网络之间的转发。
本申请实施例中,如图9D所示,中间设备902还可以包括:控制器9021和存储器9022。所述控制器9021,用于建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述存储器9022,用于存储所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述控制器9021,还用于根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,实现所述报文(例如数据报文或命令报文)在所述CPU901与所述网络适配器903之间的转发。
示例性的,所述控制器9021配置所述第一代理单元可以通过在端点端口9023中配置所述第一代理单元的信息来实现。所述端点端口9023是所述中间设备902中与所述CPU901连接的端口。
在具体实现时,图9A至图9D所示的计算机设备900的实现方式,可以参考上述图2A至图2D中服务器200,以及图3中服务器300的实现方式来实现。例如,中间设备902可以参考图2A至图2D中中间设备204的实现方式来实现,也可以参考图3中中间设备304的实现方式来实现;控制器9021可以参考图2A至图2D中控制器2041的实现方式来实现,也可以参考图3中控制器3041的实现方式来实现;CPU901可以参考图2A至图2D中CPU202的实现方式来实现,也可以参考图3中CPU302的实现方式来实现;CPU904可以参考图2A至图2D中CPU201的实现方式来实现,也可以参考图3中CPU301的实现方式来实现;网络适配器903可以参考图2A至图2D中网络适配器203的实现方式来实现,也可以参考图3中网络适配器303的实现方式来实现。并且,上述图9A和图9B所描述的实施例中的所述第一功能单元或所述第二功能单元,可以参考上述2A至图2D中或图3中提到的PF和/或VF的实现方式来实现,所述第一代理单元或所述第二代理单元可以参考上述2A至图2D中或图3中提到的PF’和/或VF’的实现方式来实现。不再赘述。
可以理解,当上述中间设备902通过FPGA芯片实现时,该FPGA芯片可以包括控制器9021和存储器9022。当上述中间设备902通过ASIC芯片实现时,所述控制器的功能可以通过ASIC芯片实现,所述存储器9022的功能,可以由与该ASIC芯片连接的存储器(例如RAM等存储器)实现存储器9022的功能。示例性的,当所述中间设备902通过ASIC实现时,可以由ASIC实现控制器9021的功能,与所述ASIC连接的存储器实现所述存储器9022的功能;当所述中间设备902通过FPGA+ASIC实现时,可以由ASIC实现控制器9021的功能,所述FPGA实现所述存储器9022的功能;或当所述中间设备902通过FPGA+ASIC实现时,可以由FPGA和ASIC共同实现控制器9021的功能,所述FPGA实现所述存储器9022的功能,不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,以上所描述的设备的实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (24)

1.一种计算机设备,所述计算机设备包括第一中央处理器CPU、网络适配器和总线,其特征在于,所述计算机设备还包括中间设备,所述中间设备通过所述总线分别与所述第一CPU和所述网络适配器连接,所述网络适配器包括多个基于虚拟化技术产生的功能单元;
所述中间设备,用于获取所述网络适配器中第一功能单元的信息,并为所述第一功能单元分配地址;
所述第一CPU,用于获取所述中间设备中第一代理单元的信息,为所述第一代理单元分配地址,并将所述第一代理单元的地址信息发送给所述中间设备;其中,所述第一代理单元是所述第一功能单元的代理;
所述中间设备,还用于根据所述第一代理单元的地址信息,建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,并根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,实现所述第一CPU与所述网络适配器之间报文的转发。
2.根据权利要求1所述的计算机设备,其特征在于,所述计算机设备还包括第二CPU;
所述第二CPU通过所述总线分别与所述第一CPU和所述中间设备连接;
所述中间设备,还用于获取所述网络适配器中第二功能单元的信息,并为所述第二功能单元分配地址,所述第二功能单元用于实现所述网络适配器的功能;
所述第二CPU,用于获取所述中间设备中第二代理单元的信息,为所述第二代理单元分配地址,并将所述第二代理单元的地址信息发送给所述中间设备;其中,所述第二代理单元是所述第二功能单元的代理;
所述中间设备,还用于根据所述第二代理单元的地址信息,建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,并根据所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,实现所述第二CPU与所述网络适配器之间报文的转发。
3.根据权利要求1所述的计算机设备,其特征在于,所述计算机设备还包括第二CPU;
所述第二CPU通过所述总线分别与所述第一CPU和所述网络适配器连接;
所述网络适配器,还用于实现所述第二CPU与网络之间报文的转发。
4.根据权利要求1-3中任意一项所述的计算机设备,其特征在于,所述第一CPU获取所述中间设备中第一代理单元的信息,为所述第一代理单元分配地址包括:
所述第一CPU通过枚举所述中间设备,获取所述中间设备中第一代理单元的信息,并为所述第一代理单元分配地址。
5.根据权利要求1-4中任意一项所述的计算机设备,其特征在于,所述中间设备获取所述网络适配器中第一功能单元的信息,并为所述第一功能单元分配地址包括:
所述中间设备通过枚举所述网络适配器,从所述网络适配器获取所述第一功能单元的信息,并为所述第一功能单元分配地址。
6.根据权利要求1-5中任意一项所述的计算机设备,其特征在于:
所述中间设备还用于根据所述第一功能单元的信息,在第一端点端口中配置所述第一代理单元的信息,所述第一端点端口是所述中间设备中与所述第一CPU连接的端口。
7.根据权利要求1-6中任意一项所述的计算机设备,其特征在于,所述第一功能单元的地址信息包括所述第一功能单元的总线设备功能BDF信息和所述第一功能单元的基地址寄存器Bar空间地址信息;
所述第一代理单元的地址信息包括所述第一代理单元的BDF信息和所述第一代理单元的Bar空间地址信息。
8.根据权利要求1-7中任意一项所述的计算机设备,其特征在于,所述网络适配器支持单根输入输出虚拟化SR-IOV功能,所述第一功能单元包括第一物理功能或第一虚拟功能。
9.一种中间设备,其特征在于,所述中间设备通过总线与计算机设备中的第一中央处理器CPU和网络适配器连接,所述中间设备包括控制器和存储器;
所述控制器,用于获取所述网络适配器中第一功能单元的信息,为所述第一功能单元分配地址,获取第一代理单元的地址信息,并建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;其中,所述第一功能单元为所述网络适配器中基于虚拟化技术产生的单元,所述第一代理单元是所述第一功能单元的代理;
所述存储器,用于存储所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系;
所述控制器,还用于根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,实现所述第一CPU与所述网络适配器之间报文的转发。
10.根据权利要求9所述的中间设备,其特征在于,所述中间设备还与所述计算机设备中的第二CPU连接;
所述控制器,还用于获取所述网络适配器中第二功能单元的信息,为所述第二功能单元分配地址,获取第二代理单元的地址信息,并建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系;其中,所述第二功能单元用于实现所述网络适配器的功能,所述第二代理单元是所述第二功能单元的代理;
所述存储器,用于存储所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系;
所述控制器,还用于根据所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,实现所述第二CPU与所述网络适配器之间报文的转发。
11.根据权利要求9或10所述的中间设备,其特征在于,
所述控制器,还用于通过枚举所述网络适配器,获取所述网络适配器中所述第一功能单元的信息,为所述第一功能单元分配地址信息,并将所述第一功能单元的地址信息保存在所述存储器中。
12.根据权利要求11所述的中间设备,其特征在于,所述中间设备还包括第一端点端口,所述中间设备通过所述第一端点端口与所述第一CPU连接;
所述控制器,还用于根据所述第一功能单元的信息在所述第一端点端口中配置所述第一代理单元的信息。
13.根据权利要求12所述的中间设备,其特征在于,所述控制器建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系包括:
所述控制器根据接收到的所述第一CPU发送的所述第一代理单元的地址信息,建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系。
14.根据权利要求11所述的中间设备,其特征在于,所述中间设备还包括端点端口,所述中间设备通过所述端点端口与所述第一CPU连接;所述端点端口包括预设的所述第一代理单元的信息;
所述控制器还用于,根据所述第一CPU发送的所述第一代理单元的地址信息,建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系。
15.一种报文的转发方法,其特征在于,所述方法包括:
获取网络适配器中功能单元的信息,为所述功能单元分配地址,获取代理单元的地址信息,并建立所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系;其中,所述功能单元是所述网络适配器包括的多个基于虚拟化技术产生的功能单元中的一个,所述代理单元是所述功能单元的代理,所述网络适配器是计算机设备与网络实现报文转发的设备;
根据所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系,实现所述计算机设备中的中央处理器CPU与所述网络适配器之间报文的转发。
16.根据权利要求15所述的方法,其特征在于,所述获取网络适配器中功能单元的信息包括:
通过枚举所述网络适配器,获取所述网络适配器中功能单元的信息。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括:
根据所述功能单元的信息,在与所述CPU连接的端点端口中配置所述代理单元的信息。
18.根据权利要求15-17中任意一项所述的方法,其特征在于,所述建立所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系包括:
接收所述CPU发送的所述代理单元的地址信息,根据所述代理单元的地址信息,建立所述代理单元的地址信息与所述功能单元的地址信息之间的对应关系。
19.根据权利要求18所述的方法,其特征在于,所述地址信息包括总线设备功能BDF信息和基地址寄存器Bar空间地址信息。
20.一种计算机设备,其特征在于,所述计算机设备包括第一中央处理器CPU、中间设备、网络适配器和总线,所述中间设备通过所述总线分别与所述第一CPU和所述网络适配器连接,所述网络适配器包括多个基于虚拟化技术产生的功能单元;
所述中间设备,用于通过枚举发现与其连接的所述网络适配器,为所述网络适配器中的第一功能单元分配地址信息;
所述第一CPU,用于通过枚举发现与其连接的所述中间设备,为所述中间设备中的第一代理单元分配地址信息;其中,所述第一代理单元是所述第一功能单元的代理;
所述中间设备,还用于建立所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系,根据所述第一代理单元的地址信息与所述第一功能单元的地址信息之间的对应关系对应关系实现所述第一CPU与所述网络适配器之间的报文转发。
21.根据权利要求20所述的计算机设备,其特征在于,
所述第一CPU,还用于根据在枚举过程中获取到的所述第一代理单元在拓扑中的位置,为所述第一代理单元分配相应的总线设备功能BDF。
22.根据权利要求20或21所述的计算机设备,其特征在于,
所述第一CPU,还用于通过枚举获取所述第一代理单元的Bar空间大小并配置Bar空间地址的起始地址和地址长度,以配置所述第一代理单元的Bar空间地址信息。
23.根据权利要求22所述的计算机设备,其特征在于,
所述中间设备为所述网络适配器的根节点,所述网络适配器为所述中间设备的端点设备;
所述中间设备为所述第一CPU的端点设备,所述第一CPU为所述中间设备的根节点。
24.根据权利要求20-23中任意一项所述的计算机设备,其特征在于,所述计算机设备还包括第二CPU;
所述第二CPU通过所述总线分别与所述第一CPU和所述中间设备连接;
所述中间设备,还用于为所述网络适配器中的第二功能单元分配地址信息;
所述第二CPU,用于通过枚举发现与其连接的所述中间设备,为所述中间设备中的第二代理单元分配地址信息;其中,所述第二代理单元是所述第二功能单元的代理;
所述中间设备,还用于建立所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系,根据所述第二代理单元的地址信息与所述第二功能单元的地址信息之间的对应关系实现所述第二CPU与所述网络适配器之间的报文转发。
CN201910786539.7A 2019-06-25 2019-08-23 转发报文的方法、中间设备和计算机设备 Active CN110688237B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP20833292.4A EP3813308A4 (en) 2019-06-25 2020-06-08 MESSAGE TRANSFER PROCESS, INTERMEDIATE DEVICE AND COMPUTER DEVICE
PCT/CN2020/094995 WO2020259269A1 (zh) 2019-06-25 2020-06-08 转发报文的方法、中间设备和计算机设备
US17/171,344 US11604742B2 (en) 2019-06-25 2021-02-09 Independent central processing unit (CPU) networking using an intermediate device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910556090 2019-06-25
CN2019105560905 2019-06-25

Publications (2)

Publication Number Publication Date
CN110688237A true CN110688237A (zh) 2020-01-14
CN110688237B CN110688237B (zh) 2024-02-09

Family

ID=69108673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910786539.7A Active CN110688237B (zh) 2019-06-25 2019-08-23 转发报文的方法、中间设备和计算机设备

Country Status (4)

Country Link
US (1) US11604742B2 (zh)
EP (1) EP3813308A4 (zh)
CN (1) CN110688237B (zh)
WO (1) WO2020259269A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021042819A1 (zh) * 2019-09-03 2021-03-11 华为技术有限公司 报文转发的方法、计算机设备和中间设备
CN116028430A (zh) * 2023-03-28 2023-04-28 飞腾信息技术有限公司 一种pcie设备扫描方法及片上系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101013989A (zh) * 2006-01-18 2007-08-08 国际商业机器公司 使用集成did的基于pci总线地址的路由的方法和装置
US20110035580A1 (en) * 2009-08-06 2011-02-10 Broadcom Corporation Media access control security management in physical layer
US20120166690A1 (en) * 2010-12-28 2012-06-28 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
US20140366018A1 (en) * 2013-06-07 2014-12-11 Vmware, Inc. Method and system for automatic assignment and preservation of network configuration for a virtual machine
JP2015039080A (ja) * 2011-07-27 2015-02-26 株式会社東芝 情報処理装置及び通信制御方法
US20160117279A1 (en) * 2014-10-24 2016-04-28 Cisco Technology, Inc. Dynamic Connection of PCIe Devices and Functions to an Array of Hosts
WO2016101587A1 (zh) * 2014-12-24 2016-06-30 中兴通讯股份有限公司 虚拟化服务器的链路聚合方法、系统及其智能网络适配器
CN107113240A (zh) * 2015-12-31 2017-08-29 华为技术有限公司 可扩展虚拟局域网报文发送方法、计算机设备和可读介质
CN107278359A (zh) * 2016-11-09 2017-10-20 华为技术有限公司 云计算系统中报文处理的方法、主机和系统
US20180059939A1 (en) * 2016-08-26 2018-03-01 Huawei Technologies Co., Ltd. Method, Device, and System for Implementing Hardware Acceleration Processing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395367B2 (en) * 2005-10-27 2008-07-01 International Business Machines Corporation Method using a master node to control I/O fabric configuration in a multi-host environment
US20070136554A1 (en) * 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US8316377B2 (en) * 2007-09-06 2012-11-20 Hewlett-Packard Development Company, L.P. Sharing legacy devices in a multi-host environment
US8141092B2 (en) * 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition
US8521915B2 (en) * 2009-08-18 2013-08-27 Fusion-Io, Inc. Communicating between host computers and peripheral resources in an input/output (I/O) virtualization system
US9304849B2 (en) * 2013-06-12 2016-04-05 International Business Machines Corporation Implementing enhanced error handling of a shared adapter in a virtualized system
US10452570B1 (en) * 2014-08-27 2019-10-22 Amazon Technologies, Inc. Presenting physical devices to virtual computers through bus controllers emulated on PCI express endpoints
US10817456B2 (en) * 2015-11-18 2020-10-27 Oracle International Corporation Separation of control and data plane functions in SoC virtualized I/O device
WO2019183831A1 (en) * 2018-03-28 2019-10-03 Intel Corporation Address space identifier management in complex input/output virtualization environments
CN110389711B (zh) * 2018-04-20 2023-04-04 伊姆西Ip控股有限责任公司 帮助端点设备实现sr-iov功能的方法、设备和非瞬态计算机可读介质
US10884878B2 (en) * 2018-06-07 2021-01-05 International Business Machines Corporation Managing a pool of virtual functions
CN111656336B (zh) * 2018-06-30 2022-01-14 华为技术有限公司 一种pcie发送、接收方法及装置、设备和系统
CN109302466B (zh) * 2018-09-18 2021-10-26 华为技术有限公司 数据处理方法、相关设备及计算机存储介质
CN110955517B (zh) * 2019-09-03 2021-08-20 华为技术有限公司 报文转发的方法、计算机设备和中间设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101013989A (zh) * 2006-01-18 2007-08-08 国际商业机器公司 使用集成did的基于pci总线地址的路由的方法和装置
US20110035580A1 (en) * 2009-08-06 2011-02-10 Broadcom Corporation Media access control security management in physical layer
US20120166690A1 (en) * 2010-12-28 2012-06-28 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
JP2015039080A (ja) * 2011-07-27 2015-02-26 株式会社東芝 情報処理装置及び通信制御方法
US20140366018A1 (en) * 2013-06-07 2014-12-11 Vmware, Inc. Method and system for automatic assignment and preservation of network configuration for a virtual machine
US20160117279A1 (en) * 2014-10-24 2016-04-28 Cisco Technology, Inc. Dynamic Connection of PCIe Devices and Functions to an Array of Hosts
WO2016101587A1 (zh) * 2014-12-24 2016-06-30 中兴通讯股份有限公司 虚拟化服务器的链路聚合方法、系统及其智能网络适配器
CN107113240A (zh) * 2015-12-31 2017-08-29 华为技术有限公司 可扩展虚拟局域网报文发送方法、计算机设备和可读介质
US20180059939A1 (en) * 2016-08-26 2018-03-01 Huawei Technologies Co., Ltd. Method, Device, and System for Implementing Hardware Acceleration Processing
CN107278359A (zh) * 2016-11-09 2017-10-20 华为技术有限公司 云计算系统中报文处理的方法、主机和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王展等: "云数据中心I/O资源池化", 《集成技术》 *
王展等: "云数据中心I/O资源池化", 《集成技术》, no. 01, 15 January 2016 (2016-01-15), pages 1 - 16 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021042819A1 (zh) * 2019-09-03 2021-03-11 华为技术有限公司 报文转发的方法、计算机设备和中间设备
CN116028430A (zh) * 2023-03-28 2023-04-28 飞腾信息技术有限公司 一种pcie设备扫描方法及片上系统

Also Published As

Publication number Publication date
US20210165750A1 (en) 2021-06-03
CN110688237B (zh) 2024-02-09
WO2020259269A1 (zh) 2020-12-30
US11604742B2 (en) 2023-03-14
EP3813308A1 (en) 2021-04-28
EP3813308A4 (en) 2021-11-17

Similar Documents

Publication Publication Date Title
US9678918B2 (en) Data processing system and data processing method
CN110955517B (zh) 报文转发的方法、计算机设备和中间设备
US11960430B2 (en) Remote mapping method, apparatus and device for computing resources, and storage medium
RU2640648C2 (ru) Управление ресурсами для доменов высокопроизводительного межсоединения периферийных компонентов
EP3629186B1 (en) Method and apparatus for extending pcie domain
CN108984465B (zh) 一种消息传输方法及设备
US11829309B2 (en) Data forwarding chip and server
US20140195634A1 (en) System and Method for Multiservice Input/Output
WO2020057469A1 (zh) 数据处理方法、相关设备及计算机存储介质
US9614789B2 (en) Supporting multiple virtual switches on a single host
CN106557444B (zh) 实现sr-iov网卡的方法和装置、实现动态迁移的方法和装置
US10067900B2 (en) Virtualized I/O device sharing within a distributed processing node system
US20170124018A1 (en) Method and Device for Sharing PCIE I/O Device, and Interconnection System
US11086801B1 (en) Dynamic resource management of network device
WO2018076882A1 (zh) 存储设备的操作方法及物理服务器
US11604742B2 (en) Independent central processing unit (CPU) networking using an intermediate device
WO2016101856A1 (zh) 数据访问方法及装置
CN108471384B (zh) 用于端到端通信的报文转发的方法和装置
CN108959134B (zh) 用于现场可编程门阵列设备的通信
CN104571934A (zh) 一种内存访问的方法、设备和系统
KR20170102717A (ko) 패브릭 연결망 기반의 마이크로 서버
WO2023143103A1 (zh) 报文处理方法、网关设备及存储系统
US20180181440A1 (en) Resource allocation system, apparatus allocation controller and apparatus recognizing method
CN110855468A (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