Contents

Introdução

Pré-requisitos

Requisitos

Componentes Utilizados

Comparação entre mtrace v1 e mtrace v2

Detalhes de mtrace v2

mtrace v2 no IOS-XR

Sintaxe do comando

Examples

Notas

Introdução

Este documento descreve o mtrace versão 2 no Cisco IOS®XR.

Pré-requisitos

Requisitos

Não existem requisitos específicos para este documento.

Componentes Utilizados

Este documento é específico do Cisco IOS®XR, mas não está restrito a uma versão de software ou hardware específico.

As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a sua rede estiver ativa, certifique-se de que entende o impacto potencial de qualquer comando.

Comparação entre mtrace v1 e mtrace v2

- mtrace v2 A mensagem de resposta é equivalente à mensagem de resposta do mTrace v1.

- o mtrace v1 suporta apenas multicast IPv4. O mTrace v2 suporta multicast IPv4 e IPv6.

- mtrace v1 As mensagens de Consulta e Resposta são mensagens IGMP. Todos os pacotes mTrace v2 são UDP.

- mtrace v1 tinha um campo para o Routing Protocol, que é o protocolo de roteamento multicast usado para RPF em direção ao roteador upstream. mTrace v2 tem dois campos: um para o protocolo de roteamento unicast usado para RPF e um para o protocolo de roteamento multicast em execução no roteador upstream.

- O objetivo de mtrace v1 e v2 é o mesmo e a sintaxe do pacote é muito semelhante.

- mtrace v1 e v2 usam diferentes conjuntos de códigos para os protocolos de roteamento e códigos de encaminhamento.

- O mtrace v2 suporta a família de endereços IPv6 e um número de porta UDP específico (33435).

Detalhes de mtrace v2

- A ferramenta permite rastrear o caminho de uma origem até um destino. Ele verifica o caminho tomado e também pode indicar quaisquer problemas, por exemplo, com Time-To-Live (TTL) ou Reverse Path Forwarding (RPF).

- O objetivo de mtrace v2 e v1 é o mesmo. A forma como o mtrace verifica o caminho é enviar um pacote ao destino (roteador de último salto ou LHR) e rastrear o caminho de volta em direção à origem (árvore de origem) ou ao roteador Rendez-Vous Point (RP). Isso significa que você deve especificar o destino (endereço unicast), a origem (endereço unicast) e o grupo multicast.

- O verdadeiro poder do recurso mtrace é que o comando mtrace pode ser executado a partir de qualquer roteador (originador) na rede. Ele não precisa ser o roteador de primeiro salto (FHR) ou o RP.

- mtrace v2 é especificado em RFC 8487: mtrace Versão 2: Traceroute Facility para IP Multicast

- mtrace v1 no IOS-XR é baseado em um rascunho: draft-ietf-idmr-traceroute-ipm

- mtrace v2 não suporta mVPN

Há três tipos de pacotes usados para mtrace. Juntos, esses três pacotes fazem com que o mtrace funcione. O originador envia um pacote de Consulta mtrace para o Roteador do Último Salto. Esse LHR transforma a Consulta em um pacote de Solicitação. Esse pacote é então encaminhado por unicast, salto por salto, em direção ao roteador upstream. O LHR e cada roteador upstream adicionam um bloco de dados de resposta que contém informações úteis como endereço de interface, protocolo de roteamento, código de encaminhamento e assim por diante. Quando a Solicitação chega ao FHR, ela transforma a Solicitação em um pacote de Resposta e a encaminha ao originador. Se o rastreamento não for concluído, um roteador intermediário também poderá retornar a Resposta ao originador, se, por exemplo, um erro fatal, como "nenhuma rota", tiver ocorrido.

Observe esta imagem para ver o procedimento e o tratamento dos três tipos de pacotes mtrace.

O originador é R-10. O LHR é LHR-4. A FHR é FHR-3. O RP é RP-5. A rede está executando o modo PIM Esparso ou o Any Source Multicast (ASM).

A mensagem de solicitação mtrace é semelhante a esta.

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 #         |

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

O endereço do cliente é o endereço do originador, portanto, o roteador onde você executa o comando mTrace v2.

O bloco de dados de resposta contém informações interessantes. Essa informação é adicionada à mensagem de solicitação. Cada roteador adiciona um bloco de dados de resposta à mensagem de solicitação. Este é o bloco de dados de resposta.

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|

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

São essas informações de bloco de resposta que são usadas para exibir a saída do traceroute. Cada bloco de resposta é uma linha na saída mtrace.

Os números do protocolo de roteamento e do protocolo de roteamento multicast têm o mesmo valor que o ipMcastRouteRtProtocol do IP Multicast MIB (RFC 5132). Eles não são os mesmos que os valores usados em mtrace v1.

A IANA os lista da seguinte maneira:

Protocolos de Roteamento:

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]

Protocolos de roteamento 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)

Os códigos de encaminhamento para mtrace v2 são mostrados aqui. Eles não são os mesmos do 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 no IOS-XR

Sintaxe do comando

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

Certifique-se de especificar 2 para usar 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>

O endereço de origem é o endereço do originador.

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>

O endereço destino é o endereço do 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>

O endereço do grupo é o endereço do grupo do fluxo multicast que está sendo rastreado.

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>

O endereço de resposta é o endereço para o qual a resposta do traceroute é retornada.

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>

Examples

Observe que o comando pode ser iniciado a partir de qualquer roteador na rede, não necessariamente um roteador habilitado para PIM/multicast ou ao longo da árvore de origem ou compartilhada específica sob investigação.

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]

Você pode ver que o mtrace foi executado para a árvore compartilhada (*,G). O mtrace iniciou no roteador de último salto 10.2.4.4 e retrocedeu na árvore compartilhada para o RP (10.0.0.5). A razão para isso é que o roteador LHR-4 não tem uma entrada MRIB (S,G) para a origem 10.1.3.3 para o Grupo 225.1.1.1.

A parte [10.1.3.0/24] é a rota unicast usada para as informações de RPF. As informações de RPF no IOS-XR são sempre uma entrada /32 para IPv4. Essas informações são derivadas de uma rota unicast. Essa rota unicast é exibida.

O protocolo multicast é exibido. Aqui está o PIM.

O contador de saltos é exibido ao contrário, começando em 0 no roteador do último salto e indo negativo até que o roteador do primeiro salto seja alcançado.

O próximo é o caso da árvore de origem.

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

Há uma entrada MRIB para a Origem 10.1.3.1. O comando mtrace mostra uma saída diferente quando essa operação é realizada para essa origem.

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]

Observe que o caminho inverso agora é LHR4 - IR-9 - IR-8 - FHR-3. Esta é a árvore de origem de FHR-3 para LHR-4. Isso corresponde às entradas de MRIB para (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

Você pode usardebug IGMP com mtrace v1 para exibir os pacotes mTrace em qualquer roteador ao longo do caminho de rastreamento. mtrace v2 usa pacotes UDP, portanto a depuração de IGMP não pode ser usada para mtrace v2.

No entanto, você pode se concentrar na porta UDP 33433, que é usada por pacotes mtrace v2 no IOS-XR.

Exemplo:

Depurar pacotes UDP mtracev2 no roteador intermediário.

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:

O roteador intermediário recebe e envia uma mensagem mtrace v2.

Notas

Verifique se você sabe quais roteadores são o FHR e o LHR. Outros roteadores não podem concluir o mtrace.

Se os roteadores tiverem relógios sincronizados, você poderá medir o tempo que leva para propagar as mensagens mtrace, devido à presença dos timestamps. Esse tempo é apenas uma indicação, pois essas mensagens são tratadas como mensagens de controle a cada salto.