设为首页 收藏本站
查看: 1652|回复: 0

[经验分享] 搭建基于Open vSwitch的VxLAN隧道实验

[复制链接]

尚未签到

发表于 2019-1-28 06:02:55 | 显示全部楼层 |阅读模式
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。
# ifconfig br1 10.0.1.1/24 up
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(数据层面)能够实现通信。

  • 在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的虚拟交换机进行实验的,有条件的朋友可以在真实环境中实验一下。









运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668387-1-1.html 上篇帖子: 【OOW 2013】Oracle Open World 2013 甲骨文大会信息汇总 下篇帖子: Window.open() 全攻略
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表