搭建基于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的两个网桥:

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

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

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

给br1网桥分配一个ip。

3.2 配置Host2

按Host1同样步骤来配置Host2。

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

3.3 搭建VXLAN隧道

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

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

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

vxlan在ovs中查看

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

vxlan在ovs中查看131
3.4 验证VxLAN隧道

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

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

vxlan通过wireshark抓包查看

4. 结论

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


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/5365.html
分享到:
相关文章
条评论

登录后才可以评论

偶然左岸 发表于14-12-19
17