]> git.proxmox.com Git - pve-docs.git/blobdiff - vxlan-and-evpn.adoc
Add cluster join information screenshot
[pve-docs.git] / vxlan-and-evpn.adoc
index fd7f27455c5747b2c6d92e944be01d49c527cacd..703329dc3f8b2777870080f2e84928cab5b80d35 100644 (file)
@@ -16,6 +16,9 @@ while accommodating a very large number of tenants. It is defined in RFC 7348.
 Each overlay network is known as a VXLAN Segment and identified by a unique
 24-bit segment ID called a VXLAN Network Identifier (VNI).
 
+VXLAN encapsulation add 50bytes overhead, so you need to increase mtu on your host
+physical interfaces to 1550 at minimum. (or decrease mtu inside your vms to 1450)
+
 For BUM traffic (broadcast / unknown unicast traffic, multicast),
 we have 3 differents vxlan setup modes : multicast, unicast, bgp-evpn
 
@@ -36,6 +39,7 @@ remote VTEPs will get the packet and answer accordingly direct to the originatin
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
@@ -47,6 +51,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-svcnodeip 225.20.1.1
         vxlan-physdev eno1
 
@@ -58,6 +63,7 @@ iface vmbr2 inet manual
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-svcnodeip 225.20.1.1
         vxlan-physdev eno1
 
@@ -74,6 +80,7 @@ iface vmbr3 inet manual
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
@@ -85,6 +92,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-svcnodeip 225.20.1.1
         vxlan-physdev eno1
 
@@ -97,6 +105,7 @@ iface vmbr2 inet manual
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-svcnodeip 225.20.1.1
         vxlan-physdev eno1
 
@@ -113,6 +122,7 @@ iface vmbr3 inet manual
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
@@ -124,6 +134,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-svcnodeip 225.20.1.1
         vxlan-physdev eno1
 
@@ -136,6 +147,7 @@ iface vmbr2 inet manual
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-svcnodeip 225.20.1.1
         vxlan-physdev eno1
 
@@ -161,6 +173,7 @@ The VXLAN device will still learn remote addresses automatically using source-ad
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
@@ -173,6 +186,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan_remoteip 192.168.0.2
         vxlan_remoteip 192.168.0.3
 
@@ -186,6 +200,7 @@ iface vmbr2 inet manual
 
 auto vxlan3
 iface vxlan2 inet manual
+        vxlan-id 3
         vxlan_remoteip 192.168.0.2
         vxlan_remoteip 192.168.0.3
 
@@ -203,6 +218,7 @@ iface vmbr3 inet manual
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
@@ -214,6 +230,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan_remoteip 192.168.0.1
         vxlan_remoteip 192.168.0.3
 
@@ -227,6 +244,7 @@ iface vmbr2 inet manual
 
 auto vxlan3
 iface vxlan2 inet manual
+        vxlan-id 3
         vxlan_remoteip 192.168.0.1
         vxlan_remoteip 192.168.0.3
 
@@ -244,6 +262,7 @@ iface vmbr3 inet manual
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
@@ -255,6 +274,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan_remoteip 192.168.0.2
         vxlan_remoteip 192.168.0.3
 
@@ -268,6 +288,7 @@ iface vmbr2 inet manual
 
 auto vxlan3
 iface vxlan2 inet manual
+        vxlan-id 3
         vxlan_remoteip 192.168.0.2
         vxlan_remoteip 192.168.0.3
 
@@ -296,6 +317,7 @@ it's possible to use external bgp route reflector servers.
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
@@ -307,6 +329,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -323,6 +346,7 @@ iface vmbr2 inet manual
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -363,6 +387,7 @@ line vty
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
@@ -374,6 +399,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -389,6 +415,7 @@ iface vmbr2 inet manual
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -429,6 +456,7 @@ line vty
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
@@ -440,6 +468,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -455,6 +484,7 @@ iface vmbr2 inet manual
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -526,6 +556,7 @@ net.ipv6.conf.all.forwarding=1
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
  
 auto vmbr0
 iface vmbr0 inet static
@@ -537,6 +568,7 @@ iface vmbr0 inet static
  
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -556,6 +588,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -600,6 +633,7 @@ line vty
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
  
 auto vmbr0
 iface vmbr0 inet static
@@ -611,6 +645,7 @@ iface vmbr0 inet static
  
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -630,6 +665,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -674,6 +710,7 @@ line vty
 ----
 auto eno1
 iface eno1 inet manual
+       mtu 1550
  
 auto vmbr0
 iface vmbr0 inet static
@@ -685,6 +722,7 @@ iface vmbr0 inet static
  
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -704,6 +742,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -765,11 +804,6 @@ sysctl.conf tuning
 #enable routing
 net.ipv4.ip_forward=1
 net.ipv6.conf.all.forwarding=1
-#disable reverse path filtering
-net.ipv4.conf.default.rp_filter=0
-net.ipv4.conf.all.rp_filter=0
-#allow frr to work with vrf (kernel >4.14 bug)
-net.ipv4.tcp_l3mdev_accept=1
 ----
 
 * node1
@@ -781,6 +815,7 @@ iface vrf1
 
 auto eno1
 iface eno1 inet manual
+       mtu 1550
  
 auto vmbr0
 iface vmbr0 inet static
@@ -792,6 +827,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -810,6 +846,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -829,6 +866,7 @@ iface vmbr3 inet static
 #interconnect vxlan-vfr l3vni
 auto vxlan4000
 iface vxlan4000 inet manual
+        vxlan-id 4000
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -841,7 +879,6 @@ iface vmbr4000 inet manual
         bridge_ports vxlan4000
         bridge_stp off
         bridge_fd 0
-        hwaddress 44:39:39:FF:40:90  #must be different on each node
         vrf vrf1
 ----
 
@@ -850,6 +887,7 @@ frr.conf
 ----
 vrf vrf1
  vni 4000
+ exit-vrf
 !
 router bgp 1234
  bgp router-id 192.168.0.1
@@ -864,18 +902,6 @@ router bgp 1234
   advertise-all-vni
  exit-address-family
 !
-router bgp 1234 vrf vrf1
-! 
- bgp router-id 192.168.0.1
- ! 
- address-family ipv4 unicast
-  redistribute connected
- exit-address-family
- !
- address-family l2vpn evpn
-  advertise ipv4 unicast
- exit-address-family
-!
 line vty
 !
 ----
@@ -890,6 +916,7 @@ iface vrf1
 
 auto eno1
 iface eno1 inet manual
+       mtu 1550
  
 auto vmbr0
 iface vmbr0 inet static
@@ -901,6 +928,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -919,6 +947,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -938,6 +967,7 @@ iface vmbr3 inet static
 #interconnect vxlan-vfr l3vni
 auto vxlan4000
 iface vxlan4000 inet manual
+        vxlan-id 4000
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -950,7 +980,6 @@ iface vmbr4000 inet manual
         bridge_ports vxlan4000
         bridge_stp off
         bridge_fd 0
-        hwaddress 44:39:39:FF:40:91  #must be different on each node
         vrf vrf1
 ----
 
@@ -960,6 +989,7 @@ frr.conf
 ----
 vrf vrf1
  vni 4000
+ exit-vrf
 !
 router bgp 1234
  bgp router-id 192.168.0.2
@@ -974,18 +1004,6 @@ router bgp 1234
   advertise-all-vni
  exit-address-family
 !
-router bgp 1234 vrf vrf1
-! 
- bgp router-id 192.168.0.2
- ! 
- address-family ipv4 unicast
-  redistribute connected
- exit-address-family
- !
- address-family l2vpn evpn
-  advertise ipv4 unicast
- exit-address-family
-!
 line vty
 !
 ----
@@ -1000,6 +1018,7 @@ iface vrf1
 
 auto eno1
 iface eno1 inet manual
+       mtu 1550
  
 auto vmbr0
 iface vmbr0 inet static
@@ -1011,6 +1030,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1029,6 +1049,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1048,6 +1069,7 @@ iface vmbr3 inet static
 #interconnect vxlan-vfr l3vni
 auto vxlan4000
 iface vxlan4000 inet manual
+        vxlan-id 4000
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1060,7 +1082,6 @@ iface vmbr4000 inet manual
         bridge_ports vxlan4000
         bridge_stp off
         bridge_fd 0
-        hwaddress 44:39:39:FF:40:92  #must be different on each node
         vrf vrf1
 ----
 
@@ -1070,6 +1091,7 @@ frr.conf
 ----
 vrf vrf1
  vni 4000
+ exit-vrf
 !
 router bgp 1234
  bgp router-id 192.168.0.3
@@ -1084,18 +1106,6 @@ router bgp 1234
   advertise-all-vni
  exit-address-family
 !
-router bgp 1234 vrf vrf1
-! 
- bgp router-id 192.168.0.3
- ! 
- address-family ipv4 unicast
-  redistribute connected
- exit-address-family
- !
- address-family l2vpn evpn
-  advertise ipv4 unicast
- exit-address-family
-!
 line vty
 !
 ----
@@ -1107,8 +1117,7 @@ Routing to outside need the symmetric model.
 1 gateway node
 ^^^^^^^^^^^^^^
 In this example, we'll use only 1 proxmox node as exit gateway. (node1)
-This node have a simple default gw in the vrf to the external router (no bgp between router and node1)
-and announce this default gw to other proxmox nodes.
+This node announce the default gw in vrf1 (default originate) and forward to his own default gateway (192.168.0.254) (no bgp between router and node1)
 
 
 *node1
@@ -1120,26 +1129,20 @@ iface vrf1
 
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
          address 192.168.0.1
          netmask  255.255.255.0
+         gateway 192.168.0.254
          bridge_ports eno1
          bridge_stp off
          bridge_fd 0
 
-auto eno2
-iface eno2
-        address 172.16.0.1
-        netmask 255.255.255.0
-        vrf vrf1
-        post-up ip route add default via 172.16.0.254 dev eno2 vrf vrf1
-       #if you have multiple external routers, you can use ecmp balancing
-       #post-up route add default nexthop via 172.16.0.253 dev eno2 vrf vrf1 nexthop via 172.16.0.254 dev eno2 vrf vrf1
-
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1158,6 +1161,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1177,6 +1181,7 @@ iface vmbr3 inet static
 #interconnect vxlan-vfr l3vni
 auto vxlan4000
 iface vxlan4000 inet manual
+        vxlan-id 4000
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1188,7 +1193,6 @@ iface vmbr4000 inet manual
         bridge_ports vxlan4000
         bridge_stp off
         bridge_fd 0
-        hwaddress 44:39:39:FF:40:90  #must be different on each node
         vrf vrf1
 ----
 
@@ -1198,6 +1202,7 @@ frr.conf
 ----
 vrf vrf1
  vni 4000
+ exit-vrf
 !
 router bgp 1234
  bgp router-id 192.168.0.1
@@ -1206,6 +1211,10 @@ router bgp 1234
  neighbor 192.168.0.2 remote-as 1234
  neighbor 192.168.0.3 remote-as 1234
  !
+ address-family ipv4 unicast
+  import vrf vrf1
+ exit-address-family
+ !
  address-family l2vpn evpn
   neighbor 192.168.0.2 activate
   neighbor 192.168.0.3 activate
@@ -1214,15 +1223,8 @@ router bgp 1234
 !
 router bgp 1234 vrf vrf1
 !
- bgp router-id 172.16.0.1
- !
- address-family ipv4 unicast
-  redistribute connected
-  redistribute kernel !announce your default gw to all nodes
- exit-address-family
- !
  address-family l2vpn evpn
-  advertise ipv4 unicast
+  default-originate ipv4
  exit-address-family
 !
 line vty
@@ -1239,6 +1241,7 @@ iface vrf1
 
 auto eno1
 iface eno1 inet manual
+       mtu 1550
  
 auto vmbr0
 iface vmbr0 inet static
@@ -1250,6 +1253,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1268,6 +1272,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1287,6 +1292,7 @@ iface vmbr3 inet static
 #interconnect vxlan-vfr l3vni
 auto vxlan4000
 iface vxlan4000 inet manual
+        vxlan-id 4000
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1299,7 +1305,6 @@ iface vmbr4000 inet manual
         bridge_ports vxlan4000
         bridge_stp off
         bridge_fd 0
-        hwaddress 44:39:39:FF:40:91  #must be different on each node
         vrf vrf1
 ----
 
@@ -1309,6 +1314,7 @@ frr.conf
 ----
 vrf vrf1
  vni 4000
+ exit-vrf
 !
 router bgp 1234
  bgp router-id 192.168.0.2
@@ -1323,18 +1329,6 @@ router bgp 1234
   advertise-all-vni
  exit-address-family
 !
-router bgp 1234 vrf vrf1
-! 
- bgp router-id 192.168.0.2
- ! 
- address-family ipv4 unicast
-  redistribute connected
- exit-address-family
- !
- address-family l2vpn evpn
-  advertise ipv4 unicast
- exit-address-family
-!
 line vty
 !
 ----
@@ -1349,6 +1343,7 @@ iface vrf1
 
 auto eno1
 iface eno1 inet manual
+       mtu 1550
  
 auto vmbr0
 iface vmbr0 inet static
@@ -1360,6 +1355,7 @@ iface vmbr0 inet static
 
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1378,6 +1374,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1397,6 +1394,7 @@ iface vmbr3 inet static
 #interconnect vxlan-vfr l3vni
 auto vxlan4000
 iface vxlan4000 inet manual
+        vxlan-id 4000
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1409,7 +1407,6 @@ iface vmbr4000 inet manual
         bridge_ports vxlan4000
         bridge_stp off
         bridge_fd 0
-        hwaddress 44:39:39:FF:40:92  #must be different on each node
         vrf vrf1
 ----
 
@@ -1419,6 +1416,7 @@ frr.conf
 ----
 vrf vrf1
  vni 4000
+ exit-vrf
 !
 router bgp 1234
  bgp router-id 192.168.0.3
@@ -1433,18 +1431,6 @@ router bgp 1234
   advertise-all-vni
  exit-address-family
 !
-router bgp 1234 vrf vrf1
-! 
- bgp router-id 192.168.0.3
- ! 
- address-family ipv4 unicast
-  redistribute connected
- exit-address-family
- !
- address-family l2vpn evpn
-  advertise ipv4 unicast
- exit-address-family
-!
 line vty
 !
 ----
@@ -1452,8 +1438,8 @@ line vty
 multiple gateway nodes
 ^^^^^^^^^^^^^^^^^^^^^^
 In this example, all nodes will be used as exit gateway. (But you can use only 2 nodes if you want)
-All nodes have a simple default gw in the vrf to the external router (no bgp between router and node1)
-and announce this default gw.
+All nodes have a a default gw to the external router (192.168.0.254) (no bgp between router and node1)
+and announce this default gw in the vrf (default originate)
 The external router have ecmp routes to all proxmox nodes.(balancing).
 If the router send the packet to a wrong node (vm is not on this node), this node will route through
 vxlan the packet to final destination.
@@ -1467,26 +1453,20 @@ iface vrf1
 
 auto eno1
 iface eno1 inet manual
+       mtu 1550
 
 auto vmbr0
 iface vmbr0 inet static
          address 192.168.0.1
          netmask  255.255.255.0
+         gateway 192.168.0.254
          bridge_ports eno1
          bridge_stp off
          bridge_fd 0
 
-auto eno2
-iface eno2
-        address 172.16.0.1
-        netmask 255.255.255.0
-        vrf vrf1
-        post-up ip route add default via 172.16.0.254 dev eno2 vrf vrf1
-       #if you have multiple external routers, you can use ecmp balancing
-       #post-up route add default nexthop via 172.16.0.253 dev eno2 vrf vrf1 nexthop via 172.16.0.254 dev eno2 vrf vrf1
-
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1505,6 +1485,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1524,6 +1505,7 @@ iface vmbr3 inet static
 #interconnect vxlan-vfr l3vni
 auto vxlan4000
 iface vxlan4000 inet manual
+        vxlan-id 4000
         vxlan-local-tunnelip 192.168.0.1
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1535,7 +1517,6 @@ iface vmbr4000 inet manual
         bridge_ports vxlan4000
         bridge_stp off
         bridge_fd 0
-        hwaddress 44:39:39:FF:40:90  #must be different on each node
         vrf vrf1
 ----
 
@@ -1545,6 +1526,7 @@ frr.conf
 ----
 vrf vrf1
  vni 4000
+ exit-vrf
 !
 router bgp 1234
  bgp router-id 192.168.0.1
@@ -1553,6 +1535,10 @@ router bgp 1234
  neighbor 192.168.0.2 remote-as 1234
  neighbor 192.168.0.3 remote-as 1234
  !
+ address-family ipv4 unicast
+  import vrf vrf1
+ exit-address-family
+ !
  address-family l2vpn evpn
   neighbor 192.168.0.2 activate
   neighbor 192.168.0.3 activate
@@ -1561,15 +1547,8 @@ router bgp 1234
 !
 router bgp 1234 vrf vrf1
 !
- bgp router-id 172.16.0.1
- !
- address-family ipv4 unicast
-  redistribute connected
-  redistribute kernel !announce your default gw to all nodes
- exit-address-family
- !
  address-family l2vpn evpn
-  advertise ipv4 unicast
+  default-originate ipv4
  exit-address-family
 !
 line vty
@@ -1586,26 +1565,20 @@ iface vrf1
 
 auto eno1
 iface eno1 inet manual
+       mtu 1550
  
 auto vmbr0
 iface vmbr0 inet static
          address 192.168.0.2
          netmask  255.255.255.0
+         gateway 192.168.0.254
          bridge_ports eno1
          bridge_stp off
          bridge_fd 0
 
-auto eno2
-iface eno2
-        address 172.16.0.3
-        netmask 255.255.255.0
-        vrf vrf1
-        post-up ip route add default via 172.16.0.254 dev eno2 vrf vrf1
-       #if you have multiple external routers, you can use ecmp balancing
-       #post-up route add default nexthop via 172.16.0.253 dev eno2 vrf vrf1 nexthop via 172.16.0.254 dev eno2 vrf vrf1
-
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1624,6 +1597,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1643,6 +1617,7 @@ iface vmbr3 inet static
 #interconnect vxlan-vfr l3vni
 auto vxlan4000
 iface vxlan4000 inet manual
+        vxlan-id 4000
         vxlan-local-tunnelip 192.168.0.2
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1655,7 +1630,6 @@ iface vmbr4000 inet manual
         bridge_ports vxlan4000
         bridge_stp off
         bridge_fd 0
-        hwaddress 44:39:39:FF:40:91  #must be different on each node
         vrf vrf1
 ----
 
@@ -1665,6 +1639,7 @@ frr.conf
 ----
 vrf vrf1
  vni 4000
+ exit-vrf
 !
 router bgp 1234
  bgp router-id 192.168.0.2
@@ -1673,23 +1648,18 @@ router bgp 1234
  neighbor 192.168.0.1 remote-as 1234
  neighbor 192.168.0.3 remote-as 1234
  !
+ address-family ipv4 unicast
+  import vrf vrf1
+ exit-address-family
+ !
  address-family l2vpn evpn
   neighbor 192.168.0.1 activate
   neighbor 192.168.0.3 activate
   advertise-all-vni
  exit-address-family
 !
-router bgp 1234 vrf vrf1
-!
- bgp router-id 172.16.0.2
- !
- address-family ipv4 unicast
-  redistribute connected
-  redistribute kernel !announce your default gw to all nodes
- exit-address-family
- !
  address-family l2vpn evpn
-  advertise ipv4 unicast
+  default-originate ipv4
  exit-address-family
 !
 line vty
@@ -1706,26 +1676,20 @@ iface vrf1
 
 auto eno1
 iface eno1 inet manual
+       mtu 1550
+
 auto vmbr0
 iface vmbr0 inet static
          address 192.168.0.3
          netmask  255.255.255.0
+         gateway 192.168.0.254
          bridge_ports eno1
          bridge_stp off
          bridge_fd 0
 
-auto eno2
-iface eno2
-        address 172.16.0.3
-        netmask 255.255.255.0
-        vrf vrf1
-        post-up ip route add default via 172.16.0.254 dev eno2 vrf vrf1
-       #if you have multiple external routers, you can use ecmp balancing
-       #post-up route add default nexthop via 172.16.0.253 dev eno2 vrf vrf1 nexthop via 172.16.0.254 dev eno2 vrf vrf1
-
 auto vxlan2
 iface vxlan2 inet manual
+        vxlan-id 2
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1744,6 +1708,7 @@ iface vmbr2 inet static
 
 auto vxlan3
 iface vxlan3 inet manual
+        vxlan-id 3
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1763,6 +1728,7 @@ iface vmbr3 inet static
 #interconnect vxlan-vfr l3vni
 auto vxlan4000
 iface vxlan4000 inet manual
+        vxlan-id 4000
         vxlan-local-tunnelip 192.168.0.3
         bridge-learning off
         bridge-arp-nd-suppress on
@@ -1775,7 +1741,6 @@ iface vmbr4000 inet manual
         bridge_ports vxlan4000
         bridge_stp off
         bridge_fd 0
-        hwaddress 44:39:39:FF:40:92  #must be different on each node
         vrf vrf1
 ----
 
@@ -1785,6 +1750,7 @@ frr.conf
 ----
 vrf vrf1
  vni 4000
+ exit-vrf
 !
 router bgp 1234
  bgp router-id 192.168.0.3
@@ -1793,6 +1759,10 @@ router bgp 1234
  neighbor 192.168.0.1 remote-as 1234
  neighbor 192.168.0.2 remote-as 1234
  !
+ address-family ipv4 unicast
+  import vrf vrf1
+ exit-address-family
+ !
  address-family l2vpn evpn
   neighbor 192.168.0.1 activate
   neighbor 192.168.0.2 activate
@@ -1801,15 +1771,8 @@ router bgp 1234
 !
 router bgp 1234 vrf vrf1
 !
- bgp router-id 172.16.0.3
- !
- address-family ipv4 unicast
-  redistribute connected
-  redistribute kernel !announce your default gw to all nodes
- exit-address-family
- !
  address-family l2vpn evpn
-  advertise ipv4 unicast
+  default-originate ipv4
  exit-address-family
 !
 line vty
@@ -1819,39 +1782,46 @@ line vty
 Note
 ^^^^
 
-If your external router don't support ecmp to reach multiple proxmox nodes,
+If your external router don't support ecmp static route to reach multiple proxmox nodes,
 you can setup an HA floating vip on proxmox nodes with vrrp
 
-I this example, we will setup an floating 172.16.0.10 ip on node1 and node2.
+In this example, we will setup an floating 192.168.0.10 ip on node1 and node2.
 Node1 is the primary and failover to node2 in case of failure.
 
+This setup need vrrpd package (apt install vrrpd).
+#TODO : It should be possible to do it with frr directly with last version.
 
 * node1
 
 ----
-auto eno2
-iface eno2
-        address 172.16.0.1
-        netmask 255.255.255.0
-        vrf vrf1
-        post-up ip route add default via 172.16.0.254 dev eno2 vrf vrf1
-       vrrp-id 1
-       vrrp-priority 1
-       vrrp-virtual-ip 172.16.0.10
+auto vmbr0
+iface vmbr0 inet static
+         address 192.168.0.1
+         netmask  255.255.255.0
+         gateway 192.168.0.254
+         bridge_ports eno1
+         bridge_stp off
+         bridge_fd 0
+         vrrp-id 1
+         vrrp-priority 1
+         vrrp-virtual-ip 192.168.0.10
 ----
 
 * node2
 
 ----
-auto eno2
-iface eno2
-        address 172.16.0.2
-        netmask 255.255.255.0
-        vrf vrf1
-        post-up ip route add default via 172.16.0.254 dev eno2 vrf vrf1
-       vrrp-id 1
-       vrrp-priority 2
-       vrrp-virtual-ip 172.16.0.10
+auto vmbr0
+iface vmbr0 inet static
+         address 192.168.0.2
+         netmask  255.255.255.0
+         gateway 192.168.0.254
+         bridge_ports eno1
+         bridge_stp off
+         bridge_fd 0
+         vrrp-id 1
+         vrrp-priority 2
+         vrrp-virtual-ip 192.168.0.10
 ----
 
 
+#TODO : Documentation with bgp upstream router.