draft-ietf-mboned-mtrace-v2-21.txt | draft-ietf-mboned-mtrace-v2-22.txt | |||
---|---|---|---|---|
MBONED Working Group H. Asaeda | MBONED Working Group H. Asaeda | |||
Internet-Draft NICT | Internet-Draft NICT | |||
Intended status: Standards Track K. Meyer | Intended status: Standards Track K. Meyer | |||
Expires: May 6, 2018 Cisco | Expires: June 23, 2018 | |||
W. Lee, Ed. | W. Lee, Ed. | |||
November 2, 2017 | December 20, 2017 | |||
Mtrace Version 2: Traceroute Facility for IP Multicast | Mtrace Version 2: Traceroute Facility for IP Multicast | |||
draft-ietf-mboned-mtrace-v2-21 | draft-ietf-mboned-mtrace-v2-22 | |||
Abstract | Abstract | |||
This document describes the IP multicast traceroute facility, named | This document describes the IP multicast traceroute facility, named | |||
Mtrace version 2 (Mtrace2). Unlike unicast traceroute, Mtrace2 | Mtrace version 2 (Mtrace2). Unlike unicast traceroute, Mtrace2 | |||
requires special implementations on the part of routers. This | requires special implementations on the part of routers. This | |||
specification describes the required functionality in multicast | specification describes the required functionality in multicast | |||
routers, as well as how an Mtrace2 client invokes a query and | routers, as well as how an Mtrace2 client invokes a query and | |||
receives a reply. | receives a reply. | |||
skipping to change at page 1, line 37 ¶ | skipping to change at page 1, line 37 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on May 6, 2018. | This Internet-Draft will expire on June 23, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 32 ¶ | skipping to change at page 2, line 32 ¶ | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
2.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3. Packet Formats . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Packet Formats . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.1. Mtrace2 TLV format . . . . . . . . . . . . . . . . . . . 8 | 3.1. Mtrace2 TLV format . . . . . . . . . . . . . . . . . . . 8 | |||
3.2. Defined TLVs . . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Defined TLVs . . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.2.1. Mtrace2 Query . . . . . . . . . . . . . . . . . . . . 9 | 3.2.1. Mtrace2 Query . . . . . . . . . . . . . . . . . . . . 9 | |||
3.2.2. Mtrace2 Request . . . . . . . . . . . . . . . . . . . 11 | 3.2.2. Mtrace2 Request . . . . . . . . . . . . . . . . . . . 11 | |||
3.2.3. Mtrace2 Reply . . . . . . . . . . . . . . . . . . . . 11 | 3.2.3. Mtrace2 Reply . . . . . . . . . . . . . . . . . . . . 11 | |||
3.2.4. IPv4 Mtrace2 Standard Response Block . . . . . . . . 12 | 3.2.4. IPv4 Mtrace2 Standard Response Block . . . . . . . . 12 | |||
3.2.5. IPv6 Mtrace2 Standard Response Block . . . . . . . . 15 | 3.2.5. IPv6 Mtrace2 Standard Response Block . . . . . . . . 16 | |||
3.2.6. Mtrace2 Augmented Response Block . . . . . . . . . . 18 | 3.2.6. Mtrace2 Augmented Response Block . . . . . . . . . . 18 | |||
3.2.7. Mtrace2 Extended Query Block . . . . . . . . . . . . 19 | 3.2.7. Mtrace2 Extended Query Block . . . . . . . . . . . . 19 | |||
4. Router Behavior . . . . . . . . . . . . . . . . . . . . . . . 20 | 4. Router Behavior . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
4.1. Receiving Mtrace2 Query . . . . . . . . . . . . . . . . . 20 | 4.1. Receiving Mtrace2 Query . . . . . . . . . . . . . . . . . 20 | |||
4.1.1. Query Packet Verification . . . . . . . . . . . . . . 20 | 4.1.1. Query Packet Verification . . . . . . . . . . . . . . 20 | |||
4.1.2. Query Normal Processing . . . . . . . . . . . . . . . 21 | 4.1.2. Query Normal Processing . . . . . . . . . . . . . . . 21 | |||
4.2. Receiving Mtrace2 Request . . . . . . . . . . . . . . . . 21 | 4.2. Receiving Mtrace2 Request . . . . . . . . . . . . . . . . 21 | |||
4.2.1. Request Packet Verification . . . . . . . . . . . . . 21 | 4.2.1. Request Packet Verification . . . . . . . . . . . . . 21 | |||
4.2.2. Request Normal Processing . . . . . . . . . . . . . . 22 | 4.2.2. Request Normal Processing . . . . . . . . . . . . . . 22 | |||
4.3. Forwarding Mtrace2 Request . . . . . . . . . . . . . . . 23 | 4.3. Forwarding Mtrace2 Request . . . . . . . . . . . . . . . 24 | |||
4.3.1. Destination Address . . . . . . . . . . . . . . . . . 24 | 4.3.1. Destination Address . . . . . . . . . . . . . . . . . 24 | |||
4.3.2. Source Address . . . . . . . . . . . . . . . . . . . 24 | 4.3.2. Source Address . . . . . . . . . . . . . . . . . . . 24 | |||
4.3.3. Appending Standard Response Block . . . . . . . . . . 24 | 4.3.3. Appending Standard Response Block . . . . . . . . . . 24 | |||
4.4. Sending Mtrace2 Reply . . . . . . . . . . . . . . . . . . 25 | 4.4. Sending Mtrace2 Reply . . . . . . . . . . . . . . . . . . 25 | |||
4.4.1. Destination Address . . . . . . . . . . . . . . . . . 25 | 4.4.1. Destination Address . . . . . . . . . . . . . . . . . 25 | |||
4.4.2. Source Address . . . . . . . . . . . . . . . . . . . 25 | 4.4.2. Source Address . . . . . . . . . . . . . . . . . . . 25 | |||
4.4.3. Appending Standard Response Block . . . . . . . . . . 25 | 4.4.3. Appending Standard Response Block . . . . . . . . . . 25 | |||
4.5. Proxying Mtrace2 Query . . . . . . . . . . . . . . . . . 25 | 4.5. Proxying Mtrace2 Query . . . . . . . . . . . . . . . . . 25 | |||
4.6. Hiding Information . . . . . . . . . . . . . . . . . . . 26 | 4.6. Hiding Information . . . . . . . . . . . . . . . . . . . 26 | |||
skipping to change at page 4, line 21 ¶ | skipping to change at page 4, line 21 ¶ | |||
On the other hand, walking up the tree from a receiver to a source is | On the other hand, walking up the tree from a receiver to a source is | |||
easy, as most existing multicast routing protocols know the upstream | easy, as most existing multicast routing protocols know the upstream | |||
router for each source. Tracing from a receiver to a source can | router for each source. Tracing from a receiver to a source can | |||
involve only the routers on the direct path. | involve only the routers on the direct path. | |||
This document specifies the multicast traceroute facility named | This document specifies the multicast traceroute facility named | |||
Mtrace version 2 or Mtrace2 which allows the tracing of an IP | Mtrace version 2 or Mtrace2 which allows the tracing of an IP | |||
multicast routing path. Mtrace2 is usually initiated from an Mtrace2 | multicast routing path. Mtrace2 is usually initiated from an Mtrace2 | |||
client by sending an Mtrace2 Query to a Last Hop Router (LHR) or to a | client by sending an Mtrace2 Query to a Last Hop Router (LHR) or to a | |||
Rendezvous Point (RP). The RP is a special router where sources and | Rendezvous Point (RP). The RP is a special router where sources and | |||
receivers meet in PIM-SM [5]. From the LHR/RP receiving the query, | receivers meet in Protocol Independent Multicast - Sparse Mode (PIM- | |||
the tracing is directed towards a specified source if a source | SM) [5]. From the LHR/RP receiving the query, the tracing is | |||
address is specified and source specific state exists on the | directed towards a specified source if a source address is specified | |||
receiving router. If no source address is specified or if no source | and source specific state exists on the receiving router. If no | |||
specific state exists on a receiving LHR, the tracing is directed | source address is specified or if no source specific state exists on | |||
toward the RP for the specified group address. Moreover, Mtrace2 | a receiving LHR, the tracing is directed toward the RP for the | |||
provides additional information such as the packet rates and losses, | specified group address. Moreover, Mtrace2 provides additional | |||
as well as other diagnostic information. Mtrace2 is primarily | information such as the packet rates and losses, as well as other | |||
intended for the following purposes: | diagnostic information. Mtrace2 is primarily intended for the | |||
following purposes: | ||||
o To trace the path that a packet would take from a source to a | o To trace the path that a packet would take from a source to a | |||
receiver. | receiver. | |||
o To isolate packet loss problems (e.g., congestion). | o To isolate packet loss problems (e.g., congestion). | |||
o To isolate configuration problems (e.g., TTL threshold). | o To isolate configuration problems (e.g., Time to live (TTL) | |||
threshold). | ||||
Figure 1 shows a typical case on how Mtrace2 is used. FHR represents | Figure 1 shows a typical case on how Mtrace2 is used. First-hop | |||
the first-hop router, LHR represents the last-hop router, and the | router (FHR) represents the first-hop router, LHR represents the | |||
arrow lines represent the Mtrace2 messages that are sent from one | last-hop router (LHR), and the arrow lines represent the Mtrace2 | |||
node to another. The numbers before the Mtrace2 messages represent | messages that are sent from one node to another. The numbers before | |||
the sequence of the messages that would happen. Source, Receiver and | the Mtrace2 messages represent the sequence of the messages that | |||
Mtrace2 client are typically hosts. | would happen. Source, Receiver and Mtrace2 client are typically | |||
hosts. | ||||
2. Request 2. Request | 2. Request 2. Request | |||
+----+ +----+ | +----+ +----+ | |||
| | | | | | | | | | |||
v | v | | v | v | | |||
+--------+ +-----+ +-----+ +----------+ | +--------+ +-----+ +-----+ +----------+ | |||
| Source |----| FHR |----- The Internet -----| LHR |----| Receiver | | | Source |----| FHR |----- The Internet -----| LHR |----| Receiver | | |||
+--------+ +-----+ | +-----+ +----------+ | +--------+ +-----+ | +-----+ +----------+ | |||
\ | ^ | \ | ^ | |||
\ | / | \ | / | |||
skipping to change at page 6, line 16 ¶ | skipping to change at page 6, line 16 ¶ | |||
repeat the process until it receives an Mtrace2 Reply message. The | repeat the process until it receives an Mtrace2 Reply message. The | |||
details are Mtrace2 client specific and outside the scope of this | details are Mtrace2 client specific and outside the scope of this | |||
document. | document. | |||
Note that when a router's control plane and forwarding plane are out | Note that when a router's control plane and forwarding plane are out | |||
of sync, the Mtrace2 Requests might be forwarded based on the control | of sync, the Mtrace2 Requests might be forwarded based on the control | |||
states instead. In this case, the traced path might not represent | states instead. In this case, the traced path might not represent | |||
the real path the data packets would follow. | the real path the data packets would follow. | |||
Mtrace2 supports both IPv4 and IPv6. Unlike the previous version of | Mtrace2 supports both IPv4 and IPv6. Unlike the previous version of | |||
Mtrace, which implements its query and response as IGMP messages [8], | Mtrace, which implements its query and response as Internet Group | |||
all Mtrace2 messages are UDP-based. Although the packet formats of | Management Protocol (IGMP) messages [8], all Mtrace2 messages are | |||
IPv4 and IPv6 Mtrace2 are different because of the address families, | UDP-based. Although the packet formats of IPv4 and IPv6 Mtrace2 are | |||
the syntax between them is similar. | different because of the address families, the syntax between them is | |||
similar. | ||||
This document describes the base specification of Mtrace2 that can | This document describes the base specification of Mtrace2 that can | |||
serve as a basis for future proposals such as Mtrace2 for AMT [9] and | serve as a basis for future proposals such as Mtrace2 for Automatic | |||
Mtrace2 for MVPN [10]. They are therefore out of the scope of this | Multicast Tunneling (AMT) [9] and Mtrace2 for Multicast in MPLS/BGP | |||
IP VPNs (MVPN) [10]. They are therefore out of the scope of this | ||||
document. | document. | |||
2. Terminology | 2. Terminology | |||
In this document, the key words "MUST", "MUST NOT", "REQUIRED", | In this document, the key words "MUST", "MUST NOT", "REQUIRED", | |||
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | |||
and "OPTIONAL" are to be interpreted as described in RFC 2119 [1], | and "OPTIONAL" are to be interpreted as described in RFC 2119 [1], | |||
and indicate requirement levels for compliant Mtrace2 | and indicate requirement levels for compliant Mtrace2 | |||
implementations. | implementations. | |||
skipping to change at page 7, line 38 ¶ | skipping to change at page 7, line 40 ¶ | |||
communicate with their adjacent routers that are running the same | communicate with their adjacent routers that are running the same | |||
routing protocol. For instance, the IPv4 'ALL-PIM-ROUTERS' group | routing protocol. For instance, the IPv4 'ALL-PIM-ROUTERS' group | |||
is '224.0.0.13', and the IPv6 'ALL-PIM-ROUTERS' group is 'ff02::d' | is '224.0.0.13', and the IPv6 'ALL-PIM-ROUTERS' group is 'ff02::d' | |||
[5]. | [5]. | |||
3. Packet Formats | 3. Packet Formats | |||
This section describes the details of the packet formats for Mtrace2 | This section describes the details of the packet formats for Mtrace2 | |||
messages. | messages. | |||
All Mtrace2 messages are encoded in TLV format (see Section 3.1). | All Mtrace2 messages are encoded in the Type/Length/Value (TLV) | |||
The first TLV of a message is a message header TLV specifying the | format (see Section 3.1). The first TLV of a message is a message | |||
type of message and additional context information required for | header TLV specifying the type of message and additional context | |||
processing of the message and for parsing of subsequent TLVs in the | information required for processing of the message and for parsing of | |||
message. Subsequent TLVs in a message, referred to as Blocks, are | subsequent TLVs in the message. Subsequent TLVs in a message, | |||
appended after the header TLV to provide additional information | referred to as Blocks, are appended after the header TLV to provide | |||
associated with the message. If an implementation receives an | additional information associated with the message. If an | |||
unknown TLV type for the first TLV in a message, it SHOULD ignore and | implementation receives an unknown TLV type for the first TLV in a | |||
silently discard the TLV and any subsequent TLVs in the packet | message (i.e., the header TLV), it SHOULD ignore and silently discard | |||
containing the TLV. If an implementation receives an unknown TLV | the entire packet. If an implementation receives an unknown TLV type | |||
type for a subsequent TLV within a message, it SHOULD ignore and | for a subsequent TLV within a message, it SHOULD ignore and silently | |||
silently discard the TLV. If the length of a TLV exceeds the | discard the entire packet. If the length of a TLV exceeds the | |||
available space in the containing packet, the implementation MUST | available space in the containing packet, the implementation MUST | |||
ignore and silently discard the TLV and any remaining portion of the | ignore and silently discard the TLV and any remaining portion of the | |||
containing packet. Any data in the packet after the specified TLV | containing packet. | |||
length is considered to be outside the boundary of the TLV and MUST | ||||
be ignored during processing of the TLV. | ||||
All Mtrace2 messages are UDP packets. For IPv4, Mtrace2 Query and | All Mtrace2 messages are UDP packets. For IPv4, Mtrace2 Query and | |||
Request messages MUST NOT be fragmented. For IPv6, the packet size | Request messages MUST NOT be fragmented. For IPv6, the packet size | |||
for the Mtrace2 messages MUST NOT exceed 1280 bytes, which is the | for the Mtrace2 messages MUST NOT exceed 1280 bytes, which is the | |||
smallest MTU for an IPv6 interface [2]. The source port is uniquely | smallest Maximum Transmission Unit (MTU) for an IPv6 interface [2]. | |||
selected by the local host operating system. The destination port is | The source port is uniquely selected by the local host operating | |||
the IANA reserved Mtrace2 port number (see Section 8). All Mtrace2 | system. The destination port is the IANA reserved Mtrace2 port | |||
messages MUST have a valid UDP checksum. | number (see Section 8). All Mtrace2 messages MUST have a valid UDP | |||
checksum. | ||||
Additionally, Mtrace2 supports both IPv4 and IPv6, but not mixed. | Additionally, Mtrace2 supports both IPv4 and IPv6, but not mixed. | |||
For example, if an Mtrace2 Query or Request message arrives in as an | For example, if an Mtrace2 Query or Request message arrives in as an | |||
IPv4 packet, all addresses specified in the Mtrace2 messages MUST be | IPv4 packet, all addresses specified in the Mtrace2 messages MUST be | |||
IPv4 as well. Same rule applies to IPv6 Mtrace2 messages. | IPv4 as well. Same rule applies to IPv6 Mtrace2 messages. | |||
3.1. Mtrace2 TLV format | 3.1. Mtrace2 TLV format | |||
0 1 2 3 | 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 | 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 | |||
skipping to change at page 10, line 45 ¶ | skipping to change at page 10, line 45 ¶ | |||
This field specifies an IPv4 or IPv6 address, which can be either: | This field specifies an IPv4 or IPv6 address, which can be either: | |||
m-1: a multicast group address to be traced; or, | m-1: a multicast group address to be traced; or, | |||
m-2: all 1's in case of IPv4 or the unspecified address (::) in | m-2: all 1's in case of IPv4 or the unspecified address (::) in | |||
case of IPv6 if no group-specific information is desired. | case of IPv6 if no group-specific information is desired. | |||
Source Address: 32 bits or 128 bits | Source Address: 32 bits or 128 bits | |||
This field specifies an IPv4 or IPv6 address, which can be either: | This field specifies an IPv4 or IPv6 address, which can be either: | |||
s-1: an unicast address of the source to be traced; or, | s-1: a unicast address of the source to be traced; or, | |||
s-2: all 1's in case of IPv4 or the unspecified address (::) in | s-2: all 1's in case of IPv4 or the unspecified address (::) in | |||
case of IPv6 if no source-specific information is desired. | case of IPv6 if no source-specific information is desired. | |||
For example, the client is tracing a (*,g) group state. | For example, the client is tracing a (*,g) group state. | |||
Note that it is invalid to have a source-group combination of | Note that it is invalid to have a source-group combination of | |||
(s-2, m-2). If a router receives such combination in an Mtrace2 | (s-2, m-2). If a router receives such combination in an Mtrace2 | |||
Query, it MUST silently discard the Query. | Query, it MUST silently discard the Query. | |||
Mtrace2 Client Address: 32 bits or 128 bits | Mtrace2 Client Address: 32 bits or 128 bits | |||
skipping to change at page 12, line 45 ¶ | skipping to change at page 12, line 45 ¶ | |||
| Rtg Protocol | Multicast Rtg Protocol | | | Rtg Protocol | Multicast Rtg Protocol | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Fwd TTL | MBZ |S| Src Mask |Forwarding Code| | | Fwd TTL | MBZ |S| Src Mask |Forwarding Code| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
MBZ: 8 bits | MBZ: 8 bits | |||
This field MUST be zeroed on transmission and ignored on | This field MUST be zeroed on transmission and ignored on | |||
reception. | reception. | |||
Query Arrival Time: 32 bits | Query Arrival Time: 32 bits | |||
The Query Arrival Time is a 32-bit NTP timestamp specifying the | The Query Arrival Time is a 32-bit Network Time Protocol (NTP) | |||
arrival time of the Mtrace2 Query or Request packet at this | timestamp specifying the arrival time of the Mtrace2 Query or | |||
router. The 32-bit form of an NTP timestamp consists of the | Request packet at this router. The 32-bit form of an NTP | |||
middle 32 bits of the full 64-bit form; that is, the low 16 bits | timestamp consists of the middle 32 bits of the full 64-bit form; | |||
of the integer part and the high 16 bits of the fractional part. | that is, the low 16 bits of the integer part and the high 16 bits | |||
of the fractional part. | ||||
The following formula converts from a UNIX timeval to a 32-bit NTP | The following formula converts from a timespec (fractional part in | |||
timestamp: | nanoseconds) to a 32-bit NTP timestamp: | |||
query_arrival_time | query_arrival_time | |||
= ((tv.tv_sec + 32384) << 16) + ((tv.tv_nsec << 7) / 1953125) | = ((tv.tv_sec + 32384) << 16) + ((tv.tv_nsec << 7) / 1953125) | |||
The constant 32384 is the number of seconds from Jan 1, 1900 to | The constant 32384 is the number of seconds from Jan 1, 1900 to | |||
Jan 1, 1970 truncated to 16 bits. ((tv.tv_nsec << 7) / 1953125) | Jan 1, 1970 truncated to 16 bits. ((tv.tv_nsec << 7) / 1953125) | |||
is a reduction of ((tv.tv_nsec / 1000000000) << 16). | is a reduction of ((tv.tv_nsec / 1000000000) << 16). | |||
Note that Mtrace2 does not require all the routers on the path to | Note that Mtrace2 does not require all the routers on the path to | |||
have synchronized clocks in order to measure one-way latency. | have synchronized clocks in order to measure one-way latency. | |||
skipping to change at page 13, line 45 ¶ | skipping to change at page 13, line 48 ¶ | |||
this router expects packets from this source. This may be a | this router expects packets from this source. This may be a | |||
multicast group (e.g., ALL-[protocol]-ROUTERS group) if the | multicast group (e.g., ALL-[protocol]-ROUTERS group) if the | |||
upstream router is not known because of the workings of the | upstream router is not known because of the workings of the | |||
multicast routing protocol. However, it should be 0 if the | multicast routing protocol. However, it should be 0 if the | |||
incoming interface address is unknown or unnumbered. | incoming interface address is unknown or unnumbered. | |||
Input packet count on incoming interface: 64 bits | Input packet count on incoming interface: 64 bits | |||
This field contains the number of multicast packets received for | This field contains the number of multicast packets received for | |||
all groups and sources on the incoming interface, or all 1's if no | all groups and sources on the incoming interface, or all 1's if no | |||
count can be reported. This counter may have the same value as | count can be reported. This counter may have the same value as | |||
ifHCInMulticastPkts from the IF-MIB [12] for this interface. | ifHCInMulticastPkts from the Interfaces Group MIB (IF-MIB) [12] | |||
for this interface. | ||||
Output packet count on outgoing interface: 64 bit | Output packet count on outgoing interface: 64 bit | |||
This field contains the number of multicast packets that have been | This field contains the number of multicast packets that have been | |||
transmitted or queued for transmission for all groups and sources | transmitted or queued for transmission for all groups and sources | |||
on the outgoing interface, or all 1's if no count can be reported. | on the outgoing interface, or all 1's if no count can be reported. | |||
This counter may have the same value as ifHCOutMulticastPkts from | This counter may have the same value as ifHCOutMulticastPkts from | |||
the IF-MIB [12] for this interface. | the IF-MIB [12] for this interface. | |||
Total number of packets for this source-group pair: 64 bits | Total number of packets for this source-group pair: 64 bits | |||
This field counts the number of packets from the specified source | This field counts the number of packets from the specified source | |||
forwarded by the router to the specified group, or all 1's if no | forwarded by the router to the specified group, or all 1's if no | |||
count can be reported. If the S bit is set (see below), the count | count can be reported. If the S bit is set (see below), the count | |||
is for the source network, as specified by the Src Mask field (see | is for the source network, as specified by the Src Mask field (see | |||
below). If the S bit is set and the Src Mask field is 127, | below). If the S bit is set and the Src Mask field is 127, | |||
indicating no source-specific state, the count is for all sources | indicating no source-specific state, the count is for all sources | |||
sending to this group. This counter should have the same value as | sending to this group. This counter should have the same value as | |||
ipMcastRoutePkts from the IPMROUTE-STD-MIB [13] for this | ipMcastRoutePkts from the IP Multicast MIB [13] for this | |||
forwarding entry. | forwarding entry. | |||
Rtg Protocol: 16 bits | Rtg Protocol: 16 bits | |||
This field describes the unicast routing protocol running between | This field describes the unicast routing protocol running between | |||
this router and the upstream router, and it is used to determine | this router and the upstream router, and it is used to determine | |||
the RPF interface for the specified source or RP. This value | the RPF interface for the specified source or RP. This value | |||
should have the same value as ipMcastRouteRtProtocol from the | should have the same value as ipMcastRouteRtProtocol from the IP | |||
IPMROUTE-STD-MIB [13] for this entry. If the router is not able | Multicast MIB [13] for this entry. If the router is not able to | |||
to obtain this value, all 0's must be specified. | obtain this value, all 0's must be specified. | |||
Multicast Rtg Protocol: 16 bits | Multicast Rtg Protocol: 16 bits | |||
This field describes the multicast routing protocol in use between | This field describes the multicast routing protocol in use between | |||
the router and the upstream router. This value should have the | the router and the upstream router. This value should have the | |||
same value as ipMcastRouteProtocol from the IPMROUTE-STD-MIB [13] | same value as ipMcastRouteProtocol from the IP Multicast MIB [13] | |||
for this entry. If the router cannot obtain this value, all 0's | for this entry. If the router cannot obtain this value, all 0's | |||
must be specified. | must be specified. | |||
Fwd TTL: 8 bits | Fwd TTL: 8 bits | |||
This field contains the configured multicast TTL threshold, if | This field contains the configured multicast TTL threshold, if | |||
any, of the outgoing interface. | any, of the outgoing interface. | |||
S: 1 bit | S: 1 bit | |||
If this bit is set, it indicates that the packet count for the | If this bit is set, it indicates that the packet count for the | |||
source-group pair is for the source network, as determined by | source-group pair is for the source network, as determined by | |||
skipping to change at page 17, line 13 ¶ | skipping to change at page 17, line 19 ¶ | |||
for this interface. | for this interface. | |||
Outgoing Interface ID: 32 bits | Outgoing Interface ID: 32 bits | |||
This field specifies the interface ID to which packets from the | This field specifies the interface ID to which packets from the | |||
source or RP are expected to transmit, or 0 if unknown. This ID | source or RP are expected to transmit, or 0 if unknown. This ID | |||
should be the value taken from InterfaceIndex of the IF-MIB [12] | should be the value taken from InterfaceIndex of the IF-MIB [12] | |||
for this interface | for this interface | |||
Local Address: 128 bits | Local Address: 128 bits | |||
This field specifies a global IPv6 address that uniquely | This field specifies a global IPv6 address that uniquely | |||
identifies the router. An unique local unicast address [11] | identifies the router. A unique local unicast address [11] SHOULD | |||
SHOULD NOT be used unless the router is only assigned link-local | NOT be used unless the router is only assigned link-local and | |||
and unique local addresses. If the router is only assigned link- | unique local addresses. If the router is only assigned link-local | |||
local addresses, its link-local address can be specified in this | addresses, its link-local address can be specified in this field. | |||
field. | ||||
Remote Address: 128 bits | Remote Address: 128 bits | |||
This field specifies the address of the upstream router, which, in | This field specifies the address of the upstream router, which, in | |||
most cases, is a link-local unicast address for the upstream | most cases, is a link-local unicast address for the upstream | |||
router. | router. | |||
Although a link-local address does not have enough information to | Although a link-local address does not have enough information to | |||
identify a node, it is possible to detect the upstream router with | identify a node, it is possible to detect the upstream router with | |||
the assistance of Incoming Interface ID and the current router | the assistance of Incoming Interface ID and the current router | |||
address (i.e., Local Address). | address (i.e., Local Address). | |||
skipping to change at page 17, line 47 ¶ | skipping to change at page 18, line 4 ¶ | |||
Output packet count on outgoing interface: 64 bits | Output packet count on outgoing interface: 64 bits | |||
Same definition as in IPv4. | Same definition as in IPv4. | |||
Total number of packets for this source-group pair: 64 bits | Total number of packets for this source-group pair: 64 bits | |||
Same definition as in IPv4, except if the S bit is set (see | Same definition as in IPv4, except if the S bit is set (see | |||
below), the count is for the source network, as specified by the | below), the count is for the source network, as specified by the | |||
Src Prefix Len field. If the S bit is set and the Src Prefix Len | Src Prefix Len field. If the S bit is set and the Src Prefix Len | |||
field is 255, indicating no source-specific state, the count is | field is 255, indicating no source-specific state, the count is | |||
for all sources sending to this group. This counter should have | for all sources sending to this group. This counter should have | |||
the same value as ipMcastRoutePkts from the IPMROUTE-STD-MIB [13] | the same value as ipMcastRoutePkts from the IP Multicast MIB [13] | |||
for this forwarding entry. | for this forwarding entry. | |||
Rtg Protocol: 16 bits | Rtg Protocol: 16 bits | |||
Same definition as in IPv4. | Same definition as in IPv4. | |||
Multicast Rtg Protocol: 16 bits | Multicast Rtg Protocol: 16 bits | |||
Same definition as in IPv4. | Same definition as in IPv4. | |||
MBZ 2: 15 bits | MBZ 2: 15 bits | |||
This field MUST be zeroed on transmission and ignored on | This field MUST be zeroed on transmission and ignored on | |||
skipping to change at page 21, line 43 ¶ | skipping to change at page 21, line 52 ¶ | |||
With the exception of the LHR, whose Request was just converted from | With the exception of the LHR, whose Request was just converted from | |||
a Query, each Request received by a router should have at least one | a Query, each Request received by a router should have at least one | |||
Standard Response Block filled in. | Standard Response Block filled in. | |||
4.2.1. Request Packet Verification | 4.2.1. Request Packet Verification | |||
If the Mtrace2 Request does not come from an adjacent router, or if | If the Mtrace2 Request does not come from an adjacent router, or if | |||
the Request is not addressed to this router, or if the Request is | the Request is not addressed to this router, or if the Request is | |||
addressed to a multicast group which is not a link-scoped group | addressed to a multicast group which is not a link-scoped group | |||
(i.e., 224.0.0.0/24 for IPv4, FFx2::/16 [3] for IPv6), it MUST be | (i.e., 224.0.0.0/24 for IPv4, FFx2::/16 [3] for IPv6), it MUST be | |||
silently ignored. GTSM [14] SHOULD be used by the router to | silently ignored. The Generalized TTL Security Mechanism (GTSM) [14] | |||
determine whether the router is adjacent or not. | SHOULD be used by the router to determine whether the router is | |||
adjacent or not. | ||||
If the sum of the number of the Standard Response Blocks in the | If the sum of the number of the Standard Response Blocks in the | |||
received Mtrace2 Request and the value of the Augmented Response Type | received Mtrace2 Request and the value of the Augmented Response Type | |||
of 0x01, if any, is equal or more than the # Hops in the Mtrace2 | of 0x01, if any, is equal or more than the # Hops in the Mtrace2 | |||
Request, it MUST be silently ignored. | Request, it MUST be silently ignored. | |||
4.2.2. Request Normal Processing | 4.2.2. Request Normal Processing | |||
When a router receives an Mtrace2 Request message, it performs the | When a router receives an Mtrace2 Request message, it performs the | |||
following steps. Note that it is possible to have multiple | following steps. Note that it is possible to have multiple | |||
skipping to change at page 28, line 31 ¶ | skipping to change at page 28, line 31 ¶ | |||
because a failure requires waiting for the [Mtrace Reply Timeout] | because a failure requires waiting for the [Mtrace Reply Timeout] | |||
period. | period. | |||
5.7. Non-Supported Router | 5.7. Non-Supported Router | |||
When a non-supported router receives an Mtrace2 Query or Request | When a non-supported router receives an Mtrace2 Query or Request | |||
message whose destination address is a multicast address, the router | message whose destination address is a multicast address, the router | |||
will silently discard the message. | will silently discard the message. | |||
When the router receives an Mtrace2 Query which is destined to | When the router receives an Mtrace2 Query which is destined to | |||
itself, the router would return an ICMP port unreachable to the | itself, the router would return an Internet Control Message Protocol | |||
Mtrace2 client. On the other hand, when the router receives an | (ICMP) port unreachable to the Mtrace2 client. On the other hand, | |||
Mtrace2 Request which is destined to itself, the router would return | when the router receives an Mtrace2 Request which is destined to | |||
an ICMP port unreachable to its adjacent router from which the | itself, the router would return an ICMP port unreachable to its | |||
Request receives. Therefore, the Mtrace2 client needs to terminate | adjacent router from which the Request receives. Therefore, the | |||
the trace when the [Mtrace Reply Timeout] timeout has occurred, and | Mtrace2 client needs to terminate the trace when the [Mtrace Reply | |||
may then issue another Query with a lower number of # Hops. | Timeout] timeout has occurred, and may then issue another Query with | |||
a lower number of # Hops. | ||||
5.8. Mtrace2 Termination | 5.8. Mtrace2 Termination | |||
When performing an expanding hop-by-hop trace, it is necessary to | When performing an expanding hop-by-hop trace, it is necessary to | |||
determine when to stop expanding. | determine when to stop expanding. | |||
5.8.1. Arriving at Source | 5.8.1. Arriving at Source | |||
A trace can be determined to have arrived at the source if the | A trace can be determined to have arrived at the source if the | |||
Incoming Interface of the last router in the trace is non-zero, but | Incoming Interface of the last router in the trace is non-zero, but | |||
skipping to change at page 29, line 36 ¶ | skipping to change at page 29, line 36 ¶ | |||
will send back an Mtrace2 Reply to the Mtrace2 client, and continue | will send back an Mtrace2 Reply to the Mtrace2 client, and continue | |||
with a new Request (see Section 4.3.3). In this case, the Mtrace2 | with a new Request (see Section 4.3.3). In this case, the Mtrace2 | |||
client may receive multiple Mtrace2 Replies from different routers | client may receive multiple Mtrace2 Replies from different routers | |||
along the path. When this happens, the client MUST treat them as a | along the path. When this happens, the client MUST treat them as a | |||
single Mtrace2 Reply message. | single Mtrace2 Reply message. | |||
If a trace times out, it is very likely that a router in the middle | If a trace times out, it is very likely that a router in the middle | |||
of the path does not support Mtrace2. That router's address will be | of the path does not support Mtrace2. That router's address will be | |||
in the Upstream Router field of the last Standard Response Block in | in the Upstream Router field of the last Standard Response Block in | |||
the last received Reply. A client may be able to determine (via | the last received Reply. A client may be able to determine (via | |||
mrinfo or SNMP [11][13]) a list of neighbors of the non-responding | mrinfo or the Simple Network Management Protocol (SNMP) [11][13]) a | |||
router. The neighbors obtained in this way could then be probed (via | list of neighbors of the non-responding router. The neighbors | |||
the multicast MIB [13]) to determine which one is the upstream (RPF) | obtained in this way could then be probed (via the multicast MIB | |||
neighbor of the non-responding router. This algorithm can identify | [13]) to determine which one is the upstream neighbor (i.e., Reverse | |||
the upstream neighbor because, even though there may be multiple | Path Forwarding (RPF) neighbor) of the non-responding router. This | |||
neighbors, the non-responding router should only have sent a "join" | algorithm can identify the upstream neighbor because, even though | |||
to the one neighbor corresponding to its selected RPF path. Because | there may be multiple neighbors, the non-responding router should | |||
of this, only the RPF neighbor should contain the non-responding | only have sent a "join" to the one neighbor corresponding to its | |||
router as a multicast next hop in its MIB output list for the | selected RPF path. Because of this, only the RPF neighbor should | |||
affected multicast route. | contain the non-responding router as a multicast next hop in its MIB | |||
output list for the affected multicast route. | ||||
6. Protocol-Specific Considerations | 6. Protocol-Specific Considerations | |||
This section describes the Mtrace2 behavior with the presence of | This section describes the Mtrace2 behavior with the presence of | |||
different multicast protocols. | different multicast protocols. | |||
6.1. PIM-SM | 6.1. PIM-SM | |||
When an Mtrace2 reaches a PIM-SM RP, and the RP does not forward the | When an Mtrace2 reaches a PIM-SM RP, and the RP does not forward the | |||
trace on, it means that the RP has not performed a source-specific | trace on, it means that the RP has not performed a source-specific | |||
skipping to change at page 30, line 50 ¶ | skipping to change at page 30, line 50 ¶ | |||
appropriate last hop. | appropriate last hop. | |||
When traffic is flowing, PIM Dense Mode routers know whether or not | When traffic is flowing, PIM Dense Mode routers know whether or not | |||
they are the LHR for the link (because they won or lost an Assert | they are the LHR for the link (because they won or lost an Assert | |||
battle) and know who the upstream router is (because it won an Assert | battle) and know who the upstream router is (because it won an Assert | |||
battle). Therefore, Mtrace2 is always able to follow the proper path | battle). Therefore, Mtrace2 is always able to follow the proper path | |||
when traffic is flowing. | when traffic is flowing. | |||
6.4. IGMP/MLD Proxy | 6.4. IGMP/MLD Proxy | |||
When an IGMP/MLD Proxy [7] receives an Mtrace2 Query packet on an | When an IGMP or Multicast Listener Discovery (MLD) Proxy [7] receives | |||
incoming interface, it notes a WRONG_IF in the Forwarding Code of the | an Mtrace2 Query packet on an incoming interface, it notes a WRONG_IF | |||
last Standard Response Block (see Section 3.2.4), and sends the | in the Forwarding Code of the last Standard Response Block (see | |||
Mtrace2 Reply back to the Mtrace2 client. On the other hand, when an | Section 3.2.4), and sends the Mtrace2 Reply back to the Mtrace2 | |||
Mtrace2 Query packet reaches an outgoing interface of the IGMP/MLD | client. On the other hand, when an Mtrace2 Query packet reaches an | |||
proxy, it is forwarded onto its incoming interface towards the | outgoing interface of the IGMP/MLD proxy, it is forwarded onto its | |||
upstream router. | incoming interface towards the upstream router. | |||
7. Problem Diagnosis | 7. Problem Diagnosis | |||
This section describes different scenarios Mtrace2 can be used to | This section describes different scenarios Mtrace2 can be used to | |||
diagnose the multicast problems. | diagnose the multicast problems. | |||
7.1. Forwarding Inconsistencies | 7.1. Forwarding Inconsistencies | |||
The Forwarding Error code can tell if a group is unexpectedly pruned | The Forwarding Error code can tell if a group is unexpectedly pruned | |||
or administratively scoped. | or administratively scoped. | |||
skipping to change at page 33, line 7 ¶ | skipping to change at page 33, line 7 ¶ | |||
which the new Forwarding Code is used. | which the new Forwarding Code is used. | |||
8.2. "Mtrace2 TLV Types" registry | 8.2. "Mtrace2 TLV Types" registry | |||
Assignment of a TLV Type requires specification of an integer value | Assignment of a TLV Type requires specification of an integer value | |||
"Code" in the range 0-255 and a name ("Type"). Initial values for | "Code" in the range 0-255 and a name ("Type"). Initial values for | |||
the TLV Types are given in the table at the beginning of Section 3.2. | the TLV Types are given in the table at the beginning of Section 3.2. | |||
8.3. UDP Destination Port | 8.3. UDP Destination Port | |||
The Mtrace2 UDP destination port is assigned when this document is | IANA has assigned UDP user port 33435 (mtrace) for use by this | |||
published as RFC. | protocol as the Mtrace2 UDP destination port. | |||
9. Security Considerations | 9. Security Considerations | |||
This section addresses some of the security considerations related to | This section addresses some of the security considerations related to | |||
Mtrace2. | Mtrace2. | |||
9.1. Addresses in Mtrace2 Header | 9.1. Addresses in Mtrace2 Header | |||
An Mtrace2 header includes three addresses, source address, multicast | An Mtrace2 header includes three addresses, source address, multicast | |||
address, and Mtrace2 client address. These addresses MUST be | address, and Mtrace2 client address. These addresses MUST be | |||
skipping to change at page 36, line 13 ¶ | skipping to change at page 36, line 13 ¶ | |||
Authors' Addresses | Authors' Addresses | |||
Hitoshi Asaeda | Hitoshi Asaeda | |||
National Institute of Information and Communications Technology | National Institute of Information and Communications Technology | |||
4-2-1 Nukui-Kitamachi | 4-2-1 Nukui-Kitamachi | |||
Koganei, Tokyo 184-8795 | Koganei, Tokyo 184-8795 | |||
Japan | Japan | |||
Email: asaeda@nict.go.jp | Email: asaeda@nict.go.jp | |||
Kerry Meyer | Kerry Meyer | |||
Cisco Systems, Inc. | ||||
510 McCarthy Blvd. | ||||
Milpitas, CA 95035 | ||||
USA | ||||
Email: kerrymey@cisco.com | Email: kerry.meyer@me.com | |||
WeeSan Lee (editor) | WeeSan Lee (editor) | |||
Email: weesan@weesan.com | Email: weesan@weesan.com | |||
End of changes. 30 change blocks. | ||||
100 lines changed or deleted | 104 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |