목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

mtrace v1 및 mtrace v2 비교

mtrace v2 세부 정보

IOS-XR의 mtrace v2

명령 구문

예

참고

소개

이 문서에서는 Cisco IOS®XR의 mtrace 버전 2에 대해 설명합니다.

사전 요구 사항

요구 사항

이 문서에 대한 특정 요건이 없습니다.

사용되는 구성 요소

이 문서는 Cisco IOS®XR에만 해당되지만 특정 소프트웨어 릴리스 또는 하드웨어에 제한되지 않습니다.

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.

mtrace v1 및 mtrace v2 비교

- mtrace v2 응답 메시지는 mTrace v1 응답 메시지와 같습니다.

- mtrace v1은 IPv4 멀티캐스트만 지원합니다. mTrace v2는 IPv4 및 IPv6 멀티캐스트를 지원합니다.

- mtrace v1 쿼리 및 응답 메시지는 IGMP 메시지입니다. 모든 mTrace v2 패킷은 UDP입니다.

- mtrace v1에는 업스트림 라우터를 향하는 RPF에 사용되는 멀티캐스트 라우팅 프로토콜인 라우팅 프로토콜에 대한 필드가 있습니다. mTrace v2에는 RPF에 사용되는 유니캐스트 라우팅 프로토콜에 대한 필드와 업스트림 라우터로 실행되는 멀티캐스트 라우팅 프로토콜에 대한 필드가 하나씩 있습니다.

- mtrace v1 및 v2의 목표는 동일하며 패킷 구문은 매우 유사합니다.

- mtrace v1 및 v2는 라우팅 프로토콜과 포워딩 코드에 대해 서로 다른 코드 집합을 사용합니다.

- mtrace v2는 주소군 IPv6 및 특정 UDP 포트 번호(33435)를 지원합니다.

mtrace v2 세부 정보

- 이 도구를 사용하면 소스에서 대상까지의 경로를 추적할 수 있습니다. 이 데모에서는 경로를 확인하며 TTL(Time-To-Live) 또는 RPF(Reverse Path Forwarding)와 같은 문제를 나타낼 수도 있습니다.

- mtrace v2와 v1의 목표는 동일합니다. mtrace가 경로를 확인하는 방법은 패킷을 대상(Last Hop Router 또는 LHR)으로 보내고 소스(소스 트리) 또는 RP(Rendez-Vous Point) 라우터를 향하는 경로를 역방향으로 추적하는 것입니다. 즉, 목적지(유니캐스트 주소), 소스(유니캐스트 주소) 및 멀티캐스트 그룹을 지정해야 합니다.

- mtrace 기능의 실질적인 장점은 네트워크의 모든 라우터(발신자)에서 mtrace 명령을 실행할 수 있다는 것입니다. FHR(First Hop Router) 또는 RP일 필요는 없습니다.

- mtrace v2는 RFC 8487에 지정되어 있습니다. mtrace 버전 2: IP 멀티캐스트를 위한 Traceroute 기능

- mtrace v1on IOS-XR은 draft-ietf-idmr-traceroute-ipm을 기반으로 합니다.

- mtrace v2는 mVPN을 지원하지 않습니다.

mtrace에는 세 가지 유형의 패킷이 사용됩니다. 이 세 개의 패킷이 합쳐지면 mtrace 작업이 가능해집니다. 발신자는 마지막 홉 라우터를 향해 mtrace 쿼리 패킷을 전송합니다. 이 LHR은 쿼리를 요청 패킷으로 변환합니다. 그러면 이 패킷은 유니캐스트로 홉별로 전달되며 업스트림 라우터로 전달됩니다. LHR 및 모든 업스트림 라우터는 인터페이스 주소, 라우팅 프로토콜, 포워딩 코드 등의 유용한 정보가 포함된 응답 데이터 블록을 추가합니다. 요청이 FHR에 도착하면 요청을 응답 패킷으로 전환하여 발신자에게 전달합니다. 추적이 완료되지 않은 경우, 예를 들어 "경로 없음"과 같은 치명적인 오류가 발생한 경우 중간 라우터가 발신자에게 회신을 반환할 수도 있습니다.

이 이미지에서 세 가지 mtrace 패킷 유형의 처리 절차 및 처리 방법을 확인하십시오.

발신자는 R-10입니다. LHR은 LHR-4입니다. FHR은 FHR-3입니다. RP는 RP-5입니다. 네트워크에서 PIM 스파스 모드 또는 ASM(Any Source Multicast)을 실행하고 있습니다.

mtrace 요청 메시지는 다음과 같습니다.

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

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

클라이언트 주소는 발신자의 주소이므로 mTrace v2 명령을 수행하는 라우터입니다.

응답 데이터 블록에는 흥미로운 정보가 들어 있습니다. 이 정보는 요청 메시지에 추가됩니다. 각 라우터는 요청 메시지에 하나의 응답 데이터 블록을 추가합니다. 응답 데이터 블록

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|

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

traceroute 출력을 표시하는 데 사용되는 이 응답 블록 정보입니다. 각 응답 블록은 mtrace 출력의 한 줄입니다.

라우팅 프로토콜 및 멀티캐스트 라우팅 프로토콜 번호는 IP Multicast MIB(RFC 5132)의 ipMcastRouteRtProtocol과 같은 값입니다. mtrace v1에 사용된 값과 다릅니다.

IANA는 다음과 같이 목록을 표시합니다.

라우팅 프로토콜:

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]

멀티캐스트 라우팅 프로토콜:

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)

mtrace v2의 전달 코드는 여기에 나와 있습니다. 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.

IOS-XR의 mtrace v2

명령 구문

사용법: mtrace <src_addr> [<dest_addr>] [<group_addr>] [<resp_addr>] [<ttl>]

mtrace v2를 사용하려면 2를 지정해야 합니다.

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>

소스 주소는 발신자의 주소입니다.

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>

대상 주소는 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>

Group address는 추적되는 멀티캐스트 스트림의 Group 주소입니다.

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>

응답 주소는 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)

<cr>

예

이 명령은 반드시 PIM/멀티캐스트 지원 라우터가 아닌 네트워크의 모든 라우터에서 시작하거나 조사 중인 특정 공유 또는 소스 트리를 따라 시작할 수 있습니다.

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]

mtrace가 공유 트리(*,G)에 대해 수행된 것을 확인할 수 있습니다. mtrace는 Last Hop Router 10.2.4.4에서 시작되어 공유 트리에서 RP(10.0.0.5)로 되돌아갔습니다. 그 이유는 LHR-4 라우터에 그룹 225.1.1.1의 소스 10.1.3.3에 대한 (S,G) MRIB 항목이 없기 때문입니다.

[10.1.3.0/24] 부분은 RPF 정보에 사용되는 유니캐스트 경로입니다. IOS-XR의 RPF 정보는 항상 IPv4의 /32 항목입니다. 이 정보는 유니캐스트 경로에서 파생됩니다. 이 유니캐스트 경로가 표시됩니다.

멀티캐스트 프로토콜이 표시됩니다. PIM입니다.

홉 수는 마지막 홉 라우터에서 0부터 시작하여 첫 번째 홉 라우터에 도달할 때까지 음수가 되도록 역순으로 표시됩니다.

다음은 소스 트리의 경우입니다.

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

소스 10.1.3.1에 대한 MRIB 항목이 있습니다. mtrace 명령은 해당 소스에 대해 완료되면 다른 출력을 표시합니다.

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]

이제 반대 경로가 LHR4 - IR-9 - IR-8 - FHR-3입니다. FHR-3에서 LHR-4로의 소스 트리입니다. (S,G)에 대한 MRIB 항목과 일치합니다.

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

mtrace v1과 함께 사용하여debug IGMP 추적 경로를 따라 라우터의 mTrace 패킷을 표시할 수 있습니다. mtrace v2는 UDP 패킷을 사용하므로 mtrace v2에는 IGMP 디버그를 사용할 수 없습니다.

그러나 IOS-XR의 mtrace v2 패킷에서 사용되는 UDP 포트 33433에 집중할 수 있습니다.

예:

중간 라우터에서 UDP mtracev2 패킷을 디버깅합니다.

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:

중간 라우터는 mtrace v2 메시지를 수신하고 전송합니다.

참고

어떤 라우터가 FHR 및 LHR인지 확인합니다. 다른 라우터는 mtrace를 완료할 수 없습니다.

라우터에 동기화된 시계가 있는 경우 타임스탬프가 있기 때문에 mtrace 메시지를 전파하는 데 걸리는 시간을 측정할 수 있습니다. 이 메시지는 모든 홉에서 제어 메시지로 처리되므로 이 시간은 표시만 됩니다.