一种发送和接收报文的方法和设备与流程

文档序号:13882507阅读:400来源:国知局
一种发送和接收报文的方法和设备与流程

本申请涉及计算机领域,尤其涉及一种发送报文的技术。



背景技术:

随着云计算地不断发展,在多租户云计算环境中,用户需要一个隔离的网络环境,这包括独立的地址空间,虚拟网络间网络流量的完全隔离,独立的服务质量(qualityofservice,qos)保障。在云计算环境中,现有技术采用虚拟可扩展局域网(virtualextensiblelan,vxlan)等隧道封装协议来实现租户间虚拟网络的隔离,但是由于该隧道封装协议,例如vxlan协议一方面引入了额外的50个字节来帮助实现报文的转发,这样降低了带宽的实际利用率;另一方面vxlan协议依赖互联网协议(internetprotocol,ip)地址的组播/广播帮助实现地址解析协议(addressresolutionprotocol,arp)寻址,但在互联网数据中心(internetdatacenter,idc)的数据中心里,由于支持的组播/广播是以点多多点的形式进行数据的传输,使得在idc的数据中心的上行端口难以进行数据流量控制,有可能带来潜在的网络拥塞风险。

现有技术中,一方面在网络转发流程中,vxlan封装对用户来说是透明的,用户发出的数据报文大小通常为网卡的最大传输单元(maximumtransmissionunit,mtu),在加上vxlan封装后,使得vxlan报文的报头总长度的比例上升,导致降低了网络带宽的实际利用率;又由于网卡的mtu为三层数据包中的ip报文的最大长度,当ip报文长度超过了mtu,则会将ip报文进行切割,导致ip分片,即将三层数据包分为两个数据包进行发送,在接收端若网络异常或者解封装误操作等也有可能造成丢包的现象,同时若接收端发现多个分片中有任何一个分片丢包的话,会要求发送端重传全部分片,导致重传率上升,因此降低数据报文中的报头长度所占的比例成为业界主要研究的课题,图1给出了含有内层二层报头的标准vxlan报文格式。

另一方面,在标准vxlan的虚拟网络中,虚拟机(virtualmachine,vm)地址学习是通过ip组播/广播实现的(rfc7348)。当vm发出arp请求后,vxlan协议中的虚拟可扩展局域网隧道端口(vxlantunnelendpoint,vtep)会根据vm对应的虚拟网络标识(virtualnetworkidentifier,vni),找到其对应的多播组,并将arp请求通过多播(例如组播/广播)发出,其中,多播组与vni的映射关系是通过控制层预先下发的。由于idc环境通常禁用ip多播,这是因为多播流量难以进行流量控制,一但流量过大容易导致整个数据中心严重网络拥塞;又由于随着网络规模的增加,依赖多播进行arp寻址的资源开销也会显著提高,增加网络的负载,使得这种实现方式在公有云计算环境中存在安全性和可扩展性的瓶颈。

因此,现有技术中采用标准的vxlan报文格式进行数据报文的转发,导致额外的报头长度的开销,降低了带宽利用率,带来了额外的成本。



技术实现要素:

本申请的目的是提供一种发送和接收报文的方法和设备,以解决现有技术中采用标准的vxlan报文格式进行数据报文的转发,导致的额外报头长度的开销,降低了带宽利用率,带来了额外的成本的问题。

根据本申请的一个方面,提供了一种发送报文的方法,包括:

从源虚拟机接收待发送的互联网协议报文,所述互联网协议报文包括目标虚拟机的互联网协议地址;

基于所述互联网协议报文生成虚拟可扩展局域网虚拟可扩展局域网报文,根据预设的地址表将所述虚拟可扩展局域网报文发送至所述目标虚拟机对应的交换机。

进一步地,所述从源虚拟机接收待发送至目标虚拟机的互联网协议报文之前,还包括:

接收所述源虚拟机发送的对应于所述待发送的互联网协议报文的地址解析协议请求;

基于所述地址解析协议请求向所述源虚拟机发送地址解析协议应答信息,其中,所述地址解析协议应答信息包括假媒体访问控制地址。

进一步地,所述从源虚拟机接收待发送至目标虚拟机的互联网协议报文,包括:

接收所述源虚拟机基于所述地址解析协议应答信息发送的互联网协议报文,其中,所述互联网协议报文包括所述假媒体访问控制地址。

进一步地,基于所述互联网协议报文生成虚拟可扩展局域网报文,根据预设的地址表将所述虚拟可扩展局域网报文发送至目标虚拟机对应的交换机,包括:

获取所述地址表,所述地址表记录有目标虚拟机的ip地址与其宿主机的ip地址的映射关系;

从所述地址表中查找所述目标虚拟机的互联网协议地址对应的宿主机的互联网协议地址,基于所述互联网协议报文和宿主机的互联网协议地址生成虚拟可扩展局域网报文;

将所述虚拟可扩展局域网报文发送至目标虚拟机对应的交换机,所述目标虚拟机及其对应的交换机位于同一宿主机上。

进一步地,从所述地址表中查找所述目标虚拟机的互联网协议地址对应的宿主机的互联网协议地址,包括:

若从所述地址表中未查找到对应的宿主机的互联网协议地址;

则发送查询对应的宿主机的互联网协议地址的学习报文;

获取根据所述学习报文返回的对应的宿主机的互联网协议地址,并将获取到的对应的宿主机的互联网协议地址添加入所述地址表中。

根据本申请的另一个方面,提供了一种接收报文的方法,包括:

接收虚拟可扩展局域网报文;

对所述虚拟可扩展局域网报文解封装得到互联网协议报文,根据预设的邻居表将所述互联网协议报文发送至对应的目标虚拟机,所述互联网协议报文包括目标虚拟机的互联网协议地址,所述邻居表记录有目标虚拟机的互联网协议地址与其目的媒体访问控制地址的映射关系。

进一步地,对所述虚拟可扩展局域网报文进行解封装得到互联网协议报文,根据预设的邻居表将所述互联网协议报文发送至对应的目标虚拟机,包括:

对所述虚拟可扩展局域网报文进行解封装,以获取互联网协议报文;

获取邻居表,从所述邻居表中查找所述目标虚拟机的互联网协议地址对应的目的媒体访问控制地址;

将所述目的媒体访问控制地址加入所述互联网协议报文,将所述互联网协议报文发送到目标虚拟机。

进一步地,对所述虚拟可扩展局域网报文进行解封装,以获取互联网协议报文中,所述互联网协议报文还包括所述目标虚拟机的互联网协议地址的假媒体访问控制地址;

将所述目的媒体访问控制地址加入所述互联网协议报文,将所述互联网协议报文发送到目标虚拟机,包括:

将所述目的媒体访问控制地址替换所述假媒体访问控制地址。

进一步地,从所述邻居表中查找所述目标虚拟机的互联网协议地址对应的目的媒体访问控制地址,包括:

若从所述邻居表中未查找到对应的目的媒体访问控制地址,

则发送查询对应的目的媒体访问控制地址的学习报文;

获取根据所述学习报文返回的对应的目的媒体访问控制地址,并将获取到的对应的目的媒体访问控制地址添加入所述邻居表中。

根据本申请的另一个方面,提供了一种发送报文的设备,其中,所述设备包括:

接收装置,用于从源虚拟机接收待发送的互联网协议报文,所述互联网协议报文包括目标虚拟机的互联网协议地址;

发送装置,用于基于所述互联网协议报文生成虚拟可扩展局域网报文,根据预设的地址表将所述虚拟可扩展局域网报文发送至所述目标虚拟机对应的交换机。

进一步地,所述设备还包括:

请求应答装置,用于接收所述源虚拟机发送的对应于所述待发送的互联网协议报文的地址解析协议请求;

基于所述地址解析协议请求向所述源虚拟机发送地址解析协议应答信息,其中,所述地址解析协议应答信息包括假媒体访问控制地址。

进一步地,所述接收装置用于:

接收所述源虚拟机基于所述地址解析协议应答信息发送的互联网协议报文,其中,所述互联网协议报文包括所述假媒体访问控制地址。

进一步地,所述发送装置包括:

获取单元,用于获取所述地址表,所述地址表记录有目标虚拟机的互联网协议地址与其宿主机的互联网协议地址的映射关系;

查找生成单元,用于从所述地址表中查找所述目标虚拟机的互联网协议地址对应的宿主机的互联网协议地址,基于所述互联网协议报文和宿主机的互联网协议地址生成虚拟可扩展局域网报文,所述目标虚拟机及其对应的交换机位于同一宿主机上;

发送单元,用于将所述虚拟可扩展局域网报文发送至目标虚拟机对应的交换机。

进一步地,所述查找生成单元用于:

若从所述地址表中未查找到对应的宿主机的互联网协议地址;

则发送查询对应的宿主机的互联网协议地址的学习报文;

获取根据所述学习报文返回的对应的宿主机的互联网协议地址,并将获取到的对应的宿主机的互联网协议地址添加入所述地址表中。

根据本申请的另一个方面,提供了一种接收报文的设备,其中,所述设备包括:

报文接收装置,用于接收虚拟可扩展局域网报文;

报文发送装置,用于对所述虚拟可扩展局域网报文解封装得到互联网协议报文,根据预设的邻居表将所述互联网协议报文发送至对应的目标虚拟机,所述互联网协议报文包括目标虚拟机的互联网协议地址,所述邻居表记录有目标虚拟机的互联网协议地址与其目的媒体访问控制地址的映射关系。

进一步地,所述报文发送装置包括:

解封装单元,用于对所述虚拟可扩展局域网报文进行解封装,以获取互联网协议报文;

查找单元,用于获取邻居表,从所述邻居表中查找所述目标虚拟机的互联网协议地址对应的目的媒体访问控制地址;

报文发送单元,用于将所述目的媒体访问控制地址加入所述互联网协议报文,将所述互联网协议报文发送到目标虚拟机。

进一步地,所述解封装单元中的所述互联网协议报文还包括所述目标虚拟机的互联网协议地址的假媒体访问控制地址;

所述报文发送单元用于:

将所述目的媒体访问控制地址替换所述假媒体访问控制地址。

进一步地,所述查找单元用于:

若从所述邻居表中未查找到对应的目的媒体访问控制地址,

则发送查询对应的目的媒体访问控制地址的学习报文;

获取根据所述学习报文返回的对应的目的媒体访问控制地址,并将获取到的对应的目的媒体访问控制地址添加入所述邻居表中。

根据本申请的另一个方面还提供了一种包括一个或多个计算机可读存储介质的计算机程序产品,所述计算机可读存储介质上具有计算机可执行指令,所述计算机可执行指令构造成在被中间计算系统的一个或多个处理器执行时,使所述中间计算系统执行一种发送报文的方法,所述方法包括:

从源虚拟机接收待发送的ip报文,所述ip报文包括目标虚拟机的ip地址;

基于所述ip报文生成vxlan报文,根据预设的地址表将所述vxlan报文发送至所述目标虚拟机对应交换机。

根据本申请的另一个方面还提供了一种包括一个或多个计算机可读存储介质的计算机程序产品,所述计算机可读存储介质上具有计算机可执行指令,所述计算机可执行指令构造成在被中间计算系统的一个或多个处理器执行时,使所述中间计算系统执行一种接收报文的方法,所述方法包括:

接收vxlan报文;

对所述vxlan报文解封装得到ip报文,根据预设的邻居表将所述ip报文发送至对应的目标虚拟机,所述ip报文包括目标虚拟机的ip地址,所述邻居表记录有目标虚拟机的ip地址与其目的mac地址的映射关系。

与现有技术相比,本申请提供了一种发送报文的方法和设备,首先从源虚拟机接收待发送的互联网协议报文,接着,将所述互联网协议报文中的目的媒体访问控制地址去掉,以生成虚拟可扩展局域网报文,最后,根据预设的记录有目标虚拟机的互联网协议地址与其宿主机的互联网协议地址的映射关系的地址表,将所述虚拟可扩展局域网报文,发送至目标虚拟机对应的交换机,不仅解决了媒体访问控制地址学习问题,同时采用了去掉冗余媒体访问控制地址的虚拟可扩展局域网报文,并完全基于目标虚拟机的互联网协议地址进行报文的转发,有效地提高了带宽利用率,同时具有较好的可扩展性。

进一步地,在从源虚拟机接收待发送的互联网协议报文之前,还包括:接收来自所述源虚拟机发送的询问目标虚拟机的媒体访问控制地址的地址解析协议请求,为了避免现有技术中的依赖多播进行地址解析协议寻址,本申请采用基于目标虚拟机的互联网协议地址进行地址解析协议寻址,故基于所述地址解析协议请求,向所述源虚拟机发送地址解析协议应答信息,所述地址解析协议应答信息包含有所述目标虚拟机的互联网协议地址对应的假媒体访问控制地址,使得地址解析协议请求终结在虚拟交换机内部,避免了网络规模较大时带来的组播/广播的资源开销,从而达到提高网络可扩展性与稳定性的目的。

进一步地,本申请的另一个方面提供了一种接收报文的方法和设备,通过接收所述虚拟可扩展局域网报文,并对所述虚拟可扩展局域网报文解封装,得到互联网协议报文,根据预设的记录有目标虚拟机的互联网协议地址与其目的媒体访问控制地址的映射关系的邻居表,将目标虚拟机的互联网协议地址对应的目的媒体访问控制地址写入互联网协议报文中,并基于所述目的媒体访问控制地址将所述互联网协议报文发送至对应的目标虚拟机,使得利用邻居表在目的虚拟交换机的接收端将互联网协议报文补全,并将互联网协议报文完整地发送给目标虚拟机,从而实现了源虚拟机与目标虚拟机之间的互联网协议报文的完整转发。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出现有技术中的标准虚拟可扩展局域网报文格式与本申请实施例中的虚拟可扩展网报文格式之间的对比示意图;

图2示出根据本申请的一个优选实施例中的源虚拟机与源虚拟交换机之间的方法流程交互示意图;

图3示出根据本申请的一个优选实施例中的源虚拟交换机对ip报文的处理方法示意图;

图4示出根据本申请的一个优选实施例中的目的虚拟交换机对vxlan报文的处理流程示意图;

图5示出根据本申请另一个方面的一种用于接收报文的设备的结构示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

根据本申请的一个方面,提供了一种在源交换机端发送报文的方法,该方法实现于源虚拟交换机端,具体包括步骤s201和步骤s202,其中,所述步骤s201,从源虚拟机接收待发送的互联网协议报文,所述互联网协议报文包括目标虚拟机的互联网协议地址和实际内容,其中,所述实际内容是报文中实际要传送的数据信息;所述步骤s202,基于所述互联网协议报文,生成虚拟可扩展局域网(virtualextensiblelan,vxlan)报文,在此,所述vxlan报文是去目的媒体访问控制(mediaaccesscontrol,mac)地址的vxlan报文;接着,根据预设的地址表将所述vxlan报文发送至目标虚拟机对应的交换机,所述地址表记录有目标虚拟机的互联网协议地址与其宿主机的互联网协议地址的映射关系,所述目标虚拟机及其交换机位于同一宿主机上。

在本申请的下述实施例中,以同属于某个虚拟网络的两台虚拟机之间的通信场景为例,对源虚拟机对应的源虚拟交换机与目标虚拟机对应的交换机之间的报文的转发过程进行说明。

在所述步骤s201从源虚拟机接收待发送的互联网协议(internetprotocol,ip)报文之前,还包括步骤s203,其中,所述步骤s203,接收所述源虚拟机发送的对应于所述待发送的ip报文的地址解析协议请求;基于所述地址解析协议(addressresolutionprotocol,arp)请求向所述源虚拟机发送arp应答信息。

在所述步骤s203中,所述arp应答信息包括假mac地址,其中,所述假mac地址为目标虚拟机的ip地址的无效的mac地址,即非真实的mac地址。

例如,图2示出本申请实施例中的源虚拟机与源虚拟交换机之间的方法流程示意图。当用户的源虚拟机(virtualmachine,vm1)要访问同虚拟网络的目标虚拟机vm2时,其中,源虚拟机vm1的互联网协议地址(ip地址)为:192.168.0.1,目标虚拟机的ip地址为:192.168.0.2,首先源虚拟交换机vswitch1会接收来自源虚拟机vm1发送的用于询问目标虚拟机vm2的媒体访问控制(mediaaccesscontrol,mac)地址的地址解析协议(addressresolutionprotocol,arp)请求。为了避免现有技术中的依赖多播进行arp寻址,本申请不需要采用目标虚拟机vm2的mac地址来进行寻址,因此对于询问目标虚拟机vm2的ip:192.168.0.2的arp请求,源虚拟交换机vswitch1直接回复一个含有目标虚拟机vm2的假mac地址:ef:ff:ff:ff:ff:ff的arp应答信息,如图2中邻居表中的假mac地址所示,使得arp请求终结在源虚拟交换机vswitch1内部,避免了在网络规模较大的分布式系统中通过组播/广播将arp请求发出带来的资源开销,从而达到提高网络可扩展性与稳定性的目的,且更加高效。

在所述步骤s203中当源虚拟交换机vswitch1向源虚拟机vm1发送arp应答信息后,所述源虚拟交换机vswitch1接收所述源虚拟机vm1基于所述arp应答信息发送的ip报文,所述ip报文包括所述目标虚拟机vm2的假mac地址。

在此,所述ip报文不仅包括目标虚拟机vm2的ip地址及其对应的假mac地址和实际内容,还包括源虚拟机vm1的ip地址及其对应的真实的mac地址,其中,所述实际内容包括用于指示源虚拟机向目标虚拟机发送的通信数据包。

图3示出本申请的实施例中的源虚拟交换机对ip报文的处理方法示意图,在所述步骤s201中,当接收到所述源虚拟机vm1基于arp应答信息发送的ip报文后,在所述步骤s202中包括3个子步骤:

步骤s2021,获取所述地址表,所述地址表记录有目标虚拟机的ip地址与其宿主机的ip地址的映射关系。源虚拟交换机vswitch1根据ip报文中的目标虚拟机的ip地址,查找用于指示所述目标虚拟机的ip地址所在的路径的路由表,根据路由表匹配到同虚拟网络中的该子网的路由,以获取记录有目标虚拟机的ip地址与其宿主机的ip地址的映射关系的地址表。

步骤s2022,从所述地址表中查找所述目标虚拟机的ip地址对应的宿主机的ip地址,基于所述ip报文和宿主机的ip地址生成vxlan报文。通过目标虚拟机的ip地址查找地址表中对应的宿主机ip地址,并将ip报文中的目的mac地址以及源虚拟机的mac地址去掉,然后将去mac地址的ip报文和宿主机的ip地址进行vxlan封装,以得到vxlan报文,从而减少vxlan报文中的报头长度,有效地提高了带宽利用率。

步骤s2023,将所述vxlan报文发送至目标虚拟机对应的交换机,所述目标虚拟机及其对应的交换机位于同一宿主机上。将所述vxlan报文通过用户数据报协议(eserdatagramprotocol,udp)套接字发送至物理网络,从而通过所述物理网络使所述vxlan报文发送至所述目标虚拟机的ip地址对应的宿主机中的交换机。

进一步地,所述步骤s2022中的从所述地址表中查找所述目标虚拟机的ip地址对应的宿主机的ip地址,包括:

若从所述地址表中未查找到对应的宿主机的ip地址;

则发送查询对应的宿主机的ip地址的学习报文;

获取根据所述学习报文返回的对应的宿主机的ip地址,并将获取到的对应的宿主机的ip地址添加入所述地址表中。

在所述步骤s2022中,若所述目标虚拟机的ip地址没有记录在源虚拟交换机中的地址表中,则在本申请的一个优选实施例中选择借鉴软件定义网络(softwaredefinednetwork,sdn)的思路实现与生成地址表。当然,其他现有的或今后可能出现的实现与生成所述地址表的思路如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在本申请的一个优选实施例中,所述源虚拟交换机vswitch1中的地址表的获取既可以通过sdn控制平面的主动下发以获取整网中的地址表,亦可以通过所述sdn控制平面进行学习。其中,通过所述sdn控制平面进行学习包括:当源虚拟机vm1发出的ip报文中的目标虚拟机的ip地址没有记录在源虚拟交换机vswitch1的地址表内,则所述源虚拟交换机vswitch1会向所述sdn控制平面发送查找所述对应的宿主机的ip地址的学习报文,以从所述sdn控制平面获取根据所述学习报文返回的所述对应的宿主机的ip地址,并将获取到的所述对应的宿主机的ip地址封装进所述vxlan报文中,同时将所述目标虚拟机的ip地址及其对应的宿主机ip地址的映射关系添加入所述地址表中,使得不仅获取了所述对应的宿主机的ip地址,也达到了更新所述地址表的目的。

当源虚拟交换机vswitch1发出的所述vxlan报文通过物理网络到达所述对应的宿主机的ip地址对应的宿主机时,所述宿主机的ip地址对应的宿主机中的所述目的虚拟交换机vswitch2对所述vxlan报文进行以下两步操作。根据本申请另一个方面的一种在交换机端接收报文的方法,该方法包括以下两个步骤:

步骤s601,接收所述vxlan报文;

步骤s602,对所述vxlan报文解封装得到ip报文,根据预设的邻居表将所述ip报文发送至对应的目标虚拟机,所述ip报文包括目标虚拟机的ip地址和实际内容,所述邻居表记录有目标虚拟机的ip地址与其目的mac地址的映射关系。

在所述步骤s602中,目的虚拟交换机vswitch2对所述vxlan报文进行解封装,以得到ip报文,该ip报文包括目标虚拟机的ip地址和实际内容,所述实际内容包括用于指示源虚拟机向目标虚拟机发送的通信数据包;接着根据记录有目标虚拟机的ip地址与其目的mac地址的映射关系的邻居表,将目标虚拟机的ip地址对应的目的mac地址写入ip报文中,并基于该目的mac地址将ip报文发送给目标虚拟机vm2,使得利用预设的邻居表在目的虚拟交换机vswitch2中将ip报文中的所述目标虚拟机的ip地址对应的mac地址补全,并将补全的ip报文完整地发送给目标虚拟机vm2。

进一步地,在所述步骤s602中,所述目的虚拟交换机vswitch2对接收到的所述vxlan报文进行解封装后得到ip报文,并在ip报文中添加入所述目标虚拟机的ip地址对应的mac地址,并发送给对应的目标虚拟机,如图4所示,图4示出本申请的目的虚拟交换机对vxlan报文的处理流程示意图,在此步骤s602包括以下三个子步骤:

步骤s6021,对所述vxlan报文进行解封装,以获取ip报文。对所述vxlan报文进行解封装以的到ip报文,由于所述vxlan报文中已经去掉了目的mac地址,为了将目标虚拟机vm2的ip地址对应的已去掉的目的mac地址添加进没有目的mac地址的所述ip报文中,以待基于目的mac地址将所述ip报文完整的发送给对应的目标虚拟机vm2,则进行步骤s6022。

步骤s6022,获取邻居表,从所述邻居表中查找所述目标虚拟机的ip地址对应的目的mac地址。为了获取所述目标虚拟机vm2的ip地址对应的目的mac地址,从记录有目标虚拟机的ip地址与其目的mac地址的映射关系的邻居表中,查找所述目标虚拟机的ip地址对应的目的mac地址,以补全所述ip报文中的目标虚拟机的ip地址对应的目的mac地址。

步骤s6023,将所述目的mac地址加入所述ip报文,将所述ip报文发送到目标虚拟机。由于所述ip报文还包括所述目标虚拟机的ip地址对应的假mac地址,则将从邻居表中获取的目的mac地址替换掉所述ip报文中的所述假mac地址,以得到补全后的ip报文,并将补全后的所述ip报文发送给所述目的mac地址对应的目标虚拟机vm2,使得通过邻居表来帮助完成了补全所述ip报文的目的,并实现了所述源虚拟机vm1与所述目标虚拟机vm2之间的报文通信。

进一步地,所述步骤s6022从所述邻居表中查找所述目标虚拟机的ip地址对应的目的mac地址,包括:

若从所述邻居表中未查找到对应的目的mac地址,

则发送查询对应的目的mac地址的学习报文;

获取根据所述学习报文返回的对应的目的mac地址,并将获取到的对应的目的mac地址添加入所述邻居表中。

在所述步骤s6022中,若所述目标虚拟机的ip地址没有记录在目的虚拟交换机中的邻居表中,则在本申请的一个优选实施例中选择借鉴软件定义网络(softwaredefinednetwork,sdn)的思路实现与生成邻居表。当然,其他现有的或今后可能出现的实现与生成所述邻居表的思路如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在本申请的一个优选实施例中,所述目的虚拟交换机vswitch2中的邻居表的获取既可以通过sdn控制平面的主动下发以获取整网中的邻居表,亦可以通过所述sdn控制平面进行学习。其中,通过所述sdn控制平面进行学习包括:当目的虚拟交换机vswitch2将接收道德所述vxlan报文进行解封装以得到ip报文后,若所述目标虚拟机的ip地址没有记录在目的虚拟交换机vswitch2的邻居表内,则所述目的虚拟交换机vswitch2会向所述sdn控制平面发送查找所述目的mac地址的学习报文,以从所述sdn控制平面获取根据所述学习报文返回的所述对应的目的mac地址,并将获取到的所述对应的目的mac地址替换所述ip报文中的目标虚拟机的ip地址对应的假mac地址,同时将所述目标虚拟机的ip地址及其目的mac地址的映射关系添加入所述邻居表中,使得不仅补全了所述ip报文中的目标虚拟机的ip地址对应的目的mac地址,还达到了更新所述目的虚拟交换机中的邻居表的目的。

基于本申请的另一个方面,还提供了一种在源交换机端发送报文的设备。该设备1包括接收装置801和发送装置802,其中,所述收装置801,用于从源虚拟机接收待发送的ip报文,所述ip报文包括目标虚拟机的ip地址;所述发送装置802,基于所述ip报文生成vxlan报文,根据预设的地址表将所述vxlan报文发送至目标虚拟机对应的交换机。

在此,所述设备1包括但不限于客户设备、网络设备以及客户设备与网络设备通过网络相集成所构成的设备。所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(asic)、可编程门阵列(fpga)、数字处理器(dsp)、嵌入式设备等。所述网络包括但不限于互联网、广域网、城域网、局域网、vpn网络、无线自组织网络(adhoc网络)等。优选地,所述设备1还可以是运行于所述用户设备与网络设备通过网络相集成所构成的设备上的脚本程序。在本申请的一个优选实施例中,将所述设备1优选为源虚拟交换机,当然,本领域技术人员应能理解上述设备1仅为本申请的一个优选实施例,其他现有的或今后可能出现的所述设备1如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

上述各装置之间是持续不断工作的,在此,本领域技术人员应理解“持续”是指上述各装置分别实时地或者按照设定的或实时调整的工作模式要求。

在本申请的下述优选实施例中,以同属于某个虚拟网络的两台虚拟机之间的通信场景为例,对源虚拟机对应的源虚拟交换机与目标虚拟机对应的交换机之间的报文的转发过程进行说明。

在所述收装置801中从源虚拟机接收待发送至目标虚拟机的ip报文之前,所述设备1还包括请求应答装置803,其中,所述请求应答装置803,接收所述源虚拟机发送的对应于所述待发送的ip报文的arp请求;基于所述arp请求向所述源虚拟机发送arp应答信息。

在所述请求应答装置803中,所述arp应答信息包括假mac地址,其中,所述假mac地址为目标虚拟机的ip地址的无效的mac地址,即非真实的mac地址。

例如,当用户的源虚拟机(virtualmachine,vm1)要访问同虚拟网络的目标虚拟机vm2时,其中,源虚拟机vm1的互联网协议地址(ip地址)为:192.168.0.1,目标虚拟机的ip地址为:192.168.0.2,首先源虚拟交换机vswitch1会接收来自源虚拟机vm1发送的用于询问目标虚拟机vm2的媒体访问控制(mediaaccesscontrol,mac)地址的地址解析协议(addressresolutionprotocol,arp)请求,如图2所示。为了避免现有技术中的依赖多播进行arp寻址,本申请不需要采用目标虚拟机vm2的mac地址来进行寻址,因此对于询问目标虚拟机vm2的ip:192.168.0.2的arp请求,源虚拟交换机vswitch1直接回复一个含有目标虚拟机vm2的假mac地址:ef:ff:ff:ff:ff:ff的arp应答信息,如图2中邻居表中的假mac地址所示,使得arp请求终结在源虚拟交换机vswitch1内部,避免了在网络规模较大的分布式系统中通过组播/广播将arp请求发出带来的资源开销,从而达到提高网络可扩展性与稳定性的目的,且更加高效。

当所述请求应答装置803向源虚拟机vm1发送arp应答信息后,所述源虚拟交换机vswitch1中的所述接收装置801接收所述源虚拟机vm1基于所述arp应答信息发送的ip报文,其中,所述ip报文包括所述目标虚拟机vm2的假mac地址。

在此,所述ip报文不仅包括目标虚拟机vm2的ip地址及其对应的假mac地址和实际内容,还包括源虚拟机vm1的ip地址及其对应的真实的mac地址,其中,所述实际内容包括用于指示源虚拟机向目标虚拟机发送的通信数据包。

当在所述接收装置801中接收到所述源虚拟机vm1基于arp应答信息发送的ip报文后,所述发送装置802包括:获取单元(未示出)、查找生成单元(未示出)和发送单元(未示出),用于基于所述ip报文生成vxlan报文,根据预设的地址表将所述vxlan报文发送至目标虚拟机对应的交换机。

其中,所述获取单元(未示出),用于获取所述地址表,所述地址表记录有目标虚拟机的ip地址与其宿主机的ip地址的映射关系。源虚拟交换机vswitch1根据ip报文中的目标虚拟机的ip地址,查找用于指示所述目标虚拟机的ip地址所在的路径的路由表,根据路由表匹配到同虚拟网络中的该子网的路由,以获取记录有目标虚拟机的ip地址与其宿主机的ip地址的映射关系的地址表,如图3所示。

所述查找生成单元(未示出),用于从所述地址表中查找所述目标虚拟机的ip地址对应的宿主机的ip地址,基于所述ip报文和宿主机的ip地址生成vxlan报文。通过目标虚拟机的ip地址查找地址表中对应的宿主机ip地址,并将ip报文中的目的mac地址以及源虚拟机的mac地址去掉,然后将去mac地址的ip报文和宿主机的ip地址进行vxlan封装,以得到vxlan报文,从而减少vxlan报文中的报头长度,有效地提高了带宽利用率,如图3所示。

所述发送单元(未示出),用于将所述vxlan报文发送至目标虚拟机对应的交换机,所述目标虚拟机及其对应的交换机位于同一宿主机上。将所述vxlan报文通过用户数据报协议(eserdatagramprotocol,udp)套接字发送至物理网络,从而通过所述物理网络使所述vxlan报文发送至所述目标虚拟机的ip地址对应的宿主机中的交换机,如图3所示。

进一步地,所述查找生成单元(未示出)用于:

若从所述地址表中未查找到对应的宿主机的ip地址;

则发送查询对应的宿主机的ip地址的学习报文;

获取根据所述学习报文返回的对应的宿主机的ip地址,并将获取到的对应的宿主机的ip地址添加入所述地址表中。

在所述查找生成单元(未示出)中,若所述目标虚拟机的ip地址没有记录在源虚拟交换机中的地址表中,则在本申请的一个优选实施例中选择借鉴软件定义网络(softwaredefinednetwork,sdn)的思路实现与生成地址表。当然,其他现有的或今后可能出现的实现与生成所述地址表的思路如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在本申请的一个优选实施例中,所述源虚拟交换机vswitch1中的地址表的获取既可以通过sdn控制平面的主动下发以获取整网中的地址表,亦可以通过所述sdn控制平面进行学习。其中,通过所述sdn控制平面进行学习包括:当源虚拟机vm1发出的ip报文中的目标虚拟机的ip地址没有记录在源虚拟交换机vswitch1的地址表内,则所述源虚拟交换机vswitch1会向所述sdn控制平面发送查找所述对应的宿主机的ip地址的学习报文,以从所述sdn控制平面获取根据所述学习报文返回的所述对应的宿主机的ip地址,并将获取到的所述对应的宿主机的ip地址封装进所述vxlan报文中,同时将所述目标虚拟机的ip地址及其对应的宿主机ip地址的映射关系添加入所述地址表中,使得不仅获取了所述对应的宿主机的ip地址,也达到了更新所述地址表的目的。

当源虚拟交换机vswitch1发出的所述vxlan报文通过物理网络到达所述对应的宿主机的ip地址对应的宿主机时,所述宿主机的ip地址对应的宿主机中的所述目的虚拟交换机vswitch2的结构如设备1。

图5示出本申请一个方面的一种在交换机端接收报文的设备的结构示意图,该设备2包括报文接收装置101和报文发送装置102,其中,所述报文接收装置101,用于接收所述vxlan报文;所述报文发送装置102,用于对所述vxlan报文解封装得到ip报文,根据预设的邻居表将所述ip报文发送至对应的目标虚拟机,所述ip报文包括目标虚拟机的ip地址,所述邻居表记录有目标虚拟机的ip地址与其目的mac地址的映射关系。

所述报文发送装置102对所述vxlan报文进行解封装,以得到ip报文,该ip报文包括目标虚拟机的ip地址和实际内容,所述实际内容包括用于指示源虚拟机向目标虚拟机发送的通信数据包;接着根据记录有目标虚拟机的ip地址与其目的mac地址的映射关系的邻居表,将目标虚拟机的ip地址对应的目的mac地址写入ip报文中,并基于该目的mac地址将ip报文发送给目标虚拟机vm2,使得利用预设的邻居表在目的虚拟交换机vswitch2中将ip报文中的所述目标虚拟机的ip地址对应的mac地址补全,并将补全的ip报文完整地发送给目标虚拟机vm2。

进一步地,所述报文发送装置102对接收到的所述vxlan报文进行解封装后得到ip报文,并在ip报文中添加入所述目标虚拟机的ip地址对应的mac地址,并发送给对应的目标虚拟机,如图4所示。

进一步地,所述报文发送装置102包括:解封装单元(未示出)、查找单元(未示出)和报文发送单元(未示出);其中,

所述解封装单元(未示出),用于对所述vxlan报文进行解封装,以获取ip报文。对所述vxlan报文进行解封装以的到ip报文,由于所述vxlan报文中已经去掉了目的mac地址,为了将目标虚拟机vm2的ip地址对应的已去掉的目的mac地址添加进没有目的mac地址的所述ip报文中,以待基于目的mac地址将所述ip报文完整的发送给对应的目标虚拟机vm2,如图4所示。

所述查找单元(未示出),用于获取邻居表,从所述邻居表中查找所述目标虚拟机的ip地址对应的目的mac地址。为了获取所述目标虚拟机vm2的ip地址对应的目的mac地址,从记录有目标虚拟机的ip地址与其目的mac地址的映射关系的邻居表中,查找所述目标虚拟机的ip地址对应的目的mac地址,以补全所述ip报文中的目标虚拟机的ip地址对应的目的mac地址。

报文发送单元(未示出),用于将所述目的mac地址加入所述ip报文,将所述ip报文发送到目标虚拟机。由于所述ip报文还包括所述目标虚拟机的ip地址对应的假mac地址,则将从邻居表中获取的目的mac地址替换掉所述ip报文中的假mac地址,以得到补全后的ip报文,并将补全后的所述ip报文发送给所述目的mac地址对应的目标虚拟机vm2,使得通过邻居表来帮助完成了补全所述ip报文的目的,并实现了所述源虚拟机vm1与所述目标虚拟机vm2之间的报文通信,如图4所示。

进一步地,所述查找单元(未示出)用于:

若从所述邻居表中未查找到对应的目的mac地址,

则发送查询对应的目的mac地址的学习报文;

获取根据所述学习报文返回的对应的目的mac地址,并将获取到的对应的目的mac地址添加入所述邻居表中。

在所述查找单元(未示出)中,若所述目标虚拟机的ip地址没有记录在目的虚拟交换机中的邻居表中,则在本申请的一个优选实施例中选择借鉴软件定义网络(softwaredefinednetwork,sdn)的思路实现与生成邻居表。当然,其他现有的或今后可能出现的实现与生成所述邻居表的思路如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在本申请的一个优选实施例中,所述目的虚拟交换机vswitch2中的邻居表的获取既可以通过sdn控制平面的主动下发以获取整网中的邻居表,亦可以通过所述sdn控制平面进行学习。其中,通过所述sdn控制平面进行学习包括:当目的虚拟交换机vswitch2将接收道德所述vxlan报文进行解封装以得到ip报文后,若所述目标虚拟机的ip地址没有记录在目的虚拟交换机vswitch2的邻居表内,则所述目的虚拟交换机vswitch2会向所述sdn控制平面发送查找所述目的mac地址的学习报文,以从所述sdn控制平面获取根据所述学习报文返回的所述对应的目的mac地址,并将获取到的所述对应的目的mac地址替换所述ip报文中的目标虚拟机的ip地址对应的假mac地址,同时将所述目标虚拟机的ip地址及其目的mac地址的映射关系添加入所述邻居表中,使得不仅补全了所述ip报文中的目标虚拟机的ip地址对应的目的mac地址,还达到了更新所述目的虚拟交换机中的邻居表的目的。

在本申请的一个优选应用实施例中,在同属于一个虚拟网络的两台虚拟机之间的业务流量通信场景进行进一步说明,在此优选应用实施例中的业务流量主要是小数据包的场景,采用本方案的报文发送和接收的方法,可以降低控制报文(ip报文)的比例,提高实际带宽使用率。例如,若需要从源虚拟机发送至目标虚拟机的大部分的业务流量中的ip报文的长度为100字节,如果采用传统的vxlan协议封装该ip报文,以得到封装后的vxlan报文的总长度为150字节,在使用本申请的一种发送报文的方法对该ip报文进行去目的mac地址并进行封装,以得到vxlan报文,基于预设的地址表将所述vxlan报文发送至上述的目标虚拟机中,在此所述vxlan报文的总长度为136字节,使得有效地将带宽的实际利用率提升了10%。

与现有技术相比,本申请提供了一种发送报文的方法和设备,首先从源虚拟机接收待发送至目标虚拟机的ip报文,接着将所述ip报文中的目的mac地址去掉以生成vxlan报文,最后根据预设的记录有目标虚拟机的ip地址与其宿主机的ip地址的映射关系的地址表,将所述vxlan报文发送至目标虚拟机对应的交换机,不仅解决了mac地址学习问题,同时采用了去掉冗余mac地址的vxlan报文,并完全基于目标虚拟机的ip地址进行报文的转发,有效地提高了带宽利用率,同时具有较好的可扩展性。

进一步地,在从源虚拟机接收待发送至目标虚拟机的ip报文之前,还包括:接收来自所述源虚拟机发送的询问目标虚拟机的mac地址的arp请求,为了避免现有技术中的依赖多播进行arp寻址,本申请采用基于目标虚拟机的ip地址进行arp寻址,故基于所述arp请求向所述源虚拟机发送包含有所述目标虚拟机的ip地址对应的假mac地址的arp应答信息,使得arp请求终结在虚拟交换机内部,避免了网络规模较大时带来的组播/广播的资源开销,从而达到提高网络可扩展性与稳定性的目的。

进一步地,本申请的另一个方面提供了一种接收报文的方法和设备,通过接收所述vxlan报文,并对所述vxlan报文解封装得到ip报文,根据预设的记录有目标虚拟机的ip地址与其目的mac地址的映射关系的邻居表,将目标虚拟机的ip地址对应的目的mac地址写入ip报文中,并基于所述目的mac地址将所述ip报文发送至对应的目标虚拟机,使得利用邻居表在目的虚拟交换机的接收端将ip报文补全,并将ip报文完整地发送给目标虚拟机,从而实现了源虚拟机与目标虚拟机之间的ip报文的完整转发。

根据本申请的另一个方面还提供了一种包括一个或多个计算机可读存储介质的计算机程序产品,所述计算机可读存储介质上具有计算机可执行指令,所述计算机可执行指令构造成在被中间计算系统的一个或多个处理器执行时,使所述中间计算系统执行一种发送报文的方法,所述方法包括:

从源虚拟机接收待发送的ip报文,所述ip报文包括目标虚拟机的ip地址;

基于所述ip报文生成vxlan报文,根据预设的地址表将所述vxlan报文发送至所述目标虚拟机对应交换机。

根据本申请的另一个方面还提供了一种包括一个或多个计算机可读存储介质的计算机程序产品,所述计算机可读存储介质上具有计算机可执行指令,所述计算机可执行指令构造成在被中间计算系统的一个或多个处理器执行时,使所述中间计算系统执行一种接收报文的方法,所述方法包括:

接收vxlan报文;

对所述vxlan报文解封装得到ip报文,根据预设的邻居表将所述ip报文发送至对应的目标虚拟机,所述ip报文包括目标虚拟机的ip地址,所述邻居表记录有目标虚拟机的ip地址与其目的mac地址的映射关系。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1