搭建基于Open vSwitch的VxLAN隧道实验

1. VXLAN简介

VXLAN 是 Virtual eXtensible LANs 的缩写,它是对 VLAN 的一个扩展,是非常新的一个 tunnel 技术,在Open vSwitch中应用也非常多。Linux 内核的 upstream 中也刚刚加入 VXLAN 的实现。相比 GRE tunnel 它有着很好的扩展性,同时解决了很多其它问题。

从数量上讲,它把 12 bit 的 VLAN tag 扩展成了 24 bit。从实现上讲,它是 L2 over UDP,它利用了UDP 同时也是 IPv4 的单播和多播,可以跨 L3 边界,很巧妙地解决了 GRE tunnel 和 VLAN 存在的不足,让组网变得更加灵活。

2. 实验环境

Linux内核模块在支持Open vSwitch之后又加入了支持隧道的功能,但是某些内核版本的的Linux可能只支持Open vSwitch而不支持隧道技术。支持隧道技术的对应最低Linux内核版本如下:

本实验操作系统是在两台虚拟机中安装的基于3.13Linux内核版本的Ubuntu 14.04.1,满足VXLAN正常运行的条件。同时需要安装好Open vSwitch,本实验安装的是Open vSwitch 2.3.0版本,具体安装步骤详见《Open vSwitch2.3.0版本安装部署及基本操作》

3. 基于Open vSwitch的VxLAN隧道搭建

本实验创建两台虚拟机并启动OpenvSwitch服务,最后创建VXLAN隧道并进行验证。实验中用到的网络拓扑如下:

注:因为实验本身就是在虚拟环境下操作,所以实验中br1桥上实际上并没有再下挂任何主机,实验中我们是分别给两台虚拟机的br1指定两个不同网段的ip,然后通过搭建VXLAN隧道让这两个不同网段的网桥能够实现通信。

3.1 配置Host1

启动好OVS服务后,我们先配置一下Host1。

在Host1上添加名为br0和br1的两个网桥:

# ovs-vsctl add-br br0

# ovs-vsctl add-br br1

在br0上添加一个端口,将eth0挂载到br0上。这样做的目的是方便我们在虚拟网桥上添加多个端口供我们使用,这样不必受限于eth0的有限端口。

# ovs-vsctl add-port br0 eth0

此时我们将原先eth0分配的ip清除并指定给br0,让虚拟机网络能通过br0继续工作。

# ifconfig eth0 0 up && ifconfig br0 192.168.146.131/24 up

根据实际情况配置一下br0的网关。

# route add default gw 192.168.146.2 br0

给br1网桥分配一个ip。

# ifconfig br1 10.0.0.1/24 up

3.2 配置Host2

按Host1同样步骤来配置Host2。

# ovs-vsctl add-br br0

# ovs-vsctl add-br br1

# ovs-vsctl add-port br0 eth0

# ifconfig eth0 0 up && ifconfig br0 192.168.146.136/24 up

# route add default gw 192.168.146.2 br0

给Host2的br1网桥分配一个和Host1中br1不同网段的ip。

3.3 搭建VXLAN隧道

在搭建隧道之前我们先测试一下两台虚拟机Host1和Host2上的br0和br1两两之间是否能相互通信。

root@ubuntu:~# ping 192.168.146.136        ## Host1 ping Host2的br0

PING 192.168.146.136 (192.168.146.136) 56(84) bytes of data.

64 bytes from 192.168.146.136: icmp_seq=1 ttl=64 time=1.88 ms

64 bytes from 192.168.146.136: icmp_seq=2 ttl=64 time=0.703 ms

root@ubuntu:~# ping 10.0.1.1        ## Host1 ping Host2的br1

PING 192.168.146.136 (192.168.146.136) 56(84) bytes of data.

br1和另一方的br1则不能通信,我们搭建隧道的目的就是让两台机器的br1(数据层面)能够实现通信。

  1. 在Host1上设置VXLAN,远端ip设置为Host2能对外通信的br0的ip。

# ovs-vsctl add-port br1 vx1 -- set interface vx1 type=vxlan

options:remote_ip=192.168.146.136

2. 在Host2上设置VXLAN,远端ip设置为Host1能对外通信的br0的

# ovs-vsctl add-port br1 vx1 -- set interface vx1 type=vxlan

options:remote_ip=192.168.146.131

3.4 验证VxLAN隧道

两台机器的br1互ping可以实现正常通信:

root@ubuntu:~# ping 10.0.1.1

PING 10.0.1.1 (10.0.1.1) 56(84) bytes of data.

64 bytes from 10.0.1.1: icmp_seq=1 ttl=64 time=15.4 ms

64 bytes from 10.0.1.1: icmp_seq=2 ttl=64 time=0.715 ms

root@ubuntu:~# ping 10.0.1.1

PING 10.0.1.1 (10.0.1.1) 56(84) bytes of data.

64 bytes from 10.0.1.1: icmp_seq=1 ttl=64 time=15.4 ms

64 bytes from 10.0.1.1: icmp_seq=2 ttl=64 time=0.715 m

同时通过抓包证明数据包的使用协议的确是VXLAN,具体见下图:

4. 结论

本实验搭建了基于Open vSwitch的VXLAN隧道,实现了不同网段内网机器的通信。实验是基于Open vSwitch的虚拟交换机进行实验的,有条件的朋友可以在真实环境中实验一下。

时间: 2024-11-07 09:09:53

搭建基于Open vSwitch的VxLAN隧道实验的相关文章

搭建基于Open vSwitch的VxLAN隧道实zz

https://www.sdnlab.com/5365.html vm1配置: # ovs-vsctl add-br br0# ovs-vsctl add-br br1# ovs-vsctl add-port br0 eth0  //eth0是物理网口的名字# ifconfig eth0 0 up && ifconfig br0 192.168.146.131/24 up  //ip能外部路由器在一个网段# route add default gw 192.168.146.2 br0  /

Open vSwitch的VxLAN隧道网络实验

实验参考 Open vSwitch的VxLAN隧道网络实验 实验步骤 1 预先配置 登录两台Mininet虚拟机或者是已安装OpenvSwitch的虚拟机. 查看两台虚拟机IP #ifconfig 验证OvS服务是否被启动好: # ps –ef|grep ovs OvS已启动. 步骤1:分别在两台机器上创建网桥: #sudo ovs-vsctl add-br br0 #sudo ovs-vsctl add-br br1 步骤2:mn虚拟机上将eth0的IP赋给br1: #ifconfig eth

Open vSwitch的GRE隧道实验网络

实验参考 Open vSwitch的GRE隧道实验网络 实验步骤: 1.配置VM1 (1)Open vSwitch服务验证 验证虚拟机VM1的OvS服务是否被启动好: # ps -ef|grep ovs  2. 在VM1中创建两个bridge: # ovs-vsctl add-br br0 # ovs-vsctl add-br br1  3. 配置br0: # ifconfig eth0 0 up # ifconfig br0 20.0.2.12 netmask 255.255.255.248

在CentOS7上配置Open vSwitch和VXLAN

在CentOS7上配置Open vSwitch和VXLAN 环境 实验环境 主机环境 [[email protected] ~]$ uname -a Linux node0 3.10.0-123.9.3.el7.x86_64 #1 SMP Thu Nov 6 15:06:03 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]$ cat /etc/redhat-release CentOS Linux release 7.0

Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网 [Netruon Open vSwitch + GRE/VxLAN Virutal Network]

学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron L3 agent (5)TBD 目前,OpenStack Neutron 支持使用两种隧道网络技术 通用路由封装(GRE) 和 VxLAN 来实现虚拟的二层网络.这两种技术大致看起来非常相似,都是需要使用 OpenStack 在计算和网络节点上建立隧道

基于 Open vSwitch 的 OpenFlow 实践(zz)

https://www.ibm.com/developerworks/cn/cloud/library/1401_zhaoyi_openswitch/index.html Open vSwitch 概述 Open vSwitch(下面简称为 OVS)是由 Nicira Networks 主导的,运行在虚拟化平台(例如 KVM,Xen)上的虚拟交换机.在虚拟化平台上,OVS 可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略.网络隔离.流量监控等等. OVS 遵循 Apach

[转]基于 Open vSwitch 的 OpenFlow 实践

Open vSwitch 概述 Open vSwitch(下面简称为 OVS)是由 Nicira Networks 主导的,运行在虚拟化平台(例如 KVM,Xen)上的虚拟交换机.在虚拟化平台上,OVS 可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略.网络隔离.流量监控等等. OVS 遵循 Apache 2.0 许可证, 能同时支持多种标准的管理接口和协议.OVS 也提供了对 OpenFlow 协议的支持,用户可以使用任何支持 OpenFlow 协议的控制器对 OVS

【转载】基于 Open vSwitch 的 OpenFlow 实践

Open vSwitch 概述 Open vSwitch(下面简称为 OVS)是由 Nicira Networks 主导的,运行在虚拟化平台(例如 KVM,Xen)上的虚拟交换机.在虚拟化平台上,OVS 可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略.网络隔离.流量监控等等. OVS 遵循 Apache 2.0 许可证, 能同时支持多种标准的管理接口和协议.OVS 也提供了对 OpenFlow 协议的支持,用户可以使用任何支持 OpenFlow 协议的控制器对 OVS

搭建基于MySQL的读写分离工具Amoeba

搭建基于MySQL的读写分离工具Amoeba: Amoeba工具是实现MySQL数据库读写分离的一个工具,前提是基于MySQL主从复制来实现的: 实验环境(虚拟机): 主机 角色 10.10.10.20 多实例加主从复制 10.10.10.30 Amoeba服务器 10.10.10.40 客户端(最后测试使用) 1.首先搭建MySQL的主从复制(不在多提):需要注意的是:在主从库上需要创建一个用户,在主库上创建的用户为amoeba,权限是create,update,insert,delete: