Configuration
Datacenter 2
Je ne vais pas repasser sur la configuration de l'underlay et de l'overlay pour le nouveau datacenter. C'est exactement la même configuration que pour les épisodes qui traitent de ce sujet.
Switchs | AS BGP | Loopback1 Control Plane | Loopback2 Data Plane |
---|---|---|---|
Leaf1 | 65101 | 2001:172:16:10::1/128 | 2001:172:16:20::1/128 |
Leaf2 | 65101 | 2001:172:16:10::2/128 | 2001:172:16:20::2/128 |
Leaf3 | 65102 | 2001:172:16:10::3/128 | 2001:172:16:20::3/128 |
Leaf4 | 65102 | 2001:172:16:10::4/128 | 2001:172:16:20::4/128 |
Spine1 | 65100 | 2001:172:16:10::10/128 | |
Spine2 | 65100 | 2001:172:16:10::20/128 |
Spine1-C1#sh bgp evpn summary
BGP summary information for VRF default
Router identifier 172.16.2.10, local AS number 65100
Neighbor Status Codes: m - Under maintenance
Neighbor V AS MsgRcvd MsgSent InQ OutQ Up/Down State PfxRcd PfxAcc
2001:172:16:10::1 4 65101 1017 1024 0 0 04:35:56 Estab 32 32
DCI
Le gros problème qu'on a, c'est de lier chaque spine à chaque leaf. Pour des raisons de coûts, on va pas les relier physiquement mais logiquement ! Au final, ce qu'on a besoin c'est que les Leafs de DC1 connaissent les IPs de DC2 et inversement, n'est ce pas ?
Ce qui nous importe est uniquement de monter les peer de l'overlay !
Mais pour monter ces peers, il faut connaître les IPs des Spines et pas question de faire l'underlay en link-local ipv6 ! (Ca ne fonctionnerai pas)
On va donc utiliser le principe de border leaf :

Les border leafs auront une seule et unique mission ! Faire apprendre à l'autre borderleaf, les IPs de son DC !
Les border leafs seront branchés sur les Spines en double adduction.
Optimisation/préparation BGP Leaf/Spine
Avant toute chose, je me suis aperçu que la conf des BGP peut être améliorée !
Pour les Leafs, ces derniers vont devoir peer avec les Spines des autres DC, ils font donc augmenter le TTL dans la trame eBGP, le multihop ! On le passe à 5.
Pour les Spines, il s'est passé un truc très intéressant que je n'avais pas du tout anticipé ! Une fois les peers EVPN de montés, il y avait une apprentissage des routes via les peerings overlay !
C'est à dire, qu'une fois l'EVPN de UP entre Spine1-B1 et Leaf1-C1, les IPs de DC1 sur Leaf1-C1 étaient appris via le peering EVPN et non plus via Spine1-C1 via BorderLeaf-C1, ce qui faisait, grosso modo, tout planter 😄
La raison ?
L'AS PATH ! Bah oui, BGP préfère une route avec deux AS plutôt que 5 !
Il faut donc refuser la diffusion des routes IPv6 dans les peerings BGP pour l'overlay. Mais comment ?
Spine1-C1#sh run | s BLOCK_ROUTE
route-map BLOCK_ROUTE deny 10
router bgp 65100
address-family ipv6
neighbor GROUP_OVERLAY route-map BLOCK_ROUTE in
neighbor GROUP_OVERLAY route-map BLOCK_ROUTE out
On créer une route-map qui deny tout et on la place en entrée et en sortie de l'address family IPv6 pour le groupe overlay.
Il y a aussi le nouveau range du BGP en mode écoute :
Spine1-C1#sh run | s PF_FABRIC_AS_DC1
peer-filter PF_FABRIC_AS_DC1
10 match as-range 65001-65099 result accept
router bgp 65100
bgp listen range 2001:172:16:1::/64 peer-group GROUP_OVERLAY peer-filter PF_FABRIC_AS_DC1
Spine1-B1#sh run | s PF_FABRIC_AS_DC2
peer-filter PF_FABRIC_AS_DC2
10 match as-range 65101-65199 result accept
router bgp 65000
bgp listen range 2001:172:16:10::/64 peer-group GROUP_OVERLAY peer-filter PF_FABRIC_AS_DC2
Configuration BGP BorderLeaf
Switchs | AS BGP | Loopback1 Control Plane |
---|---|---|
BorderLeaf-B2 | 65099 | 2001:172:16:1::5/128 |
BorderLeaf-C1 | 65199 | 2001:172:16:10::5/128 |
Me diriez vous, les loopback ne servent à rien (car les BordeLeafs circulent uniquement l'underlay). Je dois penser à les supprimer d'ailleurs.
Je me suis fait pas chié pour les intercos Spine/BorderLeaf ! Je suis parti sur la même solution que l'underlay : les link local IPv6 !
interface Ethernet1
mtu 9214
no switchport
ipv6 enable
!
interface Ethernet5
mtu 9214
no switchport
ipv6 enable
!
interface Ethernet6
mtu 9214
no switchport
ipv6 enable
!
router bgp 65099
router-id 172.16.1.5
bgp default ipv6-unicast
timers bgp 30 60
distance bgp 20 200 200
maximum-paths 8 ecmp 16
neighbor GROUP_UNDERLAY peer group
neighbor GROUP_UNDERLAY rib-in pre-policy retain all
redistribute connected route-map RM_UNDERLAY_LO
neighbor interface Et5-6 peer-group GROUP_UNDERLAY remote-as 65000
Où dans RM_UNDERLAY_LO, il y a l'IPv6 de la Loopback
BorderLeaf-B2#sh ipv6 bgp summary
BGP summary information for VRF default
Router identifier 172.16.1.5, local AS number 65099
Neighbor Status Codes: m - Under maintenance
Neighbor V AS MsgRcvd MsgSent InQ OutQ Up/Down State PfxRcd PfxAcc
fe80::5200:ff:fe15:f4e8%Et5 4 65000 1060 1063 0 0 04:59:13 Estab 9 9
fe80::5200:ff:fe72:8b31%Et6 4 65000 1060 1065 0 0 04:59:09 Estab 9 9
BorderLeaf-B2#sh ipv6 route
VRF: default
Displaying 11 of 14 IPv6 routing table entries
Codes: C - connected, S - static, K - kernel, O3 - OSPFv3,
B - Other BGP Routes, A B - BGP Aggregate, R - RIP,
I L1 - IS-IS level 1, I L2 - IS-IS level 2, DH - DHCP,
NG - Nexthop Group Static Route, M - Martian,
DP - Dynamic Policy Route, L - VRF Leaked,
G - gRIBI, RC - Route Cache Route,
CL - CBF Leaked Route
B E 2001:172:16:1::1/128 [20/0]
via fe80::5200:ff:fe15:f4e8, Ethernet5
via fe80::5200:ff:fe72:8b31, Ethernet6
B E 2001:172:16:1::2/128 [20/0]
via fe80::5200:ff:fe15:f4e8, Ethernet5
via fe80::5200:ff:fe72:8b31, Ethernet6
B E 2001:172:16:1::3/128 [20/0]
via fe80::5200:ff:fe15:f4e8, Ethernet5
via fe80::5200:ff:fe72:8b31, Ethernet6
B E 2001:172:16:1::4/128 [20/0]
via fe80::5200:ff:fe15:f4e8, Ethernet5
via fe80::5200:ff:fe72:8b31, Ethernet6
C 2001:172:16:1::5/128 [0/0]
via Loopback1, directly connected
B E 2001:172:16:1::10/128 [20/0]
via fe80::5200:ff:fe15:f4e8, Ethernet5
B E 2001:172:16:1::20/128 [20/0]
via fe80::5200:ff:fe72:8b31, Ethernet6
B E 2001:172:16:2::1/128 [20/0]
via fe80::5200:ff:fe15:f4e8, Ethernet5
via fe80::5200:ff:fe72:8b31, Ethernet6
B E 2001:172:16:2::2/128 [20/0]
via fe80::5200:ff:fe15:f4e8, Ethernet5
via fe80::5200:ff:fe72:8b31, Ethernet6
B E 2001:172:16:2::3/128 [20/0]
via fe80::5200:ff:fe15:f4e8, Ethernet5
via fe80::5200:ff:fe72:8b31, Ethernet6
B E 2001:172:16:2::4/128 [20/0]
via fe80::5200:ff:fe15:f4e8, Ethernet5
via fe80::5200:ff:fe72:8b31, Ethernet6
On fait la même chose pour l'autre borderleaf. Et je sais pas si vous avez remarqué, mais aucune configuration de touchée pour l'underlay sur les Spines ! C'est ça d'avoir réfléchit dès le début du montage de la fabric 😏😏
Et maintenant, attaquons nous au BGP entre ces deux équipements !
Tout d'abord, on crée deux prefix list avec les IPs de DC1 et DC2 et on les place dans une route map différente :
ipv6 prefix-list PL_DC1_LO
seq 10 permit 2001:172:16:1::10/128
seq 20 permit 2001:172:16:1::20/128
seq 30 permit 2001:172:16:1::1/128
seq 40 permit 2001:172:16:1::2/128
seq 50 permit 2001:172:16:1::3/128
seq 60 permit 2001:172:16:1::4/128
seq 65 permit 2001:172:16:1::5/128
seq 70 permit 2001:172:16:2::1/128
seq 80 permit 2001:172:16:2::2/128
seq 90 permit 2001:172:16:2::3/128
seq 100 permit 2001:172:16:2::4/128
!
ipv6 prefix-list PL_DC2_LO
seq 10 permit 2001:172:16:10::10/128
seq 20 permit 2001:172:16:10::20/128
seq 30 permit 2001:172:16:10::1/128
seq 40 permit 2001:172:16:10::2/128
seq 50 permit 2001:172:16:10::3/128
seq 60 permit 2001:172:16:10::4/128
seq 65 permit 2001:172:16:10::5/128
seq 70 permit 2001:172:16:20::1/128
seq 80 permit 2001:172:16:20::2/128
seq 90 permit 2001:172:16:20::3/128
seq 100 permit 2001:172:16:20::4/128
!
route-map RM_BORDERLEAF_IN permit 10
match ipv6 address prefix-list PL_DC2_LO
!
route-map RM_BORDERLEAF_OUT permit 10
match ipv6 address prefix-list PL_DC1_LO
Ensuite, pas bien compliqué ! On peer avec l'interface d'interco entre ces deux leafs :
router bgp 65099
neighbor GROUP_BORDERLEAF peer group
neighbor GROUP_BORDERLEAF rib-in pre-policy retain all
neighbor GROUP_BORDERLEAF route-map RM_BORDERLEAF_IN in
neighbor GROUP_BORDERLEAF route-map RM_BORDERLEAF_OUT out
neighbor interface Et1 peer-group GROUP_BORDERLEAF remote-as 65199
Bien sûr, sur l'autre leaf, il faut inverser les deux route-map 😋
BorderLeaf-B2#sh ipv6 bgp summary
fe80::5200:ff:feba:c6f8%Et1 4 65199 23 23 0 0 00:04:22 Estab 4 4
BorderLeaf-B2#sh ipv6 route
B E 2001:172:16:10::1/128 [20/0]
via fe80::5200:ff:feba:c6f8, Ethernet1
B E 2001:172:16:10::5/128 [20/0]
via fe80::5200:ff:feba:c6f8, Ethernet1
B E 2001:172:16:10::10/128 [20/0]
via fe80::5200:ff:feba:c6f8, Ethernet1
B E 2001:172:16:20::1/128 [20/0]
via fe80::5200:ff:feba:c6f8, Ethernet1
Le BGP monte bien et on apprend bien les IPs de DC2 sur BorderLeaf-B2 (bon OK j'ai branché que 3 équipements dans DC2, mon serveur chez OVH est en overdose si je lance tout 😃)
Côté Leaf1-C1, on apprend bien la route vers les Spines de DC1 ! Et inversement pour les Leafs DC1 qui apprennent les IPs des Spines de DC2.
Leaf1-C1#sh ipv6 route 2001:172:16:1::10/128
VRF: default
Routing entry for 2001:172:16:1::10/128
Codes: C - connected, S - static, K - kernel, O3 - OSPFv3,
B - Other BGP Routes, A B - BGP Aggregate, R - RIP,
I L1 - IS-IS level 1, I L2 - IS-IS level 2, DH - DHCP,
NG - Nexthop Group Static Route, M - Martian,
DP - Dynamic Policy Route, L - VRF Leaked,
G - gRIBI, RC - Route Cache Route,
CL - CBF Leaked Route
B E 2001:172:16:1::10/128 [20/0]
via fe80::5200:ff:fe88:2ff3, Ethernet1
On fait le BGP pour l'EVPN :
router bgp 65101
neighbor GROUP_OVERLAY peer group
neighbor GROUP_OVERLAY update-source Loopback1
neighbor GROUP_OVERLAY ebgp-multihop 5
neighbor GROUP_OVERLAY send-community extended
neighbor 2001:172:16:1::10 peer group GROUP_OVERLAY
neighbor 2001:172:16:1::10 remote-as 65000
neighbor 2001:172:16:1::10 description Spine1
neighbor 2001:172:16:1::20 peer group GROUP_OVERLAY
neighbor 2001:172:16:1::20 remote-as 65000
neighbor 2001:172:16:1::20 description Spine2
neighbor 2001:172:16:10::10 peer group GROUP_OVERLAY
neighbor 2001:172:16:10::10 remote-as 65100
neighbor 2001:172:16:10::10 description Spine1-C1
neighbor 2001:172:16:10::20 peer group GROUP_OVERLAY
neighbor 2001:172:16:10::20 remote-as 65100
neighbor 2001:172:16:10::20 description Spine2-C2
!
address-family evpn
neighbor GROUP_OVERLAY activate
Les sessions EVPN montent bien !
Leaf1-C1#sh bgp evpn summary
BGP summary information for VRF default
Router identifier 172.16.3.1, local AS number 65101
Neighbor Status Codes: m - Under maintenance
Description Neighbor V AS MsgRcvd MsgSent InQ OutQ Up/Down State PfxRcd PfxAcc
Spine1 2001:172:16:1::10 4 65000 86 75 0 0 00:17:15 Estab 16 16
Spine2 2001:172:16:1::20 4 65000 88 93 0 0 00:17:15 Estab 16 16
Spine1-C1 2001:172:16:10::10 4 65100 82 94 0 0 00:17:17 Estab 16 16
Spine2-C2 2001:172:16:10::20 4 65100 0 0 0 0 00:17:28 Active
Ca m'a l'air pas mal tout ça, nan ? Allez, on monte le premier LNS à DC2 ! (Propagation du VLAN et tout le tralalala).
LNS3#sh run int gi1.10
interface GigabitEthernet1.10
description L2-LNS-ISIS
encapsulation dot1Q 10
ip address 100.64.0.3 255.255.255.248
ip router isis
ipv6 address 2001:DEAD:CAFE:BABE::3/125
ipv6 router isis
end
LNS3#sh isis neighbors
System Id Type Interface IP Address State Holdtime Circuit Id
LNS1 L2 Gi1.10 100.64.0.1 UP 26 LNS3.01
LNS3#ping 100.127.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.127.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/74/302 ms
Les émotions 🤩🤩🤩 CA MARCHE !
Côté Leaf, on apprend bien les MAC dans la VNI 100010 :
Leaf1-C1#sh bgp evpn route-type mac-ip
BGP routing table information for VRF default
Router identifier 172.16.3.1, local AS number 65101
Route status codes: * - valid, > - active, S - Stale, E - ECMP head, e - ECMP
c - Contributing to ECMP, % - Pending best path selection
Origin codes: i - IGP, e - EGP, ? - incomplete
AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
Network Next Hop Metric LocPref Weight Path
* >Ec RD: 65001:100010 mac-ip 001e.bd42.cac9
2001:172:16:2::1 - 100 0 65000 65001 i
* ec RD: 65001:100010 mac-ip 001e.bd42.cac9
2001:172:16:2::1 - 100 0 65100 65001 i
* ec RD: 65001:100010 mac-ip 001e.bd42.cac9
2001:172:16:2::1 - 100 0 65000 65001 i
* > RD: 65101:100010 mac-ip 5000.0029.0000
- - - 0 i
Conclusion
ENORME épisode ! Surement le plus dense et le plus fourre tout depuis la création de ce blog.
J'ai bien aimé me replonger dans mes cours de télécoms et de maths, c'était assez marrant lol 😃
Notre interco entre nos deux datacenters est montée. Il nous reste plus qu'à monter les nouveaux LNS et un nouveau transit pour faire notre grand PRA/PCA 🤩🤩
Ca sera probablement l'un des derniers épisodes infrastructure. Si ajout de nouveau datacenter, je repartirai sur cette architecture. Il me reste la virtualisation/conteneurisation des CPE à faire (coucou Luc).
Je termine sur un petit mot de fin : Habituellement, je termine sur un mot sur naruto, étant son plus grand fan mais envie de changer. Depuis presque 1 an (si ce n'est depuis 1947), sous prétexte d'être né de l'autre côté de la frontière et dans l'indifférence la plus totale, un génocide est en cours dans la bande de gaza, commis par les terroristes sionistes. Cela rappelle les heures les plus sombres de l'histoire de l'humanité pour laquelle toute une génération s'est sacrifiée pour se battre contre les idéologies nazistes. Bien évidemment qu'on encule isramerde. FREE PALESTINE FUCK ISRAEL FUCK HAMAS FUCK LES SIONISTES