Configurare il protocollo BGP Border Gateway Protocol

Continuiamo con la nostra serie di articoli che, attraverso esempi pratici e semplificati, dimostrano l’applicazioni di strumenti fondamentali nei rispettivi ambiti. In questo laboratorio, impareremo a configurare il Protocollo di Routing BGP – Border Gateway Protocol.
Vedremo come stabilire sessioni interne ed esterne e come pubblicizzare le reti tramite il BGP. Monitoreremo, inoltre, come le informazioni di routing si propagano tramite il protocollo:

Di seguito lo schema degli indirizzi che caratterizzano la topologia oggetto del laboratorio:

Configuriamo una sessione BGP esterna tra R1, presente nell’AS 65100, e R2, presente nell’AS 65000. Per stabilire la sessione utilizziamo gli indirizzi IP del link tra i due router.
Creiamo il processo BGP e configuriamo il neighbor sui router R1 e R2 rispettivamente.
Per abilitare il BGP, creiamo il processo BGP con il comando router bgp as-number. Possiamo configurare solo un singolo AS number per ogni router.
R1 appartiene all’AS 65100, mentre R2 appartiene all’AS 65000.
La sessione tra l’AS 65000 e l’AS 65100 è una sessione esterna.
Per configurare la neighborship, utilizziamo il comando neighbor neighbor-ip-address remote-as remote-as-number. Una sessione esterna BGP prevede che i router siano direttamente connessi:

R1(config)# router bgp 65100
R1(config-router)# neighbor 209.165.202.130 remote-as 65000
R2(config)# router bgp 65000
R2(config-router)# neighbor 209.165.202.129 remote-as 65100

Su R1, esaminiamo la sessione esterna BGP.
Possiamo esaminare le sessioni BGP guardando o le informazioni essenziali o le informazioni dettagliate dei peer BGP.
Il comando show ip bgp summary mostra le informazioni essenziali delle connessioni BGP. Ci mostra l’AS number del neighbor, i contatori, lo stato della connessione e il numero di prefissi scambiati. Nell’esempio, lo stato della connessione è vuoto, il che significa che la sessione è attualmente funzionante. Il numero di prefissi scambiati è pari a 0, perché i router non hanno ancora scambiato nessun prefisso tramite la sessione BGP.
Il comando show ip bgp neighbors ci fornisce informazioni aggiuntive, come i parametri che sono stati negoziati, le address families supportate e altro:

R1# show ip bgp summary
BGP router identifier 209.165.201.1, local AS number 65100
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
209.165.202.130 4 65000 91 93 1 0 0 01:20:28 0
R1# show ip bgp neighbors
BGP neighbor is 209.165.202.130, remote AS 65000, external link
BGP version 4, remote router ID 192.168.22.1
BGP state = Established, up for 01:21:17
Last read 00:00:25, last write 00:00:00, hold time is 180, keepalive interval is
60 seconds
Neighbor sessions:
1 active, is not multisession capable (disabled)
Neighbor capabilities:
Route refresh: advertised and received(new)
Four-octets ASN Capability: advertised and received
Address family IPv4 Unicast: advertised and received
Enhanced Refresh Capability: advertised and received
Multisession Capability:
Stateful switchover support enabled: NO for session 1
Message statistics:
InQ depth is 0
OutQ depth is 0
Sent Rcvd
Opens: 1 1
Notifications: 0 0
Updates: 1 1
Keepalives: 92 90
Route Refresh: 0 0
Total: 94 92
Default minimum time between advertisement runs is 30 seconds
For address family: IPv4 Unicast
Session: 209.165.202.130
<... output omitted ...>

Su R2 esaminiamo la sessione esterna BGP con gli stessi comandi:

R2# show ip bgp summary
BGP router identifier 192.168.22.1, local AS number 65000
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
209.165.202.129 4 65100 116 114 1 0 0 01:41:20 0
R2# show ip bgp neighbor
BGP neighbor is 209.165.202.129, remote AS 65100, external link
BGP version 4, remote router ID 209.165.201.1
BGP state = Established, up for 01:41:32
Last read 00:00:41, last write 00:00:47, hold time is 180, keepalive interval is
60 seconds
Neighbor sessions:
1 active, is not multisession capable (disabled)
Neighbor capabilities:
Route refresh: advertised and received(new)
<... output omitted ...>

Configuriamo ora una sessione interna del BGP tra R2 e R3 nell’AS 65000. Usiamo gli indirizzi IP del link che collega i due router.
La sessione BGP interna è configurata usando il comando neighbor neighbor-ip-address remote-as remote-as-number, allo stesso modo della sessione esterna. Il router automaticamente identifica la sessione interna esaminando l’AS number remoto e comparandolo con l’AS number locale.
In una sessione interna BGP, non è necessario che gli indirizzi IP dei neighbor siano direttamente connessi:

R2(config)# router bgp 65000
R2(config-router)# neighbor 172.16.23.3 remote-as 65000
R3(config)# router bgp 65000
R3(config-router)# neighbor 172.16.23.2 remote-as 65000

Esaminiamo la sessione interna BGP su R2. Possiamo verificare le sessioni interne BGP nello stesso modo con cui monitoriamo le sessioni esterne. Possiamo notare che la connessione del BGP interno è identificata come internal link nell’output del comando show ip bgp neighbor:

R2# show ip bgp summary
BGP router identifier 192.168.22.1, local AS number 65000
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.16.23.3 4 65000 13 13 1 0 0 00:08:23 0
209.165.202.129 4 65100 287 284 1 0 0 04:16:06 0
R2# show ip bgp neighbor
BGP neighbor is 172.16.23.3, remote AS 65000, internal link
BGP version 4, remote router ID 192.168.33.1
BGP state = Established, up for 00:08:38
<... output omitted ...>

CORSI CORRELATI:

Consulta il nostro Catalogo Corsi per Tecnologia oppure fai una Ricerca per Vendor o ancora trova uno specifico corso attraverso il motore di ricerca interno: Ricerca Corsi. Contattaci ora al Numero Verde 800-177596, il nostro team saprà supportarti nella scelta del percorso formativo più adatto alla tue esigenze.

Su R3, pubblicizziamo ora la rete dell’interfaccia Loopback 1 (192.168.33.0/24).
Per specificare la rete da pubblicizzare nel processo BGP, usiamo il comando network con la parola mask e specifichiamo la subnet mask. Se non c’è un match esatto tra la rete e la mask pubblicizzata e quella presente nella tabella di routing, la rete non verrà pubblicizzata:

R3(config)# router bgp 65000
R3(config-router)# network 192.168.33.0 mask 255.255.255.0

Su R3, esaminiamo, ora la tabella BGP, nella quale compare la rete pubblicizzata precedentemente.
Nella tabella BGP, vediamo associati alle reti presenti, alcuni attributi del BGP, quali il Next-hop, il MED, la local preference, il weight, l’AS-path e l’origin code.
Dall’output possiamo notare il carattere “>” che indica la rotta migliore, e il next-hop pari a 0.0.0.0, che indica che R3 è il router che ha generato la rotta in questione:

R3# show ip bgp
BGP table version is 2, local router ID is 192.168.33.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 192.168.33.0 0.0.0.0 0 32768 i

Esaminiamo, ora, su R2 la tabella BGP e la tabella di routing. Nella tabella BGP di R2 vediamo che la rete 192.168.33.0/24 è identificata con la “i” e che il next-hop è 172.16.23.3, che è l’indirizzo di R3. Il next-hop è anche visibile nella tabella di routing:

R2# show ip bgp
BGP table version is 4, local router ID is 192.168.22.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
<... output omitted ...>
Network Next Hop Metric LocPrf Weight Path
*>i 192.168.33.0 172.16.23.3 0 100 0 i
R2# show ip route bgp
<... output omitted ...>
B 192.168.33.0/24 [200/0] via 172.16.23.3, 01:20:57

Su R2, pubblicizziamo ora la rete dell’interfaccia Loopback 1 (192.168.22.0/24), come fatto in precedenza su R3. Verifichiamo, inoltre, che tale rete è ora presente nella tabella BGP e nella tabella di routing di R1.
Possiamo notare, nella tabella di routing di R1, che il next-hop è l’indirizzo di R2 (209.165.202.130), mentre la distanza amministrativa è pari a 20, in quanto appresa tramite una sessione esterna del BGP:

R1# show ip bgp
BGP table version is 5, local router ID is 209.165.201.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
<... output omitted ...>
Network Next Hop Metric LocPrf Weight Path
*> 192.168.22.0 209.165.202.130 0 0 65000 i
*> 192.168.33.0 209.165.202.130 0 65000 i
R1# show ip route bgp
<... output omitted ...>
B 192.168.22.0/24 [20/0] via 209.165.202.130, 00:01:15
B 192.168.33.0/24 [20/0] via 209.165.202.130, 13:48:43

Verifichiamo, ora, su R3, la propagazione della loopback di R2, osservando la tabella BGP e la tabella di routing di R3.Possiamo notare, nella tabella di routing di R3, che il next-hop è l’indirizzo di R2 (172.16.23.2), mentre la distanza amministrativa è pari a 200, in quanto appresa tramite una sessione interna del BGP:

R3# show ip bgp
BGP table version is 3, local router ID is 192.168.33.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
<... output omitted ...>
Network Next Hop Metric LocPrf Weight Path
*>i 192.168.22.0 172.16.23.2 0 100 0 i
*> 192.168.33.0 0.0.0.0 0 32768 i
R3# show ip route bgp
<... output omitted ...>
B 192.168.22.0/24 [200/0] via 172.16.23.2, 05:56:53

Su R1, pubblicizziamo ora la rete dell’interfaccia Loopback 1 (209.165.200.224/27), come fatto in precedenza su R2 e R3. Verifichiamo, inoltre, la propagazione su R2, osservando la tabella BGP e la tabella di routing di R2. Notiamo che il next-hop è pari all’indirizzo di R1 (209.165.202.129):

R1(config)# router bgp 65100
R1(config-router)# network 209.165.200.224 mask 255.255.255.224
R2# show ip bgp
BGP table version is 6, local router ID is 192.168.22.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
<... output omitted ...>
Network Next Hop Metric LocPrf Weight Path
*> 192.168.22.0 0.0.0.0 0 32768 i
*>i 192.168.33.0 172.16.23.3 0 100 0 i
*> 209.165.200.224/27
209.165.202.129 0 0 65100 i
R2# show ip route bgp
<... output omitted ...>
B 192.168.33.0/24 [200/0] via 172.16.23.3, 20:15:50
209.165.200.0/27 is subnetted, 1 subnets
B 209.165.200.224 [20/0] via 209.165.202.129, 00:00:56

Verifichiamo, ora, su R3, la propagazione della loopback di R1. La loopback di R1, anche se è presente nella tabella BGP, non compare nella tabella di routing.
Questo poiché R3 non conosce il next-hop (209.165.202.129), che è l’indirizzo di R1:

R3# show ip bgp
BGP table version is 3, local router ID is 192.168.33.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*>i 192.168.22.0 172.16.23.2 0 100 0 i
*> 192.168.33.0 0.0.0.0 0 32768 i
* i 209.165.200.224/27
209.165.202.129 0 100 0 65100 i
R3# show ip route bgp
<... output omitted ...>
B 192.168.22.0/24 [200/0] via 172.16.23.2, 05:56:53
R3# show ip route 209.165.202.129
% Network not in table

Per far sì che R3 abbia un next-hop valido (che lui conosce), è necessario che R2 propaghi la loopback di R1 a R3, inserendo il proprio indirizzo.
Per fare ciò, occorre configurare su R2, il next-hop self.
Notiamo ora che R3 ha come next-hop l’indirizzo di R2 (172.16.23.2), e che la rete appare ora anche nella tabella di routing di R3:

R2(config)# router bgp 65000
R2(config-router)# neighbor 172.16.23.3 next-hop-self
R3# show ip bgp
<... output omitted ...>
Network Next Hop Metric LocPrf Weight Path
*>i 192.168.22.0 172.16.23.2 0 100 0 i
*> 192.168.33.0 0.0.0.0 0 32768 i
*>i 209.165.200.224/27
172.16.23.2 0 100 0 65100 i
R3# show ip route bgp
<... output omitted ...>
B 192.168.22.0/24 [200/0] via 172.16.23.2, 06:57:03
209.165.200.0/27 is subnetted, 1 subnets
B 209.165.200.224 [200/0] via 172.16.23.2, 00:02:51

Consulta il nostro Catalogo Corsi per Tecnologia oppure fai una Ricerca per Vendor o ancora trova uno specifico corso attraverso il motore di ricerca interno: Ricerca Corsi. Contattaci ora al Numero Verde 800-177596, il nostro team saprà supportarti nella scelta del percorso formativo più adatto alla tue esigenze.

RICHIEDI ORA IL SUPPORTO DI UN NOSTRO SPECIALISTA

Il nostro team, da anni impegnato nella progettazione di piani formativi strutturati nell’ambito dell’ IT, ti supporterà ad orientarti verso la scelta di un percorso formativo certificato rispondente alle tue esigenze.