Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Confronto tra mtrace v1 e mtrace v2

Dettagli di mtrace v2

mtrace v2 su IOS-XR

Sintassi del comando

Esempi

Note

Introduzione

Questo documento descrive mtrace versione 2 in Cisco IOS®XR.

Prerequisiti

Requisiti

Nessun requisito specifico previsto per questo documento.

Componenti usati

Questo documento è specifico per Cisco IOS®XR, ma non è limitato a una versione software o a un hardware specifico.

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.

Confronto tra mtrace v1 e mtrace v2

- Il messaggio di risposta mtrace v2 equivale al messaggio di risposta mTrace v1.

- mtrace v1 supporta solo multicast IPv4. mTrace v2 supporta multicast IPv4 e IPv6.

- I messaggi Query e Response di mtrace v1 sono messaggi IGMP. Tutti i pacchetti mTrace v2 sono UDP.

- In mtrace v1 è presente un campo per il protocollo di routing, ovvero il protocollo di routing multicast utilizzato per RPF verso il router upstream. mTrace v2 dispone di due campi: una per il protocollo di routing unicast utilizzato per RPF e una per il protocollo di routing multicast in esecuzione sul router upstream.

- L'obiettivo di mtrace v1 e v2 è lo stesso e la sintassi del pacchetto è molto simile.

- mtrace v1 e v2 utilizzano set di codici diversi per i protocolli di routing e i codici di inoltro.

- mtrace v2 supporta IPv6 della famiglia di indirizzi e un numero di porta UDP specifico (33435).

Nota: mtrace v2 sul software Cisco IOS XR utilizza la porta non standard 33433 anziché la porta RFC standard 33435.

Dettagli di mtrace v2

- Lo strumento consente di tracciare il percorso da un'origine a una destinazione. Verifica il percorso seguito e può anche indicare eventuali problemi, ad esempio con Time-To-Live (TTL) o Reverse Path Forwarding (RPF).

- L'obiettivo di mtrace v2 e v1 è lo stesso. Per verificare il percorso, mtrace invia un pacchetto alla destinazione (Router dell'ultimo hop o LHR) e traccia il percorso indietro verso il router di origine (albero di origine) o il router Rendez-Vous Point (RP). È quindi necessario specificare la destinazione (indirizzo unicast), l'origine (indirizzo unicast) e il gruppo multicast.

- La vera potenza della funzione mtrace è che il comando mtrace può essere eseguito da qualsiasi router (mittente) della rete. non è necessario che sia il primo router hop (FHR) o l'RP.

- mtrace v2 è specificato nella RFC 8487: mtrace versione 2: Funzione Traceroute per multicast IP

- mtrace v1on IOS-XR si basa su una bozza: draft-ietf-idmr-traceroute-ipm

- mtrace v2 non supporta mVPN

Per mtrace vengono utilizzati tre tipi di pacchetti. Questi tre pacchetti insieme fanno funzionare mtrace. Il mittente invia un pacchetto di query mtrace al router dell'ultimo hop. Questo LHR trasforma la query in un pacchetto di richiesta. Il pacchetto viene quindi inoltrato unicast, hop-by-hop, verso il router upstream. L'LHR e ciascun router upstream aggiungono un blocco di dati di risposta contenente informazioni utili, quali indirizzo di interfaccia, protocollo di routing, codice di inoltro e così via. Quando la richiesta arriva all'FHR, trasforma la richiesta in un pacchetto di risposta e lo inoltra al mittente. Se la traccia non viene completata, un router intermedio potrebbe restituire la risposta anche al mittente, ad esempio nel caso si verifichi un errore irreversibile come "no route".

Osservare questa immagine per la procedura e la gestione dei tre tipi di pacchetti mtrace.

L'iniziatore è R-10. L'LHR è LHR-4. L'FHR è FHR-3. L'RP è RP-5. La rete esegue la modalità di sparsità PIM o Any Source Multicast (ASM).

Il messaggio di richiesta mtrace è simile al seguente.

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Type      |           Length              |    # Hops     |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

|                      Multicast Address                        |

|                                                               |

+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

|                                                               |

|                        Source Address                         |

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

|                    Mtrace2 Client Address                     |

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|            Query ID           |         Client Port #         |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

L'indirizzo del client è l'indirizzo del mittente, quindi il router in cui viene eseguito il comando mTrace v2.

Il blocco di dati di risposta contiene informazioni interessanti. Queste informazioni vengono aggiunte al messaggio di richiesta. Ogni router aggiunge un blocco di dati di risposta al messaggio di richiesta. Di seguito è riportato il blocco dei dati di risposta.

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Type      |           Length              |      MBZ      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                      Query Arrival Time                       |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                  Incoming Interface Address                   |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                  Outgoing Interface Address                   |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                   Upstream Router Address                     |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

.           Input packet count on Incoming Interface            .

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

.           Output packet count on Outgoing Interface           .

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                                                               |

.      Total number of packets for this source-group pair       .

|                                                               |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|          Rtg Protocol         |    Multicast Rtg Protocol     |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|    Fwd TTL    |      MBZ      |S|   Src Mask  |Forwarding Code|

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Queste informazioni sul blocco di risposta vengono usate per visualizzare l'output del comando traceroute. Ogni blocco di risposta è rappresentato da una riga nell'output di mtrace.

I numeri del protocollo di routing e del protocollo di routing multicast sono uguali a quelli di ipMcastRouteRtProtocol del MIB multicast IP (RFC 5132). Non corrispondono ai valori utilizzati in mtrace v1.

IANA le elenca come segue:

Protocolli di routing

other     (1),  -- not specified

local     (2),  -- local interface

netmgmt   (3),  -- static route

icmp      (4),  -- result of ICMP Redirect

-- the following are all dynamic

-- routing protocols

egp        (5),  -- Exterior Gateway Protocol

ggp        (6),  -- Gateway-Gateway Protocol

hello      (7),  -- FuzzBall HelloSpeak

rip        (8),  -- Berkeley RIP or RIP-II

isIs       (9),  -- Dual IS-IS

esIs       (10), -- ISO 9542

ciscoIgrp  (11), -- Cisco IGRP

bbnSpfIgp  (12), -- BBN SPF IGP

ospf       (13), -- Open Shortest Path First

bgp        (14), -- Border Gateway Protocol

idpr       (15), -- InterDomain Policy Routing

ciscoEigrp (16), -- Cisco EIGRP

dvmrp      (17), -- DVMRP

rpl        (18), -- RPL [RFC-ietf-roll-rpl-19]

dhcp       (19), -- DHCP [RFC2132]

Protocolli di routing multicast

other(1),          -- none of the following

local(2),          -- e.g., manually configured

netmgmt(3),        -- set via net.mgmt protocol

dvmrp(4),

mospf(5),

pimSparseDense(6), -- PIMv1, both DM and SM

cbt(7),

pimSparseMode(8),  -- PIM-SM

pimDenseMode(9),   -- PIM-DM

igmpOnly(10),

bgmp(11),

msdp(12)

Di seguito sono riportati i codici di inoltro per mtrace v2. Non corrispondono a quelle di mtrace v1.

Value  Name            Description

-----  --------------  ----------------------------------------------

0x00   NO_ERROR        No error.

0x01   WRONG_IF        Mtrace2 Request arrived on an interface

for which this router does not perform

forwarding for the specified group to the

source or RP.

0x02   PRUNE_SENT      This router has sent a prune upstream that

applies to the source and group in the

Mtrace2 Request.

0x03   PRUNE_RCVD      This router has stopped forwarding for this

source and group in response to a Request

from the downstream router.

0x04   SCOPED          The group is subject to administrative

scoping at this router.

0x05   NO_ROUTE        This router has no route for the source or

group and no way to determine a potential

route.

0x06   WRONG_LAST_HOP  This router is not the proper LHR.

0x07   NOT_FORWARDING  This router is not forwarding this source and

group out the Outgoing Interface for an

unspecified reason.

0x08   REACHED_RP      Reached the Rendezvous Point.

0x09   RPF_IF          Mtrace2 Request arrived on the expected

RPF interface for this source and group.

0x0A   NO_MULTICAST    Mtrace2 Request arrived on an interface

that is not enabled for multicast.

0x0B   INFO_HIDDEN     One or more hops have been hidden from this

trace.

0x0C   REACHED_GW      Mtrace2 Request arrived on a gateway (e.g.,

a NAT or firewall) that hides the

information between this router and the

Mtrace2 client.

0x0D   UNKNOWN_QUERY   A non-transitive Extended Query Type was

received by a router that does not support

the type.

0x80   FATAL_ERROR     A fatal error is one where the router may

know the upstream router but cannot forward

the message to it.

0x81   NO_SPACE        There was not enough room to insert another

Standard Response Block in the packet.

0x83   ADMIN_PROHIB    Mtrace2 is administratively prohibited.

mtrace v2 su IOS-XR

Sintassi del comando

Utilizzo: mtrace

[

] [

] [

] [

]

Assicurarsi di specificare 2 per utilizzare mtrace v2.

RP/0/RP0/CPU0:R-10#mtrace?

mtrace  mtrace2

RP/0/RP0/CPU0:R-10#mtrace2 ?

ipv4  IPv4 Address family

ipv6  ipv6 Address Family

RP/0/RP0/CPU0:R-10#mtrace2 ipv4 ?

Hostname or A.B.C.D  Source to trace route from

L'indirizzo di origine corrisponde all'indirizzo del mittente.

RP/0/RP0/CPU0:R-10#mtrace2 ipv4 10.1.3.3 ?

Hostname or A.B.C.D  Destination of route

debug                Mtrace client-side debugging(cisco-support)

L'indirizzo di destinazione è l'indirizzo dell'LHR.

RP/0/RP0/CPU0:R-10#mtrace2 ipv4 10.1.3.3 10.2.4.4 ?

Hostname or A.B.C.D  Group to trace route via

debug                Mtrace client-side debugging(cisco-support)

L'indirizzo del gruppo è l'indirizzo del gruppo del flusso multicast di cui si sta eseguendo la traccia.

RP/0/RP0/CPU0:R-10#mtrace2 ipv4 10.1.3.3 10.2.4.4 225.1.1.1 ?

Hostname or A.B.C.D  response address to receive response

debug                Mtrace client-side debugging(cisco-support)

L'indirizzo della risposta è l'indirizzo al quale viene restituita la risposta traceroute.

RP/0/RP0/CPU0:R-10#mtrace2 ipv4 10.1.3.3 10.2.4.4 225.1.1.1 10.0.0.10 ?

<1-255>  Time-to-live for multicasted trace request

debug    Mtrace client-side debugging(cisco-support)

Esempi

Il comando può essere avviato da qualsiasi router della rete, non necessariamente da un router abilitato per PIM/multicast o lungo l'albero di origine o condiviso specifico in esame.

RP/0/RP0/CPU0:R-10#mtrace2 ipv4 10.1.3.3 10.2.4.4 225.1.1.1 10.0.0.10

Type escape sequence to abort.

Mtrace from 10.1.3.3 to 10.2.4.4

via group 225.1.1.1

From source (?) to destination (?)

Querying full reverse path...

0  10.2.4.4

-1  10.4.7.4 PIM  [10.1.3.0/24]

-2  10.5.7.7 PIM  [10.1.3.0/24]

-3  0.0.0.0 PIM Reached RP/Core [10.1.3.0/24]

È possibile visualizzare l'esecuzione di mtrace per la struttura condivisa (*,G). La mtrace è iniziata in corrispondenza del router 10.2.4.4 dell'ultimo hop ed è andata indietro nella struttura condivisa fino al router RP (10.0.0.5). Il motivo è che il router LHR-4 non ha una voce MRIB (S,G) per l'origine 10.1.3.3 per il gruppo 25.1.1.1.

La parte [10.1.3.0/24] è il percorso unicast utilizzato per le informazioni RPF. Le informazioni RPF in IOS-XR sono sempre una voce /32 per IPv4. Queste informazioni derivano da una route unicast. Viene visualizzata questa route unicast.

Viene visualizzato il protocollo multicast. Ecco qui PIM.

Il numero di hop viene visualizzato in ordine inverso, partendo da 0 all'ultimo router hop e passando a un valore negativo fino a quando non viene raggiunto il primo router hop.

Il successivo è il caso della struttura di origine.

RP/0/RP0/CPU0:LHR-4#show mrib route 225.1.1.1

IP Multicast Routing Information Base

Entry flags: L - Domain-Local Source, E - External Source to the Domain,

C - Directly-Connected Check, S - Signal, IA - Inherit Accept,

IF - Inherit From, D - Drop, ME - MDT Encap, EID - Encap ID,

MD - MDT Decap, MT - MDT Threshold Crossed, MH - MDT interface handle

CD - Conditional Decap, MPLS - MPLS Decap, EX - Extranet

MoFE - MoFRR Enabled, MoFS - MoFRR State, MoFP - MoFRR Primary

MoFB - MoFRR Backup, RPFID - RPF ID Set, X - VXLAN

Interface flags: F - Forward, A - Accept, IC - Internal Copy,

NS - Negate Signal, DP - Don't Preserve, SP - Signal Present,

II - Internal Interest, ID - Internal Disinterest, LI - Local Interest,

LD - Local Disinterest, DI - Decapsulation Interface

EI - Encapsulation Interface, MI - MDT Interface, LVIF - MPLS Encap,

EX - Extranet, A2 - Secondary Accept, MT - MDT Threshold Crossed,

MA - Data MDT Assigned, LMI - mLDP MDT Interface, TMI - P2MP-TE MDT Interface

IRMI - IR MDT Interface, TRMI - TREE SID MDT Interface, MH - Multihome Interface

(*,225.1.1.1) RPF nbr: 10.4.7.7 Flags: C RPF

Up: 1d21h

Incoming Interface List

GigabitEthernet0/0/0/1 Flags: A NS, Up: 1d21h

Outgoing Interface List

GigabitEthernet0/0/0/0 Flags: F NS LI, Up: 1d21h

(10.1.3.1,225.1.1.1) RPF nbr: 10.4.9.9 Flags: RPF

Up: 1d18h

Incoming Interface List

GigabitEthernet0/0/0/2 Flags: A, Up: 1d18h

Outgoing Interface List

GigabitEthernet0/0/0/0 Flags: F NS, Up: 1d18h

Esiste una voce MRIB per Source 10.1.3.1. Il comando mtrace visualizza un output diverso quando viene eseguito per tale source.

RP/0/RP0/CPU0:R-10#mtrace2 ipv4 10.1.3.1 10.2.4.4 225.1.1.1 10.0.0.10

Type escape sequence to abort.

Mtrace from 10.1.3.1 to 10.2.4.4

via group 225.1.1.1

From source (?) to destination (?)

Querying full reverse path...

0  10.2.4.4

-1  10.4.9.4 PIM  [10.1.3.0/24]

-2  10.8.9.9 PIM  [10.1.3.0/24]

-3  10.3.8.8 PIM  [10.1.3.0/24]

-4  10.1.3.3 PIM  [10.1.3.0/24]

Si noti che il percorso inverso è ora LHR4 - IR-9 - IR-8 - FHR-3. Si tratta dell'albero di origine da FHR-3 a LHR-4. Corrisponde alle voci MRIB per (S,G).

RP/0/RP0/CPU0:FHR-3#show mrib route 225.1.1.1

IP Multicast Routing Information Base

Entry flags: L - Domain-Local Source, E - External Source to the Domain,

C - Directly-Connected Check, S - Signal, IA - Inherit Accept,

IF - Inherit From, D - Drop, ME - MDT Encap, EID - Encap ID,

MD - MDT Decap, MT - MDT Threshold Crossed, MH - MDT interface handle

CD - Conditional Decap, MPLS - MPLS Decap, EX - Extranet

MoFE - MoFRR Enabled, MoFS - MoFRR State, MoFP - MoFRR Primary

MoFB - MoFRR Backup, RPFID - RPF ID Set, X - VXLAN

Interface flags: F - Forward, A - Accept, IC - Internal Copy,

NS - Negate Signal, DP - Don't Preserve, SP - Signal Present,

II - Internal Interest, ID - Internal Disinterest, LI - Local Interest,

LD - Local Disinterest, DI - Decapsulation Interface

EI - Encapsulation Interface, MI - MDT Interface, LVIF - MPLS Encap,

EX - Extranet, A2 - Secondary Accept, MT - MDT Threshold Crossed,

MA - Data MDT Assigned, LMI - mLDP MDT Interface, TMI - P2MP-TE MDT Interface

IRMI - IR MDT Interface, TRMI - TREE SID MDT Interface, MH - Multihome Interface

(10.1.3.1,225.1.1.1) RPF nbr: 10.1.3.1 Flags: RPF

Up: 1d21h

Incoming Interface List

GigabitEthernet0/0/0/0 Flags: A, Up: 1d21h

Outgoing Interface List

GigabitEthernet0/0/0/2 Flags: F NS, Up: 1d18h

È possibile utilizzaredebug IGMPcon mtrace v1 per visualizzare i pacchetti mTrace su qualsiasi router del percorso di traccia. mtrace v2 utilizza pacchetti UDP, pertanto il debug IGMP non può essere utilizzato per mtrace v2.

È tuttavia possibile concentrarsi sulla porta UDP 3433 utilizzata dai pacchetti mtrace v2 su IOS-XR.

Esempio:

Eseguire il debug dei pacchetti UDP mtracev2 sul router intermedio.

IR-9:

RP/0/RP0/CPU0:IR-9#show access-lists

ipv4 access-list mtracev2

10 permit udp any eq 33433 any eq 33433

RP/0/RP0/CPU0:IR-9#debug udp packet v4-access-list mtracev2 location 0/RP0/CPU0

RP/0/RP0/CPU0:IR-9#show debug

####  debug flags set from tty 'con0_RP0_CPU0'  ####

udp packet flag is ON with value '0x1:0x0:0x4:mtracev2:0x0:::'

RP/0/RP0/CPU0:IR-9#RP/0/RP0/CPU0:IR-9#

RP/0/RP0/CPU0:IR-9#

RP/0/RP0/CPU0:Jun 19 07:20:13.123 UTC: syslog_dev[115]: udp[214] PID-22001: R 42469 ms LEN 60    10.4.9.4:33433 <-> 10.4.9.9:33433

RP/0/RP0/CPU0:Jun 19 07:20:13.123 UTC: syslog_dev[115]: udp[214] PID-22001:

RP/0/RP0/CPU0:Jun 19 07:20:13.139 UTC: syslog_dev[115]: udp[214] PID-22062: S    15 ms LEN 100   10.8.9.9:33433 <-> 10.8.9.8:33433

RP/0/RP0/CPU0:Jun 19 07:20:13.139 UTC: syslog_dev[115]: udp[214] PID-22062:

Il router intermedio riceve e invia un messaggio mtrace v2.

Note

Accertarsi di sapere quali router sono FHR e LHR. Altri router non sono in grado di completare la traccia.

Se i router hanno orologi sincronizzati, è possibile misurare il tempo necessario per propagare i messaggi mtrace a causa della presenza dei timestamp. Questa volta si tratta solo di un'indicazione, in quanto i messaggi vengono trattati come messaggi di controllo in ogni hop.