使用 FRR 在 Linux 上设定 BGP EVPN

写在前面

你是否有打通异地的大二层需求选择什么方案而纠结?你是否还在为各种大二层 VPN 的组网工具不被专业路由设备支持而懊恼?
此篇的目的就是如何在 multicast 和 broadcast 不可用的情况下 ,通过 BGP EVPN 的方式打通多地的多个二层网络(VXLAN over WireGuard/IPSec/etc)。
也算是针对今年年初所配置的东西的一个总结和复习。

平时大家听过的 BGP 用的最多的是负责 IP 层的控制平面,主要传递的是路由和下一跳的信息和路由的各种属性。在 BGP EVPN(Ethernet Virtual Private Network) 中则是负责以太网层的控制平面,主要传递的则是 MAC 地址和其对应的 VTEP。
既然是 BGP ,我们也可以配合 OSPF 等动态路由协议进行多条路的选择和自动 failover,构建一个多地的大二层网络也非常的方便,网内也可在不同地区配置多个路由反射器(route reflector),以减少 iBGP 会话(session)的数量,减少故障发生的可能性。BGP 自身也可以进行过滤的操作,可以进行更严格的控制。
这种组网的方式也被绝大多数专业路由设备所支持,并且可以不依赖第三方服务。

在开始之前,我们仍然推荐读者先了解 VXLAN 的基础。可以查阅下方参考资料的第二个链接,本篇中不再重复。

Note: 如果想要简单一些的打通二层的组网工具的话,可以考虑使用 ZeroTier 和 Tinc,只要有 Linux 就可以用了,把接口往需要的地方一桥接,就 OK 了。

环境介绍

路由反射器使用 Alpine Linux 3.18,路由器 使用 Debian 12,均采用 FRRouting 8.5.2。
VNI 使用 100 和 200。 包括两个 VTEP,两个路由反射器。 本地回环地址就加到 dummy 接口上了,也是 rt1 和 rt2 各自的 VTEP IP。
目的是将 Region1 和 Region2 的 VM1 和 VM2,VM3 和 VM4 各自的二层网络打通。
IP 地址规划: Router 正排,Route Reflector 反排。

名称 IP/Prefix
evpn-rt1 loopback 192.168.224.1/32
evpn-rt2 loopback 192.168.224.2/32
evpn-rr1 loopback 192.168.224.254/32
evpn-rr2 loopback 192.168.224.253/32
WireGuard Iface 169.254.1.0/30
br-rr1 169.254.2.0/30
br-rr2 169.254.3.0/30

iBGP session 采用 ASN 为 65001。
图:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
+---------------------------+(br-rr1)                   (br-rr2)+---------------------------------+
|   Region1:                +----(RR1)                 (RR2)----+ Region2:                        |
|   +-----+(vni100)         |                                   |               +------+ (vni100) |
|   | vm1 +-----+ (bridged) |                                   | (bridged)+----+ vm2  |          |
|   +-----+     | +--------+|                                   |+-------+ |    +------+          |
|   +-----+     +-+ VTEP 1 =+=======(VXLAN over WireGuard)======+= VTEP 2+-+    +------+          |
|   | vm3 +-----+ +--------+| (WireGuard iface uses 169.254/30) |+-------+ +----+ vm4  |          |
|   +-----+(vni200)         |                                   |               +------+ (vni200) |
+---------------------------+                                   +---------------------------------+
抽象出来则是:
+---------------------------------+                   +----------------------------------+
|vm1 <----> br100 <---> vxlan100 <+===================+> vxlan100 <---> br100 <----> vm2 |
|vm3 <----> br200 <---> vxlan200 <+===================+> vxlan200 <---> br200 <----> vm4 |
+---------------------------------+                   +----------------------------------+

本次假定 WireGuard 隧道已经配置完毕,过程涵盖 OSPF 和 iBGP 的配置。

正文

OSPF 部分

配置各自的 Loopback 接口

对于 evpn-rt1:

1
2
ip link add dummy2 type dummy
ip link set dummy2 up

此处的 dummy 接口为承载 loopback 地址所用,可在接口设定之时使用 ip addr add 192.168.224.1/32 dev dummy2 手动加上 loopbck 地址,也可使用 frr 的 zebra 在接口设定之时配置上地址。
其余节点照葫芦画瓢即可。

配置各自节点的 OSPFv2

此处我们使用 IPv4 作为 VTEP IP,就使用 OSPFv2 了。
先编辑 /etc/frr/daemons ,将 bgpd 和 ospfd 改为 yes 以启用 bgpd 和 ospfd。
再进入 vtysh 配置 OSPF 的 router-id,接口和 cost,导入内核时设定的src地址。
此处为 evpn-rt1 配置 OSPFv2。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
ip router-id 192.168.224.1
!
interface br-rr1
 ! set transport address for br-rr1
 ip address 169.254.2.1/30
 ip ospf area 0
 ip ospf cost 1
exit
!
interface dummy2
 ! set loopback address for dummy interface
 ip address 192.168.224.1/32
 ip ospf area 0
 ip ospf passive
exit
!
interface vxlan-wg
 ! set transport address for vxlan-wg
 ip address 169.254.1.1/30
 ip ospf area 0
 ip ospf cost 10
exit
!
router ospf
 ospf router-id 192.168.224.1
exit
!
ip prefix-list ospf-routes seq 5 permit 192.168.224.0/24 ge 24
!
route-map ospf-vxlan permit 10
 match ip address prefix-list ospf-routes
 ! set source address for ospf routes
 set src 192.168.224.1
exit
!
ip protocol ospf route-map ospf-vxlan
!

其余的 evpn-rt2, evpn-rr1, evpn-rr2 节点照葫芦画瓢即可。

配置完成之后我们可以用这个检查:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
evpn-rt1# show ip ospf route
============ OSPF network routing table ============
N    169.254.1.0/30        [10] area: 0.0.0.0
                           directly attached to vxlan-wg
N    169.254.2.0/30        [1] area: 0.0.0.0
                           directly attached to br-rr1
N    169.254.3.0/30        [11] area: 0.0.0.0
                           via 169.254.1.2, vxlan-wg
N    192.168.224.1/32      [1] area: 0.0.0.0
                           directly attached to dummy2
N    192.168.224.2/32      [11] area: 0.0.0.0
                           via 169.254.1.2, vxlan-wg
N    192.168.224.254/32      [2] area: 0.0.0.0
                           via 169.254.2.2, br-rr1
N    192.168.224.253/32      [12] area: 0.0.0.0
                           via 169.254.1.2, vxlan-wg

============ OSPF router routing table =============

============ OSPF external routing table ===========

evpn-rt1# show ip fib ospf 
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

O>* 192.168.224.2/32 [110/11] via 169.254.1.2, vxlan-wg, weight 1, 00:07:51
O>* 192.168.224.254/32 [110/2] via 169.254.2.2, br-rr1, weight 1, 00:04:21
O>* 192.168.224.253/32 [110/12] via 169.254.1.2, vxlan-wg, weight 1, 00:06:03
evpn-rt1# quit
root@evpn-rt1:~# ip r
default via 192.168.80.1 dev lan onlink 
10.196.0.0/24 dev mgmt-vnc proto kernel scope link src 10.196.0.1 
169.254.1.0/30 dev vxlan-wg proto kernel scope link src 169.254.1.1 
169.254.2.0/30 dev br-rr1 proto kernel scope link src 169.254.2.1 
192.168.20.0/24 dev br0 proto kernel scope link src 192.168.20.3 linkdown 
192.168.80.0/24 dev lan proto kernel scope link src 192.168.80.5 
192.168.224.2 nhid 66 via 169.254.1.2 dev vxlan-wg proto ospf src 192.168.224.1 metric 20 
192.168.224.254 nhid 64 via 169.254.2.2 dev br-rr1 proto ospf src 192.168.224.1 metric 20 
192.168.224.253 nhid 66 via 169.254.1.2 dev vxlan-wg proto ospf src 192.168.224.1 metric 20 

可以看到,所有路由器的环回地址都进入了 OSPF 了,并已正确导入 FIB 。

BGP EVPN 部分

配置 VXLAN 和 bridge 接口

因为实际上是 evpn-rt1 和 evpn-rt2 作流量的转发,我们在这两个上配置接口即可。
我们将会在 rt1 上开两个 bridge 接口,br100 给 vm1 , br200 给 vm3。rt2 上也将 br100 给 vm2 ,br200 给 vm4,并且分别创建 vni 为 100 和 200 的 VXLAN 接口,并将它们分别加到 br100 和 br200 上。

1
2
3
4
5
6
7
8
pic:
+-----------------------------------------------------+
|+---------+         +------------+                 +=|======>>>>>
||         | (vnet1) |            |    +------------+ | 
||  VM 1   +---------+   br100    +----+  VXLAN100  ==|======>>>>> (forward traffic)
|+---------+         +------------+    +------------+ |
| Hypervisor VTEP                                   +=|======>>>>>
+-----------------------------------------------------+

具体步骤:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
lo_addr=192.168.224.1
for vni in 100 200; do
    # create bridge
    ip link add br${vni} type bridge
    # create VXLAN interface with corresponding vni
    ip link add vxlan${vni} type vxlan \
        local ${lo_addr} \
        dstport 4789 \
        id ${vni} \
        nolearning
    # attach VXLAN interface to bridge
    ip link set vxlan${vni} master br${vni} addrgenmode none
    ip link set vxlan${vni} type bridge_slave neigh_suppress on learning off
    ip link set vxlan${vni} up
    ip link set br${vni} up
done

加完接口之后,我们可以用 show interface 来检查。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
evpn-rt1# show interface vxlan100
Interface vxlan100 is up, line protocol is up
  Link ups:       1    last: 2023/07/23 17:50:49.98
  Link downs:     3    last: 2023/07/23 17:50:49.97
  vrf: default
  index 45 metric 0 mtu 1500 speed 4294967295 
  flags: <UP,BROADCAST,RUNNING,MULTICAST>
  Type: Ethernet
  HWaddr: 8e:d9:0c:54:15:a5
  Interface Type Vxlan
  Interface Slave Type Bridge
  VxLAN Id 100 VTEP IP: 192.168.224.1 Access VLAN Id 1

  Master interface: br100
  protodown: off 
evpn-rt1# show interface vxlan200
Interface vxlan200 is up, line protocol is up
  Link ups:       1    last: 2023/07/23 17:50:50.00
  Link downs:     3    last: 2023/07/23 17:50:49.99
  vrf: default
  index 47 metric 0 mtu 1500 speed 4294967295 
  flags: <UP,BROADCAST,RUNNING,MULTICAST>
  Type: Ethernet
  HWaddr: 9a:9c:c6:80:ad:d4
  Interface Type Vxlan
  Interface Slave Type Bridge
  VxLAN Id 200 VTEP IP: 192.168.224.1 Access VLAN Id 1

  Master interface: br200
  protodown: off

可以看到 frr 已经正确识别到 vxlan100 和 vxlan200 各自加到了 br100 和 br200 上,并且 VTEP IP 也已经正确配置。 此时 BGP 会话尚未建立,我们可以检查一下 vm1 加到 br100 接口上的网卡:

1
2
3
4
5
6
7
8
evpn-vm1:~# ping ff02::1%eth0
PING ff02::1%eth0 (ff02::1%2): 56 data bytes
64 bytes from fe80::5054:ff:fe35:e985: seq=0 ttl=64 time=0.149 ms
64 bytes from fe80::68b8:8fff:fea2:5609: seq=0 ttl=64 time=0.535 ms (DUP!)
^C
--- ff02::1%eth0 ping statistics ---
1 packets transmitted, 1 packets received, 1 duplicates, 0% packet loss
round-trip min/avg/max = 0.149/0.342/0.535 ms

可以看到,vm1 的接口上,目前整个大二层中只有它自己和物理机上的 br100。

配置 FRR

路由反射器(Route Reflector)

此处给 evpn-rr1 配置,evpn-rr2 也可类比配置。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
router bgp 65001
 bgp router-id 192.168.224.254
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 bgp cluster-id 192.168.224.254
 bgp route-reflector allow-outbound-policy
 neighbor vxlan-rrclient peer-group
 neighbor vxlan-rrclient remote-as 65001
 neighbor vxlan-rrclient update-source 192.168.224.254
 neighbor vxlan-rrclient capability extended-nexthop
 ! allow 192.168.224.0/24 to automatically establish sessions.
 bgp listen range 192.168.224.0/24 peer-group vxlan-rrclient
 !
 address-family l2vpn evpn
  neighbor vxlan-rrclient activate
  neighbor vxlan-rrclient route-reflector-client
  advertise-all-vni
 exit-address-family
exit
!

路由器(Router)

此处只需要将所有路由器都配置到连接到路由反射器(route reflector)即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
router bgp 65001
 bgp router-id 192.168.224.1
 no bgp default ipv4-unicast
 neighbor vxlan-rr peer-group
 neighbor vxlan-rr remote-as 65001
 neighbor vxlan-rr update-source 192.168.224.1
 neighbor vxlan-rr capability extended-nexthop
 ! Route reflectors placed here
 neighbor 192.168.224.254 peer-group vxlan-rr
 neighbor 192.168.224.253 peer-group vxlan-rr
 !
 address-family l2vpn evpn
  neighbor vxlan-rr activate
  advertise-all-vni
 exit-address-family
exit
!

配置完成之后,我们可以在 evpn-rt1 上检查一下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
evpn-rt1# show bgp sum

L2VPN EVPN Summary (VRF default):
BGP router identifier 192.168.224.1, local AS number 65001 vrf-id 0
BGP table version 0
RIB entries 7, using 1344 bytes of memory
Peers 2, using 1449 KiB of memory
Peer groups 1, using 64 bytes of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
192.168.224.254   4      65001        21        14        0    0    0 00:02:49            6        6 N/A
192.168.224.253   4      65001        25        19        0    0    0 00:08:48            6        6 N/A

Total number of neighbors 2
evpn-rt1# show evpn mac vni all

VNI 200 #MACs (local and remote) 2

Flags: N=sync-neighs, I=local-inactive, P=peer-active, X=peer-proxy
MAC               Type   Flags Intf/Remote ES/VTEP            VLAN  Seq #'s
52:54:00:5f:23:da remote       192.168.224.2                        0/0
52:54:00:0c:a5:24 local        vnet20                               0/0

VNI 100 #MACs (local and remote) 2

Flags: N=sync-neighs, I=local-inactive, P=peer-active, X=peer-proxy
MAC               Type   Flags Intf/Remote ES/VTEP            VLAN  Seq #'s
52:54:00:29:ce:c0 remote       192.168.224.2                        0/0
52:54:00:35:e9:85 local        vnet19                               0/0

我们也可以通过下述方法检查发送的 MAC + VTEP 信息:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
evpn-rt1# show bgp l2vpn evpn 
BGP table version is 9, local router ID is 192.168.224.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
EVPN type-1 prefix: [1]:[EthTag]:[ESI]:[IPlen]:[VTEP-IP]:[Frag-id]
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]

   Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 192.168.224.1:2
 *> [3]:[0]:[32]:[192.168.224.1]
                    192.168.224.1                      32768 i
                    ET:8 RT:65001:100
Route Distinguisher: 192.168.224.1:3
 *> [2]:[0]:[48]:[52:54:00:0c:a5:24]
                    192.168.224.1                      32768 i
                    ET:8 RT:65001:200
 *> [3]:[0]:[32]:[192.168.224.1]
                    192.168.224.1                      32768 i
                    ET:8 RT:65001:200
Route Distinguisher: 192.168.224.2:2
 *>i[3]:[0]:[32]:[192.168.224.2]
                    192.168.224.2            0    100      0 i
                    RT:65001:100 ET:8
 * i                 192.168.224.2            0    100      0 i
                    RT:65001:100 ET:8
Route Distinguisher: 192.168.224.2:3
 *>i[3]:[0]:[32]:[192.168.224.2]
                    192.168.224.2            0    100      0 i
                    RT:65001:200 ET:8
 * i                 192.168.224.2            0    100      0 i
                    RT:65001:200 ET:8

Displayed 5 out of 7 total prefixes

以及使用 bridge 工具查看对应信息是否已经插入了桥的转发数据库(FDB)。

1
2
3
root@evpn-rt1:~# bridge fdb show dev vxlan100 | grep dst
00:00:00:00:00:00 dst 192.168.224.2 self permanent
52:54:00:29:ce:c0 dst 192.168.224.2 self extern_learn 

可以看到 frr 已经正确给 kernel 提供了信息。

我们可以上 evpn-vm1 验证一下 vxlan100 的连通性。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
evpn-vm1:~# ping ff02::1%eth0
PING ff02::1%eth0 (ff02::1%2): 56 data bytes
64 bytes from fe80::5054:ff:fe35:e985: seq=0 ttl=64 time=0.308 ms
64 bytes from fe80::68b8:8fff:fea2:5609: seq=0 ttl=64 time=0.863 ms (DUP!)
64 bytes from fe80::d0dc:61ff:fecd:44e9: seq=0 ttl=64 time=1.674 ms (DUP!)
64 bytes from fe80::5054:ff:fe29:cec0: seq=0 ttl=64 time=2.276 ms (DUP!)
^C
--- ff02::1%eth0 ping statistics ---
1 packets transmitted, 1 packets received, 3 duplicates, 0% packet loss
round-trip min/avg/max = 0.308/1.280/2.276 ms

可以看到, evpn-vm1 所接的 br100 已与另一个 region 的 br100 和 vm2 打通。

我们再来看 evpn-vm3 验证一下 vxlan200 的连通性。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
evpn-vm3:~# ping ff02::1%eth0
PING ff02::1%eth0 (ff02::1%2): 56 data bytes
64 bytes from fe80::5054:ff:fe0c:a524: seq=0 ttl=64 time=0.297 ms
64 bytes from fe80::3c93:ebff:feaf:393a: seq=0 ttl=64 time=1.078 ms (DUP!)
64 bytes from fe80::9431:83ff:fe41:4e73: seq=0 ttl=64 time=1.886 ms (DUP!)
64 bytes from fe80::5054:ff:fe5f:23da: seq=0 ttl=64 time=1.975 ms (DUP!)
^C
--- ff02::1%eth0 ping statistics ---
1 packets transmitted, 1 packets received, 3 duplicates, 0% packet loss
round-trip min/avg/max = 0.297/1.309/1.975 ms

evpn-vm3 所接的 br200 已与另一个 region 的 br200 和 vm4 打通。
至此, 整个的流程就走完了。
接下来就是快乐的 cheatsheet 时间!

/etc/frr/frr.conf (cheatsheet)

  1. 路由器(Routers)的配置文件:使用 evpn-rt1 作为示例。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
frr version 8.5.2
frr defaults traditional
hostname evpn-rt1
service integrated-vtysh-config
!
ip router-id 192.168.224.1
!
interface br-rr1
 ip address 169.254.2.1/30
 ip ospf area 0
 ip ospf cost 1
exit
!
interface dummy2
 ip address 192.168.224.1/32
 ip ospf area 0
 ip ospf passive
exit
!
interface vxlan-wg
 ip address 169.254.1.1/30
 ip ospf area 0
 ip ospf cost 10
exit
!
router bgp 65001
 bgp router-id 192.168.224.1
 no bgp default ipv4-unicast
 neighbor vxlan-rr peer-group
 neighbor vxlan-rr remote-as 65001
 neighbor vxlan-rr update-source 192.168.224.1
 neighbor vxlan-rr capability extended-nexthop
 neighbor 192.168.224.254 peer-group vxlan-rr
 neighbor 192.168.224.253 peer-group vxlan-rr
 !
 address-family l2vpn evpn
  neighbor vxlan-rr activate
  advertise-all-vni
 exit-address-family
exit
!
router ospf
 ospf router-id 192.168.224.1
exit
!
ip prefix-list ospf-routes seq 5 permit 192.168.224.0/24 ge 24
!
route-map ospf-vxlan permit 10
 match ip address prefix-list ospf-routes
 set src 192.168.224.1
exit
!
ip protocol ospf route-map ospf-vxlan
!
  1. 路由反射器(route reflectors)的配置文件: 使用 evpn-rr1 作为示例。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
frr version 8.5.1
frr defaults traditional
hostname evpn-rr1
log syslog informational
!
ip router-id 192.168.224.254
!
interface dummy2
 ip address 192.168.224.254/32
 ip ospf area 0
 ip ospf passive
exit
!
interface eth1
 ip address 169.254.2.2/30
 ip ospf area 0
 ip ospf cost 1
exit
!
router bgp 65001
 bgp router-id 192.168.224.254
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 bgp cluster-id 192.168.224.254
 bgp route-reflector allow-outbound-policy
 neighbor vxlan-rrclient peer-group
 neighbor vxlan-rrclient remote-as 65001
 neighbor vxlan-rrclient update-source 192.168.224.254
 neighbor vxlan-rrclient capability extended-nexthop
 bgp listen range 192.168.224.0/24 peer-group vxlan-rrclient
 !
 address-family l2vpn evpn
  neighbor vxlan-rrclient activate
  neighbor vxlan-rrclient route-reflector-client
  advertise-all-vni
 exit-address-family
exit
!
router ospf
 ospf router-id 192.168.224.254
exit
!
ip prefix-list ospf-routes seq 5 permit 192.168.224.0/24 ge 24
!
route-map ospf-vxlan permit 10
 match ip address prefix-list ospf-routes
 set src 192.168.224.254
exit
!
ip protocol ospf route-map ospf-vxlan
!

参考资料

本篇用到的

  1. Vincent Bernat - VXLAN: BGP EVPN with FRR
  2. FRRouting - Docs - EVPN

补充资料

  1. Fun with veth-devices, Linux bridges and VLANs in unnamed Linux network namespaces – IV
  2. Vincent Bernat - VXLAN & Linux

补充说明

  1. WireGuard 接口、与路由反射器连接的接口,都要记得配上ptp地址作为传输地址喔,本例 cheatsheet 使用的是 169.254.x.x/30 地址。
  2. frr 的 interface 设定中可以加上 ip address 来让 zebra 设定地址,或者自行在开接口的时候设定也是可以的。
  3. 承载 loopback address 接口的 dummy 接口设定为了 passive,因为并不需要往这个接口上发 ospf hello。

结尾

此篇文章很大程度上依赖了 Vincent Bernat 的博文,以及感谢 Kusakabe Shi 对此方面示例配置文件的给出,以及群友的指教。
其实还有一点我还是没有写出,就是 VXLAN 接口加到 Linux Bridge 上之后在 bridge 上开启 bridge vlan filtering。之后在 bridge 上进行 tag/untag 之类的操作,这样在 vni 很多的时候就可以不用一个 vni 开一个 bridge了,比较遗憾。如果有读者感兴趣的话可以阅读补充资料,可以很大程度上起到帮助。
下一篇可能会写(水)这个?

Built with Hugo
Theme Stack designed by Jimmy