Einleitung
In diesem Dokument wird beschrieben, dass eine IPv6-ACL mit einem Präfix "all-zero" in einem ACE allen IPv6-Paketen und deren Problemumgehung entsprechen kann.
Voraussetzungen
Anforderungen
Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:
- Konfiguration der IPv6 ACL (Access Control List) auf Cisco IOS® XR-Routern
- ACL-Hardwareprogrammierung auf Cisco IOS® XR-Routern
Verwendete Komponenten
Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen:
- IPv6-ACL wird mit Komprimierungsstufe 2 oder 3 angewendet
- Cisco IOS® XR-Version ohne Korrektur des Cisco Bugs ID CSCwe08250
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.
Hintergrundinformationen
IPv6 address::/128 is reserved for Unspecified Address in the RFC(Request For Comments) 4291. Sie darf niemals einem Knoten zugewiesen werden. Daher empfiehlt es sich, diese Adresse in der IPv6-Bogon-Filterung abzulehnen.
Problem
Eine IPv6-ACL mit einem ACE (Access Control Entry, Zugriffssteuerungseintrag) von ::/128 kann mit jedem IPv6-Paket auf der Schnittstelle übereinstimmen, auf die sie angewendet wurde.
Ein Beispiel für diese Beobachtung im Labor ist unten dargestellt.
Konfigurieren einer IPv6-ACL mit::/128 entsprechend der IPv6-Quell- bzw. -Zieladresse:
ipv6 access-list PREFIX_ALL_ZERO
10 remark ** HOST MASK **
11 deny ipv6 any host :: log
12 deny ipv6 host :: any log
Senden von PING-Datenverkehr (Packet Internet oder Inter-Network Group) an eine IPv6-Zieladresse ungleich 0:
RP/0/RP0/CPU0:router#ping fd00:4860:1:1::150 count 100 timeout 0
Thu Sep 14 12:30:23.412 UTC
pings with timeout=0 may result in system instability and
control protocol flaps resulting in traffic impact.
Do you really want to continue[confirm with only 'y' or 'n'] [y/n] :y
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to FD00:4860:1:1::150, timeout is 0 seconds:
....................................................................................................
Success rate is 0 percent (0/100)
Das Paket wurde von ACE11 verworfen:
RP/0/RP0/CPU0:router#show access-lists ipv6 PREFIX_ALL_ZERO hardware ingress location 0/RP0/CPU0
Thu Sep 14 12:30:46.346 UTC
ipv6 access-list PREFIX_ALL_ZERO
11 deny ipv6 any host :: log (100 matches)
12 deny ipv6 host :: any log
Wenn Sie ACE 11 entfernen, werden die Drops zu ACE 12 verschoben:
RP/0/RP0/CPU0:router#clear access-list ipv6 PREFIX_ALL_ZERO hardware ingress location 0/RP0/CPU0
Thu Sep 14 12:31:34.899 UTC
RP/0/RP0/CPU0:router#ping fd00:4860:1:1::150 count 100 timeout 0
Thu Sep 14 12:31:39.482 UTC
pings with timeout=0 may result in system instability and
control protocol flaps resulting in traffic impact.
Do you really want to continue[confirm with only 'y' or 'n'] [y/n] :y
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to FD00:4860:1:1::150, timeout is 0 seconds:
....................................................................................................
Success rate is 0 percent (0/100)
RP/0/RP0/CPU0:router#show access-lists ipv6 PREFIX_ALL_ZERO hardware ingress location 0/RP0/CPU0
Thu Sep 14 12:31:45.229 UTC
ipv6 access-list PREFIX_ALL_ZERO
12 deny ipv6 host :: any log (100 matches)
Diese ACEs sollen nur Pakete verwerfen, deren Quell- oder Zieladresse aus Nullen besteht.
Der gesamte Datenverkehr wurde jedoch verworfen, selbst wenn es sich bei der Quelle oder dem Ziel nicht um Nullen handelte.
Achtung: Dieses Ungleichheitsverhalten wird auf die IPv6-Subnetzmarkierungslänge von /1 bis /128 für einen ACE angewendet, nicht nur auf /128 im Beispiel.
Lösung
Mit der Cisco IOS® XR-Version mit der Cisco Bug-ID CSCwe08250 wird dieses falsche Verhalten behoben.
Auf einem Cisco IOS® XR-Router, der ohne diese Fehlerbehebung ausgeführt wird, gibt es eine Problemumgehung:
- Verwenden Sie hybride ACLs, und verschieben Sie ::/<x> aus der ACL in eine Netzwerkobjektgruppe, um die Quell- oder Zieladresse mit allen Nullen abzustimmen.