Anatomy of a BGP Configuration
ip bgp-community new-format
!
router bgp 3582 - Initial BGP config statement with ASN
no synchronization - Do not synchronize with the IGP
no auto-summary - no classfull boundaries
bgp dampening - dampen route flaps
network 128.223.0.0 - network to announce into BGP
neighbor 207.98.66.11 send-community - Send communities to peers
neighbor 207.98.66.11 version 4 - BGP version 4 negotiation
neighbor 207.98.66.11 soft-reconfiguration inbound - Store updates & allow reads. Without reset
neighbor 207.98.66.11 prefix-list sanity-filter in - filter all incoming prefixes against this prefix-list
neighbor 207.98.66.11 prefix-list my-routes out neighbor 207.98.66.11 prefix-list my-routes out - filter all outgoing prefixes against this prefix-list
neighbor 207.98.66.11 remote-as 3701 - neighbor peering session
neighbor 207.98.66.11 description NERO Transit (noc@nero.net) - neighbor description
neighbor 207.98.66.11 update-source POS 6/0/0 - peering session connection source
neighbor 198.108.0.1 remote-as 3582 - set up an ibgp peering session
neighbor 198.108.0.1 version 4 - BGP version 4
neighbor 198.108.0.1 description IBGP-peer - neighbor description
neighbor 198.108.0.1 update-source loopback - peering session connection source
!
ip prefix-list my-routes seq 5 permit 128.223.0.0/16 - prefix-list filtering all outgoing advertised
ip prefix-list my-routes seq 50 deny 0.0.0.0/0 le 32 prefixes.
!
ip prefix-list pond seq 5 permit 205.240.25.0/24 - prefix-list filtering all incoming advertised
ip prefix-list pond seq 10 permit 199.217.92.0/22 prefixes from peer.
ip prefix-list pond seq 15 permit 206.40.128.0/22
ip prefix-list pond seq 50 deny 0.0.0.0/0 le 32
!
ip prefix-list sanity-filter description "Deny default, RFC1918, net 10" - no bogons
ip prefix-list sanity-filter seq 10 deny 127.0.0.0/8 le 32
ip prefix-list sanity-filter seq 15 deny 10.0.0.0/8 le 32
ip prefix-list sanity-filter seq 20 deny 172.16.0.0/12 le 32
ip prefix-list sanity-filter seq 25 deny 192.168.0.0/16 le 32
ip prefix-list sanity-filter seq 30 deny 192.0.2.0/24 le 32
ip prefix-list sanity-filter seq 50 permit 0.0.0.0/0 le 32
!
Exercice 1 – Etablissement d’une liaison eBGP avec un voisin
- Désactivez toute configuration OSPF de votre routeur. Désactivez les liaisons série de ceux-ci (shutdown). Pour cet exercice nous utiliserons uniquement les prises Ethernet.
- Vérifiez avec show ip route que vous ne disposez plus de routes OSPF sur votre routeur. Supprimez également toutes les routes statiques que vous puissiez avoir (notamment la route par défaut).
Vous pouvez maintenant mettre en œuvre une session eBGP avec votre voisin, tel que indiqué sur le schéma du support de cours (A = AS1 a une session eBGP avec B = AS2, …).
- Pour établir la session eBGP vous devez connaître les informations suivantes :
Votre numéro d’AS:
Numéro d’AS du voisin :
Adresse IP connectée su routeur eBGP du voisin :
- Vous annoncerez par eBGP à votre voisin votre réseau ethernet local (celui sur lequel est raccordé votre PC). Vous devez noter :
Adresse de réseau :
Netmask :
- Configurez BGP sur votre routeur afin d’annoncer votre réseau dans le BGP :
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# ip bgp-community new-format
Router(config)#router bgp 1
// votre AS
Router(config-router)#network 80.248.71.64 mask 255.255.255.240
// votre réseau
Router(config-router)#no synchronization // option recommandée
Router(config-router)#no auto-summary
Router(config-router)#bgp dampening // ça c’est plus discutable
Vous avez maintenant une configuration BGP minimale sur votre routeur
(mais il n’y a pas encore de voisin)
- Etablissez une session BGP avec votre voisin
Router(config)#router bgp 1
//votre AS
Router(config-router)#neighbor 80.248.71.2 remote-as 2
// adresse IP et numéro d’AS du voisin
Router(config-router)#neighbor 80.248.71.2 description Mon-BGP-avec-AS2
- Regardez si la session BGP est active :
Router#show ip bgp sum
BGP router identifier 80.248.71.1, local AS number 1
BGP table version is 3, main routing table version 3
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
80.248.71.2 4 2 0 0 0 0 0 never Idle
Regardez ce que vous avez dans votre table BGP :
Router#show ip bgp
Regardez ce que vous annoncez comme routes à votre voisin :
Router#show ip bgp neighbor x.x.x.x advertised-routes
- Utilisation de filtres. Pour prouver l’intérêt d’utiliser des filtres, vous allez configurer des routes supplémentaires dans votre BGP (à vous de les choisir de façon originale) :
ip route 10.25.3.0 255.255.255.0 Null0
router bgp 1
network 10.25.3.0 mask 255.255.255.0
- Définissez une politique de filtrage en utilisant les "prefix-list" et "distribute-list" afin de filtrer les mises à jour en sortie ou en entrée (faites le l’un après l’autre afin de voire les effets avec votre partenaire BGP).
Router(config)#ip access-list 40 permit 80.248.71.64 0.0.0.15
Router(config)#ip access-list 41 permit 80.248.71.80 0.0.0.15
Router(config-router)#neighbor 80.248.71.2 distribute-list 40 out
Router(config-router)#neighbor 80.248.71.2 distribute-list 41 in
Router(config)#ip prefix-list mesroutes seq 10 permit 80.248.71.64/28
Router(config)#ip prefix-list mesroutes seq 99 deny 0.0.0.0/0 le 32
Router(config)#ip prefix-list sesroutes seq 10 permit 80.248.71.80/28
Router(config)#ip prefix-list sesroutes seq 99 deny 0.0.0.0/0 le 32
Router(config-router)#neighbor 80.248.71.2 prefix-list mesroutes out
Router(config-router)#neighbor 80.248.71.2 prefix-list sesroutes in
- A chaque modification de configuration, redémarrer la session BGP (à ne pas faire trop fréquemment dans la vraie vie !)
Router#clear ip bgp neighbor x.x.x.x
- A chaque modification de configuration, redémarrer la session BGP (à ne pas faire trop fréquemment dans la vraie vie !)
Exercice 2 – Plusieurs connexions, OSPF, iBGP et sessions eBGP
Connectez-vous à la table d’à côté en utilisant le câble croisé (la tâble A se connecte avec B, C avec D, …). Chaque groupe de 2 tables fera partie d’un AS (A et B dans l’AS1, C et D dans l’AS 3).
Supprimez la session eBGP précédemment configurée, supprimez également tous les filtres que vous avez configurés précédemment.
Mettez en place un routage OSPF entre les deux tables. Il est nécessaire de vérifier :
- votre plan d’adressage IP
- décidez d’un adressage IP pour le lien d’interconnexion ethernet
- vérifiez et notez les adresses et masques de vos réseaux ethernet respectifs
- vérifiez (et décidez) l’adressage IP sur le port série avec votre voisin
- vérifiez l’adresse IP et le masque de l’interface Loopback
- que vous pouvez joindre le routeur et le PC de la table voisine
Maintenant vous pouvez configurer vos sessions eBGP et iBGP
- configurez d’abord la session iBGP avec l’autre routeur dans votre AS
- configurez eBGP sur les liaisons série (selon le diagramme)
- ajoutez une clause "network" pour toutes les routes que vous allez annoncer à votre voisin, n’oubliez pas d’utiliser l’aggrégation des routes si possible
- pour votre iBGP n’oubliez pas d’utiliser l’adresse de la Loopback0, et vérifiez que cette route se trouve dans l’OSPF
Router(config-router)#neighbor x.x.x.x update-source Loopback0
Déterminez quelles sont les routes que votre voisin va vous envoyer et mettez en place des filtres adéquats pour ne recevoir que ce qui doit arriver sur la session
Vérifiez que tous les réseaux de votre voisin soient joignables.
Exercice 3 – se connecter à un ISP
Dans cet exercice nous allons simuler la configuration d’un ISP. Chaque groupe devra obtenir son propre numéro d’AS du registre (les instructeurs), et devra demander des adresses IP à son prestataire "upstream" (ou au registre). Nous allons utiliser la topologie du diagramme et préférer certain chemins sur d’autres.
A, B, C, et D représentent ISP 1.
E et G forment ISP 2.
F et H sont ISP 3.
I et J sont ISP 4.
- ISP 4 est notre prestataire de transit. Tous les ISP de la salle de cours prennent directement ou indirectement du transit chez ISP 4. Ce prestataire devra obtenir un bloc d’adresses IP et un numéro d’AS auprès du registre. Les ISP 1, 2 et 3 devront également obtenir un numéro d’AS du registre.
- ISP 4 va allouer des blocs IP à ISP 2 et ISP 3. ISP 3 allouera à son tour des adresses à ISP 1.
- Il convient maintenant de définir la topologie de la salle de classe qui soit conforme avec le plan logique de raccordement et en utilisant les adresses IP qui ont été allouées précédemment.
- Mettez en place la connexité au sein de votre AS, en déployant OSPF et en s’assurant que vous ayez accès à tous les routeurs et PC. Utilisez "show ip route", ping et traceroute pour vérifier tout cela.
- ISP 4 devra ajouter certaines routes dans ses tables, notamment une route par défaut. Il faudra peut-être diffuser certaines de ces routes dans le BGP (route vers Null0 et "redistribute static" ou bien une clause "network").
- Démarrez toutes les sessions iBGP au sein de votre AS. Combien y en a-t-il, comment les mettre en œuvre ?
- Mettez en œuvre eBGP selon les liaisons présentées dans le diagramme.
- Mettez en œuvre des filtres en utilisant des "prefix lists" ou "as-path filters" afin de mettre en œuvre la politique de routage suivante :
-ISP 4 annonce toutes ses routes à ISP 2 et ISP 3
- ISP 4 accepte les routes de ISP 2 (y compris ISP 1) en provenance de ISP 2
- ISP 4 accepte les routes de ISP 3 (y compris ISP 1) en provenance de ISP 3
– ISP 2 annonce ses routes à ISP 3
– ISP 2 annonce toutes les routes à ISP 1
– ISP 2 accepte les routes d’ISP 3 uniquement sur la session avec ISP 3
– ISP 2 accepte toutes les routes en provenance d’ISP 4
– ISP2 annonce toutes ses routes ainsi que celles de ses clients à ISP 4
– ISP 3 annonce ses routes à ISP 2
– ISP 3 annonce toutes les routes à ISP 1 (routes agrégées et routes spécifiques de ISP 1)
– ISP 3 accepte les routes ISP 2 de ISP 2 (uniquement)
– ISP 3 accepte toutes les routes de ISP 4
– ISP 3 annonce toutes ses routes (et clients) à ISP 4
– ISP 1 annonce ses routes à ISP 2 et ISP 3
– ISP 1 doit accepter toutes routes de ISP 2 et ISP 3
- Vérifiez vos filtres, vérifiez que vous recevez bien ce qui est prévu de vos voisins.
- Que recevez-vous ? Regardez le chemin d’AS. Quelles sont les routes préférées ?
BGP Exercise 4 - Changing BGP Policy
In this exercise, we will modify the previous exercise to put advanced policy in our network.
Try to implement the following policies using route-maps on your peering sessions.
- ISP 1 should prepend its ASpath to ISP 3 so that ISP 3 does not send traffic over the ISP 1-ISP 3 link.
- ISP 1 should set local preference on the routes learned from ISP 2 and ISP 3. This is done via a route-map applied on each of the peering sessions "inbound." ISP 1 should prefer the ISP 2 link (set local-preference to 200). ISP 1 should set the routes learned from ISP 3 to a local preference of 90.
- ISP 2 should use communities to tag the routes that it learns from ISP 4 and ISP 3. This is done via a route-map applied on each of the peering sessions "inbound". Routes learned from ISP 4 should be tagged with the community <2’s AS number>:4. Routes learned from ISP 3 should be tagged with the community <2’s AS number>:3. ISP 2 should then use route-maps to announce to ISP 1 only those routes with the community <2’s AS number>:4.
Make sure that you accept and send communities from your peers!
neighbor 207.98.66.11 send-community - Send communities to peers
- ISP 3 should use communities to tag the routes that it learns from ISP 4 and ISP 2. This is done via a route-map applied on each of the peering sessions "inbound". Routes learned from ISP 4 should be tagged with the community <3’s AS number>:4. Routes learned from ISP 2 should be tagged with the community <3’s AS number>:2. ISP 3 should then use route-maps to announce to ISP 2 only those routes with the community <3’s AS number>:4.
- ISP 4 should use route-maps to tag the all of its routes on its peering sessions "outbound" with a community depending on the prefix. Depending on the prefix, you should set the community. For some prefixes, send a community of 4:11111, for others, send a community of 4:22222.
6. On your map of the network, label how you think the routing information flows.
7. Discuss how this compares to real-world scenarios. How is this the same as the real world? How is this different?