一种在计算节点上实现虚拟机南北向通信的方法

文档序号:10690855阅读:627来源:国知局
一种在计算节点上实现虚拟机南北向通信的方法
【专利摘要】本发明涉及虚拟机通信技术领域,特别是一种在计算节点上实现虚拟机南北向通信的方法。所述方法包括:在虚拟机所在计算节点上安装iproute工具,创建netns1并加入虚拟机相关的接口,创建netns2并增加连通外网的接口和路由,创建veth设备连通netns1和netns2,在netns1和netns2中添加路由策略。采用本发明提供的方法可以解决云平台中网络节点的单点故障问题,同时提高网络通信性能;用于云计算节点上实现虚拟机南北向通信。
【专利说明】
一种在计算节点上实现虚拟机南北向通信的方法
技术领域
[0001]本发明涉及虚拟机通信技术领域,特别是一种在计算节点上实现虚拟机南北向通信的方法。
【背景技术】
[0002]策略路由及路由策略数据库
[0003]路由策略数据库的规则用于控制选择路由的算法。Internet上采用的路由算法一般是基于数据包目的地址的,而在某些情况下,我们不只是需要通过数据包的目的地址决定路由,可能还需要通过其他一些域,如:源地址、IP协议、传输层端口甚至数据包的负载。这就叫做:策略路由(policy routing)。
[0004]目前所有的在用Linux内核都默认支持策略路由,我们可以使用iproute提供的iprule,ip route等工具来实现。
[0005]云计算的发展催生了各级别的云平台,一般云平台通用的特点就是存在网络节点单点故障问题,即所有计算节点的虚拟机数据包,尤其是南北向的数据通信(南北向通信是指内部私有网络与外部公网或者管理网进行数据通信,即进行外网通信)都必须经过网络节点来实现;这样当网络节点发生故障时,所有虚拟机的通信都中断。虽然目前有提出利用网络节点HA,即多个网络节点来避免单点故障,但是这样的方法也存在如下问题:
[0006]1、网络性能差,HA解决的是单点故障,当一个节点错误时,另一个节点接管错误节点的所有功能,对于虚拟机南北向数据通信,所有虚拟机的数据包都是发到这个网络节点来实现的,所以会造成通信质量差的问题。
[0007]2、无法做到区域隔离,即所有计算节点的虚拟机在通信过程中都是相互影响的,极端情况下,如果HA的网络节点都错误,或者某一台虚拟机的网络通信占满网卡带宽,那所有的其他虚拟机都会无法通信。

【发明内容】

[0008]本发明解决的技术问题在于提供一种在计算节点上实现虚拟机南北向通信的方法,实现各个计算节点上让虚拟机进行南北向通信,且相互之间完全隔离;避免云平台中存在的网络节点单点故障问题,同时极大的提高了网络通信质量。
[0009 ]本发明解决上述技术问题的技术方案是,
[00?0]所述的方法是先在虚拟机所在计算节点上安装iproute工具;然后,创建netnsl并加入虚拟机相关的接口,创建netns2并增加连通外网的接口和路由;再创建veth设备连通netnsl和netns2 ;最后在netnsl和netns2中添加路由策略。
[0011 ] 所述的iproute是一个用以替代net-tools的Iinux网络管理工具;
[0012] 所述的netnsl和netns2是Iinux命名空间,不同的命名空间使用不同的网络协议栈,各自互不影响;其提供网络资源的隔离方案。
[0013I所述的创建netnsl并加入虚拟机相关的接口中,接口指的是虚拟机所在网络子网的网关接口,保证虚拟机在进行南北向通信时默认路由指向该接口 ;
[0014]所述的网关接口定义在openvswitch(开放虚拟交换标准,是在开源的Apache2.0许可下的产品级质量的多层虚拟交换标准)的虚拟网桥br-1nt上,且配置了本地tag,用于实现二层隔离。
[0015]所述的创建netns2并增加连通外网的接口和路由进一步包括:
[0016]所述的外网的接口可以是定义在openvswitch虚拟网桥上的接口,也可以是直接连通外网网络的物理网卡接口 ;如果是虚拟网桥上的接口,则进一步需要保证该虚拟网桥有连通外网的能力;所述的能力可以是直接在所述虚拟网桥上添加外网网卡,也可以通过类似openf low流规则控制数据包流向外网;
[0017]所述的增加连通外网的路由是指虚拟机南北向通信过程中出去的路由规则。
[0018]所述的veth设备是利用iproute工具成对创建出来的虚拟设备;
[0019]所述的创建veth设备连通netnsl和netns2是指分别将成对生成的虚拟设备一个加入netnsl命名空间,另一个加入netns2命名空间。
[0020]所述的在netnsl和netns2中添加路由策略进一步包括:
[0021]在两个命名空间中分别为veth设备的两端设置网络IP;
[0022]在netnsl中添加从外网进来继而转发到netns2命名空间的路由规则;
[0023]在netns2中增加Iinux高级路由策略,保证虚拟机数据包进来继而转发到netnsl命名空间;
[0024]所述的Iinux高级路由策略是指根据路由策略数据库来选择执行路由规则,这些规则可以有多种不同的状态,完全由管理员控制。
[0025]本发明方案的有益效果如下:
[0026]1、提供一种方法让虚拟机直接通过计算节点进行南北向数据通信,解决了云平台中存在的网络节点单点故障问题。
[0027]2、本发明方法极大的提升了虚拟机南北向通信的通信质量。
[0028]3、本发明实现了各个计算节点上的虚拟机之间南北向通信完全隔离,相互之间无影响,实现了虚拟机通信的区域化管理。
【附图说明】
[0029]下面结合附图对本发明进一步说明:
[0030]图1为本发明的流程图。
【具体实施方式】
[0031]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员没有做出实质性创造获得的方案,都属于本发明保护的范围。
[0032]请参见图1,为本发明实施例提供的一种在计算节点上实现虚拟机南北向通信的方法的流程示意图,本实施类以其中一个计算节点为例进行描述,其他计算节点类似。所述方法包括:
[0033]首先安装iproute工具:
[0034]yum install iproute
[0035]接着利用ip 工具创建命名空间 qrouter-feObdlSa-SSSS-lOde-aela-c^SgeSSSScee,并添加虚拟机所在网络子网的网关接口, 同时配置网关 IP:
[0036]ip netns add qrouter-f60bd48a-3282-40de-aela-c72963253c66
[0037]ovs-vsctl add-port br-1nt qr-4b9cbdc2_80—set Interface dev-test type=internal
[0038]ip link set qr-4b9cbdc2_80netns qrouter-f60bd48a-3282-40de_aela-c72963253c66
[0039]为虚拟机网关节点qr-4b9cbdc2_80设置网关ip:
[0040]ip netns exec qrouter-f60bd48a-3282-40de-aela-c72963253c66ip addraddl2.12.1.l/24dev qr-4b9cbdc2_80
[0041]继续创建命名空间fip-21138cb8-1090-41cb-87d7-aadfe954af45 并增加连通外网的接口和路由:
[0042]ip netns add fip-21138cb8-l090-41cb-87d7-aadfe954af45
[0043]同网关接口一样在 f ip-21138cb8-1090-41cb-87d7-aadfe954af45 空间内增加通外网接口 fg-1594c406-99,并设置外网IP,并做arp代理。
[0044]ip netns exec fip-21138cb8-1090-41cb-87d7-aadfe954af45sysctInet.1pv4.conf.fg-081d537b_06.proxy—arp
[0045]添加通外网的默认路由:
[0046]ip netns exec fip_21138cb8-1090-41cb-87d7_aadfe954af45ip route adddefault via 20.251.43.254dev fg-081d537b_06
[0047]创建veth 设备连通 qrouter-f 60bd48a-3282-40de_ae I a_c7 296 3253 c66 和f ip-21138cb8-1090-41cb-87d7-aadfe954af45Mfnamespace。
[0048]ip link add fpr-f60bd48a-3type veth peer name rfp-f60bd48a_3
[0049]ip link set rfp-f60bd48a-3netns qrouter-f60bd48a~3282-40de~aeIa-c72963253c66
[0050]ip link set fpr_f60bd48a_3netns fip_21138cb8_l090-41cb_87d7-aadfe954af45
[0051 ] 最后在上面两个namespace内分别为接口添加IP,同时添加相应的策略路由:
[0052]ip netns exec qrouter-f60bd48a-3282-40de-aela-c72963253c66ip addraddl69.254.31.28/31dev fpr_f60bd48a_3
[0053]ip netns exec fip_21138cb8-1090-41cb-87d7_aadfe954af45ip addraddl69.254.31.29/31dev rfp-f60bd48a_3
[0054]ip netns exec fip_21138cb8-1090-41cb-87d7_aadfe954af45ip addradd20.251.42.105/32dev rfp-f60bd48a_3
[0055]添加路由策略如下:
[0056]ip netns exec qrouter-f60bd48a-3282-40de-aela-c72963253c66ip rule addfrom$VM_IP loopup 16
[0057]ip netns exec qrouter-f60bd48a-3282-40de-aeIa~c72963253c66ip routeadd default via 169.254.31.29
[0058]另外需要在命名空间qrouter-f60bd48a-3282-40de-aela_c72963253c66 中对虚拟机的内网IP做DNAT转换。
[0059]通过上面两条高级路由策略,将把来自IPS$VM_IP的虚拟机数据包,经过接口邙『46(^(1483-3传到了169.254.31.29接口所在的命名空间打?-21138(^8-1090-41吐-87d7_aadfe954af45,继而与外网进行南北向通信。
【主权项】
1.一种在计算节点上实现虚拟机南北向通信的方法,其特征在于,所述的方法是先在虚拟机所在计算节点上安装iproute工具;然后,仓Ij建netnsl并加入虚拟机相关的接口,仓ij建netns2并增加连通外网的接口和路由;再创建veth设备连通netnsl和netns2;最后在netnsl和netns2中添加路由策略。2.根据权利要求1所述的方法,其特征在于: 所述的iproute是一个用以替代net-tools的Iinux网络管理工具; 所述的netnsl和netns2是Iinux命名空间,不同的命名空间使用不同的网络协议桟,各自互不影响;其提供网络资源的隔离方案。3.根据权利要求1所述的方法,其特征在于,所述的创建netnsl并加入虚拟机相关的接口中,接口指的是虚拟机所在网络子网的网关接口,保证虚拟机在进行南北向通信时默认路由指向该接口; 所述的网关接口定义在openvswitch的虚拟网桥br-1nt上,且配置了本地tag,用于实现二层隔离。4.根据权利要求2所述的方法,其特征在于,所述的创建netnsl并加入虚拟机相关的接口中,接口指的是虚拟机所在网络子网的网关接口,保证虚拟机在进行南北向通信时默认路由指向该接口; 所述的网关接口定义在openvswitch的虚拟网桥br-1nt上,且配置了本地tag,用于实现二层隔离。5.根据权利要求1至4任一项所述的方法,其特征在于,所述的创建netns2并增加连通外网的接口和路由进一步包括: 所述的外网的接口可以是定义在openvswi tch虚拟网桥上的接口,也可以是直接连通外网网络的物理网卡接口 ;如果是虚拟网桥上的接口,则进一步需要保证该虚拟网桥有连通外网的能力;所述的能力可以是直接在所述虚拟网桥上添加外网网卡,也可以通过类似openf low流规则控制数据包流向外网; 所述的增加连通外网的路由是指虚拟机南北向通信过程中出去的路由规则。6.根据权利要求1至4任一项所述的方法,其特征在于,所述的veth设备是利用iproute工具成对创建出来的虚拟设备; 所述的创建veth设备连通netnsl和netns2是指分别将成对生成的虚拟设备一个加入netnsl命名空间,另一个加入netns2命名空间。7.根据权利要求5所述的方法,其特征在于,所述的veth设备是利用iproute工具成对创建出来的虚拟设备; 所述的创建veth设备连通netnsl和netns2是指分别将成对生成的虚拟设备一个加入netnsl命名空间,另一个加入netns2命名空间。8.根据权利要求1至4任一项所述的方法,其特征在于,所述的在netnsl和netns2中添加路由策略进一步包括: 在两个命名空间中分别为veth设备的两端设置网络IP; 在netnsl中添加从外网进来继而转发到netns2命名空间的路由规则; 在netns2中增加Iinux高级路由策略,保证虚拟机数据包进来继而转发到netnsl命名空间; 所述的Iinux高级路由策略是指根据路由策略数据库来选择执行路由规则,这些规则可以有多种不同的状态,完全由管理员控制。9.根据权利要求5所述的方法,其特征在于,所述的在netnsl和netns2中添加路由策略进一步包括: 在两个命名空间中分别为veth设备的两端设置网络IP; 在netnsl中添加从外网进来继而转发到netns2命名空间的路由规则; 在netns2中增加Iinux高级路由策略,保证虚拟机数据包进来继而转发到netnsl命名空间; 所述的Iinux高级路由策略是指根据路由策略数据库来选择执行路由规则,这些规则可以有多种不同的状态,完全由管理员控制。10.根据权利要求6所述的方法,其特征在于,所述的在netnsl和netns2中添加路由策略进一步包括: 在两个命名空间中分别为veth设备的两端设置网络IP; 在netnsl中添加从外网进来继而转发到netns2命名空间的路由规则; 在netns2中增加Iinux高级路由策略,保证虚拟机数据包进来继而转发到netnsl命名空间; 所述的Iinux高级路由策略是指根据路由策略数据库来选择执行路由规则,这些规则可以有多种不同的状态,完全由管理员控制。
【文档编号】H04L12/24GK106059803SQ201610364228
【公开日】2016年10月26日
【申请日】2016年5月26日
【发明人】熊梦, 杨松, 季统凯
【申请人】国云科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1