OVS+VXLAN实现两个宿主机上的VM间的通信
一、组网图

说明:
1、使用网络命名空间表示vm1和vm2. 因为我没有两台物理服务器。
2、使用virtualbox 的两条虚机模拟作为host1和host2。
二、配置指导
1、创建网桥 br0
分别在host1和host2上输入命令
#ovs-vsctl add-br br0
2、创建网络命名空间,用来模拟VM
分别在host1和host2上输入命令
#ip netns add nsvm1
#ip netns add nsvm2
3、创建配对端口,一端加入到命名空间,同时配置ip地址
在host1和host2上输入命令
#ip link add tap1 type veth peer name tap2
#ip link add tap3 type veth peer name tap4
#ip link set tap1 netns nsvm1
#ip link set tap3 netns nsvm2
配置ip地址。
#ip netns exec nsvm1 ip addr add 192.168.0.11/24 dev tap1 (host2上配置为 192.168.0.13)
#ip netns exec nsvm2 ip addr add 192.168.0.12/24 dev tap3 (host2上配置为 192.168.0.14)
设置端口up.
#ip netns exec nsvm1 ip link set tap1 up
#ip netns exec nsvm2 ip link set tap3 up
#ip link set tap2 up
#ip link set tap4 up
4、端口加入网桥
在host1和host2上输入命令
#ovs-vsctl add-port br0 tap2
#ovs-vsctl add-port br0 tap4
5、验证本地网桥相连的VM间通信
在host1上输入命令
#ip netns exec nsvm1 ping 192.168.0.12

6、配置vxlan隧道
在host1上配置如下命令
#ip link add vxlan0 type vxlan id 42 dstport 4789 remote 172.16.56.4 local 172.16.56.3 dev enp0s3
#ip addr add 20.0.0.1/24 dev vxlan0
#ip link set vxlan0 up
在host2上进行对应配置(remote/local互换,以及ip)
#ip link add vxlan0 type vxlan id 42 dstport 4789 remote 172.16.56.3 local 172.16.56.4 dev enp0s3
#ip addr add 20.0.0.2/24 dev vxlan0
#ip link set vxlan0 up
删除主机上默认的INPUT iptables规则

iptables -D INPUT 11
7、验证跨主机的vxlan隧道端口间通信
在host1上输入命令
#ping 20.0.0.2
8、vxlan0端口加入到网桥,实现跨主机的VM间通信
在host1和host2上输入命令
#ovs-vsctl add-port br0 vxlan0
9、验证跨主机的VM通过vxlan隧道端口间通信

抓包如下:

三、结论:
通过OVS+VXLAN隧道口,可以模拟出跨主机的VM间通过vxlan隧道的通信过程,从抓包结果看,也是有vxlan格式封装的。
OVS+VXLAN实现两个宿主机上的VM间的通信的更多相关文章
- 关于VXLAN的认识-----ovs+vxlan多链路负载分担的实现方法
一.应用环境 目前大部分网关或服务器设备常采用双链路同时接入多条ISP链路的方式来满足网络的负载均衡和主备切换等,实现该功能常用的方法是利用策略路由技术,根据链路的网络状况和权重配置在路由时动态选择不 ...
- 【Network】OVS VXLAN/GRE 实践
参考资料: OVS/VXLAN/GRE参考 ovs vxlan IP overray_百度搜索 OVS操作总结-Neutron-about云开发 OpenStack OVS GRE/VXLAN网络_z ...
- docker - 修改镜像/容器文件的在宿主机上的存储位置(转)
背景 之前在使用docker的时候,由于启动container的时候用的是默认的mount(路径为 /var/lib/docker),这个目录对应的硬盘空间有限,只有200G左右.现在随着程序运行,有 ...
- KVM宿主机上虚拟机动态添加新磁盘
(1)KVM宿主机查看运行的虚拟机 $ virsh list --all (2)将qcow2的磁盘移动到/var/lib/libvirt/images/,比如为centos.qcow2 (3)进入/e ...
- 如何在查看docker container内进程信息,与宿主机上进程信息的映射关系
docker container内运行的进程,在宿主机上,通过ps也是能够查到的,但是在不熟悉命令的时候,无法快速找到他们的关系. 这里科普一个基础命令 docker top 1. 找到容器的id d ...
- 如何在宿主机上执行容器里的jmap,jtack,jstat 命令获取信息(原创)
一般情况下,我们要获取docker容器里的jvm信息只能进入容器后执行jmap,jstack,jstat 命令去获取,jstack,jstat还好,但是jmap dump的文件要拿出来,得先copy ...
- docker中,将容器中的文件拷贝到宿主机上
需求说明: 今天在做docker修改配置文件的问题,一个容器要使用另外容器的一个配置文件,但是在宿主机上没有, 就考虑将容器中的文件拷贝到宿主机上,在此记录下操作过程. 操作过程: 1.通过docke ...
- docker - 修改镜像/容器文件或者 "Docker root dir" 的在宿主机上的存储位置
背景 之前在使用docker的时候,由于启动container的时候用的是默认的mount(路径为 /var/lib/docker),这个目录对应的硬盘空间有限,只有200G左右.现在随着程序运行,有 ...
- neutron ovs+vxlan
title: Neutron ovs+vxlan date: 2017-04-26 23:37 tags: Network 主机网卡配置 controller: ens160:192.168.11.1 ...
随机推荐
- 日期时间格式化 SimpleDateFormat与DateTimeFormatter
原文:https://www.jianshu.com/p/b212afa16f1f 1.SimpleDateFormat为什么不是线程安全的? 如果我们把SimpleDateFormat定义成stat ...
- React组件的定义、渲染和传值总结
一.组件的定义 1.使用JavaScript函数定义 Welcome.js import React from 'react'; function Welcome() { return ( <d ...
- dt7.0自定义推送熊掌号功能插件
因要推送较早的数据,所以写了一个自定义推送熊掌号的功能插件,因我自己站点是新站,推送的数据较少,所以程序比较简单,算是初始版本,凑合着用吧. <?php /* 百度当天主动推送熊掌功能 作者:6 ...
- Markdown编辑器的使用测试
北京高校(大标题) 北京电子科技学院(小标题) 计算机技术(一级标) 研究生(二级标) 列表(三级标) 姓名 - 扎西 - 卓玛 学号 - 01 - 02 超链接 [QQ邮箱](https://www ...
- python练习题(一)
背景: 和公司的二位同事一起学习python,本着共同学习.共同成长.资源共享的目标,然后从中学习,三人行必有我师 练习题更新中······ 题目: 输入一个值num,如果 num 大于 10,输出: ...
- vue2 路由,运动
- BZOJ 3698: XWW的难题(有源汇上下界最大流)
题面 XWW是个影响力很大的人,他有很多的追随者.这些追随者都想要加入XWW教成为XWW的教徒.但是这并不容易,需要通过XWW的考核. XWW给你出了这么一个难题:XWW给你一个N*N的正实数矩阵A, ...
- jdk1.8 ConcurrentHashMap 的工作原理及代码实现,如何统计所有的元素个数
ConcurrentHashMap 的工作原理及代码实现: 相比于1.7版本,它做了两个改进 1.取消了segment分段设计,直接使用Node数组来保存数据,并且采用Node数组元素作为锁来实现每一 ...
- Appium自动化测试教程-自学网-monkeyrunner API
MonkeyRunner API MonkeyRunner工具主要有三个类: MonkeyRunner MonkeyDevice MonkeyImage 官方API文档 :http://www.and ...
- java调出cmd窗口长ping某个ip
package lct.conference.test; import java.io.IOException; public class Test { public static void main ...