Think Deep,Work Lean

vxlan

Posted on By zack

前言

为什么需要Vxlan

普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3。L2结构里面,所有的服务器都在一个大的局域网里面,TOR透明L2,不同交换机上的服务器互通靠MAC地址,通信隔离和广播隔离靠的vlan,网关在内网核心上。而L3结构这是从TOR级别上就开始用协议进行互联,网关在TOR上,不同交换机之间的互通靠IP地址。

  在云计算IDC里,要求服务器做到虚拟化,原来这个服务器挂在TOR A上,我可以随意把它迁移到TOR B上,而不需要改变IP地址,这个有点就是L2网路的特长,因为我这个虚拟服务器和外界(网关之外)通信还靠L3,但是我网关内部互访是走L2的,这个在L3里是无法做到的。因为L3里每个IP都是唯一的,地址也是固定位置的,除非你整网段物理搬迁。因此如何在L3网络里传输L2数据呢,这就是overlay技术。

  因此VXLAN(Virtual eXtensible LAN可扩展虚拟局域网)诞生了,基于IP网络之上,采用的是MAC in UDP技术,本来OSI7层模型里就是一层叠一层的,这种和GRE/IPSEC等tunnel技术是不是很像,这种封装技术对中间网络没有特殊要求,只要你能识别IP报文即可进行传送。

好了,解释清楚了,那么现在总结为何需要Vxlan:

虚拟机规模受到网络规格的限制,大L2网络里,报文通过查询MAC地址转发,MAC表容量限制了虚拟机的数量。 网络隔离的限制,普通的vlan和VPN配置无法满足动态网络调整的需求,同时配置复杂 虚拟器搬迁受到限制,虚拟机启动后假如在业务不中断基础上将该虚拟机迁移到另外一台物理机上去,需要保持虚拟机的IP地址和MAC地址等参数保持不变,这就要求业务网络是一个二层的网络。

查看vxlan的信息

ip -d link show dev vxlan0

实现组播

ip link add vxlan0 type vxlan \
    id 42 \
    dstport 4789 \
    group 239.1.1.1 \
    local 192.168.0.2 \
    dev eth0

ip link add br0 type bridge
ip link set vxlan0 master br0
ip link set vxlan0 up
ip link set br0 up

ip netns add ns1

# 创建 veth pair,并把一端加到网桥上
ip link add veth0 type veth peer name veth1
ip link set dev veth0 master br0
ip link set dev veth0 up

# 配置namespace的网络和 IP
ip link set dev veth1 netns ns1
ip netns exec ns1 ip link set lo up

ip netns exec ns1 ip link set veth1 name eth0
ip netns exec ns1 ip addr add 198.18.0.2/24 dev eth0
ip netns exec ns1 ip link set eth0 up

三台虚机分别执行,将上面的Local地址分别换成192.168.0.3和192.168.0.4;netspace地址同样分别换成198.18.0.3、192.18.0.4

实现单播

使用 ip 命令创建我们的 vxlan interface:

ip link add vxlan0 type vxlan \
    id 42 \
    dstport 4789 \
    remote 192.168.0.3 \
    local 192.168.0.2 \
    dev eth0

上面这条命令创建一个名字为 vxlan0,类型为 vxlan 的网络 interface,后面是 vxlan interface 需要的参数:

id 42:指定 VNI 的值,这个值可以在 1 到 2^24 之间
dstport:vtep 4789,所以我们这里显式指定了它的值
remote 192.168.0.3:对方 vtep 的地址
local 192.168.0.2:当前节点 vtep 要使用的 IP 地址
dev eth0:当节点用于 vtep 通信的网卡设备,用来读取 IP 地址。注意这个参数和 local 参数含义是相同的,在这里写出来是为了告诉大家有两个参数存在

执行完之后,系统就会创建一个名字为 vxlan0 的 interface,可以用 ip -d link 查看它的详细信息:

ip -d link show dev vxlan0

为刚创建的 interface 配置 IP 地址并启用它:

ip addr add 198.18.0.2/24 dev vxlan0
ip link set vxlan0 up

执行结束之后,会发现路由表项多了下面的内容,所有 10.20.1.0/24 网段的 IP 地址要通过 vxlan0 来转发

root@node0:~# ip route
198.18.0.0      0.0.0.0         255.255.255.0   U     0      0        0 vxlan0

同时,vxlan0 fdb 表项中的内容如下:

[root@node1 ~]# bridge fdb
00:00:00:00:00:00 dev vxlan0 dst 192.168.0.3 via eth0 self permanent
8a:52:a4:9d:43:eb dev vxlan0 dst 192.168.0.3 self

这个表项的意思是说,默认的 vtep 对端地址为192.168.0.3 ,换句话说,如果接收到的报文添加上 vxlan 头部之后都会发到 192.168.0.3。

在另外一台虚拟机(192.168.0.3)上也进行相同的配置,要保证 VNI 也是 42,dstport 也是 4789,并修改 vtep 的地址和 remote IP 地址到相应的值。测试两台 vtep 的连通性:

实现以下要求

1)三个主机192.168.0.2~4
2)每个主机里面:
    1. 建立一个linux bridge, 使用者brctl 命令。
    2. 使用 Linux network namespace 模拟虚拟机,方法: ip link 创建 veth网卡,分别挂载到bridge和netns里面
    3. 在netns里面配置ip地址, 比如 198.18.0.2/24
    4. 创建vxlan link,并添加到bridge里面
    5. 配置vxlan规则,让netns里面的地址198.18.0.0/24可以互通
3)虚拟网络要能做到:
    1. 不用组播,使用单播发送vxlan udp报文
    2. 虚拟网络支持广播和组播
    3. arp泛洪抑制

2. 使用lwt [4] 功能, 配置2个虚拟网络, 分别使用vxlan id 10和11, 但只用一个bridge和vtep, 应该怎么配置?提示:需阅读并完善 linux kernel和iproute2代码

首先实现第2题的要求,node1(实现所有的要求,每个节点执行以下指令,node2/node3依次把下列IP顺序加1即可)

ip link add vxlan1 type vxlan \
    id 43 \
    dstport 4790 \
    group 239.1.1.1 \
    local 192.168.0.2 \
    dev eth0

ip link set vxlan1 up
ip netns add ns2
ip netns add ns3
brctl addbr br1
ip link set br1 up
ip link add tap1_0 type veth peer name tap1_1
ip link set tap1_1 netns ns2
brctl addif br1 tap1_0
ip netns exec ns2 ip addr add local 100.0.1.2/24 dev tap1_1
ip link set tap1_0 up
ip netns exec ns2 ip link set tap1_1 up
ip link add tap2_0 type veth peer name tap2_1
ip link set tap2_1 netns ns3
brctl addif br1 tap2_0
ip netns exec ns3 ip addr add local 100.0.2.2/24 dev tap2_1
ip link set tap2_0 up
ip netns exec ns3 ip link set tap2_1 up

ip link set br1 type bridge vlan_filtering 1
bridge vlan add dev tap1_0 vid 10 pvid untagged master
bridge vlan add dev tap2_0 vid 11 pvid untagged master

brctl addif br1 vxlan1

bridge vlan add vid 10 dev vxlan1
bridge vlan add vid 11 dev vxlan1

bridge vlan add dev vxlan1 vid 10 tunnel_info id 10
bridge vlan add dev vxlan1 vid 11 tunnel_info id 11
bridge vlan show


###br0
ip link add vxlan0 type vxlan \
    id 42 \
    dstport 4789 \
    group 239.1.1.1 \
    local 192.168.0.2 \
    dev eth0

ip link add br0 type bridge
ip link set vxlan0 master br0
ip link set vxlan0 up
ip link set br0 up

ip netns add ns1

# 创建 veth pair,并把一端加到网桥上
ip link add veth0 type veth peer name veth1
ip link set dev veth0 master br0
ip link set dev veth0 up

# 配置namespace的网络和 IP
ip link set dev veth1 netns ns1
ip netns exec ns1 ip link set lo up

ip netns exec ns1 ip link set veth1 name eth0
ip netns exec ns1 ip addr add 198.18.0.2/24 dev eth0
ip netns exec ns1 ip link set eth0 up

node2

ip link add vxlan1 type vxlan \
    id 43 \
    dstport 4790 \
    group 239.1.1.1 \
    local 192.168.0.3 \
    dev eth0

ip link set vxlan1 up
ip netns add ns2
ip netns add ns3
brctl addbr br1
ip link set br1 up
ip link add tap1_0 type veth peer name tap1_1
ip link set tap1_1 netns ns2
brctl addif br1 tap1_0
ip netns exec ns2 ip addr add local 100.0.1.3/24 dev tap1_1
ip link set tap1_0 up
ip netns exec ns2 ip link set tap1_1 up
ip link add tap2_0 type veth peer name tap2_1
ip link set tap2_1 netns ns3
brctl addif br1 tap2_0
ip netns exec ns3 ip addr add local 100.0.2.3/24 dev tap2_1
ip link set tap2_0 up
ip netns exec ns3 ip link set tap2_1 up

ip link set br1 type bridge vlan_filtering 1
bridge vlan add dev tap1_0 vid 10 pvid untagged master
bridge vlan add dev tap2_0 vid 11 pvid untagged master

brctl addif br1 vxlan1

bridge vlan add vid 10 dev vxlan1
bridge vlan add vid 11 dev vxlan1

bridge vlan add dev vxlan1 vid 10 tunnel_info id 10
bridge vlan add dev vxlan1 vid 11 tunnel_info id 11
bridge vlan show


###br0
ip link add vxlan0 type vxlan \
    id 42 \
    dstport 4789 \
    group 239.1.1.1 \
    local 192.168.0.3 \
    dev eth0

ip link add br0 type bridge
ip link set vxlan0 master br0
ip link set vxlan0 up
ip link set br0 up

ip netns add ns1

# 创建 veth pair,并把一端加到网桥上
ip link add veth0 type veth peer name veth1
ip link set dev veth0 master br0
ip link set dev veth0 up

# 配置namespace的网络和 IP
ip link set dev veth1 netns ns1
ip netns exec ns1 ip link set lo up

ip netns exec ns1 ip link set veth1 name eth0
ip netns exec ns1 ip addr add 198.18.0.3/24 dev eth0
ip netns exec ns1 ip link set eth0 up

node3

ip link add vxlan1 type vxlan \
    id 43 \
    dstport 4790 \
    group 239.1.1.1 \
    local 192.168.0.4 \
    dev eth0

ip link set vxlan1 up
ip netns add ns2
ip netns add ns3
brctl addbr br1
ip link set br1 up
ip link add tap1_0 type veth peer name tap1_1
ip link set tap1_1 netns ns2
brctl addif br1 tap1_0
ip netns exec ns2 ip addr add local 100.0.1.4/24 dev tap1_1
ip link set tap1_0 up
ip netns exec ns2 ip link set tap1_1 up
ip link add tap2_0 type veth peer name tap2_1
ip link set tap2_1 netns ns3
brctl addif br1 tap2_0
ip netns exec ns3 ip addr add local 100.0.2.4/24 dev tap2_1
ip link set tap2_0 up
ip netns exec ns3 ip link set tap2_1 up

ip link set br1 type bridge vlan_filtering 1
bridge vlan add dev tap1_0 vid 10 pvid untagged master
bridge vlan add dev tap2_0 vid 11 pvid untagged master

brctl addif br1 vxlan1

bridge vlan add vid 10 dev vxlan1
bridge vlan add vid 11 dev vxlan1

bridge vlan add dev vxlan1 vid 10 tunnel_info id 10
bridge vlan add dev vxlan1 vid 11 tunnel_info id 11
bridge vlan show


###br0
ip link add vxlan0 type vxlan \
    id 42 \
    dstport 4789 \
    group 239.1.1.1 \
    local 192.168.0.4 \
    dev eth0

ip link add br0 type bridge
ip link set vxlan0 master br0
ip link set vxlan0 up
ip link set br0 up

ip netns add ns1

# 创建 veth pair,并把一端加到网桥上
ip link add veth0 type veth peer name veth1
ip link set dev veth0 master br0
ip link set dev veth0 up

# 配置namespace的网络和 IP
ip link set dev veth1 netns ns1
ip netns exec ns1 ip link set lo up

ip netns exec ns1 ip link set veth1 name eth0
ip netns exec ns1 ip addr add 198.18.0.4/24 dev eth0
ip netns exec ns1 ip link set eth0 up

附:

改之前
[root@node1 ~]# ip -d link show vxlan0
9: vxlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master br0 state UNKNOWN mode DEFAULT qlen 1000
    link/ether 32:eb:9d:61:01:5f brd ff:ff:ff:ff:ff:ff promiscuity 1
    vxlan id 42 group 239.1.1.1 local 192.168.0.2 dev eth0 srcport 0 0 dstport 4789 ageing 300
    bridge_slave state forwarding priority 32 cost 100 hairpin off guard off root_block off fastleave off learning on flood on port_id 0x8001 port_no 0x1 designated_port 32769 designated_cost 0 designated_bridge 8000.26:ba:b9:d5:e6:a3 designated_root 8000.26:ba:b9:d5:e6:a3 hold_timer    0.00 message_age_timer    0.00 forward_delay_timer    0.00 topology_change_ack 0 config_pending 0 proxy_arp off proxy_arp_wifi off mcast_router 1 mcast_fast_leave off addrgenmode eui64

# bridge fdb     
6e:fd:a0:f0:00:33 dev tap1_0 vlan 10 master br1 permanent
6e:fd:a0:f0:00:33 dev tap1_0 vlan 1 master br1 permanent
6e:fd:a0:f0:00:33 dev tap1_0 master br1 permanent
33:33:00:00:00:01 dev tap1_0 self permanent
01:00:5e:00:00:01 dev tap1_0 self permanent
33:33:ff:f0:00:33 dev tap1_0 self permanent
ca:1a:26:b1:43:cd dev tap2_0 master br1 permanent
ca:1a:26:b1:43:cd dev tap2_0 vlan 11 master br1 permanent
ca:1a:26:b1:43:cd dev tap2_0 vlan 1 master br1 permanent
33:33:00:00:00:01 dev tap2_0 self permanent
01:00:5e:00:00:01 dev tap2_0 self permanent
33:33:ff:b1:43:cd dev tap2_0 self permanent
4e:59:cf:d3:c7:3e dev vxlan0 master br0
32:eb:9d:61:01:5f dev vxlan0 master br0 permanent
4e:f9:6c:51:57:bd dev vxlan0 master br0
32:eb:9d:61:01:5f dev vxlan0 vlan 1 master br0 permanent
00:00:00:00:00:00 dev vxlan0 dst 239.1.1.1 via eth0 self permanent
4e:f9:6c:51:57:bd dev vxlan0 dst 192.168.0.3 self
4e:59:cf:d3:c7:3e dev vxlan0 dst 192.168.0.4 self
33:33:00:00:00:01 dev br0 self permanent
01:00:5e:00:00:01 dev br0 self permanent
33:33:ff:61:01:5f dev br0 self permanent
26:ba:b9:d5:e6:a3 dev veth0 vlan 1 master br0 permanent
26:ba:b9:d5:e6:a3 dev veth0 master br0 permanent
42:6d:95:4d:08:cd dev veth0 master br0
33:33:00:00:00:01 dev veth0 self permanent
01:00:5e:00:00:01 dev veth0 self permanent
33:33:ff:d5:e6:a3 dev veth0 self permanent

执行以下:
bridge link set dev vxlan0 flood off
bridge link set dev vxlan0 learning off

改之后

6e:fd:a0:f0:00:33 dev tap1_0 vlan 10 master br1 permanent
6e:fd:a0:f0:00:33 dev tap1_0 vlan 1 master br1 permanent
6e:fd:a0:f0:00:33 dev tap1_0 master br1 permanent
33:33:00:00:00:01 dev tap1_0 self permanent
01:00:5e:00:00:01 dev tap1_0 self permanent
33:33:ff:f0:00:33 dev tap1_0 self permanent
ca:1a:26:b1:43:cd dev tap2_0 master br1 permanent
ca:1a:26:b1:43:cd dev tap2_0 vlan 11 master br1 permanent
ca:1a:26:b1:43:cd dev tap2_0 vlan 1 master br1 permanent
33:33:00:00:00:01 dev tap2_0 self permanent
01:00:5e:00:00:01 dev tap2_0 self permanent
33:33:ff:b1:43:cd dev tap2_0 self permanent
32:eb:9d:61:01:5f dev vxlan0 master br0 permanent
32:eb:9d:61:01:5f dev vxlan0 vlan 1 master br0 permanent
00:00:00:00:00:00 dev vxlan0 dst 239.1.1.1 via eth0 self permanent
4e:f9:6c:51:57:bd dev vxlan0 dst 192.168.0.3 self permanent
33:33:00:00:00:01 dev br0 self permanent
01:00:5e:00:00:01 dev br0 self permanent
33:33:ff:61:01:5f dev br0 self permanent
26:ba:b9:d5:e6:a3 dev veth0 vlan 1 master br0 permanent
26:ba:b9:d5:e6:a3 dev veth0 master br0 permanent
42:6d:95:4d:08:cd dev veth0 master br0
33:33:00:00:00:01 dev veth0 self permanent
01:00:5e:00:00:01 dev veth0 self permanent
33:33:ff:d5:e6:a3 dev veth0 self permanent

需加上以下路由
bridge fdb add 4e:f9:6c:51:57:bd  dev vxlan0 dst 192.168.0.3 self
bridge fdb add 4e:59:cf:d3:c7:3e dev vxlan0 dst 192.168.0.4 self
bridge fdb append 4e:59:cf:d3:c7:3e dev vxlan0 master via br0
bridge fdb append 4e:f9:6c:51:57:bd dev vxlan0 master via br0

32:eb:9d:61:01:5f dev vxlan0 master br0 permanent

#删除
#1.只删路由
bridge fdb delete 4e:f9:6c:51:57:bd  dev vxlan0 dst 192.168.0.3 self
bridge fdb delete 4e:59:cf:d3:c7:3e dev vxlan0 dst 192.168.0.4 self
bridge fdb delete 4e:59:cf:d3:c7:3e dev vxlan0 master via br0
bridge fdb delete 4e:f9:6c:51:57:bd dev vxlan0 master via br0
bridge link set dev vxlan0 learning off
bridge link set dev vxlan0 learning on
bridge link set dev vxlan0 flood off
bridge link set dev vxlan0 flood on

#2.删br0组网
ip link delete br0
ip link delete vxlan0
ip link delete veth0
ip netns delete ns1

采用单播

#node1
ip link add vxlan0 type vxlan \
    id 42 \
    dstport 4789 \
    remote 192.168.0.3 \
    local 192.168.0.2 \
    dev eth0
ip link add br0 type bridge
ip link set vxlan0 master br0
ip link set vxlan0 up
ip link set br0 up
ip netns add ns1
# 创建 veth pair,并把一端加到网桥上
ip link add veth0 type veth peer name veth1
ip link set dev veth0 master br0
ip link set dev veth0 up
# 配置namespace的网络和 IP
ip link set dev veth1 netns ns1
ip netns exec ns1 ip link set lo up
ip netns exec ns1 ip link set veth1 name eth0
ip netns exec ns1 ip addr add 198.18.0.2/24 dev eth0
ip netns exec ns1 ip link set eth0 up

#node2
ip link add vxlan0 type vxlan \
    id 42 \
    dstport 4789 \
    remote 192.168.0.2 \
    local 192.168.0.3 \
    dev eth0
ip link add br0 type bridge
ip link set vxlan0 master br0
ip link set vxlan0 up
ip link set br0 up
ip netns add ns1
# 创建 veth pair,并把一端加到网桥上
ip link add veth0 type veth peer name veth1
ip link set dev veth0 master br0
ip link set dev veth0 up
# 配置namespace的网络和 IP
ip link set dev veth1 netns ns1
ip netns exec ns1 ip link set lo up
ip netns exec ns1 ip link set veth1 name eth0
ip netns exec ns1 ip addr add 198.18.0.3/24 dev eth0
ip netns exec ns1 ip link set eth0 up

#node3  
ip netns add ns1  
ip link add veth0 type veth peer name veth1  
brctl addbr br0  
brctl addif br0 veth0  
ip link set veth1 netns ns1
ip netns exec ns1 ip link set veth1 name eth0
ip link add vxlan0 type vxlan id 42 dstport 4789 remote 192.168.0.2  dev eth0  
brctl addif br0 vxlan0  
ip netns exec ns1 ip addr add 198.18.0.4/24 dev eth0  
ip link set veth0 up  
ip netns exec ns1 ip link set eth0 up  
ip netns exec ns1 ip link set lo up  
ip link set br0 up  
ip link set vxlan0 up  
bridge fdb append 00:00:00:00:00:00 dev vxlan0 dst 192.168.0.2 via eth0
bridge fdb append 00:00:00:00:00:00 dev vxlan0 dst 192.168.0.4 via eth0

以上网络仍然没有解决arp泛洪抑制,采用proxy方式,执行如下命令完成:

#采用proxy:
#node1
ip link add vxlan11 type vxlan id 111 dstport 4791 local 192.168.0.2 proxy dev eth0
bridge fdb append 00:00:00:00:00:00 dev vxlan11 dst 192.168.0.3 via eth0
bridge fdb append 00:00:00:00:00:00 dev vxlan11 dst 192.168.0.4 via eth0
ip link add br11 type bridge
ip link set vxlan11 master br11
ip link set vxlan11 up
ip link set br11 up
ip netns add ns11
# 创建 veth pair,并把一端加到网桥上
ip link add veth00 type veth peer name veth11
ip link set dev veth00 master br11
ip link set dev veth00 up
# 配置namespace的网络和 IP
ip link set dev veth11 netns ns11
ip netns exec ns11 ip link set lo up
ip netns exec ns11 ip link set veth11 name eth0
ip netns exec ns11 ip addr add 198.18.0.2/24 dev eth0
ip netns exec ns11 ip link set eth0 up
ip netns exec ns11 ip ad

#node2
ip link add vxlan11 type vxlan id 111 dstport 4791 local 192.168.0.3  proxy dev eth0
bridge fdb append 00:00:00:00:00:00 dev vxlan11 dst 192.168.0.2 via eth0
bridge fdb append 00:00:00:00:00:00 dev vxlan11 dst 192.168.0.4 via eth0
ip link add br11 type bridge
ip link set vxlan11 master br11
ip link set vxlan11 up
ip link set br11 up
ip netns add ns11
# 创建 veth pair,并把一端加到网桥上
ip link add veth00 type veth peer name veth11
ip link set dev veth00 master br11
ip link set dev veth00 up
# 配置namespace的网络和 IP
ip link set dev veth11 netns ns11
ip netns exec ns11 ip link set lo up
ip netns exec ns11 ip link set veth11 name eth0
ip netns exec ns11 ip addr add 198.18.0.3/24 dev eth0
ip netns exec ns11 ip link set eth0 up
ip netns exec ns11 ip ad

#node3
ip link add vxlan11 type vxlan id 111 dstport 4791 local 192.168.0.4  proxy dev eth0
bridge fdb append 00:00:00:00:00:00 dev vxlan11 dst 192.168.0.2 via eth0
bridge fdb append 00:00:00:00:00:00 dev vxlan11 dst 192.168.0.3 via eth0
ip link add br11 type bridge
ip link set vxlan11 master br11
ip link set vxlan11 up
ip link set br11 up
ip netns add ns11
# 创建 veth pair,并把一端加到网桥上
ip link add veth00 type veth peer name veth11
ip link set dev veth00 master br11
ip link set dev veth00 up
# 配置namespace的网络和 IP
ip link set dev veth11 netns ns11
ip netns exec ns11 ip link set lo up
ip netns exec ns11 ip link set veth11 name eth0
ip netns exec ns11 ip addr add 198.18.0.4/24 dev eth0
ip netns exec ns11 ip link set eth0 up
ip netns exec ns11 ip ad

#添加neigh,这个mac地址是ns11的eth0地址,需要根据实际查询情况来,每次重新创建后都会发生变化
#node1
ip neigh add 198.18.0.3 lladdr 3a:bb:98:5c:0c:3b dev vxlan11
ip neigh add 198.18.0.4 lladdr ae:83:69:c9:6d:86 dev vxlan11
#node2
ip neigh add 198.18.0.2 lladdr 3a:bb:98:5c:0c:3b dev vxlan11
ip neigh add 198.18.0.4 lladdr ae:83:69:c9:6d:86 dev vxlan11
#node3
ip neigh add 198.18.0.2 lladdr 3a:bb:98:5c:0c:3b dev vxlan11
ip neigh add 198.18.0.3 lladdr ae:83:69:c9:6d:86 dev vxlan11

#删除
ip link delete vxlan11
ip link delete br11
ip link delete veth00
ip netns delete ns11

升级内核

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
yum --enablerepo=elrepo-kernel install kernel-lt -y
grub2-editenv  list
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-editenv  list

echo 0 > /proc/sys/net/ipv4/conf/vxlan0/proxy_arp_pvlan
#或者sysctl -w net.ipv4.conf.eth1.proxy_arp_pvlan=1
ip netns exec ns1
echo 1>/proc/sys/net/ipv4/conf/veth0/proxy_arp_pvlan

tcpdump -i vxlan0 -nel -c 10
827  tcpdump -i eth0 udp -nel -c 10
828  tcpdump -i vxlan0 -nel -c 10
829  tcpdump -i eth0 udp -nel -c 10
830  brctl show
831  ip -d link show dev vxlan0
832  ip n show dev vxlan0
833  ip netns list
834  ip netns exec ns1 ip n
835  ebtables -t nat -L

836  ebtables  -L
837  ip netns exec ns1 ip n
838  ip netns exec ns1 arping 198.18.0.3
839  ip netns exec ns1 arping -b 198.18.0.3
840  tcpdump -i vxlan0 -enl -c 10