draft-ietf-mboned-mtrace-v2-07.txt | draft-ietf-mboned-mtrace-v2-08.txt | |||
---|---|---|---|---|
MBONED Working Group H. Asaeda | MBONED Working Group H. Asaeda | |||
Internet-Draft Keio University | Internet-Draft Keio University | |||
Intended status: Standards Track T. Jinmei | Intended status: Standards Track T. Jinmei | |||
Expires: January 13, 2011 ISC | Expires: July 11, 2011 ISC | |||
W. Fenner | W. Fenner | |||
Arastra, Inc. | Arastra, Inc. | |||
S. Casner | S. Casner | |||
Packet Design, Inc. | Packet Design, Inc. | |||
July 12, 2010 | January 7, 2011 | |||
Mtrace Version 2: Traceroute Facility for IP Multicast | Mtrace Version 2: Traceroute Facility for IP Multicast | |||
draft-ietf-mboned-mtrace-v2-07 | draft-ietf-mboned-mtrace-v2-08 | |||
Abstract | Abstract | |||
This document describes the IP multicast traceroute facility. Unlike | This document describes the IP multicast traceroute facility. Unlike | |||
unicast traceroute, multicast traceroute requires special | unicast traceroute, multicast traceroute requires special | |||
implementations on the part of routers. This specification describes | implementations on the part of routers. This specification describes | |||
the required functionality in multicast routers, as well as how | the required functionality in multicast routers, as well as how | |||
management applications can use the router functionality. | management applications can use the router functionality. | |||
Status of this Memo | Status of this Memo | |||
skipping to change at page 1, line 39 | skipping to change at page 1, line 39 | |||
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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 January 13, 2011. | This Internet-Draft will expire on July 11, 2011. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2010 IETF Trust and the persons identified as the | Copyright (c) 2011 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 | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 3, line 13 | skipping to change at page 3, line 13 | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
4. Packet Formats . . . . . . . . . . . . . . . . . . . . . . . . 10 | 4. Packet Formats . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.1. Mtrace2 TLV format . . . . . . . . . . . . . . . . . . . . 10 | 4.1. Mtrace2 TLV format . . . . . . . . . . . . . . . . . . . . 10 | |||
4.2. Defined TLVs . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.2. Defined TLVs . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
5. Mtrace2 Query Header . . . . . . . . . . . . . . . . . . . . . 11 | 5. Mtrace2 Query Header . . . . . . . . . . . . . . . . . . . . . 12 | |||
5.1. # hops: 8 bits . . . . . . . . . . . . . . . . . . . . . . 11 | 5.1. # hops: 8 bits . . . . . . . . . . . . . . . . . . . . . . 12 | |||
5.2. Multicast Address . . . . . . . . . . . . . . . . . . . . 11 | 5.2. Multicast Address . . . . . . . . . . . . . . . . . . . . 13 | |||
5.3. Source Address . . . . . . . . . . . . . . . . . . . . . . 12 | 5.3. Source Address . . . . . . . . . . . . . . . . . . . . . . 13 | |||
5.4. Destination Address . . . . . . . . . . . . . . . . . . . 12 | 5.4. Mtrace2 Client Address . . . . . . . . . . . . . . . . . . 13 | |||
5.5. Query ID: 16 bits . . . . . . . . . . . . . . . . . . . . 12 | 5.5. Query ID: 16 bits . . . . . . . . . . . . . . . . . . . . 13 | |||
5.6. Client Port # . . . . . . . . . . . . . . . . . . . . . . 12 | 5.6. Client Port # . . . . . . . . . . . . . . . . . . . . . . 13 | |||
6. IPv4 Mtrace2 Standard Response Block . . . . . . . . . . . . . 13 | 6. IPv4 Mtrace2 Standard Response Block . . . . . . . . . . . . . 14 | |||
6.1. MBZ: 8 bit . . . . . . . . . . . . . . . . . . . . . . . . 13 | 6.1. MBZ: 8 bit . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
6.2. Query Arrival Time: 32 bits . . . . . . . . . . . . . . . 13 | 6.2. Query Arrival Time: 32 bits . . . . . . . . . . . . . . . 14 | |||
6.3. Incoming Interface Address: 32 bits . . . . . . . . . . . 14 | 6.3. Incoming Interface Address: 32 bits . . . . . . . . . . . 15 | |||
6.4. Outgoing Interface Address: 32 bits . . . . . . . . . . . 14 | 6.4. Outgoing Interface Address: 32 bits . . . . . . . . . . . 15 | |||
6.5. Previous-Hop Router Address: 32 bits . . . . . . . . . . . 14 | 6.5. Previous-Hop Router Address: 32 bits . . . . . . . . . . . 15 | |||
6.6. Input packet count on incoming interface: 64 bits . . . . 14 | 6.6. Input packet count on incoming interface: 64 bits . . . . 15 | |||
6.7. Output packet count on incoming interface: 64 bits . . . . 14 | 6.7. Output packet count on outgoing interface: 64 bits . . . . 16 | |||
6.8. Total number of packets for this source-group pair: 64 | 6.8. Total number of packets for this source-group pair: 64 | |||
bits . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | bits . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
6.9. Rtg Protocol: 16 bits . . . . . . . . . . . . . . . . . . 15 | 6.9. Rtg Protocol: 16 bits . . . . . . . . . . . . . . . . . . 16 | |||
6.10. Multicast Rtg Protocol: 16 bits . . . . . . . . . . . . . 15 | 6.10. Multicast Rtg Protocol: 16 bits . . . . . . . . . . . . . 16 | |||
6.11. Fwd TTL: 8 bits . . . . . . . . . . . . . . . . . . . . . 15 | 6.11. Fwd TTL: 8 bits . . . . . . . . . . . . . . . . . . . . . 16 | |||
6.12. S: 1 bit . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 6.12. S: 1 bit . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
6.13. Src Mask: 7 bits . . . . . . . . . . . . . . . . . . . . . 15 | 6.13. Src Mask: 7 bits . . . . . . . . . . . . . . . . . . . . . 17 | |||
6.14. Forwarding Code: 8 bits . . . . . . . . . . . . . . . . . 16 | 6.14. Forwarding Code: 8 bits . . . . . . . . . . . . . . . . . 17 | |||
7. IPv6 Mtrace2 Standard Response Block . . . . . . . . . . . . . 18 | 7. IPv6 Mtrace2 Standard Response Block . . . . . . . . . . . . . 19 | |||
7.1. MBZ: 8 bit . . . . . . . . . . . . . . . . . . . . . . . . 18 | 7.1. MBZ: 8 bit . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
7.2. Query Arrival Time: 32 bits . . . . . . . . . . . . . . . 19 | 7.2. Query Arrival Time: 32 bits . . . . . . . . . . . . . . . 20 | |||
7.3. Incoming Interface ID: 32 bits . . . . . . . . . . . . . . 19 | 7.3. Incoming Interface ID: 32 bits . . . . . . . . . . . . . . 20 | |||
7.4. Outgoing Interface ID: 32 bits . . . . . . . . . . . . . . 19 | 7.4. Outgoing Interface ID: 32 bits . . . . . . . . . . . . . . 20 | |||
7.5. Local Address . . . . . . . . . . . . . . . . . . . . . . 19 | 7.5. Local Address . . . . . . . . . . . . . . . . . . . . . . 20 | |||
7.6. Remote Address . . . . . . . . . . . . . . . . . . . . . . 19 | 7.6. Remote Address . . . . . . . . . . . . . . . . . . . . . . 20 | |||
7.7. Input packet count on incoming interface . . . . . . . . . 19 | 7.7. Input packet count on incoming interface . . . . . . . . . 20 | |||
7.8. Output packet count on incoming interface . . . . . . . . 20 | 7.8. Output packet count on outgoing interface . . . . . . . . 21 | |||
7.9. Total number of packets for this source-group pair . . . . 20 | 7.9. Total number of packets for this source-group pair . . . . 21 | |||
7.10. Rtg Protocol: 16 bits . . . . . . . . . . . . . . . . . . 20 | 7.10. Rtg Protocol: 16 bits . . . . . . . . . . . . . . . . . . 21 | |||
7.11. Multicast Rtg Protocol: 16 bits . . . . . . . . . . . . . 20 | 7.11. Multicast Rtg Protocol: 16 bits . . . . . . . . . . . . . 21 | |||
7.12. S: 1 bit . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 7.12. S: 1 bit . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
7.13. Src Prefix Len: 8 bits . . . . . . . . . . . . . . . . . . 20 | 7.13. Src Prefix Len: 8 bits . . . . . . . . . . . . . . . . . . 21 | |||
7.14. Forwarding Code: 8 bits . . . . . . . . . . . . . . . . . 20 | 7.14. Forwarding Code: 8 bits . . . . . . . . . . . . . . . . . 21 | |||
8. Mtrace2 Augmented Response Block . . . . . . . . . . . . . . . 21 | 8. Mtrace2 Augmented Response Block . . . . . . . . . . . . . . . 22 | |||
9. Router Behavior . . . . . . . . . . . . . . . . . . . . . . . 22 | 9. Router Behavior . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
9.1. Traceroute Query . . . . . . . . . . . . . . . . . . . . . 22 | 9.1. Receiving Mtrace2 Query . . . . . . . . . . . . . . . . . 23 | |||
9.1.1. Packet Verification . . . . . . . . . . . . . . . . . 22 | 9.1.1. Packet Verification . . . . . . . . . . . . . . . . . 23 | |||
9.1.2. Normal Processing . . . . . . . . . . . . . . . . . . 22 | 9.1.2. Normal Processing . . . . . . . . . . . . . . . . . . 23 | |||
9.2. Mtrace2 Request . . . . . . . . . . . . . . . . . . . . . 22 | 9.1.3. Mtrace2 Query Received by Non-Supported Router . . . . 23 | |||
9.2.1. Packet Verification . . . . . . . . . . . . . . . . . 23 | 9.2. Receiving Mtrace2 Request . . . . . . . . . . . . . . . . 24 | |||
9.2.2. Normal Processing . . . . . . . . . . . . . . . . . . 23 | 9.2.1. Packet Verification . . . . . . . . . . . . . . . . . 24 | |||
9.3. Forwarding Mtrace2 Requests . . . . . . . . . . . . . . . 25 | 9.2.2. Normal Processing . . . . . . . . . . . . . . . . . . 24 | |||
9.4. Sending Mtrace2 Responses . . . . . . . . . . . . . . . . 25 | 9.2.3. Mtrace2 Request Received by Non-Supported Router . . . 26 | |||
9.4.1. Destination Address . . . . . . . . . . . . . . . . . 25 | 9.3. Forwarding Mtrace2 Request . . . . . . . . . . . . . . . . 26 | |||
9.4.2. Source Address . . . . . . . . . . . . . . . . . . . . 25 | 9.3.1. Destination Address . . . . . . . . . . . . . . . . . 26 | |||
9.5. Proxying Mtrace2 Queries . . . . . . . . . . . . . . . . . 25 | 9.3.2. Source Address . . . . . . . . . . . . . . . . . . . . 26 | |||
9.6. Hiding Information . . . . . . . . . . . . . . . . . . . . 26 | 9.4. Sending Mtrace2 Reply . . . . . . . . . . . . . . . . . . 27 | |||
10. Client Behavior . . . . . . . . . . . . . . . . . . . . . . . 27 | 9.4.1. Destination Address . . . . . . . . . . . . . . . . . 27 | |||
10.1. Sending Mtrace2 Queries . . . . . . . . . . . . . . . . . 27 | 9.4.2. Source Address . . . . . . . . . . . . . . . . . . . . 27 | |||
10.2. Determining the Path . . . . . . . . . . . . . . . . . . . 27 | 9.5. Proxying Mtrace2 Query . . . . . . . . . . . . . . . . . . 27 | |||
10.3. Collecting Statistics . . . . . . . . . . . . . . . . . . 27 | 9.6. Hiding Information . . . . . . . . . . . . . . . . . . . . 28 | |||
10.4. Last Hop Router . . . . . . . . . . . . . . . . . . . . . 27 | 10. Client Behavior . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
10.5. First Hop Router . . . . . . . . . . . . . . . . . . . . . 28 | 10.1. Sending Mtrace2 Query . . . . . . . . . . . . . . . . . . 29 | |||
10.6. Broken Intermediate Router . . . . . . . . . . . . . . . . 28 | 10.1.1. Destination Address . . . . . . . . . . . . . . . . . 29 | |||
10.7. Mtrace2 Termination . . . . . . . . . . . . . . . . . . . 28 | 10.1.2. Source Address . . . . . . . . . . . . . . . . . . . . 29 | |||
10.7.1. Arriving at source . . . . . . . . . . . . . . . . . . 28 | 10.2. Determining the Path . . . . . . . . . . . . . . . . . . . 29 | |||
10.7.2. Fatal error . . . . . . . . . . . . . . . . . . . . . 28 | 10.3. Collecting Statistics . . . . . . . . . . . . . . . . . . 29 | |||
10.7.3. No previous hop . . . . . . . . . . . . . . . . . . . 28 | 10.4. Last Hop Router . . . . . . . . . . . . . . . . . . . . . 29 | |||
10.7.4. Traceroute shorter than requested . . . . . . . . . . 28 | 10.5. First Hop Router . . . . . . . . . . . . . . . . . . . . . 30 | |||
10.8. Continuing after an error . . . . . . . . . . . . . . . . 29 | 10.6. Broken Intermediate Router . . . . . . . . . . . . . . . . 30 | |||
11. Protocol-Specific Considerations . . . . . . . . . . . . . . . 30 | 10.7. Mtrace2 Termination . . . . . . . . . . . . . . . . . . . 30 | |||
11.1. PIM-SM . . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 10.7.1. Arriving at source . . . . . . . . . . . . . . . . . . 30 | |||
11.2. Bi-Directional PIM . . . . . . . . . . . . . . . . . . . . 30 | 10.7.2. Fatal error . . . . . . . . . . . . . . . . . . . . . 30 | |||
11.3. PIM-DM . . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 10.7.3. No previous hop . . . . . . . . . . . . . . . . . . . 30 | |||
11.4. IGMP/MLD Proxy . . . . . . . . . . . . . . . . . . . . . . 30 | 10.7.4. Traceroute shorter than requested . . . . . . . . . . 30 | |||
11.5. AMT . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 | 10.8. Continuing after an error . . . . . . . . . . . . . . . . 31 | |||
12. Problem Diagnosis . . . . . . . . . . . . . . . . . . . . . . 32 | 11. Protocol-Specific Considerations . . . . . . . . . . . . . . . 32 | |||
12.1. Forwarding Inconsistencies . . . . . . . . . . . . . . . . 32 | 11.1. PIM-SM . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
12.2. TTL or Hop Limit Problems . . . . . . . . . . . . . . . . 32 | 11.2. Bi-Directional PIM . . . . . . . . . . . . . . . . . . . . 32 | |||
12.3. Packet Loss . . . . . . . . . . . . . . . . . . . . . . . 32 | 11.3. PIM-DM . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
12.4. Link Utilization . . . . . . . . . . . . . . . . . . . . . 33 | 11.4. IGMP/MLD Proxy . . . . . . . . . . . . . . . . . . . . . . 32 | |||
12.5. Time Delay . . . . . . . . . . . . . . . . . . . . . . . . 33 | 11.5. AMT . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | 12. Problem Diagnosis . . . . . . . . . . . . . . . . . . . . . . 34 | |||
13.1. Forwarding Codes . . . . . . . . . . . . . . . . . . . . . 34 | 12.1. Forwarding Inconsistencies . . . . . . . . . . . . . . . . 34 | |||
13.2. UDP Destination Port and IPv6 Address . . . . . . . . . . 34 | 12.2. TTL or Hop Limit Problems . . . . . . . . . . . . . . . . 34 | |||
14. Security Considerations . . . . . . . . . . . . . . . . . . . 35 | 12.3. Packet Loss . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
14.1. Topology Discovery . . . . . . . . . . . . . . . . . . . . 35 | 12.4. Link Utilization . . . . . . . . . . . . . . . . . . . . . 35 | |||
14.2. Traffic Rates . . . . . . . . . . . . . . . . . . . . . . 35 | 12.5. Time Delay . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
14.3. Limiting Query/Request Rates . . . . . . . . . . . . . . . 35 | 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 | |||
15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 36 | 13.1. Forwarding Codes . . . . . . . . . . . . . . . . . . . . . 36 | |||
16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 37 | 13.2. UDP Destination Port and IPv6 Address . . . . . . . . . . 36 | |||
16.1. Normative References . . . . . . . . . . . . . . . . . . . 37 | 14. Security Considerations . . . . . . . . . . . . . . . . . . . 37 | |||
16.2. Informative References . . . . . . . . . . . . . . . . . . 37 | 14.1. Topology Discovery . . . . . . . . . . . . . . . . . . . . 37 | |||
14.2. Traffic Rates . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 39 | 14.3. Limiting Query/Request Rates . . . . . . . . . . . . . . . 37 | |||
15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 38 | ||||
16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | ||||
16.1. Normative References . . . . . . . . . . . . . . . . . . . 39 | ||||
16.2. Informative References . . . . . . . . . . . . . . . . . . 39 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 41 | ||||
1. Introduction | 1. Introduction | |||
This document specifies the multicast traceroute facility named | This document specifies the multicast traceroute facility named | |||
mtrace version 2 or mtrace2. Mtrace2 allows the tracing of an IP | mtrace version 2 or mtrace2. Mtrace2 allows the tracing of an IP | |||
multicast routing paths. Mtrace2 provides additional information | multicast routing paths. Mtrace2 provides additional information | |||
about packet rates and losses, or other diagnosis information. For | about packet rates and losses, or other diagnosis information. For | |||
instance, mtrace2 is used for the following purposes. | instance, mtrace2 is used for the following purposes. | |||
o To trace the path that a packet would take from some source to | o To trace the path that a packet would take from some source to | |||
some destination. | some destination. | |||
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., TTL threshold). | |||
Mtrace2 consists of the client and router programs. The mtrace2 | Mtrace2 consists of the client and router programs. The mtrace2 | |||
client program is invoked from somewhere in the multicast tree, on a | client program is invoked from somewhere in the multicast tree, on a | |||
host, router, or proxy such as IGMP/MLD proxy Section 9.5. The node | host, router, or proxy such as IGMP/MLD proxy [8]. The node invoking | |||
invoking the program is called the mtrace2 client. | the program is called the mtrace2 client. | |||
The mtrace2 client program creates the mtrace2 Query message, which | The mtrace2 client program creates the mtrace2 Query message, which | |||
includes a source and multicast address specified by the client, and | includes a source and multicast address specified by the client, and | |||
forwards the message to its neighbor router or proxy. This initiates | forwards the message to its neighbor router or proxy. This initiates | |||
a trace of a multicast routing path from the client toward the | a trace of a multicast routing path from the client toward the | |||
specified source, or if no source address is specified, toward a core | specified source, or if no source address is specified, toward a core | |||
router. In the case of PIM-SM [6], the core router is an RP | router if such a router exists. In the case of PIM-SM [6], the core | |||
maintaining the specified multicast address. | router is an RP maintaining the specified multicast address. | |||
When a router or proxy receives an mtrace2 Query message and has the | When a router or proxy receives an mtrace2 Query message and has the | |||
corresponding routing state regarding the source and multicast | corresponding routing state regarding the source and multicast | |||
addresses specified in the Query, the router or proxy invokes the | addresses specified in the Query, the router or proxy invokes the | |||
mtrace2 router program. The mtrace2 router program creates an | mtrace2 router program. The mtrace2 router program creates an | |||
mtrace2 Request message corresponding to the query and forwards the | mtrace2 Request message corresponding to the query and forwards the | |||
Request toward the specified source or the core router. | Request toward the specified source or the core router. | |||
When a first-hop router or proxy (a single hop from the source | When a first-hop router or proxy (a single hop from the source | |||
specified in the request) or the core router receives an mtrace2 | specified in the request) or the core router receives an mtrace2 | |||
Query or Request message, the router or proxy invokes the mtrace2 | Query or Request message, the router or proxy invokes the mtrace2 | |||
router program. The mtrace2 router program creates an mtrace2 | router program. The mtrace2 router program creates an mtrace2 Reply | |||
Response message. The Response message is forwarded to the mtrace2 | message. The Reply message is forwarded to the mtrace2 client, thus | |||
client, thus completing the mtrace2 request. | completing the mtrace2 Request. | |||
The mtrace2 client program waits for the mtrace2 Response message and | The mtrace2 client program waits for the mtrace2 Reply message and | |||
displays the results. When an mtrace2 Response message does not come | displays the results. When an mtrace2 Reply message does not come | |||
due to network congestion, a broken router (see Section 10.6) or a | due to network congestion, a broken router (see Section 10.6) or a | |||
non-responding router (see Section 10.8), the mtrace2 client program | non-responding router (see Section 10.8), the mtrace2 client program | |||
can resend an mtrace2 Query with the lower hop count and repeat the | can resend an mtrace2 Query with a lower hop count (see Section 5.1) | |||
process until it receives an mtrace2 Response message. | and repeat the process until it receives an mtrace2 Reply message. | |||
The mtrace2 client should also be aware that the mtrace2 Query may | The mtrace2 client should also be aware that the mtrace2 Query may | |||
follow the control path on the routers. It happens when the last-hop | follow the control path on the routers, in the case of a router's | |||
or intermediate router's control plane and forwarding plane are not | control plane and forwarding plane are not synchronized, e.g., a | |||
synchronized. In this case, mtrace2 Requests will be forwarded | buggy implementation. In this case, mtrace2 Requests will be | |||
toward the specified source or the core router because the router | forwarded toward the specified source or the core router because the | |||
does not have any forwarding state for the query. | router does not have any forwarding state for the query. | |||
The mtrace2 supports both IPv4 and IPv6 multicast traceroute | The mtrace2 supports both IPv4 and IPv6 multicast traceroute | |||
facility. The protocol design, concept, and program behavior are | facility. The protocol design, concept, and program behavior are | |||
same between IPv4 and IPv6 mtrace2. While the original IPv4 | same between IPv4 and IPv6 mtrace2. While the original IPv4 | |||
multicast traceroute, mtrace, the query and response messages are | multicast traceroute, mtrace, the query and response messages are | |||
implemented as IGMP messages [10], all mtrace2 messages are carried | implemented as IGMP messages [10], all mtrace2 messages are carried | |||
on UDP. The packet formats of IPv4 and IPv6 mtrace2 are different | on UDP. The packet formats of IPv4 and IPv6 mtrace2 are different | |||
because of the different address families, but the syntax is similar. | because of the different address families, but the syntax is similar. | |||
2. Terminology | 2. Terminology | |||
skipping to change at page 8, line 22 | skipping to change at page 8, line 22 | |||
data flow, we refer to "upstream" and "downstream" with respect to | data flow, we refer to "upstream" and "downstream" with respect to | |||
data, unless explicitly specified. | data, unless explicitly specified. | |||
Incoming interface: | Incoming interface: | |||
The interface on which traffic is expected from the specified source | The interface on which traffic is expected from the specified source | |||
and group. | and group. | |||
Outgoing interface: | Outgoing interface: | |||
The interface on which traffic is forwarded from the specified source | The interface on which traffic is forwarded from the specified source | |||
and group toward the destination. It is the interface on which the | and group toward the destination. It is the interface on which the | |||
multicast traceroute Request was received. | mtrace2 Query or Request was received. | |||
Previous-hop router: | Previous-hop router: | |||
The router that is on the link attached to the Incoming Interface and | The router that is on the link attached to the Incoming interface and | |||
is responsible for forwarding traffic for the specified source and | is responsible for forwarding traffic for the specified source and | |||
group. | group. | |||
Last-hop router: | ||||
The router that is on the link attached to the Outgoing interface and | ||||
receives the mtrace2 Query from the adjacent mtrace2 client. | ||||
Group state: | Group state: | |||
It is the state in which a shared-tree protocol (e.g., PIM-SM [6]) | It is the state in which a shared-tree protocol (e.g., PIM-SM [6]) | |||
running on a router chooses the previous-hop router toward the core | running on a router chooses the previous-hop router toward the core | |||
router or Rendezvous Point (RP) as its parent router. In this state, | router or Rendezvous Point (RP) as its parent router. In this state, | |||
source-specific state is not available for the corresponding | source-specific state is not available for the corresponding | |||
multicast address on the router. | multicast address on the router. | |||
Source-specific state: | Source-specific state: | |||
It is the state in which a routing protocol running on a router | It is the state in which a routing protocol running on a router | |||
chooses the path that would be followed for a source-specific join. | chooses the path that would be followed for a source-specific join. | |||
ALL-[protocol]-ROUTERS.MCAST.NET: | ALL-[protocol]-ROUTERS.MCAST.NET: | |||
It is a dedicated multicast address for a multicast router to | It is a dedicated multicast address for a multicast router to | |||
communicate with other routers that are working with the same routing | communicate with other routers that are working with the same routing | |||
protocol. For instance,the address of ALL-PIM-ROUTERS.MCAST.NET is | protocol. For instance, the address of ALL-PIM-ROUTERS.MCAST.NET [6] | |||
'224.0.0.13' for IPv4 and 'ff02::d' for IPv6. | is '224.0.0.13' for IPv4 and 'ff02::d' for IPv6. | |||
3. Overview | 3. Overview | |||
Given a multicast distribution tree, tracing from a source to a | Given a multicast distribution tree, tracing from a source to a | |||
multicast destination is hard, since you don't know down which branch | multicast destination is hard, since you do not know down which | |||
of the multicast tree the destination lies. This means that you have | branch of the multicast tree the destination lies. This means that | |||
to flood the whole tree to find the path from one source to one | you have to flood the whole tree to find the path from one source to | |||
destination. However, walking up the tree from destination to source | one destination. However, walking up the tree from destination to | |||
is easy, as most existing multicast routing protocols know the | source is easy, as most existing multicast routing protocols know the | |||
previous hop for each source. Tracing from destination to source can | previous hop for each source. Tracing from destination to source can | |||
involve only routers on the direct path. | involve only routers on the direct path. | |||
The party requesting the traceroute sends a traceroute Query packet | The party requesting the multicast traceroute sends a traceroute | |||
to the last-hop multicast router for the given multicast address. | Query packet to the last-hop multicast router for the given multicast | |||
The last-hop router turns the Query into a Request packet by adding a | address. The last-hop router turns the Query into a Request packet | |||
response data block containing its interface addresses and packet | by changing the packet type and adding a response data block | |||
statistics, and then forwards the Request packet via unicast to the | containing its interface addresses and packet statistics, and then | |||
router that it believes is the proper previous hop for the given | forwards the Request packet via unicast to the router that the last- | |||
source and group. Each hop adds its response data to the end of the | hop router believes is the proper previous hop for the given source | |||
Request packet, then unicast forwards it to the previous hop. The | and group. Each hop adds its response data to the end of the Request | |||
first-hop router (the router that believes that packets from the | packet, then unicast forwards it to the previous hop. The first-hop | |||
source originate on one of its directly connected networks) changes | router (the router that believes that packets from the source | |||
the packet type to indicate a Response packet and sends the completed | originate on one of its directly connected networks) changes the | |||
response to the response destination address. The response may be | packet type to indicate a Reply packet and sends the completed Reply | |||
returned before reaching the first-hop router if a fatal error | to the mtrace2 client address specified in the Query header. The | |||
condition such as "no route" is encountered along the path. | Reply may be returned before reaching the first-hop router if a fatal | |||
error condition such as "no route" is encountered along the path or | ||||
hop count is exceeded. | ||||
Multicast traceroute uses any information available to it in the | Multicast traceroute uses any information available to it in the | |||
router to attempt to determine a previous hop to forward the trace | router to attempt to determine a previous hop to forward the trace | |||
towards. Multicast routing protocols vary in the type and amount of | towards. Multicast routing protocols vary in the type and amount of | |||
state they keep; multicast traceroute endeavors to work with all of | state they keep; multicast traceroute endeavors to work with all of | |||
them by using whatever is available. For example, if a PIM-SM router | them by using whatever is available. For example, if a PIM-SM router | |||
is on the (*,G) tree, it chooses the parent towards the RP as the | is on the (*,G) tree, it chooses the parent towards the RP as the | |||
previous hop. In these cases, no source/group-specific state is | previous hop. In these cases, no source/group-specific state is | |||
available, but the path may still be traced. | available, but the path may still be traced. | |||
4. Packet Formats | 4. Packet Formats | |||
The mtrace2 message is carried as a UDP packet. The destination | ||||
address of mtrace2 Query messages is either the last-hop router | ||||
unicast address or multicast address if the mtrace2 client does not | ||||
know the proper last-hop router address. The destination address of | ||||
mtrace2 Report messages is the address specified in Previous-Hop | ||||
Router Address field in the last appended mtrace2 Standard Response | ||||
Block, which is either the previous-hop router unicast address or | ||||
multicast address. Detailed in Section 9.3. | ||||
Mtrace2 message is encoded in TLV format. If an implementation | Mtrace2 message is encoded in TLV format. If an implementation | |||
receives a TLV whose length exceeds the TLV length specified in the | receives a TLV whose length exceeds the TLV length specified in the | |||
Length field, the TLV SHOULD be accepted but any additional data | Length field, the TLV SHOULD be accepted but any additional data | |||
SHOULD be ignored. | SHOULD be ignored. If an implementation receives a TLV whose type | |||
value is unknown, the mtrace2 message SHOULD be ignored and silently | ||||
dropped. | ||||
4.1. Mtrace2 TLV format | 4.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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Length | Value .... | | | Type | Length | Value .... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Type (8 bits) | Type (8 bits) | |||
skipping to change at page 10, line 34 | skipping to change at page 10, line 45 | |||
Value (variable length) | Value (variable length) | |||
4.2. Defined TLVs | 4.2. Defined TLVs | |||
The following TLV Types are defined: | The following TLV Types are defined: | |||
Code Type | Code Type | |||
====== ====================================== | ====== ====================================== | |||
1 Mtrace2 Query | 1 Mtrace2 Query | |||
2 Mtrace2 Request | 2 Mtrace2 Request | |||
3 Mtrace2 Response | 3 Mtrace2 Reply | |||
4 Mtrace2 Standard Response Block | 4 Mtrace2 Standard Response Block | |||
5 Mtrace2 Augmented Response Block | 5 Mtrace2 Augmented Response Block | |||
An mtrace2 message MUST contain one Mtrace2 Query header. A | An mtrace2 message MUST contain exactly one Mtrace2 Query header. A | |||
multicast router that sends an mtrace2 Request or Response message | multicast router that sends an mtrace2 Request or Reply message MUST | |||
MAY add one mtrace2 Standard Response block to given mtrace2 message | add one mtrace2 Standard Response block to given mtrace2 message but | |||
but MUST NOT add multiple mtrace2 Standard Response blocks to it. A | MUST NOT add multiple mtrace2 Standard Response blocks to it. A | |||
multicast router that adds one mtrace2 Standard Response block to | multicast router that adds one mtrace2 Standard Response block to | |||
given mtrace2 message MAY append one or multiple Augmented Response | given mtrace2 message MAY append one or multiple Augmented Response | |||
blocks. | blocks. | |||
The type field is defined to be "0x1" and "0x2" for mtrace2 Queries | The TLV type field is defined to be "0x1" and "0x2" for mtrace2 | |||
and Requests, respectively. The type field is changed to "0x3" when | Queries and Requests, respectively. An mtrace2 message containing | |||
the packet is completed and sent as a response from the first-hop | the type "0x1" is an mtrace2 Query. It is sent by an mtrace2 querier | |||
router to the querier. | (i.e., an mtrace2 client). It is changed to "0x2" by the proper | |||
last-hop router. The type field is changed to "0x3" when the packet | ||||
is completed and sent as an mtrace2 Reply from the first-hop router | ||||
to the querier. | ||||
5. Mtrace2 Query Header | 5. Mtrace2 Query Header | |||
The mtrace2 supports both IPv4 and IPv6. If the mtrace2 Query or | ||||
Reply arrives in an IPv4 packet, all addresses specified in the | ||||
mtrace2 messages must be with IPv4 addresses. | ||||
The mtrace2 message is carried as a UDP packet. The UDP source port | The mtrace2 message is carried as a UDP packet. The UDP source port | |||
is uniquely selected by the local host operating system. The UDP | is uniquely selected by the local host operating system. The UDP | |||
destination port is the IANA reserved mtrace2 port number (see | destination port is the IANA reserved mtrace2 port number (see | |||
Section 13). The UDP checksum MUST be valid in mtrace2 messages. | Section 13). The UDP checksum MUST be valid in mtrace2 messages. | |||
The mtrace2 message includes the common mtrace2 Query header as | The mtrace2 message includes the common mtrace2 Query header as | |||
follows. The header is only filled in by the originator of the | follows. The header is only filled in by the originator of the | |||
mtrace2 Query; intermediate routers MUST NOT modify any of the | mtrace2 Query; intermediate routers MUST NOT modify any of the | |||
fields. | fields. | |||
skipping to change at page 11, line 31 | skipping to change at page 12, line 35 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
| Multicast Address | | | Multicast Address | | |||
| | | | | | |||
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | |||
| | | | | | |||
| Source Address | | | Source Address | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
| Destination Address | | | Mtrace2 Client Address | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Query ID | Client Port # | | | Query ID | Client Port # | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 1 | Figure 1 | |||
5.1. # hops: 8 bits | 5.1. # hops: 8 bits | |||
This field specifies the maximum number of hops that the mtrace2 | This field specifies the maximum number of hops that the mtrace2 | |||
client wants to trace. If there is some error condition in the | client wants to trace. If there is some error condition in the | |||
middle of the path that keeps the mtrace2 request from reaching the | middle of the path that prevents an mtrace2 Reply from being received | |||
first-hop router, this field can be used to perform an expanding-ring | by the client, the client issues another mtrace2 Query with the lower | |||
search to trace the path to just before the problem. | number of hops until it receives a Reply from the first-hop router. | |||
5.2. Multicast Address | 5.2. Multicast Address | |||
This field specifies the 32 bits length IPv4 or 128 bits length IPv6 | This field specifies the 32 bits length IPv4 or 128 bits length IPv6 | |||
multicast address to be traced, or is filled with "all 1" in case of | multicast address to be traced, or is filled with "all 1" in case of | |||
IPv4 or with the unspecified address (::) in case of IPv6 if no | IPv4 or with the unspecified address (::) in case of IPv6 if no | |||
group-specific information is desired. Note that non-group-specific | group-specific information is desired. Note that non-group-specific | |||
mtrace2 MUST specify source address. | mtrace2 MUST specify source address. | |||
5.3. Source Address | 5.3. Source Address | |||
This field specifies the 32 bits length IPv4 or 128 bits length IPv6 | This field specifies the 32 bits length IPv4 or 128 bits length IPv6 | |||
address of the multicast source for the path being traced, or is | address of the multicast source for the path being traced, or is | |||
filled with "all 1" in case of IPv4 or with the unspecified address | filled with "all 1" in case of IPv4 or with the unspecified address | |||
(::) in case of IPv6 if no source-specific information such as a | (::) in case of IPv6 if no source-specific information such as a | |||
trace for RPT in PIM-SM is desired. Note that non-source-specific | trace for RPT in PIM-SM is desired. Note that non-source-specific | |||
traceroutes may not be possible with certain multicast routing | traceroutes may not be possible with certain multicast routing | |||
protocols. | protocols. | |||
5.4. Destination Address | 5.4. Mtrace2 Client Address | |||
This field specifies the 32 bits length IPv4 or 128 bits length IPv6 | This field specifies the 32 bits length IPv4 or 128 bits length IPv6 | |||
address of the mtrace2 client. The trace starts at this destination | global address of the mtrace2 client. The trace starts at this | |||
and proceeds toward the traffic source. | client address and proceeds toward the traffic source. | |||
5.5. Query ID: 16 bits | 5.5. Query ID: 16 bits | |||
This field is used as a unique identifier for this traceroute request | This field is used as a unique identifier for this mtrace2 Request so | |||
so that duplicate or delayed responses may be detected. | that duplicate or delayed Replies may be detected. | |||
5.6. Client Port # | 5.6. Client Port # | |||
Mtrace2 response is sent back to the address specified in a | Mtrace2 Reply is sent back to the address specified in an Mtrace2 | |||
Destination Address field. This field specifies the UDP port number | Client Address field. This field specifies the UDP port number the | |||
the router will send Mtrace2 Response. This client port number MUST | router will send Mtrace2 Reply. This client port number MUST NOT be | |||
NOT be changed by any router. | changed by any router. | |||
6. IPv4 Mtrace2 Standard Response Block | 6. IPv4 Mtrace2 Standard Response Block | |||
Each intermediate IPv4 router in a trace path appends "response data | Each intermediate IPv4 router in a trace path appends "response data | |||
block" to the forwarded trace packet. The standard response data | block" to the forwarded trace packet. The standard response data | |||
block looks as follows. | block looks as follows. | |||
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 13, line 48 | skipping to change at page 14, line 48 | |||
| Fwd TTL | MBZ |S| Src Mask |Forwarding Code| | | Fwd TTL | MBZ |S| Src Mask |Forwarding Code| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
6.1. MBZ: 8 bit | 6.1. MBZ: 8 bit | |||
Must be zeroed on transmission and ignored on reception. | Must be zeroed on transmission and ignored on reception. | |||
6.2. Query Arrival Time: 32 bits | 6.2. 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 NTP timestamp specifying the | |||
arrival time of the traceroute request packet at this router. The | arrival time of the mtrace2 Request packet at this router. The 32- | |||
32-bit form of an NTP timestamp consists of the middle 32 bits of the | bit form of an NTP timestamp consists of the middle 32 bits of the | |||
full 64-bit form; that is, the low 16 bits of the integer part and | full 64-bit form; that is, the low 16 bits of the integer part and | |||
the high 16 bits of the fractional part. | 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 UNIX timeval to a 32-bit NTP | |||
timestamp: | timestamp: | |||
query_arrival_time | query_arrival_time | |||
= (tv.tv_sec + 32384) << 16 + ((tv.tv_usec << 10) / 15625) | = (tv.tv_sec + 32384) << 16 + ((tv.tv_usec << 10) / 15625) | |||
The constant 32384 is the number of seconds from Jan 1, 1900 to Jan | The constant 32384 is the number of seconds from Jan 1, 1900 to Jan | |||
1, 1970 truncated to 16 bits. ((tv.tv_usec << 10) / 15625) is a | 1, 1970 truncated to 16 bits. ((tv.tv_usec << 10) / 15625) is a | |||
reduction of ((tv.tv_usec / 100000000) << 16). | reduction of ((tv.tv_usec / 100000000) << 16). | |||
However, mtrace2 does not require synchronizing NTP timestamp among | ||||
all routers along paths to measure one-way latency. The use of Query | ||||
Arrival Time is useful to measure the packets per second (PPS). | ||||
Suppose that a client issues two queries Q1 and Q2, and the | ||||
corresponding requests R1 and R2 arrive at router X at t1 and t2, | ||||
then the client would be able to calculate the PPS at router X by | ||||
using the packet count results at t1 and t2. | ||||
6.3. Incoming Interface Address: 32 bits | 6.3. Incoming Interface Address: 32 bits | |||
This field specifies the address of the interface on which packets | This field specifies the address of the interface on which packets | |||
from this source and group are expected to arrive, or 0 if unknown or | from this source and group are expected to arrive, or 0 if unknown or | |||
unnumbered. | unnumbered. | |||
6.4. Outgoing Interface Address: 32 bits | 6.4. Outgoing Interface Address: 32 bits | |||
This field specifies the address of the interface on which packets | This field specifies the address of the interface on which packets | |||
from this source and group flow to the specified destination, or 0 if | from this source and group flow to the specified destination, or 0 if | |||
skipping to change at page 14, line 43 | skipping to change at page 16, line 5 | |||
it should be 0 if the incoming interface address is unknown or | it should be 0 if the incoming interface address is unknown or | |||
unnumbered. | unnumbered. | |||
6.6. Input packet count on incoming interface: 64 bits | 6.6. Input packet count on incoming interface: 64 bits | |||
This field contains the number of multicast packets received for all | This field contains the number of multicast packets received for all | |||
groups and sources on the incoming interface, or "all 1" if no count | groups and sources on the incoming interface, or "all 1" if no count | |||
can be reported. This counter may have the same value as | can be reported. This counter may have the same value as | |||
ifHCInMulticastPkts from the IF-MIB [12] for this interface. | ifHCInMulticastPkts from the IF-MIB [12] for this interface. | |||
6.7. Output packet count on incoming interface: 64 bits | 6.7. Output packet count on outgoing interface: 64 bits | |||
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 on | transmitted or queued for transmission for all groups and sources on | |||
the outgoing interface, or "all 1" if no count can be reported. This | the outgoing interface, or "all 1" if no count can be reported. This | |||
counter may have the same value as ifHCOutMulticastPkts from the IF- | counter may have the same value as ifHCOutMulticastPkts from the IF- | |||
MIB for this interface. | MIB for this interface. | |||
6.8. Total number of packets for this source-group pair: 64 bits | 6.8. 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 | |||
skipping to change at page 15, line 21 | skipping to change at page 16, line 29 | |||
set and the Src Mask field is 63, indicating no source-specific | set and the Src Mask field is 63, indicating no source-specific | |||
state, the count is for all sources sending to this group. This | state, the count is for all sources sending to this group. This | |||
counter should have the same value as ipMcastRoutePkts from the | counter should have the same value as ipMcastRoutePkts from the | |||
IPMROUTE-STD-MIB [13] for this forwarding entry. | IPMROUTE-STD-MIB [13] for this forwarding entry. | |||
6.9. Rtg Protocol: 16 bits | 6.9. Rtg Protocol: 16 bits | |||
This field describes the routing protocol used to decide an RPF | This field describes the routing protocol used to decide an RPF | |||
interface for the requested source. This value should have the same | interface for the requested source. This value should have the same | |||
value as ipMcastRouteRtProtocol from the IPMROUTE-STD-MIB [13] for | value as ipMcastRouteRtProtocol from the IPMROUTE-STD-MIB [13] for | |||
this entry. If the router does not able to obtain this value, "all | this entry. If the router is not able to obtain this value, "all 0" | |||
0" must be specified. | must be specified. | |||
6.10. Multicast Rtg Protocol: 16 bits | 6.10. 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 | |||
this router and the previous-hop router. This value should have the | this router and the previous-hop router. This value should have the | |||
same value as ipMcastRouteProtocol from the IPMROUTE-STD-MIB [13] for | same value as ipMcastRouteProtocol from the IPMROUTE-STD-MIB [13] for | |||
this entry. If the router does not able to obtain this value, "all | this entry. If the router does not able to obtain this value, "all | |||
0" must be specified. | 0" must be specified. | |||
6.11. Fwd TTL: 8 bits | 6.11. Fwd TTL: 8 bits | |||
skipping to change at page 16, line 17 | skipping to change at page 17, line 24 | |||
This field contains a forwarding information/error code. Section 9.2 | This field contains a forwarding information/error code. Section 9.2 | |||
explains how and when the forwarding code is filled. Defined values | explains how and when the forwarding code is filled. Defined values | |||
are as follows; | are as follows; | |||
Value Name Description | Value Name Description | |||
----- -------------- ------------------------------------------- | ----- -------------- ------------------------------------------- | |||
0x00 NO_ERROR No error | 0x00 NO_ERROR No error | |||
0x01 WRONG_IF Mtrace2 request arrived on an interface | 0x01 WRONG_IF Mtrace2 Request arrived on an interface | |||
to which this router would not forward for | to which this router would not forward for | |||
this source, group, destination. | this source, group, destination. | |||
0x02 PRUNE_SENT This router has sent a prune upstream which | 0x02 PRUNE_SENT This router has sent a prune upstream which | |||
applies to the source and group in the | applies to the source and group in the | |||
traceroute request. | mtrace2 Request. | |||
0x03 PRUNE_RCVD This router has stopped forwarding for this | 0x03 PRUNE_RCVD This router has stopped forwarding for this | |||
source and group in response to a request | source and group in response to a request | |||
from the next hop router. | from the next hop router. | |||
0x04 SCOPED The group is subject to administrative | 0x04 SCOPED The group is subject to administrative | |||
scoping at this hop. | scoping at this hop. | |||
0x05 NO_ROUTE This router has no route for the source or | 0x05 NO_ROUTE This router has no route for the source or | |||
group and no way to determine a potential | group and no way to determine a potential | |||
skipping to change at page 16, line 45 | skipping to change at page 17, line 52 | |||
0x06 WRONG_LAST_HOP This router is not the proper last-hop | 0x06 WRONG_LAST_HOP This router is not the proper last-hop | |||
router. | router. | |||
0x07 NOT_FORWARDING This router is not forwarding this source, | 0x07 NOT_FORWARDING This router is not forwarding this source, | |||
group out the outgoing interface for an | group out the outgoing interface for an | |||
unspecified reason. | unspecified reason. | |||
0x08 REACHED_RP Reached Rendezvous Point or Core | 0x08 REACHED_RP Reached Rendezvous Point or Core | |||
0x09 RPF_IF Mtrace2 request arrived on the expected | 0x09 RPF_IF Mtrace2 Request arrived on the expected | |||
RPF interface for this source and group. | RPF interface for this source and group. | |||
0x0A NO_MULTICAST Mtrace2 request arrived on an interface | 0x0A NO_MULTICAST Mtrace2 Request arrived on an interface | |||
which is not enabled for multicast. | which is not enabled for multicast. | |||
0x0B INFO_HIDDEN One or more hops have been hidden from this | 0x0B INFO_HIDDEN One or more hops have been hidden from this | |||
trace. | trace. | |||
0x0C REACHED_GW Mtrace2 request arrived on a gateway (e.g., | 0x0C REACHED_GW Mtrace2 Request arrived on a gateway (e.g., | |||
a NAT or firewall) that hides the | a NAT or firewall) that hides the | |||
information between this router and the | information between this router and the | |||
mtrace2 querier | mtrace2 querier | |||
0x81 NO_SPACE There was not enough room to insert another | 0x81 NO_SPACE There was not enough room to insert another | |||
response data block in the packet. | response data block in the packet. | |||
0x82 OLD_ROUTER The previous-hop router does not understand | 0x82 ADMIN_PROHIB Mtrace2 is administratively prohibited. | |||
mtrace2 requests. | ||||
0x83 ADMIN_PROHIB Mtrace2 is administratively prohibited. | ||||
Note that if a router discovers there is not enough room in a packet | Note that if a router discovers there is not enough room in a packet | |||
to insert its response, it puts the NO_SPACE error code in the | to insert its response, it puts the NO_SPACE code value in the | |||
previous router's Forwarding Code field, overwriting any error the | previous router's Forwarding Code field, overwriting any error the | |||
previous router placed there. After the router sends the response to | previous router placed there. After the router sends the Reply to | |||
the Destination Address in the header, the router continues the | the Mtrace2 Client Address in the header, the router continues the | |||
mtrace2 query by sending an mtrace2 request containing the same | mtrace2 Query by sending an mtrace2 Request containing the same | |||
mtrace2 Query header. Section 9.3 and Section 10.8 include the | mtrace2 Query header. Section 9.3 and Section 10.8 include the | |||
details. | details. | |||
The 0x80 bit of the Forwarding Code is used to indicate a fatal | The 0x80 bit of the Forwarding Code is used to indicate a fatal | |||
error. A fatal error is one where the router may know the previous | error. A fatal error is one where the router may know the previous | |||
hop but cannot forward the message to it. | hop but cannot forward the message to it. | |||
7. IPv6 Mtrace2 Standard Response Block | 7. IPv6 Mtrace2 Standard Response Block | |||
Each intermediate IPv6 router in a trace path appends "response data | Each intermediate IPv6 router in a trace path appends "response data | |||
skipping to change at page 20, line 5 | skipping to change at page 21, line 5 | |||
This may be a multicast group (e.g., ALL-[protocol]- | This may be a multicast group (e.g., ALL-[protocol]- | |||
ROUTERS.MCAST.NET) if the previous hop is not known because of the | ROUTERS.MCAST.NET) if the previous hop is not known because of the | |||
workings of the multicast routing protocol. However, it should be | workings of the multicast routing protocol. However, it should be | |||
the unspecified address (::) if the incoming interface address is | the unspecified address (::) if the incoming interface address is | |||
unknown. | unknown. | |||
7.7. Input packet count on incoming interface | 7.7. Input packet count on incoming interface | |||
Same definition described in Section 6.6 | Same definition described in Section 6.6 | |||
7.8. Output packet count on incoming interface | 7.8. Output packet count on outgoing interface | |||
Same definition described in Section 6.7 | Same definition described in Section 6.7 | |||
7.9. Total number of packets for this source-group pair | 7.9. Total number of packets for this source-group pair | |||
This field counts the number of packets from the specified source | This field counts the number of packets from the specified source | |||
forwarded by this router to the specified group, or "all 1" if no | forwarded by this router to the specified group, or "all 1" if no | |||
count can be reported. If the S bit is set, the count is for the | count can be reported. If the S bit is set, the count is for the | |||
source network, as specified by the Src Prefix Len field. If the S | source network, as specified by the Src Prefix Len field. If the S | |||
bit is set and the Src Prefix Len field is 255, indicating no source- | bit is set and the Src Prefix Len field is 255, indicating no source- | |||
skipping to change at page 21, line 9 | skipping to change at page 22, line 9 | |||
to 255 (0xff) | to 255 (0xff) | |||
7.14. Forwarding Code: 8 bits | 7.14. Forwarding Code: 8 bits | |||
Same definition described in Section 6.14 | Same definition described in Section 6.14 | |||
8. Mtrace2 Augmented Response Block | 8. Mtrace2 Augmented Response Block | |||
In addition to the standard response block, a multicast router on the | In addition to the standard response block, a multicast router on the | |||
path will be able to add "augumented response block" when it sends | path will be able to add "augumented response block" when it sends | |||
the request to its upstream router or sends the response to the | the mtrace2 Request to its upstream router or sends the Reply to the | |||
Destination Address. This augmented response block is flexible to | Mtrace2 Client Address. This augmented response block is flexible to | |||
add various information. | add various information. | |||
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 | |||
+-+-+-+-+-+-+-+-+ | ||||
| MBZ | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Value .... | | | Type | Value .... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The augmented response block is always appended to mtrace2 TLV header | The augmented response block is always appended to mtrace2 TLV header | |||
(0x04). The 16 bits Type filed of the augmented response block is | (0x04). The 16 bits Type filed of the augmented response block is | |||
defined for various purposes, such as diagnosis (as in Section 12) | defined for various purposes, such as diagnosis (as in Section 12) | |||
and protocol verification. The packet length of the augmented | and protocol verification. The packet length of the augmented | |||
response block is specified in the augmented response block TLV | response block is specified in the augmented response block TLV | |||
header as seen in Section 4.1. | header as seen in Section 4.1. | |||
The following augmented response block type is defined: | The following augmented response block type is defined: | |||
Code Type | Code Type | |||
====== ================================================= | ====== ================================================= | |||
0x01 # Mtrace2 Standard Response Blocks Returned | 0x01 # Mtrace2 Standard Response Blocks Returned | |||
When the NO_SPACE error occurs, the router sends back the mtrace2 | When the NO_SPACE error occurs, the router sends back the mtrace2 | |||
response with contained data (i.e., all appended response blocks), | Reply with contained data (i.e., all appended response blocks), and | |||
and continues the mtrace2 query by sending an mtrace2 request as will | continues the mtrace2 Query by sending an mtrace2 Request as will be | |||
be described in Section 9.3. In this mtrace2 request, the router | described in Section 9.3. In this mtrace2 Request, the router | |||
appends the augmented response block with the code "0x01" and the | appends the augmented response block with the code "0x01" and the | |||
number of returned mtrace2 response blocks. Every router between | number of returned mtrace2 response blocks. Every router between | |||
this router and the first-hop router can recognize the limit number | this router and the first-hop router can recognize the limit number | |||
of hops by referring this number and the # hops in the header. | of hops by referring this number and the # hops in the header. | |||
This document only defines the above augmented response block type | This document only defines the above augmented response block type | |||
and does not define other augmented response block types. Specifing | and does not define other augmented response block types. Specifing | |||
how to deal with diagnosis information will be also described in | how to deal with diagnosis information will be also described in | |||
separate documents. | separate documents. | |||
9. Router Behavior | 9. Router Behavior | |||
All of these actions are performed in addition to (NOT instead of) | All of these actions are performed in addition to (NOT instead of) | |||
forwarding the packet, if applicable. E.g. a multicast packet that | forwarding the packet, if applicable. E.g. a multicast packet that | |||
has TTL or the hop limit remaining MUST be forwarded normally, as | has TTL or the hop limit remaining MUST be forwarded normally, as | |||
MUST a unicast packet that has TTL or the hop limit remaining and is | MUST a unicast packet that has TTL or the hop limit remaining and is | |||
not addressed to this router. | not addressed to this router. | |||
9.1. Traceroute Query | 9.1. Receiving Mtrace2 Query | |||
An mtrace2 Query message is a traceroute message with no response | An mtrace2 Query message is an mtrace2 message with no response | |||
blocks filled in, and uses TLV type 0x1 for IPv4 and IPv6 mtrace2. | blocks filled in, and uses TLV type 0x1 for IPv4 and IPv6 mtrace2. | |||
9.1.1. Packet Verification | 9.1.1. Packet Verification | |||
Upon receiving an mtrace2 Query message, a router must examine the | Upon receiving an mtrace2 Query message, a router must examine the | |||
Query to see if it is the proper last-hop router for the destination | Query to see if it is the proper last-hop router for the destination | |||
address in the packet. It is the proper last-hop router if it has a | address in the packet. It is the proper last-hop router if it has a | |||
multicast-capable interface on the same subnet as the Destination | multicast-capable interface on the same subnet as the Mtrace2 Client | |||
Address and is the router that would forward traffic from the given | Address and is the router that would forward traffic from the given | |||
(S,G) onto that subnet. | (S,G) or (*,G) onto that subnet. | |||
If the router determines that it is not the proper last-hop router, | If the router determines that it is not the proper last-hop router, | |||
or it cannot make that determination, it does one of two things | or it cannot make that determination, it does one of two things | |||
depending if the Query was received via multicast or unicast. If the | depending if the Query was received via multicast or unicast. If the | |||
Query was received via multicast, then it MUST be silently dropped. | Query was received via multicast, then it MUST be silently dropped. | |||
If it was received via unicast, a forwarding code of WRONG_LAST_HOP | If it was received via unicast, a forwarding code of WRONG_LAST_HOP | |||
is noted and processing continues as in Section 9.2 | is noted and processing continues as in Section 9.2. | |||
Duplicate Query messages as identified by the tuple (IP Source, Query | Duplicate Query messages as identified by the tuple (Mtrace2 Client | |||
ID) SHOULD be ignored. This MAY be implemented using a simple 1-back | Address, Query ID) SHOULD be ignored. This MAY be implemented using | |||
cache (i.e. remembering the IP source and Query ID of the previous | a simple 1-back cache (i.e. remembering the Mtrace2 Client Address | |||
Query message that was processed, and ignoring future messages with | and Query ID of the previous Query message that was processed, and | |||
the same IP Source and Query ID). Duplicate Request messages MUST | ignoring future messages with the same Mtrace2 Client Address and | |||
NOT be ignored in this manner. | Query ID). Duplicate Request messages MUST NOT be ignored in this | |||
manner. | ||||
9.1.2. Normal Processing | 9.1.2. Normal Processing | |||
When a router receives an mtrace2 Query and it determines that it is | When a router receives an mtrace2 Query and it determines that it is | |||
the proper last-hop router, it treats it like an mtrace2 Request and | the proper last-hop router, it it changes the TLV type to 0x2 and | |||
performs the steps listed in Section 9.2 | treats it like an mtrace2 Request and performs the steps listed in | |||
Section 9.2. | ||||
9.2. Mtrace2 Request | 9.1.3. Mtrace2 Query Received by Non-Supported Router | |||
When a router that does not support mtrace2 receives an mtrace2 Query | ||||
message whose destination address is multicast, the router will | ||||
silently discard the message. When the router receives an mtrace2 | ||||
Query message whose destination address is the router's interface | ||||
address, the router returns an ICMP Port unreachable to the Mtrace2 | ||||
Client Address. | ||||
9.2. Receiving Mtrace2 Request | ||||
An mtrace2 Request is a traceroute message with some number of | An mtrace2 Request is a traceroute message with some number of | |||
response blocks filled in, and uses TLV type 0x1 for IPv4 and IPv6 | response blocks filled in, and uses TLV type 0x2 for IPv4 and IPv6 | |||
mtrace2. Routers can tell the difference between Queries and | mtrace2. | |||
Requests by checking the length of the packet. | ||||
9.2.1. Packet Verification | 9.2.1. Packet Verification | |||
If the mtrace2 Request does not come from an adjacent host or router, | If the mtrace2 Request does not come from an adjacent host or router, | |||
it MUST be silently ignored. If the mtrace2 Request is not addressed | it MUST be silently ignored. If the mtrace2 Request is not addressed | |||
to this router, or if the Request is addressed to a multicast group | to this router, or if the Request is addressed to a multicast group | |||
which is not a link-scoped group (i.e. 224/24 for IPv4, FFx2::/16 [3] | which is not a link-scoped group (i.e. 224/24 for IPv4, FFx2::/16 [3] | |||
for IPv6), it MUST be silently ignored. GTSM [14] SHOULD be used by | for IPv6), it MUST be silently ignored. GTSM [14] SHOULD be used by | |||
the router to determine whether the host or router is adjacent or | the router to determine whether the host or router is adjacent or | |||
not. | not. | |||
skipping to change at page 23, line 29 | skipping to change at page 24, line 39 | |||
by the Forwarding Codes. The first one encountered is the one that | by the Forwarding Codes. The first one encountered is the one that | |||
is reported, i.e. all "note forwarding code N" should be interpreted | is reported, i.e. all "note forwarding code N" should be interpreted | |||
as "if forwarding code is not already set, set forwarding code to N". | as "if forwarding code is not already set, set forwarding code to N". | |||
1. If there is room in the current buffer (or the router can | 1. If there is room in the current buffer (or the router can | |||
efficiently allocate more space to use), insert a new response | efficiently allocate more space to use), insert a new response | |||
block into the packet and fill in the Query Arrival Time, | block into the packet and fill in the Query Arrival Time, | |||
Outgoing Interface Address (for IPv4 mtrace2) or Outgoing | Outgoing Interface Address (for IPv4 mtrace2) or Outgoing | |||
Interface ID (for IPv6 mtrace2), Output Packet Count, and Fwd | Interface ID (for IPv6 mtrace2), Output Packet Count, and Fwd | |||
TTL (for IPv4 mtrace2). If there was no room, fill in the | TTL (for IPv4 mtrace2). If there was no room, fill in the | |||
response code "NO_SPACE" in the *previous* hop's response block, | forwarding code "NO_SPACE" in the *previous* hop's response | |||
and forward the packet to the address specified in the | block, and forward the packet to the address specified in the | |||
Destination Address field and continue the trace as described in | Mtrace2 Client Address field and continue the trace as described | |||
Section 9.3. | in Section 9.3. | |||
2. Attempt to determine the forwarding information for the source | 2. Attempt to determine the forwarding information for the source | |||
and group specified, using the same mechanisms as would be used | and group specified, using the same mechanisms as would be used | |||
when a packet is received from the source destined for the | when a packet is received from the source destined for the | |||
group. State need not be instantiated, it can be "phantom" | group. A state need not be instantiated, it can be "phantom" | |||
state created only for the purpose of the trace, such as "dry- | state created only for the purpose of the trace, such as "dry- | |||
run". | run". | |||
If using a shared-tree protocol and there is no source-specific | If using a shared-tree protocol and there is no source-specific | |||
state, or if no source-specific information is desired (i.e., | state, or if no source-specific information is desired (i.e., | |||
"all 1" for IPv4 or unspecified address (::) for IPv6), group | "all 1" for IPv4 or unspecified address (::) for IPv6), group | |||
state should be used. If there is no group state or no group- | state should be used. If there is no group state or no group- | |||
specific information is desired, potential source state (i.e. | specific information is desired, potential source state (i.e., | |||
the path that would be followed for a source-specific Join) | the path that would be followed for a source-specific Join) | |||
should be used. If this router is the Core or RP and no source- | should be used. If this router is the Core or RP and no source- | |||
specific state is available (e.g., this router has been | specific state is available (e.g., this router has been | |||
receiving PIM Register messages from the first-hop router), note | receiving PIM Register messages from the first-hop router), note | |||
a code of REACHED_RP. | a code of REACHED_RP. | |||
3. If no forwarding information can be determined, the router notes | 3. If no forwarding information can be determined, the router notes | |||
an error code of NO_ROUTE, sets the remaining fields that have | a forwarding code of NO_ROUTE, sets the remaining fields that | |||
not yet been filled in to zero, and then forwards the packet to | have not yet been filled in to zero, and then forwards the | |||
the mtrace2 client as described in Section 9.3. | packet to the mtrace2 client as described in Section 9.3. | |||
4. Fill in the Incoming Interface Address, Previous-Hop Router | 4. Fill in the Incoming Interface Address, Previous-Hop Router | |||
Address, Input Packet Count, Total Number of Packets, Routing | Address, Input Packet Count, Total Number of Packets, Routing | |||
Protocol, S, and Src Mask from the forwarding information that | Protocol, S, and Src Mask from the forwarding information that | |||
was determined. | was determined. | |||
5. If mtrace2 is administratively prohibited or the previous hop | 5. If mtrace2 is administratively prohibited, note the appropriate | |||
router does not understand mtrace2 requests, note the | forwarding code (ADMIN_PROHIB). If mtrace2 is administratively | |||
appropriate forwarding code (ADMIN_PROHIB or OLD_ROUTER). If | prohibited and any of the fields as filled in step 4 are | |||
mtrace2 is administratively prohibited and any of the fields as | considered private information, zero out the applicable fields. | |||
filled in step 4 are considered private information, zero out | Then the packet is forwarded to the mtrace2 client as described | |||
the applicable fields. Then the packet is forwarded to the | in Section 9.3. | |||
mtrace2 client as described in Section 9.3. | ||||
6. If the reception interface is not enabled for multicast, note | 6. If the reception interface is not enabled for multicast, note | |||
forwarding code NO_MULTICAST. If the reception interface is the | forwarding code NO_MULTICAST. If the reception interface is the | |||
interface from which the router would expect data to arrive from | interface from which the router would expect data to arrive from | |||
the source, note forwarding code RPF_IF. Otherwise, if the | the source, note forwarding code RPF_IF. Otherwise, if the | |||
reception interface is not one to which the router would forward | reception interface is not one to which the router would forward | |||
data from the source to the group, a forwarding code of WRONG_IF | data from the source to the group, a forwarding code of WRONG_IF | |||
is noted. | is noted. | |||
7. If the group is subject to administrative scoping on either the | 7. If the group is subject to administrative scoping on either the | |||
skipping to change at page 24, line 50 | skipping to change at page 26, line 10 | |||
code PRUNE_SENT. If the router has stopped forwarding | code PRUNE_SENT. If the router has stopped forwarding | |||
downstream in response to a prune sent by the next hop router, | downstream in response to a prune sent by the next hop router, | |||
it notes forwarding code PRUNE_RCVD. If the router should | it notes forwarding code PRUNE_RCVD. If the router should | |||
normally forward traffic for this source and group downstream | normally forward traffic for this source and group downstream | |||
but is not, it notes forwarding code NOT_FORWARDING. | but is not, it notes forwarding code NOT_FORWARDING. | |||
10. If this router is a gateway (e.g., a NAT or firewall) that hides | 10. If this router is a gateway (e.g., a NAT or firewall) that hides | |||
the information between this router and the mtrace2 querier, it | the information between this router and the mtrace2 querier, it | |||
notes forwarding code REACHED_GW. | notes forwarding code REACHED_GW. | |||
11. The packet is then sent on to the previous hop or the | 11. The packet is then sent on to the previous hop or the Mtrace2 | |||
Destination Address as described in Section 9.3. | Client Address as described in Section 9.3. | |||
9.3. Forwarding Mtrace2 Requests | 9.2.3. Mtrace2 Request Received by Non-Supported Router | |||
If the Previous-hop router is known for this request and the number | When a router that does not understand mtrace2 Request messages | |||
of response blocks is less than the number requested (i.e., the "# | receives an mtrace2 Request message whose destination address is | |||
hops" field in mtrace2 Query header), the packet is sent to that | multicast, the router will silently discard the message. When the | |||
router. If the Incoming Interface is known but the Previous-hop | router receives an mtrace2 Request message whose destination address | |||
router is not known, the packet is sent to an appropriate multicast | is the router's interface address, the router returns an ICMP Port | |||
address on the Incoming Interface. The appropriate multicast address | unreachable to the Mtrace2 Client Address, and the mtrace2 client may | |||
may depend on the routing protocol in use, MUST be a link-scoped | then issue another mtrace2 Query with the lower number of # hops. | |||
group (i.e. 224/24 for IPv4, FF02::/16 for IPv6), MUST NOT be ALL- | ||||
SYSTEMS.MCAST.NET (224.0.0.1) for IPv4 and All Nodes Address | 9.3. Forwarding Mtrace2 Request | |||
(FF02::1) for IPv6, and MAY be ALL-ROUTERS.MCAST.NET (224.0.0.2) for | ||||
IPv4 or All Routers Address (FF02::2) for IPv6 if the routing | 9.3.1. Destination Address | |||
protocol in use does not define a more appropriate group. Otherwise, | ||||
it is sent to the Destination Address in the header. | If the Previous-hop router for the mtrace2 Request is known for this | |||
request and the number of response blocks is less than the number | ||||
requested (i.e., the "# hops" field in the mtrace2 Query header), the | ||||
packet is sent to that router. If the Incoming Interface is known | ||||
but the Previous-hop router is not known, the packet is sent to an | ||||
appropriate multicast address on the Incoming Interface. The | ||||
appropriate multicast address may depend on the routing protocol in | ||||
use, MUST be a link-scoped group (i.e. 224/24 for IPv4, FF02::/16 for | ||||
IPv6), MUST NOT be ALL-SYSTEMS.MCAST.NET (224.0.0.1) for IPv4 and All | ||||
Nodes Address (FF02::1) for IPv6, and MAY be ALL-ROUTERS.MCAST.NET | ||||
(224.0.0.2) for IPv4 or All Routers Address (FF02::2) for IPv6 if the | ||||
routing protocol in use does not define a more appropriate group. | ||||
Otherwise, it is sent to the Mtrace2 Client Address in the header. | ||||
9.3.2. Source Address | ||||
An mtrace2 Request should be sent with the address of the router's | ||||
reception interface. However, if the router's interface address is | ||||
unnumbered, the router can use one of its numbered interface address | ||||
as the source address. | ||||
When the REACHED_GW code is noted, the router sends back the mtrace2 | When the REACHED_GW code is noted, the router sends back the mtrace2 | |||
response as in Section 9.4. In addition to that, it must continue | Reply as in Section 9.4. In addition to that, it must continue the | |||
the mtrace2 query by proxying the original querier as in Section 9.5. | mtrace2 Query by proxying the original querier as in Section 9.5. | |||
When the NO_SPACE error occurs, the router sends back the mtrace2 | When the NO_SPACE error occurs, the router sends back the mtrace2 | |||
response with contained data and the NO_SPACE error code as in | Reply with contained data and the NO_SPACE error code as in | |||
Section 9.4, and continues the mtrace2 query by sending an mtrace2 | Section 9.4, and continues the mtrace2 Query by sending an mtrace2 | |||
request containing the same mtrace2 Query header and its standard and | Request containing the same mtrace2 Query header and its standard and | |||
augmented response blocks. The corresponding augmented response | augmented response blocks. The corresponding augmented response | |||
block type is "# Mtrace2 Response Blocks Returned" described in | block type is "# Mtrace2 Response Blocks Returned" described in | |||
Section 8. | Section 8. | |||
9.4. Sending Mtrace2 Responses | 9.4. Sending Mtrace2 Reply | |||
9.4.1. Destination Address | 9.4.1. Destination Address | |||
An mtrace2 Response must be sent to the address specified in the | An mtrace2 Reply must be sent to the address specified in the Mtrace2 | |||
Destination Address field in the mtrace2 Query header. | Client Address field in the mtrace2 Query header. | |||
9.4.2. Source Address | 9.4.2. Source Address | |||
An mtrace2 Response must be sent with the address of the router's | An mtrace2 Reply should be sent with the address of the router's | |||
reception interface. | reception interface. However, if the router's interface address is | |||
unnumbered, the router can use one of its numbered interface address | ||||
as the source address. | ||||
9.5. Proxying Mtrace2 Queries | 9.5. Proxying Mtrace2 Query | |||
When a gateway (e.g., a NAT or firewall) that needs to block unicast | When a gateway (e.g., a NAT or firewall) that needs to block unicast | |||
packets to the mtrace2 querier or hide information between the | packets to the mtrace2 querier or hide information between the | |||
gateway and the mtrace2 querier receives mtrace2 query from an | gateway and the mtrace2 querier receives mtrace2 Query from an | |||
adjacent host or mtrace2 request from an adjacent router, it sends | adjacent host or mtrace2 Request from an adjacent router, it sends | |||
back the mtrace2 response with contained data and the REACHED_GW code | back the mtrace2 Reply with contained data and the REACHED_GW code to | |||
to the address specified in the Destination Address field in the | the address specified in the Mtrace2 Client Address field in the | |||
mtrace2 Query header. | mtrace2 Query header. | |||
At the same time, the gateway prepares a new mtrace2 query message. | At the same time, the gateway prepares a new mtrace2 Query message. | |||
The gateway uses the original mtrace2 Query header as the base for | The gateway uses the original mtrace2 Query header as the base for | |||
the new mtrace2 query; it sets the Destination Address to its | the new mtrace2 Query; it sets the Mtrace2 Client Address to its | |||
Incoming Interface address and the Client Port # to its own port | Incoming Interface address and the Client Port # to its own port | |||
(which may be the same as the mtrace2 port as the gateway is | (which may be the same as the mtrace2 port as the gateway is | |||
listening on that port), and decreases # hops according to the number | listening on that port), and decreases # hops according to the number | |||
of standard response blocks in the returned mtrace2 response from the | of standard response blocks in the returned mtrace2 Reply from the | |||
gateway. The mtrace2 query message is sent to the previous-hop | gateway. The mtrace2 Query message is sent to the previous-hop | |||
router or to an appropriate multicast address on the Incoming | router or to an appropriate multicast address on the Incoming | |||
Interface. | Interface. | |||
When the gateway receives the mtrace2 response from the first-hop | When the gateway receives the mtrace2 Reply from the first-hop router | |||
router or any intermediate router, it MUST forward the mtrace2 | or any intermediate router, it MUST forward the mtrace2 Reply back to | |||
response back to the mtrace2 querier with the original mtrace2 Query | the mtrace2 querier with the original mtrace2 Query header. | |||
header. | ||||
9.6. Hiding Information | 9.6. Hiding Information | |||
Information about a domain's topology and connectivity may be hidden | Information about a domain's topology and connectivity may be hidden | |||
from multicast traceroute requests. The INFO_HIDDEN forwarding code | from mtrace2 Requests. The INFO_HIDDEN forwarding code may be used | |||
may be used to note that, for example, the incoming interface address | to note that, for example, the incoming interface address and packet | |||
and packet count are for the entrance to the domain and the outgoing | count are for the entrance to the domain and the outgoing interface | |||
interface address and packet count are the exit from the domain. The | address and packet count are the exit from the domain by specifying | |||
source-group packet count may be from either router or not specified | "all 1". The source-group packet count (Section 6.8 and Section 7.9) | |||
(all 1). | is from router, but may be "all 1" if it is hidden. | |||
10. Client Behavior | 10. Client Behavior | |||
10.1. Sending Mtrace2 Queries | 10.1. Sending Mtrace2 Query | |||
When the destination of the mtrace2 is the machine running the | 10.1.1. Destination Address | |||
client, the mtrace2 Query packet can be sent to the ALL- | ||||
ROUTERS.MCAST.NET (224.0.0.2) for IPv4 or All Routers Address | Mtrace2 Query packet can be sent to the ALL-ROUTERS.MCAST.NET | |||
(FF02::2) for IPv6. This will ensure that the packet is received by | (224.0.0.2) for IPv4 or All Routers Address (FF02::2) for IPv6. This | |||
the last-hop router on the subnet. Otherwise, if the proper last-hop | will ensure that the packet is received by the last-hop router on the | |||
router is known for the mtrace2 destination, the Query could be | subnet. Otherwise, if the proper last-hop router is known for the | |||
unicasted to that router. | mtrace2 destination, the Query is unicasted to that router. | |||
See also Section 10.4 on determining the last-hop router. | See also Section 10.4 on determining the last-hop router. | |||
10.1.2. Source Address | ||||
An mtrace2 Query must be sent with the address of the mtrace2 | ||||
querier's reception interface, which would be the Mtrace2 Client | ||||
Address. | ||||
10.2. Determining the Path | 10.2. Determining the Path | |||
The client could send a small number of initial query messages with a | The client could send a small number of initial query messages with a | |||
large "# hops" field, in order to try to trace the full path. If | large "# hops" field, in order to try to trace the full path. If | |||
this attempt fails, one strategy is to perform a linear search (as | this attempt fails, one strategy is to perform a linear search (as | |||
the traditional unicast traceroute program does); set the "# hops" | the traditional unicast traceroute program does); set the "# hops" | |||
field to 1 and try to get a response, then 2, and so on. If no | field to 1 and try to get a Reply, then 2, and so on. If no Reply is | |||
response is received at a certain hop, the hop count can continue | received at a certain hop, the hop count can continue past the non- | |||
past the non-responding hop, in the hopes that further hops may | responding hop, in the hopes that further hops may respond. These | |||
respond. These attempts should continue until a user-defined timeout | attempts should continue until a user-defined timeout has occurred. | |||
has occurred. | ||||
See also Section 10.5 and Section 10.6 on receiving the results of a | See also Section 10.6 on receiving the results of a trace. | |||
trace. | ||||
10.3. Collecting Statistics | 10.3. Collecting Statistics | |||
After a client has determined that it has traced the whole path or as | After a client has determined that it has traced the whole path or as | |||
much as it can expect to (see Section 10.7), it might collect | much as it can expect to (see Section 10.7), it might collect | |||
statistics by waiting a short time and performing a second trace. If | statistics by waiting a short time and performing a second trace. If | |||
the path is the same in the two traces, statistics can be displayed | the path is the same in the two traces, statistics can be displayed | |||
as described in Section 12.3 and Section 12.4. | as described in Section 12.3 and Section 12.4. | |||
10.4. Last Hop Router | 10.4. Last Hop Router | |||
The mtrace2 querier may not know which is the last-hop router, or | The mtrace2 querier may not know which is the last-hop router, or | |||
that router may be behind a firewall that blocks unicast packets but | that router may be behind a firewall that blocks unicast packets but | |||
passes multicast packets. In these cases, the mtrace2 request should | passes multicast packets. In these cases, the mtrace2 Request should | |||
be multicasted to ALL-ROUTERS.MCAST.NET (224.0.0.2) for IPv4 or All | be multicasted to ALL-ROUTERS.MCAST.NET (224.0.0.2) for IPv4 or All | |||
Routers Address (FF02::2) for IPv6. All routers except the correct | Routers Address (FF02::2) for IPv6. All routers except the correct | |||
last-hop router should ignore any mtrace2 request received via | last-hop router SHOULD ignore any mtrace2 Request received via | |||
multicast. | multicast. | |||
10.5. First Hop Router | 10.5. First Hop Router | |||
The IANA assigned 224.0.1.32, MTRACE.MCAST.NET as the default | The IANA assigned 224.0.1.32, MTRACE.MCAST.NET as the default | |||
multicast group for IPv4 mtrace responses, in order to support mtrace | multicast group for old IPv4 mtrace (v1) responses, in order to | |||
queriers that are not unicast reachable from the first-hop router. | support mtrace queriers that are not unicast reachable from the | |||
However, mtrace2 does not reserve any IPv4/IPv6 multicast addresses | first-hop router. However, mtrace2 does not reserve any IPv4/IPv6 | |||
for mtrace2 responses. Every mtrace2 response is sent to the unicast | multicast addresses for mtrace2 Replies. Every mtrace2 Reply is sent | |||
address specified in the Destination Address field of the mtrace2 | to the unicast address specified in the Mtrace2 Client Address field | |||
Query header. | of the mtrace2 Query header. | |||
10.6. Broken Intermediate Router | 10.6. Broken Intermediate Router | |||
A broken intermediate router might simply not understand mtrace2 | A broken intermediate router might simply not understand mtrace2 | |||
packets, and drop them. The querier would then get no response at | packets, and drop them. The querier would then get no Reply at all | |||
all from its mtrace2 requests. It should then perform a hop-by-hop | from its mtrace2 Requests. It should then perform a hop-by-hop | |||
search by setting the number of responses field until it gets a | search by setting the number of hops field until it gets a Reply | |||
response (both linear and binary search are options, but binary is | (both linear and binary search are options, but binary is likely to | |||
likely to be slower because a failure requires waiting for a | be slower because a failure requires waiting for a timeout). | |||
timeout). | ||||
10.7. Mtrace2 Termination | 10.7. 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. | |||
10.7.1. Arriving at source | 10.7.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 8 | skipping to change at page 31, line 8 | |||
10.7.4. Traceroute shorter than requested | 10.7.4. Traceroute shorter than requested | |||
If the trace that is returned is shorter than requested (i.e. the | If the trace that is returned is shorter than requested (i.e. the | |||
number of response blocks is smaller than the "# hops" field), the | number of response blocks is smaller than the "# hops" field), the | |||
trace encountered an error and could not continue. | trace encountered an error and could not continue. | |||
10.8. Continuing after an error | 10.8. Continuing after an error | |||
When the NO_SPACE error occurs, as described in Section 9.3, the | When the NO_SPACE error occurs, as described in Section 9.3, the | |||
multicast routers sends back the mtrace2 Response to the address | multicast routers sends back the mtrace2 Reply to the address | |||
specified in the Destination Address field in the mtrace2 Query | specified in the Mtrace2 Client Address field in the mtrace2 Query | |||
header. In this case, the mtrace2 client may receive multiple | header. In this case, the mtrace2 client may receive multiple | |||
mtrace2 responses from different routers (along the path). After the | mtrace2 Replies from different routers (along the path). After the | |||
client receives multiple mtrace2 Response messages, it integrates | client receives multiple mtrace2 Reply messages, it integrates (i.e. | |||
(i.e. constructs) them as a single mtrace2 Response message. | constructs) them as a single mtrace2 Reply message. | |||
If a trace times out, it is likely to be because a router in the | If a trace times out, it is likely to be because a router in the | |||
middle of the path does not support mtrace2. That router's address | middle of the path does not support mtrace2. That router's address | |||
will be in the Previous-hop router field of the last entry in the | will be in the Previous-hop router field of the last entry in the | |||
last response packet received. A client may be able to determine | last response packet received. A client may be able to determine | |||
(via mrinfo or SNMP [11][13]) a list of neighbors of the non- | (via mrinfo or SNMP [11][13]) a list of neighbors of the non- | |||
responding router. If desired, each of those neighbors could be | responding router. If desired, each of those neighbors could be | |||
probed to determine the remainder of the path. Unfortunately, this | probed to determine the remainder of the path. Unfortunately, this | |||
heuristic may end up with multiple paths, since there is no way of | heuristic may end up with multiple paths, since there is no way of | |||
knowing what the non-responding router's algorithm for choosing a | knowing what the non-responding router's algorithm for choosing a | |||
skipping to change at page 30, line 34 | skipping to change at page 32, line 34 | |||
contrast to PIM-SM, RP always has the state to trace. | contrast to PIM-SM, RP always has the state to trace. | |||
A Designated Forwarder (DF) for a given RPA is in charge of | A Designated Forwarder (DF) for a given RPA is in charge of | |||
forwarding downstream traffic onto its link, and forwarding upstream | forwarding downstream traffic onto its link, and forwarding upstream | |||
traffic from its link towards the RPL (Rendezvous Point Link) that | traffic from its link towards the RPL (Rendezvous Point Link) that | |||
the RPA belongs to. Hence mtrace2 reports DF addresses or RPA along | the RPA belongs to. Hence mtrace2 reports DF addresses or RPA along | |||
the path. | the path. | |||
11.3. PIM-DM | 11.3. PIM-DM | |||
Routers running PIM Dense Mode do not know the path packets would | Routers running PIM Dense Mode [15] do not know the path packets | |||
take unless traffic is flowing. Without some extra protocol | would take unless traffic is flowing. Without some extra protocol | |||
mechanism, this means that in an environment with multiple possible | mechanism, this means that in an environment with multiple possible | |||
paths with branch points on shared media, mtrace2 can only trace | paths with branch points on shared media, mtrace2 can only trace | |||
existing paths, not potential paths. When there are multiple | existing paths, not potential paths. When there are multiple | |||
possible paths but the branch points are not on shared media, the | possible paths but the branch points are not on shared media, the | |||
previous hop router is known, but the last-hop router may not know | previous hop router is known, but the last-hop router may not know | |||
that it is the appropriate last hop. | that it is the 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 last-hop forwarder for the link (because they won or | they are the last-hop forwarder for the link (because they won or | |||
lost an Assert battle) and know who the previous hop is (because it | lost an Assert battle) and know who the previous hop is (because it | |||
won an Assert battle). Therefore, mtrace2 is always able to follow | won an Assert battle). Therefore, mtrace2 is always able to follow | |||
the proper path when traffic is flowing. | the proper path when traffic is flowing. | |||
11.4. IGMP/MLD Proxy | 11.4. IGMP/MLD Proxy | |||
When an mtrace2 Query packet reaches an incoming interface of IGMP/ | When an mtrace2 Query packet reaches an incoming interface of IGMP/ | |||
MLD Proxy [8], it puts a WRONG_IF (0x01) value in Forwarding Code of | MLD Proxy [8], it puts a WRONG_IF (0x01) value in Forwarding Code of | |||
mtrace2 standard response block (as in Section 6.14) and sends the | mtrace2 standard response block (as in Section 6.14) and sends the | |||
mtrace2 response back to the Destination Address. When an mtrace2 | mtrace2 Reply back to the Mtrace2 Client Address. When an mtrace2 | |||
Query packet reaches an outgoing interface of IGMP/MLD proxy, it is | Query packet reaches an outgoing interface of IGMP/MLD proxy, it is | |||
forwarded through its incoming interface towards the upstream router. | forwarded through its incoming interface towards the upstream router. | |||
11.5. AMT | 11.5. AMT | |||
AMT [9] provides the multicast connectivity to the unicast-only | AMT [9] provides the multicast connectivity to the unicast-only | |||
inter-network. To do this, multicast packets being sent to or from a | inter-network. To do this, multicast packets being sent to or from a | |||
site are encapsulated in unicast packets. When an mtrace2 query | site are encapsulated in unicast packets. When an mtrace2 Query | |||
packet reaches an AMT pseudo-interface of an AMT gateway, the AMT | packet reaches an AMT pseudo-interface of an AMT gateway, the AMT | |||
gateway encapsulats it to a particular AMT relay reachable across the | gateway encapsulats it to a particular AMT relay reachable across the | |||
unicast-only infrastructure. Then the AMT relay decapsulates the | unicast-only infrastructure. Then the AMT relay decapsulates the | |||
mtrace2 query packet and forwards the mtrace2 request to the | mtrace2 Query packet and forwards the mtrace2 Request to the | |||
appropriate multicast router. | appropriate multicast router. | |||
12. Problem Diagnosis | 12. Problem Diagnosis | |||
12.1. Forwarding Inconsistencies | 12.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. | |||
12.2. TTL or Hop Limit Problems | 12.2. TTL or Hop Limit Problems | |||
skipping to change at page 32, line 25 | skipping to change at page 34, line 25 | |||
limit) threshold) over all hops, it is possible to discover the TTL | limit) threshold) over all hops, it is possible to discover the TTL | |||
or hop limit required for the source to reach the destination. | or hop limit required for the source to reach the destination. | |||
12.3. Packet Loss | 12.3. Packet Loss | |||
By taking two traces, it is possible to find packet loss information | By taking two traces, it is possible to find packet loss information | |||
by comparing the difference in input packet counts to the difference | by comparing the difference in input packet counts to the difference | |||
in output packet counts for the specified source-group address pair | in output packet counts for the specified source-group address pair | |||
at the previous hop. On a point-to-point link, any difference in | at the previous hop. On a point-to-point link, any difference in | |||
these numbers implies packet loss. Since the packet counts may be | these numbers implies packet loss. Since the packet counts may be | |||
changing as the mtrace2 query is propagating, there may be small | changing as the mtrace2 Query is propagating, there may be small | |||
errors (off by 1 or 2 or more) in these statistics. However, these | errors (off by 1 or 2 or more) in these statistics. However, these | |||
errors will not accumulate if multiple traces are taken to expand the | errors will not accumulate if multiple traces are taken to expand the | |||
measurement period. On a shared link, the count of input packets can | measurement period. On a shared link, the count of input packets can | |||
be larger than the number of output packets at the previous hop, due | be larger than the number of output packets at the previous hop, due | |||
to other routers or hosts on the link injecting packets. This | to other routers or hosts on the link injecting packets. This | |||
appears as "negative loss" which may mask real packet loss. | appears as "negative loss" which may mask real packet loss. | |||
In addition to the counts of input and output packets for all | In addition to the counts of input and output packets for all | |||
multicast traffic on the interfaces, the response data includes a | multicast traffic on the interfaces, the response data includes a | |||
count of the packets forwarded by a node for the specified source- | count of the packets forwarded by a node for the specified source- | |||
skipping to change at page 35, line 22 | skipping to change at page 37, line 22 | |||
14.2. Traffic Rates | 14.2. Traffic Rates | |||
Mtrace2 can be used to discover what sources are sending to what | Mtrace2 can be used to discover what sources are sending to what | |||
groups and at what rates. If this information is a secret, mtrace2 | groups and at what rates. If this information is a secret, mtrace2 | |||
may be restricted at the border of your domain, using the | may be restricted at the border of your domain, using the | |||
ADMIN_PROHIB forwarding code. | ADMIN_PROHIB forwarding code. | |||
14.3. Limiting Query/Request Rates | 14.3. Limiting Query/Request Rates | |||
Routers should limit mtrace2 queries and requests by ignoring the | Routers should limit mtrace2 Queries and Requests by ignoring the | |||
received messages. Routers MAY randomly ignore the received messages | received messages. Routers MAY randomly ignore the received messages | |||
to minimize the processing overhead, i.e., to keep fairness in | to minimize the processing overhead, i.e., to keep fairness in | |||
processing queries. | processing queries. The rate limit is left to the router's | |||
implementation. | ||||
15. Acknowledgements | 15. Acknowledgements | |||
This specification started largely as a transcription of Van | This specification started largely as a transcription of Van | |||
Jacobson's slides from the 30th IETF, and the implementation in | Jacobson's slides from the 30th IETF, and the implementation in | |||
mrouted 3.3 by Ajit Thyagarajan. Van's original slides credit Steve | mrouted 3.3 by Ajit Thyagarajan. Van's original slides credit Steve | |||
Casner, Steve Deering, Dino Farinacci and Deb Agrawal. The original | Casner, Steve Deering, Dino Farinacci and Deb Agrawal. The original | |||
multicast traceroute client, mtrace (version 1), has been implemented | multicast traceroute client, mtrace (version 1), has been implemented | |||
by Ajit Thyagarajan, Steve Casner and Bill Fenner. | by Ajit Thyagarajan, Steve Casner and Bill Fenner. The idea of the | |||
"S" bit to allow statistics for a source subnet is due to Tom | ||||
The idea of the "S" bit to allow statistics for a source subnet is | Pusateri. | |||
due to Tom Pusateri. | ||||
For the mtrace version 2 specification, extensive comments were | For the mtrace version 2 specification, extensive comments were | |||
received from Ronald Bonica, Yiqun Cai, Liu Hui, Bharat Joshi, Pekka | received from Ronald Bonica, Yiqun Cai, Liu Hui, Bharat Joshi, Pekka | |||
Savola, Shinsuke Suzuki, Dave Thaler, Achmad Husni Thamrin, and Cao | Savola, Shinsuke Suzuki, Dave Thaler, Achmad Husni Thamrin, and Cao | |||
Wei. | Wei. | |||
16. References | 16. References | |||
16.1. Normative References | 16.1. Normative References | |||
skipping to change at page 39, line 5 | skipping to change at page 40, line 12 | |||
[12] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", | [12] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", | |||
RFC 2863, June 2000. | RFC 2863, June 2000. | |||
[13] McWalter, D., Thaler, D., and A. Kessler, "IP Multicast MIB", | [13] McWalter, D., Thaler, D., and A. Kessler, "IP Multicast MIB", | |||
RFC 5132, December 2007. | RFC 5132, December 2007. | |||
[14] Gill, V., Heasley, J., Meyer, D., Savola, P., and C. Pignataro, | [14] Gill, V., Heasley, J., Meyer, D., Savola, P., and C. Pignataro, | |||
"The Generalized TTL Security Mechanism (GTSM)", RFC 5082, | "The Generalized TTL Security Mechanism (GTSM)", RFC 5082, | |||
October 2007. | October 2007. | |||
[15] Adams, A., Nicholas, J., and W. Siadak, "Protocol Independent | ||||
Multicast - Dense Mode (PIM-DM): Protocol Specification | ||||
(Revised)", RFC 3973, January 2005. | ||||
Authors' Addresses | Authors' Addresses | |||
Hitoshi Asaeda | Hitoshi Asaeda | |||
Keio University | Keio University | |||
Graduate School of Media and Governance | Graduate School of Media and Governance | |||
Fujisawa, Kanagawa 252-8520 | Fujisawa, Kanagawa 252-0882 | |||
Japan | Japan | |||
Email: asaeda@wide.ad.jp | Email: asaeda@wide.ad.jp | |||
URI: http://www.sfc.wide.ad.jp/~asaeda/ | URI: http://www.sfc.wide.ad.jp/~asaeda/ | |||
Tatuya Jinmei | Tatuya Jinmei | |||
Internet Systems Consortium | Internet Systems Consortium | |||
Redwood City, CA 94063 | Redwood City, CA 94063 | |||
US | US | |||
End of changes. 97 change blocks. | ||||
305 lines changed or deleted | 377 lines changed or added | |||
This html diff was produced by rfcdiff 1.40. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |