CN103346981A - 虚拟交换方法、相关装置和计算机*** - Google Patents

虚拟交换方法、相关装置和计算机*** Download PDF

Info

Publication number
CN103346981A
CN103346981A CN2013102702729A CN201310270272A CN103346981A CN 103346981 A CN103346981 A CN 103346981A CN 2013102702729 A CN2013102702729 A CN 2013102702729A CN 201310270272 A CN201310270272 A CN 201310270272A CN 103346981 A CN103346981 A CN 103346981A
Authority
CN
China
Prior art keywords
virtual machine
virtual
message
address
shared drive
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
CN2013102702729A
Other languages
English (en)
Other versions
CN103346981B (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
Priority to CN201310270272.9A priority Critical patent/CN103346981B/zh
Publication of CN103346981A publication Critical patent/CN103346981A/zh
Priority to PCT/CN2014/072502 priority patent/WO2014206105A1/zh
Priority to EP14818411.2A priority patent/EP2996294A4/en
Priority to US14/486,246 priority patent/US9996371B2/en
Application granted granted Critical
Publication of CN103346981B publication Critical patent/CN103346981B/zh
Priority to US15/979,486 priority patent/US10649798B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供一种虚拟交换方法、相关装置和计算机***,该方法包括:接收源节点发送的第一消息,第一消息用于请求第一虚拟机对待交换数据进行交换处理,其中待交换数据是从源节点发往目标节点的,源节点和目标节点中的至少一个为第二虚拟机;根据待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,第二消息用于指示目标节点从硬件层的存储设备获取待交换数据。本发明实施例通过将虚拟交换功能部署到虚拟机中,使得具有虚拟交换功能的虚拟机与其他普通虚拟机处于同等地位,从而有利于Host对虚拟网络进行管理并进行高效、合理的网络资源分配。并且由于虚拟交换功能从Host核心中剥离,从而增强了扩展性。

Description

虚拟交换方法、相关装置和计算机***
技术领域
本发明涉及计算机技术领域,并且更具体地,涉及虚拟交换方法、相关装置和计算机***。
背景技术
网络虚拟化是使用基于软件的抽象从物理网络元素中分离网络流量的一种方式。网络虚拟化与其他形式的虚拟化有很多共同之处。
对网络虚拟化来说,抽象隔离了网络中的交换机、网络端口、路由器以及其他物理元素的网络流量。每个物理元素被网络元素的虚拟表示形式所取代。管理员能够对虚拟网络元素进行配置以满足其独特的需求。网络虚拟化在此处的主要优势是将多个物理网络整合进更大的逻辑网络中。
现有的网络虚拟化主要方案为VMware的开放式虚拟交换(Open VirtualSwitch,OVS)和分布式虚拟交换(Distributed Virtual Switch,DVS)。针对主流的OVS架构,虚拟交换机(Virtual Switch,vSwitch)在主机Host内核中实现,即在(Virtual Machine Monitor,VMM)内核中实现,处于虚拟网络的核心位置,其架构如图1所示。其中vSwich使用虚拟端口port,通过FE/BE与连接虚拟机(Virtual Machine,VM)以及底层网卡(Network InterfaceCard,NIC)。Host为其上运行的虚拟机以及各种虚拟硬件分配诸如CPU、内存等物理资源,这些物理资源划分为内核空间物理资源和用户空间物理资源,vSwitch在交换处理过程中需要申请占用较多的Host内核空间物理资源,因而非常不利于Host对虚拟网络进行管理和资源分配。vSwitch负担了诸多任务和功能,例如图1中示出的虚拟局域网(Virtual Local Area Network,VLAN)、负载均衡Load-balance、隧道Tunneling、安全Security、链路汇聚控制协议(Link Aggregation Control Protocol,LACP)、服务质量(Quality ofService,QoS)等等,其设计非常庞大和复杂,vSwich与Host内核的紧密耦合使得vSwitch以及整个虚拟网络的扩展性和灵活性都很差。
发明内容
本发明实施例提供一种虚拟交换方法、相关装置和计算机***,将虚拟交换功能从内核中剥离,提高了虚拟交换设备的扩展性和灵活性,并将虚拟交换功能部署在虚拟机上,与普通虚拟机形成对等节点,从而有利于Host对虚拟网络进行管理并进行高效、合理的资源分配。
第一方面,提供了一种虚拟交换的方法,应用于计算节点上,所述计算节点包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM,其中,所述硬件层包括输入/输出I/O设备和存储设备,所述至少一个虚拟机VM包括具有虚拟交换功能的第一虚拟机,所述至少一个VM还包括第二虚拟机,所述方法包括:所述第一虚拟机接收源节点发送的第一消息,所述第一消息用于请求所述第一虚拟机对待交换数据进行交换处理,其中所述待交换数据是从所述源节点发往目标节点的,所述源节点和所述目标节点中的至少一个为所述第二虚拟机;所述第一虚拟机根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,所述第二消息用于指示所述目标节点从所述硬件层的存储设备获取所述待交换数据。
结合第一方面,在其第一种实现方式中,所述第一虚拟机接收源节点发送的第一消息之前,还包括:所述第一虚拟机接收所述Host发送的配置命令;所述第一虚拟机根据所述配置命令配置用于与所述第二虚拟机进行通信的所述第一虚拟机的第一虚拟端口,并配置用于与所述I/O设备进行通信的所述第一虚拟机的第二虚拟端口;所述第一虚拟机建立所述第一虚拟端口与所述第二虚拟端口之间的映射关系,以生成所述端口映射表。
结合第一方面及其上述实现方式,在其第二种实现方式中,所述接收所述Host发送的配置命令之后,还包括:所述第一虚拟机根据所述配置命令配置所述第二虚拟机对应的第一共享内存,其中所述第一共享内存为所述硬件层的存储设备上的指定存储区域。
结合第一方面及其上述实现方式,在其第三种实现方式中,当所述源节点为所述第二虚拟机,所述目标节点为所述I/O设备时,所述第一虚拟机接收源节点发送的第一消息,包括:所述第一虚拟机通过所述第一虚拟端口接收所述第二虚拟机发送的所述第一消息,所述第一消息包括用于向所述第一虚拟机指示所述第二虚拟机已完成将所述待交换数据写入所述第一共享内存的写完中断;所述第一虚拟机根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,包括:所述第一虚拟机根据用于接收所述第一消息的所述第一虚拟端口确定对应的所述第一共享内存的地址;从所述第一共享内存获取所述待交换数据,根据所述待交换数据携带的所述I/O设备的地址从所述端口映射表中确定与所述I/O设备对应的所述第二虚拟端口;确定携带有所述第一共享内存的地址和读取指令的所述第二消息,并通过所述第二虚拟端口向所述I/O设备发送所述第二消息,以便于所述I/O设备从所述第一共享内存读取所述待交换数据。
结合第一方面及其上述实现方式,在其第四种实现方式中,当所述源节点为所述I/O设备,所述目标节点为所述第二虚拟机时,所述第一虚拟机接收源节点发送的第一消息之后还包括:所述第一虚拟机从所述I/O设备获取所述待交换数据携带的目标节点的地址,所述目标节点的地址为所述第二虚拟机的地址;所述第一虚拟机根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,包括:所述第一虚拟机根据所述第二虚拟机的地址查询所述端口映射表以确定与所述第二虚拟机对应的第一虚拟端口并确定与所述第二虚拟机对应的第一共享内存的地址;通过所述I/O设备所对应的所述第二虚拟端口向所述I/O设备发送携带有所述第一共享内存的地址的回复消息,以便于所述I/O设备根据所述回复消息将所述待交换数据写入所述第一共享内存;在所述第一虚拟机接收到所述I/O设备发送的用于向所述第一虚拟机指示所述I/O设备已完成将所述待交换数据写入所述第一共享内存的写完中断时,确定携带有读取指令的所述第二消息,通过所述第一虚拟端口向所述第二虚拟机发送所述第二消息,以便于所述第二虚拟机从所述第一共享内存读取所述待交换数据。
结合第一方面及其上述实现方式,在其第五种实现方式中,所述至少一个VM还包括第三虚拟机,当所述源节点为所述第二虚拟机,所述目标节点为所述第三虚拟机时,所述第一虚拟机接收源节点发送的第一消息,包括:所述第一虚拟机通过所述第一虚拟端口接收所述第二虚拟机发送的所述第一消息,所述第一消息包括用于向所述第一虚拟机指示所述第二虚拟机已完成将所述待交换数据写入所述第二虚拟机与所述第三虚拟机通过所述第一虚拟机预先协商的第二共享内存的写完中断,其中所述第二共享内存为所述硬件层的存储设备上的指定存储区域;所述第一虚拟机根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,包括:所述第一虚拟机根据用于接收所述第一消息的所述第一虚拟端口确定与所述第一虚拟端口对应的所述第二虚拟机的地址;根据所述第二虚拟机的地址和所述待交换数据携带的第三虚拟机的地址确定所述第二共享内存的地址;确定携带有所述第二共享内存的地址和读取指令的所述第二消息,并向所述第三虚拟机发送所述第二消息,以便于所述第三虚拟机从所述第二共享内存读取所述待交换数据。
结合第一方面及其上述实现方式,在其第六种实现方式中,所述方法还包括:接收所述目标节点发送的读完指示信息,以便于所述第一共享内存或所述第二共享内存被释放。
结合第一方面及其上述实现方式,在其第七种实现方式中,所述第一虚拟机接收源节点发送的第一消息之后,还包括:所述第一虚拟机根据所述待交换数据携带的目标节点的地址,在配置的开放流Openflow流表中确定与所述目标节点的地址所匹配的表项,其中,所述Openflow流表中包括至少一个表项,所述表项包括地址、虚拟端口和执行动作参数;如果所述匹配的表项存在,所述第一虚拟机根据所述匹配的表项中与所述目标节点的地址所对应的执行动作参数处理所述待交换数据;如果所述匹配的表项不存在,所述第一虚拟机建立能够与所述待交换数据匹配的新表项,并在所述Openflow流表中***所述新表项。
第二方面,提供了一种宿主机,其特征在于,包括:创建模块,用于在输入/输出I/O设备的I/O虚拟功能启动后,在宿主机Host之上产生至少一个虚拟机VM,其中所述至少一个VM包括具有虚拟交换功能的第一虚拟机,所述至少一个VM还包括第二虚拟机;配置模块,用于向所述第一虚拟机发送配置命令,以便于所述第一虚拟机根据所述配置命令配置用于与所述第二虚拟机进行通信的所述第一虚拟机的第一虚拟端口,并配置用于与所述I/O设备进行通信的所述第一虚拟机的第二虚拟端口。
第三方面,提供了一种计算节点,其特征在于,运行在宿主机Host之上,所述Host运行在硬件层之上,所述硬件层包括输入/输出I/O设备和存储设备,所述虚拟机包括:接收模块,用于接收源节点发送的第一消息,所述第一消息用于请求所述虚拟机对待交换数据进行交换处理,其中所述待交换数据是从所述源节点发往目标节点的,所述源节点和所述目标节点中的至少一个为第二虚拟机,所述第二虚拟机运行在所述Host之上;交换处理模块,用于根据所述待交换数据携带的目标节点的地址和所述虚拟机配置的端口映射表确定第二消息,所述第二消息用于指示所述目标节点从所述硬件层的存储设备获取所述待交换数据;发送模块,用于向所述目标节点发送所述第二消息。
结合第三方面,在其第一种实现方式中,其特征在于,包括:代理Agent模块,用于根据所述Host发送的配置命令,配置用于与所述第二虚拟机进行通信的所述虚拟机的第一虚拟端口,并配置用于与所述I/O设备进行通信的所述虚拟机的第二虚拟端口;生成模块,用于建立所述第一虚拟端口与所述第二虚拟端口之间的映射关系,以生成所述端口映射表。
结合第三方面及其上述实现方式,在其第二种实现方式中,其特征在于,所述Agent模块,还用于根据所述配置命令配置所述第二虚拟机对应的第一共享内存,其中所述第一共享内存为所述硬件层的存储设备上的指定存储区域。
结合第三方面及其上述实现方式,在其第三种实现方式中,所述接收模块,具体用于通过所述第一虚拟端口接收所述第一消息,所述第一消息包括用于向所述虚拟机指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断;所述交换处理模块,具体用于根据用于接收所述第一消息的所述第一虚拟端口确定对应的所述第一共享内存的地址;从所述第一共享内存获取所述待交换数据,根据所述待交换数据携带的所述目标节点的地址从所述端口映射表中确定与所述目标节点对应的所述第二虚拟端口;确定携带有所述第一共享内存的地址和读取指令的所述第二消息;所述发送模块,具体用于通过所述第二虚拟端口向所述目标节点发送所述第二消息;其中,所述源节点为所述第二虚拟机,所述目标节点为所述I/O设备。
结合第三方面及其上述实现方式,在其第四种实现方式中,所述接收模块,具体用于接收源节点发送的所述第一消息;所述交换处理模块,具体用于获取所述待交换数据携带的目标节点的地址;根据所述目标节点的地址查询所述端口映射表以确定与所述目标节点对应的第一虚拟端口并确定与所述目标节点对应的第一共享内存的地址;所述发送模块,具体用于通过所述源节点所对应的所述第二虚拟端口向所述源节点发送携带有所述第一共享内存的地址的回复消息;所述交换处理模块,还用于在接收到所述源节点发送的用于向所述虚拟机指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断时,确定携带有读取指令的所述第二消息;所述发送模块,还用于通过所述第一虚拟端口向所述目标节点发送所述第二消息;所述接收模块,还用于接收所述源节点发送的指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断;其中,所述源节点为所述I/O设备,所述目标节点为所述第二虚拟机。
结合第三方面及其上述实现方式,在其第五种实现方式中,所述接收模块,具体用于通过所述第一虚拟端口接收所述源节点发送的所述第一消息,所述第一消息包括写完中断;所述交换处理模块,具体用于根据用于接收所述第一消息的所述第一虚拟端口确定所述第一虚拟端口对应的所述源节点的地址;根据所述源节点的地址和所述待交换数据携带的目标节点的地址确定所述第二共享内存的地址;确定携带有所述第二共享内存的地址和读取指令的所述第二消息;所述发送模块,具体用于向所述目标节点发送所述第二消息;其中,所述至少一个VM还包括第三虚拟机,所述源节点为所述第二虚拟机,所述目标节点为所述第三虚拟机。
第四方面,提供了一种计算节点,包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM,其中,所述硬件层包括输入/输出I/O设备和存储设备,所述至少一个虚拟机VM包括具有虚拟交换功能的第一虚拟机,所述至少一个VM还包括第二虚拟机,其中:所述第一虚拟机,用于接收源节点发送的第一消息,所述第一消息用于请求所述第一虚拟机对待交换数据进行交换处理,其中所述待交换数据是从所述源节点发往目标节点的,所述源节点和所述目标节点中的至少一个为所述第二虚拟机;所述第一虚拟机,还用于根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,所述第二消息用于指示所述目标节点从所述硬件层的存储设备获取所述待交换数据。
结合第四方面,在其第一种实现方式中,所述Host,用于向所述第一虚拟机发送配置命令;所述第一虚拟机,还用于根据所述配置命令配置用于与所述第二虚拟机进行通信的所述第一虚拟机的第一虚拟端口,并配置用于与所述I/O设备进行通信的所述第一虚拟机的第二虚拟端口;所述第一虚拟机,还用于建立所述第一虚拟端口与所述第二虚拟端口之间的映射关系,以生成所述端口映射表。
结合第四方面及其上述实现方式,在其第二种实现方式中,所述第一虚拟机,还用于根据所述配置命令配置所述第二虚拟机对应的第一共享内存,其中所述第一共享内存为所述硬件层的存储设备上的指定存储区域。
结合第四方面及其上述实现方式,在其第三种实现方式中,所述源节点,用于将所述待交换数据写入所述第一共享内存;所述源节点,还用于向所述第一虚拟机发送所述第一消息;所述第一虚拟机,具体用于通过所述第一虚拟端口接收所述第一消息,所述第一消息包括用于向所述第一虚拟机指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断;以及根据用于接收所述第一消息的所述第一虚拟端口确定对应的所述第一共享内存的地址;从所述第一共享内存获取所述待交换数据,根据所述待交换数据携带的所述I/O设备的地址从所述端口映射表中确定与所述I/O设备对应的所述第二虚拟端口;确定携带有所述第一共享内存的地址和读取指令的所述第二消息,并通过所述第二虚拟端口向所述目标节点发送所述第二消息;所述目标节点,用于根据所述第二消息从所述第一共享内存读取所述待交换数据;其中,所述源节点为所述第二虚拟机,所述目标节点为所述I/O设备。
结合第四方面及其上述实现方式,在其第四种实现方式中,所述第一虚拟机,具体用于接收源节点发送的所述第一消息,获取所述待交换数据携带的目标节点的地址;根据所述目标节点的地址查询所述端口映射表以确定与所述目标节点对应的第一虚拟端口并确定与所述目标节点对应的第一共享内存的地址;通过所述源节点所对应的所述第二虚拟端口向所述源节点发送携带有所述第一共享内存的地址的回复消息;以及,在接收到所述源节点发送的用于向所述第一虚拟机指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断时,确定携带有读取指令的所述第二消息,通过所述第一虚拟端口向所述目标节点发送所述第二消息;所述源节点,还用于根据所述回复消息中的所述第一共享内存的地址将所述待交换数据写入所述第一共享内存;所述源节点,还用于向所述第一虚拟机发送指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断;所述目标节点,用于根据所述第二消息从所述第一共享内存读取所述待交换数据;其中,所述源节点为所述I/O设备,所述目标节点为所述第二虚拟机。
结合第四方面及其上述实现方式,在其第五种实现方式中,所述源节点,还用于将所述待交换数据写入所述源节点与所述目标节点通过所述第一虚拟机预先协商的第二共享内存,其中所述第二共享内存为所述硬件层的存储设备上的指定存储区域;所述源节点,还用于通过所述第一虚拟端口向所述第一虚拟机发送所述第一消息,所述第一消息包括写完中断;所述第一虚拟机,具体用于根据用于接收所述第一消息的所述第一虚拟端口确定所述第一虚拟端口对应的所述源节点的地址;根据所述源节点的地址和所述待交换数据携带的目标节点的地址确定所述第二共享内存的地址;确定携带有所述第二共享内存的地址和读取指令的所述第二消息,并向所述目标节点发送所述第二消息;所述目标节点,用于根据所述第二消息从所述第二共享内存读取所述待交换数据;其中,所述至少一个VM还包括第三虚拟机,所述源节点为所述第二虚拟机,所述目标节点为所述第三虚拟机。
结合第四方面及其上述实现方式,在其第六种实现方式中,所述目标节点根据所述第二消息从所述共享内存读取所述待交换数据之后,所述目标节点,还用于向所述第一虚拟机发送读完指示信息,以便于所述第一共享内存或所述第二共享内存被释放;所述第一虚拟机,还用于释放所述第一共享内存或所述第二共享内存。
结合第四方面及其上述实现方式,在其第七种实现方式中,在接收源节点发送的第一消息之后,所述第一虚拟机,还用于根据所述待交换数据携带的目标节点的地址,在配置的开放流Openflow流表中确定与所述目标节点的地址所匹配的表项,其中,所述Openflow流表中包括至少一个表项,所述表项包括地址、虚拟端口和执行动作参数;如果所述匹配的表项存在,根据所述匹配的表项中与所述目标节点的地址所对应的执行动作参数处理所述待交换数据;如果所述匹配的表项不存在,建立能够与所述待交换数据匹配的新表项,并在所述Openflow流表中***所述新表项。
第五方面,提供了一种计算机***,包括:至少一个如第四方面所述的计算节点。
由上可见,本发明实施例中的计算节点包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM,其中,所述硬件层包括输入/输出I/O设备和存储设备,所述至少一个虚拟机VM包括具有虚拟交换功能的第一虚拟机,所述至少一个VM还包括第二虚拟机;如此,将虚拟交换功能实现在虚拟机上,使得虚拟交换机与普通VM处于同等优先级,形成对等的网络虚拟化架构,在进行资源分配时虚拟交换机和普通VM一样使用用户空间的物理资源,这样便于Host进行管理和高效合理地进行带宽、CPU、存储等资源的分配。应用于该计算节点上的虚拟交换方法包括:所述第一虚拟机接收源节点发送的第一消息,所述第一消息用于请求所述第一虚拟机对待交换数据进行交换处理,其中所述待交换数据从所述源节点发往目标节点,所述源节点和所述目标节点中的至少一个为所述第二虚拟机;所述第一虚拟机根据所述待交换数据携带的目标节点的地址和所述配置的端口映射表确定并发送第二消息,所述第二消息用于指示所述目标节点从所述硬件层的存储设备获取所述待交换数据。该方法将虚拟交换功能从Host内核中剥离解耦,降低与Host的耦合性,可以在同一Host内部署多个vSwitch,不受Host约束,因此具有更强的扩展性,并且解耦后vSwtich不再依赖Host内核中的操作***,变得更加易于部署,所以获得了更好的移植性,并且由于配置模块(agent)与待交换数据交换转发模块(端口映射表)相分离,更符合软件定义网络的要求。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中OVS的架构图。
图2是本发明一个实施例的虚拟化软硬件体系架构示意图。
图3是本发明一个实施例的虚拟交换方法的流程图。
图4是本发明一个实施例的虚拟交换数据流的示意图。
图5是本发明另一实施例的虚拟交换数据流的示意图。
图6是本发明另一实施例的虚拟交换数据流的示意图。
图7是本发明另一实施例的用于软件定义网络SDN的虚拟交换设备的示意图。
图8是本发明另一实施例的分布式实施的示意图。
图9是本发明另一实施例的分布式实施的流程图。
图10是本发明一个实施例的宿主机的模块架构示意图。
图11是本发明一个实施例的虚拟机的模块架构示意图。
图12是本发明一个实施例的计算机节点的示意图。
图13是本发明一个实施例的计算机***的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素;
虚拟机VM:
通过虚拟机软件可以在一台物理计算机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作***和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
硬件层:
虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如某计算节点的硬件层可包括CPU和内存,还可以包括网卡(Network InterfaceCard,NIC)、存储器等等高速/低速输入/输出(I/O,Input/Output)设备,其中NIC为底层物理网卡,以下简称Host NIC来区别于虚拟机的虚拟网卡VMNIC。
宿主机(Host):
作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);或者,有时VMM和1个特权虚拟机配合,两者结合组成Host。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟CPU、内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机则运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。
虚拟交换机(Virtual Switch,vSwitch):
虚拟交换机在Host的控制下将虚拟机互相连接起来,并且接入到物理网络当中,虚拟交换机就像真正的虚拟机那样工作,现有的虚拟交换机在Host内核中实现,处于虚拟网络的核心位置,负担虚拟局域网(Virtual LocalArea Network,VLAN)、负载均衡Load-balance、隧道Tunneling、安全Security、链路汇聚控制协议(Link Aggregation Control Protocol,LACP)、服务质量(Quality of Service,QoS)等等诸多功能。
共享内存:
操作***进程间通信(Inter-Process Communication,IPC)的一种机制,共享内存是进程间通信中最简单的方式之一,共享内存允许两个或更多进程访问同一块内存,在网络虚拟化中,共享内存允许两个或者更多的虚拟机、虚拟硬件访问同一块内存。共享内存在各种进程间通信方式中具有最高效率。
零拷贝:
避免CPU将数据从一块存储拷贝到另外一块存储的技术,通过减少或消除关键通信路径影响速率的操作,降低数据传输的开销,从而有效的提高通信性能,实现高速数据传输,实现有IO直通,MMAP等方式
软件定义网络(Software Defined Network,SDN):
SDN是新一代网络架构,其核心技术开放流Openflow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络以及应用的创新提供了良好的平台。
图2示出了本发明实施例中将vSwitch部署到VM中的虚拟化方案的软硬件体系架构示意图,该体系架构主要包括三个层次:硬件层、Host和虚拟机(VM)。其中硬件层包括I/O设备,即物理网卡NIC,通过该NIC可以与外界其他Host或网络进行通信,硬件层还可以包括存储设备,例如内存、硬盘等等。Host运行在硬件层之上,其中Host可能是虚拟机监控器(VMM),或者,有时VMM和1个特权虚拟机配合,两者结合组成Host,图2中示出的为第二种情况,然而这仅仅为一个示例,本发明对此不作限定。在Host之上运行的至少一个虚拟机VM,其中一个VM为本发明中的具有虚拟交换功能的虚拟机(第一虚拟机),同时还可以有若干个普通的虚拟机(第二虚拟机、第三虚拟机等等)。
以该体系架构建立虚拟化网络环境的过程中,Host中的配置管理模块(Config and Manage Module,CMM)可以向具有虚拟交换功能的第一虚拟机(以下用vSwitch代称)发送配置命令来进行虚拟网络环境的配置以及vSwitch的配置。具体地,CMM可以通过vSwitch中的配置代理模块(agent)来进行配置,包括端口映射表,VLAN表,访问控制列表(Access Control List,ACL)等的管理和配置。其中该Host中的配置管理模块可以通过IPC(例如IOCTL,NETLINK,SOCKET等)与vSwitch的agent模块相连接,从而可以将Host虚拟环境的配置传入vSwitch,具体可以包括Host NIC、VM的后端BE、共享内存、DMA中断等配置信息,使得vSwitch获得虚拟环境信息,从而建立相应的虚拟网络环境。
具体地,可以在VM创建好后,由配置管理模块为VM创建虚拟NIC接口,而后配置管理模块可以通过agent模块协商vSwitch与Host NIC的通信机制(通信方式)和端口映射,且协商vSwitch与VMM NIC之间的通信机制(通信方式)和端口映射,还可以进一步地协商vSwitch与VMM NIC之间的共享内存等。其中,vSwitch与Host NIC之间可以使用IO直通、零拷贝等方式通信,vSwitch与VM之间可以使用共享内存、前后端FE/BE事件通道等技术进行通信。根据协商好的各项配置的对应关系建立表项,以生成映射表,例如将VM的地址、该VM所对应的vSwitch的虚拟端口的端口号、该VM与vSwitch之间协商的共享内存地址建立对应关系,以形成表项,其中该VM为普通虚拟机,例如第二虚拟机。
该虚拟化网络环境搭建好后,进行数据交换时:该第一虚拟机(vSwitch),用于接收源节点发送的第一消息,该第一消息用于请求该第一虚拟机对待交换数据进行交换处理,其中该待交换数据从该源节点发往目标节点,该源节点和该目标节点中的至少一个为该第二虚拟机;该第一虚拟机,还用于根据该待交换数据携带的目标节点的地址和该配置的端口映射表确定并发送第二消息,该第二消息用于指示该目标节点从该硬件层的存储设备获取该待交换数据。从而通过vSwitch的信令控制,和交换处理,实现了待交换数据的转发。如此,虚拟交换功能从Host内核中剥离解耦,转而在虚拟机上实现虚拟交换的功能,简化了Host内核的设计和负担,并且由于VM具有灵活性和很好的扩展性,从而使得vSwitch以及整个虚拟网络的扩展性和灵活性都得到了提高。进一步地,因为将虚拟交换功能实现在虚拟机上,使得虚拟交换机与普通VM处于同等优先级,形成对等的网络虚拟化架构,在进行资源分配时虚拟交换机和普通VM一样使用用户空间的物理资源,这样便于Host进行管理和高效合理地进行资源分配。
图3是本发明一个实施例的虚拟交换方法的流程图。图2的方法由具有虚拟交换功能的虚拟机(下文简称为第一虚拟机)执行。
301,第一虚拟机接收源节点发送的第一消息,第一消息用于请求第一虚拟机对待交换数据进行交换处理,其中待交换数据从源节点发往目标节点,源节点和目标节点中的至少一个为第二虚拟机。
第一虚拟机为具有虚拟交换功能的虚拟机,与其他普通虚拟机处于同等地位并运行在Host之上。其中源节点可以是该Host上的普通虚拟机VM,应当理解的是:这里的普通虚拟机是相对于具有虚拟交换功能的虚拟机而言,也可以是该Host外部的虚拟机或物理机,然而由于该Host是通过HostNIC与外界进行通信的,所以与该Host外部的虚拟机或物理机的通信都简化地描述成与Host NIC进行通信,即源节点也可以是Host NIC。同样地,目标节点也可以是该Host上的普通虚拟机VM,也可以是Host NIC。
302,第一虚拟机根据待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,第二消息用于指示目标节点从硬件层的存储设备获取待交换数据。
应理解,上述步骤302中,配置的端口映射表可以由第一虚拟机来进行配置,包括虚拟化网络建立初期端口映射表的初始化配置以及虚拟化网络后期运行时端口映射表的动态维护。而第一虚拟机可以仅仅是配置命令的执行者,而配置命令可以由Host或者网络维护人员配置。
本发明实施例通过将虚拟交换功能部署到虚拟机中,简化了VMM,有利于Host对虚拟网络进行管理并进行高效、合理的网络资源分配。
可选地,作为一个实施例,步骤301之前,还包括:接收Host发送的配置命令;根据配置命令配置用于与第二虚拟机进行通信的第一虚拟机的第一虚拟端口,并配置用于与I/O设备进行通信的第一虚拟机的第二虚拟端口;建立第一虚拟端口与第二虚拟端口之间的映射关系,以生成端口映射表。
可选地,作为另一个实施例,第一虚拟机根据配置命令配置第二虚拟机对应的第一共享内存,其中第一共享内存为硬件层的存储设备上的指定存储区域。
具体地,Host中的配置管理模块可以通过vSwitch中的agent模块协商vSwitch与Host NIC的通信机制(通信方式)和端口映射,且协商vSwitch与VMM NIC之间的通信机制(通信方式)和端口映射,可选地,还可以进一步地协商vSwitch与VMM NIC之间的共享内存等,其中共享内存为硬件层的存储设备上的指定存储区域。而后可以将协商好的各项配置的对应关系建立表项,生成端口映射表,例如,将VM的地址、该VM所对应的vSwitch的端口号、该VM与vSwitch之间协商的共享内存地址建立对应的关系,生成端口映射表的表项。在进行虚拟交换时,第一虚拟机从第一虚拟机的第一虚拟端口接收待交换数据,其中第一虚拟端口对应于源节点;通过第一虚拟机的第二虚拟端口向目标节点发送待交换数据,其中第二虚拟端口是第一虚拟机根据第一虚拟端口和预先配置的端口映射表确定的。上述从第一虚拟端口接收待交换数据,并通过第二虚拟端口向目标节点发送待交换数据的过程为第一虚拟机的逻辑交换过程。其中,第一虚拟机与源节点通信的第一虚拟端口,第一虚拟机与目标节点通信的第二虚拟端口都是预先协商并配置好的。
可选地,作为另一个实施例,当源节点为第二虚拟机,目标节点为I/O设备时,第一虚拟机接收源节点发送的第一消息,包括:第一虚拟机通过第一虚拟端口接收第二虚拟机发送的第一消息,第一消息包括用于向第一虚拟机指示第二虚拟机已完成将待交换数据写入共享内存的写完中断;第一虚拟机根据用于接收第一消息的第一虚拟端口确定对应的第一共享内存的地址;从第一共享内存获取待交换数据,根据待交换数据携带的I/O设备的地址从端口映射表中确定与I/O设备对应的第二虚拟端口;确定携带有第一共享内存的地址和读取指令的第二消息,并通过第二虚拟端口向I/O设备发送第二消息,以便于I/O设备从第一共享内存读取待交换数据。
具体地,作为源节点的Host中的第二虚拟机与第一虚拟端口建立虚连接,其中第一虚拟端口是第一虚拟机预先配置的与该第二虚拟机对应的虚拟端口。第二虚拟机向第一虚拟端口发送待交换数据,该待交换数据实际写入该第二虚拟机与第一虚拟机预先协商的共享内存中。写入完毕后,第二虚拟机向第一虚拟机发送写完指示信息,第一虚拟机查询内部与配置的端口映射表,以确定第二虚拟端口以及与第二虚拟端口对应的主机网卡Host NIC,通过第二虚拟端口向Host NIC发送读取指示信息,令Host NIC从共享内存中读取该待交换数据,以便于Host NIC进一步向Host外部的目标节点发送该待交换数据。应理解,在第二虚拟机向Host外部发送待交换数据的过程中,目标节点也可以理解为Host NIC。
可选地,作为另一个实施例,当源节点为I/O设备,目标节点为第二虚拟机时,第一虚拟机接收源节点发送的第一消息之后还包括:第一虚拟机接收源节点发送的第一消息之后还包括:第一虚拟机从I/O设备获取待交换数据携带的目标节点的地址,目标节点的地址为第二虚拟机的地址;第一虚拟机根据待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,包括:第一虚拟机根据第二虚拟机的地址查询端口映射表以确定与第二虚拟机对应的第一虚拟端口并确定与第二虚拟机对应的第一共享内存的地址;通过I/O设备所对应的第二虚拟端口向I/O设备发送携带有第一共享内存的地址的回复消息,以便于I/O设备根据回复消息将待交换数据写入第一共享内存;在第一虚拟机接收到I/O设备发送的用于向第一虚拟机指示I/O设备已完成将待交换数据写入第一共享内存的写完中断时,确定携带有读取指令的第二消息,通过第一虚拟端口向第二虚拟机发送第二消息,以便于第二虚拟机从第一共享内存读取待交换数据。
具体地,第一虚拟机从I/O设备获取待交换数据携带的目标节点的地址,是由第一虚拟机在接收到第一消息的通知后,得知I/O设备(即底层物理网卡)接收到了待交换数据,之后第一虚拟机则可以通过驱动层直接访问该待交换数据以获取其携带的目标节点的地址。
可选地,作为另一个实施例,至少一个VM还包括第三虚拟机,当源节点为第二虚拟机,目标节点为第三虚拟机时,即源节点和目标节点均为Host上的普通VM时,第一虚拟机接收源节点发送的第一消息,包括:第一虚拟机通过第一虚拟端口接收第二虚拟机发送的第一消息,第一消息包括用于向第一虚拟机指示第二虚拟机已完成将待交换数据写入第二虚拟机与第三虚拟机通过第一虚拟机预先协商的第二共享内存的写完中断,其中第二共享内存为硬件层的存储设备上的指定存储区域;第一虚拟机根据待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,包括:第一虚拟机根据用于接收第一消息的第一虚拟端口确定与第一虚拟端口对应的第二虚拟机的地址;根据第二虚拟机的地址和待交换数据携带的第三虚拟机的地址确定第二共享内存的地址;确定携带有第二共享内存的地址和读取指令的第二消息,并向第三虚拟机发送第二消息,以便于第三虚拟机从第二共享内存读取待交换数据。
其中,第二共享内存是第二虚拟机与第三虚拟机通过第一虚拟机进行协商的,具体可以通过Xen的事件通道(Event Channel)进行协商。
可选地,作为另一个实施例,上述方法还包括:接收目标节点发送的读完指示信息,以便于释放第一共享内存或者第二共享内存。具体地,目标节点在读取完待交换数据后向第一虚拟机发送读完指示信息,第一虚拟机接收到读完指示信息后,恢复共享内存的可写权限,即释放该共享内存。
应理解,以上所述第一共享内存和第二共享内存仅仅为了区分,对本发明不构成限定。第一共享内存和第二共享内存都是硬件层存储设备上指定的一部分内存空间,具有随机性和不确定性。例如,第一共享内存被释放后,也可能转而被分配作为第二共享内存,在这种情况下,第一共享内存和第二共享内存对应相同的内存空间。
可选地,作为另一个实施例,在端口映射表为开放流Openflow流表时,第一虚拟机根据待交换数据携带的目标节点的地址,在该Openflow流表中确定与目标节点的地址所匹配的表项,其中,Openflow流表中包括至少一个表项,表项包括地址、虚拟端口和执行动作参数;如果匹配的表项存在,第一虚拟机根据匹配的表项中与目标节点的地址所对应的执行动作参数处理待交换数据;如果匹配的表项不存在,第一虚拟机建立能够与待交换数据匹配的新表项,并在Openflow流表中***新表项。
由上可见,本发明实施例中的计算节点包括:硬件层、运行在硬件层之上的宿主机Host、以及运行在Host之上的至少一个虚拟机VM,其中,硬件层包括输入/输出I/O设备和存储设备,至少一个虚拟机VM包括具有虚拟交换功能的第一虚拟机,至少一个VM还包括第二虚拟机;如此,将虚拟交换功能实现在虚拟机上,使得虚拟交换机与普通VM处于同等优先级,形成对等的网络虚拟化架构,在进行资源分配时虚拟交换机和普通VM一样使用用户空间的物理资源,这样便于Host进行管理和高效合理地进行资源分配。应用于该计算节点上的虚拟交换方法包括:第一虚拟机接收源节点发送的第一消息,第一消息用于请求第一虚拟机对待交换数据进行交换处理,其中待交换数据从源节点发往目标节点,源节点和目标节点中的至少一个为第二虚拟机;第一虚拟机根据待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,第二消息用于指示目标节点从硬件层的存储设备获取待交换数据。该方法将虚拟交换功能从Host内核中剥离解耦,转而在虚拟机上实现虚拟交换的功能,简化了Host内核的设计和负担,并且由于VM具有灵活性和很好的扩展性,从而使得vSwitch以及整个虚拟网络的扩展性和灵活性都得到了提高,便于控制面和数据面的分离,使其满足SDN的需求,支持Openflow。
图4是本发明一个实施例的虚拟交换数据流的示意图。如图4所示,虚拟交换机vSwitch(虚拟交换功能)部署于第一虚拟机上,使该第一虚拟机成为虚拟交换设备,并与普通的虚拟机VM1、VM2处于同等地位。其中第一虚拟机中的代理Agent模块与主机Host中的配置管理模块(Config andManage Module)连接,以便于***管理员对第一虚拟机进行配置。第一虚拟机的虚拟端口port可以与VM1、VM2或者VMM的底层物理网卡HOSTNIC进行连接。以下通过数据流详细说明Host中的普通VM(例如VM1)向外界(HOST NIC)发送待交换数据的过程。应理解,图4所示的***架构仅仅为一个示例,其中VM、port、Host NIC等模块的数量可以进行扩展。
401,预先配置。
在进行虚拟交换之前,需要构建虚拟网络,并对虚拟交换机vSwitch(第一虚拟机)进行预先配置。具体可以通过Host上的Config and Manage Module向第一虚拟机中的Agent模块发送配置命令,使得Agent模块对vSwitch的端口映射、VLAN管理等进行配置。
具体地,可以协商普通VM与vSwitch的通信方式、共享内存ShareMemory和端口,协商vSwitch与HOST NIC的通信方式和端口,配置vSwich的端口映射,以生成端口映射表。其中,通信方式可以包括共享内存、IO直通、零拷贝或直接内存存取(Direct Memory Access,DMA)等。共享内存是操作***进程间通信(IPC)的一种机制,零拷贝为避免中央处理器CPU将数据从一块存储拷贝到另外一块存储的技术,其实现由IO直通、MMAP等方式。其中,作为更优选的实施例,普通VM与vSwitch通过共享内存的方式进行通信,vSwitch与Host NIC通过IO直通或DMA方式进行通信,可以使得本发明所涉及的交换设备实现零拷贝,从而降低了资源开销,提高了交换效率。
402,建立虚连接。
当VM1需要向Host外部(Host NIC)发送数据时,VM1首先与vSwitch的第一虚拟端口port1建立虚连接,其中port1是步骤401中Agent模块预先配置与VM1相对应的虚拟端口。相应的物理过程为,VM1通过其虚拟网卡VM NIC映射到VM1对应的共享内存。
403,写入待交换数据。
之后,VM1通过其NIC向port1发送待交换数据。相应的实际物理过程为,将待交换数据写入VM1对应的共享内存。VM1写入完毕后,通过port1向vSwitch发送写完指示信息,以通知vSwitch进行下一步操作。具体地,该写完指示信息可以是写完中断。
404,交换处理过程。
vSwitch接收到VM1发送的写完指示信息后,转入交换处理过程,查询vSwitch内部的由Agent模块配置的端口映射表,以确定待交换数据的流出端口(第二虚拟端口port2)以及相对应的Host NIC。具体地,端口映射表中存有配置输入端口、输出端口、源地址、目标地址等信息的对应关系。从而vSwitch可以根据待交换数据中携带的目标地址和端口等信息可以确定输出端口,从而完成交换处理过程。这里的输入/输出端口信息可以是vSwitch的虚拟端口的端口号,源地址/目标地址可以是源节点/目标节点的互联网协议IP地址或多媒体访问控制MAC地址
405,读取待交换数据。
确定port2后,vSwitch通过port2向Host NIC发送读取指示信息,该读取指示信息中可携带待交换数据存入的共享内存的地址,令其读取共享内存中的待交换数据。Host NIC读取数据完毕后,可以向Host外部连接的设备或节点发送待交换数据,并通过port2向vSwitch发送读完指示信息,以便于vSwitch恢复共享内存的可写权限,即释放该共享内存,其中读完指示信息可以为读完中断。
应理解,为了方便描述,本发明实施例中以待交换数据为例来说明虚拟交换的具体过程,事实上,实际的虚拟交换还可以是数据流、信令、消息等,本发明对此不做限定。
由上可见,本发明实施例将虚拟交换功能实现在虚拟机上,使得虚拟交换机与普通VM处于同等优先级,形成对等的网络虚拟化架构,在进行资源分配时虚拟交换机和普通VM一样使用用户空间的物理资源,这样便于Host进行管理和高效合理地进行资源分配。应用于该计算节点上的虚拟交换方法包括:第一虚拟机接收源节点发送的第一消息,第一消息用于请求第一虚拟机对待交换数据进行交换处理,其中待交换数据从源节点发往目标节点,源节点和目标节点中的至少一个为第二虚拟机;第一虚拟机根据待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,第二消息用于指示目标节点从硬件层的存储设备获取待交换数据。该方法将虚拟交换功能从Host内核中剥离解耦,转而在虚拟机上实现虚拟交换的功能,简化了Host内核的设计和负担,并且由于VM具有灵活性和很好的扩展性,从而使得vSwitch以及整个虚拟网络的扩展性和灵活性都得到了提高。
图5是本发明另一实施例的虚拟交换数据流的示意图。如图5所示,虚拟交换机vSwitch(虚拟交换功能)部署于第一虚拟机上,使该第一虚拟机成为虚拟交换设备,并与普通的虚拟机VM1、VM2处于同等地位。其中第一虚拟机中的代理Agent模块与主机Host中的配置管理模块(Config andManage Module)连接,以便于***管理员对第一虚拟机进行配置。第一虚拟机的虚拟端口port可以与VM1、VM2或者VMM的底层物理网卡HOSTNIC进行连接。以下通过数据流详细说明由Host外界(Host NIC)向Host中的普通VM(例如VM1)发送待交换数据的过程。应理解,图5所示的***架构仅仅为一个示例,其中VM、port、Host NIC等模块的数量可以进行扩展。
501,预先配置。
在进行虚拟交换之前,需要构建虚拟网络,并对虚拟交换机vSwitch(第一虚拟机)进行预先配置。具体可以通过Host上的Config and Manage Module向第一虚拟机中的Agent模块发送配置命令,使得Agent模块对vSwitch的端口映射、VLAN管理等进行配置。具体的配置过程和配置项目与上述图3中步骤301相类似,此处不再赘述。
502,确定共享内存。
Host NIC接收到从外界(源节点)传入的待交换数据后,查询目标节点(VM1)的地址,并通过port1向vSwitch发送携带有VM1的地址的请求信息,其中port1是步骤501中Agent模块预先配置与Host NIC相对应的虚拟端口,之后vSwitch驱动层直接访问该待交换数据,查询vSwitch内部的由Agent模块预先配置的端口映射表,以确定待交换数据的流出端口(第二虚拟端口port2)以及相对应的共享内存。而后通过port1向Host NIC发送接待有共享内存地址的回复消息。
503,写入待交换数据。
Host NIC接收到共享内存地址后,将待交换数据写入共享内存中。写入方式由步骤501中Agent模块预先配置,例如,通过DMA方式写入。Host NIC写入完毕后,通过port1向vSwitch发送写完指示信息,以通知vSwitch进行下一步操作,其中写完指示信息可以为写完中断。
504,读取待交换数据。
vSwitch收到写完指示信息后,通过port2向VM1发送读取指示信息,以通知其新数据到来。VM1从共享内存中读取待交换数据完毕后,通过port2向vSwitch发送读完指示信息,以便于vSwitch恢复共享内存的可写权限,即释放该共享内存。
应理解,为了方便描述,本发明实施例中以待交换数据为例来说明虚拟交换的具体过程,事实上,实际的虚拟交换还可以是数据流、信令、消息等,本发明对此不做限定。
由上可见,本发明实施例将虚拟交换功能实现在虚拟机上,使得虚拟交换机与普通VM处于同等优先级,形成对等的网络虚拟化架构,在进行资源分配时虚拟交换机和普通VM一样使用用户空间的物理资源,这样便于Host进行管理和高效合理地进行资源分配。应用于该计算节点上的虚拟交换方法包括:第一虚拟机接收源节点发送的第一消息,第一消息用于请求第一虚拟机对待交换数据进行交换处理,其中待交换数据从源节点发往目标节点,源节点和目标节点中的至少一个为第二虚拟机;第一虚拟机根据待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,第二消息用于指示目标节点从硬件层的存储设备获取待交换数据。该方法将虚拟交换功能从Host内核中剥离解耦,转而在虚拟机上实现虚拟交换的功能,简化了Host内核的设计和负担,并且由于VM具有灵活性和很好的扩展性,从而使得vSwitch以及整个虚拟网络的扩展性和灵活性都得到了提高。
图6是本发明另一实施例的虚拟交换数据流的示意图。如图6所示,虚拟交换机vSwitch(虚拟交换功能)部署于第一虚拟机上,使该第一虚拟机成为虚拟交换设备,并与普通的虚拟机VM1、VM2处于同等地位。其中第一虚拟机中的代理Agent模块与主机Host中的配置管理模块(Config andManage Module)连接,以便于***管理员对第一虚拟机进行配置。第一虚拟机的虚拟端口port可以与VM1、VM2或者VMM的底层物理网卡HOSTNIC进行连接。以下通过数据流详细说明Host中普通VM之间(VM1与VM2)待交换数据发送的过程。应理解,图6所示的***架构仅仅为一个示例,其中VM、port、Host NIC等模块的数量可以进行扩展。
601,预先配置。
在进行虚拟交换之前,需要构建虚拟网络,并对虚拟交换机vSwitch(第一虚拟机)进行预先配置。具体可以通过Host上的Config and Manage Module向第一虚拟机中的Agent模块发送配置命令,使得Agent模块对vSwitch的端口映射、VLAN管理等进行配置。具体的配置过程和配置项目与上述图3中步骤301相类似,此处不再赘述。
602,共享内存协商。
Host中普通VM之间需要通过vSwitch协商共享内存以供通信。具体地,VM1可以通过vSwitch与VM2协商,由vSwitch创建一个共享内存以供VM1和VM2共享。具体协商过程可以利用Xen事件通道(Event Channel)的机制进行。VM1与vSwitch的第一虚拟端口port1建立虚连接,其中port1是步骤601中Agent模块预先配置与VM1相对应的虚拟端口。相应的物理过程为,VM1通过其虚拟网卡VM NIC映射到VM1与VM2协商的共享内存。
603,写入待交换数据。
之后,VM1通过其NIC向port1发送待交换数据。相应的实际物理过程为,将待交换数据写入VM1对应的共享内存。VM1写入完毕后,通过port1向vSwitch发送写完指示信息,以通知vSwitch进行下一步操作。
604,读取待交换数据。
vSwitch向VM2发送读取指示信息,令其读取共享内存中的待交换数据。Host NIC读取数据完毕后,向Host外部的目标节点发送待交换数据,并向vSwitch发送读完指示信息,以便于vSwitch恢复共享内存的可写权限,即释放该共享内存。
应理解,为了方便描述,本发明实施例中以待交换数据为例来说明虚拟交换的具体过程,事实上,实际的虚拟交换还可以是数据流、信令、消息等,本发明对此不做限定。
由上可见,本发明实施例将虚拟交换功能实现在虚拟机上,使得虚拟交换机与普通VM处于同等优先级,形成对等的网络虚拟化架构,在进行资源分配时虚拟交换机和普通VM一样使用用户空间的物理资源,这样便于Host进行管理和高效合理地进行资源分配。应用于该计算节点上的虚拟交换方法包括:第一虚拟机接收源节点发送的第一消息,第一消息用于请求第一虚拟机对待交换数据进行交换处理,其中待交换数据从源节点发往目标节点,源节点和目标节点中的至少一个为第二虚拟机;第一虚拟机根据待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,第二消息用于指示目标节点从硬件层的存储设备获取待交换数据。该方法将虚拟交换功能从Host内核中剥离解耦,转而在虚拟机上实现虚拟交换的功能,简化了Host内核的设计和负担,并且由于VM具有灵活性和很好的扩展性,从而使得vSwitch以及整个虚拟网络的扩展性和灵活性都得到了提高。
图7是本发明另一实施例的用于软件定义网络SDN的虚拟交换设备的示意图。
本发明通过将虚拟交换机vSwitch与Host内核解耦,并将vSwitch部署到第一虚拟机中,简化了Host内核的设计和复杂程度。并且由于虚拟机的可配置性、扩展性和灵活性较高,从而也提高了vSwitch乃至整个虚拟化网络的扩展性和灵活性,使得本发明实施例的虚拟交换设备可以实现控制面control plane和数据面data plane的分离,也就是说,满足SDN的需求。
SDN是新一代网络架构,与传统网络架构将协议分层,控制面和数据面相融合的做法不同,SDN在操作和控制层面将协议融合处理,并将控制面和数据面分开。典型的SDN方案为开放流Openflow,具体到在本发明实施例的具有虚拟交换功能的第一虚拟机上实现Openflow,可以将交换设备的逻辑实现分为两个部分:开放流控制器(Openflow Controller)和开放流流表(Openflow Flowtable),其中开放流控制器负责控制面,用于网络拓扑配置,数据转发策略调整,配置和维护Openflow流表,Openflow流表则负责数据面,是数据流转发的查询映射表。为了满足SDN架构对交换设备的需求,本发明可采用如下两种部署方式:
第一种,Openflow Controller和Openflow Flowtable实现在同一个VM中,也就是本发明中的具有虚拟交换功能的第一虚拟机,其中OpenflowController实现在用户空间,而Flowtable可实现在用户空间,亦可实现在内核空间;
第二种,Openflow Controller和Openflow Flowtable分别实现在两个具有虚拟交换功能的虚拟机中,例如,可以将Openflow Controller部署在第一虚拟机中,运行在Host之上的至少一个VM之中还包括具有虚拟交换功能的第四虚拟机,第四虚拟机与第一虚拟机相类似,两者使用VM间的通信技术交互信息,例如Xen的事件Event Channel。
具体地,如图7所示,虚拟交换机vSwitch的Controller和FlowTable部署于第一虚拟机上,或者部署于不同的两个虚拟机上,使得该vSwitch与普通的虚拟机VM1、VM2处于同等地位。其中Controller中的代理Agent模块与主机Host中的配置管理模块(Config and Manage Module)连接,以便于***管理员对vSwitch进行配置。Flowtable部分的虚拟端口port可以与VM1、VM2或者VMM的底层物理网卡HOST NIC进行连接。应理解,图7所示的***架构仅仅为一个示例,其中VM、port、Host NIC等模块的数量可以进行扩展。
Openflow Controller和Flowtable相互配合实现业务流的转发,其中Controller包含用户配置数据库和一个规则库,Flowtable是一个以业务流为单位的表结构,包含匹配和执行和部分。Flowtable每一个表项entry代表一个业务流,匹配部分是待交换数据IP、MAC和Port等字段,执行部分表示对匹配待交换数据的处理,包括转发、丢包和向Controller申请新的表项。例如,每当有待交换数据到达vSwitch时,vSwitch检查待交换数据的IP,Mac和Port等字段,并搜索Flowtable,寻找匹配entry;若找到匹配表项,按照Action执行操作;若未找到匹配表项,Flowtable向Controller发送表项建立请求,Controller收到请求后,查询规则库,建立新的表项,并发给Flowtable;Flowtable***新的表项,并将后续符合此表项的待交换数据按规则转发。
由上可见,本发明实施例将虚拟交换功能实现在虚拟机上,使得虚拟交换机与普通VM处于同等优先级,形成对等的网络虚拟化架构,在进行资源分配时虚拟交换机和普通VM一样使用用户空间的物理资源,这样便于Host进行管理和高效合理地进行资源分配。该方法将虚拟交换功能从Host内核中剥离解耦,降低Host与vSwitch的耦合性,可以在同一Host内部署多个vSwitch不受Host的约束,并且由于VM具有灵活性和很好的扩展性,从而使得vSwitch以及整个虚拟网络的扩展性和灵活性都得到了提高。本发明还将配置模块与待交换数据交换转发模块相分离,更加地符合可编程网络设计,从而能够在本发明实施例的虚拟化网络架构上实现SDN。
图8是本发明另一实施例的分布式实施的示意图。
如图8所示。本发明实施例的配置架构包括一个主虚拟交换机MastervSwitch和两个个从属虚拟交换机Slave vSwitch,应理解的是,图8为了方便描述,仅仅示出两个从属vSwitch,这对本发明并不造成限定,事实上可以有若干个从属vSwitch。图8中的每一个主机Host都与上述实施例中描述的运行在硬件层之上的Host相同,且这些Host可以是运行在同一个物理机的硬件层之上的Host,也可以是运行在不同物理机的硬件层之上的Host,本发明对此不做限定。其中,每一个vSwitch均为本发明所涉及的具有虚拟交换功能的虚拟机,也就是说每一个vSwitch都与上述实施例中的具有虚拟交换功能的第一虚拟机相类似。各个Host中的主管理模块和从属管理模块都可以对应于上述实施例Host中的配置管理模块Config and Manage Module,相应地,Master vSwitch的控制管理模块被设定为主管理模块MasterManager,Slave vSwitch的控制管理模块被设定为从属管理模块SlaveManager。Master Manager和Slave Manager对其Host的vSwitch管理方式与上述各实施例的方式相同,可以通过vSwitch中的agent模块来配置和管理vSwitch(agent未在图8中示出)。其中Master Manager是用户配置的接口,可以由用户通过客户端程序直接进行配置,Master Manager通过协议与SlaveManager通信,协商各个vSwitch之间的端口映射,而Master Manager与SlaveManager之间的通信则为控制流,主从vSwitch之间的通信则为数据流。
具体地,本发明实施例的分布式vSwitch的配置过程为:首先在一个Host上创建Master vSwitch,之后创建vSwitch级联配置,包括各个Slave vSwitch,以及所有vSwitch上的IP地址和端口映射;之后通过配置协议将上述配置信息发送到其他Host,至此,承载Master vSwitch的Host为主Host,接收配置信息的其他Host为从属Host;之后,接收到配置信息的各个从属Host创建控制管理模块,即从属管理模块;最后,各个从属管理模块按照接收到的配置信息配置器对应的Slave vSwitch上的IP地址和端口。应理解,本发明实施例所涉及的配置协议,包括但不限于可扩展标记语言XML、超文本传输协议HTTP等应用协议。
作为一个具体的例子,本发明实施例的分布式交换架构的配置过程如图9所示:
901,用户登陆Host0中的Manage Module创建一个vSwitch实例,并将其定义为Master。
902,通过通信协议,将配置消息传输至Host1和Host2的ManageModuel。
903,Host1和Host2的Manage Module接收到配置消息,按照配置要求创建vSwitch实例,并定义为Slave,然后将其Master指针指向Host0的vSwitch;根据配置中的端口映射,配置其vSwitch的端口映射。
本发明实施例将虚拟交换功能从Host内核中剥离解耦,降低Host与vSwitch的耦合性,可以在同一Host内部署多个vSwitch不受Host的约束,并且由于vSwitch在用户操作***Guest OS中实现,无需再依赖内核操作***Host OS/VMM OS,使得vSwitch非常容易部署,具有良好的移植性,从而使得vSwitch以及整个虚拟网络的扩展性和灵活性都得到了提高,本发明实施例中的分布式架构将多个vSwitch级联,使得虚拟网络得到大幅扩展以及虚拟交换能力得到大幅提升。
图10是本发明一个实施例的宿主机的模块架构示意图。图10的宿主机1000包括创建模块1001和配置模块1002。
创建模块1001,用于在输入/输出I/O设备的I/O虚拟功能启动后,在宿主机Host中产生至少一个虚拟机VM,其中至少一个VM包括具有虚拟交换功能的第一虚拟机,至少一个VM还包括第二虚拟机;
配置模块1002,用于向第一虚拟机发送配置命令,以便于第一虚拟机根据配置命令配置用于与第二虚拟机进行通信的第一虚拟机的第一虚拟端口,并配置用于与I/O设备进行通信的第一虚拟机的第二虚拟端口。
可以理解的是,本实施例宿主机1000可如上述方法实施例中的Host,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
由上可见,本实施例中在I/O设备的I/O虚拟功能启动后,Host1000通过创建模块1001产生至少一个运行在Host1000之上的虚拟机。具体地,该创建模块1001可以是配置管理模块(Config and Manage Module),创建模块1001还可以通过使用Qemu等工具创建虚拟机的虚拟网卡接口(VMNIC),由创建模块1001产生的虚拟机中有至少一个具有虚拟交换功能的第一虚拟机vSwitch以及若干普通虚拟机VM。
之后配置模块1002,即Config and Manage Module,向Agent模块发送配置命令,其中配置模块1002通过进程间通信技术IPC(如IOCTL,NETLINK,SOCKET等)与Agent相连接,配置模块1002将Host虚拟环境的配置传入第一虚拟机的Agent,具体可以包括Host1000下层物理网卡、虚拟机的前后端FE/BE、共享内存、DMA中断等配置信息,使得第一虚拟机获得虚拟环境信息,从而建立相应的虚拟网络环境。
由上可见,通过Host1000搭建的虚拟网络环境,虚拟交换功能得以从Host1000内核中剥离解耦,转而在第一虚拟机上实现虚拟交换的功能,简化了Host内核的设计和负担,并且由于VM具有灵活性和很好的扩展性,从而使得vSwitch以及整个虚拟网络的扩展性和灵活性都得到了提高。进一步地,因为将虚拟交换功能实现在虚拟机上,使得虚拟交换机与普通VM处于同等地位,具有相同的优先级,形成对等的网络虚拟化架构,在进行资源分配时虚拟交换机和普通VM一样使用用户空间的物理资源,这样便于Host进行管理和高效合理地进行资源分配。
图11是本发明一个实施例的虚拟机的模块架构示意图。图11的虚拟机1100包括接收模块1101、交换处理模块1102和发送模块1103。
接收模块1101,用于接收源节点发送的第一消息,所述第一消息用于请求所述虚拟机1100对待交换数据进行交换处理,其中所述待交换数据是从所述源节点发往目标节点的,所述源节点和所述目标节点中的至少一个为第二虚拟机,所述第二虚拟机运行在所述Host之上;
交换处理模块1102,用于根据所述待交换数据携带的目标节点的地址和所述虚拟机1100配置的端口映射表确定第二消息,所述第二消息用于指示所述目标节点从所述硬件层的存储设备获取所述待交换数据;
发送模块1103,用于向所述目标节点发送所述第二消息。
本发明实施例的虚拟机1100为具有虚拟交换功能的虚拟机,与其他普通虚拟机具有同等地位,部署于Host上。其中源节点可以是Host上的普通虚拟机,也可以是Host外部的虚拟机或物理机。同样地,目标节点也可以是Host上的普通虚拟机,也可以是Host外部的虚拟机或物理机。
可以理解的是,本发明实施例的虚拟机1100可如上述方法实施例中的具有虚拟交换功能的第一虚拟机,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
本发明实施例通过将虚拟交换功能部署到虚拟机中,简化了VMM,有利于Host对虚拟网络进行管理并进行高效、合理的网络资源分配。
可选地,作为一个实施例,虚拟机1100还包括代理Agent模块1104和生成模块1105。具体地,代理Agent模块1104,用于根据Host发送的配置命令,配置用于与第二虚拟机进行通信的虚拟机的第一虚拟端口1106,并配置用于与I/O设备进行通信的虚拟机的第二虚拟端口1107。生成模块1105,用于建立第一虚拟端口1106与第二虚拟端口1107之间的映射关系,以生成端口映射表。
可选地,作为一个实施例,Agent模块1104,还用于根据配置命令配置第二虚拟机对应的第一共享内存,其中第一共享内存为硬件层的存储设备上的指定存储区域。具体可以通过第二虚拟机与虚拟机1100之间的事件通道协商第一共享内存。接收模块1101,具体用于通过第一虚拟端口1106接收第一消息,第一消息包括用于向虚拟机1100指示源节点已完成将待交换数据写入第一共享内存的写完中断;交换处理模块1102,具体用于根据用于接收第一消息的第一虚拟端口1106确定对应的第一共享内存的地址;从第一共享内存获取待交换数据携带的目标节点的地址,以便于确定目标节点所对应的第二虚拟端口1107;确定携带有第一共享内存的地址和读取指令的第二消息。发送模块1103,具体用于通过端口映射表中与第一虚拟端口1106对应的第二虚拟端口1107向目标节点发送第二消息;其中,源节点为第二虚拟机,目标节点为I/O设备。
可选地,作为一个实施例,接收模块1101,具体用于接收源节点发送的第一消息;交换处理模块1102,具体用于获取待交换数据携带的目标节点的地址;根据目标节点的地址查询端口映射表以确定与目标节点对应的第一虚拟端口1106并确定与第二虚拟机对应的第一共享内存的地址;发送模块1103,具体用于通过I/O设备所对应的第二虚拟端口1107向目标节点发送携带有第一共享内存的地址的回复消息;交换处理模块1102,还用于在接收到源节点发送的用于向虚拟机1100指示源节点已完成将待交换数据写入第一共享内存的写完中断时,确定携带有读取指令的第二消息;发送模块1103,还用于通过第一虚拟端口1106向目标节点发送第二消息;接收模块1101,还用于接收源节点发送的指示源节点已完成将待交换数据写入第一共享内存的写完中断;其中,源节点为I/O设备,目标节点为第二虚拟机。
可选地,作为一种实现方式,接收模块1101,具体用于通过第一虚拟端口1106接收源节点发送的第一消息,第一消息包括写完中断;交换处理模块1102,具体用于根据用于接收第一消息的第一虚拟端口1106确定对应的源节点的地址;根据源节点的地址和待交换数据携带的目标节点的地址确定第二共享内存的地址;确定携带有第二共享内存的地址和读取指令的第二消息;发送模块1103,具体用于向目标节点发送第二消息。
可选地,作为另一个实施例,接收模块1101还用于:接收目标节点发送的读完指示信息,以便于虚拟机1100释放第一共享内存或第二共享内存。
具体地,第一虚拟机从I/O设备获取待交换数据携带的目标节点的地址,是由第一虚拟机在接收到第一消息的通知后,得知I/O设备(即底层物理网卡)接收到了待交换数据,之后第一虚拟机则可以通过驱动层直接访问该待交换数据以获取其携带的目标节点的地址。
可选地,在一种实现方式下,在端口映射表为开放流Openflow流表时,第一虚拟机1231还包括包含Agent模块1104的Openflow控制器,其中:在接收模块1101接收源节点发送的第一消息之后,,交换处理模块1102还用于,根据待交换数据携带的目标节点的地址,在Openflow流表中确定与目标节点的地址所匹配的表项,其中,Openflow流表中包括至少一个表项,表项包括地址、虚拟端口和执行动作参数;如果匹配的表项存在,根据匹配的表项中与目标节点的地址所对应的执行动作参数处理待交换数据;如果匹配的表项不存在,向Openflow控制器发送表项建立请求,以便于Openflow控制器根据表项建立请求建立能够与待交换数据匹配的新表项,并在Openflow流表中***新表项。
本发明实施例通过将虚拟交换功能部署到虚拟机1100中,使得具有虚拟交换功能的虚拟机1100与其他普通虚拟机处于同等地位,从而有利于Host对虚拟网络进行管理并进行高效、合理的网络资源分配。并且由于虚拟交换功能从Host核心中剥离,从而增强了扩展性,使其虚拟机1100满足SDN的需求,支持Openflow。
图12是本发明一个实施例的计算机节点的示意图。图12所示的计算节点1200可包括:
硬件层1210、运行在硬件层1210之上的宿主机Host1220、以及运行在Host1220之上的至少一个虚拟机VM1230;
其中,硬件层1210包括输入/输出I/O设备1211和存储设备1212,至少一个虚拟机VM1230包括具有虚拟交换功能的第一虚拟机1231,至少一个VM1230还包括第二虚拟机1232。
第一虚拟机1231,用于接收源节点发送的第一消息,第一消息用于请求第一虚拟机1231对待交换数据进行交换处理,其中待交换数据是从源节点发往目标节点的,源节点和目标节点中的至少一个为第二虚拟机1232;
第一虚拟机1231,还用于根据待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,第二消息用于指示目标节点从硬件层的存储设备1212获取待交换数据。
此外,Host1220,用于向第一虚拟机1231发送配置命令;
第一虚拟机1231,还用于根据配置命令,通过第一虚拟机的代理Agent模块配置用于与第二虚拟机进行通信的第一虚拟机的第一虚拟端口,并配置用于与I/O设备1211进行通信的第一虚拟机的第二虚拟端口;
第一虚拟机1231,还用于建立第一虚拟端口与第二虚拟端口之间的映射关系,以生成端口映射表。
可选地,第一虚拟机1231,还用于根据配置命令配置第二虚拟机1232对应的第一共享内存,其中第一共享内存为硬件层1210的存储设备1212上的指定存储区域。
具体地,作为一个数据流和信令流交互的例子,当源节点为第二虚拟机1232,目标节点为I/O设备1211时:
源节点1232,用于将待交换数据写入第一共享内存;
源节点1232,还用于向第一虚拟机1231发送第一消息;
第一虚拟机1231,具体用于通过第一虚拟端口接收第一消息,第一消息包括用于向第一虚拟机1231指示源节点1232已完成将待交换数据写入第一共享内存的写完中断;以及根据用于接收第一消息的第一虚拟端口确定对应的第一共享内存的地址;从第一共享内存获取待交换数据携带的目标节点1211的地址,以便于确定目标节点1211所对应的第二虚拟端口;确定携带有第一共享内存的地址和读取指令的第二消息,并通过端口映射表中与第一虚拟端口对应的第二虚拟端口向目标节点1211发送第二消息;
目标节点1211,用于根据第二消息从第一共享内存读取待交换数据;
具体地,作为一个数据流和信令流交互的例子,当源节点为I/O设备1211,目标节点为第二虚拟机1232时:
第一虚拟机1231,具体用于接收源节点1211发送的第一消息,获取待交换数据携带的目标节点1232的地址;根据目标节点1232的地址查询端口映射表以确定与目标节点1232对应的第一虚拟端口并确定与第二虚拟机1232对应的第一共享内存的地址;通过I/O设备1211所对应的第二虚拟端口向目标节点1232发送携带有第一共享内存的地址的回复消息;以及,在接收到源节点1211发送的用于向第一虚拟机指示源节点1211已完成将待交换数据写入第一共享内存的写完中断时,确定携带有读取指令的第二消息,通过第一虚拟端口向目标节点1232发送第二消息;
源节点1211,还用于根据回复消息中的第一共享内存的地址将待交换数据写入第一共享内存;
源节点1211,还用于向第一虚拟机发送指示源节点1211已完成将待交换数据写入第一共享内存的写完中断;
目标节点1232,用于根据第二消息从第一共享内存读取待交换数据;
具体地,作为一个数据流和信令流交互的例子,当源节点和目标节点同为至少一个VM1230中的普通虚拟机时,假设源节点为第二虚拟机1232,目标节点为第三虚拟机1233:
源节点1232,还用于将待交换数据写入源节点1232与目标节点1233通过第一虚拟机1231预先协商的第二共享内存,其中第二共享内存为硬件层1210的存储设备1212上的指定存储区域;
源节点1232,还用于通过第一虚拟端口向第一虚拟机发送第一消息,第一消息包括写完中断;
第一虚拟机1231,具体用于根据用于接收第一消息的第一虚拟端口确定对应的源节点1232的地址;根据源节点1232的地址和待交换数据携带的目标节点1233的地址确定第二共享内存的地址;确定携带有第二共享内存的地址和读取指令的第二消息,并向目标节点1233发送第二消息;
目标节点1233,用于根据第二消息从第二共享内存读取待交换数据。
可选地,作为一个实施例,在目标节点根据第二消息从共享内存读取待交换数据之后,目标节点可以向第一虚拟机1231发送读完指示信息,以便于第一共享内存或第二共享内存被释放;第一虚拟机1231,在接收到该读完指示信息后,释放第一共享内存或第二共享内存。
具体地,第一虚拟机从I/O设备获取待交换数据携带的目标节点的地址,是由第一虚拟机在接收到第一消息的通知后,得知I/O设备(即底层物理网卡)接收到了待交换数据,之后第一虚拟机则可以通过驱动层直接访问该待交换数据以获取其携带的目标节点的地址。
可选地,在端口映射表为开放流Openflow流表时,在接收源节点发送的第一消息之后,第一虚拟机1231还用于:根据待交换数据携带的目标节点的地址,配置的Openflow流表中确定与目标节点的地址所匹配的表项,其中,Openflow流表中包括至少一个表项,表项包括地址、虚拟端口和执行动作参数;如果匹配的表项存在,根据匹配的表项中与目标节点的地址所对应的执行动作参数处理待交换数据;如果匹配的表项不存在,建立能够与待交换数据匹配的新表项,并在该Openflow流表中***新表项。
综上,本发明实施例中计算节点1200可包括:硬件层1210、运行在所述硬件层1210之上的宿主机Host1220、以及运行在所述Host1220之上的至少一个虚拟机VM1230,其中,所述硬件层包括输入/输出I/O设备1211和存储设备1212,所述至少一个虚拟机VM包括具有虚拟交换功能的第一虚拟机1231,所述至少一个VM还包括第二虚拟机1232;如此,将虚拟交换功能实现在虚拟机上,使得虚拟交换机与普通VM处于同等优先级,形成对等的网络虚拟化架构,在进行资源分配时虚拟交换机和普通VM一样使用用户空间的物理资源,这样便于Host进行管理和高效合理地进行带宽、CPU、存储等资源的分配。应用于该计算节点上的虚拟交换方法包括:所述第一虚拟机接收源节点发送的第一消息,所述第一消息用于请求所述第一虚拟机对待交换数据进行交换处理,其中所述待交换数据从所述源节点发往目标节点,所述源节点和所述目标节点中的至少一个为所述第二虚拟机;所述第一虚拟机根据所述待交换数据携带的目标节点的地址和所述配置的端口映射表确定并发送第二消息,所述第二消息用于指示所述目标节点从所述硬件层的存储设备获取所述待交换数据。该方法将虚拟交换功能从Host内核中剥离解耦,降低与Host的耦合性,可以在同一Host内部署多个vSwitch,不受Host约束,因此具有更强的扩展性,并且解耦后vSwtich不再依赖Host内核中的操作***,变得更加易于部署,所以获得了更好的移植性,并且由于配置模块(Agent)与待交换数据交换转发模块(端口映射表)相分离,更符合软件定义网络的要求。
图13是本发明一个实施例的计算机***的示意图。参见图13,本发明实施例还提供一种计算机***1300,可包括:
至少一个计算节点1200。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
综上,本发明实施例的计算机***1300中的计算节点1200可包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM,其中,所述硬件层包括输入/输出I/O设备和存储设备,所述至少一个虚拟机VM包括具有虚拟交换功能的第一虚拟机,所述至少一个VM还包括第二虚拟机;如此,将虚拟交换功能实现在虚拟机上,使得虚拟交换机与普通VM处于同等优先级,形成对等的网络虚拟化架构,在进行资源分配时虚拟交换机和普通VM一样使用用户空间的物理资源,这样便于Host进行管理和高效合理地进行带宽、CPU、存储等资源的分配。应用于该计算节点上的虚拟交换方法包括:所述第一虚拟机接收源节点发送的第一消息,所述第一消息用于请求所述第一虚拟机对待交换数据进行交换处理,其中所述待交换数据从所述源节点发往目标节点,所述源节点和所述目标节点中的至少一个为所述第二虚拟机;所述第一虚拟机根据所述待交换数据携带的目标节点的地址和所述配置的端口映射表确定并发送第二消息,所述第二消息用于指示所述目标节点从所述硬件层的存储设备获取所述待交换数据。该方法将虚拟交换功能从Host内核中剥离解耦,降低与Host的耦合性,可以在同一Host内部署多个vSwitch,不受Host约束,因此具有更强的扩展性,并且解耦后vSwtich不再依赖Host内核中的操作***,变得更加易于部署,所以获得了更好的移植性,并且由于配置模块(Agent)与待交换数据交换转发模块(端口映射表)相分离,更符合软件定义网络的要求。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或步骤可以用硬件、处理器执行的软件程序,或者二者的结合来实施。软件程序可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内。

Claims (24)

1.一种虚拟交换方法,其特征在于,应用于计算节点上,所述计算节点包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM,其中,所述硬件层包括输入/输出I/O设备和存储设备,所述至少一个虚拟机VM包括具有虚拟交换功能的第一虚拟机,所述至少一个VM还包括第二虚拟机,
所述方法包括:
所述第一虚拟机接收源节点发送的第一消息,所述第一消息用于请求所述第一虚拟机对待交换数据进行交换处理,其中所述待交换数据是从所述源节点发往目标节点的,所述源节点和所述目标节点中的至少一个为所述第二虚拟机;
所述第一虚拟机根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,所述第二消息用于指示所述目标节点从所述硬件层的存储设备获取所述待交换数据。
2.根据权利要求1所述的方法,其特征在于,所述第一虚拟机接收源节点发送的第一消息之前,还包括:
所述第一虚拟机接收所述Host发送的配置命令;
所述第一虚拟机根据所述配置命令配置用于与所述第二虚拟机进行通信的所述第一虚拟机的第一虚拟端口,并配置用于与所述I/O设备进行通信的所述第一虚拟机的第二虚拟端口;
所述第一虚拟机建立所述第一虚拟端口与所述第二虚拟端口之间的映射关系,以生成所述端口映射表。
3.根据权利要求2所述的方法,其特征在于,所述接收所述Host发送的配置命令之后,还包括:所述第一虚拟机根据所述配置命令配置所述第二虚拟机对应的第一共享内存,其中所述第一共享内存为所述硬件层的存储设备上的指定存储区域。
4.根据权利要求3所述的方法,其特征在于,当所述源节点为所述第二虚拟机,所述目标节点为所述I/O设备时,
所述第一虚拟机接收源节点发送的第一消息,包括:所述第一虚拟机通过所述第一虚拟端口接收所述第二虚拟机发送的所述第一消息,所述第一消息包括用于向所述第一虚拟机指示所述第二虚拟机已完成将所述待交换数据写入所述第一共享内存的写完中断;
所述第一虚拟机根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,包括:所述第一虚拟机根据用于接收所述第一消息的所述第一虚拟端口确定对应的所述第一共享内存的地址;从所述第一共享内存获取所述待交换数据,根据所述待交换数据携带的所述I/O设备的地址从所述端口映射表中确定与所述I/O设备对应的所述第二虚拟端口;确定携带有所述第一共享内存的地址和读取指令的所述第二消息,并通过所述第二虚拟端口向所述I/O设备发送所述第二消息,以便于所述I/O设备从所述第一共享内存读取所述待交换数据。
5.根据权利要求3所述的方法,其特征在于,当所述源节点为所述I/O设备,所述目标节点为所述第二虚拟机时,
所述第一虚拟机接收源节点发送的第一消息之后还包括:所述第一虚拟机从所述I/O设备获取所述待交换数据携带的目标节点的地址,所述目标节点的地址为所述第二虚拟机的地址;
所述第一虚拟机根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,包括:所述第一虚拟机根据所述第二虚拟机的地址查询所述端口映射表以确定与所述第二虚拟机对应的第一虚拟端口并确定与所述第二虚拟机对应的第一共享内存的地址;通过所述I/O设备所对应的所述第二虚拟端口向所述I/O设备发送携带有所述第一共享内存的地址的回复消息,以便于所述I/O设备根据所述回复消息将所述待交换数据写入所述第一共享内存;在所述第一虚拟机接收到所述I/O设备发送的用于向所述第一虚拟机指示所述I/O设备已完成将所述待交换数据写入所述第一共享内存的写完中断时,确定携带有读取指令的所述第二消息,通过所述第一虚拟端口向所述第二虚拟机发送所述第二消息,以便于所述第二虚拟机从所述第一共享内存读取所述待交换数据。
6.根据权利要求2所述的方法,其特征在于,所述至少一个VM还包括第三虚拟机,当所述源节点为所述第二虚拟机,所述目标节点为所述第三虚拟机时,
所述第一虚拟机接收源节点发送的第一消息,包括:所述第一虚拟机通过所述第一虚拟端口接收所述第二虚拟机发送的所述第一消息,所述第一消息包括用于向所述第一虚拟机指示所述第二虚拟机已完成将所述待交换数据写入所述第二虚拟机与所述第三虚拟机通过所述第一虚拟机预先协商的第二共享内存的写完中断,其中所述第二共享内存为所述硬件层的存储设备上的指定存储区域;
所述第一虚拟机根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,包括:所述第一虚拟机根据用于接收所述第一消息的所述第一虚拟端口确定与所述第一虚拟端口对应的所述第二虚拟机的地址;根据所述第二虚拟机的地址和所述待交换数据携带的第三虚拟机的地址确定所述第二共享内存的地址;确定携带有所述第二共享内存的地址和读取指令的所述第二消息,并向所述第三虚拟机发送所述第二消息,以便于所述第三虚拟机从所述第二共享内存读取所述待交换数据。
7.根据权利要求4至6中任意一项所述的方法,其特征在于,所述方法还包括:接收所述目标节点发送的读完指示信息,以便于所述第一共享内存或所述第二共享内存被释放。
8.根据权利要求1至7中任意一项所述的方法,其特征在于,在所述端口映射表为开放流Openflow流表时,所述第一虚拟机接收源节点发送的第一消息之后,还包括:
所述第一虚拟机根据所述待交换数据携带的目标节点的地址,在所述Openflow流表中确定与所述目标节点的地址所匹配的表项,其中,所述Openflow流表中包括至少一个表项,所述表项包括地址、虚拟端口和执行动作参数;
如果所述匹配的表项存在,所述第一虚拟机根据所述匹配的表项中与所述目标节点的地址所对应的执行动作参数处理所述待交换数据;
如果所述匹配的表项不存在,所述第一虚拟机建立能够与所述待交换数据匹配的新表项,并在所述Openflow流表中***所述新表项。
9.一种宿主机,其特征在于,包括:
创建模块,用于在输入/输出I/O设备的I/O虚拟功能启动后,在宿主机Host之上产生至少一个虚拟机VM,其中所述至少一个VM包括具有虚拟交换功能的第一虚拟机,所述至少一个VM还包括第二虚拟机;
配置模块,用于向所述第一虚拟机发送配置命令,以便于所述第一虚拟机根据所述配置命令配置用于与所述第二虚拟机进行通信的所述第一虚拟机的第一虚拟端口,并配置用于与所述I/O设备进行通信的所述第一虚拟机的第二虚拟端口。
10.一种虚拟机,其特征在于,运行在宿主机Host之上,所述Host运行在硬件层之上,所述硬件层包括输入/输出I/O设备和存储设备,所述虚拟机包括:
接收模块,用于接收源节点发送的第一消息,所述第一消息用于请求所述虚拟机对待交换数据进行交换处理,其中所述待交换数据是从所述源节点发往目标节点的,所述源节点和所述目标节点中的至少一个为第二虚拟机,所述第二虚拟机运行在所述Host之上;
交换处理模块,用于根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定第二消息,所述第二消息用于指示所述目标节点从所述硬件层的存储设备获取所述待交换数据;
发送模块,用于向所述目标节点发送所述第二消息。
11.根据权利要求10所述的虚拟机,其特征在于,包括:
代理Agent模块,用于根据所述Host发送的配置命令,配置用于与所述第二虚拟机进行通信的所述虚拟机的第一虚拟端口,并配置用于与所述I/O设备进行通信的所述虚拟机的第二虚拟端口;
生成模块,用于建立所述第一虚拟端口与所述第二虚拟端口之间的映射关系,以生成所述端口映射表。
12.根据权利要求11所述的虚拟机,其特征在于,所述Agent模块,还用于根据所述配置命令配置所述第二虚拟机对应的第一共享内存,其中所述第一共享内存为所述硬件层的存储设备上的指定存储区域。
13.根据权利要求12所述的虚拟机,其特征在于,
所述接收模块,具体用于通过所述第一虚拟端口接收所述第一消息,所述第一消息包括用于向所述虚拟机指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断;
所述交换处理模块,具体用于根据用于接收所述第一消息的所述第一虚拟端口确定对应的所述第一共享内存的地址;从所述第一共享内存获取所述待交换数据,根据所述待交换数据携带的所述目标节点的地址从所述端口映射表中确定与所述目标节点对应的所述第二虚拟端口;确定携带有所述第一共享内存的地址和读取指令的所述第二消息;
所述发送模块,具体用于通过所述第二虚拟端口向所述目标节点发送所述第二消息;
其中,所述源节点为所述第二虚拟机,所述目标节点为所述I/O设备。
14.根据权利要求12所述的虚拟机,其特征在于,
所述接收模块,具体用于接收源节点发送的所述第一消息;
所述交换处理模块,具体用于获取所述待交换数据携带的目标节点的地址;根据所述目标节点的地址查询所述端口映射表以确定与所述目标节点对应的第一虚拟端口并确定与所述目标节点对应的第一共享内存的地址;
所述发送模块,具体用于通过所述源节点所对应的所述第二虚拟端口向所述源节点发送携带有所述第一共享内存的地址的回复消息;
所述交换处理模块,还用于在接收到所述源节点发送的用于向所述虚拟机指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断时,确定携带有读取指令的所述第二消息;
所述发送模块,还用于通过所述第一虚拟端口向所述目标节点发送所述第二消息;
所述接收模块,还用于接收所述源节点发送的指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断;
其中,所述源节点为所述I/O设备,所述目标节点为所述第二虚拟机。
15.根据权利要求11所述的虚拟机,其特征在于,
所述接收模块,具体用于通过所述第一虚拟端口接收所述源节点发送的所述第一消息,所述第一消息包括写完中断;
所述交换处理模块,具体用于根据用于接收所述第一消息的所述第一虚拟端口确定所述第一虚拟端口对应的所述源节点的地址;根据所述源节点的地址和所述待交换数据携带的目标节点的地址确定所述第二共享内存的地址;确定携带有所述第二共享内存的地址和读取指令的所述第二消息;
所述发送模块,具体用于向所述目标节点发送所述第二消息;
其中,所述至少一个VM还包括第三虚拟机,所述源节点为所述第二虚拟机,所述目标节点为所述第三虚拟机。
16.一种计算节点,其特征在于,包括:硬件层、运行在所述硬件层之上的宿主机Host、以及运行在所述Host之上的至少一个虚拟机VM,其中,所述硬件层包括输入/输出I/O设备和存储设备,所述至少一个虚拟机VM包括具有虚拟交换功能的第一虚拟机,所述至少一个VM还包括第二虚拟机,其中:
所述第一虚拟机,用于接收源节点发送的第一消息,所述第一消息用于请求所述第一虚拟机对待交换数据进行交换处理,其中所述待交换数据是从所述源节点发往目标节点的,所述源节点和所述目标节点中的至少一个为所述第二虚拟机;
所述第一虚拟机,还用于根据所述待交换数据携带的目标节点的地址和配置的端口映射表确定并发送第二消息,所述第二消息用于指示所述目标节点从所述硬件层的存储设备获取所述待交换数据。
17.根据权利要求16所述的计算节点,其特征在于,
所述Host,用于向所述第一虚拟机发送配置命令;
所述第一虚拟机,还用于根据所述配置命令配置用于与所述第二虚拟机进行通信的所述第一虚拟机的第一虚拟端口,并配置用于与所述I/O设备进行通信的所述第一虚拟机的第二虚拟端口;
所述第一虚拟机,还用于建立所述第一虚拟端口与所述第二虚拟端口之间的映射关系,以生成所述端口映射表。
18.根据权利要求17所述的计算节点,其特征在于,
所述第一虚拟机,还用于根据所述配置命令配置所述第二虚拟机对应的第一共享内存,其中所述第一共享内存为所述硬件层的存储设备上的指定存储区域。
19.根据权利要求18所述的计算节点,其特征在于,
所述源节点,用于将所述待交换数据写入所述第一共享内存;
所述源节点,还用于向所述第一虚拟机发送所述第一消息;
所述第一虚拟机,具体用于通过所述第一虚拟端口接收所述第一消息,所述第一消息包括用于向所述第一虚拟机指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断;以及根据用于接收所述第一消息的所述第一虚拟端口确定对应的所述第一共享内存的地址;从所述第一共享内存获取所述待交换数据,根据所述待交换数据携带的所述I/O设备的地址从所述端口映射表中确定与所述I/O设备对应的所述第二虚拟端口;确定携带有所述第一共享内存的地址和读取指令的所述第二消息,并通过所述第二虚拟端口向所述目标节点发送所述第二消息;
所述目标节点,用于根据所述第二消息从所述第一共享内存读取所述待交换数据;
其中,所述源节点为所述第二虚拟机,所述目标节点为所述I/O设备。
20.根据权利要求18所述的计算节点,其特征在于,
所述第一虚拟机,具体用于接收源节点发送的所述第一消息,获取所述待交换数据携带的目标节点的地址;根据所述目标节点的地址查询所述端口映射表以确定与所述目标节点对应的第一虚拟端口并确定与所述目标节点对应的第一共享内存的地址;通过所述源节点所对应的所述第二虚拟端口向所述源节点发送携带有所述第一共享内存的地址的回复消息;以及,在接收到所述源节点发送的用于向所述第一虚拟机指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断时,确定携带有读取指令的所述第二消息,通过所述第一虚拟端口向所述目标节点发送所述第二消息;
所述源节点,还用于根据所述回复消息中的所述第一共享内存的地址将所述待交换数据写入所述第一共享内存;
所述源节点,还用于向所述第一虚拟机发送指示所述源节点已完成将所述待交换数据写入所述第一共享内存的写完中断;
所述目标节点,用于根据所述第二消息从所述第一共享内存读取所述待交换数据;
其中,所述源节点为所述I/O设备,所述目标节点为所述第二虚拟机。
21.根据权利要求17所述的计算节点,其特征在于,
所述源节点,还用于将所述待交换数据写入所述源节点与所述目标节点通过所述第一虚拟机预先协商的第二共享内存,其中所述第二共享内存为所述硬件层的存储设备上的指定存储区域;
所述源节点,还用于通过所述第一虚拟端口向所述第一虚拟机发送所述第一消息,所述第一消息包括写完中断;
所述第一虚拟机,具体用于根据用于接收所述第一消息的所述第一虚拟端口确定所述第一虚拟端口对应的所述源节点的地址;根据所述源节点的地址和所述待交换数据携带的目标节点的地址确定所述第二共享内存的地址;确定携带有所述第二共享内存的地址和读取指令的所述第二消息,并向所述目标节点发送所述第二消息;
所述目标节点,用于根据所述第二消息从所述第二共享内存读取所述待交换数据;
其中,所述至少一个VM还包括第三虚拟机,所述源节点为所述第二虚拟机,所述目标节点为所述第三虚拟机。
22.根据权利要求19至21中任意一项所述的计算节点,其特征在于,所述目标节点根据所述第二消息从所述共享内存读取所述待交换数据之后,
所述目标节点,还用于向所述第一虚拟机发送读完指示信息,以便于所述第一共享内存或所述第二共享内存被释放;
所述第一虚拟机,还用于释放所述第一共享内存或所述第二共享内存。
23.根据权利要求16至22中任意一项所述的计算节点,其特征在于,在所述端口映射表为开放流Openflow流表时,在接收源节点发送的第一消息之后,
所述第一虚拟机,还用于根据所述待交换数据携带的目标节点的地址,在所述Openflow流表中确定与所述目标节点的地址所匹配的表项,其中,所述Openflow流表中包括至少一个表项,所述表项包括地址、虚拟端口和执行动作参数;
如果所述匹配的表项存在,根据所述匹配的表项中与所述目标节点的地址所对应的执行动作参数处理所述待交换数据;
如果所述匹配的表项不存在,建立能够与所述待交换数据匹配的新表项,并在所述Openflow流表中***所述新表项。
24.一种计算机***,其特征在于,包括:至少一个如权利要求16至23任意一项所述的计算节点。
CN201310270272.9A 2013-06-28 2013-06-28 虚拟交换方法、相关装置和计算机*** Active CN103346981B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201310270272.9A CN103346981B (zh) 2013-06-28 2013-06-28 虚拟交换方法、相关装置和计算机***
PCT/CN2014/072502 WO2014206105A1 (zh) 2013-06-28 2014-02-25 虚拟交换方法、相关装置和计算机***
EP14818411.2A EP2996294A4 (en) 2013-06-28 2014-02-25 VIRTUAL SWITCHING, RELEVANT DEVICE AND COMPUTER SYSTEM
US14/486,246 US9996371B2 (en) 2013-06-28 2014-09-15 Virtual switching method, related apparatus, and computer system
US15/979,486 US10649798B2 (en) 2013-06-28 2018-05-15 Virtual switching method, related apparatus, and computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310270272.9A CN103346981B (zh) 2013-06-28 2013-06-28 虚拟交换方法、相关装置和计算机***

Publications (2)

Publication Number Publication Date
CN103346981A true CN103346981A (zh) 2013-10-09
CN103346981B CN103346981B (zh) 2016-08-10

Family

ID=49281756

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310270272.9A Active CN103346981B (zh) 2013-06-28 2013-06-28 虚拟交换方法、相关装置和计算机***

Country Status (4)

Country Link
US (2) US9996371B2 (zh)
EP (1) EP2996294A4 (zh)
CN (1) CN103346981B (zh)
WO (1) WO2014206105A1 (zh)

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103618809A (zh) * 2013-11-12 2014-03-05 华为技术有限公司 一种虚拟化环境下通信的方法、装置和***
CN104219149A (zh) * 2014-08-26 2014-12-17 杭州华三通信技术有限公司 一种基于虚连接的报文传输方法和设备
WO2014206105A1 (zh) * 2013-06-28 2014-12-31 华为技术有限公司 虚拟交换方法、相关装置和计算机***
CN104601468A (zh) * 2015-01-13 2015-05-06 杭州华三通信技术有限公司 报文转发方法和设备
CN104660506A (zh) * 2013-11-22 2015-05-27 华为技术有限公司 一种数据包转发的方法、装置及***
CN105306368A (zh) * 2015-09-17 2016-02-03 杭州数梦工场科技有限公司 一种数据报文的传输方法和装置
WO2016026089A1 (zh) * 2014-08-19 2016-02-25 华为技术有限公司 软件定义网络与传统网络的融合方法以及装置
CN105573852A (zh) * 2016-02-03 2016-05-11 南京大学 一种虚拟地址隔离环境下超高速数据对象通信的方法
CN106302225A (zh) * 2016-10-18 2017-01-04 上海优刻得信息科技有限公司 一种服务器负载均衡的方法与装置
WO2017059762A1 (en) * 2015-10-09 2017-04-13 Huawei Technologies Co., Ltd. Service function bundling for service function chains
CN106874128A (zh) * 2017-01-22 2017-06-20 广州华多网络科技有限公司 数据传输方法及装置
CN107005848A (zh) * 2014-12-05 2017-08-01 华为技术有限公司 用于针对移动性管理而布置虚拟服务网关的***和方法
WO2017127972A1 (zh) * 2016-01-25 2017-08-03 华为技术有限公司 一种数据传输方法以及宿主机
CN107277874A (zh) * 2013-11-22 2017-10-20 索尼公司 通信***中的电子装置和通信方法、计算机可读存储介质
WO2018023499A1 (zh) * 2016-08-03 2018-02-08 华为技术有限公司 网络接口卡、计算设备以及数据包处理方法
CN107896195A (zh) * 2017-11-16 2018-04-10 锐捷网络股份有限公司 服务链编排方法、装置及服务链拓扑结构
WO2018086014A1 (zh) * 2016-11-09 2018-05-17 华为技术有限公司 云计算***中报文处理的方法、主机和***
CN108111461A (zh) * 2016-11-24 2018-06-01 中移(苏州)软件技术有限公司 实现虚拟机访问管理网络的方法、装置、网关及***
CN108243118A (zh) * 2016-12-27 2018-07-03 华为技术有限公司 转发报文的方法和物理主机
CN109901909A (zh) * 2019-01-04 2019-06-18 中国科学院计算技术研究所 用于虚拟化***的方法及虚拟化***
US10491517B2 (en) 2016-11-09 2019-11-26 Huawei Technologies Co., Ltd. Packet processing method in cloud computing system, host, and system
WO2019228228A1 (zh) * 2018-05-30 2019-12-05 阿里巴巴集团控股有限公司 数据缓存方法、数据处理方法、计算机设备、存储介质
CN110708248A (zh) * 2014-06-26 2020-01-17 华为技术有限公司 软件定义网络的服务质量控制方法及设备
US10623310B2 (en) 2016-08-03 2020-04-14 Huawei Technologies Co., Ltd. Network interface card, computing device, and data packet processing method
CN111064671A (zh) * 2019-12-09 2020-04-24 南京中孚信息技术有限公司 数据包转发方法、装置及电子设备
CN111158905A (zh) * 2019-12-16 2020-05-15 华为技术有限公司 调整资源的方法和装置
CN111556131A (zh) * 2020-04-24 2020-08-18 西安万像电子科技有限公司 求救信息处理方法、装置及***
CN111988230A (zh) * 2020-08-19 2020-11-24 海光信息技术有限公司 虚拟机通信方法、装置、***及电子设备
CN112565113A (zh) * 2020-12-23 2021-03-26 科东(广州)软件科技有限公司 多虚拟机间的网卡共享***、方法、装置、设备及介质
CN113132155A (zh) * 2021-03-29 2021-07-16 新华三大数据技术有限公司 一种虚拟交换机分布式逃生方法、装置及存储介质

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10120729B2 (en) 2014-02-14 2018-11-06 Vmware, Inc. Virtual machine load balancing
TWI531908B (zh) * 2014-04-24 2016-05-01 A method of supporting virtual machine migration with Software Defined Network (SDN)
US9515931B2 (en) * 2014-05-30 2016-12-06 International Business Machines Corporation Virtual network data control with network interface card
US9515933B2 (en) * 2014-05-30 2016-12-06 International Business Machines Corporation Virtual network data control with network interface card
US9489242B2 (en) * 2014-09-30 2016-11-08 Telefonaktiebolaget L M Ericsson (Publ) Algorithm for faster convergence through affinity override
US9594649B2 (en) 2014-10-13 2017-03-14 At&T Intellectual Property I, L.P. Network virtualization policy management system
GB2562928B (en) * 2014-12-22 2019-07-03 Servicenow Inc Auto discovery of configuration items
WO2016188548A1 (en) * 2015-05-22 2016-12-01 Huawei Technologies Co., Ltd. Telecommunication network with automated control and data plane instantiation
WO2017000117A1 (zh) * 2015-06-29 2017-01-05 华为技术有限公司 数据处理的方法及接收设备
EP3306870B1 (en) * 2015-07-03 2019-09-11 Huawei Technologies Co., Ltd. Network configuration method, network system and device
US9992153B2 (en) 2015-07-15 2018-06-05 Nicira, Inc. Managing link aggregation traffic in edge nodes
US10243914B2 (en) 2015-07-15 2019-03-26 Nicira, Inc. Managing link aggregation traffic in edge nodes
DE102015214424A1 (de) * 2015-07-29 2017-02-02 Robert Bosch Gmbh Verfahren und Vorrichtung zum Kommunizieren zwischen virtuellen Maschinen
CN106612306A (zh) * 2015-10-22 2017-05-03 中兴通讯股份有限公司 虚拟机的数据共享方法及装置
US20170279676A1 (en) * 2016-03-22 2017-09-28 Futurewei Technologies, Inc. Topology-based virtual switching model with pluggable flow management protocols
CN106603409B (zh) * 2016-11-30 2020-02-14 中国科学院计算技术研究所 一种数据处理***、方法及设备
JP2019029946A (ja) * 2017-08-03 2019-02-21 富士通株式会社 通信制御装置、通信制御システム、及び通信制御方法
CN110912825B (zh) 2018-09-18 2022-08-02 阿里巴巴集团控股有限公司 一种报文的转发方法、装置、设备及***
CN111026324B (zh) * 2018-10-09 2021-11-19 华为技术有限公司 转发表项的更新方法及装置
CN111443985A (zh) * 2019-01-17 2020-07-24 华为技术有限公司 实例化虚拟网络功能的方法及设备
CN110048963B (zh) * 2019-04-19 2023-06-06 杭州朗和科技有限公司 虚拟网络中的报文传输方法、介质、装置和计算设备
US11681542B2 (en) * 2020-01-16 2023-06-20 Vmware, Inc. Integrating virtualization and host networking
US11736415B2 (en) * 2020-02-10 2023-08-22 Nokia Solutions And Networks Oy Backpressure from an external processing system transparently connected to a router
US11567794B1 (en) * 2020-09-30 2023-01-31 Virtuozzo International Gmbh Systems and methods for transparent entering of a process into a virtual machine
US20230032967A1 (en) * 2021-07-29 2023-02-02 Red Hat, Inc. Establishing process connections utilizing an intermediary broker
CN116954952B (zh) * 2023-09-18 2024-01-09 之江实验室 一种机器人的自适应混合通信方法、装置、介质及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1916855A (zh) * 2005-08-19 2007-02-21 联想(北京)有限公司 一种虚拟机***及其硬件配置方法
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN102103518A (zh) * 2011-02-23 2011-06-22 运软网络科技(上海)有限公司 一种在虚拟化环境中管理资源的***及其实现方法
CN102648455A (zh) * 2009-12-04 2012-08-22 日本电气株式会社 服务器和流控制程序
WO2012114398A1 (en) * 2011-02-24 2012-08-30 Nec Corporation Network system, controller, and flow control method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739684B2 (en) * 2003-11-25 2010-06-15 Intel Corporation Virtual direct memory access crossover
DE502006009124D1 (de) * 2005-11-30 2011-04-28 Nokia Siemens Networks Gmbh Verfahren und vorrichtung zum selbstkonfigurieren eines virtuellen vermittlungssystems
US20070220217A1 (en) * 2006-03-17 2007-09-20 Udaya Shankara Communication Between Virtual Machines
JP4756603B2 (ja) * 2006-10-10 2011-08-24 ルネサスエレクトロニクス株式会社 データプロセッサ
US8385202B2 (en) * 2008-08-27 2013-02-26 Cisco Technology, Inc. Virtual switch quality of service for virtual machines
CN101630270B (zh) * 2009-07-22 2013-06-26 成都市华为赛门铁克科技有限公司 数据处理***和方法
CN103095546B (zh) * 2013-01-28 2015-10-07 华为技术有限公司 一种处理报文的方法、装置及数据中心网络
CN103346981B (zh) * 2013-06-28 2016-08-10 华为技术有限公司 虚拟交换方法、相关装置和计算机***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1916855A (zh) * 2005-08-19 2007-02-21 联想(北京)有限公司 一种虚拟机***及其硬件配置方法
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN102648455A (zh) * 2009-12-04 2012-08-22 日本电气株式会社 服务器和流控制程序
CN102103518A (zh) * 2011-02-23 2011-06-22 运软网络科技(上海)有限公司 一种在虚拟化环境中管理资源的***及其实现方法
WO2012114398A1 (en) * 2011-02-24 2012-08-30 Nec Corporation Network system, controller, and flow control method

Cited By (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10649798B2 (en) 2013-06-28 2020-05-12 Huawei Technologies Co., Ltd. Virtual switching method, related apparatus, and computer system
WO2014206105A1 (zh) * 2013-06-28 2014-12-31 华为技术有限公司 虚拟交换方法、相关装置和计算机***
US9996371B2 (en) 2013-06-28 2018-06-12 Huawei Technologies Co., Ltd. Virtual switching method, related apparatus, and computer system
CN103618809A (zh) * 2013-11-12 2014-03-05 华为技术有限公司 一种虚拟化环境下通信的方法、装置和***
CN104660506B (zh) * 2013-11-22 2018-12-25 华为技术有限公司 一种数据包转发的方法、装置及***
CN104660506A (zh) * 2013-11-22 2015-05-27 华为技术有限公司 一种数据包转发的方法、装置及***
CN107277874B (zh) * 2013-11-22 2019-12-17 索尼公司 通信***中的电子装置和通信方法、计算机可读存储介质
CN107277874A (zh) * 2013-11-22 2017-10-20 索尼公司 通信***中的电子装置和通信方法、计算机可读存储介质
CN110708248A (zh) * 2014-06-26 2020-01-17 华为技术有限公司 软件定义网络的服务质量控制方法及设备
CN110708248B (zh) * 2014-06-26 2021-08-03 华为技术有限公司 软件定义网络的服务质量控制方法及设备
WO2016026089A1 (zh) * 2014-08-19 2016-02-25 华为技术有限公司 软件定义网络与传统网络的融合方法以及装置
CN104219149A (zh) * 2014-08-26 2014-12-17 杭州华三通信技术有限公司 一种基于虚连接的报文传输方法和设备
CN107005848A (zh) * 2014-12-05 2017-08-01 华为技术有限公司 用于针对移动性管理而布置虚拟服务网关的***和方法
CN107005848B (zh) * 2014-12-05 2019-12-06 华为技术有限公司 用于针对移动性管理而布置虚拟服务网关的***和方法
CN104601468B (zh) * 2015-01-13 2018-10-09 新华三技术有限公司 报文转发方法和设备
CN104601468A (zh) * 2015-01-13 2015-05-06 杭州华三通信技术有限公司 报文转发方法和设备
CN105306368A (zh) * 2015-09-17 2016-02-03 杭州数梦工场科技有限公司 一种数据报文的传输方法和装置
CN109617816A (zh) * 2015-09-17 2019-04-12 杭州数梦工场科技有限公司 一种数据报文的传输方法和装置
CN105306368B (zh) * 2015-09-17 2019-02-26 杭州数梦工场科技有限公司 一种数据报文的传输方法和装置
WO2017059762A1 (en) * 2015-10-09 2017-04-13 Huawei Technologies Co., Ltd. Service function bundling for service function chains
US9729441B2 (en) 2015-10-09 2017-08-08 Futurewei Technologies, Inc. Service function bundling for service function chains
WO2017127972A1 (zh) * 2016-01-25 2017-08-03 华为技术有限公司 一种数据传输方法以及宿主机
US10694554B2 (en) 2016-01-25 2020-06-23 Huawei Technologies Co., Ltd. Data transmission method and host machine
CN105573852A (zh) * 2016-02-03 2016-05-11 南京大学 一种虚拟地址隔离环境下超高速数据对象通信的方法
CN105573852B (zh) * 2016-02-03 2018-11-30 南京大学 一种虚拟地址隔离环境下超高速数据对象通信的方法
WO2018023499A1 (zh) * 2016-08-03 2018-02-08 华为技术有限公司 网络接口卡、计算设备以及数据包处理方法
US10623310B2 (en) 2016-08-03 2020-04-14 Huawei Technologies Co., Ltd. Network interface card, computing device, and data packet processing method
US10581729B2 (en) 2016-08-03 2020-03-03 Huawei Technologies Co., Ltd. Network interface card, computing device, and data packet processing method
CN106302225A (zh) * 2016-10-18 2017-01-04 上海优刻得信息科技有限公司 一种服务器负载均衡的方法与装置
CN106302225B (zh) * 2016-10-18 2019-05-03 优刻得科技股份有限公司 一种服务器负载均衡的方法与装置
US10491517B2 (en) 2016-11-09 2019-11-26 Huawei Technologies Co., Ltd. Packet processing method in cloud computing system, host, and system
WO2018086014A1 (zh) * 2016-11-09 2018-05-17 华为技术有限公司 云计算***中报文处理的方法、主机和***
US11005755B2 (en) 2016-11-09 2021-05-11 Huawei Technologies Co., Ltd. Packet processing method in cloud computing system, host, and system
CN108111461B (zh) * 2016-11-24 2020-11-20 中移(苏州)软件技术有限公司 实现虚拟机访问管理网络的方法、装置、网关及***
CN108111461A (zh) * 2016-11-24 2018-06-01 中移(苏州)软件技术有限公司 实现虚拟机访问管理网络的方法、装置、网关及***
CN108243118A (zh) * 2016-12-27 2018-07-03 华为技术有限公司 转发报文的方法和物理主机
CN106874128A (zh) * 2017-01-22 2017-06-20 广州华多网络科技有限公司 数据传输方法及装置
CN107896195B (zh) * 2017-11-16 2020-04-24 锐捷网络股份有限公司 服务链编排方法、装置及服务链拓扑结构***
CN107896195A (zh) * 2017-11-16 2018-04-10 锐捷网络股份有限公司 服务链编排方法、装置及服务链拓扑结构
WO2019228228A1 (zh) * 2018-05-30 2019-12-05 阿里巴巴集团控股有限公司 数据缓存方法、数据处理方法、计算机设备、存储介质
CN109901909B (zh) * 2019-01-04 2020-12-29 中国科学院计算技术研究所 用于虚拟化***的方法及虚拟化***
CN109901909A (zh) * 2019-01-04 2019-06-18 中国科学院计算技术研究所 用于虚拟化***的方法及虚拟化***
CN111064671A (zh) * 2019-12-09 2020-04-24 南京中孚信息技术有限公司 数据包转发方法、装置及电子设备
CN111158905A (zh) * 2019-12-16 2020-05-15 华为技术有限公司 调整资源的方法和装置
CN111556131A (zh) * 2020-04-24 2020-08-18 西安万像电子科技有限公司 求救信息处理方法、装置及***
CN111556131B (zh) * 2020-04-24 2023-06-23 西安万像电子科技有限公司 求救信息处理方法、装置及***
CN111988230A (zh) * 2020-08-19 2020-11-24 海光信息技术有限公司 虚拟机通信方法、装置、***及电子设备
CN112565113A (zh) * 2020-12-23 2021-03-26 科东(广州)软件科技有限公司 多虚拟机间的网卡共享***、方法、装置、设备及介质
CN113132155A (zh) * 2021-03-29 2021-07-16 新华三大数据技术有限公司 一种虚拟交换机分布式逃生方法、装置及存储介质

Also Published As

Publication number Publication date
US9996371B2 (en) 2018-06-12
EP2996294A4 (en) 2016-06-08
CN103346981B (zh) 2016-08-10
WO2014206105A1 (zh) 2014-12-31
US10649798B2 (en) 2020-05-12
US20180267816A1 (en) 2018-09-20
EP2996294A1 (en) 2016-03-16
US20150026681A1 (en) 2015-01-22

Similar Documents

Publication Publication Date Title
CN103346981A (zh) 虚拟交换方法、相关装置和计算机***
US20220377045A1 (en) Network virtualization of containers in computing systems
US11372802B2 (en) Virtual RDMA switching for containerized applications
US11429408B2 (en) System and method for network function virtualization resource management
US10666609B2 (en) Management of domain name systems in a large-scale processing environment
US10768972B2 (en) Managing virtual machine instances utilizing a virtual offload device
JP4740897B2 (ja) 仮想ネットワーク構成方法及びネットワークシステム
US9424067B2 (en) Managing virtual machine instances utilizing an offload device
WO2018086014A1 (zh) 云计算***中报文处理的方法、主机和***
CN114363021B (zh) 网络靶场***、网络靶场***的虚拟网络实现方法及装置
KR102103596B1 (ko) 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법
US20070288921A1 (en) Emulating a network-like communication connection between virtual machines on a physical device
CN110088732A (zh) 一种数据包处理方法、主机和***
CN103581324B (zh) 一种云计算资源池***及其实现方法
CN104521198A (zh) 用于虚拟以太网接口绑定的***和方法
US10116622B2 (en) Secure communication channel using a blade server
CN108886473A (zh) 一种管理方法及装置
TW202224395A (zh) 用於跨越多個計算域進行應用程式部署之方法及其裝置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant