内容

はじめに

前提条件

要件

使用するコンポーネント

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のQueryメッセージとResponseメッセージはIGMPメッセージです。mTrace v2パケットはすべてUDPです。

- mtrace v1には、ルーティングプロトコル用のフィールドがありました。これは、アップストリームルータへのRPFに使用されるマルチキャストルーティングプロトコルです。mTrace v2には、RPFに使用されるユニキャストルーティングプロトコル用と、アップストリームルータに対して実行されるマルチキャストルーティングプロトコル用の2つのフィールドがあります。

- mtrace v1とv2の目的は同じで、パケット構文も非常に似ています。

- mtrace v1とv2では、ルーティングプロトコルとフォワーディングコードに異なるコードセットが使用されます。

- mtrace v2は、アドレスファミリIPv6と特定のUDPポート番号(33435)をサポートします。

mtrace v2の詳細

- このツールを使用すると、送信元から宛先までのパスをトレースできます。また、使用されたパスを確認し、存続可能時間(TTL)やリバースパス転送(RPF)などの問題を示している可能性もあります。

- mtrace v2とv1の目的は同じです。mtraceがパスを確認する方法は、パケットを宛先（ラストホップルータまたはLHR）に送信し、送信元（送信元ツリー）またはRendez-Vous Point(RP)ルータに向かって逆方向にパスをトレースすることです。つまり、宛先（ユニキャストアドレス）、送信元（ユニキャストアドレス）、およびマルチキャストグループを指定する必要があります。

- mtrace機能の真の利点は、mtraceコマンドがネットワーク内の任意のルータ（発信側）から実行できることです。ファーストホップルータ(FHR)またはRPである必要はありません。

- mtrace v2の仕様については、『RFC 8487: mtrace Version 2: Traceroute Facility for IP Multicast』を参照してください。

- ios-XRのmtrace v1は、ドラフトに基づいています：draft-ietf-idmr-traceroute-ipm

- mtrace v2はmVPNをサポートしていません

mtraceには3種類のパケットが使用されます。これら3つのパケットを組み合わせると、mtraceが動作します。発信元は、ラストホップルータに向けてmtrace Queryパケットを送信します。このLHRはクエリーを要求パケットに変換します。その後、このパケットはアップストリームルータに向けてホップごとにユニキャスト転送されます。LHRとすべてのアップストリームルータは、インターフェイスアドレス、ルーティングプロトコル、転送コードなどの有用な情報を含む応答データブロックを追加します。要求がFHRに到着すると、要求は応答パケットに変換され、発信元に転送されます。トレースが完了していなければ、中継ルータは、たとえば「no route」などの致命的なエラーが発生した場合に、発信元にも応答を返す可能性があります。

3つのmtraceパケットタイプの手順と処理については、このイメージを参照してください。

発信元はR-10です。LHRはLHR-4です。FHRはFHR-3です。RPはRP-5です。ネットワークでPIMスパースモード(PIM-SPARSE)またはAny Source Multicast(ASM)が実行されている。

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コマンドを実行するルータになります。

応答データブロックは、関心情報を保持する。この情報が要求メッセージに追加されます。各ルータは、要求メッセージに1つの応答データブロックを追加します。応答データブロックを次に示します。

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出力の1行です。

ルーティングプロトコルおよびマルチキャストルーティングプロトコル番号は、IPマルチキャスト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>

グループアドレスは、トレース対象のマルチキャストストリームのグループアドレスです。

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]

共有ツリー(*,G)に対してmtraceが実行されたことがわかります。mtraceはラストホップルータ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パケットを使用するため、IGMPデバッグはmtrace v2には使用できません。

ただし、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メッセージの伝播に要する時間を測定できます。これらのメッセージは各ホップで制御メッセージとして扱われるため、今回は単なる表示です。