OpenvSwitch系列之八 vxlan隧道
Open vSwitch系列之一 Open vSwitch诞生
Open vSwitch系列之二 安装指定版本ovs
Open vSwitch系列之三 ovs-vsctl命令使用
Open vSwitch系列之四 ovs-ofctl命令使用
Open vSwitch系列之五 网桥特性功能配置
Open vSwitch系列之六 vlan隔离
Open vSwitch系列之七 meter表限速
Open vSwitch系列之八 vxlan隧道
Open vSwitch系列之九 Group表
Open vSwitch系列之十 调用北向接口下发流表
OpenvSwitch系列之十一 ovs-dpdk
官方介绍
:
VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,是对传统VLAN协议的一种扩展。VXLAN的特点是将L2的以太帧封装到UDP报文(即L2 over L4)中,并在L3网络中传输。VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。
vxlan 是一种网络协议,将原始数据封装到UDP数据包中传输。vxlan被广泛应用到云计算网络环境中,耳熟能详的云计算框架openstack
主要的网络架构就是vxlan,kubernetes
也有vxlan的网络插件。vxlan 有许多优点,诸如:
- 连接两个局域网,可以将局域网内主机之间流量互通。就像是在局域网之间架起桥梁
- 支持隔离。vlan最多支持4096个隔离,而vxlan支持2的次方数32即 4294967296据隔离
本篇文章使用ovs搭建vxlan网桥,连接两个mininet构建的局域网。
实验环境:两台虚拟机 ubuntu1804桌面版+ubuntu1604桌面版+mininet
1|0安装mininet
分别在两台机器上安装mininet
1|1安装git工具
1|2从github上拉取mininet源码
1|3安装mininet
mininet的安装是进入mininet/util
目录中,然后执行 ./install -a
。-a
表示安装全部的组件。mininet的安装可以有很多备选项。
1|4验证安装
安装完成之后,ovs
会安装好,使用ovs-vsctl show
命令,查看ovs版本
使用命令 mn
创建一个最小拓扑的环境。包括一个控制器,一个交换机,两个主机。
2|0配置vxlan
2|1第一台机器配置
记录下第一台机器的ip地址和路由信息,后面会使用这些信息。
2|2第二台机器配置
同样,记录第二台机器的ip地址和路由信息。
2|3创建隧道网桥br-tun
使用ovs创建一个网桥,叫做br-tun,该网桥后面会作为vxlan隧道的端点。两个虚拟机都需要创建。
创建好br-tun之后,可以用ifconfig -a
查看到这个设备
第二台机器创建好的设备。
2|4转移ens33 网卡的ip地址到br-tun上
将网卡上的ip地址转交给br-tun。从上一步可以看出br-tun和网卡其实是非常类似的,将其赋值ip地址就可以当做网卡使用。现在要做的是把虚拟机网卡的ip地址给br-tun。
增加路由信息。将ip地址转交给br-tun之后,路由信息也需要更新。ip地址和路由信息都要以实际的信息,在复制实验时不可直接使用我的。这也是为什么在前面记录ip信息和路由信息的原因。
同样在第二台机器上完成同样的操作。
2|5将网卡ens33作为端口添加到br-tun
因为ens33是流量出虚拟机的接口,所以最后流量还是肯定走ens33网卡出去。br-tun只是一个虚拟机的设备,要将ens33作为端口加入br-tun中
同样在第二台机器上完成同样的操作。
2|6启动mininet
使用命令mn
启动一个最小拓扑的实验。创建的设备包括两个主机,h1,h2;一个交换机 s1
使用ovs-vsctl show
可以看到环境中新增了一个交换机s1
同样在第二台机器上完成同样的操作。
2|7修改主机IP地址
上一步创建的mininet中两个主机的默认地址都是10.0.0.1
和10.0.0.2
,需要将第一台虚拟机中的mininet的主机的地址修改10.0.0.3
和10.0.0.4
。构建的环境如下:
2|8创建vxlan隧道
在交换机s1创建vxlan隧道。这一步是最关键的一步。
其中s1
是创建隧道的网桥,remote_ip
就是隧道另外一端机器的ip地址。
查看创建好的隧道
在第二台虚拟机上做同样的操作
2|9验证通信
在第一台虚拟机上打开h2。使用命令xterm h2
可以打开mininet中h2的操作终端。
2|10抓取vxlan数据包
打开wireshark
,监听br-tun
隧道端点上的流量。可以看到目前流量就是ICMP
。
打开具体的icmp查看,与普通icmp有什么不同之处。正常icmp流量是icmp+网络层+数据链路层
,而使用vxlan的icmp则是 icmp + 网络层 + 数据链路层 + vxlan报文头 + udp + 网络层 + 数据链路层
。内层是10.0.0.3 ping 10.0.0.1的流量,这些流量被vxlan封装之后有外层包 192.168.175.130到192.168.175.128的UDP数据包。
最后看一下vxlan报文头的具体信息。里面包含了一个 vxlan network identity
即vni,就是类似与vlan tag的ID号。不同的ID号之间不可以通信。
3|0总结
在两个交换机上配置了vxlan之后,就像是在s1和s1之间打通了隧道,跨越局域网的限制传输数据。逻辑上是如上,实际是流量是从 h1 -->s1-->br-tun -->ens33 -->ens33 -->br-tun -->s1 -->h1
。
__EOF__

本文链接:https://www.cnblogs.com/goldsunshine/p/13630767.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理