dimanche 31 mai 2015

Filtrage de routes BGP et fonctionnalités avancées

Topologie:



Figure 1 – Numéros d'AS BGP
Notes relatives au TP

Le module précédent a permis de s'initier à la configuration de BGP externe, sans toutefois expliquer comment contrôler quels sont les réseaux annoncés à quels AS. Le but de ce module est donc de vous présenter les types de politiques de routage disponibles en utilisant BGP.

Dans les étapes 2 à 6, nous allons configurer chaque AS pour en faire un “AS refusant le transit (non-transit AS)”, c'est à dire que l'AS refusera aux AS auxquels il est connecté d'acheminer du traffic de l'un vers l'autre. Cela signifie que la connectivité dans la salle sera rompue - par exemple, AS3 ne sera plus capable de voir les réseaux d'AS10, etc... C'est un choix délibéré ayant pour but de montrer l'efficacité du filtrage BGP.

Ceci est réalisé lors de l'étape 2, en configurant un filtre pour les routes sortantes (outgoing route filter) permettant l'envoi des seuls préfixes locaux vers les peers eBGP. Nous nous assurons également que les peers nous envoient seulement leurs préfixes locaux, grâce à l'ajout d'un filtre entrant (incoming filter). En règle générale, il est bon de configurer des filtres dans les deux sens, afin de protéger contre les erreurs de configurations des deux côtés du peering. Lors de l'étape 4, nous allons utiliser les filtres AS-PATH. Enfin dans l'étape 6, nous arriverons au même résultat en utilisant les communautés BGP.

Important : chaque étape doit être suivie et terminée par tous les participants avant que la prochaine étape puisse démarrer, puisque les techniques utilisées changent à chaque étape et qu'elles ne peuvent pas fonctionner dans un environnement incohérent. Ne démarrez pas l'étape suivante sans avoir obtenu le feu vert de vos instructeurs. Si vous démarrez sans attendre, il est très probable que le routage cesse de fonctionner, empêchant ainsi les autres groupes de comprendre les effets réels de leurs configurations.

Important : gardez la configuration utilisée pour le Module 6.


Étapes du TP

1.      Implémentation des politiques BGP. Avant de faire la moindre configuration dans ce module, il faut impérativement comprendre comment implémenter les politiques BGP. Il est possible d'ajouter des listes de préfixes (prefix lists), des filtres as-path (as-path filters) ou des route-maps directement depuis la CLI. Cependant, ils ne seront pris en compte que pour les updates BGP reçues après l'ajout de ces nouvelles politiques. Ceci s'explique par le fait que BGP envoie des updates incrémentales décrivant les changements aux routes annoncées ou retirées. Pour appliquer une politique de routage à l'intégralité de la table de routage BGP reçue ou envoyée à un peer, la session BGP doit être "réinitialisée". Dans les anciennes versions de l'IOS, cela signifiait détruire la session BGP puis la redémarrer. Cependant, comment on peut l'imaginer, cela causait de graves problèmes de stabilité sur le réseau du fournisseur. Ainsi, le RFC2918 (Route Refresh Capability / Fonction de rafraîchissement de route) a été ajouté à la plupart des implémentations modernes de BGP pour permettre des mises à jour correctes des sessions BGP lorsque des changements de politiques les rendaient nécessaires.

Pour implémenter les changements de politiques dans tous les exemples à venir, utilisez les commandes suivantes, par exemple pour implémenter de nouvelles politiques entrantes et sortantes sur le peering entre Routeur 1 et Routeur 13:

Router1# clear ip bgp 10.10.15.14 out
Router1# clear ip bgp 10.10.15.14 in

Note 1: N'oubliez pas les sous-commandes 'out' et 'in' dans les commandes clear ci-dessus - si vous les oubliez, cela forcera une réinitialisation complète de la session BGP. Relisez la présentation BGP si vous n'êtes plus sûr de la raison pour laquelle c'est une mauvaise idée.

Note 2: Plutôt que d'utiliser l'adresse IP du voisin pour rafraîchir la session BGP, il est également possible d'utiliser son numéro d'AS (ASN). Puisque le routeur 13 est dans l'AS 40, l'autre jeu de commandes possible serait :

Router1# clear ip bgp 40 out
Router1# clear ip bgp 40 in




Filtrage en utilisant les listes de préfixes (prefix-lists)

2.      Configuration des filtres de préfixes basés sur les adresses réseau. Pour cette configuration, nous allons utiliser les listes de préfixes, qui sont une méthode de contrôle des informations de réseaux échangées au sein des peerings BGP. Le but de cette manoeuvre est de configurer les peerings eBGP de sorte que seuls les réseaux des AS voisins soient échangés.

Exemple: Routeur R13 (peering avec R1)

      !
ip prefix-list out-peer permit 10.40.0.0/20
ip prefix-list out-peer deny 0.0.0.0/0 le 32
!
ip prefix-list in-peer permit 10.10.0.0/20
ip prefix-list in-peer deny 0.0.0.0/0 le 32
!
router bgp 40
 no synchronization
 network 10.40.0.0 mask 255.255.240.0
 neighbor 10.10.15.13 remote-as 10
 neighbor 10.10.15.13 description eBGP peering avec Routeur1
 neighbor 10.10.15.13 prefix-list out-peer out
 neighbor 10.10.15.13 prefix-list in-peer in
 no auto-summary
!

     Exemple: Routeur R1 (peering avec R13)

!
ip prefix-list out-peer permit 10.10.0.0/20
ip prefix-list out-peer deny 0.0.0.0/0 le 32
!
ip prefix-list in-peer permit 10.40.0.0/20
ip prefix-list in-peer deny 0.0.0.0/0 le 32
!
router bgp 10
 no synchronization
 network 10.10.0.0 mask 255.255.240.0
 neighbor 10.10.15.14 remote-as 40
 neighbor 10.10.15.14 description Peering avec Routeur13
 neighbor 10.10.15.14 prefix-list out-peer out
 neighbor 10.10.15.14 prefix-list in-peer in
 no auto-summary
!

Note : une liste de préfixes IOS possède toujours une dernière entrée implicite deny any même si elle n'est pas mentionnée dans la configuration. Certains FAIs ajoutent l'entrée implicite deny any parce qu'ils considèrent que c'est une bonne habitude, et une mesure de sécurité.

Note : ces listes de préfixes sont seulement appliquées aux peerings avec les autres AS. On les appelle des peerings externes (utilisés par eBGP). Il n'y a généralement pas besoin d'appliquer ce genre de filtres aux peerings iBGP.






ARRÊTEZ ET ATTENDEZ ICI


3.      Retrait de la configuration précédente. Cette étape illustre comment retirer la configuration définie à l'étape précédente. C'est indispensable avant de passer à la suite.

Exemple: Routeur R1

Router1#conf t
Router1(config)#router bgp 10
!
! On enleve d’abord la liste de prefixes du peering BGP avec R13
!
Router1(config-router)#no neighbor 10.10.15.14 prefix-list out-peer out
Router1(config-router)#no neighbor 10.10.15.14 prefix-list in-peer in
!
! Maintenant on enleve les listes ells-memes
!
Router1(config)#no ip prefix-list out-peer
Router1(config)#no ip prefix-list in-peer
!
! Voila, la configuration est nettoyee, comme il faut.
!
Router1(config)#end
!
! Puis on rafraichit le peering BGP pour enlever l’ancienne politique
!
Router1#clear ip bgp 40 out
Router1#clear ip bgp 40 in
Router1#

Filtres AS-PATH

4.      Configuration de filtres de préfixes basés sur l'attribut AS path : Durant cette étape nous allons utiliser les listes d'accès AS path, qui sont un autre moyen de contrôler les réseaux échangés dans les peerings BGP.

Exemple : Routeur R14 (peering avec R2)
 
ip as-path access-list 2 permit ^$
ip as-path access-list 3 permit ^10$
!
router bgp 40
 neighbor 10.40.15.18 remote-as 10
 neighbor 10.40.15.18 filter-list 2 out
 neighbor 10.40.15.18 filter-list 3 in
!

 Exemple : Routeur R2 (peering avec R14)

ip as-path access-list 2 permit ^$
ip as-path access-list 3 permit ^40$
!
router bgp 10
 neighbor 10.40.15.17 remote-as 40
 neighbor 10.40.15.17 filter-list 2 out
 neighbor 10.40.15.17 filter-list 3 in
!

Q. Pourquoi est-ce que la liste de filtres sortants arrive à une correspondance pour l'as-path null et non le numéro d'AS local, dans les exemples ci-dessus ?

A. Parce que l'attribut AS-PATH est positionné après application des listes de préfixes, filtres d'as-path et route-maps. Si l'AS local était inclus dans la configuration des listes de filtres sortants, les préfixes seraient ignorés parce que l'attribut AS-PATH n'est pas encore positionné à ce moment.


Pour vérifier que l'expression régulière fonctionne comme prévu, utilisez la commande exec
show ip bgp regexp <expression-reguliere>” pour montrer tous les chemins qui correspondent à l'expression régulière spécifiée. N'oubliez pas que la commande “clear ip bgp <neighbour address> [in|out]” est requise pour implémenter ce filtre.

Notez bien que les filtres AS Path autorisent tous les préfixes émis par l'AS voisin - dans l'exemple précédent qui utilisait les filtres de préfixes, seuls les agrégés de l'AS voisin pouvaient passer les filtres.


5.      Retrait de la configuration précédente. Cette étape illustre comment retirer la configuration définie à l'étape précédente. C'est indispensable avant de passer à la suite.

Exemple : Routeur 2

Router1#conf t
Router1(config)#router bgp 10
!
! On enleve la liste de filtres du peering BGP avec R14
!
Router1(config-router)#no neighbor 10.40.15.17 filter-list 2 out
Router1(config-router)#no neighbor 10.40.15.17 filter-list 3 in
!
! Puis les listes de filtres elles-memes
!
Router1(config)#no ip as-path access-list 2
Router1(config)#no ip as-path access-list 3
!
! Voila, la configuration est nettoyee, comme il faut.
!
Router1(config)#end
!
! Puis on rafraichit le peering BGP pour enlever l’ancienne politique
!
Router1#clear ip bgp 10.40.15.17 in
Router1#clear ip bgp 10.40.15.17 out
Router1#


Communautés BGP pour le filtrage (et route-maps)

6.      Introduction aux concepts de communautés BGP et route-maps. Cette étape explique comment utiliser ces concepts pour le tagging, l'identification et finalement le filtrage de préfixes. Nous obtiendrons des résultats similaires à ceux des étapes précédentes.

Sur chaque routeur, configurez BGP de sorte à ce qu'il envoie à ses peers externes une communauté pour tous les préfixes appartenant à l'AS local. La communauté doit suivre le format [Numéro d'AS]:[Numéro de Routeur]. Par exemple, Routeur8 doit utiliser la communauté 30:8.

Exemple : Routeur R8

! Affiche les communautes en utilisant le format 16-bits:16-bits plutot que
! un seul entier de 32-bits.
!
ip bgp-community new-format
!
ip prefix-list out-match permit 10.30.0.0/20 le 26
!
      route-map outfilter permit 10
       match ip address prefix-list out-match
       set community 30:8
      !
      router bgp 30
       neighbor 10.20.15.17 remote-as 20
       neighbor 10.20.15.17 route-map outfilter out
       neighbor 10.20.15.17 send-community
      !

Notes :
1)      La commande show ip bgp <network> permet de voir l'attribut de communauté dans la table BGP.
2)      L'attribut de communauté est un champ défini sur 32 bits. Par contention établie à l'IETF, ce champ est séparé en deux sous-champs de 16 bits chacun pour une interprétation plus aisée. Les 16 bits de poids fort contiennent le numéro d'AS tandis que les 16 bits de poids faible représentent une valeur dont la signification est bien définie pour les deux AS participant au peering. Les seules exceptions sont les chaînes de caractères définies spécifiquement, telles que no-export et local-as.

Q: Pourquoi faut-il mettre send-community pour les peerings eBGP ?
A: Puisque les valeurs de communauté ne sont pas propagées par défaut, vous devez le configure explicitement sur le routeur.



7.      Retrait de la configuration précédente. Cette étape illustre comment retirer la configuration définie à l'étape précédente. C'est indispensable avant de passer à la suite.

Exemple : Routeur 9

Router8#conf t
Router8(config)#router bgp 30
!
! On enleve d’abord la route-map du peering eBGP
!
Router8(config-router)#no neighbor x.x.x.x route-map outfilter out
!
! Puis la route-map elle-meme
!
Router8(config)#no route-map outfilter
!
! Et maintenant la liste de prefixes utilise par la route-map
!
Router8(config)#no ip prefix-list out-match
!
! Voila, la configuration est nettoyee, comme il faut.
!
Router8(config)#end
!
! Puis on rafraichit le peering BGP pour enlever l’ancienne politique
!
Router8#clear ip bgp 10.20.15.17 out
Router9#



Communautés BGP

8.      Configuration des communautés BGP. Lors de l'étape 6, la communauté d'appartenance d'un réseau était générée au point de peering où les deux routeurs BGP pouvaient communiquer. Malgré l'intérêt pédagogique de cette technique, la façon de faire usuelle, est d'attacher l'information de communauté à un réseau lorsque le réseau est injecté dans la table de routage BGP.

Chaque groupe doit assigner une communauté au bloc réseau client (le /26) dont il est l'origine (originator) pour BGP. Relisez la documentation de BGP pour trouver comment faire. Chaque routeur doit assigner une communauté de format [Numéro d'AS]:[Numéro de Routeur] exactement comme à l'étape précédente.

Exemple : Routeur R3
     
      ip bgp-community new-format
      !
route-map community-tag permit 10
       set community 10:3    
      !
      router bgp 10
       no synchronization
       network 10.10.0.128 mask 255.255.255.192 route-map community-tag
       neighbor 10.20.15.1 remote-as 20
       neighbor 10.20.15.1 send-community
       no auto-summary
      !
      ip route 10.10.0.128 255.255.255.192 null0
           
     Vérifiez que le routeur apparaisse bien avec sa communauté dans la table de routage BGP.

Q: Pourquoi est-ce que les peers externes, mais pas les internes, sont-ils les seuls à voir la communauté configurée sur le réseau ?
A: Voir précédemment. Tous les peerings nécessitent la sous-commande BGP send-community pour pouvoir propager l'attribut de communauté à ses peers.

9.      Communautés sur les peerings BGP internes. Comme pour l'étape précédente, paramétrez maintenant les peerings internes pour que l'attribut de communauté de votre réseau soit envoyé aux peers locaux.

Astuce : ajoutez simplement la ligne de configuration neighbor x.x.x.x send-community pour tous les peerings iBGP. N'oubliez pas de rafraîchir les sessions de peering BGP pour que les changements de configuration soient implémentés.




10.  Configuration du filtre de préfixe entrant basé sur l'attribut de communauté. L'objectif ici est d'accepter seulement les réseaux reçus par le peering BGP externe du voisin. (C'est similaire à ce qui était fait aux étapes 2 et 4 avec les filtrages par préfixe ou AS path). Par exemple, R13 devrait seulement accepter les réseaux dont R1 est origine, et devrait utiliser l'information de communauté que R1 a ajouté au réseau pour y parvenir.

Exemple : Routeur R13

ip community-list 3 permit 10:1
!
route-map infilter permit 10
 match community 3
!
router bgp 40
 neighbor 10.10.15.13 route-map infilter in
!

Le choix du numéro de liste de communauté (community-list) revient à chaque groupe. En effet, il n'est annoncé dans aucun peering BGP ni utilisé de la moindre façon à part pour identifier la liste de communauté (de façon similaire au numéro d'access-list).

11.  Mise en place de l'attribut local-preference sur les routes eBGP reçues. Dans cet exemple, une préférence locale va être mise en place pour les routes correspondant au filtre de communauté mis en place à l'étape 10. Conservez la route-map utilisée à l'étape 10 - une ligne de configuration supplémentaire va y être ajoutée. Il faut également permettre les autres réseaux reçus par les filtres et dont la préférence locale a la valeur par défaut.

Q. Pourquoi ?
A. Sans la seconde directive, la route-map implémente une directive deny par défaut et aucun autre préfixe n'est autorisé.

Exemple :

route-map infilter permit 10
 match community 3
 set local-preference 120
!
route-map infilter permit 20

Souvenez-vous qu'après la définition d'une nouvelle politique, la session BGP doit être rafraichie pour que cette nouvelle politique puisse être mise en oeuvre. Comme le routeur ne conserve pas systématiquement toutes les mises à jour reçues de son peer, cette étape est nécessaire. Vous pouvez dans ce but utiliser la commande exec “clear ip bgp <peer address> in”.



Groupes de peering BGP (peer-groups)

12.  Configuration de la fonctionnalité de groupes de peering pour les peers iBGP. Les groupes de peering BGP aident a réduire la charge machine du routeur en générant et propageant des mises à jour vers les peers qui ont la même politique. Cette étape configure des groupes de peering BGP for les peers iBGP dans chaque AS. Remplacez la configuration individuelle de chaque peer iBGP par une configuration de groupe de peering, comme dans l'exemple ci-dessous.

Exemple : Routeur R9

router bgp 30
 neighbor ibgp-peers peer-group
 neighbor ibgp-peers description Groupe de peering utilise pour iBGP
 neighbor ibgp-peers remote-as 30
 neighbor ibgp-peers update-source loopback 0
 neighbor ibgp-peers send-community
 neighbot ibgp-peers next-hop-self
 neighbor ibgp-peers password cisco
!

Note : l'ancienne configuration antérieure au groupe de peering doit être retirée avant de convertir vers la configuration utilisant les groupes de peering.

router bgp 30
 no neighbor 10.30.15.224
 no neighbor 10.30.15.226
!
 neighbor 10.30.15.224 peer-group ibgp-peers
 neighbor 10.30.15.226 peer-group ibgp-peers
!

Q: Quels sont les avantages procurés par les groupes de peering ?

A: Les groupes de peering BGP permettent d'utiliser une configuration commune sur plusieurs peers BGP. L'application la plus courante est pour iBGP. Tous les peers BGP internes dans un réseau d'un même FAI ont tendance à avoir la même relation les uns avec les autres. Plutôt que de définir une configuration conséquente par peer, et d'avoir à changer chaque peering quand il faut faire des modifications, la configuration peut être définie dans un groupe de peering, et seul le groupe doit être changé pour modifier la configuration de tous les peers iBGP. Cela réduit considérablement la surcharge de travail induite par toute modification, la charge processeur du routeur et simplifie grandement les configurations et leur visualisation.

Il est fortement recommandé d'utiliser la sous-commande peer-group de façon systématique pour la configuration de peers BGP. Comme dit précédemment, la plupart des peers iBGP ont la même configuration, il est donc très important de simplifier les configurations pour tous les intervenants du réseau. De plus, une configuration qui utilise beaucoup de groupes de peering est habituellement plus lisible qu'une configuration ayant une section distincte par peer, en particulier dans les réseaux ayant de nombreux peers.

Note : à l'avenir dans ce workshop, toute configuration devra être faite avec des groupes de peering autant que possible (surtout pour les configurations iBGP).

13.  Résumé : Dans ce module, nous avons découvert certaines des fonctionnalités de configuration des peerings BGP disponibles dans l'IOS Cisco. Nous encourageons le lecteur à essayer toutes sortes de permutations des exemples donnés au cours du TP. L'utilisation des communautés est en train de gagner en popularité maintenant que la fonctionnalité est reconnue pour son utilité dans le contrôle des politiques de routage entre différents AS. Les rafraîchissements de route et les groupes de peering sont également beaucoup utilisés dans les backbones de FAI car ils facilitent énormément l'administration et la configuration d'un réseau opérationnel.

  

Questions de revisions :

  1. Pourquoi l'utilisation des rafraichissements de routes est-elle la meilleure méthode d'implémentation des nouvelles politiques BGP ?

  1. Pourquoi l'utilisation des filtres AS-PATH fournit-elle moins de granularité queles filtres de préfixes pour une session BGP ? Quelle est la meilleure solution pour un réseau de FAI, et pourquoi ?

  1. Quand faut-il mettre l'attribut de communauté sur un préfixe BGP ?


  1. Est-ce que l'IOS envoie les communautés BGP par défaut pour iBGP ? et pour eBGP ? Dans la négative, de quoi les opérateurs doivent-ils se souvenir ?

samedi 30 mai 2015

Plus d’iBGP et Configuration eBGP de Base


Topologie :

Figure 1 – BGP AS Numbers

Remarques

L’objectif de ce module est d’initier les étudiants à external (eBGP). eBGP est utilisé entre différents systèmes autonomes (AS) dans un “Internet”. La classe est scindée en 4 réseaux distincts. Les équipes appartenant a une même réseau travaillent ensemble comme le font les opérateurs d’un même ISP. Chaque AS a deux liens avec ses ASs voisins. Ce concept est utilisé durant une partie significative des laboratoires de cet atelier.

The connectivité illustrée à la Figure 2 montre les liens entre ASs. Nous supposons que les routeurs d’un AS sont connectes physiquement comme illustre à la Figure 1.

Configuration du laboratoire

1.      Connectez les routeurs comme indiqué à la Figure 1. Tous les routeurs d’un AS doivent être physiquement connectes et joignables. Les relations entre AS sont fournies Figure 2.


Figure 2 – AS relationship

1.      Supprimez l’adressage IP. Avant de considérer la configuration des protocoles de routage selon les schémas 1 et 2, nous devons d’abord supprimer l’adressage des modules précédents. Lors de cette étape nous supprimons les adresses IP de toutes les interfaces physiques et des loopback. Ceci ramène la configuration avant le point 10 du module 1. N’oubliez pas de supprimer toutes les adresses IP.

(L’alternative est de simplement supprimer toute la configuration du routeur avec la commande write erase et ensuite de faire un reload du routeur. Apres le reload, recommencer toute la configuration des points 1 à 9 du Module 1.)

2.      Re-configurez BGP et ISIS. Sur cahque routeur, supprimez les process BGP et ISIS du Module 1 à l’aide des 2 commandes suivantes:

Router1 (config)# no router bgp 10
Router1 (config)# no router isis workshop

Ceci enlève la configuration BGP et ISIS afin de redémarrer proprement pour le module courant.

3.      Adressage IP. Comme pour l’étape 10 du Module 1, nous avons besoin d’un plan d’adressage rationnel et scalable pour chaque AS du réseau. Chaque AS reçoit son propre bloc d’adresses, un /20 (l’allocation minimum typique pour un nouvel ISP). Ce bloc d’adresses est alloue aux liens et loopbacks des routeurs de chacun des AS. Les allocations sont comme suit:


AS10              10.10.0.0/20
AS20              10.20.0.0/20
     AS30              10.30.0.0/20
     AS40              10.40.0.0/20


De nouveau, nous devons diviser chaque bloc d’adresses afin d’avoir de l’espace d’adressage pour les clients, l’infrastructure réseau et les loopbacks. Figure 3 ci-dessous nous rappelle comment ceci peut être fait : 

Veuillez vous référer au plan d’adressage fourni en annexe pour ce module. Le fichier est nommé “Addressing Plan – Modules 6 to 9”. Comme fait pour le Module 1, configurez les adresses de chaque interface utilisée pour ce module, vérifiez la connectivité IP de base avec vos voisins immédiats.

1.      Adresses pour les interfaces loopback des routeurs. Nous avons réservé un /27 pour les loopbacks même si leur AS ont seulement 3 ou 4 routeurs – ceci laisse suffisament d’espace poru des expansions futures. Les adresses attribuées aux loopbacks pour ce module sont les suivantes:


Router1                     10.10.15.224
Router2                     10.10.15.225
Router3                     10.10.15.226
Router4                     10.20.15.224
Router5                     10.20.15.225
Router6                     10.20.15.226
Router7                     10.20.15.227
Router8                     10.30.15.224
Router9                     10.30.15.225
Router10                   10.30.15.226
Router11                   10.40.15.224
Router12                   10.40.15.225
Router13                   10.40.15.226
Router14                   10.40.15.227


2.      Configurez ISIS sur les routeurs de chaque AS. Dans chaque AS, configurez ISIS. Cela signifie que chaque équipe router ISIS avec comme ISIS ID asY sur son routeur, où Y est le numéro d’AS.  Les liens internes a l’AS vers chaque routeur de l’AS doivent être configurés avec ip router ISIS asY.  L’adresse NET est 49.0001.x.x.x.00, où x.x.x est construit a partir de l’adresse loopback (voir  Module 1 pour plus de détails).

ISIS est configuré uniquement sure les interfaces internes. Pour des raisons de scalabilité (passage a l’échelle), il ne faut pas configurer d’adjacences vers des appareils hors de votre AS. Vérifiez qu’il n’y a pas de commande router isis pour les interfaces externes. Une conséquence de cela est que les adresses des liens externes n’apparaissent pas dans l’IGP (voir section suivante pour une discussion sur le déploiement iBGP).

Par exemple, Router 1, qui a deux interfaces dans AS 10, est configuré comme suit :

Router1 (config)# router isis as10
Router1 (config-router)# net 49.0001.0100.1001.5224.00
Router1 (config-router)# is-type level-2-only
Router1 (config-router)# metric-style wide level-2
Router1 (config-router)# log-adjacency-changes
Router1 (config-router)# set-overload-bit on-startup wait-for-bgp
!
Router1 (config)# interface fastethernet 0/0
Router1 (config-if)# ip router isis as10
Router1 (config-if)# isis metric 2 level-2
Router1 (config-if)# isis circuit-type level-2-only
!
Router1 (config)# interface serial 1/0
Router1 (config-if)# ip router isis as10
Router1 (config-if)# isis metric 20 level-2
Router1 (config-if)# isis circuit-type level-2-only

Note:
·         Différents ISPs utilisent différentes méthodes pour les adresses NET.  Il est cependant courant d’utiliser l’adresse IP de la loopback comme system ID au format hexadecimal ou decimal.  Dans ce module tous les routeurs d’un AS sont de niveau-2 (level-2) et dans une seule aire (49.0001).

3.      Interfaces passives en ISIS. Marquez maintenant les interfaces sur lesquelles vous ne voulez pas ISIS comme interfaces passives. Pour ISIS, marquer une interface comme étant passive signifie qu’il n’y aura pas d’adjacence CLNS et que le sous-réseau IP utilisé pour l’interface sera injecté dans ISIS. Dans ce laboratoire, nous marquons les interfaces loopback comme passive. Notez qu’il n’est pas possible de marquer une interface comme passive si ISIS n’est pas configuré sur au moins une des interfaces physiques de routeur (comme fait au point 6). Voici un exemple pour Router1:

Router1 (config)# router isis as10
Router1 (config-router)# passive-interface Loopback0

Quelques règles concernant les interfaces:
  1. ip router isis sur une interface signifie qu’une adjacence CLNS est requise et que le sous-réseau IP de cette interface est injecté dans ISIS.
  2. passive interface” dans la configuration ISIS d’une interface signifie que l’on ne veut pas d’une adjacence CLNS mais que le sous-réseau IP de l’interface est injecté dans ISIS.
  3. Pas de configuration ISIS pour une interface signifie qu’il n’y a pas d’adjacence CLNS requise et que le sous-réseau IP de l’interface ne sera pas annoncé par ISIS.

Note: Par défaut, ISIS établi des adjacences et annonce les prefixes des interfaces activées à l’aide de la commande “ip router isis”. Ceci est différent du comportement OSPF. OSPF tente d’établir des adjacences pour les interfaces couvertes par la déclaration network (OSPF requière donc l’utilisation de passive et no passive pour contrôler son fonctionnement).

4.      ISIS sur des liens Ethernet Point-a-Point. Une des caractéristiques mentionnées lors de la présentation ISIS est l’option de pouvoir modifier le comportement ISIS pour les liens point-à-point sur un media broadcast, tel qu’Ethernet, lorsqu’il n’y a que deux appareils sur le media. Si l’on déclare la situation comme étant point à point,  ISIS n’essaye pas de déterminer quel est le routeur désigné. Ceci conduit a une simplification lors des calculs SPF (Shortest Path First) et une amélioration des besoins en terme de mémoire sur le routeur.

Les équipes qui ont configure ISIS sur leur interfaces Ethernet internes vont maintenant convertir ISIS vers le mode point-à-point mode, par exemple:

Router1 (config)# interface fastethernet 0/0
Router1 (config-interface)# isis network point-to-point

Ce lien est maintenant traité comme une connexion série point-à-point. Notez qu’il n’est pas nécessaire de configurer le point-à-point mode pour les interfaces Ethernet sur lesquelles ISIS ne tourne pas.

5.      Test Ping. Vérifiez les routes reçues via ISIS.  Assurez vous que vous voyez tous les réseaux de votre AS et pas de réseaux d’autres ASs. Pingez toutes les loopback de votre AS. Utilisez les commandes “show clns neighbor” et “show ip route”.

6.      Sauvez la configuration. N’oubliez pas de sauvez la configuration en NVRAM !

Checkpoint #1 : appelez l’instructeur afin de vérifier la connectivité.

7.      Activation de l’authentification pour les voisins ISIS – Partie 1. ISIS supporte l’authentification des voisins; ceci est considéré comme étant de plus en plus important pour un réseau d’ISP. Alors que les attaques visant leur infrastructure augmentent, les ISPs ont recours à tous les outils disponibles pour sécuriser leurs réseaux. (Malgré le fait qu’il est plus difficile d’attaque ISIS qui tourne au dessus de la couche 2 (link layer) au lieu de d’au dessus d’IP comme OSPF, certains operateurs d’ISPs sont prudents et implémentent « neighbour authentication ».)

Chaque équipe active maintenant neighbour authentication pour ISIS. La première étape est d’établir une keychain – nous utilisons la clé “cisco” pour ce laboratoire:

Router1(config)# key chain lab-key
Router1(config-keychain)# key 1
Router1(config-keychain-key)# key-string cisco

8.      Activation de l’authentification pour les voisins ISIS – Partie 2.  Maintenant que la keychain est définie, nous activons le support d’authentification sur toutes les interfaces du routeurs. La première étape est d’activer MD5 pour level-2 IS’s:

Router1(config)# interface fastethernet 0/0
Router1(config-if)# isis authentication mode md5 level-2

Ensuite nous associons la key-chain définie précédemment à l’authentification que nous venons de configurer :

Router1(config)# interface fastethernet 0/0
Router1(config-if)# isis authentication key-chain lab-key level-2

Notez maintenant que les adjacences ISIS ne s’établissent pas à moins que le routeur voisin n’ai également entré la même configuration et la même clé. Remarquez également comme les adjacences sont réinitialisées lorsque la configuration est saisie – Nous avons introduit de la sécurité, ce qui redémarre les adjacences.

9.  Vérification finale. Utilisez les différentes commandes “show isis” pour voir le statut actuel d’ISIS dans le réseau. Vérifiez le routage et la table de routage. Assurez vous que toutes les adjacences sont de nouveau établies. Si une adjacence n’a pas su se rétablir et vous observez le message suivant plusieurs fois dans le log :

*Mar  1 00:05:17.825: %CLNS-4-AUTH_FAIL: ISIS: LAN IIH authentication failed

vous pouvez raisonnablement supposer que soit vous sont votre voisin avez oublié de configurer l’authentification sur votre interface avec le voisin.

Note: A partir de maintenant, lorsqu’une session ISIS est configurée, toutes les équipes DOIVENT utiliser un mot de passe sur ces sessions ISIS.


Checkpoint #2 : appelez l’instructeur afin de vérifier la connectivité.


10.  Configuration des sessions iBGP entre routeurs d’un même AS. Utilisez les adresses loopback pour les peerings iBGP. De plus, configurez la commande network pour ajouter les blocs d’adresses alloués à chaque routeur/équipe dans les annonces BGP.

Router1 (config)# router bgp 10
Router1 (config-router)# distance bgp 200 200 200
Router1 (config-router)# no synchronization
Router1 (config-router)# network 10.10.0.0 mask 255.255.240.0
Router1 (config-router)# neighbor 10.10.15.225 remote-as 10
Router1 (config-router)# neighbor 10.10.15.225 update-source loopback 0
Router1 (config-router)# neighbor 10.10.15.225 next-hop-self
Router1 (config-router)# neighbor 10.10.15.225 description iBGP Link to R2
Router1 (config-router)# neighbor 10.10.15.226 remote-as 10
Router1 (config-router)# neighbor 10.10.15.226 update-source loopback 0
Router1 (config-router)# neighbor 10.10.15.226 next-hop-self
Router1 (config-router)# neighbor 10.10.15.226 description iBGP Link to R3
Router1 (config-router)# no auto-summary
Router1 (config-router)# exit
Router1 (config)# ip route 10.10.0.0 255.255.240.0 Null0

11.  Configuration de Next-hop-self. Au point précédent nous avons introduit la commande next-hop-self. Comme vu lors de la présentation BGP, la configuration de next-hop-self fait que le routeur parlant en iBGP utilise comme next-hop l’adresse source de la session iBGP (dans ce cas la loopback) plutôt que l’adresse du next-hop externe (comme mentionné dans la spécification BGP). Ceci est une bonne pratique appliquée par les ISPs. Cela signifie qu’un ISP n’a pas besoin d’annoncer les IPs des next-hop (NH) externes dans son IGP.

12.  Testez la connectivité BGP interne. Utilisez les commandes show BGP pour vous assurez que vous recevez les routes de tous les routeurs de votre AS.

13.  Configuration de mots de passe sur les sessions iBGP. Il nous faut maintenant configurer des mots de passe sur les sessions iBGP. Révisez la présentation afin de comprendre pourquoi c’est nécessaire. Décidez entre toutes les équipes d’un même AS sur le mot de passe à utiliser pour les sessions iBGP. Ensuite appliquez le à tous les peerings iBGP de votre routeur. Par exemple, sur le peering de Router2 avec Router3, le mot de passe “cisco” est utilisé :

Router2 (config)# router bgp 10
Router2 (config-router)# neighbor 10.10.15.226 password cisco

Actuellement IOS réinitialise la session iBGP lorsqu’un mot de passe MD5 est ajouté. Dès lors, lorsqu’un mot de passe est ajouté sur une session BGP d’un réseau opérationnel, cette tâche doit être accomplie durant les fenêtres annoncées de maintenance, un moment où les clients s’attendent à des perturbations de service. Dans ce laboratoire, cela n’a pas tellement d’importance. (De futures versions d’IOS éviteront ce sérieux problème d’interruption de service.)

Consultez les logs du routeur – les changements de sessions BGP étant consignés, une incohérence dans le mot de passe devrait se repérer facilement. Un mot de passe manquant d’un côté d’une session BGP donne l’erreur suivante sur le routeur voisin :

%TCP-6-BADAUTH: No MD5 digest from 3.3.3.3:179 to 2.2.2.2:11272
%TCP-6-BADAUTH: No MD5 digest from 3.3.3.3:179 to 2.2.2.2:11272
%TCP-6-BADAUTH: No MD5 digest from 3.3.3.3:179 to 2.2.2.2:11272

alors qu’un mot de passe incohérent résulte en le message suivant :

%TCP-6-BADAUTH: Invalid MD5 digest from 3.3.3.3:11024 to 2.2.2.2:179
%TCP-6-BADAUTH: Invalid MD5 digest from 3.3.3.3:11024 to 2.2.2.2:179
%TCP-6-BADAUTH: Invalid MD5 digest from 3.3.3.3:11024 to 2.2.2.2:179

Checkpoint #3: Appelez l’instructeur et démontrez la configuration du mot de passe sur les session iBGP. Si l’instructeur vous en donne le feu vert, vous pouvez passer aux points suivants.


14.  Configuration des peerings eBGP. Réferez-vous a la Figure 1 afin de déterminer les liens entre ASs. Les adresses utilisés pour les sessions eBGP entre 2 AS sont les adresses des interfaces point-à-point PAS les adresses loopback (révisez la présentation BGP si vous ne comprenez pas pourquoi).

Router1 (config)# router bgp 10
Router1 (config-router)# neighbor 10.10.15.14 remote-as 40
Router1 (config-router)# neighbor 10.10.15.14 description eBGP to Router13

Utilisez les commandes show BGP pour vous assurer que vous envoyez et recevez les annonces BGP de vos voisins eBGP.

Q. Pourquoi ne pas utiliser les interfaces loopback pour les sessions eBGP ?

A. L’adresse IP loopback d’un routeur n’est pas connue des peers BGP externes. De ce fait les peers externes ne savent pas comment joindre la loopback afin d’établir la session de peering BGP.

Q. Quelle commande show BGP permet de voir l’état de la connexion avec un peer ?

A. Essayez show ip bgp neighbor x.x.x.x – Ceci fourni les détails concernant l’état d’un peer. Il existe des sous-commandes donnant plus d’information sur la session de peering.

Q. Quelle commande show BGP permet de voir les préfixes annoncés et reçus d’un peer eBGP ?

A. Essayez show ip bgp neighbor x.x.x.x route – ceci montre les routes que vous recevez de votre voisin. De même, remplacez route par advertised-routes pour obtenir la liste des réseaux que vous annoncez à votre voisin. (Notez qu’en pratique, il y a une subtilité à prendre en compte ici – si vous appliquez des route-maps et/ou des politiques BGP, ces dernières ne sont pas prises en compte par la commande advertised-routes. Utilisez la commande advertised-routes avec précaution.)

15.  Configuration de mots de passe pour les sessions eBGP. Configurez maintenant des mots de passe pour les sessions eBGP entre votre AS et les AS voisines. Mettez vous d’accord avec l’AS voisine sur le mot de passe à utiliser pour la session eBGP.  Ensuite appliquez le mot de passe à la session eBGP. Par exemple, pour la session de Router2 avec Router4,  “cisco” est utilisé comme mot de passe:

Router2 (config)# router bgp 10
Router2 (config-router)# neighbor 10.10.15.10 password cisco

Comme pour les sessions iBGP, consultez les logs à la recherche de mots de passe incohérents ou non configurés. De nouveau, vous observez que le routeur réinitialise la session eBGP dès qu’un mot de passe est configuré.

Note: A partie de maintenant, dès qu’une session BGP (iBGP ou eBGP) est configurée, tous les routeurs DOIVENT utiliser un mot de passe sur ces sessions.

Checkpoint #4: Appelez l’instructeur et démontrez la configuration du mot de passe sur les session eBGP. Si l’instructeur vous en donne le feu vert, vous pouvez passer aux points suivants.


16.  Ajout des routes “client” dans BGP. Comme pour le Module 1, nous ajoutons maintenant les routes “clients” dans BGP sur chaque router. Nous n’avons pas de clients réels connectés à nos routeurs dans le laboratoire. Nous allons donc simuler la connectivité en utilisant l’interface Null0. Le bloc d’adressage “client” que chaque équipe annonce en iBGP est listé ci-dessous– nous utilisons encore un /26 pour plus de simplicité.


R1   10.10.0.0/26
R2   10.10.0.64/26
R3   10.10.0.128/26
R4   10.20.0.0/26
R5   10.20.0.64/26
R6   10.20.0.128/26
R7   10.20.0.192/26
R8   10.30.0.0/26
R9   10.30.0.64/26
R10  10.30.0.128/26
R11  10.40.0.0/26
R12  10.40.0.64/26
R13  10.40.0.128/26
R14  10.40.0.192/26


Chaque équipe installe une route statique pointant vers l’interface NULL0 pour le /26 dont elle est a l’origine. Des que la route statique est installée, l’équipe ajoute une entrée dans sa table BGP pour ce préfixe. Voici ce que cela donne pour Router8:

Router8 (config)# ip route 10.30.0.0 255.255.255.192 Null0
Router8 (config)# router bgp 30
Router8 (config-router)# network 10.30.0.0 mask 255.255.255.192

17.  Vérification de la table BGP. Y a t-il des routes vues par show ip bgp? Si non, pourquoi pas? Une fois que toutes les équipes de la classe ont terminé leur configuration, chaque équipe doit voir l'agrégat de chaque AS, ainsi que les quatorze / 26s introduits à l'étape précédente. Si ce n'est pas le cas, travaillez avec vos voisins pour résoudre le problème.

Checkpoint #5: Appelez l’instructeur afin de vérifier la connectivité. Utilisez entre autres les commandes “show ip route sum”, “show ip bgp sum”, “show ip bgp”, “show ip route”, et “show ip bgp neigh x.x.x.x route | advertise”. Il doit y avoir 4 préfixes agrégés (un pour chaque ISP) et 14 prefixes clients, des /26’s, dans la table BGP.


18.    Importance d’agréger. Chaque a reçu un bloc /20 d’adresses. Les operateurs de l’Internet demandent à ce que les préfixes utilisés par un ISP soient agrégés le plus possible avant d’être annoncés au reste de l’Internet. Il est parfaitement acceptable de subdiviser une espace d’adresse a l’intérieur d’un AS et évidemment c’est très courant (comme nous l’avons fait ici) – mais la plupart des operateurs considèrent que répandre cet petits blocs d’adresses dans l’Internet comme une pratique asociale, irrespectueuse du bien-être général de l’Internet.

Q. Comment agréger automatiquement de petits blocs d’adresses utilises dans votre AS en un bloc plus large à annoncer à l’extérieur de votre réseau ? Indice: Révisez la documentation BGP.

A. La commande “aggregate-address” est fréquemment utilisée à cette fin.

Nous ne filtrons pas, nous ne limitons pas, les annonces des blocs d’adresses clients que nous introduisons dans chaque AS. Ceci sera un des objectifs des modules suivants de cet atelier.



Figure 4 – Agrégats pour chaque ASN

1.      Quantité d’updates BGP (Optionnel). Utilisez la commande debug ip bgp update pour voir l’activité en termes de messages BGP apres un « clear » de session BGP session. Pour arrêter le debug, faites undebug ip bgp update.

Avertissement: Ce n’est pas une bonne idée de lancer cette commande de debug sur un routeur recevant la table complète de l’Internet. En la testant dans notre reseau de laboratoire vous verrez certainement pourquoi c’est le cas.