Table des matières

Introduction

Conditions préalables

Exigences

Composants utilisés

Comparaison de mtrace v1 et mtrace v2

Détails de mtrace v2

mtrace v2 sur IOS-XR

Syntaxe de la commande

Exemples

Remarques

Introduction

Ce document décrit mtrace version 2 dans Cisco IOS®XR.

Conditions préalables

Exigences

Aucune exigence spécifique n'est associée à ce document.

Composants utilisés

Ce document est spécifique à Cisco IOS®XR, mais il n'est pas limité à une version logicielle ou matérielle spécifique.

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.

Comparaison de mtrace v1 et mtrace v2

- Le message de réponse mtrace v2 est équivalent au message de réponse mTrace v1.

- mtrace v1 prend uniquement en charge la multidiffusion IPv4. mTrace v2 prend en charge la multidiffusion IPv4 et IPv6.

- Les messages de requête et de réponse mtrace v1 sont des messages IGMP. Tous les paquets mTrace v2 sont UDP.

- mtrace v1 possède un champ pour le protocole de routage, qui est le protocole de routage de multidiffusion utilisé pour le protocole RPF vers le routeur en amont. mTrace v2 possède deux champs : un pour le protocole de routage de monodiffusion utilisé pour le protocole RPF et un pour le protocole de routage de multidiffusion exécuté vers le routeur en amont.

- Les objectifs de mtrace v1 et v2 sont identiques et la syntaxe des paquets est très similaire.

- mtrace v1 et v2 utilisent des jeux de codes différents pour les protocoles de routage et les codes de transfert.

- mtrace v2 prend en charge la famille d'adresses IPv6 et un numéro de port UDP spécifique (33435).

Détails de mtrace v2

- L'outil permet de tracer le chemin d'une source à une destination. Il vérifie le chemin emprunté et peut également indiquer tout problème, par exemple avec la durée de vie (TTL) ou le transfert de chemin inverse (RPF).

- Les objectifs de mtrace v2 et v1 sont identiques. La façon dont mtrace vérifie le chemin est d'envoyer un paquet à la destination (routeur de dernier saut ou LHR) et de suivre le chemin vers l'arrière vers la source (arborescence source) ou le routeur Rendez-Vous Point (RP). Cela signifie que vous devez spécifier la destination (adresse de monodiffusion), la source (adresse de monodiffusion) et le groupe de multidiffusion.

- La véritable puissance de la fonction mtrace est que la commande mtrace peut être exécutée à partir de n'importe quel routeur (émetteur) du réseau. Il n'est pas nécessaire qu'il s'agisse du routeur de premier saut (FHR) ou du RP.

- mtrace v2 est spécifié dans RFC 8487 : mtrace Version 2 : Traceroute Facility for IP Multicast

- mtrace v1on IOS-XR est basé sur un brouillon : draft-ietf-idmr-traceroute-ipm

- mtrace v2 ne prend pas en charge mVPN

Il existe trois types de paquets utilisés pour mtrace. Ensemble, ces trois paquets font fonctionner mtrace. L’émetteur envoie un paquet de requête mtrace au routeur de dernier saut. Ce LHR transforme la requête en paquet de requête. Ce paquet est ensuite transmis en monodiffusion, saut par saut, vers le routeur en amont. Le LHR et chaque routeur en amont ajoutent un bloc de données de réponse qui contient des informations utiles telles que l'adresse de l'interface, le protocole de routage, le code de transfert, etc. Lorsque la requête arrive au FHR, elle transforme la requête en paquet de réponse et la transfère à l'expéditeur. Si la trace n’est pas terminée, un routeur intermédiaire peut également renvoyer la réponse à l’émetteur, si par exemple une erreur fatale telle que « no route » s’est produite.

Consultez cette image pour connaître la procédure et la gestion des trois types de paquets mtrace.

L'émetteur est R-10. Le LHR est le LHR-4. Le FHR est le FHR-3. Le RP est RP-5. Le réseau exécute le mode PIM Sparse ou Any Source Multicast (ASM).

Le message de demande mtrace ressemble à ceci.

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'adresse du client est l'adresse de l'expéditeur, c'est-à-dire le routeur sur lequel vous exécutez la commande mTrace v2.

Le bloc de données de réponse contient des informations intéressantes. Cette information est ajoutée au message de demande. Chaque routeur ajoute un bloc de données de réponse au message de requête. Voici le bloc de données de réponse.

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|

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

Ce sont ces informations de bloc de réponse qui sont utilisées pour afficher le résultat de la commande traceroute. Chaque bloc de réponse correspond à une ligne dans la sortie mtrace.

Les numéros de protocole de routage et de protocole de routage multidiffusion sont identiques à la valeur ipMcastRouteRtProtocol de la base MIB IP Multicast (RFC 5132). Elles ne sont pas identiques aux valeurs utilisées dans mtrace v1.

L'IANA les répertorie comme suit :

Protocoles de routage :

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]

Protocoles de routage multidiffusion :

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)

Les codes de transfert pour mtrace v2 sont indiqués ici. Ils ne sont pas identiques à ceux de 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 sur IOS-XR

Syntaxe de la commande

Utilisation : mtrace <src_addr> [<dest_addr>] [<group_addr>] [<resp_addr>] [<ttl>]

Assurez-vous de spécifier 2 afin d'utiliser 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

<cr>

L'adresse source est l'adresse de l'expéditeur.

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)

<cr>

L'adresse de destination est l'adresse du 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)

<cr>

L'adresse de groupe est l'adresse de groupe du flux de multidiffusion suivi.

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)

<cr>

L’adresse de réponse est l’adresse à laquelle la réponse traceroute est renvoyée.

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)

<cr>

Exemples

Notez que la commande peut être lancée à partir de n'importe quel routeur du réseau, pas nécessairement un routeur PIM/multicast activé ou le long de l'arborescence partagée ou source spécifique en cours d'examen.

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]

Vous pouvez voir que la commande mtrace a été exécutée pour l'arborescence partagée (*, G). La commande mtrace a démarré au niveau du routeur de dernier saut 10.2.4.4 et a reculé sur l'arborescence partagée jusqu'au RP (10.0.0.5). La raison en est que le routeur LHR-4 n'a pas d'entrée MRIB (S, G) pour la source 10.1.3.3 pour le groupe 25.1.1.1.

La partie [10.1.3.0/24] est la route de monodiffusion utilisée pour les informations RPF. Les informations RPF dans IOS-XR sont toujours une entrée /32 pour IPv4. Ces informations proviennent d'une route de monodiffusion. Cette route de monodiffusion s'affiche.

Le protocole de multidiffusion s'affiche. Ici, c'est PIM.

Le nombre de sauts s’affiche à l’envers, en commençant à 0 au niveau du dernier routeur de saut et en devenant négatif jusqu’à ce que le routeur de premier saut soit atteint.

La suivante est le cas de l'arborescence source.

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

Il existe une entrée MRIB pour la source 10.1.3.1. La commande mtrace affiche un résultat différent lorsqu'elle est exécutée pour cette 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]

Notez que le chemin inverse est désormais LHR4 - IR-9 - IR-8 - FHR-3. Il s'agit de l'arborescence source de FHR-3 à LHR-4. Correspond aux entrées MRIB pour (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

Vous pouvez utiliser debug IGMP avec mtrace v1 pour afficher les paquets mTrace sur n'importe quel routeur le long du chemin de trace. mtrace v2 utilise des paquets UDP, de sorte que le débogage IGMP ne peut pas être utilisé pour mtrace v2.

Vous pouvez toutefois vous concentrer sur le port UDP 33433 qui est utilisé par les paquets mtrace v2 sur IOS-XR.

Exemple :

Déboguez les paquets UDP mtracev2 sur le routeur intermédiaire.

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:

Le routeur intermédiaire reçoit et envoie un message mtrace v2.

Remarques

Assurez-vous que vous connaissez les routeurs FHR et LHR. Les autres routeurs ne peuvent pas exécuter la commande mtrace.

Si les routeurs ont des horloges synchronisées, vous pouvez mesurer le temps nécessaire à la propagation des messages mtrace, en raison de la présence des horodatages. Cette heure n'est qu'une indication, car ces messages sont traités comme des messages de contrôle à chaque saut.