本发明涉及通讯技术领域,尤其涉及一种数据转发方法、装置及系统。
背景技术:
虚拟化技术(Virtualization)使用软件技术在一台物理计算机上模拟产生多个虚拟计算机(Virtual Machine,简称VM),每个VM可以和物理计算机一样安装操作系统、安装应用软件、运行各种程序。多个VM可以同时在一台物理计算机上运行,互相之间不感知对方,彼此隔离,只能通过网络互相通讯,就如同两台物理计算机一样。多个VM的性能总和不超过其所在的物理计算机。
在虚拟化技术中,一台物理计算机上模拟多个VM的软件叫虚拟监控器(Virtual Machine Monitor,简称VMM)。由于虚拟技术引入了VMM这一中间层,VM内运行的应用程序的性质不同,虚拟化带来的性能损耗也不同。进行大量CPU运算的应用程序,其在VM中运行时性能损失较小。与外界进行大量输入/输出(Input/Output,简称I/O)通讯的应用程序(例如网络通讯或磁盘读写),其在VM中运行时性能损失较大。由于虚拟化技术能够带来更好的综合成本优势,无线通讯行业开始大规模采用虚拟化技术。但是在无线通讯设备中,应用程序往往需要进行大量的网络通讯,有大量的数据吞吐,因此应用程序在VM中的运行性能会大幅下降。
现有技术中是采用标准虚拟化I/O通讯机制通过VM内部和外部的通讯两端的配合,以高效的接口实现数据的交换,简化了虚拟硬件的模拟过程降低了I/O过程的损耗。但是这种方案虽然降低了损耗,但是损耗还是很大。现有技术中又引用单根I/O虚拟化(Single Root I/O Virtualization,简称SR-IOV)硬件直通技术将物理计算机上的硬件直接交给VM使用而不是由VMM虚拟出来的虚拟硬件。这种技术中VM中的驱动程序可以直接驱动物理网卡,进行收发包操作。VM直接使用物理硬件而旁路了VMM的中间过程,使得性能损耗减至最小。但是由于VM需要感知不同的物理硬件,为不同的硬件安装对应的驱动程序,硬件升级或变更时VM也需要一同变动,对VM的开发、维护、部署等产生较大影响,使得工作效率降低,实际操作起来也比较麻烦。
技术实现要素:
本发明的实施例提供一种数据转发方法、装置及系统,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种数据转发方法,包括:
主机接收网络设备发送的第一通知信息;其中,所述第一通知信息中包括所述网络设备存储在内存中的数据包的内存地址;
根据逻辑通道号与通讯实体的关系映射表获取与所述网络设备通信的虚拟机;其中,所述逻辑通道号是所述网络设备与所述虚拟机通信的逻辑通道号;
根据所述第一通知信息获得第二通知信息;其中,所述第二通知信息包括所述逻辑通道号和所述数据包的内存地址;
发送所述第二通知信息至所述虚拟机,以便于所述虚拟机根据所述数据包的内存地址获得所述数据包;其中,所述虚拟机是通过所述虚拟机上的连接模块接收所述第二通知信息的。
在第一种可能的实现方式中,结合第一方面,所述根据所述第一通知信息获得第二通知信息,包括:
解析所述第一通知信息获得所述数据包的内存地址;
将所述数据包的内存地址的形式转换为标准形式;
根据转换为标准形式的所述数据包的内存地址和所述逻辑通道号获得所述第二通知信息。
在第二种可能的实现方式中,结合第一方面或第一种可能的实现方式,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第三种可能的实现方式中,结合第一方面或第一种可能的实现方式,
所述逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
在第四种可能的实现方式中,结合第一方面或第一种可能的实现方式,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第二方面,提供一种数据转发方法,包括:
虚拟机通过所述虚拟机上的连接模块接收所述主机发送的第二通知信息;其中,所述第二通知信息是根据第一通知信息获得的,包括网络设备与所述虚拟机通信的逻辑通道号和数据包的内存地址;所述第一通知信息是所述网络设备发送至所述主机的,包括所述网络设备存储在内存中的所述数据包的内存地址;
根据所述数据包的内存地址在内存中获取所述数据包。
在第一种可能的实现方式中,结合第二方面,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第二种可能的实现方式中,结合第二方面,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第三方面,提供数据转发方法,包括:
主机接收虚拟机发送的第二通知信息;其中,所述第二通知信息包括逻辑通道号和所述虚拟机存储在内存中的数据包的内存地址;所述逻辑通道号为所述虚拟机与网络设备通信的逻辑通道号;所述虚拟机是通过所述虚拟机上的连接模块发送所述第二通知信息的;
根据所述逻辑通道号与通讯实体的关系映射表获取与所述虚拟机通信的网络设备;
根据所述第二通知信息获得第一通知信息;其中,所述第一通知信息包括所述数据包的内存地址;
发送所述第一通知信息至所述网络设备,以便于所述网络设备根据所述数据包的内存地址获得所述数据包。
在第一种可能的实现方式中,结合第三方面,所述根据所述第二通知信息获得第一通知信息,包括:
解析所述第二通知信息获得所述数据包的内存地址;
将所述数据报的内存地址的形式转换为所述网络设备可以识别的形式;
根据转换的所述数据包的内存地址获得所述第一通知信息。
在第二种可能的实现方式中,结合第三方面或第一种可能的实现方式,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第三种可能的实现方式中,结合第三方面或第一种可能的实现方式,
所述逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
在第四种可能的实现方式中,结合第三方面或第一种可能的实现方式,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第四方面,提供一种数据转发方法,包括:
虚拟机存储数据包至内存中;
通过所述虚拟机上的连接模块发送第二通知信息至主机,以便于所述主机根据所述第二通知信息获得第一通知信息,并发送至网络设备使得所述网络设备根据所述第一通知信息获得所述数据包;其中,所述第二通知信息中包括所述网络设备与所述虚拟机通信的逻辑通道号和数据包的内存地址。
在第一种可能的实现方式中,结合第四方面,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第二种可能的实现方式中,结合第四方面,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第五方面,提供一种主机,包括:
接收单元,用于接收网络设备发送的第一通知信息;其中,所述第一通知信息中包括所述网络设备存储在内存中的数据包的内存地址;
获取单元,用于根据逻辑通道号与通讯实体的关系映射表获取与所述网络设备通信的虚拟机;其中,所述逻辑通道号是所述网络设备与所述虚拟机通信的逻辑通道号;
所述获取单元,还用于根据所述接收单元接收到的所述第一通知信息获得第二通知信息;其中,所述第二通知信息包括所述逻辑通道号和所述数据包的内存地址;
发送单元,用于发送所述获取单元获取到的所述第二通知信息至所述虚拟机,以便于所述虚拟机根据所述数据包的内存地址获得所述数据包;其中,所述虚拟机是通过所述虚拟机上的连接模块接收所述第二通知信息的。
在第一种可能的实现方式中,结合第五方面,所述获取单元包括:
解析模块,用于解析所述第一通知信息获得所述数据包的内存地址;
转换模块,用于将所述解析模块获得的所述数据包的内存地址的形式转换为标准形式;
获取模块,用于根据所述转换模块转换为标准形式的数据包的内存地址和所述逻辑通道号获得所述第二通知信息。
在第二种可能的实现方式中,结合第五方面或第一种可能的实现方式,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第三种可能的实现方式中,结合第五方面或第一种可能的实现方式,
所述逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
在第四种可能的实现方式中,结合第五方面或第一种可能的实现方式,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第六方面,提供一种虚拟机,包括:
接收单元,用于通过所述虚拟机上的连接模块接收所述主机发送的第二通知信息;其中,所述第二通知信息是根据第一通知信息获得的,包括网络设备与所述虚拟机通信的逻辑通道号和数据包的内存地址;所述第一通知信息是所述网络设备发送至所述主机的,包括所述网络设备存储在内存中的所述数据包的内存地址;
获取单元,用于根据所述接收单元接收到的所述数据包的内存地址在内存中获取所述数据包。
在第一种可能的实现方式中,结合第六方面,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第二种可能的实现方式中,结合第六方面,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第七方面,提供一种主机,包括:
接收单元,用于接收虚拟机发送的第二通知信息;其中,所述第二通知信息包括逻辑通道号和所述虚拟机存储在内存中的数据包的内存地址;所述逻辑通道号为所述虚拟机与网络设备通信的逻辑通道号;所述虚拟机是通过所述虚拟机上的连接模块发送所述第二通知信息的;
获取单元,用于根据所述逻辑通道号与通讯实体的关系映射表获取与所述虚拟机通信的网络设备;
所述获取单元,还用于根据所述接收单元接收到的所述第二通知信息获得第一通知信息;其中,所述第一通知信息包括所述数据包的内存地址;
发送单元,用于发送所述第一通知信息至所述获取单元获取的所述网络设备,以便于所述网络设备根据所述数据包的内存地址获得所述数据包。
在第一种可能的实现方式中,结合第七方面,所述获取单元包括:
解析模块,用于解析所述第二通知信息获得所述数据包的内存地址;
转换模块,用于将所述解析模块得到的所述数据报的内存地址的形式转换为所述网络设备可以识别的形式;
获取模块,用于根据所述转换模块转换的所述数据包的内存地址获得所述第一通知信息。
在第二种可能的实现方式中,结合第七方面或第一种可能的实现方式,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第三种可能的实现方式中,结合第七方面或第一种可能的实现方式,
所述逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
在第四种可能的实现方式中,结合第七方面或第一种可能的实现方式,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第八方面,提供一种虚拟机,包括:
处理单元,用于存储数据包至内存中;
发送单元,用于通过所述虚拟机上的连接模块发送第二通知信息至主机,以便于所述主机根据所述第二通知信息获得第一通知信息,并发送至网络设备使得所述网络设备根据所述第一通知信息获得所述数据包;其中,所述第二通知信息中包括所述网络设备与所述虚拟机通信的逻辑通道号和数据包的内存地址。
在第一种可能的实现方式中,结合第八方面,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第二种可能的实现方式中,结合第八方面,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第九方面,提供一种主机,包括:至少一个处理器、存储器、通信接口和总线,所述至少一个处理器、存储器和通信接口通过总线连接并完成相互间的通信,所述存储器用于存储程序代码,其中:
所述处理器,用于调用存储器中的程序代码,用以执行以下操作:
接收网络设备发送的第一通知信息;其中,所述第一通知信息中包括所述网络设备存储在内存中的数据包的内存地址;
根据逻辑通道号与通讯实体的关系映射表获取与所述网络设备通信的虚拟机;其中,所述逻辑通道号是所述网络设备与所述虚拟机通信的逻辑通道号;
根据所述第一通知信息获得第二通知信息;其中,所述第二通知信息中包括所述逻辑通道号和所述数据包的内存地址;
发送所述第二通知信息至所述虚拟机,以便于所述虚拟机根据所述数据包的内存地址获得所述数据包;其中,所述虚拟机是通过所述虚拟机上的连接模块接收所述第二通知信息的。
在第一种可能的实现方式中,结合第九方面,所述处理器具体用于:
解析所述第一通知信息获得所述数据包的内存地址;
将所述数据包的内存地址的形式转换为标准形式;
根据转换为标准形式的所述数据包的内存地址和所述逻辑通道号获得所述第二通知信息。
在第二种可能的实现方式中,结合第九方面或第一种可能的实现方式,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第三种可能的实现方式中,结合第九方面或第一种可能的实现方式,
所述逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
在第四种可能的实现方式中,结合第九方面或第一种可能的实现方式,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第十方面,提供一种虚拟机,包括:至少一个处理器、存储器、通信接口和总线,所述至少一个处理器、存储器和通信接口通过总线连接并完成相互间的通信,所述存储器用于存储程序代码,其中:
所述处理器,用于调用存储器中的程序代码,用以执行以下操作:
通过所述虚拟机上的连接模块接收所述主机发送的第二通知信息;其中,所述第二通知信息是根据第一通知信息获得的,包括所述网络设备与所述虚拟机通信的逻辑通道号和所述数据包的内存地址;所述第一通知信息是所述网络设备发送至所述主机的,包括所述网络设备存储在内存中的所述数据包的内存地址;
根据所述数据包的内存地址在内存中获取所述数据包。
在第一种可能的实现方式中,结合第十方面,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第二种可能的实现方式中,结合第十方面,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第十一方面,提供一种主机,包括:至少一个处理器、存储器、通信接口和总线,所述至少一个处理器、存储器和通信接口通过总线连接并完成相互间的通信,所述存储器用于存储程序代码,其中:
所述处理器,用于调用存储器中的程序代码,用以执行以下操作:
主机接收虚拟机发送的第二通知信息;其中,所述第二通知信息包括逻辑通道号和所述虚拟机存储在内存中的数据包的内存地址;所述逻辑通道号为所述虚拟机与网络设备通信的逻辑通道号;所述虚拟机是通过所述虚拟机上的连接模块发送所述第二通知信息的;
根据所述逻辑通道号与通讯实体的关系映射表获取与所述虚拟机通信的网络设备;
根据所述第二通知信息获得第一通知信息;其中,所述第一通知信息包括所述数据包的内存地址;
发送所述第一通知信息至所述网络设备,以便于所述网络设备根据所述数据包的内存地址获得所述数据包。
在第一种可能的实现方式中,结合第十一方面,所述处理器具体用于:
解析所述第二通知信息获得所述数据包的内存地址;
将所述数据报的内存地址的形式转换为所述网络设备可以识别的形式;
根据转换的所述数据包的内存地址获得所述第一通知信息。
在第二种可能的实现方式中,结合第十一方面或第一种可能的实现方式,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第三种可能的实现方式中,结合第十一方面或第一种可能的实现方式,
所述逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
在第四种可能的实现方式中,结合第九方面或第十一种可能的实现方式,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第十二方面,提供一种虚拟机,包括:至少一个处理器、存储器、通信接口和总线,所述至少一个处理器、存储器和通信接口通过总线连接并完成相互间的通信,所述存储器用于存储程序代码,其中:
所述处理器,用于调用存储器中的程序代码,用以执行以下操作:
存储数据包至内存中;
通过所述虚拟机上的连接模块发送第二通知信息至主机,以便于所述主机根据所述第二通知信息获得第一通知信息,并发送至网络设备使得所述网络设备根据所述第一通知信息获得所述数据包;其中,所述第二通知信息中包括所述网络设备与所述虚拟机通信的逻辑通道号和数据包的内存地址。
在第一种可能的实现方式中,结合第十二方面,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第二种可能的实现方式中,结合第十二方面,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第十三方面,提供一种数据转发系统,包括:主机、虚拟机和网络设备,其中:
所述主机,用于接收网络设备发送的第一通知信息;其中,所述第一通知信息中包括所述网络设备存储在内存中的数据包的内存地址;根据逻辑通道号与通讯实体的关系映射表获取与所述网络设备通信的虚拟机;其中,所述逻辑通道号是所述网络设备与所述虚拟机通信的逻辑通道号;根据所述第一通知信息获得第二通知信息;其中,所述第二通知信息包括所述逻辑通道号和所述数据包的内存地址;发送所述第二通知信息至所述虚拟机,以便于所述虚拟机根据所述数据包的内存地址获得所述数据包;其中,所述虚拟机是通过所述虚拟机上的连接模块接收所述第二通知信息的;
所述网络设备,用于发送所述数据包至所述主机并将所述数据包存储在内存中;
所述虚拟机,用于通过所述虚拟机上的连接模块接收主机发送的第二通知信息;其中,所述第二通知信息是根据第一通知信息获得的,包括网络设备与所述虚拟机通信的逻辑通道号和数据包的内存地址;所述第一通知信息是所述网络设备发送至所述主机的,包括所述网络设备存储在内存中的所述数据包的内存地址;根据所述数据包的内存地址在内存中获取所述数据包。
在第一种可能的实现方式中,结合第十三方面,
所述主机,还用于解析所述第一通知信息获得所述数据包的内存地址;将所述数据包的内存地址的形式转换为标准形式;根据转换为标准形式的所述数据包的内存地址和所述逻辑通道号获得所述第二通知信息。
在第二种可能的实现方式中,结合第十三方面或第一种可能的实现方式,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第三种可能的实现方式中,结合第十三方面或第一种可能的实现方式,
所述逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
在第四种可能的实现方式中,结合第十三方面或第一种可能的实现方式,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
第十四方面,提供一种数据转发系统,包括:主机、虚拟机和网络设备,其中:
所述虚拟机,用于存储数据包至内存中;通过所述虚拟机上的连接模块发送第二通知信息至主机,以便于所述主机根据所述第二通知信息获得第一通知信息,并发送至网络设备使得所述网络设备根据所述第一通知信息获得所述数据包;其中,所述第二通知信息中包括所述网络设备与所述虚拟机通信的逻辑通道号和数据包的内存地址;
所述主机,用于接收虚拟机发送的第二通知信息;其中,所述第二通知信息包括逻辑通道号和所述虚拟机存储在内存中的数据包的内存地址;所述逻辑通道号为所述虚拟机与网络设备通信的逻辑通道号;所述虚拟机是通过所述虚拟机上的连接模块发送所述第二通知信息的;根据所述逻辑通道号与通讯实体的关系映射表获取与所述虚拟机通信的网络设备;根据所述第二通知信息获得第一通知信息;其中,所述第一通知信息包括所述数据包的内存地址;发送所述第一通知信息至所述网络设备,以便于所述网络设备根据所述数据包的内存地址获得所述数据包;
所述网络设备,用于接收所述主机发送的第一通知信息;根据所述数据包的内存地址获得所述数据包。
在第一种可能的实现方式中,结合第十四方面,
所述主机,还用于解析所述第二通知信息获得所述数据包的内存地址;将所述数据包的内存地址的格式转换为所述网络设备可以识别的格式;根据转换的所述数据包的内存地址获得所述第一通知信息。
在第二种可能的实现方式中,结合第十四方面或第一种可能的实现方式,
所述第二通知信息中的数据包的内存地址以标准形式存在;其中,所述标准形式指的是预先与所述虚拟机约定的格式。
在第三种可能的实现方式中,结合第十四方面或第一种可能的实现方式,
所述逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
在第四种可能的实现方式中,结合第十四方面或第一种可能的实现方式,
所述第一通知信息传输数据的接口根据所述网络设备的不同而不同;
所述第二通知信息传输数据的接口的形式为所述标准形式。
本发明的实施例提供的数据转发方法、装置及系统,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的实施例提供的一种数据转发方法的流程示意图;
图2为本发明的实施例提供的另一种数据转发方法的流程示意图;
图3为本发明的实施例提供的又一种数据转发方法的流程示意图;
图4为本发明的另一实施例提供的一种数据转发方法的流程示意图;
图5为本发明的另一实施例提供的另一种数据转发方法的流程示意图;
图6为本发明的另一实施例提供的又一种数据转发方法的流程示意图;
图7为本发明的实施例提供的一种主机的结构示意图;
图8为本发明的实施例提供的另一种主机的结构示意图;
图9为本发明的实施例提供的一种虚拟机的结构示意图;
图10为本发明的实施例提供的又一种主机的结构示意图;
图11为本发明的另一实施例提供的一种主机的结构示意图;
图12为本发明的实施例提供的另一种虚拟机的结构示意图;
图13为本发明的另一实施例提供的另一种主机的结构示意图;
图14为本发明的实施例提供的又一种虚拟机的结构示意图;
图15为本发明的另一实施例提供的又一种主机的结构示意图;
图16为本发明的另一实施例提供的一种虚拟机的结构示意图;
图17为本发明的实施例提供的一种数据转发系统的结构示意图;
图18为本发明的实施例提供的另一种数据转发系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实施例提供一种数据转发方法,应用于物理机上的硬件向虚拟机上的应用程序发送信息的过程中,参照图1所示,该方法包括以下步骤:
101、主机接收网络设备发送的第一通知信息。
其中,第一通知信息中包括网络设备存储在内存中的数据包的内存地址。
102、主机根据逻辑通道号与通讯实体的关系映射表获取与网络设备通信的虚拟机。
其中,逻辑通道号是网络设备与虚拟机通信的逻辑通道号。
103、主机根据第一通知信息获得第二通知信息。
其中,第二通知信息包括该逻辑通道号和数据包的内存地址。
104、主机发送第二通知信息至虚拟机,以便于该虚拟机根据数据包的内存地址获得数据包。
其中,虚拟机是通过虚拟机上的连接模块接收第二通知信息的。
本发明的实施例提供的数据转发方法,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种数据转发方法,应用于物理机上的硬件向虚拟机上的应用程序发送信息的过程中,参照图2所示,包括以下步骤:
201、虚拟机通过虚拟机上的连接模块接收主机发送的第二通知信息。
其中,所述第二通知信息是根据第一通知信息获得的,包括主机与虚拟机通信的逻辑通道号和数据包的内存地址;第一通知信息是网络设备发送至主机的,包括网络设备存储在内存中的数据包的内存地址。
202、虚拟机根据数据包的内存地址在内存中获取数据包。
本发明的实施例提供的数据转发方法,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种数据转发方法,应用于物理机上的硬件向虚拟机上的应用程序发送信息的过程中,参照图3所示,包括以下步骤:
301、主机接收网络设备发送的第一通知信息。
其中,第一通知信息中包括网络设备存储在内存中的数据包的内存地址。
具体的,网络设备需要发送数据包至虚拟机上的应用程序,则网络设备需要将该数据包存储在内存中,然后发送该数据包的地址至虚拟机,虚拟机根据接收到的地址获得所需的数据包。但是由于不同的网络设备具有各自的地址格式,如果网络设备发生变换时,则对应的虚拟机需要重新识别新的格式,操作起来比较麻烦。因此,本实施例中先将数据包的地址携带在第一通知信息中发送至主机。
该第一通知信息中还可以包括数据包的个数等信息,第一数据包的格式根据网络设备的的不同而不同。其中,网络设备优选的可以为物理网卡。
302、主机根据逻辑通道号与通讯实体的关系映射表获取与网络设备通信的虚拟机。
其中,逻辑通道号是网络设备与虚拟机通信的逻辑通道号。
逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
当网络设备需要与虚拟机上的应用程序通信时,需要预先从主机上获取逻辑通道号,主机允许其通信时,会在自己的逻辑通道号与通讯实体的关系映射表中增加相应的内容,并告知双方一个逻辑通道号。则逻辑通道号与通讯实体的关系映射表会根据互相通信双方的变化而不断的更新。
303、主机解析第一通知信息获得数据包的内存地址。
304、主机将数据包的内存地址的形式转换为标准形式。
305、主机根据转换为标准形式的数据包的内存地址和逻辑通道号获得第二通知信息。
其中,第二通知信息中包括网络设备与虚拟机通信的逻辑通道号和数据包的内存地址。
第二通知信息中的数据包的内存地址以标准形式存在,该标准形式指的是预先与虚拟机约定的格式。
具体的,主机通过主机上的软交换中心将第一通知信息转换为第二通知信息,从而使得虚拟机上的应用程序可以接收任何网络设备发送的数据包,避免耦合问题的产生。
306、主机发送第二通知信息至虚拟机,以便于虚拟机根据数据包的内存地址获得数据包。
具体的,主机是通过主机上的软件换中心发送第二通知信息的。该软交换中心是通过软件来实现的。
307、虚拟机通过虚拟机上的连接模块接收主机发送的第二通知信息。
其中,虚拟机上的连接模块是通过软件的形式实现的。
308、虚拟机根据数据包的内存地址在内存中获取数据包。
第一通知信息传输数据的接口根据网络设备的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
在本实施例中,虚拟机获取的数据包最终会发送至虚拟机上的应用程序,主机上的所有操作都是通过主机上的软交换中心实现的。由于不同的网络设备会产生不同的第一通知信息的格式,因此需要通过主机上运行的软交换中心具有适配功能,适应不同硬件的差异。同时,第二通知信息的格式是预先与虚拟机约定的标准格式,则只要主机将第一通知信息转换为第二通知信息,虚拟机上的应用程序不需要任何的改动就可以处理第二通知信息,而不存在与网络设备耦合的问题。虚拟机可以从一台物理计算机迁移到另一台物理计算机上,不需要对虚拟机中的软件作任何的改动。
本发明的实施例提供的数据转发方法,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例,提供一种数据转发方法,应用于虚拟机上的应用程序向网络设备发送数据包的过程中,参照图4所示,包括以下步骤:
401、主机接收虚拟机发送的第二通知信息。
其中,第二通知信息包括逻辑通道号和虚拟机存储在内存中的数据包的内存地址;逻辑通道号为虚拟机与网络设备通信的逻辑通道号;虚拟机是通过虚拟机上的连接模块发送第二通知信息的。
402、主机根据逻辑通道号与通讯实体的关系映射表获取与虚拟机通信的网络设备。
403、主机根据第二通知信息获得第一通知信息。
其中,第一通知信息包括数据包的内存地址。
404、主机发送第一通知信息至网络设备,以便于网络设备根据数据包的内存地址获得数据包。
本发明的实施例提供的数据转发方法,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例,提供一种数据转发方法,虚拟机上的应用程序向网络设备发送数据包的过程中,参照图5所示,包括以下步骤:
501、虚拟机存储数据包至内存中。
502、虚拟机通过虚拟机上的连接模块发送第二通知信息至主机,以便于主机根据第二通知信息获得第一通知信息,并发送至网络设备使得网络设备根据第一通知信息获得数据包。
其中,第二通知信息中包括网络设备与虚拟机通信的逻辑通道号和数据包的内存地址。
本发明的实施例提供的数据转发方法,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种数据转发方法,虚拟机上的应用程序向网络设备发送数据包的过程中,参照图6所示,包括以下步骤:
601、虚拟机存储数据包至内存中。
602、虚拟机通过虚拟机上的连接模块发送第二通知信息至主机。
其中,第二通知信息包括逻辑通道号和虚拟机存储在内存中的数据包的内存地址;逻辑通道号为虚拟机与网络设备通信的逻辑通道号。
第二通知信息中的数据包的内存地址以标准形式存在;其中,标准形式指的是预先与虚拟机约定的格式。
具体的,虚拟机上的连接模块是通过软件的方式实现的,用于通过主机上的软交换中心与主机进行通信,该软交换中心也是通过软件形式实现的。
603、主机接收虚拟机发送的第二通知信息。
604、主机根据逻辑通道号与通讯实体的关系映射表获取与虚拟机通信的网络设备。
逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
当虚拟机上的应用程序需要与网络设备通信时,需要预先从主机上获取逻辑通道号,主机允许其通信时,会在自己的逻辑通道号与通讯实体的关系映射表中增加相应的内容,并告知双方一个逻辑通道号。则逻辑通道号与通讯实体的关系映射表会根据互相通信双方的变化而不断的更新。
605、主机解析第二通知信息获得数据包的内存地址。
606、主机将数据包的内存地址的形式转换为网络设备可以识别的形式。
607、主机根据转换的数据包的内存地址获得第一通知信息。
其中,第一通知信息包括数据包的内存地址。
具体的,主机通过主机上的软交换中心将第二通知信息转换为第一通知信息,从而使得网络设备可以接收虚拟机上的应用程序发送的数据包,避免耦合问题的产生。不同的网络设备只能识别与自己格式相同的信息。
608、主机发送第一通知信息至网络设备,以便于网络设备根据数据包的内存地址获得数据包。
第一通知信息传输数据的接口根据网络设备的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
在本实施例中虚拟机发送的数据包是由虚拟机上的应用程序提供的,主机上的所有操作都是通过主机上的软件换中心进行的。本实施例中与上述实施例中相同的操作与上述实施例中的解释相同,此处不再赘述。
本发明的实施例提供的数据转发方法,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
当然,上述实施例中的虚拟机上的应用程序与物理设备之间的通信还包括多个虚拟机上的应用程序与多个物理设备通信的情况,具体的操作方法与上述实施例中的一个虚拟机上的应用程序与一个物理设备通信的方法的过程相同,此处不再赘述。
对于上述的实施例,应用本发明中系统,还可以扩展为采用类似的方法进行不同的网络设备之间的通信。此时,只需要网络设备发送第一通知信息至主机,主机需要将第一通知信息转换为另一网络设备可识别的形式的通知信息,发送至另一网络设备。还可以为扩展为虚拟机上不同的应用程序之间的通信:此时,主机不需要进行任何的操作只需要将虚拟机上的应用程序发送的第二通知信息转发至另一应用程序上即可。还可以扩展为不同虚拟机之间的通信。还可以扩展为主机上的应用程序与网络设备之间的通信,此时,主机只需要直接接收网络设备发送的第一通知信息即可,不需要做任何额定操作。还包括:主机上的应用程序之间的通信、主机上的应用程序与虚拟机上的应用程序之间的通信,具体的步骤参照本发明上述实施例中与相应设备相关的步骤操作即可,此处不再一一列出。其中,一个第一通知信息对应多个第二通知信息,一个第二通知信息对应多个第一通知信息,一个第二通知信息对应多个应用程序,一个应用程序可以对应多个第二通知信息。
本发明的实施例提供一种主机7,参照图7所示,该主机包括:接收单元71,获取单元72和发送单元73,其中:
接收单元71,用于接收网络设备发送的第一通知信息。
其中,第一通知信息中包括网络设备存储在内存中的数据包的内存地址。
获取单元72,用于根据逻辑通道号与通讯实体的关系映射表获取与网络设备通信的虚拟机。
其中,逻辑通道号是主机与虚拟机通信的逻辑通道号。
获取单元72,还用于根据接收单元71接收到的第一通知信息获得第二通知信息。
其中,第二通知信息包括逻辑通道号和数据包的内存地址。
发送单元73,用于发送获取单元72获取到的第二通知信息至虚拟机,以便于虚拟机根据数据包的内存地址获得数据包。
其中,虚拟机是通过虚拟机上的软件模块接收第二通知信息的。
本发明的实施例提供的主机,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
具体的,参照图8所示,该获取单元72包括:解析模块721、转换模块722和获取模块723,其中:
解析模块721,用于解析第一通知信息获得数据包的内存地址。
转换模块722,用于将解析模块721获得的数据包的内存地址的形式转换为标准形式。
获取模块723,用于根据转换模块722转换为标准形式的数据包的内存地址和逻辑通道号获得第二通知信息。
第二通知信息中的数据包的内存地址以标准形式存在;其中,标准形式指的是预先与虚拟机约定的格式。
逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
第一通知信息传输数据的接口根据网络设备的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
本发明的实施例提供的主机,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种虚拟机8,参照图9所示,该虚拟机包括:接收单元81和获取单元82,其中:
接收单元81,用于通过虚拟机上的软件模块接收主机发送的第二通知信息。
其中,第二通知信息是根据第一通知信息获得的,包括主机与虚拟机通信的逻辑通道号和数据包的内存地址;第一通知信息是网络设备发送至主机的,包括网络设备存储在内存中的数据包的内存地址。
获取单元82,用于根据接收单元81接收到的数据包的内存地址在内存中获取数据包。
第二通知信息中的数据包的内存地址以标准形式存在;其中,标准形式指的是预先与虚拟机约定的格式。
第一通知信息传输数据的接口根据网络设备的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
本发明的实施例提供的虚拟机,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种主机9,参照图10所示,包括:接收单元91、获取单元92和发送单元93,其中:
接收单元91,用于接收虚拟机发送的第二通知信息。
其中,第二通知信息包括逻辑通道号和虚拟机存储在内存中的数据包的内存地址;逻辑通道号为虚拟机与网络设备通信的逻辑通道号;虚拟机是通过虚拟机上的连接模块发送第二通知信息的。
获取单元92,用于根据逻辑通道号与通讯实体的关系映射表获取与虚拟机通信的网络设备。
获取单元92,还用于根据接收单元91接收到的第二通知信息获得第一通知信息。
其中,第一通知信息包括数据包的内存地址。
发送单元93,用于发送第一通知信息至获取单元92获取的网络设备,以便于网络设备根据数据包的内存地址获得数据包。
进一步,参照图11所示,该获取单元92包括:解析模块921、转换模块922和获取模块923,其中:
解析模块921,用于解析第二通知信息获得数据包的内存地址。
转换模块922,用于将解析模块921得到的数据报的内存地址的形式转换为网络设备可以识别的形式。
获取模块923,用于根据转换模块922转换的数据包的内存地址获得第一通知信息。
第二通知信息中的数据包的内存地址以标准形式存在;其中,标准形式指的是预先与虚拟机约定的格式。
逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
第一通知信息传输数据的接口根据网络设备的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
本发明的实施例提供的主机,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种虚拟机10,参照图12所示,包括:处理单元1001和发送单元1002,其中:
处理单元1001,用于存储数据包至内存中。
发送单元1002,用于通过虚拟机上的连接模块发送第二通知信息至主机,以便于主机根据第二通知信息获得第一通知信息,并发送至网络设备使得网络设备根据第一通知信息获得数据包。
其中,第二通知信息中包括网络设备与虚拟机通信的逻辑通道号和数据包的内存地址。
第二通知信息中的数据包的内存地址以标准形式存在;其中,标准形式指的是预先与虚拟机约定的格式。
第一通知信息传输数据的接口根据网络设备的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
本发明的实施例提供的虚拟机,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种主机11,参照图13所示,包括:至少一个处理器1101、存储器1102、通信接口1103和总线1104,至少一个处理器1101、存储器1102和通信接口1103通过总线1104连接并完成相互间的通信,存储器1102用于存储程序代码,其中:
该总线1104可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component Interconnect,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。该总线1104可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中:
存储器1102用于存储程序代码,该程序代码包括操作指令。存储器1102可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1101可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
通信接口1103,主要用于实现本实施例中的装置之间的通信。
处理器1101,还用于调用存储器1102中的程序代码,用以执行以下操作:
接收网络设备发送的第一通知信息。
其中,第一通知信息中包括网络设备存储在内存中的数据包的内存地址。
根据逻辑通道号与通讯实体的关系映射表获取与网络设备通信的虚拟机。其中,该逻辑通道号是主机与虚拟机通信的逻辑通道号。
根据第一通知信息获得第二通知信息。
其中,第二通知信息中包括逻辑通道号和数据包的内存地址。
发送第二通知信息至虚拟机,以便于虚拟机根据数据包的内存地址获得数据包。
其中,虚拟机是通过虚拟机上的软件模块接收第二通知信息的。
处理器1101具体用于执行以下操作:
解析第一通知信息获得数据包的内存地址。
将数据包的内存地址的形式转换为标准形式。
根据转换为标准形式的数据包的内存地址和逻辑通道号获得第二通知信息。
第二通知信息中的数据包的内存地址以标准形式存在;其中,标准形式指的是预先与虚拟机约定的格式。
逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
第一通知信息传输数据的接口根据网络设备的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
本发明的实施例提供的主机,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种虚拟机12,参照图14所示,包括:至少一个处理器1201、存储器1202、通信接口1203和总线1204,至少一个处理器1201、存储器1202和通信接口1203通过总线1204连接并完成相互间的通信,存储器1202用于存储程序代码,其中:
该总线1204可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component Interconnect,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。该总线1204可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中:
存储器1202用于存储程序代码,该程序代码包括操作指令。存储器1202可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1201可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
通信接口1203,主要用于实现本实施例中的装置之间的通信。
处理器1201,还用于调用存储器1202中的程序代码,用以执行以下操作:
通过虚拟机上的软件模块接收主机发送的第二通知信息。
其中,第二通知信息是根据第一通知信息获得的,包括主机与虚拟机通信的逻辑通道号和数据包的内存地址;第一通知信息是网络设备发送至主机的,包括网络设备存储在内存中的数据包的内存地址。
根据数据包的内存地址在内存中获取数据包。
第二通知信息中的数据包的内存地址以标准形式存在;其中,标准形式指的是预先与虚拟机约定的格式。
第一通知信息传输数据的接口根据网络设备的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
本发明的实施例提供的虚拟机,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种主机13,参照图15所示,包括:至少一个处理器1301、存储器1302、通信接口1303和总线1304,至少一个处理器1301、存储器1302和通信接口1303通过总线1304连接并完成相互间的通信,存储器1302用于存储程序代码,其中:
该总线1304可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component Interconnect,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。该总线1304可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中:
存储器1302用于存储程序代码,该程序代码包括操作指令。存储器1302可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1301可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
通信接口1303,主要用于实现本实施例中的装置之间的通信。
处理器1301,还用于调用存储器1302中的程序代码,用以执行以下操作:
接收虚拟机发送的第二通知信息。
其中,第二通知信息包括逻辑通道号和虚拟机存储在内存中的数据包的内存地址;逻辑通道号为虚拟机与网络设备通信的逻辑通道号;虚拟机是通过虚拟机上的连接模块发送第二通知信息的。
根据逻辑通道号与通讯实体的关系映射表获取与虚拟机通信的网络设备。
根据第二通知信息获得第一通知信息。
其中,第一通知信息包括数据包的内存地址。
发送第一通知信息至网络设备,以便于网络设备根据数据包的内存地址获得数据包。
进一步,处理器1301具体用于执行以下步骤:
解析第二通知信息获得数据包的内存地址。
将数据报的内存地址的形式转换为网络设备可以识别的形式。
根据转换的数据包的内存地址获得第一通知信息。
具体的,第二通知信息中的数据包的内存地址以标准形式存在。其中,标准形式指的是预先与虚拟机约定的格式。
逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
第一通知信息传输数据的接口根据网络设备的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
本发明的实施例提供的主机,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种虚拟机14,参照图16所示,包括:至少一个处理器1401、存储器1402、通信接口1403和总线1404,至少一个处理器1401、存储器1402和通信接口1403通过总线1404连接并完成相互间的通信,存储器1402用于存储程序代码,其中:
该总线1404可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component Interconnect,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。该总线1404可以分为地址总线、数据总线、控制总线等。为便于表示,图16中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中:
存储器1402用于存储程序代码,该程序代码包括操作指令。存储器1302可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1401可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
通信接口1403,主要用于实现本实施例中的装置之间的通信。
处理器1401,还用于调用存储器1402中的程序代码,用以执行以下操作:
存储数据包至内存中。
通过虚拟机上的连接模块发送第二通知信息至主机,以便于主机根据第二通知信息获得第一通知信息,并发送至网络设备使得网络设备根据第一通知信息获得数据包。
其中,第二通知信息中包括网络设备与虚拟机通信的逻辑通道号和数据包的内存地址。
第二通知信息中的数据包的内存地址以标准形式存在。
其中,标准形式指的是预先与虚拟机约定的格式。
第一通知信息传输数据的接口根据网络设备的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
本发明的实施例提供的虚拟机,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种数据转发系统,参照图17所示,包括:主机a、虚拟机b和网络设备c,其中:
网络设备c,用于发送第一通知信息至主机a并存储数据在内存中。
主机a,用于接收网络设备c发送的第一通知信息;其中,第一通知信息中包括网络设备c存储在内存中的数据包的内存地址;根据逻辑通道号与通讯实体的关系映射表获取与网络设备通信的虚拟机b;其中,逻辑通道号是网络设备c与虚拟机b通信的逻辑通道号;根据第一通知信息获得第二通知信息;其中,第二通知信息包括逻辑通道号和数据包的内存地址;发送第二通知信息至虚拟机b,以便于虚拟机b根据数据包的内存地址获得数据包;其中,虚拟机b是通过虚拟机b上的连接模块接收第二通知信息的。
虚拟机b,用于通过所述虚拟机上的连接模块接收主机发送的第二通知信息;其中,所述第二通知信息是根据第一通知信息获得的,包括网络设备与所述虚拟机通信的逻辑通道号和数据包的内存地址;所述第一通知信息是所述网络设备发送至所述主机的,包括所述网络设备存储在内存中的所述数据包的内存地址;根据所述数据包的内存地址在内存中获取所述数据包。
具体的,主机a,还用于解析第一通知信息获得数据包的内存地址;将数据包的内存地址的形式转换为标准形式;根据转换为标准形式的数据包的内存地址和逻辑通道号获得第二通知信息。
第二通知信息中的数据包的内存地址以标准形式存在;其中,标准形式指的是预先与虚拟机b约定的格式。
逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
第一通知信息传输数据的接口根据网络设备的不同而不同.
第二通知信息传输数据的接口的形式为标准形式。
本发明的实施例提供的数据转发系统,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
本发明的实施例提供一种数据转发系统,参照图18所示,包括:主机d、虚拟机e和网络设备f,其中:
虚拟机e,用于存储数据包至内存中;通过虚拟机e上的连接模块发送第二通知信息至主机d,以便于主机d根据第二通知信息获得第一通知信息,并发送至网络设备f使得网络设备f根据第一通知信息获得数据包;其中,第二通知信息中包括网络设备f与虚拟机e通信的逻辑通道号和数据包的内存地址。
主机d,用于接收虚拟机e发送的第二通知信息;其中,第二通知信息包括逻辑通道号和虚拟机e存储在内存中的数据包的内存地址;逻辑通道号为虚拟机与网络设备通信的逻辑通道号;虚拟机e是通过虚拟机e上的连接模块发送第二通知信息的;根据逻辑通道号与通讯实体的关系映射表获取与虚拟机通信的网络设备;根据第二通知信息获得第一通知信息;其中,第一通知信息包括数据包的内存地址;发送第一通知信息至网络设备f,以便于网络设备f根据数据包的内存地址获得数据包。
网络设备f,用于接收主机d发送的第一通知信息;根据第一通知信息中的数据包的内存地址获取数据包。
具体的,主机d,还用于解析第二通知信息获得数据包的内存地址;将数据包的内存地址的格式转换为网络设备可以识别的格式;根据转换的数据包的内存地址获得第一通知信息。
第二通知信息中的数据包的内存地址以标准形式存在;其中,标准形式指的是预先与虚拟机e约定的格式。
逻辑通道号与通讯实体的关系映射表可以根据通讯实体的变化进行实时更新。
第一通知信息传输数据的接口根据网络设备f的不同而不同。
第二通知信息传输数据的接口的形式为标准形式。
本发明的实施例提供的数据转发系统,通过将网络设备发送的信息的内存地址的形式转换为标准形式,并将该标准形式的信息的内存地址发送至虚拟机上的应用程序,解决了虚拟机中的应用程序与物理机通信时损耗大问题,同时提高了工作效率,操作方便。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。因此,本发明的保护范围应以所述权利要求的保护范围为准。