Introduzione
In questo documento viene descritto che un ACL IPv6 con un prefisso "all-zero" in un ACE può corrispondere a tutti i pacchetti IPv6 e alla relativa soluzione alternativa.
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
- Configurazione di ACL (Access Control List) IPv6 sui router Cisco IOS® XR
- Programmazione hardware ACL su router Cisco IOS® XR
Componenti usati
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
- L'ACL IPv6 viene applicato con il livello di compressione 2 o 3
- Cisco IOS® XR versione senza correzione dell'ID bug Cisco CSCwe08250
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Premesse
Indirizzo IPv6 ::/128 è riservato per gli indirizzi non specificati nella RFC(Request For Comments) 4291. Non deve mai essere assegnato ad alcun nodo, pertanto è consigliabile negare questo indirizzo nel filtro Bogon IPv6.
Problema
Un ACL IPv6 che include una voce ACE (Access Control Entry) di ::/128 può corrispondere a qualsiasi pacchetto IPv6 nell'interfaccia a cui è applicato.
Di seguito è riportato un esempio di questa osservazione nel laboratorio.
Configurazione di un ACL IPv6 con ::/128 corrispondente all'indirizzo di origine e di destinazione IPv6, rispettivamente:
ipv6 access-list PREFIX_ALL_ZERO
10 remark ** HOST MASK **
11 deny ipv6 any host :: log
12 deny ipv6 host :: any log
Invio del traffico PING (Packet Internet or Inter-Network Groper) a un indirizzo di destinazione IPv6 diverso da zero:
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)
Il pacchetto è stato scartato da ACE11:
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
Quando si rimuove la voce ACE 11, le eliminazioni vengono spostate nella voce ACE 12:
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)
Questi ACE devono eliminare solo i pacchetti con l'indirizzo di origine o di destinazione composto da tutti zero.
Tuttavia, tutto il traffico, anche con gli zeri di origine o di destinazione non tutti, veniva interrotto.
Attenzione: questo comportamento di mancata corrispondenza viene applicato alla lunghezza del contrassegno della subnet IPv6 da /1 a /128 per una voce ACE, non solo alla voce /128 nell'esempio.
Soluzione
Cisco IOS® XR release con la correzione dell'ID bug Cisco CSCwe08250 corregge questo comportamento errato.
Su un router Cisco IOS® XR in esecuzione senza tale correzione, è disponibile una soluzione:
- Usare ACL ibridi e spostare ::/<x> dall'ACL in un object group di rete per far corrispondere l'indirizzo di origine o di destinazione con tutti gli zeri.