虚拟通信方法、系统及设备与流程

文档序号:12809276阅读:215来源:国知局
虚拟通信方法、系统及设备与流程

本发明涉及sdn(softwaredefinednetwork,软件定义网络)领域,特别涉及一种虚拟通信方法、系统及设备。



背景技术:

随着电信运营商的业务发展成本和收入的剪刀差日益显著,谋求解决之道的诉求也越来越迫切,因而nfv(networkfunctionvirtualization,网络功能虚拟化)和sdn目前已然成为了近年来通信行业最热门的新兴领域。nfv技术致力于使用通用性硬件以及虚拟化技术,来承载很多功能的软件处理,从而降低网络昂贵的设备成本,实现新业务的快速开发和部署。sdn技术是一种新型网络创新架构,通过构建一个通用的转发硬件平面和一个开放的控制软件平面,实现软、硬件之间的互操作,从而达到硬件通用化、低成本化和控制灵活化。

然而,一方面更新传统网络设备的过程并非一蹴而就,另一方面技术和标准发展本身也不够成熟,目前在全球范围内的nfv/sdn大规模应用案例并不多。vxlan作为该领域中少数能够快速部署于数据中心和政企网络的技术,受到了众多通信设备厂商和电信运营商的青睐。vxlan是一种将二层报文用三层协议进行封装的技术,可以对二层网络在三层范围进行扩展。vxlan采用24bit的网络标识,使用户可以创建16m相互隔离的虚拟网络,突破了目前广泛采用的vlan所能表示的4k个隔离网络的限制,这使得大规模多租户的云环境中具有了充足的虚拟网络分区资源。

目前vxlan设备的开发尚处于百花齐放的态势,各家开发商在实现流程与网络结构都有所不同。对电信运营商而言,基于流表实现 的vxlan网关带来的直接问题就是流表数量导致的采购成本变化和流表匹配效率导致的网络服务质量变化,这两点是在投用vxlan过程中的重点,同时也是vxlan技术应用的瓶颈。



技术实现要素:

本发明所要解决的一个技术问题是:如何减少vxlan网关的流表数量,以提升存储和匹配效率,减低采购成本。

根据本发明实施例的一个方面,提供了一种虚拟通信方法,包括:第一虚拟可扩展局域网网关vxlangw1接收其下属的第一虚机vm1发往第二虚机vm2的数据包,其中,vxlangw1接收的数据包的源ip为vm1的ip地址,源mac为vm1的mac地址,目的ip为vm2的ip地址,目的mac为vm2所属的vxlangw2的mac地址;vxlangw1根据vxlangw2的mac地址查找第一流表以获取发送端口信息并将数据包转发到vm2所属的第二虚拟可扩展局域网网关vxlangw2,其中,vxlangw1转发的数据包的源ip为vm1的ip地址,源mac被替换为vxlangw1的mac地址,目的ip为vm2的ip地址,目的mac为vm2所属的vxlangw2的mac地址;vxlangw2接收vxlangw1发送的数据包,根据目的ip查找本地映射表确定目的mac为vm2的mac地址,将数据包的目的mac替换为vm2的mac地址并转发给vm2。

根据本发明实施例的另一个方面,提供了一种虚拟通信系统,包括第一虚拟可扩展局域网网关vxlangw1、第二虚拟可扩展局域网网关vxlangw2,其中,vxlangw1用于接收其下属的第一虚机vm1发往第二虚机vm2的数据包,其中,vxlangw1接收的数据包的源ip为vm1的ip地址,源mac为vm1的mac地址,目的ip为vm2的ip地址,目的mac为vm2所属的vxlangw2的mac地址;根据vxlangw2的mac地址查找第一流表以获取发送端口信息并将数据包转发到vm2所属的vxlangw2,其中,vxlangw1转发的数据包的源ip为vm1的ip地址,源mac被替换为 vxlangw1的mac地址,目的ip为vm2的ip地址,目的mac为vm2所属的vxlangw2的mac地址;vxlangw2用于接收vxlangw1发送的数据包,根据目的ip查找本地映射表确定目的mac为vm2的mac地址,将数据包的目的mac替换为vm2的mac地址并转发给vm2。

根据本发明实施例的又一个方面,提供了一种虚拟可扩展局域网网关,所述虚拟可扩展局域网网关为第一虚拟可扩展局域网网关vxlangw1,包括:数据包接收模块,用于接收其下属的第一虚机vm1发往第二虚机vm2的数据包,其中,vxlangw1接收的数据包的源ip为vm1的ip地址,源mac为vm1的mac地址,目的ip为vm2的ip地址,目的mac为vm2所属的vxlangw2的mac地址;数据包转发模块,用于根据vxlangw2的mac地址查找第一流表以获取发送端口信息并将数据包转发到vm2所属的vxlangw2,其中,vxlangw1转发的数据包的源ip为vm1的ip地址,源mac被替换为vxlangw1的mac地址,目的ip为vm2的ip地址,目的mac为vm2所属的vxlangw2的mac地址;数据包接收模块还用于接收vxlangw2发送的回复数据包;映射表查找模块,用于根据目的ip查找本地映射表确定目的mac为vm1的mac地址;mac地址替换模块,用于将回复数据包的目的mac替换为vm1的mac地址;数据包转发模块还用于将恢复数据包转发给vm1。

根据本发明实施例的再一个方面,提供了一种控制器,包括:arp请求接收模块,用于接收vxlangw1转发的来自其下属vm1的地址解析协议arp请求,其中,控制器接收的arp请求的源ip为vm1的ip地址,源mac为vxlangw1的mac地址,目的ip为vm2的ip地址;arp请求广播模块,用于向除vxlangw1以外的各个虚拟可扩展局域网网关vxlangw广播arp请求,除vxlangw1以外的各个vxlangw向其下属的虚机vm转发arp请求;arp应答接收模块,用于接收vxlangw2返回的arp应答,其中,控 制器接收的arp应答的源ip为vxlangw2下属vm2的ip地址,源mac为vxlangw2的mac地址,目的ip为vm1的ip地址;流表建立模块,用于根据arp应答中的源ip和源mac维护虚机的arp状态表,进而建立第一流表。

本发明至少具有以下优点:

本发明通过将数据包中本地虚机mac地址替换成vxlan网关地址,大大减少虚机之间通信的流表数目,优化流表过于庞大的问题,并提升存储和匹配效率,减低采购成本。同时使本地虚机mac不再暴露于互通域,允许不同vxlan网关下虚机mac重叠,方便业务的快速复制部署。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1示出本发明虚拟通信方法一个实施例的流程示意图。

图2示出本发明虚拟通信方法arp流程的一个实施例的流程示意图。

图3示出本发明虚拟通信系统的一个实施例的工作流程示意图。

图4示出本发明虚拟通信系统的一个实施例的arp流程的工作流程示意图。

图5示出本发明虚拟可扩展局域网网关的一个实施例的结构示意图。

图6示出本发明控制器的一个实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1描述本发明一个实施例的虚拟通信方法。

图1示出本发明虚拟通信方法一个实施例的流程示意图。如图1所示,该实施例的方法包括:

步骤s102,第一虚机vm1发送普通ip数据包,第一虚拟可扩展局域网网关vxlangw1接收其所属的第一虚机vm1发往第二虚机vm2的数据包。其中,vxlangw1接收的数据包的源ip为vm1的ip地址,源mac为vm1的mac地址,目的ip为vm2的ip地址,目的mac为vm2所属的vxlangw2的mac地址。

步骤s104,vxlangw1将数据包的源mac地址替换为vxlangw1的mac地址。

步骤s106,此时vxlangw1无法查到相应的流表,并不知晓如何转发这个报文。vxlangw1向控制器发送packet_in处理该报文。

步骤s108,控制器根据arp应答中的源ip和源mac维护虚机的arp状态表,进而根据arp状态表、vxlangw1的物理端口以及vxlangw1与vxlangw2之间的拓扑建立第一流表,进而告知vxlangw1数据包中的目的ip对应的转发目的mac为第二虚拟可扩展局域网网关vxlangw2的mac地址,以便将数据包发向vxlangw2。

步骤s110,vxlangw1对数据包进行vxlan封装,并将数据包发向vm2所属的第二虚拟可扩展局域网网关vxlangw2。其中,vxlangw1转发的数据包的源ip为vm1的ip地址,源mac被替 换为vxlangw1的mac地址,目的ip为vm2的ip地址,目的mac为vm1所属的vxlangw1的mac地址。

步骤s112,vxlangw2对数据包进行解封装,并根据目的ip查找本地映射表确定目的mac为vm2的mac地址,将数据包的目的mac替换为vm2的mac地址。

步骤s114,vxlangw2将数据包转发给vm2。

步骤s116,vm2向vxlangw2回复数据包,vxlangw2接收其下属的vm2发往vm1的回复数据包,其中,vxlangw2接收的回复数据包的源ip为vm2的ip地址,源mac为vm2的mac地址,目的ip为vm1的ip地址,目的mac为vm1所属的vxlangw1的mac地址。

步骤s118,vxlangw2将回复数据包的源mac地址替换为vxlangw2的mac地址。

步骤s120,此时vxlangw2无法查到相应的流表,并不知晓如何转发这个报文。vxlangw2向控制器发送packet_in处理该报文。

步骤s122,控制器根据arp应答中的源ip和源mac维护虚机的arp状态表,进而根据arp状态表、vxlangw2的物理端口以及vxlangw2与vxlangw1之间的拓扑建立第二流表,进而告知vxlangw2回复数据包中的目的ip对应的转发目的mac为第一虚拟可扩展局域网网关vxlangw1的mac地址,以便将数据包发向vxlangw1。

步骤s124,vxlangw2对数据包进行vxlan封装,并将数据包发向vm1所属的vxlangw1。其中,vxlangw2转发的数据包的源ip为vm2的ip地址,源mac被替换为vxlangw2的mac地址,目的ip为vm1的ip地址,目的mac为vm1所属的vxlangw1的mac地址。

步骤s126,vxlangw1对数据包进行解封装,并根据目的ip查找本地映射表确定目的mac为vm1的mac地址,将数据包的目 的mac替换为vm1的mac地址。

步骤s128,vxlangw1将数据包转发给vm1。

至此一个普通的通信流程完成。

上述实施例的方法中,vxlan网关需要维护本地映射表,即,虚机的mac-ip地址-所属vlan的映射关系,具备根据虚机的ip地址和所属vlan查找本地映射表确定虚机的mac,并转发给本地相应的虚机的能力。

上述虚拟通信方法在各个网元之间的信息交互如图3所示,图3中仅示出了图1中信息交互部分的步骤。通过将数据包中本地虚机mac地址替换成vxlan网关地址,减少用于虚机两两通信的流表数目,优化流表过于庞大的问题。同一vxlan网关下的虚机对外通信可以共享同一条流表,节省了流表存储空间,同时显著优化了流表匹配的效率。同时,由于本地虚机mac不再暴露于互通域,因而大大减少流表条数并提升查询效率,同时也允许不同vxlan网关下虚机mac重叠,方便业务的快速复制部署。

下面结合图2描述本发明一个实施例的虚拟通信方法arp流程,以使得控制器能够向vxlangw下发相应的流表。

图2示出本发明虚拟通信方法arp流程的一个实施例的流程示意图。如图2所示,该实施例的方法包括:

步骤s202,vm1向vxlangw1发送arp请求,查询vm2的mac地址。

步骤s204,vxlangw1维护本地的映射表,将arp请求中的源mac地址替换为vxlangw1的mac地址。

步骤s206,vxlangw1向控制器发送packet_in处理arp请求报文。其中,控制器接收的arp请求的源ip为vm1的ip地址,源mac为vxlangw1的mac地址,目的ip为vm2的ip地址。

控制器可以根据arp请求中的源ip和源mac建立第二流表。

如果控制器不能够实现arp代理,则执行以下步骤:

步骤s208,控制器向各个虚拟可扩展局域网网关vxlangw发送packet_out消息以广播arp请求。

步骤s210,各个vxlangw向其下属的虚机vm转发arp请求。这里假设vm2作出了arp应答,其他虚机可以不应答。

步骤s212,vm2向其网关vxlangw2返回的arp应答。

步骤s214,vxlangw2向控制器上送packet_in消息转发arp应答,其中,控制器接收的arp应答的源ip为vxlangw2下属vm2的ip地址,源mac为vxlangw2的mac地址,目的ip为vm1的ip地址。

步骤s216,控制器根据arp应答中的源ip和源mac建立第一流表。至此,控制器能够实现arp代理。

如果控制器能够实现arp代理,则执行以下步骤:

步骤s218,控制器查找vm1的mac地址、ip地址以及所属网关vxlangw1。

步骤s220,控制器将arp应答发送给vxlangw1。

步骤s222,vxlangw1将接收到的arp应答中的目的mac地址修改为vm1的mac地址。

步骤s224,vxlangw1将arp应答转发给vm1。

至此,vm1完成了向vm2的arp请求,控制器完成了由vxlangw1至vxlangw2的流表建立和下发过程。上述arp过程在各个网元之间的信息交互如图4所示,图4中仅示出了图2中信息交互部分的步骤。采用类似的方法,控制器可以根据arp请求中的源ip和源mac完成由vxlangw2至vxlangw1的流表建立和下发。此后如果vxlangw1下的其他虚机与vxlangw2下的其他虚机通信,均可以共用已有的两条流表进行转发。

下面结合图5描述本发明一个实施例的虚拟可扩展局域网网关。

图5示出本发明虚拟可扩展局域网网关的一个实施例的结构示意图。如图5所示,该实施例的虚拟可扩展局域网网关50为第一虚拟可扩展局域网网关vxlangw1,包括:

数据包接收模块502,用于接收其下属的第一虚机vm1发往第二虚机vm2的数据包,其中,vxlangw1接收的数据包的源ip为vm1的ip地址,源mac为vm1的mac地址,目的ip为vm2的ip地址。

数据包转发模块504,用于根据第一流表将数据包转发到vm2所属的vxlangw2,其中,vxlangw1转发的数据包的源ip为vm1的ip地址,源mac被替换为vxlangw1的mac地址,目的ip为vm2的ip地址,目的mac为vm2所属的vxlangw2的mac地址。

数据包接收模块502还用于接收vxlangw2发送的回复数据包;

映射表查找模块506,用于根据目的ip查找本地映射表确定目的mac为vm1的mac地址。

mac地址替换模块508,用于将回复数据包的目的mac替换为vm1的mac地址。

数据包转发模块504还用于将恢复数据包转发给vm1。

此外,虚拟可扩展网关还可以包括:

arp请求接收模块510,用于接收其下属的vm发送的arp请求,所述arp请求的源ip和源mac分别为发送arp请求的vm的ip地址和mac地址。

映射表更新模块512,用于将所述arp请求的源ip和源mac添加到本地映射表中。

下面结合图6描述本发明一个实施例的控制器。

图6示出本发明控制器的一个实施例的结构示意图。如图5所示,该实施例的控制器60包括:

packet_in处理模块602,用于接收vxlangw1转发的来自其下属vm1的地址解析协议arp请求,其中,控制器接收的arp请求的源ip为vm1的ip地址,源mac为vxlangw1的mac地址,目的ip为vm2的ip地址;

packet_out生成模块604,用于向各个虚拟可扩展局域网网 关vxlangw广播arp请求,各个vxlangw向其下属的虚机vm转发arp请求;

packet_in处理模块602还用于接收vxlangw2返回的arp应答,其中,控制器接收的arp应答的源ip为vxlangw2下属vm2的ip地址,源mac为vxlangw2的mac地址,目的ip为vm1的ip地址;

流表建立模块606,用于根据arp应答中的源ip和源mac维护虚机的arp状态表,进而根据arp状态表、vxlangw1的物理端口以及vxlangw1与vxlangw2之间的拓扑建立第一流表。

此外,流表建立模块606还可以用于arp请求中的源ip和源mac维护虚机的arp状态表,进而根据arp状态表、vxlangw2的物理端口以及vxlangw2与vxlangw1之间的拓扑建立第二流表。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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