Einführung
In diesem Artikel wird beschrieben, wie Border Gateway Protocol (BGP)-Präfixe mit AS-Nummern (Autonomous System) mit 4 Byte in Cisco IOS® gefiltert werden.
Hintergrundinformationen
4-Byte-AS-Nummern wurden im BGP eingeführt, als der Pool freier 2-Byte-AS-Nummern zu niedrig wurde. Das bedeutet, dass eine AS-Nummer jetzt eine 2-Byte- oder eine 4-Byte-Nummer sein kann. RFC 6793 gibt 4-Byte-AS-Nummern an. Eine AS-Nummer mit 2 Byte ist eine Zahl zwischen 1 und 65.535. Eine 4-Byte-AS-Nummer ist eine Zahl zwischen 1 und 4.294.967.295.
Die 4-Byte-AS-Nummer kann gepunktet oder als einfache Zahl dargestellt werden. Ein Beispiel für eine gepunktete 4-Byte-AS-Nummer ist 7,52359. Dies ist der AS-notaton-Punkt. Ein Beispiel für eine einfache 4-Byte-Zahl ist 51111. Dies ist die AS-Notation als Plain. 7.52359 entspricht 51111.
Ein Cisco IOS-Router kann entweder die AS-Schreibweise verwenden. Die Standardeinstellung in den neuesten Cisco IOS-Versionen ist einfach. Um die punktierte AS-Notation zu verwenden, kann der Befehl bgp asnotation dot verwendet werden.
Wenn der Netzwerkadministrator aus irgendeinem Grund keine BGP-Präfixe mit einer oder mehreren 4-Byte-AS-Nummern im AS-PATH an einen externen BGP (eBGP)-Peer senden möchte, können diese Präfixe gefiltert werden. Dieses Dokument bietet einen möglichen Filter, um dies zu erreichen. Es gibt möglicherweise einige Gründe, warum Sie nicht möchten, dass ein BGP-Sprecher BGP-Präfixe mit 4-Byte-AS-Nummern im AS-PATH sendet. Ein Beispiel könnte sein, dass ein Fehler am empfangenden BGP-Sprecher zu einem negativen Verhalten führt, das nur bei BGP-Präfixen mit 4-Byte-AS-Nummern im AS-PATH auftritt.
AS-Nummernfilter, 4 Byte
Hinweis: Der Filter in diesem Abschnitt kann nur verwendet werden, wenn BGP auf dem Router im Asnotation dot Mode ausgeführt wird.
Dieser Filter kann Präfixe mit AS-PATHS herausfiltern, die eine oder mehrere 4-Byte-AS-Nummern enthalten.
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 .*
Hier ist eine Untersuchung dieses Filters.
- [0-9] bezeichnet eine beliebige Ziffer.
- Das + bedeutet ein oder mehrere Vorkommen. [0-9]+ bedeutet also eine beliebige Zahl, da mehrere Ziffern vorhanden sein können.
- \. bedeutet das . (Punkt). Der umgekehrte Schrägstrich wird benötigt, um sicherzustellen, dass der Punkt nicht als Sonderzeichen, sondern als Punkt behandelt wird. Die . ist ein Sonderzeichen und bedeutet, dass jedes Zeichen (der Platzhalter) übereinstimmt.
- Das * bedeutet, dass mindestens 0 der vorhergehenden übereinstimmen. Also.* bedeutet, dass alles übereinstimmt.
- Der vollständige Filter .*[0-9]+\.[0-9]+.* bedeutet alles mit einem Punkt darin.
Hier ein Beispiel:
Router 1 (R1) empfängt acht Präfixe im BGP. Das BGP-Präfix 10.100.1.1/32 ist das einzige Präfix mit einem AS-PATH, der nur 2-Byte-AS-Nummern umfasst. Alle anderen BGP-Präfixe haben eine oder mehrere 4-Byte-AS-Nummern im 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 gibt nur Präfixe ohne 4-Byte-AS-Nummer im AS-PATH an den BGP-Peer 10.1.1.2 weiter.
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
Sie können den Filter .*[0-9]+\.[0-9]+.* Filter aus der BGP-Tabelle mit dem Befehl show ip bgp regexp überprüfen:
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 ?
Der Filter .*[0-9]+\.[0-9]+.* filtert alle Präfixe mit einer oder mehreren 4-Byte-AS-Nummern im AS-PATH-Attribut heraus.
Eine andere Möglichkeit, zu prüfen, was der Filter tatsächlich von der BGP-Tabelle filtert:
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 erhielt aufgrund des Filters nur das Präfix 10.100.1.1/32 von R1.
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
Alternative Konfiguration
Eine alternative Konfiguration besteht darin, eine Route Map anstelle einer Filterliste zu verwenden:
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
Aspire-Modus
Wenn der Befehl bgp asnotiation dot entfernt wird, d. h. die Asnotation ist einfach, zeigt die Ausgabe die Punkte in den 4-Byte-AS-Nummern nicht mehr an. Diese Ausgabe entspricht der zuvor gezeigten Ausgabe, mit der Ausnahme, dass die gepunkteten AS-Nummern nun als eindeutig angezeigt werden.
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 ?
Der Befehl BGP show mit dem regulären Ausdruck, der im Filter des Routers verwendet wird, filtert die Präfixe nicht mit einem Punkt in der BGP-Tabelle, da in der BGP-Tabelle keine Präfixe mehr mit dem gepunkteten 4-Byte-AS-Zahlenformat vorhanden sind. Die 4-Byte-AS-Nummern sind jetzt im einfachen Format.
R1#show ip bgp regexp .*[0-9]+\.[0-9]+.*
R1#
Der BGP-Befehl show mit der Filterliste zeigt auch, dass der Filter nicht funktioniert, während sich der Router im normalen Modus befindet:
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 ?
Der as-path-Filter funktioniert nicht:
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
Filter für Aspin-Modus
Dieser Filter kann verwendet werden, wenn BGP auf dem Router im normalen Modus ausgeführt wird:
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 .*
Oder, hier ist dasselbe, aber kompakter:
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 .*
Aufgrund dieses Filters wird eine AS-Nummer über 65.535 gefiltert. Auch dies kann auf den BGP-Nachbarn angewendet werden, wenn Sie eine Filterliste oder eine Routenübersicht verwenden.
Hinweis: Die Filterung in diesem Artikel funktioniert nicht bei einer internen BGP (iBGP)-Sitzung, die einen Routen-Reflektor umfasst.