本发明涉及数据报文转发领域,具体涉及一种基于vxlan(virtualextensiblelan,虚拟扩展局域网)和openflow(通信协议)的虚拟家庭网络共享方法及系统。
背景技术:
虚拟家庭网关分为两个部分,放置于数据中心服务器中的vg(virtualgateway,虚拟网关)端和放置于用户家中的pg(physicalgateway,物理网关),虚拟家庭的vg端和pg端之间采用vxlan进行连接。vg端相当于服务器侧,pg端相当于用户侧。
对于虚拟家庭网关,传统网络隔离主要采用vlan(virtuallocalareanetwork,虚拟局域网)进行,而由于数据中心中家庭网关数量庞大,现如今一般采用overlay的方式进行家庭之间的隔离。但是采用overlay的方式,家庭间如何实现对于数据中心服务器端资源的共享访问,目前并没有有效的解决方式。
技术实现要素:
本发明公开一种基于vxlan和openflow的虚拟家庭网络共享方法及系统,能够使各虚拟家庭间进行数据报文传输,实现资源共享。
本发明提供的一种基于vxlan和openflow的虚拟家庭网络共享方法,包括以下步骤:
创建vxlan连接,连接虚拟家庭的vg端和pg端;
虚拟家庭间新建vxlan连接,并修改新建vxlan连接的vxlanfdb表,以使虚拟家庭间二层网络可达;
vg端通过组播方式向pg端下挂设备组播自身所含资源;
pg端下挂设备通过单播方式告知vg端自身所需资源;
vg端通过单播方式发送pg端下挂设备所需资源。
在上述方案的基础上,
所述vg端通过组播方式向所有pg端下挂设备组播自身所含资源之前,具体包括:
修改vg端vxlan连接vtep端的fdb表,以使vg端的组播包可达pg端;
修改vg端的openflow流表,以使vg端的源ip地址为未被使用ip地址;
所述pg端下挂设备通过单播方式告知vg端自身所需资源之前,具体包括:
修改pg端vxlan连接vtep端的fdb表,以使pg端下挂设备的单播包可达vg端;
修改pg端的openflow流表,以使pg端下挂设备发往vg端的报文的源ip地址为未被使用ip地址。
在上述方案的基础上,修改vg端vxlan连接vtep端的fdb表,修改vg端的openflow流表,具体包括:
vg端虚拟交换机中进行ip映射,并通过下发openflow流表,将vg端的源ip地址映射为未被使用的第一ip地址;
修改vg端新建vxlan连接中vtep端fdb表,将组播包的目的mac地址对应为pg端vtep端点。
在上述方案的基础上,修改pg端vxlan连接vtep端的fdb表,修改pg端的openflow流表,具体包括:
pg端虚拟交换机中进行ip映射,并通过下发openflow流表,将pg端下挂设备发往vg端报文的源ip地址映射为未被使用的第二ip地址;
修改pg端虚拟交换机中arp表,将第一ip地址对应为vg端的mac地址;
将pg端vxlan连接vtep端fdb表中,vg端的mac地址对应为vg端vtep端点。
在上述方案的基础上,所述vg端通过单播方式发送pg端下挂设备所需资源之前,还包括:
vg端虚拟交换机中进行ip映射,并通过下发openflow流表,将vg端的源ip地址映射为第一ip地址;
修改vg端虚拟交换机中arp表,将第二ip地址对应为pg端下挂设备的mac地址;
将vg端新建vxlan连接vtep端fdb表中,pg端下挂设备的mac地址对应为pg端vtep端点。
本发明提供的一种基于vxlan和openflow的虚拟家庭网络共享系统,包括:
第一创建模块,其用于创建vxlan连接,连接虚拟家庭网关的vg端和pg端;
第二创建模块,其用于在虚拟家庭间新建vxlan连接,并修改新建vxlan连接的vxlanfdb表,以使虚拟家庭间二层网络可达;
组播模块,其用于驱使vg端通过组播方式向pg端下挂设备广播自身所含资源;
第一单播模块,其用于驱使pg端下挂设备通过单播方式告知vg端自身所需资源;
第二单播模块,其用于驱使vg端通过单播方式发送pg端下挂设备所需资源。
在上述方案的基础上,
所述vg端通过组播方式广播自身所含资源之前,具体包括:
修改vg端新建vxlan连接vtep端的fdb表,以使vg端的组播包可达pg端;
修改vg端的openflow流表,以使vg端的源ip地址为未被使用ip地址;
所述pg端下挂设备通过单播方式告知vg端自身所需资源之前,具体包括:
修改pg端vxlan连接vtep端的fdb表,以使pg端下挂设备的单播包可达vg端;
修改pg端的openflow流表,以使pg端下挂设备发往vg端的报文的源ip地址为未被使用ip地址。
在上述方案的基础上,修改vg端新建vxlan连接vtep端的fdb表,修改vg端的openflow流表,具体包括:
vg端虚拟交换机中进行ip映射,并通过下发openflow流表,将vg端的源ip地址映射为未被使用的第一ip地址;
修改vg端新建vxlan连接中vtep端fdb表,将组播包的目的mac地址对应为pg端vtep端点。
在上述方案的基础上,修改pg端vxlan连接vtep端的fdb表,修改pg端的openflow流表,具体包括:
pg端虚拟交换机中进行ip映射,并通过下发openflow流表,将pg端下挂设备发往vg端报文的源ip地址映射为未被使用的第二ip地址;
修改pg端虚拟交换机中arp表,将第一ip地址对应为vg端的mac地址;
将pg端vxlan连接vtep端fdb表中,vg端的mac地址对应为vg端vtep端点。
在上述方案的基础上,所述vg端通过单播方式发送pg端下挂设备所需资源之前,还包括:
vg端虚拟交换机中进行ip映射,并通过下发openflow流表,将vg端的源ip地址映射为第一ip地址;
修改vg端虚拟交换机中arp表,将第二ip地址对应为pg端下挂设备的mac地址;
将vg端新建vxlan连接vtep端fdb表中,pg端下挂设备的mac地址对应为pg端vtep端点。
与现有技术相比,本发明的优点在于:通过在虚拟家庭间新建vxlan连接,并修改新建vxlan连接的vxlanfdb表,以使虚拟家庭间二层网络可达,使得某个虚拟家庭的vg端能够对其它虚拟家庭pg端下挂设备进行通信,且其它虚拟家庭能够获取该虚拟家庭vg端的资源,各虚拟家庭的vg端和pg端间能够进行数据报文传输,实现资源共享。
附图说明
图1为本发明实施例中一种基于vxlan和openflow的虚拟家庭网络共享方法的流程图;
图2为本发明实例中vg端发往pg端的组播报文的过程示意图;
图3为本发明实例中pg端下挂设备通过单播方式回复报文告知vg端自身所需资源的过程示意图;
图4为本发明实例中vg端通过单播方式向pg端下挂设备传送资源;
图5为本发明实例中vxlan端点vtep中所保存的fdb表格式。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例提供一种基于vxlan和openflow的虚拟家庭网络共享方法,通过在虚拟家庭间新建vxlan连接,并修改新建vxlan连接的vxlanfdb表,以使虚拟家庭间二层网络可达,使得某个虚拟家庭的vg端能够对其它虚拟家庭pg端下挂进行通信,且其它虚拟家庭能够获取该虚拟家庭vg端的资源,实现资源共享。本发明实施例还相应的提供了一种基于vxlan和openflow的虚拟家庭网络共享系统。
参见图1所示,本发明实施例提供的一种基于vxlan和openflow的虚拟家庭网络共享方法的一实施例包括:
s1:创建vxlan连接,连接虚拟家庭的vg端和pg端;
本发明实施例中,pg端对应虚拟家庭中位于用户侧的接入设备,用以接入家庭中的手机、电脑等终端设备,可以理解,每个pg对应一个虚拟家庭vg。每个虚拟家庭的vg端和pg端间均采用vxlan进行连接,且vg端和pg端内部采用支持openflow协议的虚拟交换机。
s2:虚拟家庭间新建vxlan连接,并修改新建vxlan连接的vxlanfdb表,以使虚拟家庭间二层网络可达;
本发明实施例中,通过修改虚拟家庭间vxlan连接vxlanfdb表,使得虚拟家庭间数据能够互通,即各个虚拟家庭的vg端和pg端间能够进行数据包传输。
在实际应用过程中,虚拟家庭数量为多个,但某个时刻需要进行数据共享的虚拟家庭可能只有2个,例如虚拟家庭a和虚拟家庭b,则在虚拟家庭a和虚拟家庭b间新建vxlan连接,然后修改虚拟家庭a和虚拟家庭b间vxlan连接vxlanfdb表,从而虚拟家庭a和虚拟家庭b间实现二层链路可达,数据互通,虚拟家庭a可获取虚拟家庭b的vg端的资源,同理,虚拟家庭b也可获取虚拟家庭a的vg端的资源。fdb(forwardingdatabase)表,即mac地址转发表。
s3:vg端通过组播方式向pg端广播自身所含资源;
s4:pg端下挂设备(电脑、手机等)通过单播方式告知vg端自身所需资源;
s5:vg端通过单播方式发送pg端下挂设备所需资源。
本发明实施例中,在进行虚拟家庭间的vg端资源共享时,vg端通过组播方式告知pg端下挂设备自己所提供的资源,pg端下挂设备获知vg端所提供的资源后告知vg端自身所需资源,vg端通过单播方式向pg端下挂设备传送资源。
本发明实施例的一种基于vxlan和openflow的虚拟家庭网络共享方法,通过在虚拟家庭间新建vxlan连接,并修改新建vxlan连接的vxlanfdb表,以使虚拟家庭间二层网络可达,使得某个虚拟家庭的vg端能够对其它虚拟家庭pg端下挂设备发送组播报文,且其它虚拟家庭pg端下挂设备能够获取该虚拟家庭vg端的资源,各虚拟家庭的vg端和pg端间能够进行数据报文传输,实现资源共享。
可选地,在上述一种基于vxlan和openflow的虚拟家庭网络共享方法对应实施例的基础上,本发明实施例提供的一种基于vxlan和openflow的虚拟家庭网络共享方法的第一个可选实施例中,vg端通过组播方式向所有pg端下挂设备组播自身所含资源之前,具体包括:修改vg端新建vxlan连接vtep端的fdb表,以使vg端的组播包可达pg端;修改vg端的openflow流表,以使vg端的源ip地址为未被使用的ip地址,即之前未被使用的ip地址,避免与已有ip地址造成冲突。vtep,即vxlantunnelendpoint,负责原始以太报文的vxlan封装和解封装。
pg端下挂设备通过单播方式告知vg端自身所需资源之前,具体包括:修改pg端vxlan连接vtep端的fdb表,以使pg端下挂设备的单播包可达vg端;修改pg端的openflow流表,以使pg下挂设备发往vg端的报文的源ip地址为未被使用ip地址,即之前未被使用的ip地址,避免与已有ip地址造成冲突。
可选地,在上述一种基于vxlan和openflow的虚拟家庭网络共享方法对应第一个可选实施例的基础上,本发明实施例提供的一种基于vxlan和openflow的虚拟家庭网络共享方法的第二个可选实施例中,修改vg端vxlan连接vtep端的fdb表,修改vg端的openflow流表,具体包括:
vg端虚拟交换机中进行ip映射,并通过下发openflow流表,将vg端的源ip地址映射为未被使用的第一ip地址;
修改vg端新建vxlan连接中vtep端fdb表,将组播包的目的mac地址对应为pg端vtep端点。
修改pg端vxlan连接vtep端的fdb表,修改pg端的openflow流表,具体包括:
pg端虚拟交换机中进行ip映射,并通过下发openflow流表,将pg端下挂设备发往发往vg端报文的ip地址映射为未被使用的第二ip地址;
修改pg虚拟交换机中arp表,将第一ip地址对应为vg端的mac地址;
将pg端vxlan连接vtep端fdb表中,vg端的mac地址对应为vg端vtep端点。
可选地,在上述一种基于vxlan和openflow的虚拟家庭网络共享方法对应第二个可选实施例的基础上,本发明实施例提供的一种基于vxlan和openflow的虚拟家庭网络共享方法的第三个可选实施例中,vg端通过单播方式发送pg下挂设备所需资源之前,还包括:
vg端虚拟交换机中进行ip映射,并通过下发openflow流表,将vg端的源ip地址映射为第一ip地址;
修改vg端虚拟交换机中arp表,将第二ip地址对应为pg端下挂设备的mac地址;
将vg端新建vxlan连接vtep端fdb表中,pg端下挂设备的mac地址对应为pg端vtep端点。
以下结合一实例来对本发明实施例中vg端通过组播方式告知其他pg下挂设备自己所提供的资源,pg下挂设备获知vg端所提供的资源后告知vg端自身所需资源,vg端通过单播方式向pg端下挂设备传送资源,上述流程进行具体说明。
参见图2所示,vg端相当于虚拟家庭网关的服务器侧,pg端相当于为虚拟家庭网关的用户侧。vg和pg中部署有vswitch,通过openflow协议接受控制器controller的控制,从而能够修改数据报文的五元组信息等。nc(networkcard)代表网卡,vxlan隧道端点为vtep。代理agent(图2中pg2agent省略未画出)接受控制器controller的管理对vtep的vxlanfdb表进行配置。vg端通过组播方式告知其他pg端下挂设备自己所提供的资源流程中,vg端发往pg端的组播报文,处理逻辑如下:
vxlan源端点(vg端)为vtep1,源ip地址为ip1,源mac地址为mac1;vxlan目的端点(pg端)为vtep2,目的ip地址为组播地址ip_multi,目的mac地址为组播mac地址mac_multi。
vg端虚拟交换机中做ip映射,通过下发openflow流表,将源ip地址ip1映射为ip1_new(该地址为预留地址,不会造成不同家庭间的地址冲突),同时修改vg端vxlanfdb表,将mac_multi对应为vxlan端点vtep2;
pg端接收到的组播报文,源mac地址为mac1,源ip地址为ip1_new,目的mac地址为mac_multi,目的ip地址为ip_multi。
参见图3所示,pg端下挂设备获知vg端所提供的资源后告知vg端自身所需资源流程中,pg端下挂设备通过单播方式回复报文告知vg端自身所需资源,处理逻辑如下:
vg端所在vxlan端点为vtep1,vg端ip地址为ip1,服务器mac地址为mac1;pg所在vxlan端点为vtep2,pg端下挂设备ip地址为ip2,pg端下挂设备mac地址为mac2。由于pg端收到的组播报文的源ip地址为ip1_new,因此回复报文的目的ip地址为ip1_new,源ip地址为ip2;
pg端的虚拟交换机中进行ip映射,通过控制器下发openflow流表,将源ip地址ip2映射为ip2_new(该地址为预留地址,不会造成不同家庭间的地址冲突),修改虚拟交换机中的arp表为ip1_new对应mac1,修改pg端所在vxlan端点中fdb表,将mac1对应vxlan端点vtep1;
vg端vxlan接口vtep1接收到的包解封装后,源mac地址为mac2,源ip地址为ip2_new,目的mac地址为mac1,目的ip地址为ip1_new,通过修改vg端中的openflow流表做ip映射,将该报文的目的ip地址ip1_new更换为ip1,然后将该报文转发给vg端内部处理。
参见图4所示,vg端通过单播方式向pg端传送资源,逻辑如下:
vg端所在vxlan端点为vtep1,vg端ip地址为ip1,vg端mac地址为mac1;pg端vxlan端点为vtep2,pg端下挂设备ip地址为ip2,pg端下挂设备mac地址为mac2;
vg端发出的数据报文源mac地址为mac1,源ip地址为ip1,目的mac地址为mac2,目的ip地址为ip2_new。vg端中的虚拟交换机中做ip映射,通过下发openflow流表,将源ip地址映射为ip1_new,vg端的虚拟交换机中的arp表修改,使ip2_new对应mac2,修改vg端vxlan的fdb表为mac2对应vtep2;
pg端vxlan接口vtep2解封装后的报文,源mac地址为mac1,源ip地址为ip1_new,目的mac地址为mac2,目的ip地址为ip2_new。pg端所在的虚拟交换机中做ip映射,通过下发openflow流表,将目的ip地址ip2_new映射为ip2,同时修改arp表为ip1_new对应mac1,pg端下挂设备所收到的报文源mac地址为mac1,源ip地址为ip1_new,目的mac地址为mac2,目的ip地址为ip2。
本发明实施例中,在虚拟家庭网关的服务器侧和用户侧中,需要部署有agent,用于接受控制器的指令下发配置。控制器controller通过netconf协议连接该agent,用以下发配置,更改服务器侧和设备侧vtep的fdb表。
控制器(controller)主要提供南北向的api接口,南向接口负责和基础网络设备通信、调用,北向接口负责和上层应用通信、调用。同时,控制器会提供web管理平台,所有sdn网络功能均在这个界面上进行部署、调用,网络功能之间的独立性、易用性、可扩展性是衡量sdncontroller的关键指标。
为各个agent分配所未使用的ip资源,通过netconf等协议向agent下发配置,用以修改vtep端的vxlanfdb表。修改vswitch的转发规则,如果采用支持openflow协议的虚拟交换机,则通过openflow协议下发流表,用以更改数据报文的ip地址。
配置代理agent需要维护vxlan转发数据表。agent接收controller的指令,对vtep的fdb表进行配置。
vxlanfdb表格式如图5所示。vxlan隧道的端点叫做vtep,vtep中可以配置转发数据表,其可以根据内层报文的目的mac地址决定将数据包封装在vxlan报文中送往下一跳vtep。如果是单播mac,agent只需配置该mac地址所对应的远端vtep,vtep的信息包含ip、vni(vxlannetworkidentifier,虚拟可扩展局域网网络标识符)和port(端口)信息。如果是组播mac,agent需要配置该mac地址所对应的远端vtep链表。如图5(a)所示,如果内层报文的目的mac地址是单播mac地址,则意味着该报文只需发往一个vtep端,因此只需记录该单播mac地址所对应vtep端的ip地址、vni号以及端口port号。如图5(b)所示,如果内层报文的目的mac地址是组播mac地址,则意味着该报文需要发往多个vtep端,因此需要记录多个vtep端的ip地址、vni号以及端口port号,并以链表的形式进行存储。
本发明实施例提供的一种基于vxlan和openflow的虚拟家庭网络共享系统的一实施例包括:
第一创建模块,其用于创建vxlan连接,连接虚拟家庭网关的vg端和pg端;
第二创建模块,其用于在虚拟家庭间新建vxlan连接,并修改新建vxlan连接的vxlanfdb表,以使虚拟家庭间二层网络可达;
组播模块,其用于驱使vg端通过组播方式向pg端下挂设备广播自身所含资源;
第一单播模块,其用于驱使pg端下挂设备通过单播方式告知vg端自身所需资源;
第二单播模块,其用于驱使vg端通过单播方式发送pg端下挂设备所需资源。
vg端通过组播方式广播自身所含资源之前,具体包括:
修改vg端新建vxlan连接vtep端的fdb表,以使vg端的组播包可达pg端;
修改vg端的openflow流表,以使vg端的源ip地址为未被使用ip地址;
pg端下挂设备通过单播方式告知vg端自身所需资源之前,具体包括:
修改pg端vxlan连接vtep端的fdb表,以使pg端下挂设备的单播包可达vg端;
修改pg端的openflow流表,以使pg端下挂设备发往vg端的报文的源ip地址为未被使用ip地址。
可选地,在上述一种基于vxlan和openflow的虚拟家庭网络共享系统对应实施例的基础上,本发明实施例提供的一种基于vxlan和openflow的虚拟家庭网络共享系统的第一个可选实施例中,修改vg端新建vxlan连接vtep端的fdb表,修改vg端的openflow流表,具体包括:
vg端虚拟交换机中进行ip映射,并通过下发openflow流表,将vg端的源ip地址映射为未被使用的第一ip地址;
修改vg端新建vxlan连接中vtep端fdb表,将组播包的目的mac地址对应为pg端vtep端点。
修改pg端vxlan连接vtep端的fdb表,修改pg端的openflow流表,具体包括:
pg端虚拟交换机中进行ip映射,并通过下发openflow流表,将pg端下挂设备发往vg端报文的源ip地址映射为未被使用的第二ip地址;
修改pg端虚拟交换机中arp表,将第一ip地址对应为vg端的mac地址;
将pg端vxlan连接vtep端fdb表中,vg端的mac地址对应为vg端vxlan端点。
vg端通过单播方式发送pg端下挂设备所需资源之前,还包括:
vg端虚拟交换机中进行ip映射,并通过下发openflow流表,将vg端的源ip地址映射为第一ip地址;
修改vg端虚拟交换机中arp表,将第二ip地址对应为pg端下挂设备的mac地址;
将vg端新建vxlan连接vtep端fdb表中,pg端下挂设备的mac地址对应为pg端vtep端点。
本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。