22
0
Fork 0

Documentation VPC

This commit is contained in:
jdubois 2021-08-12 18:29:38 +02:00
parent b4352fb579
commit 448f52ff32
1 changed files with 176 additions and 0 deletions

View File

@ -1631,6 +1631,182 @@ Switch(config-schedule)# job name backupConfig
Switch(config-schedule)# time daily 01:15
~~~
### VPC : Virtual Port-Channel
Ressource : <https://www.packetcoders.io/what-is-cisco-vpc-virtual-port-channel/>
* Explication globale :
Le Port-Channel est une technologie qui permet d'agréger plusieurs interfaces ensemble. Le trafic est ensuite réparti sur chacune des interfaces. Cette technologie permet une meilleure redondance, ainsi qu'une augmentation de la bande passante.
Cependant un Port-Channel doit se faire depuis un seul serveur vers un seul même switch.
Le Virtual Port-Channel permet de dépasser cette limitation en faisant un Port-Channel virtuel depuis un serveur vers 2 switchs différents. Les deux switchs continuent à être gérés et configurés indépendamment.
Pour fonctionner, le VPC est fait de plusieurs composants :
* **Switchs pairs VPC** : switchs faisant partie du groupe VPC.
* **Ports membres VPC** : machines (switch ou serveur) branchées à des pairs VPC de façon redondante.
* **Lien VPC peer-link** : lien physique permettant de connecter les 2 switchs pairs VPC et de transpoter les BPDUs et adresses MAC entre eux. Il sert également à transporter le trafic de niveau 2 entre les switchs pairs VPC, soit en cas de défaillance d'une liaison vers un port membre, soit lors de communications entre machines non membres VPC (fonction d'un lien inter-switch classique). Il doit donc être suffisament dimensionné pour supporter ce potentiel trafic.
* **Lien VPC keepalive** : lien physique permettant, dans le cas où le VPC peer-link est down et que les switchs ne pourraient donc plus communiquer à travers celui-ci, de détecter les pairs VPC en mode "tous actifs"/"tous primaires". Dans cette situation, on peut avoir des paquets dupliqués ou d'autres problèmes. Il est donc important de le détecter afin de réagir de façon appropriée. Les ports de management peuvent être utilisés pour créer ce lien.
* **Ports orphelins** : un port qui utilise un des VLANs transportés sur le VPC peer-link mais qui n'est pas un membre VPC. C'est le cas d'une machine branchée de façon volontaire sur un seul switch, sans Port-Channel.
Dans le cas où le lien **VPC peer-link** est down, le lien **VPC keepalive** le détecte, et le **pair VPC** secondary coupe tous ses ports allant vers des **membres VPC** afin d'éviter des boucles réseau. Par défaut, les **ports orphelins** ne seront pas coupés, mais peuvent l'être automatiquement si on le souhaite (voir configuration ci-dessous). Les pairs VPC primaire et secondaire sont déterminés par défaut d'après l'adresse MAC, ou par une priorité configurée manuellement.
Le serveur ne sait pas qu'il est branché sur 2 switchs différents, et croit être sur un Port-Channel classique. Une configuration en [LACP](HowtoDebian/Reseau#mode-802.3ad-lacp) est donc suffisante sur celui-ci.
Voici un schéma avec l'ensemble de ces composants :
~~~
┌────────┐VPC peer-link┌────────┐ ┌───────────┐
│ ├─────────────┤ │ │ │
│ SW01 │VPC keepalive│ SW02 ├──────────┤ Serveur3 │
│ ├─────────────┤ │ Port │ │
└──┬───┬─┘ └─┬───┬──┘ orphelin └───────────┘
│ │ │ │
│ │ │ │
│ │ ┌───────────┐ │ │
│ └──┤ ├──┘ │
│ VPC│ Serveur1 │VPC │
│membre│ │membre│
│ └───────────┘ │
│ │
VPC│ │VPC
membre│ ┌───────────┐ │membre
└──────┤ ├──────┘
│ Serveur2 │
│ │
└───────────┘
~~~
* Cas de défaillance d'une liaison vers un port membre :
Imaginons que Serveur1 veuille communiquer avec Serveur2, et que l'algorithme de LACP sur Serveur1 décide d'envoyer le paquet sur l'interface allant vers SW01.
Si tout fonctionne correctement, alors le paquet partira de Serveur1 pour passer par SW01, et arriver depuis SW01 vers Serveur2.
Cependant, dans le cas où le lien entre Serveur2 et SW01 est down, alors le paquet partira de Serveur1 pour passer par SW01, puis passera par le VPC peer-link pour arriver sur SW02, et enfin arriver depuis SW02 vers Serveur2.
* Configuration :
Sur SW01 et SW02, prenons :
* Eth1/3 comme lien VPC peer-link
* Eth1/5 comme lien VPC keepalive
* Eth1/25 comme port membre VPC pour Serveur1
* Eth1/27 comme port membre VPC pour Serveur2
* Eth1/29 comme port orphelin pour Serveur3
Et on utilisera des Port-Channel ayant les mêmes numéros que les interfaces physiques auxquelles elle sont rattachées.
On commence par activer LACP et VPC :
~~~
Switch# conf t
Switch(config)# feature vpc
Switch(config)# feature lacp
~~~
On crée une VRF pour le VPC keepalive :
~~~
Switch(config)# vrf context VPC_KEEPALIVE
Switch(config-vrf)# exit
~~~
On crée le domaine VPC et on indique les IPs des 2 pairs, qu'on configure plus tard sur l'interface dédiée au keepalive :
Sur SW01 :
~~~
Switch(config)# vpc domain 1
Switch(config-vpc-domain)# peer-switch
Switch(config-vpc-domain)# peer-keepalive destination 198.51.100.2 source 198.51.100.1 vrf VPC_KEEPALIVE
Switch(config-vpc-domain)# role priority 8192
Switch(config-vpc-domain)# exit
~~~
Sur SW02 :
~~~
Switch(config)# vpc domain 1
Switch(config-vpc-domain)# peer-switch
Switch(config-vpc-domain)# peer-keepalive destination 198.51.100.1 source 198.51.100.2 vrf VPC_KEEPALIVE
Switch(config-vpc-domain)# role priority 16384
Switch(config-vpc-domain)# exit
~~~
On a configuré une priorité plus faible sur SW01 que sur SW02, permettant de rendre SW01 primary, et SW02 secondary : le plus faible est prioritaire.
La commande `peer-switch` permet aux 2 switchs d'apparaître comme un seule même switch au niveau du protocole Spanning Tree, en leur faisant avoir le même bridge ID.
On crée le VPC peer-link :
~~~
Switch(config)# interface Ethernet1/3
Switch(config-if)# description vPC Peerlink
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan <1-4094>
Switch(config-if)# channel-group 3 mode active
Switch(config)# interface port-channel3
Switch(config-if)# description vPC Peerlink
Switch(config-if)# vpc peer-link
~~~
On crée le VPC keepalive :
~~~
Switch(config)# interface Ethernet1/5
Switch(config-if)# description vPC Keepalive
Switch(config-if)# no switchport
Switch(config-if)# channel-group 5 mode active
Switch(config)# interface port-channel5
Switch(config-if)# description vPC Keepalive
Switch(config-if)# vrf member VPC_KEEPALIVE
Switch(config-if)# no switchport
Switch(config-if)# ip address 198.51.100.1/24 # IP sur SW01
Switch(config-if)# ip address 198.51.100.2/24 # IP sur SW02
~~~
Enfin, on configure les 2 ports membres VPC :
Pour Serveur1 :
~~~
Switch(config)# interface Eth1/25
Switch(config-if)# channel-group 25 mode active
Switch(config-if)# switchport access vlan <1-4094>
Switch(config)# interface port-channel25
Switch(config-if)# vpc 25
Switch(config-if)# switchport access vlan <1-4094>
~~~
Pour Serveur2 :
~~~
Switch(config)# interface Eth1/27
Switch(config-if)# channel-group 27 mode active
Switch(config-if)# switchport access vlan <1-4094>
Switch(config)# interface port-channel27
Switch(config-if)# vpc 27
Switch(config-if)# switchport access vlan <1-4094>
~~~
* Ports orphelin :
Dans notre cas, si le VPC peer-link est down, alors SW02 (qui est VPC secondary) coupera tous ses ports allant vers des membres VPC, soit Eth1/25 et Eth1/27. Serveur3 sera alors isolé et ne pourra communiquer qu'avec les autres éventuels ports orphelins.
Cependant si Serveur3 était configuré par exemple pour du bonding en mode active/backup ou en mode [HowtoDebian/Reseau#mode-alb](ALB) en étant branché à la fois sur SW01 et SW02, alors le failover ne se ferait pas pour Serveur3 et des problèmes de communications aurraient lieux. Dans ce cas, on souhaiterait que le lien entre Serveur3 et SW02 se coupe pour que la communication entre Serveur1, Serveur2 et Serveur3 fonctionne par SW01.
Pour ça, sur le port où est branché Serveur3, il faut configurer la commande suivante :
~~~
Switch(config)# interface Eth1/29
Switch(config-if)# vpc orphan-port suspend
~~~
## Cisco Small Business
Les switchs Cisco Small Business Pro (par exemple, le modèle Cisco ESW 500) sont en fait d'anciens switchs Linksys. Ils n'ont pas de système IOS habituel.