Sommario

Introduzione

Premesse

Filtro numerico AS da 4 byte

Configurazione alternativa

Modalità asplain

Filtro per modalità semplice

Introduzione

In questo articolo viene descritto come filtrare i prefissi Border Gateway Protocol (BGP) con numeri Autonomous System (AS) da 4 byte in Cisco IOS®.

Premesse

I numeri AS a 4 byte sono stati introdotti in BGP quando il pool di numeri AS a 2 byte liberi è diventato basso. Ciò significa che un numero AS può ora essere un numero a 2 byte o a 4 byte. RFC 6793 specifica i numeri AS a 4 byte. Un numero AS a 2 byte è un numero compreso tra 1 e 65.535. Un numero AS a 4 byte è un numero compreso tra 1 e 4.294.967.295.

Il numero AS a 4 byte può essere rappresentato in modo punteggiato o come numero semplice. Un esempio di numero AS a 4 byte puntato è 7,52359. Questo è il punto della notazione AS. Un esempio di numero a 4 byte semplice è 511111. Si tratta della notazione AS asplain. 7.52359 è lo stesso di 511111.

Un router Cisco IOS può utilizzare la notazione AS. Nelle versioni più recenti di Cisco IOS, il valore predefinito è asplain. Per utilizzare la notazione AS con punti, è possibile usare il comando bgp asnotation dot.

Se per qualsiasi motivo l'amministratore di rete non desidera inviare prefissi BGP con uno o più numeri AS a 4 byte nel PERCORSO AS verso un peer BGP (eBGP) esterno, questi prefissi possono essere filtrati. Per ottenere questo risultato, il documento fornisce un possibile filtro. È possibile che si desideri impedire a un altoparlante BGP di inviare prefissi BGP con numeri AS a 4 byte nel PERCORSO AS. Un esempio potrebbe essere rappresentato da un difetto del diffusore BGP ricevente che determina un comportamento avverso, che si verifica solo per i prefissi BGP con numeri AS a 4 byte nel PERCORSO AS.

Filtro numerico AS da 4 byte

Nota: Il filtro illustrato in questa sezione può essere utilizzato solo quando il protocollo BGP sul router viene eseguito in modalità punto di annotazione.

Questo filtro può filtrare i prefissi con PERCORSI AS che contengono uno o più numeri AS a 4 byte.

router bgp 1

bgp asnotation dot

neighbor 10.1.1.2 remote-as 2

address-family ipv4

neighbor 10.1.1.2 activate

neighbor 10.1.1.2 filter-list 1 out

ip as-path access-list 1 deny .*[0-9]+\.[0-9]+.*

ip as-path access-list 1 permit .*

Di seguito viene riportato un esame del filtro.

- [0-9] indica qualsiasi cifra.

- Il segno + indica una o più occorrenze. Quindi [0-9]+ significa qualsiasi numero, perché possono essere presenti più cifre.

- \. indica . (punto). La barra rovesciata è necessaria per essere certi che il router non tratti il punto come carattere speciale ma come un punto. . è un carattere speciale e indica qualsiasi carattere (il carattere jolly).

- Il valore * indica zero o più dei precedenti. Quindi .* significa abbinare qualsiasi cosa.

- Il filtro completo .*[0-9]+\.[0-9]+.* indica qualsiasi cosa con un punto al suo interno.

Di seguito è riportato un esempio:

Il router 1 (R1) riceve otto prefissi in BGP. Il prefisso BGP 10.100.1.1/32 è l'unico prefisso con un percorso AS costituito solo da numeri AS di 2 byte. Tutti gli altri prefissi BGP hanno uno o più numeri AS a 4 byte in AS PATH.

R1#show bgp ipv4 unicast

BGP table version is 9, local router ID is 10.100.1.100

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

*>  10.100.1.1/32    10.1.3.4         0             0 4 100 200 300 i

*>  10.100.1.2/32    10.1.3.4         0             0 4 1.34464 3.3392 4.37856 i

*>  10.100.1.3/32    10.1.3.4         0             0 4 1.34464 200 4.37856 i

*>  10.100.1.4/32    10.1.3.4         0             0 4 500 4.37856 600 ?

*>  10.100.1.5/32    10.1.3.4         0             0 4 7.41248 3200 400 65000 ?

*>  10.100.1.6/32    10.1.3.4         0             0 4 50 3200 400 9.60176 ?

*>  10.100.1.7/32    10.1.3.4         0             0 4 66 1.57464 77 5.17320 99 ?

*>  10.100.1.8/32    10.1.3.4         0             0 4 7.52359 99 66 99 5.18307

3.37515 99 66 3.37515 99 ?

R1 annuncia solo i prefissi senza alcun numero AS a 4 byte nel percorso AS verso il peer BGP 10.1.1.2.

R1#show bgp ipv4 unicast neighbors 10.1.1.2 advertised-routes

BGP table version is 9, local router ID is 10.100.1.100

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

*>  10.100.1.1/32    10.1.3.4                 0             0 4 100 200 300 i

Total number of prefixes 1

È possibile verificare il filtro .*[0-9]+\.[0-9]+.* dalla tabella BGP con il comando show ip bgp regexp:

R1#show ip bgp regexp .*[0-9]+\.[0-9]+.*

BGP table version is 9, local router ID is 10.100.1.100

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

*>  10.100.1.2/32    10.1.3.4         0             0 4 1.34464 3.3392 4.37856 i

*>  10.100.1.3/32    10.1.3.4         0             0 4 1.34464 200 4.37856 i

*>  10.100.1.4/32    10.1.3.4         0             0 4 500 4.37856 600 ?

*>  10.100.1.5/32    10.1.3.4         0             0 4 7.41248 3200 400 65000 ?

*>  10.100.1.6/32    10.1.3.4         0             0 4 50 3200 400 9.60176 ?

*>  10.100.1.7/32    10.1.3.4         0             0 4 66 1.57464 77 5.17320 99 ?

*>  10.100.1.8/32    10.1.3.4         0             0 4 7.52359 99 66 99 5.18307

3.37515 99 66 3.37515 99 ?

Il filtro .*[0-9]+\.[0-9]+.* filtra tutti i prefissi con uno o più numeri AS a 4 byte nell'attributo AS PATH.

Di seguito è riportato un altro modo per verificare i filtri applicati alla tabella BGP:

R1#show bgp ipv4 unicast filter-list 1

BGP table version is 9, local router ID is 10.100.1.100

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

*>  10.100.1.1/32    10.1.3.4                 0             0 4 100 200 300 i

R2 ha ricevuto solo il prefisso 10.100.1.1/32 da R1 a causa del filtro.

R2#show bgp ipv4 unicast

BGP table version is 6, local router ID is 10.1.1.2

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

*>  10.100.1.1/32    10.1.1.1                               0 1 4 100 200 300 i

Configurazione alternativa

In alternativa, è possibile utilizzare una route-map anziché un filter-list:

router bgp 1

bgp asnotation dot

neighbor 10.1.1.2 remote-as 2

address-family ipv4

neighbor 10.1.1.2 route-map no-4byte out

ip as-path access-list 1 deny .*[0-9]+\.[0-9]+.*

ip as-path access-list 1 permit .*

route-map no-4byte permit 10

match as-path 1

Modalità asplain

Quando il comando bgp asnotation dot viene rimosso, ossia l'annotazione è semplice, l'output non visualizza più i punti nei numeri AS a 4 byte. Questo output è lo stesso mostrato in precedenza, con la differenza che i numeri AS punteggiati sono ora come semplici.

R1#show bgp ipv4 unicast

BGP table version is 9, local router ID is 10.100.1.100

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

*>  10.100.1.1/32    10.1.3.4         0             0 4 100 200 300 i

*>  10.100.1.2/32    10.1.3.4         0             0 4 100000 200000 300000 i

*>  10.100.1.3/32    10.1.3.4         0             0 4 100000 200 300000 i

*>  10.100.1.4/32    10.1.3.4         0             0 4 500 300000 600 ?

*>  10.100.1.5/32    10.1.3.4         0             0 4 500000 3200 400 65000 ?

*>  10.100.1.6/32    10.1.3.4         0             0 4 50 3200 400 650000 ?

*>  10.100.1.7/32    10.1.3.4         0             0 4 66 123000 77 345000 99 ?

*>  10.100.1.8/32    10.1.3.4         0             0 4 511111 99 66 99 345987

234123 99 66 234123 99 ?

Il comando BGP show con l'espressione regolare usata nel filtro sul router non filtra i prefissi con un punto nella tabella BGP, perché non ci sono più prefissi con il formato numero AS a 4 byte con punti nella tabella BGP. I numeri AS a 4 byte sono ora in formato normale.

R1#show ip bgp regexp .*[0-9]+\.[0-9]+.*

R1#

Il comando BGP show con l'elenco dei filtri mostra anche che il filtro non funziona quando il router è in modalità semplice:

R1#show bgp ipv4 unicast filter-list 1

BGP table version is 9, local router ID is 10.100.1.100

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

*>  10.100.1.1/32    10.1.3.4         0             0 4 100 200 300 i

*>  10.100.1.2/32    10.1.3.4         0             0 4 100000 200000 300000 i

*>  10.100.1.3/32    10.1.3.4         0             0 4 100000 200 300000 i

*>  10.100.1.4/32    10.1.3.4         0             0 4 500 300000 600 ?

*>  10.100.1.5/32    10.1.3.4         0             0 4 500000 3200 400 65000 ?

*>  10.100.1.6/32    10.1.3.4         0             0 4 50 3200 400 650000 ?

*>  10.100.1.7/32    10.1.3.4         0             0 4 66 123000 77 345000 99 ?

*>  10.100.1.8/32    10.1.3.4         0             0 4 511111 99 66 99 65509 56

100000 ?

Il filtro as-path non funziona:

R1#show bgp ipv4 unicast neighbors 10.1.1.2 advertised-routes

BGP table version is 9, local router ID is 10.100.1.100

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

*>  10.100.1.1/32    10.1.3.4         0             0 4 100 200 300 i

*>  10.100.1.2/32    10.1.3.4         0             0 4 100000 200000 300000 i

*>  10.100.1.3/32    10.1.3.4         0             0 4 100000 200 300000 i

*>  10.100.1.4/32    10.1.3.4         0             0 4 500 300000 600 ?

*>  10.100.1.5/32    10.1.3.4         0             0 4 500000 3200 400 65000 ?

*>  10.100.1.6/32    10.1.3.4         0             0 4 50 3200 400 650000 ?

*>  10.100.1.7/32    10.1.3.4         0             0 4 66 123000 77 345000 99 ?

*>  10.100.1.8/32    10.1.3.4         0             0 4 511111 99 66 99 65509 56

100000 ?

Network          Next Hop            Metric LocPrf Weight Path

Total number of prefixes 8

Filtro per modalità semplice

Questo filtro può essere utilizzato quando il protocollo BGP sul router viene eseguito in modalità semplice:

ip as-path access-list 4 deny _6553[6-9]_

ip as-path access-list 4 deny _655[4-9][0-9]_

ip as-path access-list 4 deny _65[6-9][0-9][0-9]_

ip as-path access-list 4 deny _[6][6-9][0-9][0-9][0-9]_

ip as-path access-list 4 deny _[7-9][0-9][0-9][0-9][0-9]_

ip as-path access-list 4 deny _[1-9][0-9][0-9][0-9][0-9][0-9]+_

ip as-path access-list 4 permit .*

Oppure, ecco lo stesso, ma più compatto:

ip as-path access-list 4 deny _(6553[6-9]|655[4-9][0-9]|65[6-9][0-9][0-9]|6[6-9]

[0-9][0-9][0-9]|[7-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]+)_

ip as-path access-list 4 permit .*

A causa di questo filtro, viene filtrato qualsiasi numero AS superiore a 65.535. Anche in questo caso, è possibile applicare la regola al router BGP adiacente se si utilizza un elenco di filtri o una mappa delle route.

Nota: Il filtro illustrato in questo articolo non funziona su una sessione BGP (iBGP) interna, che include su un router Reflector.