CN114679349B - 一种数据通信方法及装置 - Google Patents
一种数据通信方法及装置 Download PDFInfo
- Publication number
- CN114679349B CN114679349B CN202210319159.4A CN202210319159A CN114679349B CN 114679349 B CN114679349 B CN 114679349B CN 202210319159 A CN202210319159 A CN 202210319159A CN 114679349 B CN114679349 B CN 114679349B
- Authority
- CN
- China
- Prior art keywords
- port
- virtual
- processor
- target
- data communication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种数据通信方法及装置,涉及云计算技术领域,上述方法包括:响应于虚拟机创建指令,确定上述智能网卡中未被占用的目标虚拟端口;基于上述目标虚拟端口创建虚拟机;向上述智能网卡中的第二处理器发送上述目标虚拟端口的信息,以使得上述第二处理器将上述目标虚拟端口加入上述第二处理器创建的虚拟交换机、并在存在针对上述虚拟机的数据通信需求时通过上述虚拟交换机加入的上述目标虚拟端口实现针对上述虚拟机的数据通信。应用本发明实施例提供的方案,能够减少数据通信过程中对计算节点CPU资源的消耗。
Description
技术领域
本发明涉及云计算技术领域,特别是涉及一种数据通信方法及装置。
背景技术
随着云计算技术的快速发展,云服务越来越受到企业的青睐。由于云服务具有易维护、资源丰富、安全保障好等优点,很多企业选择将自身的业务和/或资源部署到云服务提供方提供的云服务器上。为了防止不同企业间产生数据通信交叉,云服务提供方通过划分虚拟网络将不同企业间的业务隔离。例如,可以在计算节点(云服务器的一种类型)中创建多个虚拟机和虚拟交换机,通过虚拟机和虚拟交换机构建不同的虚拟网络,进而为不同企业提供服务。
现有技术中,对于一个计算节点而言,由该计算节点的CPU构建虚拟机和虚拟交换机。这样,一方面,构建虚拟机和虚拟交换机需要消耗该计算节点的CPU资源,另一方面,虚拟机通过虚拟交换机进行数据通信时,也需要消耗该计算节点的CPU资源。由于一个计算节点的CPU资源有限,所以,上述情况易导致计算节点中CPU资源紧张。
发明内容
本发明实施例的目的在于提供一种数据通信方法及装置,以减少数据通信过程中对计算节点中处理器资源的消耗。具体技术方案如下:
第一方面,本发明实施例提供了一种数据通信方法,应用于计算节点中的第一处理器,其中,所述计算节点安装有智能网卡,所述方法包括:
响应于虚拟机创建指令,确定所述智能网卡中未被占用的目标虚拟端口;
基于所述目标虚拟端口创建虚拟机;
向所述智能网卡中的第二处理器发送所述目标虚拟端口的信息,以使得所述第二处理器将所述目标虚拟端口加入所述第二处理器创建的虚拟交换机、并在存在针对所述虚拟机的数据通信需求时通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
本发明的一个实施例中,所述响应于虚拟机创建指令,确定所述智能网卡中未被占用的目标虚拟端口,包括:
响应于虚拟机创建指令,向控制节点申请所述智能网卡中未被占用的虚拟端口;
接收所述控制节点反馈的申请结果;
若所述申请结果指示基于物理地址选择虚拟端口,选择所述智能网卡中未被占用、且地址位于目标地址范围内的目标虚拟端口,其中,所述目标地址范围为:所述计算节点的配置信息中记录的针对虚拟端口的物理地址范围。
本发明的一个实施例中,所述向所述智能网卡中的第二处理器发送所述目标虚拟端口的信息,包括:
获得所述目标虚拟端口的第一索引和目标物理端口的第二索引,其中,所述目标物理端口为:所述智能网卡中的一个物理端口,所述目标虚拟端口为所述目标物理端口虚拟所得虚拟端口中的一个;
向所述智能网卡中的第二处理器发送端口加入指令,其中,所述端口加入指令携带:所述第一索引、所述第二索引和端口加入操作的标识。
本发明的一个实施例中,在所述向所述智能网卡中的第二处理器发送所述目标虚拟端口的信息之后,还包括:
若存在针对所述目标虚拟端口的端口退出需求,根据所述目标虚拟端口的信息,向所述第二处理器发送端口退出指令,以使得所述第二处理器从所述虚拟交换机中退出所述目标虚拟端口。
第二方面,本发明实施例提供了一种数据通信方法,应用于智能网卡中的第二处理器,其中,所述智能网卡安装于计算节点,所述方法包括:
接收所述计算节点中的第一处理器发送的目标虚拟端口的信息,其中,所述目标虚拟端口为:所述第一处理器创建虚拟机所依据的所述智能网卡中的虚拟端口;
基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机;
在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
本发明的一个实施例中,所述数据通信方法还包括:
对所述智能网卡的各个物理端口进行虚拟化,得到一个或多个虚拟端口以及各个虚拟端口与代表端口间的对应关系,其中,所述代表端口为:虚拟端口在所述第二处理器所安装操作系统上映射的端口;
所述基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机,包括:
根据所述对应关系和接收到的信息,确定所述目标虚拟端口对应的代表端口;
将所述代表端口加入所述第二处理器已创建的虚拟交换机;
所述在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信,包括:
在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述代表端口实现针对所述虚拟机的数据通信。
本发明的一个实施例中,在基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机之后,还包括:
向控制节点同步目标虚拟端口的端口状态。
本发明的一个实施例中,在基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机之后,还包括:
若接收到计算节点中的第一处理器发送的端口退出指令,则将所述端口退出指令中指示的目标虚拟端口退出所述第二处理器已创建的虚拟交换机。
本发明的一个实施例中,所述智能网卡还包括:FPGA,其中,所述FPGA中存储有针对所述虚拟机的数据通信需求的流表;
所述在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信,包括:
在存在针对所述虚拟机的数据通信需求时,通过所述FPGA以及所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
第三方面,本发明实施例提供了一种数据通信装置,应用于计算节点中的第一处理器,其中,所述计算节点安装有智能网卡,所述装置包括:
端口确定模块,用于响应于虚拟机创建指令,确定所述智能网卡中未被占用的目标虚拟端口;
虚拟机创建模块,用于基于所述目标虚拟端口创建虚拟机;
端口信息发送模块,用于向所述智能网卡中的第二处理器发送所述目标虚拟端口的信息,以使得所述第二处理器将所述目标虚拟端口加入所述第二处理器创建的虚拟交换机、并在存在针对所述虚拟机的数据通信需求时通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
本发明的一个实施例中,所述端口确定模块,具体用于响应于虚拟机创建指令,向控制节点申请所述智能网卡中未被占用的虚拟端口;接收所述控制节点反馈的申请结果;若所述申请结果指示基于物理地址选择虚拟端口,选择所述智能网卡中未被占用、且地址位于目标地址范围内的目标虚拟端口,其中,所述目标地址范围为:所述计算节点的配置信息中记录的针对虚拟端口的物理地址范围。
本发明的一个实施例中,所述端口信息发送模块,具体用于获得所述目标虚拟端口的第一索引和目标物理端口的第二索引,其中,所述目标物理端口为:所述智能网卡中的一个物理端口,所述目标虚拟端口为所述目标物理端口虚拟所得虚拟端口中的一个;向所述智能网卡中的第二处理器发送端口加入指令,其中,所述端口加入指令携带:所述第一索引、所述第二索引和端口加入操作的标识。
本发明的一个实施例中,所述数据通信装置还包括:
退出指令发送模块,用于若存在针对所述目标虚拟端口的端口退出需求,根据所述目标虚拟端口的信息,向所述第二处理器发送端口退出指令,以使得所述第二处理器从所述虚拟交换机中退出所述目标虚拟端口。
第四方面,本发明实施例提供了一种数据通信装置,应用于智能网卡中的第二处理器,其中,所述智能网卡安装于计算节点,所述装置包括:
端口信息接收模块,用于接收所述计算节点中的第一处理器发送的目标虚拟端口的信息,其中,所述目标虚拟端口为:所述第一处理器创建虚拟机所依据的所述智能网卡中的虚拟端口;
端口加入模块,用于基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机;
数据通信模块,用于在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
本发明的一个实施例中,所述数据通信装置还包括:
端口虚拟化模块,用于对所述智能网卡的各个物理端口进行虚拟化,得到一个或多个虚拟端口以及各个虚拟端口与代表端口间的对应关系,其中,所述代表端口为:虚拟端口在所述第二处理器所安装操作系统上映射的端口;
所述端口加入模块,具体用于根据所述对应关系和接收到的信息,确定所述目标虚拟端口对应的代表端口;将所述代表端口加入所述第二处理器已创建的虚拟交换机。
本发明的一个实施例中,所述数据通信装置还包括:
端口状态同步模块,用于向控制节点同步目标虚拟端口的端口状态。
本发明的一个实施例中,所述数据通信装置还包括:
端口退出模块,用于若接收到计算节点中的第一处理器发送的端口退出指令,则将所述端口退出指令中指示的目标虚拟端口退出所述第二处理器已创建的虚拟交换机。
本发明的一个实施例中,所述智能网卡还包括:FPGA,其中,所述FPGA中存储有针对所述虚拟机的数据通信需求的流表;
所述数据通信模块,具体用于在存在针对所述虚拟机的数据通信需求时,通过所述FPGA以及所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
第五方面,本发明实施例提供了一种计算节点,包括:第一处理器、机器可读存储介质和智能网卡,所述机器可读存储介质存储有能够被所述第一处理器执行的机器可执行指令,所述第一处理器被所述机器可执行指令促使:实现上述第一方面所述的数据通信方法。
第六方面,本发明实施例提供了一种智能网卡,包括:第二处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述第二处理器执行的机器可执行指令,所述第二处理器被所述机器可执行指令促使:实现上述第二方面所述的数据通信方法。
第七方面,本发明实施例提供了一种计算机可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现上述第一方面所述的数据通信方法。
第八方面,本发明实施例提供了一种计算机可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现上述第二方面所述的数据通信方法。
第九方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行时实现上述第一方面所述的数据通信方法。
第十方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行时实现上述第二方面所述的数据通信方法。
由以上可见,应用本发明实施例提供的方案进行数据通信时,虚拟机由计算节点中的第一处理器基于目标虚拟端口创建,虚拟交换机由智能网卡中的第二处理器创建,从而第二处理器将目标虚拟端口加入虚拟交换机之后,在存在针对虚拟机的数据通信需求时,第二处理器可以通过虚拟交换机加入的目标虚拟端口实现针对上述虚拟机的数据通信。可以看出,虚拟交换机的创建由第二处理器完成,针对虚拟机的数据通信也就由第二处理器通过虚拟机交换机实现,这样能够有效减少数据通信过程中消耗的计算节点中第一处理器的资源,从而缓解计算节点中处理器资源紧张的情况。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为现有技术中虚拟网络的架构示意图;
图2为本发明实施例提供的一种虚拟网络的架构示意图;
图3为本发明实施例提供的第一种数据通信方法的流程示意图;
图4为本发明实施例提供的一种智能网卡的示意图;
图5为本发明实施例提供的第二种数据通信方法的流程示意图;
图6为本发明实施例提供的第三种数据通信方法的流程示意图;
图7为现有技术中的一种数据交互流程的示意图;
图8为本发明实施例提供的一种数据交互流程的示意图;
图9为本发明实施例提供的第一种数据通信装置的结构示意图;
图10为本发明实施例提供的第二种数据通信装置的结构示意图;
图11为本发明实施例提供的一种计算节点的结构示意图;
图12为本发明实施例提供的一种智能网卡的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
下面首先对本发明实施例的应用场景进行说明。
本发明实施例提供的方案可以应用于云服务系统,具体的,应用于云服务系统中的虚拟机通过虚拟交换机进行数据通信的场景。其中,虚拟机和虚拟交换机位于同一虚拟网络中。进行数据通信时,虚拟机通过虚拟交换机可以与其他虚拟设备进行数据通信,也可以与外部物理网络进行数据通信。
上述云服务系统中可以包括多台服务器,其中,一些服务器用于实现具体的数据处理功能,可以称这些服务器为计算节点,一些服务器用于对云服务系统中的各种设备、所提供的服务等进行控制,可以称这些服务器为控制节点。为保证云服务系统能够支持多租户多网络,云服务系统中引入了虚拟化技术,计算节点可以创建虚拟机和虚拟交换机,并基于上述虚拟机和虚拟交换机构建不同的虚拟网络,进而隔离不同用户之间的业务。
下面结合图1和图2,对现有技术中云服务系统的虚拟网络架构以及本发明实施例所应用的云服务系统的虚拟网络架构进行对比说明。
参见图1,图1为现有技术中虚拟网络的架构示意图。
由图1可以看出,在一个计算节点中,该计算节点的CPU不仅创建了虚拟机,还创建了虚拟交换机,虚拟机和虚拟交换机之间通过虚拟端口实现通信连接。另外,虚拟交换机与计算节点的物理端口通信连接,这样虚拟交换机能够通过上述物理端口访问外部物理网络,进而虚拟机可以通过虚拟交换机访问外部物理网络。
然而,由于虚拟机和虚拟交换机均由同一计算节点上的CPU创建,这样,一方面,创建虚拟机和虚拟交换机需要消耗该计算节点的CPU资源,另一方面,虚拟机通过虚拟交换机进行数据通信时,也需要消耗该计算节点的CPU资源。由于一个计算节点的CPU资源有限,所以,上述情况易导致计算节点中CPU资源紧张。
相比于上述虚拟网络架构,本发明实施例所提供方案应用的云服务系统的虚拟网络架构中,不再由计算节点的CPU创建虚拟交换机,而是由计算节点安装的智能网卡创建虚拟交换机。具体的,参见图2,图2为本发明实施例提供的一种虚拟网络的架构示意图。
由图2可以看出,虚拟机由计算节点中的第一处理器创建,而虚拟交换机由智能网卡中的第二处理器创建,这样创建虚拟交换机消耗的是智能网卡中第二处理器的资源,而非计算节点中第一处理器的资源,针对虚拟机的数据通信由第一处理器和第二处理器联合完成,消耗的是第一处理器和第二处理器的资源,而非仅仅消耗第一处理器的资源,因此,基于图2所示的虚拟网络架构进行数据通信时,能够有效降低计算节点中第一处理器的资源消耗,进而缓解了计算节点中处理器资源紧张的情况。
下面对本发明实施例提供的数据通信方法进行具体说明。
参见图3,图3为本发明实施例提供的第一种数据通信方法的流程示意图,应用于计算节点中的第一处理器,上述计算节点安装有智能网卡。
本发明的一个实施例中,上述第一处理器可以是CPU。
具体的,上述数据通信方法包括以下步骤S301-S303。
步骤S301:响应于虚拟机创建指令,确定智能网卡中未被占用的目标虚拟端口。
上述虚拟机创建指令可以是工作人员触发的。例如,工作人员可以在云服务系统的用户操作界面点击虚拟机创建按钮,从而触发上述计算节点中的第一处理器获得虚拟机创建指令。具体的,上述虚拟机创建指令可以是云服务系统中的控制节点向计算节点发送的。
另外,上述虚拟机创建指令还可以是:控制节点检测到满足虚拟机创建条件后向计算节点发送的、指示创建虚拟机的指令。
其中,虚拟机创建条件可以是云服务系统中存在虚拟机短缺的情况,还可以是云服务系统中存在用于创建虚拟机的空闲资源等。
上述计算节点可以是控制节点根据云服务系统中各个计算节点的资源状态等因素选择的,当然,也可以是随机选择的,本发明实施例并不对此进行限定。
上述智能网卡安装于计算节点上,参见图4,为本公开实施例提供的一种智能网卡的示意图。由图可以看出,上述智能网卡中包含FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)和第二处理器,另外,上述智能网卡还具有多个物理端口,每个物理端口可以虚拟化为一个或多个虚拟端口。
计算节点中的第一处理器接收到虚拟机创建指令后,可以通过不同方式从上述智能网卡的虚拟端口中确定出未被占用的目标虚拟端口。
一种实施方式中,云服务系统中控制节点可以同步有各个计算节点所安装的智能网卡中各虚拟端口的端口状态,例如,上述端口状态可以是端口已被占用或者端口未被占用。这种情况下,第一处理器可以向控制节点申请未被占用的目标虚拟端口,控制节点接收到第一处理器发送的上述申请后,基于自身保存的上述各虚拟端口的端口状态,选择未被占用的目标虚拟端口,然后向第一处理器发送目标虚拟端口的端口标识,第一处理器接收到端口标识后即可确定出目标虚拟端口。上述端口标识可以是端口名称、端口索引等。
确定目标虚拟端口的其他实现方式可以参见后续实施例,这里暂不详述。
步骤S302:基于目标虚拟端口创建虚拟机。
具体的,第一处理器在创建虚拟机时,可以将虚拟机的通信端口设置为上述目标虚拟端口。
步骤S303:向智能网卡中的第二处理器发送目标虚拟端口的信息,以使得第二处理器将目标虚拟端口加入第二处理器创建的虚拟交换机、并在存在针对虚拟机的数据通信需求时通过虚拟交换机加入的目标虚拟端口实现针对虚拟机的数据通信。
计算节点可以设置有配置文件,工作人员可以在计算节点的配置文件中指定智能网卡与第一处理器通信的IP地址和端口,其中,上述IP地址为智能网卡的IP地址,这样第一处理器可以基于Socket(套接字)方式向上述指定的IP地址和端口发送上述目标虚拟端口的信息,使得第二处理器能够通过上述指定的端口监听到目标虚拟端口的信息。
第一处理器向第二处理器发送目标虚拟端口的信息时,可以将目标虚拟端口的信息封装在报文中,然后向第二处理器发送上述报文。
具体的,目标虚拟端口的信息可以以不同的形式呈现,鉴于此,第一处理器可以采用不同的实施方式向智能网卡中的第二处理器发送目标虚拟端口的信息。
一种实施方式中,目标虚拟端口的信息包括端口名称,这种情况下,第一处理器可以向智能网卡中的第二处理器发送目标虚拟端口的端口名称,这样第二处理器接收到上述端口名称后,将上述端口名称对应的目标虚拟端口加入第二处理器创建的虚拟交换机。
第一处理器向智能网卡中的第二处理器发送目标虚拟端口的信息的其他实现方式可以参见后续实施例,这里暂不详述。
这样第二处理器基于上述目标虚拟端口的信息将目标虚拟端口加入第二处理器创建的虚拟交换机后,也就建立了虚拟交换机和虚拟机之间的通信连接。进而在存在针对虚拟机的数据通信需求时,第二处理器可以通过虚拟交换机加入的目标虚拟端口实现针对虚拟机的数据通信。具体的,上述针对虚拟机的数据通信需求可以有以下两种情况。
第一种情况,基于第一处理器中的计算资源创建的虚拟机有访问其他虚拟机或者外部网络的需求。这种情况下,第一处理器可以将虚拟机的访问请求发送给基于第二处理器中的计算资源创建的虚拟交换机,上述虚拟交换机接收到上述访问请求,并基于上述访问请求中携带的目的地址,查找虚拟交换机中存储的流表以确定下一跳地址,将访问请求转发到上述地址。
第二种情况,其他虚拟机或者外部网络有访问基于第一处理器中的计算资源创建的虚拟机的需求。这种情况下,访问请求到达基于第二处理器中的计算资源创建的虚拟交换机之后,上述虚拟交换机查找自身存储的流表,若确定上述访问请求的目的地址为虚拟机的IP地址,则将该访问请求转发至上述虚拟机。
由以上可见,应用本发明实施例提供的方案进行数据通信时,虚拟机由计算节点中的第一处理器基于目标虚拟端口创建,虚拟交换机由智能网卡中的第二处理器创建,从而第二处理器将目标虚拟端口加入虚拟交换机之后,在存在针对虚拟机的数据通信需求时,第二处理器可以通过虚拟交换机加入的目标虚拟端口实现针对上述虚拟机的数据通信。可以看出,虚拟交换机的创建由第二处理器完成,针对虚拟机的数据通信也就由第二处理器通过虚拟机交换机实现,这样能够有效减少数据通信过程中消耗的计算节点中第一处理器的资源,从而缓解计算节点中处理器资源紧张的情况。
下面对前述步骤S301中确定目标虚拟端口的其他实施方式进行说明。
一种实施方式中,第一处理器响应于虚拟机创建指令,向控制节点申请上述智能网卡中未被占用的虚拟端口,接收上述控制节点反馈的申请结果,若上述申请结果指示基于物理地址选择虚拟端口,那么第一处理器可以选择上述智能网卡中未被占用、且地址位于目标地址范围内的目标虚拟端口。
上述物理地址可以为PCI(Peripheral Component Interconnect,外设部件互连标准)地址。由于控制节点可能出现无法及时同步智能网卡中的各虚拟端口状态的情况,为保证第一处理器最终使用的目标虚拟端口准确,控制节点可以不直接向第一处理器反馈目标虚拟端口,而是向第一处理器反馈基于物理地址选择虚拟端口的指示,这样第一处理器可以自行选择目标虚拟端口。
上述目标地址范围为:上述计算节点的配置信息中记录的针对虚拟端口的物理地址范围,可以是在计算节点中安装的智能网卡中包含所有虚拟端口的物理地址范围,也可以是上述智能网卡中包含的部分虚拟端口的物理地址范围。
由于计算节点中包含多种端口,其中包括智能网卡在内的外接设备的端口,这些端口都有不同的物理地址,因此为了保证计算节点中的第一处理器能够基于物理地址准确的选择智能网卡中的目标虚拟端口,一种实现方式中,可以预先在计算节点的配置信息中指定上述针对智能网卡中的虚拟端口的物理地址范围,也就是上述目标地址范围。
具体的,第一处理器可以通过以下方式选择上述智能网卡中未被占用、且地址位于目标地址范围内的目标虚拟端口。
第一种方式,第一处理器可以从上述目标地址范围内遍历选择地址,将选择的地址发送给智能网卡中的第二处理器,第二处理器接收到上述地址后,可以读取智能网卡中的端口状态,若上述地址对应的虚拟端口的状态为未被占用,则向第一处理器发送表征上述地址对应的虚拟端口可用的反馈信息,这样第一处理器可以将上述地址对应的虚拟端口确定为目标虚拟端口。
第二种方式,第一处理器可以向智能网卡中的第二处理器申请上述目标虚拟端口,上述申请中携带上述目标地址范围。这样第二处理器接收到第一处理器发送的上述申请后,可以读取地址在上述目标地址范围内的智能网卡中的端口状态,将一个未被占用、且地址位于上述目标地址范围内的一个虚拟端口的端口标识反馈给第一处理器,第一处理器接收到上述端口标识后,可以将上述虚拟端口标识指示的端口确定为目标虚拟端口。上述端口标识可以是端口名称、端口索引等。
第三种方式,第一处理器还可以实时维护智能网卡的各个虚拟端口的状态,这种情况下,第一处理器可以根据自身所维护的端口的状态,在上述目标地址范围内从智能网卡未被占用的虚拟端口中选择目标虚拟端口。
由以上可见,第一处理器在接收到控制节点反馈的基于物理地址选择虚拟端口的指令之后,第一处理器可以在目标地址范围内准确的确定智能网卡中未被占用的目标虚拟端口。
下面对前述步骤S303中第一处理器向第二处理器发送目标虚拟端口的信息的其他实施方式进行说明。
一种实施方式中,目标虚拟端口的信息可以以索引的形式呈现,这种情况下,第一处理器可以通过以下步骤A和步骤B向智能网卡中的第二处理器发送目标虚拟端口的信息。
步骤A:获得目标虚拟端口的第一索引和目标物理端口的第二索引。
其中,上述目标物理端口为:上述智能网卡中的一个物理端口,上述目标虚拟端口为上述目标物理端口虚拟所得虚拟端口中的一个。
由于智能网卡针对目标虚拟端口有网卡内部的端口名称,又由于智能网卡安装于计算节点中,因此智能网卡中的目标虚拟端口在计算节点中也有对应的端口名称。一些情况下,上述两种设备中的端口名称不相同,这种情况下使用端口名称作为端口标识可能会由于上述两种设备的端口名称不统一,导致端口对应关系出现错误。
然而,上述两种设备针对同一端口的索引一般相同,因此可以采用端口的索引作为端口的标识。具体的,第一处理器可以读取得到计算节点中目标虚拟端口的第一索引和目标物理端口的第二索引。
步骤B:向智能网卡中的第二处理器发送端口加入指令。
其中,上述端口加入指令携带:上述第一索引、第二索引和端口加入操作的标识。
这样第一处理器向第二处理器发送上述端口加入指令之后,可以使得第二处理器根据上述目标物理端口的第二索引确定智能网卡中对应的目标物理端口,再根据目标虚拟端口的第一索引确定出智能网卡中索引与第一索引相同的、且为目标物理端口虚拟得到的端口,作为目标虚拟端口,并基于上述端口指令中携带的端口加入操作的标识将目标虚拟端口加入第二处理器创建的虚拟交换机。
由于计算节点中的第一处理器与智能网卡中的第二处理器针对同一目标虚拟端口的第一索引和同一目标物理端口的第二索引相同,这样第一处理器向第二处理器发送携带上述第一索引和第二索引的端口加入指令后,可以使得第二处理器基于上述指令中携带的第一索引和第二索引准确的确定出目标虚拟端口,并将目标虚拟端口加入第二处理器创建的虚拟机交换机。
本发明的一个实施例中,第一处理器在向智能网卡中的第二处理器发送目标虚拟端口的信息之后,若存在针对目标虚拟端口的端口退出需求,第一处理器可以根据目标虚拟端口的信息,向第二处理器发送端口退出指令,以使得第二处理器从虚拟交换机中退出上述目标虚拟端口。
当第一处理器创建的虚拟机需要销毁时,目标虚拟端口不再用于为虚拟机和虚拟交换机提供通信连接,或者,当上述虚拟机的目标虚拟端口需要改变时,上述虚拟机的通信端口不再是目标虚拟端口,因此第二处理器创建的虚拟交换机也需要将目标虚拟端口退出,以释放目标虚拟端口。上述情况可以被认为存在针对目标虚拟端口的端口退出需求。
具体的,上述端口退出指令可以包括目标虚拟端口的名称和端口退出操作的标识;也可以包括前述目标虚拟端口的第一索引、目标物理端口的第二索引以及端口退出操作的标识。这样可以使得第二处理器在接收到第一处理器发送的端口退出指令后,确定出上述端口退出指令中指示的目标虚拟端口,并按照端口退出操作的标识将上述目标虚拟端口退出第二处理器已创建的虚拟交换机。
这样在有端口退出需求时,计算节点中的第一处理器可以通知智能网卡中的第二处理器从虚拟交换机中退出目标虚拟端口,使得智能网卡中的目标虚拟端口重新回到未被占用状态,有利于节省智能网卡中的虚拟端口资源。
与上述应用于计算节点中的第一处理器的数据通信方法相对应,本发明实施例还提供了一种应用于智能网卡中的第二处理器的数据通信方法。
参见图5,图5为本发明实施例提供的第二种数据通信方法的流程示意图,应用于智能网卡中的第二处理器,上述智能网卡安装于计算节点。
本发明的一个实施例中,上述第二处理器可以是SOC(System on Chip,片上系统)。
具体的,上述数据通信方法包括以下步骤S501-S503。
步骤S501:接收计算节点中的第一处理器发送的目标虚拟端口的信息。
其中,上述目标虚拟端口为:上述第一处理器创建的虚拟机所依据的上述智能网卡中的虚拟端口。
一种实现方式中,可以在计算节点的配置文件中指定智能网卡与第一处理器通信的IP地址和端口,其中,上述IP地址为智能网卡的IP地址,这样第一处理器可以基于Socket方式向上述指定的IP地址和端口发送上述目标虚拟端口的信息,从而智能网卡中的第二处理器可以在上述端口上监听,进而接收到第一处理器发送的、包含上述目标虚拟端口的信息的报文。
步骤S502:基于接收到的信息,将目标虚拟端口加入第二处理器已创建的虚拟交换机。
具体的,第一处理器向第二处理器发送的目标虚拟端口的信息可以以不同的形式呈现,因此第二处理器接收到的目标虚拟端口的信息有不同的形式,鉴于此,第二处理器可以通过以下方式将目标虚拟端口加入第二处理器已创建的虚拟交换机。
一种实施方式中,目标虚拟端口的信息包括端口名称,这种情况下,第二处理器根据上述端口名称确定出智能网卡中的目标虚拟端口,然后将目标虚拟端口加入第二处理器已创建的虚拟交换机。
另一种实施方式中,目标虚拟端口的信息可以以索引的形式呈现,这种情况下,第二处理器接收到的信息可以为目标虚拟端口的第一索引、目标物理端口的第二索引以及端口加入操作的标识。这样第二处理器可以根据上述目标物理端口的第二索引确定智能网卡中对应的目标物理端口,再根据目标虚拟端口的第一索引确定出智能网卡中索引与第一索引相同的、且为目标物理端口虚拟得到的端口,作为目标虚拟端口,并基于上述端口指令中携带的端口加入操作的标识将目标虚拟端口加入第二处理器创建的虚拟交换机。
步骤S503:在存在针对虚拟机的数据通信需求时,通过虚拟交换机加入的目标虚拟端口实现针对虚拟机的数据通信。
这样第二处理器将目标虚拟端口加入第二处理器创建的虚拟交换机后,也就建立了虚拟交换机和虚拟机之间的通信连接。进而在存在针对虚拟机的数据通信需求时,可以通过虚拟交换机加入的目标虚拟端口实现针对虚拟机的数据通信。具体的,通过虚拟交换机加入的目标虚拟端口实现针对虚拟机的数据通信已在图三所示实施例中步骤S303中分情况说明,这里不再赘述。
由以上可见,应用本发明实施例提供的方案进行数据通信时,虚拟机由计算节点中的第一处理器基于目标虚拟端口创建,虚拟交换机由智能网卡中的第二处理器创建,从而第二处理器将目标虚拟端口加入虚拟交换机之后,在存在针对虚拟机的数据通信需求时,可以通过虚拟交换机加入的目标虚拟端口实现针对上述虚拟机的数据通信。可以看出,虚拟交换机的创建由第二处理器完成,那么针对虚拟机的数据通信也就由第二处理器通过虚拟机交换机实现,这样能够有效减少数据通信过程中消耗的计算节点中第一处理器的资源,从而缓解计算节点中处理器资源紧张的情况。
本发明的一个实施例中,上述智能网卡还可以包括:FPGA,FPGA中可以存储有针对上述数据通信的流表,因此在存在针对上述虚拟机的数据通信需求时,可以通过上述FPGA以及上述虚拟交换机加入的目标虚拟端口实现针对上述虚拟机的数据通信。
如图4所示,由图可以看出上述FPGA与第二处理器共同位于智能网卡中。
具体的,FPGA中可以设置有用于进行数据转发的pipeline,这样第二处理器确定针对上述虚拟机的数据通信需求的流表已经下发到FPGA的情况下,则由FPGA和虚拟交换机实现数据转发。
由于FPGA对于通信数据采用硬件转发,转发效率较高,这样FPGA通过虚拟交换机加入的上述目标虚拟端口实现针对上述虚拟机的数据通信,提高了数据通信过程中数据转发的效率。
本发明的一个实施例中,第二处理器在基于接收到的信息,将目标虚拟端口加入第二处理器已创建的虚拟交换机之后,还可以向控制节点同步目标虚拟端口的端口状态。
这样可以及时向控制节点更新智能网卡中的端口状态,有利于控制节点向计算节点中第一处理器反馈正确的端口信息。
本发明的一个实施例中,第二处理器在基于接收到的信息,将目标虚拟端口加入第二处理器已创建的虚拟交换机之后,若接收到计算节点中的第一处理器发送的端口退出指令,还可以将上述端口退出指令中指示的目标虚拟端口退出第二处理器已创建的虚拟交换机。
具体的,上述第一处理器发送的端口退出指令可以包括目标虚拟端口的名称和端口退出操作的标识;也可以包括前述目标虚拟端口的第一索引、目标物理端口的第二索引以及端口退出操作的标识。这样第二处理器在接收到第一处理器发送的端口退出指令后,可以确定出上述端口退出指令中指示的目标虚拟端口,并按照端口退出操作的标识将上述目标虚拟端口退出第二处理器已创建的虚拟交换机。
这样在接收到第一处理器发送的端口退出指令时,智能网卡中的第二处理器还可以将上述端口退出指令中指示的目标虚拟端口退出第二处理器已创建的虚拟交换机,使得智能网卡中的目标虚拟端口重新回到未被占用状态,有利于节省智能网卡中的虚拟端口资源。
在图5所示实施例的基础上,第二处理器在接收到第一处理器发送的目标虚拟端口的端口信息之后,可以根据对应关系和接收到的信息,确定目标虚拟端口对应的代表端口,然后将代表端口加入第二处理器已创建的虚拟交换机,进而在存在针对上述虚拟机的数据通信需求时,通过虚拟交换机加入的代表端口实现针对虚拟机的数据通信。
参见图6,图6为本发明实施例提供的第三种数据通信方法的流程示意图,应用于智能网卡中的第二处理器,上述智能网卡安装于计算节点,上述方法包括以下步骤S601-S605。
步骤S601:对智能网卡的各个物理端口进行虚拟化,得到一个或多个虚拟端口以及各个虚拟端口与代表端口间的对应关系。
其中,上述代表端口为:虚拟端口在上述第二处理器所安装操作系统上映射的端口。
具体的,上述对应关系可以为一一对应关系,即一个虚拟端口对应一个代表端口。
步骤S602:接收计算节点中的第一处理器发送的目标虚拟端口的信息。
上述步骤S602与前述图5所示实施例中步骤S501相同,这里不再赘述。
步骤S603:根据对应关系和接收到的信息,确定目标虚拟端口对应的代表端口。
具体的,由于第二处理器已经获得了各个虚拟端口与代表端口间的对应关系,因此,第二处理器接收到目标虚拟端口的信息后,可以在已知的对应关系中查找针对目标虚拟端口的对应关系,然后将所查找到对应关系中记录的代表端口作为目标虚拟端口对应的代表端口。
步骤S604:将上述代表端口加入第二处理器已创建的虚拟交换机。
步骤S605:在存在针对上述虚拟机的数据通信需求时,通过虚拟交换机加入的代表端口实现针对虚拟机的数据通信。
本步骤与前述图3所示实施例中步骤S303相类似,区别仅为将目标虚拟端口改变为代表端口,这里不再赘述。
由以上可见,本实施例提供的方案中第二处理器在向虚拟交换机中加入端口时,所加入的端口是第二处理器所安装的操作系统中的代表口,这样第二处理器可以针对上述操作系统,准确的确定出上述操作系统中与目标虚拟端口对应的代表口,从而将上述代表口加入虚拟交换机。可见本实施例提供的方案中,在虚拟交换机中加入的口是与智能网卡的第二处理器安装的操作系统相关的,不同的操作系统代表口可能不同,这样能够使得建立虚拟机与虚拟交换机间通信连接的过程更加有针对性。
下面再结合OpenStack通过具体举例,对本发明实施例提供的方案中虚拟机的创建流程与现有技术中虚拟机的创建流程进行对比说明。
现有技术中,计算节点中的处理器往往通过OpenStack提供的组件创建虚拟机,其中,Nova Compute(虚拟机创建)组件、Neutron-agent(网络代理)组件和vSwitch(虚拟交换机)都位于计算节点中,基于计算节点中的第一处理器提供的计算资源创建,而本发明实施例提供的方案中,由于将计算节点中的第一处理器创建的虚拟机交换机,分离到了安装于计算节点上的智能网卡中,使得Neutron-agent组件和vSwitch组件的位置发生了改变,变为位于智能网卡中,基于智能网卡中的第二处理器提供的计算资源创建,那么相较于现有技术,应用本发明实施例提供的方案来创建虚拟机时,上述各组件出现了数据交互流程上的改变。
首先结合图7对现有技术中创建虚拟机时上述各组件的数据交互流程进行说明。参见图7,图7为现有技术中的一种数据交互流程的示意图。图7中包括控制节点和计算节点,其中,控制节点中包括Nova Services(计算服务)组件和Neutron Server(网络服务)组件,计算节点中包括Nova Compute组件、Neutron-agent组件和vSwitch。以下通过步骤S701-步骤S706述上述数据交互流程。
步骤S701:计算节点中的Neutron-agent组件启动,开始监听vSwitch上的虚拟端口变化。
步骤S702:控制节点接收到虚拟机创建指令,通过Nova Services组件向计算节点的Nova-compute组件发送创建虚拟机的指令。上述计算节点可以是控制节点接收到虚拟机创建指令后,从多个计算节点中选择出来的。
步骤S703:计算节点中的Nova Compute组件向控制节点中的Neutron Server组件申请目标虚拟端口,Neutron Server组件向Nova Compute组件反馈目标虚拟端口的端口信息,Nova Compute组件根据返回的端口信息调用libvirt接口创建虚拟机。
步骤S704:待虚拟机创建成功后,计算节点中的Nova Compute组件将目标虚拟端口加入计算节点中的vSwitch。
步骤S705:计算节点中的Neutron-agent组件监听到vSwitch上加入的目标虚拟机端口。
步骤S706:计算节点中的Neutron-agent组件向控制节点中的Neutron Server组件更新目标虚拟端口的状态。
下面再结合图8对本发明实施例提供的方案中创建虚拟机时上述各组件的数据交互流程进行说明。参见图8,图8为本发明实施例提供的一种数据交互流程的示意图。由图可见,与现有技术相比,Neutron-agent组件和vSwitch从计算节点中分离,不再依赖计算节点中的第一处理器的计算资源,而是位于智能网卡中,基于智能网卡中第二处理器的计算资源工作。以下通过步骤S801-步骤S806简述上述数据交互流程。
步骤S801:智能网卡中的Neutron-agent组件启动,向Neutron Server组件反馈自己的状态,同时开始监听vSwitch上的端口变化。
步骤S802:控制节点收到创建虚拟机创建指令,通过Nova Services组件向该计算节点的Nova-compute组件发送创建虚拟机的指令。
步骤S803:计算节点中的Nova Compute组件向控制节点中的Neutron Server组件申请目标虚拟端口,Neutron Server组件向Nova Compute组件反馈目标虚拟端口的端口信息,Nova Compute组件根据返回的端口信息调用libvirt接口创建虚拟机。
当然,本步骤中Neutron Server组件还可以向Nova Compute组件反馈基于物理地址选择目标虚拟端口的指示,这样Nova Compute组件自行在目标地址范围内选择目标虚拟端口。
步骤S804:待虚拟机创建成功后,计算节点中的Nova Compute组件将目标虚拟端口的端口信息发送给智能网卡中的Neutron-agent组件。
本步骤与前述现有技术中的步骤S704相比,由于Nova Compute组件位于计算节点中,vSwitch位于智能网卡中,因此计算节点中的Nova Compute组件不能直接将目标虚拟端口加入智能网卡中的vSwitch,而是需要通知与vSwitch同样位于智能网卡中的Neutron-agent组件需要加入vSwitch的目标虚拟端口。
步骤S805:智能网卡中的Neutron-agent组件基于上述端口信息确定出目标虚拟端口,并且将上述目标虚拟端口加入到智能网卡中的vSwitch。
本步骤与前述现有技术中的步骤S705相比,不是由计算节点中的Nova Compute组件将目标虚拟端口加入vSwitch,而是由智能网卡中的Neutron-agent组件将上述目标虚拟端口加入到智能网卡中的vSwitch。
步骤S806:智能网卡中的Neutron-agent组件向控制节点中的Neutron Server更新目标虚拟端口的状态。
本步骤与前述现有技术中的步骤S705相比,Neutron-agent组件位于智能网卡中,因此需要智能网卡中的Neutron-agent组件向控制节点中的Neutron Server组件更新目标虚拟端口的状态。
由以上可见,现有技术中Nova Compute组件、Neutron-agent组件和vSwitch都位于计算节点中,需要消耗计算节点中处理器提供的计算资源;而本发明实施例提供的方案中,Nova Compute组件位于计算节点中,消耗计算节点中第一处理器提供的计算资源,Neutron-agent组件和vSwitch位于智能网卡中中,消耗智能网卡中第二处理器提供的计算资源。这样由于上述组件的位置发生了变化,上述步骤S804-S806相较于现有技术中的步骤S704-S706发生了改变,经过改变后的步骤可以成功的基于目标虚拟端口在计算节点中创建虚拟机,且在虚拟机和虚拟交换机不位于同一宿主设备的情况下,成功将目标虚拟端口加入智能网卡中的虚拟交换机中,进而在存在针对虚拟机的数据通信需求时,由第二处理器通过虚拟交换机加入的目标虚拟端口实现,这样能够有效减少数据通信过程中消耗的计算节点中第一处理器的资源,从而缓解计算节点中处理器资源紧张的情况。
与上述数据通信方法相对应的,本发明实施例还提供了一种数据通信装置。
参见图9,图9为本发明实施例提供的第一种数据通信装置的结构示意图,上述装置应用于计算节点中的第一处理器,其中,上述计算节点安装有智能网卡,上述装置包括以下模块901-903。
端口确定模块901,用于响应于虚拟机创建指令,确定所述智能网卡中未被占用的目标虚拟端口;
虚拟机创建模块902,用于基于所述目标虚拟端口创建虚拟机;
端口信息发送模块903,用于向所述智能网卡中的第二处理器发送所述目标虚拟端口的信息,以使得所述第二处理器将所述目标虚拟端口加入所述第二处理器创建的虚拟交换机、并在存在针对所述虚拟机的数据通信需求时通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
由以上可见,应用本发明实施例提供的方案进行数据通信时,虚拟机由计算节点中的第一处理器基于目标虚拟端口创建,虚拟交换机由智能网卡中的第二处理器创建,从而第二处理器将目标虚拟端口加入虚拟交换机之后,在存在针对虚拟机的数据通信需求时,第二处理器可以通过虚拟交换机加入的目标虚拟端口实现针对上述虚拟机的数据通信。可以看出,虚拟交换机的创建由第二处理器完成,针对虚拟机的数据通信也就由第二处理器通过虚拟机交换机实现,这样能够有效减少数据通信过程中消耗的计算节点中第一处理器的资源,从而缓解计算节点中处理器资源紧张的情况。
本发明的一个实施例中,所述端口确定模块901,具体用于:响应于虚拟机创建指令,向控制节点申请所述智能网卡中未被占用的虚拟端口;接收所述控制节点反馈的申请结果;若所述申请结果指示基于物理地址选择虚拟端口,选择所述智能网卡中未被占用、且地址位于目标地址范围内的目标虚拟端口,其中,所述目标地址范围为:所述计算节点的配置信息中记录的针对虚拟端口的物理地址范围。
由以上可见,第一处理器在接收到控制节点反馈的基于物理地址选择虚拟端口的指令之后,第一处理器可以在目标地址范围内准确的确定智能网卡中未被占用的目标虚拟端口。
本发明的一个实施例中,所述端口信息发送模块903,具体用于获得所述目标虚拟端口的第一索引和目标物理端口的第二索引,其中,所述目标物理端口为:所述智能网卡中的一个物理端口,所述目标虚拟端口为所述目标物理端口虚拟所得虚拟端口中的一个;向所述智能网卡中的第二处理器发送端口加入指令,其中,所述端口加入指令携带:所述第一索引、所述第二索引和端口加入操作的标识。
由于计算节点中的第一处理器与智能网卡中的第二处理器针对同一目标虚拟端口的第一索引和同一目标物理端口的第二索引相同,这样第一处理器向第二处理器发送携带上述第一索引和第二索引的端口加入指令后,可以使得第二处理器基于上述指令中携带的第一索引和第二索引准确的确定出目标虚拟端口,并将目标虚拟端口加入第二处理器创建的虚拟机交换机。
本发明的一个实施例中,所述装置还包括:
退出指令发送模块,用于若存在针对所述目标虚拟端口的端口退出需求,根据所述目标虚拟端口的信息,向所述第二处理器发送端口退出指令,以使得所述第二处理器从所述虚拟交换机中退出所述目标虚拟端口。
这样在有端口退出需求时,计算节点中的第一处理器可以通知智能网卡中的第二处理器从虚拟交换机中退出目标虚拟端口,使得智能网卡中的目标虚拟端口重新回到未被占用状态,有利于节省智能网卡中的虚拟端口资源。
参见图10,图10为本发明实施例提供的第二种数据通信装置的结构示意图,上述装置应用于智能网卡中的第二处理器,其中,上述智能网卡安装于计算节点,上述装置包括以下模块1001-1003。
端口信息接收模块1001,用于接收所述计算节点中的第一处理器发送的目标虚拟端口的信息,其中,所述目标虚拟端口为:所述第一处理器创建虚拟机所依据的所述智能网卡中的虚拟端口;
端口加入模块1002,用于基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机;
数据通信模块1003,用于在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
由以上可见,应用本发明实施例提供的方案进行数据通信时,虚拟机由计算节点中的第一处理器基于目标虚拟端口创建,虚拟交换机由智能网卡中的第二处理器创建,从而第二处理器将目标虚拟端口加入虚拟交换机之后,在存在针对虚拟机的数据通信需求时,第二处理器可以通过虚拟交换机加入的目标虚拟端口实现针对上述虚拟机的数据通信。可以看出,虚拟交换机的创建由第二处理器完成,那么针对虚拟机的数据通信也就由第二处理器通过虚拟机交换机实现,这样能够有效减少数据通信过程中消耗的计算节点中第一处理器的资源,从而缓解计算节点中处理器资源紧张的情况。
本发明的一个实施例中,所述装置还包括:
端口虚拟化模块,用于对所述智能网卡的各个物理端口进行虚拟化,得到一个或多个虚拟端口以及各个虚拟端口与代表端口间的对应关系,其中,所述代表端口为:虚拟端口在所述第二处理器所安装操作系统上映射的端口;
所述端口加入模块1002,具体用于根据所述对应关系和接收到的信息,确定所述目标虚拟端口对应的代表端口;将所述代表端口加入所述第二处理器已创建的虚拟交换机。
由以上可见,本实施例提供的方案中第二处理器在向虚拟交换机中加入端口时,所加入的端口是第二处理器所安装的操作系统中的代表口,这样第二处理器可以针对上述操作系统,准确的确定出上述操作系统中与目标虚拟端口对应的代表口,从而将上述代表口加入虚拟交换机。可见本实施例提供的方案中,在虚拟交换机中加入的口是与智能网卡的第二处理器安装的操作系统相关的,不同的操作系统代表口可能不同,这样能够使得建立虚拟机与虚拟交换机间通信连接的过程更加有针对性。
本发明的一个实施例中,所述装置还包括:
端口状态同步模块,用于向控制节点同步目标虚拟端口的端口状态。
这样可以及时向控制节点更新智能网卡中的端口状态,有利于控制节点向计算节点中第一处理器反馈正确的端口信息。
本发明的一个实施例中,所述装置还包括:
端口退出模块,用于若接收到计算节点中的第一处理器发送的端口退出指令,则将所述端口退出指令中指示的目标虚拟端口退出所述第二处理器已创建的虚拟交换机。
这样在接收到第一处理器发送的端口退出指令时,智能网卡中的第二处理器还可以将上述端口退出指令中指示的目标虚拟端口退出第二处理器已创建的虚拟交换机,使得智能网卡中的目标虚拟端口重新回到未被占用状态,有利于节省智能网卡中的虚拟端口资源。
本发明的一个实施例中,所述智能网卡还包括:FPGA,其中,所述FPGA中存储有针对所述虚拟机的数据通信需求的流表;
所述数据通信模块1003,具体用于:在存在针对所述虚拟机的数据通信需求时,通过所述FPGA以及所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
由于FPGA对于通信数据采用硬件转发,转发效率较高,这样FPGA通过虚拟交换机加入的上述目标虚拟端口实现针对上述虚拟机的数据通信,提高了数据通信过程中数据转发的效率。
与上述应用于计算节点中第一处理器的数据通信方法相对应,本发明实施例还提供了一种计算节点。
参见图11,为本发明实施例提供的一种计算节点,包括:第一处理器1101、机器可读存储介质1102和智能网卡1103,所述机器可读存储介质1102存储有能够被所述第一处理器1101执行的机器可执行指令,所述第一处理器1101被所述机器可执行指令促使:实现上述方法实施例提供的应用于计算节点中的第一处理器的数据通信方法。
与上述应用于智能网卡中第二处理器的数据通信方法相对应,本发明实施例还提供了一种智能网卡。
参见图12,为本发明实施例提供的一种智能网卡,包括:第二处理器1201和机器可读存储介质1202,所述机器可读存储介质1202存储有能够被所述第二处理器1201执行的机器可执行指令,所述第二处理器1201被所述机器可执行指令促使:实现上述方法实施例提供的应用于智能网卡中的第二处理器的数据通信方法。
上述机器可读存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现本发明实施例提供的应用于计算节点中的第一处理器的数据通信方法。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现本发明实施例提供的应用于智能网卡中的第二处理器的数据通信方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行时实现本发明实施例提供的应用于计算节点中的第一处理器的数据通信方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行时实现本发明实施例提供的应用于智能网卡中的第二处理器的数据通信方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (18)
1.一种数据通信方法,其特征在于,应用于计算节点中的第一处理器,其中,所述计算节点安装有智能网卡,所述方法包括:
响应于虚拟机创建指令,确定所述智能网卡中未被占用的目标虚拟端口;
基于所述目标虚拟端口创建虚拟机;
向所述智能网卡中的第二处理器发送所述目标虚拟端口的信息,以使得所述第二处理器将所述目标虚拟端口加入所述第二处理器创建的虚拟交换机、并在存在针对所述虚拟机的数据通信需求时通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信;
所述响应于虚拟机创建指令,确定所述智能网卡中未被占用的目标虚拟端口,包括:
响应于虚拟机创建指令,向控制节点申请所述智能网卡中未被占用的虚拟端口;
接收所述控制节点反馈的申请结果;
若所述申请结果指示基于物理地址选择虚拟端口,选择所述智能网卡中未被占用、且地址位于目标地址范围内的目标虚拟端口,其中,所述目标地址范围为:所述计算节点的配置信息中记录的针对虚拟端口的物理地址范围。
2.根据权利要求1所述的方法,其特征在于,所述向所述智能网卡中的第二处理器发送所述目标虚拟端口的信息,包括:
获得所述目标虚拟端口的第一索引和目标物理端口的第二索引,其中,所述目标物理端口为:所述智能网卡中的一个物理端口,所述目标虚拟端口为所述目标物理端口虚拟所得虚拟端口中的一个;
向所述智能网卡中的第二处理器发送端口加入指令,其中,所述端口加入指令携带:所述第一索引、所述第二索引和端口加入操作的标识。
3.根据权利要求1-2中任一项所述的方法,其特征在于,在所述向所述智能网卡中的第二处理器发送所述目标虚拟端口的信息之后,还包括:
若存在针对所述目标虚拟端口的端口退出需求,根据所述目标虚拟端口的信息,向所述第二处理器发送端口退出指令,以使得所述第二处理器从所述虚拟交换机中退出所述目标虚拟端口。
4.一种数据通信方法,其特征在于,应用于智能网卡中的第二处理器,其中,所述智能网卡安装于计算节点,所述方法包括:
接收所述计算节点中的第一处理器发送的目标虚拟端口的信息,其中,所述目标虚拟端口为:所述第一处理器创建虚拟机所依据的所述智能网卡中的虚拟端口;
基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机;
在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信;
所述方法还包括:
对所述智能网卡的各个物理端口进行虚拟化,得到一个或多个虚拟端口以及各个虚拟端口与代表端口间的对应关系,其中,所述代表端口为:虚拟端口在所述第二处理器所安装操作系统上映射的端口;
所述基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机,包括:
根据所述对应关系和接收到的信息,确定所述目标虚拟端口对应的代表端口;
将所述代表端口加入所述第二处理器已创建的虚拟交换机;
所述在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信,包括:
在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述代表端口实现针对所述虚拟机的数据通信。
5.根据权利要求4所述的方法,其特征在于,在基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机之后,还包括:
向控制节点同步目标虚拟端口的端口状态。
6.根据权利要求4所述的方法,其特征在于,在基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机之后,还包括:
若接收到计算节点中的第一处理器发送的端口退出指令,则将所述端口退出指令中指示的目标虚拟端口退出所述第二处理器已创建的虚拟交换机。
7.根据权利要求4-6中任一项所述的方法,其特征在于,所述智能网卡还包括:FPGA,其中,所述FPGA中存储有针对所述虚拟机的数据通信需求的流表;
所述在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信,包括:
在存在针对所述虚拟机的数据通信需求时,通过所述FPGA以及所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
8.一种数据通信装置,其特征在于,应用于计算节点中的第一处理器,其中,所述计算节点安装有智能网卡,所述装置包括:
端口确定模块,用于响应于虚拟机创建指令,确定所述智能网卡中未被占用的目标虚拟端口;
虚拟机创建模块,用于基于所述目标虚拟端口创建虚拟机;
端口信息发送模块,用于向所述智能网卡中的第二处理器发送所述目标虚拟端口的信息,以使得所述第二处理器将所述目标虚拟端口加入所述第二处理器创建的虚拟交换机、并在存在针对所述虚拟机的数据通信需求时通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信;
所述端口确定模块,具体用于响应于虚拟机创建指令,向控制节点申请所述智能网卡中未被占用的虚拟端口;接收所述控制节点反馈的申请结果;若所述申请结果指示基于物理地址选择虚拟端口,选择所述智能网卡中未被占用、且地址位于目标地址范围内的目标虚拟端口,其中,所述目标地址范围为:所述计算节点的配置信息中记录的针对虚拟端口的物理地址范围。
9.根据权利要求8所述的装置,其特征在于,
所述端口信息发送模块,具体用于获得所述目标虚拟端口的第一索引和目标物理端口的第二索引,其中,所述目标物理端口为:所述智能网卡中的一个物理端口,所述目标虚拟端口为所述目标物理端口虚拟所得虚拟端口中的一个;向所述智能网卡中的第二处理器发送端口加入指令,其中,所述端口加入指令携带:所述第一索引、所述第二索引和端口加入操作的标识。
10.根据权利要求8-9中任一项所述的装置,其特征在于,所述装置还包括:
退出指令发送模块,用于若存在针对所述目标虚拟端口的端口退出需求,根据所述目标虚拟端口的信息,向所述第二处理器发送端口退出指令,以使得所述第二处理器从所述虚拟交换机中退出所述目标虚拟端口。
11.一种数据通信装置,其特征在于,应用于智能网卡中的第二处理器,其中,所述智能网卡安装于计算节点,所述装置包括:
端口信息接收模块,用于接收所述计算节点中的第一处理器发送的目标虚拟端口的信息,其中,所述目标虚拟端口为:所述第一处理器创建虚拟机所依据的所述智能网卡中的虚拟端口;
端口加入模块,用于基于接收到的信息,将所述目标虚拟端口加入所述第二处理器已创建的虚拟交换机;
数据通信模块,用于在存在针对所述虚拟机的数据通信需求时,通过所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信;
所述装置还包括:
端口虚拟化模块,用于对所述智能网卡的各个物理端口进行虚拟化,得到一个或多个虚拟端口以及各个虚拟端口与代表端口间的对应关系,其中,所述代表端口为:虚拟端口在所述第二处理器所安装操作系统上映射的端口;
所述端口加入模块,具体用于根据所述对应关系和接收到的信息,确定所述目标虚拟端口对应的代表端口;将所述代表端口加入所述第二处理器已创建的虚拟交换机。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
端口状态同步模块,用于向控制节点同步目标虚拟端口的端口状态。
13.根据权利要求11所述的装置,其特征在于,所述装置还包括:
端口退出模块,用于若接收到计算节点中的第一处理器发送的端口退出指令,则将所述端口退出指令中指示的目标虚拟端口退出所述第二处理器已创建的虚拟交换机。
14.根据权利要求11-13中任一项所述的装置,其特征在于,所述智能网卡还包括:FPGA,其中,所述FPGA中存储有针对所述虚拟机的数据通信需求的流表;
所述数据通信模块,具体用于在存在针对所述虚拟机的数据通信需求时,通过所述FPGA以及所述虚拟交换机加入的所述目标虚拟端口实现针对所述虚拟机的数据通信。
15.一种计算节点,其特征在于,包括:第一处理器、机器可读存储介质和智能网卡,所述机器可读存储介质存储有能够被所述第一处理器执行的机器可执行指令,所述第一处理器被所述机器可执行指令促使:实现权利要求1-3任一所述的方法步骤。
16.一种智能网卡,其特征在于,包括:第二处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述第二处理器执行的机器可执行指令,所述第二处理器被所述机器可执行指令促使:实现权利要求4-7任一所述的方法步骤。
17.一种机器可读存储介质,其特征在于,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现权利要求1-3任一所述的方法步骤。
18.一种机器可读存储介质,其特征在于,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现权利要求4-7任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210319159.4A CN114679349B (zh) | 2022-03-29 | 2022-03-29 | 一种数据通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210319159.4A CN114679349B (zh) | 2022-03-29 | 2022-03-29 | 一种数据通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114679349A CN114679349A (zh) | 2022-06-28 |
CN114679349B true CN114679349B (zh) | 2023-07-21 |
Family
ID=82075615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210319159.4A Active CN114679349B (zh) | 2022-03-29 | 2022-03-29 | 一种数据通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114679349B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185647B (zh) * | 2022-09-14 | 2022-12-20 | 珠海星云智联科技有限公司 | virtio设备直通方法及相关装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105207873A (zh) * | 2015-08-31 | 2015-12-30 | 华为技术有限公司 | 一种报文处理方法和装置 |
CN111224898A (zh) * | 2018-11-23 | 2020-06-02 | 北京金山云网络技术有限公司 | 一种报文转发方法、装置、交换机设备及智能网卡 |
CN111224897A (zh) * | 2018-11-23 | 2020-06-02 | 北京金山云网络技术有限公司 | 一种流量转发方法、装置、交换机设备及智能网卡 |
CN112486522A (zh) * | 2020-12-17 | 2021-03-12 | 济南浪潮数据技术有限公司 | 含智能网卡OpenStack裸机的部署方法及装置 |
CN113691466A (zh) * | 2020-05-19 | 2021-11-23 | 阿里巴巴集团控股有限公司 | 一种数据的传输方法、智能网卡、计算设备及存储介质 |
WO2022048646A1 (zh) * | 2020-09-07 | 2022-03-10 | 中兴通讯股份有限公司 | 虚拟ip管理方法、装置、电子设备和存储介质 |
-
2022
- 2022-03-29 CN CN202210319159.4A patent/CN114679349B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105207873A (zh) * | 2015-08-31 | 2015-12-30 | 华为技术有限公司 | 一种报文处理方法和装置 |
CN111224898A (zh) * | 2018-11-23 | 2020-06-02 | 北京金山云网络技术有限公司 | 一种报文转发方法、装置、交换机设备及智能网卡 |
CN111224897A (zh) * | 2018-11-23 | 2020-06-02 | 北京金山云网络技术有限公司 | 一种流量转发方法、装置、交换机设备及智能网卡 |
CN113691466A (zh) * | 2020-05-19 | 2021-11-23 | 阿里巴巴集团控股有限公司 | 一种数据的传输方法、智能网卡、计算设备及存储介质 |
WO2022048646A1 (zh) * | 2020-09-07 | 2022-03-10 | 中兴通讯股份有限公司 | 虚拟ip管理方法、装置、电子设备和存储介质 |
CN112486522A (zh) * | 2020-12-17 | 2021-03-12 | 济南浪潮数据技术有限公司 | 含智能网卡OpenStack裸机的部署方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114679349A (zh) | 2022-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11258667B2 (en) | Network management method and related device | |
CN110113441B (zh) | 实现负载均衡的计算机设备、系统和方法 | |
EP3291499B1 (en) | Method and apparatus for network service capacity expansion | |
CN108270676B (zh) | 一种基于Intel DPDK的网络数据处理方法及装置 | |
JP6106896B2 (ja) | 粗粒度の負荷分散と細粒度の負荷分散との間をブリッジするクラスタコンピューティングデバイスのコンピューティングノード、および、粗粒度の負荷分散と細粒度の負荷分散との間でブリッジする方法 | |
WO2021129008A1 (zh) | 服务调用方法、装置、设备及介质 | |
US20220413937A1 (en) | Node management method, device and apparatus, storage medium, and system | |
US11500666B2 (en) | Container isolation method and apparatus for netlink resource | |
CN109194589B (zh) | 一种mdc实现方法及装置 | |
CN107113193A (zh) | 一种确定vnf的处理策略的方法、装置及系统 | |
US11824765B2 (en) | Fast redirect of traffic when pods fail | |
CN115102896B (zh) | 数据广播方法、广播加速器、noc、soc及电子设备 | |
CN114679349B (zh) | 一种数据通信方法及装置 | |
CN111064786B (zh) | 账户标识管理方法及设备 | |
US20240022501A1 (en) | Data Packet Sending Method and Device | |
US20230224241A1 (en) | Path Identity Allocation Method, System, and Apparatus, Device, and Storage Medium | |
CN110324202B (zh) | 一种探测线路质量的方法和装置 | |
CN111221620B (zh) | 存储方法、装置及存储介质 | |
KR101996337B1 (ko) | 교환기 처리 방법, 제어기, 교환기 및 교환기 처리 시스템 | |
CN111600833A (zh) | 网络操作系统及报文转发方法 | |
WO2023029485A1 (zh) | 数据处理方法、装置、计算机设备及计算机可读存储介质 | |
CN112637285B (zh) | 边缘云通信方法、管理系统、计算机设备及存储介质 | |
CN113838463A (zh) | 信息传输方法、装置、电子设备及存储介质 | |
CN113452729A (zh) | 序列号确定方法、设备及存储介质 | |
CN110958182B (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 |