Linux 上对 VxLAN 的支持

首先,来看下 Linux 对 VxLAN 的支持,Linux 对 VxLAN 协议的支持时间并不久,2012 年 StepheHemminger 才把相关的工作合并到 kernel 中,并最终出现在 kernel 3.7.0 版本。为了稳定性和很多的功能,你可以会看到某些软件推荐在 3.9.0 或者 3.10.0 以后版本的 kernel 上使用 VxLAN。

这些版本的 Linux 对 VxLAN 的支持已经完备,支持单播和组播,IPv4 和 IPv6。利用 man 查看 ip 的 link 子命令,可以查看是否有 vxlan type,如下:

man ip link

以下的实验在如下的环境中完成:

  • 操作系统版本:CentOS Linux release 7.4.1708 (Core)
  • 内核版本:3.10.0-693.2.2.el7.x86_64
  • 云虚机vm1 eth0网络接口IP 172.31.0.106,云虚机vm2 eth0网络接口IP 172.31.0.107

02 实验1:最简单的点对点 VxLAN

创建简单的点对点 VxLAN 环境非常简单。如下图所示,只需要在两个机器(物理机或者虚拟机都可以,本实验中是云上的虚拟机环境)中各创建一个 vxlan 类型的网络接口即可,vxlan 类型的接口 vxlan1 可以作为的 VTEP。

在上面的环境中,注意我们将 vxlan 网络接口配置上 IP 地址,在 10.0.0.0/24 网段内。在 IP 地址分配后,Linux 系统的路由表就会创建一条路由,去往 10.0.0.0/24 网段的报文走网络接口 vxlan1 出去。vm1 上去往 10.0.0.0/24 的报文,在 vxlan1 上会做 VxLAN 封装,内层地址是10.0.0.106,外层地址是172.31.0.106。VxLAN 报文通过物理网络达到对端 vm2 上的 VETP vxlan1,在 vm2 的 vxlan1 接口上做VxLAN 协议的解封装,从而结束整个过程。

上图是一个物理上的示意图,在逻辑上形成的 VxLAN overlay 网络环境如下图,虚线部分示意出来的 Overlay Network 和 VxLAN Tunnel 都是逻辑上的概念。如果有容器和虚机被接入逻辑上的 Overlay 网络 10.0.0.0/24,它们完全不用感知底层物理网络,看起来对端是和自己在同一个二层环境里,就是像是在 VTEP 设备的上面直接构建了一条 VxLAN Tunnel,把 Overlay 网络里的网络接口直接在二层打通。

具体的配置只需要 3 条命令。如下,在 vm1 上执行如下命令:

# ip link add vxlan1 type vxlan id 1 remote 172.31.0.107 dstport 4789 dev eth0
# ip link set vxlan1 up
# ip addr add 10.0.0.106/24 dev vxlan1

上面的第一条命令创建了一个 Linux 上类型为 vxlan 的网络接口,名为 vxlan1。

  • id: VNI标识是1。
  • remote: 作为一个VTEP设备来封装和解封VXLAN报文,需要知道将封装好的VXLAN报文发送到哪个对端VTEP。Linux上可以利用group指定组播组地址,或者利用remote指定对端单播地址。在实验的云环境中默认不支持组播,这里利用remote指定点对点的对端IP地址为172.31.0.107。
  • dstport: 指定目的端口为4789。因为当Linux内核3.7版本首次实现VXLAN时,UDP端口还并没有规定下来。很多厂商利用了8472这个端口,Linux也采用了相同的端口。后来IANA分配了4789作为VXLAN的目的UDP端口。如果你需要使用IANA端口,需要用dstport指定。
  • dev: 指定VTEP通过哪个物理device来通信,这里是使用eth0。

第二条命令让 vxlan1 接口 up 起来。第三条命令给设备分配 IP 地址 10.0.0.106, 子网掩码为 24 (255.255.255.0)。

在 vm2 上,利用类似方法创建名为 vxlan1 的网络接口。

# ip link add vxlan1 type vxlan id 1 remote 172.31.0.106 dstport 4789 dev eth0
# ip link set vxlan1 up
# ip addr add 10.0.0.107/24 dev vxlan1

以上简单的命令就完成了所有配置。用 ifconfig 可以看到 vxlan1 网络接口,如下:

# ifconfig vxlan1
vxlan1: flags=4163<UP,BROAD
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值