17.2. Configurer BGP4 avec Zebra

Le Border Gateway Protocol Version 4 (BGP4) est un protocole de routage dynamique décrit dans la RFC 1771. Il permet la distribution des informations de connectivité, c'est à dire les tables de routage, vers d'autres nœuds BGP4 actifs. Il peut être utilisé comme un EGP ou un IGP. Dans le mode EGP, chaque nœud doit avoir son propre numéro de système autonome (Autonomous System (AS)). BGP4 supporte ????????? et l'aggrégation de routes (réunir plusieurs routes en une seule). > The Border Gateway Protocol Version 4 (BGP4) is a dynamic routing > protocol described in RFC 1771. It allows the distribution of > reachability information, i.e. routing tables, to other BGP4 > enabled nodes. It can either be used as EGP or IGP, in EGP mode > each node must have its own Autonomous System (AS) number. > BGP4 supports Classless Inter Domain Routing (CIDR) and route > aggregation (merge multiple routes into one).

17.2.1. schéma réseau (Exemple)

Le schéma réseau suivant est utilisé pour les exemples à suivre. AS 1 et 50 ont plusieurs voisins mais nous avons seulement besoin de configurer 1 et 50 comme nos voisins. Les nœuds communiquent entre eux par des tunnels dans cet exemple, mais ce n'est pas une obligation.

Note : les numéros AS utilisés dans cet exemple sont réservés. Veuillez obtenir vos propres numéros AS du RIPE si vous installez des liens officiels.

 
                   --------------------
                   | 192.168.23.12/24 |
                   |    AS: 23        |
                   --------------------
                     /             \
                    /               \
                   /                 \
         ------------------       ------------------
         | 192.168.1.1/24 |-------| 10.10.1.1/16   |
         |    AS: 1       |       |    AS: 50      |
         ------------------       ------------------

17.2.2. Configuration (Exemple)

La configuration suivante est écrite pour le nœud 192.168.23.12/24 et elle sera facile à adapter pour les autres nœuds.

Elle commence par des éléments généraux comme le nom de l'hôte, les mots de passe et les options de debug :

! hostname
hostname anakin
 
! login password
password xxx
 
! enable password (super user mode)
enable password xxx
 
! path to logfile
log file /var/log/zebra/bgpd.log
 
! debugging: be verbose (can be removed afterwards)
debug bgp events
debug bgp filters
debug bgp fsm
debug bgp keepalives
debug bgp updates

La liste de contrôle d'accès (Access list) est utilisée pour limiter la redistribution aux réseaux privés (RFC 1918).

 ! RFC 1918 networks
 access-list local_nets permit 192.168.0.0/16
 access-list local_nets permit 172.16.0.0/12
 access-list local_nets permit 10.0.0.0/8
 access-list local_nets deny any

L'etape suivante consiste à configurer chaque AS :

 ! Own AS number
 router bgp 23
 
     ! IP address of the router
     bgp router-id 192.168.23.12
 
     ! announce our own network to other neighbors
     network 192.168.23.0/24
 
     ! advertise all connected routes (= directly attached interfaces)
     redistribute connected
 
     ! advertise kernel routes (= manually inserted routes)
     redistribute kernel

Chaque section 'router bgp' contient une liste de voisins auquels le routeur est connecté :

     neighbor 192.168.1.1 remote-as 1
     neighbor 192.168.1.1 distribute-list local_nets in
     neighbor 10.10.1.1   remote-as 50
     neighbor 10.10.1.1   distribute-list local_nets in

17.2.3. Vérification de la configuration

Note : vtysh est un multiplexeur qui connecte toutes les interfaces utilisateur de zebra ensemble.

 anakin# sh ip bgp summary 
 BGP router identifier 192.168.23.12, local AS number 23
 2 BGP AS-PATH entries
 0 BGP community entries
 
 Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
 10.10.0.1       4    50      35      40        0    0    0 00:28:40        1
 192.168.1.1     4     1   27574   27644        0    0    0 03:26:04       14
 
 Total number of neighbors 2
 anakin#
 anakin# sh ip bgp neighbors 10.10.0.1
 BGP neighbor is 10.10.0.1, remote AS 50, local AS 23, external link
   BGP version 4, remote router ID 10.10.0.1
   BGP state = Established, up for 00:29:01
   ....
 anakin#
 

Voyons quelles routes nous avons obtenues de nos voisins :

anakin# sh ip ro bgp 
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       B - BGP, > - selected route, * - FIB route
 
B>* 172.16.0.0/14 [20/0] via 192.168.1.1, tun0, 2d10h19m
B>* 172.30.0.0/16 [20/0] via 192.168.1.1, tun0, 10:09:24
B>* 192.168.5.10/32 [20/0] via 192.168.1.1, tun0, 2d10h27m
B>* 192.168.5.26/32 [20/0] via 192.168.1.1, tun0, 10:09:24
B>* 192.168.5.36/32 [20/0] via 192.168.1.1, tun0, 2d10h19m
B>* 192.168.17.0/24 [20/0] via 192.168.1.1, tun0, 3d05h07m
B>* 192.168.17.1/32 [20/0] via 192.168.1.1, tun0, 3d05h07m
B>* 192.168.32.0/24 [20/0] via 192.168.1.1, tun0, 2d10h27m
anakin#