< draft-ietf-mboned-auto-multicast.txt draft-ietf-mboned-auto-multicast-15.txt >
|
|
|
|
|
|
Network Working Group G. Bumgardner |
|
Network Working Group G. Bumgardner |
|
|
|
Internet-Draft Cisco
|
|
Internet-Draft February 25, 2013
|
|
|
Intended status: Standards Track June 12, 2012
|
|
Intended status: Standards Track |
|
|
Expires: December 14, 2012
|
|
Expires: August 29, 2013
|
|
|
|
|
|
|
|
Automatic Multicast Tunneling |
|
Automatic Multicast Tunneling |
|
|
|
draft-ietf-mboned-auto-multicast-14
|
|
draft-ietf-mboned-auto-multicast-15
|
|
|
|
|
|
|
|
Abstract |
|
Abstract |
|
|
|
|
|
|
|
This document describes Automatic Multicast Tunneling (AMT), a |
|
This document describes Automatic Multicast Tunneling (AMT), a |
|
|
protocol for delivering multicast traffic from sources in a |
|
protocol for delivering multicast traffic from sources in a |
|
|
multicast-enabled network to receivers that lack multicast |
|
multicast-enabled network to receivers that lack multicast |
|
|
connectivity to the source network. The protocol uses UDP |
|
connectivity to the source network. The protocol uses UDP |
|
|
encapsulation and unicast replication to provide this functionality. |
|
encapsulation and unicast replication to provide this functionality. |
|
|
|
|
|
|
|
The AMT protocol is specifically designed to support rapid deployment |
|
The AMT protocol is specifically designed to support rapid deployment |
|
|
|
|
|
|
|
skipping to change at page 1, line 37 skipping to change at page 1, line 37 |
|
Internet-Drafts are working documents of the Internet Engineering |
|
Internet-Drafts are working documents of the Internet Engineering |
|
|
Task Force (IETF). Note that other groups may also distribute |
|
Task Force (IETF). Note that other groups may also distribute |
|
|
working documents as Internet-Drafts. The list of current Internet- |
|
working documents as Internet-Drafts. The list of current Internet- |
|
|
Drafts is at 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 December 14, 2012. |
|
This Internet-Draft will expire on August 29, 2013. |
|
|
|
|
|
|
|
Copyright Notice |
|
Copyright Notice |
|
|
|
|
|
|
|
|
Copyright (c) 2012 IETF Trust and the persons identified as the |
|
Copyright (c) 2013 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 2, line 22 skipping to change at page 2, line 22 |
|
modifications of such material outside the IETF Standards Process. |
|
modifications of such material outside the IETF Standards Process. |
|
|
Without obtaining an adequate license from the person(s) controlling |
|
Without obtaining an adequate license from the person(s) controlling |
|
|
the copyright in such materials, this document may not be modified |
|
the copyright in such materials, this document may not be modified |
|
|
outside the IETF Standards Process, and derivative works of it may |
|
outside the IETF Standards Process, and derivative works of it may |
|
|
not be created outside the IETF Standards Process, except to format |
|
not be created outside the IETF Standards Process, except to format |
|
|
it for publication as an RFC or to translate it into languages other |
|
it for publication as an RFC or to translate it into languages other |
|
|
than English. |
|
than English. |
|
|
|
|
|
|
|
Table of Contents |
|
Table of Contents |
|
|
|
|
|
|
|
|
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
|
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
|
|
|
2. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 4
|
|
2. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 5
|
|
|
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
|
|
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6
|
|
|
3.1. Requirements Notation . . . . . . . . . . . . . . . . . . 5
|
|
3.1. Requirements Notation . . . . . . . . . . . . . . . . . . 6
|
|
|
3.2. Definitions . . . . . . . . . . . . . . . . . . . . . . . 5
|
|
3.2. Definitions . . . . . . . . . . . . . . . . . . . . . . . 6
|
|
|
3.3. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 6
|
|
3.3. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 7
|
|
|
4. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 8
|
|
4. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 9
|
|
|
4.1. General Architecture . . . . . . . . . . . . . . . . . . . 8
|
|
4.1. General Architecture . . . . . . . . . . . . . . . . . . . 9
|
|
|
4.2. General Operation . . . . . . . . . . . . . . . . . . . . 17
|
|
4.1.1. Relationship to IGMP and MLD Protocols . . . . . . . . 9 |
|
|
5. Protocol Description . . . . . . . . . . . . . . . . . . . . . 32
|
|
4.1.2. Gateways . . . . . . . . . . . . . . . . . . . . . . . 10 |
|
|
5.1. Protocol Messages . . . . . . . . . . . . . . . . . . . . 32
|
|
4.1.3. Relays . . . . . . . . . . . . . . . . . . . . . . . . 13 |
|
|
5.2. Gateway Operation . . . . . . . . . . . . . . . . . . . . 47
|
|
4.1.4. Deployment . . . . . . . . . . . . . . . . . . . . . . 16 |
|
|
5.3. Relay Operation . . . . . . . . . . . . . . . . . . . . . 62
|
|
4.1.5. Discovery . . . . . . . . . . . . . . . . . . . . . . 17 |
|
|
6. Security Considerations . . . . . . . . . . . . . . . . . . . 73
|
|
4.2. General Operation . . . . . . . . . . . . . . . . . . . . 18
|
|
|
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 76
|
|
4.2.1. Message Sequences . . . . . . . . . . . . . . . . . . 18 |
|
|
|
|
4.2.2. Tunneling . . . . . . . . . . . . . . . . . . . . . . 29 |
|
|
|
|
5. Protocol Description . . . . . . . . . . . . . . . . . . . . . 34
|
|
|
|
|
5.1. Protocol Messages . . . . . . . . . . . . . . . . . . . . 34
|
|
|
|
|
5.1.1. Relay Discovery . . . . . . . . . . . . . . . . . . . 34
|
|
|
|
|
5.1.2. Relay Advertisement . . . . . . . . . . . . . . . . . 35
|
|
|
|
|
5.1.3. Request . . . . . . . . . . . . . . . . . . . . . . . 37
|
|
|
|
|
5.1.4. Membership Query . . . . . . . . . . . . . . . . . . . 39
|
|
|
|
|
5.1.5. Membership Update . . . . . . . . . . . . . . . . . . 42
|
|
|
|
|
5.1.6. Multicast Data . . . . . . . . . . . . . . . . . . . . 45 |
|
|
|
|
5.1.7. Teardown . . . . . . . . . . . . . . . . . . . . . . . 46 |
|
|
|
|
5.2. Gateway Operation . . . . . . . . . . . . . . . . . . . . 49 |
|
|
|
|
5.2.1. IP/IGMP/MLD Protocol Requirements . . . . . . . . . . 49 |
|
|
|
|
5.2.2. Pseudo-Interface Configuration . . . . . . . . . . . . 50 |
|
|
|
|
5.2.3. Gateway Service . . . . . . . . . . . . . . . . . . . 52 |
|
|
|
|
|
|
|
|
|
5.3. Relay Operation . . . . . . . . . . . . . . . . . . . . . 64 |
|
|
|
|
5.3.1. IP/IGMP/MLD Protocol Requirements . . . . . . . . . . 64 |
|
|
|
|
5.3.2. Startup . . . . . . . . . . . . . . . . . . . . . . . 65 |
|
|
|
|
5.3.3. Running . . . . . . . . . . . . . . . . . . . . . . . 65 |
|
|
|
|
5.3.4. Shutdown . . . . . . . . . . . . . . . . . . . . . . . 74 |
|
|
|
|
5.3.5. Response MAC Generation . . . . . . . . . . . . . . . 74 |
|
|
|
|
5.3.6. Private Secret Generation . . . . . . . . . . . . . . 75 |
|
|
|
|
6. Security Considerations . . . . . . . . . . . . . . . . . . . 76 |
|
|
|
|
6.1. Relays . . . . . . . . . . . . . . . . . . . . . . . . . . 76 |
|
|
|
|
6.2. Gateways . . . . . . . . . . . . . . . . . . . . . . . . . 77 |
|
|
|
|
6.3. Encapsulated IP Packets . . . . . . . . . . . . . . . . . 78 |
|
|
|
|
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 79 |
|
|
|
|
7.1. IPv4 and IPv6 Anycast Prefix Allocation . . . . . . . . . 79 |
|
|
|
|
7.1.1. IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . 79 |
|
|
|
|
7.1.2. IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . 79 |
|
|
7.2. IPv4 Address Prefix Allocation for IGMP Source |
|
7.2. IPv4 Address Prefix Allocation for IGMP Source |
|
|
|
Addresses . . . . . . . . . . . . . . . . . . . . . . . . 76
|
|
Addresses . . . . . . . . . . . . . . . . . . . . . . . . 79
|
|
|
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 77
|
|
7.3. UDP Port Number . . . . . . . . . . . . . . . . . . . . . 79 |
|
|
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 78
|
|
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 80
|
|
|
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 79
|
|
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 81
|
|
|
10.1. Normative References . . . . . . . . . . . . . . . . . . . 79
|
|
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 82
|
|
|
10.2. Informative References . . . . . . . . . . . . . . . . . . 79
|
|
10.1. Normative References . . . . . . . . . . . . . . . . . . . 82
|
|
|
Appendix A. Implementation Notes . . . . . . . . . . . . . . . . 82
|
|
10.2. Informative References . . . . . . . . . . . . . . . . . . 82
|
|
|
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 85
|
|
Appendix A. Implementation Notes . . . . . . . . . . . . . . . . 85
|
|
|
|
|
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 88
|
|
|
|
|
|
|
|
1. Introduction |
|
1. Introduction |
|
|
|
|
|
|
|
The advantages and benefits provided by multicast technologies are |
|
The advantages and benefits provided by multicast technologies are |
|
|
well known. There are a number of application areas that are ideal |
|
well known. There are a number of application areas that are ideal |
|
|
candidates for the use of multicast, including media broadcasting, |
|
candidates for the use of multicast, including media broadcasting, |
|
|
video conferencing, collaboration, real-time data feeds, data |
|
video conferencing, collaboration, real-time data feeds, data |
|
|
replication, and software updates. Unfortunately, many of these |
|
replication, and software updates. Unfortunately, many of these |
|
|
applications lack multicast connectivity to networks that carry |
|
applications lack multicast connectivity to networks that carry |
|
|
traffic generated by multicast sources. The reasons for the lack of |
|
traffic generated by multicast sources. The reasons for the lack of |
|
|
|
|
|
|
|
skipping to change at page 5, line 5 skipping to change at page 5, line 19 |
|
multicast connectivity to the source network. This document does not |
|
multicast connectivity to the source network. This document does not |
|
|
describe any methods for sourcing multicast traffic from isolated |
|
describe any methods for sourcing multicast traffic from isolated |
|
|
sites as this topic is out of scope. |
|
sites as this topic is out of scope. |
|
|
|
|
|
|
|
AMT is not intended to be used as a substitute for native multicast, |
|
AMT is not intended to be used as a substitute for native multicast, |
|
|
especially in conditions or environments requiring high traffic flow. |
|
especially in conditions or environments requiring high traffic flow. |
|
|
AMT uses unicast replication to reach multiple receivers and the |
|
AMT uses unicast replication to reach multiple receivers and the |
|
|
bandwidth cost for this replication will be higher than that required |
|
bandwidth cost for this replication will be higher than that required |
|
|
if the receivers were reachable via native multicast. |
|
if the receivers were reachable via native multicast. |
|
|
|
|
|
|
|
|
|
|
AMT is designed to be deployed at the border of networks possessing
|
|
|
|
|
native multicast capabilities where access and provisioning can be |
|
|
|
|
managed by the AMT service provider. |
|
|
|
|
|
|
|
3. Terminology |
|
3. Terminology |
|
|
|
|
|
|
|
3.1. Requirements Notation |
|
3.1. Requirements Notation |
|
|
|
|
|
|
|
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", |
|
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", |
|
|
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this |
|
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this |
|
|
document are to be interpreted as described in [RFC2119]. |
|
document are to be interpreted as described in [RFC2119]. |
|
|
|
|
|
|
|
3.2. Definitions |
|
3.2. Definitions |
|
|
|
|
|
|
|
|
|
|
|
|
skipping to change at page 5, line 45 skipping to change at page 6, line 45 |
|
|
|
|
|
|
Multicast Receiver: |
|
Multicast Receiver: |
|
|
An entity that requests and receives multicast traffic. A |
|
An entity that requests and receives multicast traffic. A |
|
|
receiver may be a router, host, application, or application |
|
receiver may be a router, host, application, or application |
|
|
component. The method by which a receiver transmits group |
|
component. The method by which a receiver transmits group |
|
|
membership requests and receives multicast traffic varies |
|
membership requests and receives multicast traffic varies |
|
|
according to receiver type. |
|
according to receiver type. |
|
|
|
|
|
|
|
Group Membership Database: |
|
Group Membership Database: |
|
|
A group membership database describes the current multicast |
|
A group membership database describes the current multicast |
|
|
|
subscription/reception sate for an interface or system. |
|
subscription state for an interface or system. See Section 3 in
|
|
|
|
|
[RFC3376] for a detailed definition. |
|
|
|
|
|
|
|
Reception State: |
|
Reception State: |
|
|
The multicast subscription state of a pseudo, virtual or physical |
|
The multicast subscription state of a pseudo, virtual or physical |
|
|
|
network interface. See group membership database. |
|
network interface. Often synonymous with group membership |
|
|
|
|
database. |
|
|
|
|
|
|
|
Subscription: |
|
Subscription: |
|
|
A group or state entry in a group membership database or reception |
|
A group or state entry in a group membership database or reception |
|
|
|
state table. |
|
state table. The presence of a subscription entry indicates
|
|
|
|
|
membership in an IP multicast group. |
|
|
|
|
|
|
|
Group Membership Protocol: |
|
Group Membership Protocol: |
|
|
The term "group membership protocol" is used as a generic |
|
The term "group membership protocol" is used as a generic |
|
|
reference to the Internet Group Management (IGMP) ([RFC1112], |
|
reference to the Internet Group Management (IGMP) ([RFC1112], |
|
|
[RFC2236], [RFC3376]) or Multicast Listener Discovery ([RFC2710], |
|
[RFC2236], [RFC3376]) or Multicast Listener Discovery ([RFC2710], |
|
|
[RFC3810]) protocols. |
|
[RFC3810]) protocols. |
|
|
|
|
|
|
|
Multicast Protocol: |
|
Multicast Protocol: |
|
|
The term "multicast protocol" is used as a generic reference to |
|
The term "multicast protocol" is used as a generic reference to |
|
|
multicast routing protocols used to join or leave multicast |
|
multicast routing protocols used to join or leave multicast |
|
|
|
|
|
|
|
skipping to change at page 9, line 19 skipping to change at page 10, line 19 |
|
| |<------| | | |<------| | |
|
| |<------| | | |<------| | |
|
|
| Host Mode | | AMT | | AMT | |Router Mode| |
|
| Host Mode | | AMT | | AMT | |Router Mode| |
|
|
| IGMP/MLD | | | UDP | | | IGMP/MLD | |
|
| IGMP/MLD | | | UDP | | | IGMP/MLD | |
|
|
|___________|------>| |<----->| |------>|___________| |
|
|___________|------>| |<----->| |------>|___________| |
|
|
Report | | | | Report |
|
Report | | | | Report |
|
|
Leave/Done | | | | Leave/Done |
|
Leave/Done | | | | Leave/Done |
|
|
| | | | |
|
| | | | |
|
|
IP Multicast <------| | | |<------ IP Multicast |
|
IP Multicast <------| | | |<------ IP Multicast |
|
|
|_____| |_____| |
|
|_____| |_____| |
|
|
|
|
|
|
|
|
Multicast Reception State Managed By IGMP/MLD |
|
Figure 2: Multicast Reception State Managed By IGMP/MLD |
|
|
|
|
|
|
|
A gateway runs the host portion of the IGMP and MLD protocols to |
|
A gateway runs the host portion of the IGMP and MLD protocols to |
|
|
generate group membership updates that are sent via AMT messages to a |
|
generate group membership updates that are sent via AMT messages to a |
|
|
relay. A relay runs the router portion of the IGMP and MLD protocols |
|
relay. A relay runs the router portion of the IGMP and MLD protocols |
|
|
to process the group membership updates to produce the required |
|
to process the group membership updates to produce the required |
|
|
changes in multicast forwarding state. A relay uses AMT messages to |
|
changes in multicast forwarding state. A relay uses AMT messages to |
|
|
send incoming multicast IP datagrams to gateways according to their |
|
send incoming multicast IP datagrams to gateways according to their |
|
|
current group membership state. |
|
current group membership state. |
|
|
|
|
|
|
|
The primary function of AMT is to provide the handshaking, |
|
The primary function of AMT is to provide the handshaking, |
|
|
|
|
|
|
|
skipping to change at page 9, line 42 skipping to change at page 10, line 42 |
|
relays. The IGMP and MLD messages that are exchanged between |
|
relays. The IGMP and MLD messages that are exchanged between |
|
|
gateways and relays are encapsulated as complete IP datagrams within |
|
gateways and relays are encapsulated as complete IP datagrams within |
|
|
AMT control messages. Multicast IP datagrams are replicated and |
|
AMT control messages. Multicast IP datagrams are replicated and |
|
|
encapsulated in AMT data messages. All AMT messages are sent via |
|
encapsulated in AMT data messages. All AMT messages are sent via |
|
|
unicast UDP/IP. |
|
unicast UDP/IP. |
|
|
|
|
|
|
|
4.1.2. Gateways |
|
4.1.2. Gateways |
|
|
|
|
|
|
|
The downstream side of a gateway services one or more receivers - the |
|
The downstream side of a gateway services one or more receivers - the |
|
|
gateway accepts group membership requests from receivers and forwards |
|
gateway accepts group membership requests from receivers and forwards |
|
|
|
requested multicast traffic back to those receivers. |
|
requested multicast traffic back to those receivers. The gateway
|
|
|
|
|
functionality may be directly implemented in the host requesting the |
|
|
|
|
multicast service or within an application running on a host. |
|
|
|
|
|
|
|
The upstream side of a gateway connects to relays. A gateway sends |
|
The upstream side of a gateway connects to relays. A gateway sends |
|
|
encapsulated IGMP and MLD messages to a relay to indicate an interest |
|
encapsulated IGMP and MLD messages to a relay to indicate an interest |
|
|
in receiving specific multicast traffic. |
|
in receiving specific multicast traffic. |
|
|
|
|
|
|
|
4.1.2.1. Architecture |
|
4.1.2.1. Architecture |
|
|
|
|
|
|
|
Each gateway possesses a logical pseudo-interface: |
|
Each gateway possesses a logical pseudo-interface: |
|
|
|
|
|
|
|
join/leave ---+ +----------+ |
|
join/leave ---+ +----------+ |
|
|
| | | |
|
| | | |
|
|
V IGMPv3/MLDv2 | | |
|
V IGMPv3/MLDv2 | | |
|
|
+---------+ General Query| | AMT |
|
+---------+ General Query| | AMT |
|
|
|IGMP/MLD |<-------------| AMT | Messages +------+ |
|
|IGMP/MLD |<-------------| AMT | Messages +------+ |
|
|
|
|Host Mode| | Gateway |<-------->|UPD/IP| |
|
|Host Mode| | Gateway |<-------->|UDP/IP| |
|
|
|Protocol |------------->|Pseudo I/F| +------+ |
|
|Protocol |------------->|Pseudo I/F| +------+ |
|
|
+---------+ IGMP/MLD | | ^ |
|
+---------+ IGMP/MLD | | ^ |
|
|
Report | | | |
|
Report | | | |
|
|
Leave/Done | | V |
|
Leave/Done | | V |
|
|
IP Multicast <---------------------| | +---+ |
|
IP Multicast <---------------------| | +---+ |
|
|
+----------+ |I/F| |
|
+----------+ |I/F| |
|
|
+---+ |
|
+---+ |
|
|
|
|
|
|
|
|
Figure 2: AMT Gateway Pseudo-Interface |
|
Figure 3: AMT Gateway Pseudo-Interface |
|
|
|
|
|
|
|
The pseudo-interface is conceptually a network interface on which the |
|
The pseudo-interface is conceptually a network interface on which the |
|
|
gateway executes the host portion of the IPv4/IGMP (v2 or v3) and |
|
gateway executes the host portion of the IPv4/IGMP (v2 or v3) and |
|
|
IPv6/MLD (v1 or v2) protocols. The multicast reception state of the |
|
IPv6/MLD (v1 or v2) protocols. The multicast reception state of the |
|
|
pseudo-interface is manipulated using the IGMP or MLD service |
|
pseudo-interface is manipulated using the IGMP or MLD service |
|
|
interface. The IGMP and MLD host protocols produce IP datagrams |
|
interface. The IGMP and MLD host protocols produce IP datagrams |
|
|
containing group membership messages that the gateway will send to |
|
containing group membership messages that the gateway will send to |
|
|
the relay. The IGMP and MLD protocols also supply the retransmission |
|
the relay. The IGMP and MLD protocols also supply the retransmission |
|
|
and timing behavior required for protocol robustness. |
|
and timing behavior required for protocol robustness. |
|
|
|
|
|
|
|
|
|
|
|
|
skipping to change at page 11, line 48 skipping to change at page 12, line 48 |
|
| | | | ^ ^ | |
|
| | | | ^ ^ | |
|
|
| | | IP(IGMP)| |IP(UDP(data)) | | |
|
| | | IP(IGMP)| |IP(UDP(data)) | | |
|
|
| | |_________| |IP(IGMP) | | |
|
| | |_________| |IP(IGMP) | | |
|
|
| | | | | |
|
| | | | | |
|
|
| |_________________| | | |
|
| |_________________| | | |
|
|
| | | |
|
| | | |
|
|
+--------------------------------------|--------------+ |
|
+--------------------------------------|--------------+ |
|
|
v |
|
v |
|
|
AMT Relay |
|
AMT Relay |
|
|
|
|
|
|
|
|
Virtual Interface Implementation Example |
|
Figure 4: Virtual Interface Implementation Example |
|
|
|
|
|
|
|
In this example, the host IP stack uses a virtual network interface |
|
In this example, the host IP stack uses a virtual network interface |
|
|
to interact with a gateway pseudo-interface implementation. |
|
to interact with a gateway pseudo-interface implementation. |
|
|
|
|
|
|
|
4.1.2.2. Use-Cases |
|
4.1.2.2. Use-Cases |
|
|
|
|
|
|
|
Use-cases for gateway functionality include: |
|
Use-cases for gateway functionality include: |
|
|
|
|
|
|
|
IGMP/MLD Proxy |
|
IGMP/MLD Proxy |
|
|
An IGMP/MLD proxy that runs AMT on an upstream interface and |
|
An IGMP/MLD proxy that runs AMT on an upstream interface and |
|
|
|
|
|
|
|
skipping to change at page 13, line 13 skipping to change at page 14, line 13 |
|
from those sources. |
|
from those sources. |
|
|
|
|
|
|
|
4.1.3.1. Architecture |
|
4.1.3.1. Architecture |
|
|
|
|
|
|
|
Each relay possesses a logical pseudo-interface: |
|
Each relay possesses a logical pseudo-interface: |
|
|
|
|
|
|
|
+------------------------------+ |
|
+------------------------------+ |
|
|
+--------+ | Multicast Control Plane | |
|
+--------+ | Multicast Control Plane | |
|
|
| |IGMP/MLD| | |
|
| |IGMP/MLD| | |
|
|
| | Query* | +------------+ +----------+ | |
|
| | Query* | +------------+ +----------+ | |
|
|
|
| |<---//----|IGMPv3/MLDv2| | | | |
|
| |<---//----|IGMPv3/MLDv2| |Multicast | | |
|
|
AMT | | | |Router Mode |->| PIM-SM |<--> |
|
AMT | | | |Router Mode |->|Routing |<--> |
|
|
+------+ Messages | AMT |----//--->|Protocol | | | | |
|
+------+ Messages | AMT |----//--->|Protocol | |Protocol | | |
|
|
|UDP/IP|<-------->| Relay |IGMP/MLD| +------------+ +----------+ | |
|
|UDP/IP|<-------->| Relay |IGMP/MLD| +------------+ +----------+ | |
|
|
+------+ | Pseudo | Report | | | | |
|
+------+ | Pseudo | Report | | | | |
|
|
^ | I/F | Leave/ +------|---------------|-------+ |
|
^ | I/F | Leave/ +------|---------------|-------+ |
|
|
| | | Done | | |
|
| | | Done | | |
|
|
| | | v | |
|
| | | v | |
|
|
V | | IP +-----------+ | |
|
V | | IP +-----------+ | |
|
|
+---+ | | Multicast |Multicast |<------+ |
|
+---+ | | Multicast |Multicast |<------+ |
|
|
|I/F| | |<---//-----|Forwarding | |
|
|I/F| | |<---//-----|Forwarding | |
|
|
+---+ +--------+ |Plane |<--- IP Multicast |
|
+---+ +--------+ |Plane |<--- IP Multicast |
|
|
+-----------+ |
|
+-----------+ |
|
|
|
|
|
|
|
* Queries, if generated, are consumed by the pseudo-interface. |
|
* Queries, if generated, are consumed by the pseudo-interface. |
|
|
|
|
|
|
|
|
AMT Relay Pseudo-Interface (Router-Based) |
|
Figure 5: AMT Relay Pseudo-Interface (Router-Based) |
|
|
|
|
|
|
|
The pseudo-interface is conceptually a network interface on which the |
|
The pseudo-interface is conceptually a network interface on which the |
|
|
relay runs the router portion of the IPv4/IGMPv3 and IPv6/MLDv2 |
|
relay runs the router portion of the IPv4/IGMPv3 and IPv6/MLDv2 |
|
|
protocols. Relays do not send unsolicited IGMPv3/MLDv2 query |
|
protocols. Relays do not send unsolicited IGMPv3/MLDv2 query |
|
|
messages to gateways so relays must consume or discard any local |
|
messages to gateways so relays must consume or discard any local |
|
|
|
queries normally generated by IGMPv3 or MLDv2. |
|
queries normally generated by IGMPv3 or MLDv2. Note that the
|
|
|
|
|
protocol mandates the use of IGMPv3 and MLDv2 for query messages. |
|
|
|
|
The AMT protocol is primarily intended for use in SSM applications |
|
|
|
|
and relies on several values provided by IGMPv2/MLDv2 to control |
|
|
|
|
gateway behavior. |
|
|
|
|
|
|
|
A relay maintains group membership state for each gateway connected |
|
A relay maintains group membership state for each gateway connected |
|
|
through the pseudo-interface as well as for the entire pseudo- |
|
through the pseudo-interface as well as for the entire pseudo- |
|
|
interface (if multiple gateways are managed via a single interface). |
|
interface (if multiple gateways are managed via a single interface). |
|
|
Multicast packets received on upstream interfaces on the relay are |
|
Multicast packets received on upstream interfaces on the relay are |
|
|
routed to the pseudo-interface where they are replicated, |
|
routed to the pseudo-interface where they are replicated, |
|
|
encapsulated and sent to interested gateways. Changes in the pseudo- |
|
encapsulated and sent to interested gateways. Changes in the pseudo- |
|
|
interface group membership state may trigger the transmission of |
|
interface group membership state may trigger the transmission of |
|
|
multicast protocol requests upstream towards a given source or |
|
multicast protocol requests upstream towards a given source or |
|
|
rendezvous point and cause changes in internal routing/forwarding |
|
rendezvous point and cause changes in internal routing/forwarding |
|
|
|
|
|
|
|
skipping to change at page 15, line 43 skipping to change at page 17, line 5 |
|
does not yet allow this, because many relays will lack native |
|
does not yet allow this, because many relays will lack native |
|
|
multicast access to sources even though they may be globally |
|
multicast access to sources even though they may be globally |
|
|
accessible via unicast. |
|
accessible via unicast. |
|
|
|
|
|
|
|
In these cases, a provider may deploy relays within their own source |
|
In these cases, a provider may deploy relays within their own source |
|
|
network to allow for multicast distribution within that network. |
|
network to allow for multicast distribution within that network. |
|
|
Gateways that use these relays must use a provider-specific relay |
|
Gateways that use these relays must use a provider-specific relay |
|
|
discovery mechanism or a private anycast address to obtain access to |
|
discovery mechanism or a private anycast address to obtain access to |
|
|
these relays. |
|
these relays. |
|
|
|
|
|
|
|
|
|
|
4.1.4.2. Congestion Considerations |
|
|
|
|
|
|
|
|
|
AMT relies on UDP to provide best-effort delivery of multicast data |
|
|
|
|
to gateways. Neither AMT or the UDP protocol provide the congestion |
|
|
|
|
control mechanisms required to regulate the flow of data messages |
|
|
|
|
passing through a network. While congestion remediation might be |
|
|
|
|
provided by multicast receiver applications via multicast group |
|
|
|
|
selection or upstream reporting mechanisms, there are no means by |
|
|
|
|
which to ensure such mechanisms are employed. To limit the possible |
|
|
|
|
congestion across a network or wider Internet, AMT service providers |
|
|
|
|
are expected to deploy AMT relays near the provider's network border |
|
|
|
|
and its interface with edge routers. The provider must limit relay |
|
|
|
|
address advertisements to those edges to prevent distant gateways |
|
|
|
|
from being able to access a relay and potentially generate flows that |
|
|
|
|
consume or exceed the capacity of intervening links. |
|
|
|
|
|
|
|
4.1.5. Discovery |
|
4.1.5. Discovery |
|
|
|
|
|
|
|
To execute the gateway portion of the protocol, a gateway requires a |
|
To execute the gateway portion of the protocol, a gateway requires a |
|
|
unicast IP address of an operational relay. This address may be |
|
unicast IP address of an operational relay. This address may be |
|
|
obtained using a number of methods - it may be statically assigned or |
|
obtained using a number of methods - it may be statically assigned or |
|
|
dynamically chosen via some form of relay discovery process. |
|
dynamically chosen via some form of relay discovery process. |
|
|
|
|
|
|
|
As described in the previous section, the AMT protocol provides a |
|
As described in the previous section, the AMT protocol provides a |
|
|
relay discovery method that relies on anycast addressing. Gateways |
|
relay discovery method that relies on anycast addressing. Gateways |
|
|
are not required to use AMT relay discovery, but all relay |
|
are not required to use AMT relay discovery, but all relay |
|
|
|
|
|
|
|
skipping to change at page 16, line 28 skipping to change at page 18, line 5 |
|
Relay Address: |
|
Relay Address: |
|
|
The unicast IP address obtained as a result of the discovery |
|
The unicast IP address obtained as a result of the discovery |
|
|
process. |
|
process. |
|
|
|
|
|
|
|
4.1.5.1. Relay Discovery Address Selection |
|
4.1.5.1. Relay Discovery Address Selection |
|
|
|
|
|
|
|
The selection of an anycast Relay Discovery Address may be source- |
|
The selection of an anycast Relay Discovery Address may be source- |
|
|
dependent, as a relay located via relay discovery must have multicast |
|
dependent, as a relay located via relay discovery must have multicast |
|
|
connectivity to a desired source. |
|
connectivity to a desired source. |
|
|
|
|
|
|
|
|
Similarly, the selection of a unicast Relay address may be source- |
|
Similarly, the selection of a unicast Relay Address may be source- |
|
|
dependent, as a relay contacted by a gateway to supply multicast |
|
dependent, as a relay contacted by a gateway to supply multicast |
|
|
traffic must have native multicast connectivity to the traffic source |
|
traffic must have native multicast connectivity to the traffic source |
|
|
|
|
|
|
|
Methods that might be used to perform source-specific or group- |
|
Methods that might be used to perform source-specific or group- |
|
|
specific relay selection are highly implementation-dependent and are |
|
specific relay selection are highly implementation-dependent and are |
|
|
not further addressed by this document. Possible approaches include |
|
not further addressed by this document. Possible approaches include |
|
|
the use of static lookup tables, DNS-based queries, or a provision of |
|
the use of static lookup tables, DNS-based queries, or a provision of |
|
|
a service interface that accepts join requests on (S,G,relay- |
|
a service interface that accepts join requests on (S,G,relay- |
|
|
discovery-address) or (S,G,relay-address) tuples. |
|
discovery-address) or (S,G,relay-address) tuples. |
|
|
|
|
|
|
|
4.1.5.2. IANA-Assigned Relay Discovery Address Prefix |
|
4.1.5.2. IANA-Assigned Relay Discovery Address Prefix |
|
|
|
|
|
|
|
|
This document calls for IANA to allocate an anycast address prefix |
|
IANA has assigned an address prefix for use in advertising and |
|
|
for use in advertising and discovering publicly accessible relays. |
|
discovering publicly accessible relays. |
|
|
|
|
|
|
|
|
A relay discovery address is constructed from the anycast address |
|
A relay discovery address is constructed from the address prefix by |
|
|
prefix by setting the low-order octet of the prefix address to 1 (for |
|
setting the low-order octet of the prefix address to 1 (for both IPv4 |
|
|
both IPv4 and IPv6). |
|
and IPv6). |
|
|
|
|
|
|
|
|
Public relays must advertise a route to the anycast address prefix |
|
Public relays must advertise a route to the address prefix (e.g. via
|
|
|
and configure an interface to respond to the relay discovery address. |
|
BGP [RFC4271]) and configure an interface to respond to the relay |
|
|
|
|
discovery address. |
|
|
|
|
|
|
|
The IANA address assignments are discussed in Section 7. |
|
The IANA address assignments are discussed in Section 7. |
|
|
|
|
|
|
|
4.2. General Operation |
|
4.2. General Operation |
|
|
|
|
|
|
|
4.2.1. Message Sequences |
|
4.2.1. Message Sequences |
|
|
|
|
|
|
|
The AMT protocol defines the following messages for control and |
|
The AMT protocol defines the following messages for control and |
|
|
encapsulation. These messages are exchanged as UDP/IP datagrams, one |
|
encapsulation. These messages are exchanged as UDP/IP datagrams, one |
|
|
message per datagram. |
|
message per datagram. |
|
|
|
|
|
|
|
skipping to change at page 18, line 19 skipping to change at page 19, line 39 |
|
: : |
|
: : |
|
|
| | |
|
| | |
|
|
[1] |Relay Discovery | |
|
[1] |Relay Discovery | |
|
|
|------------------->| |
|
|------------------->| |
|
|
| | |
|
| | |
|
|
| Relay Advertisement| [2] |
|
| Relay Advertisement| [2] |
|
|
|<-------------------| |
|
|<-------------------| |
|
|
[3] | | |
|
[3] | | |
|
|
: : |
|
: : |
|
|
|
|
|
|
|
|
AMT Relay Discovery Sequence |
|
Figure 6: AMT Relay Discovery Sequence |
|
|
|
|
|
|
|
The following sequence describes how the Relay Discovery and Relay |
|
The following sequence describes how the Relay Discovery and Relay |
|
|
Advertisement messages are used to find a relay with which to |
|
Advertisement messages are used to find a relay with which to |
|
|
communicate: |
|
communicate: |
|
|
|
|
|
|
|
1. The gateway sends a Relay Discovery message containing a random |
|
1. The gateway sends a Relay Discovery message containing a random |
|
|
nonce to the Relay Discovery Address. If the Relay Discovery |
|
nonce to the Relay Discovery Address. If the Relay Discovery |
|
|
Address is an anycast address, the message is routed to |
|
Address is an anycast address, the message is routed to |
|
|
topologically-nearest network node that advertises that address. |
|
topologically-nearest network node that advertises that address. |
|
|
|
|
|
|
|
|
|
|
|
|
skipping to change at page 20, line 52 skipping to change at page 22, line 52 |
|
4| R({G:INCLUDE({S})}) | Membership Update | |
|
4| R({G:INCLUDE({S})}) | Membership Update | |
|
|
|-------------------->|5 R({G:INCLUDE({S})})| |
|
|-------------------->|5 R({G:INCLUDE({S})})| |
|
|
| |====================>|6b |
|
| |====================>|6b |
|
|
Leave(S,G) : : : |
|
Leave(S,G) : : : |
|
|
()--------->|7 R({G:BLOCK({S})}) | Membership Update | |
|
()--------->|7 R({G:BLOCK({S})}) | Membership Update | |
|
|
|-------------------->|8 R({G:BLOCK({S})}) | |
|
|-------------------->|8 R({G:BLOCK({S})}) | |
|
|
| |====================>|9b Prune(S,G) |
|
| |====================>|9b Prune(S,G) |
|
|
| | |---------->() |
|
| | |---------->() |
|
|
: : : |
|
: : : |
|
|
|
|
|
|
|
|
Membership Update Sequence (IGMPv3/MLDv2 Example) |
|
Figure 7: Membership Update Sequence (IGMPv3/MLDv2 Example) |
|
|
|
|
|
|
|
The following sequence describes how the Request, Membership Query, |
|
The following sequence describes how the Request, Membership Query, |
|
|
and Membership Update messages are used to report current group |
|
and Membership Update messages are used to report current group |
|
|
membership state or changes in group membership state: |
|
membership state or changes in group membership state: |
|
|
|
|
|
|
|
1. A gateway sends a Request message to the relay that contains a |
|
1. A gateway sends a Request message to the relay that contains a |
|
|
random nonce and a flag indicating whether the relay should |
|
random nonce and a flag indicating whether the relay should |
|
|
return an IGMPv3 or MLDv2 general query. |
|
return an IGMPv3 or MLDv2 general query. |
|
|
|
|
|
|
|
2. When the relay receives a Request message, it generates a |
|
2. When the relay receives a Request message, it generates a |
|
|
message authentication code (MAC) by computing a hash value from |
|
message authentication code (MAC) by computing a hash value from |
|
|
|
a private secret and the nonce, source IP address, and source |
|
message source IP address, source UDP port, request nonce and a
|
|
|
UDP port carried by the Request message. The relay then sends a |
|
private secret. The relay then sends a Membership Query message |
|
|
Membership Query message to the gateway that contains the |
|
to the gateway that contains the request nonce, the MAC, and an |
|
|
request nonce, the MAC, and an IGMPv3 or MLDv2 general query. |
|
IGMPv3 or MLDv2 general query. |
|
|
|
|
|
|
|
3. When the gateway receives a Membership Query message, it |
|
3. When the gateway receives a Membership Query message, it |
|
|
verifies that the request nonce matches the one sent in the last |
|
verifies that the request nonce matches the one sent in the last |
|
|
Request, and if it does, the gateway saves the request nonce and |
|
Request, and if it does, the gateway saves the request nonce and |
|
|
MAC for use in sending subsequent Membership Update messages. |
|
MAC for use in sending subsequent Membership Update messages. |
|
|
The gateway starts a timer whose expiration will trigger the |
|
The gateway starts a timer whose expiration will trigger the |
|
|
transmission of a new Request message and extracts the |
|
transmission of a new Request message and extracts the |
|
|
encapsulated general query message for processing by the IGMP or |
|
encapsulated general query message for processing by the IGMP or |
|
|
MLD protocol. The query timer duration is specified by the |
|
MLD protocol. The query timer duration is specified by the |
|
|
|
relay in the QQIC field in the IGMPv3 or MLDv2 general query. |
|
relay in the Querier's Query Interval Code (QQIC) field in the |
|
|
|
|
IGMPv3 or MLDv2 general query. The QQIC field is defined in
|
|
|
|
|
Section 4.1.7 of [RFC3376] and Section 5.1.9 of [RFC3810]). |
|
|
|
|
|
|
|
4. The gateway's IGMP or MLD protocol implementation processes the |
|
4. The gateway's IGMP or MLD protocol implementation processes the |
|
|
general query to produce a current-state report. |
|
general query to produce a current-state report. |
|
|
|
|
|
|
|
5. When an IGMP or MLD report is passed to the pseudo-interface, |
|
5. When an IGMP or MLD report is passed to the pseudo-interface, |
|
|
the gateway encapsulates the report in a Membership Update |
|
the gateway encapsulates the report in a Membership Update |
|
|
message and sends it to the relay. The request nonce and MAC |
|
message and sends it to the relay. The request nonce and MAC |
|
|
fields in the Membership Update are assigned the values from the |
|
fields in the Membership Update are assigned the values from the |
|
|
last Membership Query message received for the corresponding |
|
last Membership Query message received for the corresponding |
|
|
group membership protocol (IGMPv3 or MLDv2). |
|
group membership protocol (IGMPv3 or MLDv2). |
|
|
|
|
|
|
|
6. When the relay receives a Membership Update message, it computes |
|
6. When the relay receives a Membership Update message, it computes |
|
|
|
a MAC from a private secret and the request nonce, source IP |
|
a MAC from the message source IP address, source UDP port,
|
|
|
address, and source UDP port carried by the message. The relay |
|
request nonce and a private secret. The relay accepts the |
|
|
accepts the Membership Update message if the received MAC |
|
Membership Update message if the received MAC matches the |
|
|
matches the computed MAC, otherwise the message is ignored. If |
|
computed MAC, otherwise the message is ignored. If the message |
|
|
the message is accepted, the relay may proceed to allocate, |
|
is accepted, the relay may proceed to allocate, refresh, or |
|
|
refresh, or modify tunnel state. This includes making any group |
|
modify tunnel state. This includes making any group membership, |
|
|
membership, routing and forwarding state changes and issuing any |
|
routing and forwarding state changes and issuing any upstream |
|
|
upstream protocol requests required to satisfy the state change. |
|
protocol requests required to satisfy the state change. The |
|
|
The diagram illustrates two scenarios: |
|
diagram illustrates two scenarios: |
|
|
|
|
|
|
|
A. The gateway has not previously reported any group |
|
A. The gateway has not previously reported any group |
|
|
subscriptions and the report does not contain any group |
|
subscriptions and the report does not contain any group |
|
|
subscriptions, so the relay takes no action. |
|
subscriptions, so the relay takes no action. |
|
|
|
|
|
|
|
B. The gateway has previously reported a group subscription so |
|
B. The gateway has previously reported a group subscription so |
|
|
the current-state report lists all current subscriptions. |
|
the current-state report lists all current subscriptions. |
|
|
The relay responds by refreshing tunnel or group state and |
|
The relay responds by refreshing tunnel or group state and |
|
|
resetting any related timers. |
|
resetting any related timers. |
|
|
|
|
|
|
|
|
|
|
|
|
skipping to change at page 22, line 32 skipping to change at page 24, line 35 |
|
assigned the values from the last Membership Query message |
|
assigned the values from the last Membership Query message |
|
|
received for the corresponding group membership protocol (IGMP |
|
received for the corresponding group membership protocol (IGMP |
|
|
or MLD). |
|
or MLD). |
|
|
|
|
|
|
|
The IGMP and MLD protocols may generate multiple messages to |
|
The IGMP and MLD protocols may generate multiple messages to |
|
|
provide robustness against packet loss - each of these must be |
|
provide robustness against packet loss - each of these must be |
|
|
encapsulated in a new Membership Update message and sent to the |
|
encapsulated in a new Membership Update message and sent to the |
|
|
relay. The Querier Robustness Variable (QRV) field in the last |
|
relay. The Querier Robustness Variable (QRV) field in the last |
|
|
IGMP/MLD query delivered to the IGMP/MLD protocol is typically |
|
IGMP/MLD query delivered to the IGMP/MLD protocol is typically |
|
|
used to specify the number of repetitions (i.e., the host adopts |
|
used to specify the number of repetitions (i.e., the host adopts |
|
|
|
the QRV value as its own Robustness Variable value). |
|
the QRV value as its own Robustness Variable value). The QRV
|
|
|
|
|
field is defined in Section 4.1.6 in [RFC3376] and Section 5.1.8 |
|
|
|
|
in [RFC3810]. |
|
|
|
|
|
|
|
9. When the relay receives a Membership Update message, it again |
|
9. When the relay receives a Membership Update message, it again |
|
|
|
computes a MAC from a private secret and the request nonce,
|
|
computes a MAC from the message source IP address, source UDP |
|
|
source IP address, and source UDP port carried by the message.
|
|
port, request nonce and a private secret. The relay accepts the |
|
|
The relay accepts the Membership Update message if the received |
|
Membership Update message if the received MAC matches the |
|
|
MAC matches the computed MAC, otherwise the message is ignored. |
|
computed MAC, otherwise the message is ignored. If the message |
|
|
If the message is accepted, the relay processes the encapsulated |
|
is accepted, the relay processes the encapsulated IGMP/MLD and |
|
|
IGMP/MLD and allocates, modifies or deletes tunnel state |
|
allocates, modifies or deletes tunnel state accordingly. This |
|
|
accordingly. This includes making any group membership, routing |
|
includes making any group membership, routing and forwarding |
|
|
and forwarding state changes and issuing any upstream protocol |
|
state changes and issuing any upstream protocol requests |
|
|
requests required to satisfy the state change. The diagram |
|
required to satisfy the state change. The diagram illustrates |
|
|
illustrates two scenarios: |
|
two scenarios: |
|
|
|
|
|
|
|
A. The gateway wishes to add a group subscription. |
|
A. The gateway wishes to add a group subscription. |
|
|
|
|
|
|
|
B. The gateway wishes to delete a previously reported group |
|
B. The gateway wishes to delete a previously reported group |
|
|
subscription. |
|
subscription. |
|
|
|
|
|
|
|
10. Multicast datagrams transmitted from a source travel through the |
|
10. Multicast datagrams transmitted from a source travel through the |
|
|
native multicast infrastructure to the relay. When the relay |
|
native multicast infrastructure to the relay. When the relay |
|
|
receives a multicast IP datagram that carries a source and |
|
receives a multicast IP datagram that carries a source and |
|
|
destination address for which a gateway has expressed an |
|
destination address for which a gateway has expressed an |
|
|
|
|
|
|
|
skipping to change at page 23, line 39 skipping to change at page 25, line 42 |
|
and be rejected by the relay. |
|
and be rejected by the relay. |
|
|
|
|
|
|
|
A relay will only allocate new tunnel state if the IGMP/MLD report |
|
A relay will only allocate new tunnel state if the IGMP/MLD report |
|
|
carried by the Membership Update message creates one or more group |
|
carried by the Membership Update message creates one or more group |
|
|
subscriptions. |
|
subscriptions. |
|
|
|
|
|
|
|
A relay deallocates tunnel state after one of the following events; |
|
A relay deallocates tunnel state after one of the following events; |
|
|
the gateway sends a Membership Update message containing a report |
|
the gateway sends a Membership Update message containing a report |
|
|
that results in the deletion of all remaining group subscriptions, |
|
that results in the deletion of all remaining group subscriptions, |
|
|
the IGMP/MLD state expires (due to lack of refresh by the gateway), |
|
the IGMP/MLD state expires (due to lack of refresh by the gateway), |
|
|
|
or the relay receives a valid Teardown message from the gateway.
|
|
or the relay receives a valid Teardown message from the gateway (See
|
|
|
|
|
Section 4.2.1.3). |
|
|
|
|
|
|
|
A gateway that accepts or reports group subscriptions for both IPv4 |
|
A gateway that accepts or reports group subscriptions for both IPv4 |
|
|
and IPv6 addresses will send separate Request and Membership Update |
|
and IPv6 addresses will send separate Request and Membership Update |
|
|
messages for each protocol (IPv4/IGMP and IPv6/MLD). |
|
messages for each protocol (IPv4/IGMP and IPv6/MLD). |
|
|
|
|
|
|
|
4.2.1.3. Teardown Sequence |
|
4.2.1.3. Teardown Sequence |
|
|
|
|
|
|
|
A gateway sends a Teardown message to a relay to request that it stop |
|
A gateway sends a Teardown message to a relay to request that it stop |
|
|
delivering Multicast Data messages to a tunnel endpoint created by an |
|
delivering Multicast Data messages to a tunnel endpoint created by an |
|
|
earlier Membership Update message. This message is intended to be |
|
earlier Membership Update message. This message is intended to be |
|
|
used following a gateway address change (See Section 4.2.2.1) to stop |
|
used following a gateway address change (See Section 4.2.2.1) to stop |
|
|
the transmission of undeliverable or duplicate multicast data |
|
the transmission of undeliverable or duplicate multicast data |
|
|
|
messages. Support for the Teardown message is optional - gateways |
|
messages. Gateway support for the Teardown message is optional - |
|
|
are not required to send them and relays are not required to act upon
|
|
gateways are not required to send them and may instead relay on group
|
|
|
them. |
|
membership to expire on the relay.
|
|
|
|
|
|
|
|
Gateway Relay |
|
Gateway Relay |
|
|
------- ----- |
|
------- ----- |
|
|
: Request : |
|
: Request : |
|
|
[1] | N | |
|
[1] | N | |
|
|
|---------------------->| |
|
|---------------------->| |
|
|
| Membership Query | [2] |
|
| Membership Query | [2] |
|
|
| N,MAC,gADDR,gPORT | |
|
| N,MAC,gADDR,gPORT | |
|
|
|<======================| |
|
|<======================| |
|
|
[3] | Membership Update | |
|
[3] | Membership Update | |
|
|
|
|
|
|
|
skipping to change at page 25, line 52 skipping to change at page 27, line 52 |
|
| | | | |
|
| | | | |
|
|
| | *Multicast Data | *IP Packet(S,G) | |
|
| | *Multicast Data | *IP Packet(S,G) | |
|
|
| | gADDR',gPORT' |<------------------() | |
|
| | gADDR',gPORT' |<------------------() | |
|
|
| *IP Packet (S,G) |<======================| | |
|
| *IP Packet (S,G) |<======================| | |
|
|
| ()<------------------| | | |
|
| ()<------------------| | | |
|
|
| | | | |
|
| | | | |
|
|
----------------------:-----------------------:---------------------- |
|
----------------------:-----------------------:---------------------- |
|
|
| | |
|
| | |
|
|
: : |
|
: : |
|
|
|
|
|
|
|
|
Figure 3: Teardown Message Sequence (IGMPv3/MLDv2 Example) |
|
Figure 8: Teardown Message Sequence (IGMPv3/MLDv2 Example) |
|
|
|
|
|
|
|
The following sequence describes how the Membership Query and |
|
The following sequence describes how the Membership Query and |
|
|
Teardown message are used to detect an address change and stop the |
|
Teardown message are used to detect an address change and stop the |
|
|
delivery of Multicast Data messages to an address: |
|
delivery of Multicast Data messages to an address: |
|
|
|
|
|
|
|
1. A gateway sends a Request message containing a random nonce to |
|
1. A gateway sends a Request message containing a random nonce to |
|
|
the relay. |
|
the relay. |
|
|
|
|
|
|
|
2. The relay sends a Membership Query message to the gateway that |
|
2. The relay sends a Membership Query message to the gateway that |
|
|
contains the source IP address (gADDR) and source UDP port |
|
contains the source IP address (gADDR) and source UDP port |
|
|
|
|
|
|
|
skipping to change at page 26, line 48 skipping to change at page 28, line 48 |
|
compares the gateway address and port number values against those |
|
compares the gateway address and port number values against those |
|
|
returned in the previous Membership Query message. |
|
returned in the previous Membership Query message. |
|
|
|
|
|
|
|
7. If the reported address or port has changed, the gateway sends a |
|
7. If the reported address or port has changed, the gateway sends a |
|
|
Teardown message to the relay that contains the request nonce, |
|
Teardown message to the relay that contains the request nonce, |
|
|
MAC, gateway IP address and gateway port number returned in the |
|
MAC, gateway IP address and gateway port number returned in the |
|
|
earlier Membership Query message. The gateway may send the |
|
earlier Membership Query message. The gateway may send the |
|
|
Teardown message multiple times where the number of repetitions |
|
Teardown message multiple times where the number of repetitions |
|
|
is governed by the Querier Robustness Variable (QRV) value |
|
is governed by the Querier Robustness Variable (QRV) value |
|
|
contained in the IGMPv3/MLDv2 general query carried by the |
|
contained in the IGMPv3/MLDv2 general query carried by the |
|
|
|
original Membership Query. The gateway continues to process the |
|
original Membership Query (See Section 4.1.6 in [RFC3376] and
|
|
|
new Membership Query message as usual. |
|
Section 5.1.8 in [RFC3810]). The gateway continues to process |
|
|
|
|
the new Membership Query message as usual. |
|
|
|
|
|
|
|
8. When the relay receives a Teardown message, it computes a MAC |
|
8. When the relay receives a Teardown message, it computes a MAC |
|
|
|
from a private secret and the request nonce, gateway IP address, |
|
from the message source IP address, source UDP port, request
|
|
|
and gateway port number carried by the Teardown message. The |
|
nonce and a private secret. The relay accepts the Teardown |
|
|
relay accepts the Teardown message if the received MAC matches |
|
message if the received MAC matches the computed MAC, otherwise |
|
|
the computed MAC, otherwise the message is ignored. If the |
|
the message is ignored. If the message is accepted, the relay |
|
|
message is accepted, the relay makes any group membership, |
|
makes any group membership, routing and forwarding state changes |
|
|
routing and forwarding state changes required to stop the |
|
required to stop the transmission of Multicast Data messages to |
|
|
transmission of Multicast Data messages to that address. |
|
that address. |
|
|
|
|
|
|
|
4.2.1.4. Timeout and Retransmission |
|
4.2.1.4. Timeout and Retransmission |
|
|
|
|
|
|
|
The AMT protocol does not establish any requirements regarding what |
|
The AMT protocol does not establish any requirements regarding what |
|
|
actions a gateway should take if it fails to receive a response from |
|
actions a gateway should take if it fails to receive a response from |
|
|
a relay. A gateway implementation may wait for an indefinite period |
|
a relay. A gateway implementation may wait for an indefinite period |
|
|
of time to receive a response, may set a time limit on how long to |
|
of time to receive a response, may set a time limit on how long to |
|
|
wait for a response, may retransmit messages should the time limit be |
|
wait for a response, may retransmit messages should the time limit be |
|
|
reached, may limit the number of retransmissions, or may simply |
|
reached, may limit the number of retransmissions, or may simply |
|
|
report an error. |
|
report an error. |
|
|
|
|
|
|
|
skipping to change at page 30, line 6 skipping to change at page 32, line 21 |
|
| |---------->| |--------->| | |
|
| |---------->| |--------->| | |
|
|
| Gateway | | Mapping | | Relay | |
|
| Gateway | | Mapping | | Relay | |
|
|
| |<----------| |<---------| | |
|
| |<----------| |<---------| | |
|
|
+---------+ +-----------+ +---------+ |
|
+---------+ +-----------+ +---------+ |
|
|
| | |
|
| | |
|
|
+---------+ |
|
+---------+ |
|
|
Multicast Data Multicast Data |
|
Multicast Data Multicast Data |
|
|
src: rADDR:rPORT src: rADDR:rPORT |
|
src: rADDR:rPORT src: rADDR:rPORT |
|
|
dst: iADDR:iPORT dst: eADDR:ePORT |
|
dst: iADDR:iPORT dst: eADDR:ePORT |
|
|
|
|
|
|
|
|
Network Address Translation in AMT |
|
Figure 9: Network Address Translation in AMT |
|
|
|
|
|
|
|
AMT provides automatic NAT traversal by using the source IP address |
|
AMT provides automatic NAT traversal by using the source IP address |
|
|
and UDP port carried by the Membership Update message as received at |
|
and UDP port carried by the Membership Update message as received at |
|
|
the relay as the destination address for any Multicast Data messages |
|
the relay as the destination address for any Multicast Data messages |
|
|
the relay sends back as a result. |
|
the relay sends back as a result. |
|
|
|
|
|
|
|
The NAT mapping created by a Membership Update message will |
|
The NAT mapping created by a Membership Update message will |
|
|
eventually expire unless it is refreshed by a passing message. This |
|
eventually expire unless it is refreshed by a passing message. This |
|
|
refresh will occur each time the gateway performs the periodic update |
|
refresh will occur each time the gateway performs the periodic update |
|
|
required to refresh group state within the relay (See |
|
required to refresh group state within the relay (See |
|
|
|
|
|
|
|
skipping to change at page 30, line 37 skipping to change at page 32, line 52 |
|
_______ | ___ | ______ | ______ | ___ | _______ |
|
_______ | ___ | ______ | ______ | ___ | _______ |
|
|
|IGMP|IP| v |AMT| v |UDP|IP| v |IP|UDP| v |AMT| v |IP|IGMP| |
|
|IGMP|IP| v |AMT| v |UDP|IP| v |IP|UDP| v |AMT| v |IP|IGMP| |
|
|
| | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | | |
|
|
| |<------------------------------------------------------->| | |
|
| |<------------------------------------------------------->| | |
|
|
|____| | | | | | | | | | | | | |____| |
|
|____| | | | | | | | | | | | | |____| |
|
|
| |<--------------------------------------------------| | |
|
| |<--------------------------------------------------| | |
|
|
|_______| ^ |___| ^ |___|__| ^ |__|___| ^ |___| ^ |_______| |
|
|_______| ^ |___| ^ |___|__| ^ |__|___| ^ |___| ^ |_______| |
|
|
| | | | | |
|
| | | | | |
|
|
IP AMT:IP IP:UDP:AMT:IP AMT:IP IP |
|
IP AMT:IP IP:UDP:AMT:IP AMT:IP IP |
|
|
|
|
|
|
|
|
AMT Encapsulation |
|
Figure 10: AMT Encapsulation |
|
|
|
|
|
|
|
The IGMP and MLD messages used in AMT are exchanged as complete IP |
|
The IGMP and MLD messages used in AMT are exchanged as complete IP |
|
|
datagrams. These IP datagrams are encapsulated in AMT messages that |
|
datagrams. These IP datagrams are encapsulated in AMT messages that |
|
|
are transmitted using UDP. The same holds true for multicast traffic |
|
are transmitted using UDP. The same holds true for multicast traffic |
|
|
- each multicast IP datagram or datagram fragment that arrives at the |
|
- each multicast IP datagram or datagram fragment that arrives at the |
|
|
relay is encapsulated in an AMT message and transmitted to one or |
|
relay is encapsulated in an AMT message and transmitted to one or |
|
|
more gateways via UDP. |
|
more gateways via UDP. |
|
|
|
|
|
|
|
The IP protocol of the encapsulated packets need not match the IP |
|
The IP protocol of the encapsulated packets need not match the IP |
|
|
protocol used to send the AMT messages. AMT messages sent via IPv4 |
|
protocol used to send the AMT messages. AMT messages sent via IPv4 |
|
|
|
|
|
|
|
skipping to change at page 32, line 5 skipping to change at page 33, line 36 |
|
specifically allows zero-valued UDP checksums on the multicast data |
|
specifically allows zero-valued UDP checksums on the multicast data |
|
|
messages. This is not an issue in UDP over IPv4 as the UDP checksum |
|
messages. This is not an issue in UDP over IPv4 as the UDP checksum |
|
|
field may be set to zero. However, this is a problem for UDP over |
|
field may be set to zero. However, this is a problem for UDP over |
|
|
IPv6 as that protocol requires a valid, non-zero checksum in UDP |
|
IPv6 as that protocol requires a valid, non-zero checksum in UDP |
|
|
datagrams [RFC2460]. Messages sent over IPv6 with a UDP checksum of |
|
datagrams [RFC2460]. Messages sent over IPv6 with a UDP checksum of |
|
|
zero may fail to reach the gateway. This is a well known issue for |
|
zero may fail to reach the gateway. This is a well known issue for |
|
|
UDP-based tunneling protocols that is described |
|
UDP-based tunneling protocols that is described |
|
|
[I-D.ietf-6man-udpzero]. A recommended solution is described in |
|
[I-D.ietf-6man-udpzero]. A recommended solution is described in |
|
|
[I-D.ietf-6man-udpchecksums]. |
|
[I-D.ietf-6man-udpchecksums]. |
|
|
|
|
|
|
|
|
|
|
4.2.2.4. UDP Fragmentation |
|
|
|
|
|
|
|
|
|
The encapsulation of a multicast IP datagrams within an AMT data |
|
|
|
|
message may produce a UDP datagram that exceeds the MTU of a |
|
|
|
|
downstream interface. Should this occur, a relay may fragment the |
|
|
|
|
data message or discard it. The IP protocol and the IPv4 "Don't |
|
|
|
|
Fragment" (DF) bit [RFC0791] in the encapsulated multicast datagram |
|
|
|
|
determines which action to take. If an AMT data message requires |
|
|
|
|
fragmentation, the relay will discard the message packet if the DF- |
|
|
|
|
bit is set in the encapsulated packet or if the encapsulated packet |
|
|
|
|
is an IPv6 datagram. If the packet is an IPv4 datagram and the DF- |
|
|
|
|
bit is cleared, the relay will fragment the data message as required |
|
|
|
|
to deliver the encapsulated multicast datagram (or separate multicast |
|
|
|
|
datagram fragments). The behavior is described in Section 5.3.3.6. |
|
|
|
|
|
|
|
5. Protocol Description |
|
5. Protocol Description |
|
|
|
|
|
|
|
This section provides a normative description of the AMT protocol. |
|
This section provides a normative description of the AMT protocol. |
|
|
|
|
|
|
|
5.1. Protocol Messages |
|
5.1. Protocol Messages |
|
|
|
|
|
|
|
The AMT protocol defines seven message types for control and |
|
The AMT protocol defines seven message types for control and |
|
|
encapsulation. These messages are assigned the following names and |
|
encapsulation. These messages are assigned the following names and |
|
|
numeric identifiers: |
|
numeric identifiers: |
|
|
|
|
|
|
|
|
|
|
|
|
skipping to change at page 33, line 8 skipping to change at page 35, line 8 |
|
translation before arriving at the relay. |
|
translation before arriving at the relay. |
|
|
|
|
|
|
|
Source UDP Port - The UDP port number on which the gateway will |
|
Source UDP Port - The UDP port number on which the gateway will |
|
|
listen for a relay response. Note: The value of this field may be |
|
listen for a relay response. Note: The value of this field may be |
|
|
changed as a result of network address translation before arriving |
|
changed as a result of network address translation before arriving |
|
|
at the relay. |
|
at the relay. |
|
|
|
|
|
|
|
Destination IP Address - An anycast or unicast IP address, i.e., the |
|
Destination IP Address - An anycast or unicast IP address, i.e., the |
|
|
Relay Discovery Address advertised by a relay. |
|
Relay Discovery Address advertised by a relay. |
|
|
|
|
|
|
|
|
Destination UDP Port - The IANA-assigned AMT port number.
|
|
Destination UDP Port - The IANA-assigned AMT port number (See
|
|
|
|
|
Section 7.3). |
|
|
|
|
|
|
|
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 |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| V=0 |Type=1 | Reserved | |
|
| V=0 |Type=1 | Reserved | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| Discovery Nonce | |
|
| Discovery Nonce | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
|
|
|
|
|
|
Relay Discovery Message Format |
|
Figure 11: Relay Discovery Message Format |
|
|
|
|
|
|
|
5.1.1.1. Version (V) |
|
5.1.1.1. Version (V) |
|
|
|
|
|
|
|
The protocol version number for this message is 0. |
|
The protocol version number for this message is 0. |
|
|
|
|
|
|
|
5.1.1.2. Type |
|
5.1.1.2. Type |
|
|
|
|
|
|
|
The type number for this message is 1. |
|
The type number for this message is 1. |
|
|
|
|
|
|
|
5.1.1.3. Reserved |
|
5.1.1.3. Reserved |
|
|
|
|
|
|
|
skipping to change at page 34, line 34 skipping to change at page 36, line 34 |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| V=0 |Type=2 | Reserved | |
|
| V=0 |Type=2 | Reserved | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| Discovery Nonce | |
|
| Discovery Nonce | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| | |
|
| | |
|
|
~ Relay Address (IPv4 or IPv6) ~ |
|
~ Relay Address (IPv4 or IPv6) ~ |
|
|
| | |
|
| | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
|
|
|
|
|
|
Relay Advertisement Message Format |
|
Figure 12: Relay Advertisement Message Format |
|
|
|
|
|
|
|
5.1.2.1. Version (V) |
|
5.1.2.1. Version (V) |
|
|
|
|
|
|
|
The protocol version number for this message is 0. |
|
The protocol version number for this message is 0. |
|
|
|
|
|
|
|
5.1.2.2. Type |
|
5.1.2.2. Type |
|
|
|
|
|
|
|
The type number for this message is 2. |
|
The type number for this message is 2. |
|
|
|
|
|
|
|
5.1.2.3. Reserved |
|
5.1.2.3. Reserved |
|
|
|
|
|
|
|
skipping to change at page 36, line 13 skipping to change at page 38, line 13 |
|
Destination UDP Port - The IANA-assigned AMT port number. |
|
Destination UDP Port - The IANA-assigned AMT port number. |
|
|
|
|
|
|
|
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 |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| V=0 |Type=3 | Reserved |P| Reserved | |
|
| V=0 |Type=3 | Reserved |P| Reserved | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| Request Nonce | |
|
| Request Nonce | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
|
|
|
|
|
|
Request Message Format |
|
Figure 13: Request Message Format |
|
|
|
|
|
|
|
5.1.3.1. Version (V) |
|
5.1.3.1. Version (V) |
|
|
|
|
|
|
|
The protocol version number for this message is 0. |
|
The protocol version number for this message is 0. |
|
|
|
|
|
|
|
5.1.3.2. Type |
|
5.1.3.2. Type |
|
|
|
|
|
|
|
The type number for this message is 3. |
|
The type number for this message is 3. |
|
|
|
|
|
|
|
5.1.3.3. Reserved |
|
5.1.3.3. Reserved |
|
|
|
|
|
|
|
skipping to change at page 38, line 31 skipping to change at page 40, line 31 |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |
|
|
| | |
|
| | |
|
|
+ + |
|
+ + |
|
|
| Gateway IP Address (IPv4 or IPv6) | |
|
| Gateway IP Address (IPv4 or IPv6) | |
|
|
+ + |
|
+ + |
|
|
| | |
|
| | |
|
|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| | |
|
| | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
|
|
|
|
|
|
Membership Query Message Format |
|
Figure 14: Membership Query Message Format |
|
|
|
|
|
|
|
5.1.4.1. Version (V) |
|
5.1.4.1. Version (V) |
|
|
|
|
|
|
|
The protocol version number for this message is 0. |
|
The protocol version number for this message is 0. |
|
|
|
|
|
|
|
5.1.4.2. Type |
|
5.1.4.2. Type |
|
|
|
|
|
|
|
The type number for this message is 4. |
|
The type number for this message is 4. |
|
|
|
|
|
|
|
5.1.4.3. Reserved |
|
5.1.4.3. Reserved |
|
|
|
|
|
|
|
skipping to change at page 40, line 4 skipping to change at page 42, line 4 |
|
IPv4:IGMPv3 Membership Query |
|
IPv4:IGMPv3 Membership Query |
|
|
|
|
|
|
|
IPv6:MLDv2 Listener Query |
|
IPv6:MLDv2 Listener Query |
|
|
|
|
|
|
|
The source address carried by the query message should be set as |
|
The source address carried by the query message should be set as |
|
|
described in Section 5.3.3.3. |
|
described in Section 5.3.3.3. |
|
|
|
|
|
|
|
The Querier's Query Interval Code (QQIC) field in the general query |
|
The Querier's Query Interval Code (QQIC) field in the general query |
|
|
is used by a relay to specify the time offset a gateway should use to |
|
is used by a relay to specify the time offset a gateway should use to |
|
|
schedule a new three-way handshake to refresh the group membership |
|
schedule a new three-way handshake to refresh the group membership |
|
|
|
state within the relay (current time + Query Interval). |
|
state within the relay (current time + Query Interval). The QQIC
|
|
|
|
|
field is defined in Section 4.1.7 in [RFC3376] and Section 5.1.9 in |
|
|
|
|
[RFC3810]. |
|
|
|
|
|
|
|
The Querier's Robustness Variable (QRV) field in the general query is |
|
The Querier's Robustness Variable (QRV) field in the general query is |
|
|
used by a relay to specify the number of times a gateway should |
|
used by a relay to specify the number of times a gateway should |
|
|
retransmit unsolicited membership reports, encapsulated within |
|
retransmit unsolicited membership reports, encapsulated within |
|
|
Membership Update messages, and optionally, the number of times to |
|
Membership Update messages, and optionally, the number of times to |
|
|
|
send a Teardown message. |
|
send a Teardown message. The QRV field is defined in Section 4.1.6
|
|
|
|
|
in [RFC3376] and Section 5.1.8 in [RFC3810]. |
|
|
|
|
|
|
|
5.1.4.9. Gateway Address Fields |
|
5.1.4.9. Gateway Address Fields |
|
|
|
|
|
|
|
The Gateway Port Number and Gateway Address fields are present in the |
|
The Gateway Port Number and Gateway Address fields are present in the |
|
|
Membership Query message if, and only if, the "G" flag is set. |
|
Membership Query message if, and only if, the "G" flag is set. |
|
|
|
|
|
|
|
A gateway need not parse the encapsulated IP datagram to determine |
|
A gateway need not parse the encapsulated IP datagram to determine |
|
|
the position of these fields within the UDP datagram containing the |
|
the position of these fields within the UDP datagram containing the |
|
|
Membership Query message - if the G-flag is set, the gateway may |
|
Membership Query message - if the G-flag is set, the gateway may |
|
|
simply subtract the total length of the fields (18 bytes) from the |
|
simply subtract the total length of the fields (18 bytes) from the |
|
|
|
|
|
|
|
skipping to change at page 41, line 39 skipping to change at page 43, line 42 |
|
|
|
|
|
|
Source UDP Port - The UDP port number on which the gateway will |
|
Source UDP Port - The UDP port number on which the gateway will |
|
|
listen for Multicast Data messages from the relay. This port must |
|
listen for Multicast Data messages from the relay. This port must |
|
|
be the same port used to send the initial Request message or the |
|
be the same port used to send the initial Request message or the |
|
|
message will be ignored. Note: The value of this field may be |
|
message will be ignored. Note: The value of this field may be |
|
|
changed as a result of network address translation before arriving |
|
changed as a result of network address translation before arriving |
|
|
at the relay. |
|
at the relay. |
|
|
|
|
|
|
|
Destination IP Address - The unicast IP address of the relay. |
|
Destination IP Address - The unicast IP address of the relay. |
|
|
|
|
|
|
|
|
Destination UDP Port - The IANA-assigned AMT UDP port number. |
|
Destination UDP Port - The IANA-assigned AMT port number. |
|
|
|
|
|
|
|
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 |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| V=0 |Type=5 | Reserved | Response MAC | |
|
| V=0 |Type=5 | Reserved | Response MAC | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |
|
|
| | |
|
| | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| Request Nonce | |
|
| Request Nonce | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| | |
|
| | |
|
|
| Encapsulated Group Membership Update Message | |
|
| Encapsulated Group Membership Update Message | |
|
|
~ IPv4:IGMP(Membership Report|Leave Group) ~ |
|
~ IPv4:IGMP(Membership Report|Leave Group) ~ |
|
|
| IPv6:MLD(Listener Report|Listener Done) | |
|
| IPv6:MLD(Listener Report|Listener Done) | |
|
|
| | |
|
| | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
|
|
|
|
|
|
Membership Update Message Format |
|
Figure 15: Membership Update Message Format |
|
|
|
|
|
|
|
5.1.5.1. Version (V) |
|
5.1.5.1. Version (V) |
|
|
|
|
|
|
|
The protocol version number for this message is 0. |
|
The protocol version number for this message is 0. |
|
|
|
|
|
|
|
5.1.5.2. Type |
|
5.1.5.2. Type |
|
|
|
|
|
|
|
The type number for this message is 5. |
|
The type number for this message is 5. |
|
|
|
|
|
|
|
5.1.5.3. Reserved |
|
5.1.5.3. Reserved |
|
|
|
|
|
|
|
skipping to change at page 44, line 17 skipping to change at page 46, line 17 |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| V=0 |Type=6 | Reserved | | |
|
| V=0 |Type=6 | Reserved | | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |
|
|
| | |
|
| | |
|
|
~ IP Multicast Packet ~ |
|
~ IP Multicast Packet ~ |
|
|
| | |
|
| | |
|
|
+ - - - - - - - - - - - - - - - - - - - - - - - -+ |
|
+ - - - - - - - - - - - - - - - - - - - - - - - -+ |
|
|
| : : : : |
|
| : : : : |
|
|
+-+-+-+-+-+-+-+-+- - - - - - - - - - - - - - - - - - - - - - - - |
|
+-+-+-+-+-+-+-+-+- - - - - - - - - - - - - - - - - - - - - - - - |
|
|
|
|
|
|
|
|
Multicast Data Message Format |
|
Figure 16: Multicast Data Message Format |
|
|
|
|
|
|
|
5.1.6.1. Version (V) |
|
5.1.6.1. Version (V) |
|
|
|
|
|
|
|
The protocol version number for this message is 0. |
|
The protocol version number for this message is 0. |
|
|
|
|
|
|
|
5.1.6.2. Type |
|
5.1.6.2. Type |
|
|
|
|
|
|
|
The type number for this message is 6. |
|
The type number for this message is 6. |
|
|
|
|
|
|
|
5.1.6.3. Reserved |
|
5.1.6.3. Reserved |
|
|
|
|
|
|
|
skipping to change at page 45, line 42 skipping to change at page 47, line 42 |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |
|
|
| | |
|
| | |
|
|
+ + |
|
+ + |
|
|
| Gateway IP Address (IPv4 or IPv6) | |
|
| Gateway IP Address (IPv4 or IPv6) | |
|
|
+ + |
|
+ + |
|
|
| | |
|
| | |
|
|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| | |
|
| | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
|
|
|
|
|
|
Membership Teardown Message Format |
|
Figure 17: Membership Teardown Message Format |
|
|
|
|
|
|
|
5.1.7.1. Version (V) |
|
5.1.7.1. Version (V) |
|
|
|
|
|
|
|
The protocol version number for this message is 0. |
|
The protocol version number for this message is 0. |
|
|
|
|
|
|
|
5.1.7.2. Type |
|
5.1.7.2. Type |
|
|
|
|
|
|
|
The type number for this message is 7. |
|
The type number for this message is 7. |
|
|
|
|
|
|
|
5.1.7.3. Reserved |
|
5.1.7.3. Reserved |
|
|
|
|
|
|
|
skipping to change at page 46, line 18 skipping to change at page 48, line 18 |
|
the relay. |
|
the relay. |
|
|
|
|
|
|
|
5.1.7.4. Response MAC |
|
5.1.7.4. Response MAC |
|
|
|
|
|
|
|
A 48-bit value copied from the Response MAC field (Section 5.1.4.6) |
|
A 48-bit value copied from the Response MAC field (Section 5.1.4.6) |
|
|
in the last Membership Query message the relay sent to the gateway |
|
in the last Membership Query message the relay sent to the gateway |
|
|
endpoint address of the tunnel to be torn down. The gateway endpoint |
|
endpoint address of the tunnel to be torn down. The gateway endpoint |
|
|
address is provided by the Gateway IP Address and Gateway Port Number |
|
address is provided by the Gateway IP Address and Gateway Port Number |
|
|
fields carried by the Membership Query message. The relay validates |
|
fields carried by the Membership Query message. The relay validates |
|
|
the Teardown message by comparing this value with one computed from |
|
the Teardown message by comparing this value with one computed from |
|
|
|
the Request Nonce, Gateway Port Number and Gateway IP Address fields |
|
the Gateway IP Address, Gateway Port Number, Request Nonce fields and
|
|
|
(just as it does in the Membership Update message). |
|
a private secret (just as it does in the Membership Update message). |
|
|
|
|
|
|
|
5.1.7.5. Request Nonce |
|
5.1.7.5. Request Nonce |
|
|
|
|
|
|
|
A 32-bit value copied from the Request Nonce field (Section 5.1.4.7) |
|
A 32-bit value copied from the Request Nonce field (Section 5.1.4.7) |
|
|
in the last Membership Query message the relay sent to the gateway |
|
in the last Membership Query message the relay sent to the gateway |
|
|
endpoint address of the tunnel to be torn down. The gateway endpoint |
|
endpoint address of the tunnel to be torn down. The gateway endpoint |
|
|
address is provided by the Gateway IP Address and Gateway Port Number |
|
address is provided by the Gateway IP Address and Gateway Port Number |
|
|
fields carried by the Membership Query message. This value must |
|
fields carried by the Membership Query message. This value must |
|
|
match that used by the relay to compute the value stored in the |
|
match that used by the relay to compute the value stored in the |
|
|
Response MAC field. |
|
Response MAC field. |
|
|
|
|
|
|
|
skipping to change at page 48, line 15 skipping to change at page 50, line 15 |
|
pseudo-interface might not possess a valid IPv6 address. As with |
|
pseudo-interface might not possess a valid IPv6 address. As with |
|
|
IGMP, a relay will accept an MLD report carried by a Membership |
|
IGMP, a relay will accept an MLD report carried by a Membership |
|
|
Update message regardless of the source address it carries. See |
|
Update message regardless of the source address it carries. See |
|
|
Section 5.3.1. |
|
Section 5.3.1. |
|
|
|
|
|
|
|
The gateway IGMP/MLD implementation SHOULD retransmit unsolicited |
|
The gateway IGMP/MLD implementation SHOULD retransmit unsolicited |
|
|
membership state-change reports and merge new state change reports |
|
membership state-change reports and merge new state change reports |
|
|
with pending reports as described in Section 5.1 of [RFC3376] and |
|
with pending reports as described in Section 5.1 of [RFC3376] and |
|
|
Section 6.1 of [RFC3810]. The number of retransmissions is specified |
|
Section 6.1 of [RFC3810]. The number of retransmissions is specified |
|
|
by the relay in the Querier's Robustness Variable (QRV) field in the |
|
by the relay in the Querier's Robustness Variable (QRV) field in the |
|
|
|
last general query forwarded by the pseudo-interface. |
|
last general query forwarded by the pseudo-interface. See Section
|
|
|
|
|
4.1.6 in [RFC3376] and Section 5.1.8 in [RFC3810]. |
|
|
|
|
|
|
|
The gateway IGMP/MLD implementation SHOULD handle general query |
|
The gateway IGMP/MLD implementation SHOULD handle general query |
|
|
messages as described in Section 5.2 of [RFC3376] and Section 6.2 of |
|
messages as described in Section 5.2 of [RFC3376] and Section 6.2 of |
|
|
[RFC3810], but MAY ignore the Max Resp Code field value and generate |
|
[RFC3810], but MAY ignore the Max Resp Code field value and generate |
|
|
a current state report without any delay. |
|
a current state report without any delay. |
|
|
|
|
|
|
|
An IPv4 gateway implementation MUST accept IPv4 datagrams that carry |
|
An IPv4 gateway implementation MUST accept IPv4 datagrams that carry |
|
|
the general query variant of the IGMPv3 Membership Query message, as |
|
the general query variant of the IGMPv3 Membership Query message, as |
|
|
described in Section 4 of [RFC3376]. The gateway MUST accept the |
|
described in Section 4 of [RFC3376]. The gateway MUST accept the |
|
|
IGMP datagram regardless of the IP source address carried by that |
|
IGMP datagram regardless of the IP source address carried by that |
|
|
|
|
|
|
|
skipping to change at page 50, line 29 skipping to change at page 52, line 36 |
|
o Optionally execute the membership query procedure described in |
|
o Optionally execute the membership query procedure described in |
|
|
Section 5.2.3.5 to start the periodic membership update cycle. |
|
Section 5.2.3.5 to start the periodic membership update cycle. |
|
|
|
|
|
|
|
5.2.3.2. Handling AMT Messages |
|
5.2.3.2. Handling AMT Messages |
|
|
|
|
|
|
|
A gateway MUST ignore any datagram it receives that cannot be |
|
A gateway MUST ignore any datagram it receives that cannot be |
|
|
interpreted as a Relay Advertisement, Membership Query, or Multicast |
|
interpreted as a Relay Advertisement, Membership Query, or Multicast |
|
|
Data message. The handling of Relay Advertisement, Membership Query, |
|
Data message. The handling of Relay Advertisement, Membership Query, |
|
|
and Multicast Data messages is addressed in the sections that follow. |
|
and Multicast Data messages is addressed in the sections that follow. |
|
|
|
|
|
|
|
|
|
|
A gateway that conforms to this specification MUST ignore any message
|
|
|
|
|
with a Version field value other than zero. |
|
|
|
|
|
|
|
While listening for AMT messages, a gateway may be notified that an |
|
While listening for AMT messages, a gateway may be notified that an |
|
|
ICMP Destination Unreachable message was received as a result of an |
|
ICMP Destination Unreachable message was received as a result of an |
|
|
AMT message transmission. Handling of ICMP Destination Unreachable |
|
AMT message transmission. Handling of ICMP Destination Unreachable |
|
|
messages is described in Section 5.2.3.9. |
|
messages is described in Section 5.2.3.9. |
|
|
|
|
|
|
|
5.2.3.3. Handling Multicast Data Messages |
|
5.2.3.3. Handling Multicast Data Messages |
|
|
|
|
|
|
|
A gateway may receive Multicast Data messages after it sends a |
|
A gateway may receive Multicast Data messages after it sends a |
|
|
Membership Update message to a relay that adds a group subscription. |
|
Membership Update message to a relay that adds a group subscription. |
|
|
The gateway may continue to receive Multicast Data messages long |
|
The gateway may continue to receive Multicast Data messages long |
|
|
|
|
|
|
|
skipping to change at page 52, line 11 skipping to change at page 54, line 17 |
|
|
|
|
|
|
o After the gateway receives a Membership Query message with the |
|
o After the gateway receives a Membership Query message with the |
|
|
L-flag set to 1. |
|
L-flag set to 1. |
|
|
|
|
|
|
|
5.2.3.4.2. Sending a Relay Discovery Message |
|
5.2.3.4.2. Sending a Relay Discovery Message |
|
|
|
|
|
|
|
A gateway sends a Relay Discovery message to a relay to start the |
|
A gateway sends a Relay Discovery message to a relay to start the |
|
|
relay discovery process. |
|
relay discovery process. |
|
|
|
|
|
|
|
The gateway MUST send the Relay Discovery message using the current |
|
The gateway MUST send the Relay Discovery message using the current |
|
|
|
Relay Discovery Address and IANA-assigned UDP port number as the |
|
Relay Discovery Address and IANA-assigned AMT port number as the |
|
|
destination. The Discovery Nonce value in the Relay Discovery |
|
destination. The Discovery Nonce value in the Relay Discovery |
|
|
message MUST be computed as described in Section 5.2.3.4.5. |
|
message MUST be computed as described in Section 5.2.3.4.5. |
|
|
|
|
|
|
|
The gateway MUST save a copy of Relay Discovery message or save the |
|
The gateway MUST save a copy of Relay Discovery message or save the |
|
|
Discovery Nonce value for possible retransmission and verification of |
|
Discovery Nonce value for possible retransmission and verification of |
|
|
a Relay Advertisement response. |
|
a Relay Advertisement response. |
|
|
|
|
|
|
|
When a gateway sends a Relay Discovery message, it may be notified |
|
When a gateway sends a Relay Discovery message, it may be notified |
|
|
that an ICMP Destination Unreachable message was received as a result |
|
that an ICMP Destination Unreachable message was received as a result |
|
|
of an earlier AMT message transmission. Handling of ICMP Destination |
|
of an earlier AMT message transmission. Handling of ICMP Destination |
|
|
|
|
|
|
|
skipping to change at page 54, line 48 skipping to change at page 56, line 48 |
|
|------------------------------------>| |
|
|------------------------------------>| |
|
|
| | | |
|
| | | |
|
|
| Membership Query | | |
|
| Membership Query | | |
|
|
|<====================================| |
|
|<====================================| |
|
|
Start | | | |
|
Start | | | |
|
|
(QT)<--------| Membership Update | | |
|
(QT)<--------| Membership Update | | |
|
|
|====================================>| |
|
|====================================>| |
|
|
| | | |
|
| | | |
|
|
: : : |
|
: : : |
|
|
|
|
|
|
|
|
Teardown After Relay Address Change |
|
Figure 18: Teardown After Relay Address Change |
|
|
|
|
|
|
|
5.2.3.4.5. Discovery Nonce Generation |
|
5.2.3.4.5. Discovery Nonce Generation |
|
|
|
|
|
|
|
The discovery nonce MUST be a random, non-zero, 32-bit value, and if |
|
The discovery nonce MUST be a random, non-zero, 32-bit value, and if |
|
|
possible, SHOULD be computed using a cryptographically secure pseudo |
|
possible, SHOULD be computed using a cryptographically secure pseudo |
|
|
random number generator. A new nonce SHOULD be generated each time |
|
random number generator. A new nonce SHOULD be generated each time |
|
|
the gateway restarts the relay discovery process. The same nonce |
|
the gateway restarts the relay discovery process. The same nonce |
|
|
SHOULD be used when retransmitting a Relay Discovery message. |
|
SHOULD be used when retransmitting a Relay Discovery message. |
|
|
|
|
|
|
|
5.2.3.5. Membership Query Procedure |
|
5.2.3.5. Membership Query Procedure |
|
|
|
|
|
|
|
skipping to change at page 60, line 24 skipping to change at page 62, line 24 |
|
When a gateway sends a Membership Update message, it may be notified |
|
When a gateway sends a Membership Update message, it may be notified |
|
|
that an ICMP Destination Unreachable message was received as a result |
|
that an ICMP Destination Unreachable message was received as a result |
|
|
of an earlier AMT message transmission. Handling of ICMP Destination |
|
of an earlier AMT message transmission. Handling of ICMP Destination |
|
|
Unreachable messages is described in Section 5.2.3.9. |
|
Unreachable messages is described in Section 5.2.3.9. |
|
|
|
|
|
|
|
5.2.3.7. Teardown Procedure |
|
5.2.3.7. Teardown Procedure |
|
|
|
|
|
|
|
This section describes gateway requirements related to the teardown |
|
This section describes gateway requirements related to the teardown |
|
|
message sequence described in Section 4.2.1.3. |
|
message sequence described in Section 4.2.1.3. |
|
|
|
|
|
|
|
|
Gateway support for the Teardown message is OPTIONAL but RECOMMENDED. |
|
Gateway support for the Teardown message is RECOMMENDED. |
|
|
|
|
|
|
|
A gateway that supports Teardown SHOULD make use of Teardown |
|
A gateway that supports Teardown SHOULD make use of Teardown |
|
|
functionality if it receives a Membership Query message from a relay |
|
functionality if it receives a Membership Query message from a relay |
|
|
that has the "G" flag set to indicate that it contains valid gateway |
|
that has the "G" flag set to indicate that it contains valid gateway |
|
|
address fields. |
|
address fields. |
|
|
|
|
|
|
|
5.2.3.7.1. Handling a Membership Query Message |
|
5.2.3.7.1. Handling a Membership Query Message |
|
|
|
|
|
|
|
As described in Section 5.2.3.5.4, if a gateway supports the Teardown |
|
As described in Section 5.2.3.5.4, if a gateway supports the Teardown |
|
|
message, has reported active group subscriptions, and receives a |
|
message, has reported active group subscriptions, and receives a |
|
|
|
|
|
|
|
skipping to change at page 61, line 10 skipping to change at page 63, line 10 |
|
Request Nonce, Response MAC, Gateway IP Address and Gateway Port |
|
Request Nonce, Response MAC, Gateway IP Address and Gateway Port |
|
|
Number fields from the Membership Query message that provided the |
|
Number fields from the Membership Query message that provided the |
|
|
Response MAC for the last Membership Update message sent, into the |
|
Response MAC for the last Membership Update message sent, into the |
|
|
corresponding fields of the Teardown message. |
|
corresponding fields of the Teardown message. |
|
|
|
|
|
|
|
A gateway MUST send the Teardown message using the Relay Address and |
|
A gateway MUST send the Teardown message using the Relay Address and |
|
|
IANA-assigned AMT port number as the destination. A gateway MAY send |
|
IANA-assigned AMT port number as the destination. A gateway MAY send |
|
|
the Teardown message multiple times for robustness. The gateway |
|
the Teardown message multiple times for robustness. The gateway |
|
|
SHOULD use the Querier's Robustness Variable (QRV) field contained in |
|
SHOULD use the Querier's Robustness Variable (QRV) field contained in |
|
|
the query encapsulated within the last Membership Query to set the |
|
the query encapsulated within the last Membership Query to set the |
|
|
|
limit on the number of retransmissions. If the gateway sends the |
|
limit on the number of retransmissions (See Section 4.1.6 in
|
|
|
|
|
[RFC3376] and Section 5.1.7 in [RFC3810]). If the gateway sends the |
|
|
Teardown message multiple times, it SHOULD insert a delay between |
|
Teardown message multiple times, it SHOULD insert a delay between |
|
|
each transmission using the timing algorithm employed in IGMP/MLD for |
|
each transmission using the timing algorithm employed in IGMP/MLD for |
|
|
transmitting unsolicited state-change reports. The RECOMMENDED |
|
transmitting unsolicited state-change reports. The RECOMMENDED |
|
|
default delay value is 1 second. |
|
default delay value is 1 second. |
|
|
|
|
|
|
|
When a gateway sends a Teardown message, it may be notified that an |
|
When a gateway sends a Teardown message, it may be notified that an |
|
|
ICMP Destination Unreachable message was received as a result of an |
|
ICMP Destination Unreachable message was received as a result of an |
|
|
earlier AMT message transmission. Handling of ICMP Destination |
|
earlier AMT message transmission. Handling of ICMP Destination |
|
|
Unreachable messages is described in Section 5.2.3.9. |
|
Unreachable messages is described in Section 5.2.3.9. |
|
|
|
|
|
|
|
|
|
|
|
|
skipping to change at page 65, line 48 skipping to change at page 67, line 48 |
|
general query datagram MAY be set to the "unspecified" address (all |
|
general query datagram MAY be set to the "unspecified" address (all |
|
|
octets are zero) but SHOULD be set to an IPv6 link-local address in |
|
octets are zero) but SHOULD be set to an IPv6 link-local address in |
|
|
the range FE80::/64. A relay may use a dynamically-generated link- |
|
the range FE80::/64. A relay may use a dynamically-generated link- |
|
|
local address or the fixed address FE80::2. As with IGMP, a gateway |
|
local address or the fixed address FE80::2. As with IGMP, a gateway |
|
|
will accept an MLD query regardless of the source address it carries. |
|
will accept an MLD query regardless of the source address it carries. |
|
|
See Section 5.2.1. |
|
See Section 5.2.1. |
|
|
|
|
|
|
|
A relay MUST set the Querier's Query Interval Code (QQIC) field in |
|
A relay MUST set the Querier's Query Interval Code (QQIC) field in |
|
|
the general query to supply the gateway with a suggested time |
|
the general query to supply the gateway with a suggested time |
|
|
duration to use for the membership query timer. The QQIC field is |
|
duration to use for the membership query timer. The QQIC field is |
|
|
|
defined in Section 4.1.1 in [RFC3376] and Section 5.1.3 in [RFC3810]. |
|
defined in Section 4.1.7 in [RFC3376] and Section 5.1.9 in [RFC3810]. |
|
|
A relay MAY adjust this value to affect the rate at which the Request |
|
A relay MAY adjust this value to affect the rate at which the Request |
|
|
messages are sent from a gateway. However, a gateway is allowed to |
|
messages are sent from a gateway. However, a gateway is allowed to |
|
|
use a shorter duration than specified in the QQIC field, so a relay |
|
use a shorter duration than specified in the QQIC field, so a relay |
|
|
may be limited in its ability to spread out Requests coming from a |
|
may be limited in its ability to spread out Requests coming from a |
|
|
gateway. |
|
gateway. |
|
|
|
|
|
|
|
A relay MUST set the Querier's Robustness Variable (QRV) field in the |
|
A relay MUST set the Querier's Robustness Variable (QRV) field in the |
|
|
general query to a non-zero value. This value SHOULD be greater than |
|
general query to a non-zero value. This value SHOULD be greater than |
|
|
one. If a gateway retransmits membership state change messages, it |
|
one. If a gateway retransmits membership state change messages, it |
|
|
|
will retransmit them (robustness variable - 1) times. |
|
will retransmit them (robustness variable - 1) times. The QRV field
|
|
|
|
|
is defined in Section 4.1.6 in [RFC3376] and Section 5.1.8 in |
|
|
|
|
[RFC3810]. |
|
|
|
|
|
|
|
|
A relay SHOULD set the Max Resp Code field in the general query to a |
|
A relay SHOULD set the Maximum Response Code field in the general |
|
|
value of 1 to trigger an immediate response from the gateway (some |
|
query to a value of 1 to trigger an immediate response from the |
|
|
host IGMP/MLD implementations may not accept a value of zero). A |
|
gateway (some host IGMP/MLD implementations may not accept a value of |
|
|
relay SHOULD NOT use the IGMPv2/MLDv2 Query Response Interval |
|
zero). A relay SHOULD NOT use the IGMPv2/MLDv2 Query Response |
|
|
variable, if available, to generate the Max Resp Code field value as |
|
Interval variable, if available, to generate the Maximum Response
|
|
|
the Query Response Interval variable is used in setting the duration |
|
Code field value as the Query Response Interval variable is used in |
|
|
of group state timers and must not be set to such a small value. See |
|
setting the duration of group state timers and must not be set to |
|
|
|
|
such a small value. The Maximum Response Code field is defined in
|
|
|
|
|
Section 4.1.1 in [RFC3376] and Section 5.1.3 in [RFC3810]. See |
|
|
Section 5.3.3.7. |
|
Section 5.3.3.7. |
|
|
|
|
|
|
|
5.3.3.4. Handling a Membership Update Message |
|
5.3.3.4. Handling a Membership Update Message |
|
|
|
|
|
|
|
This section describes relay requirements related to the membership |
|
This section describes relay requirements related to the membership |
|
|
update portion of the message sequence described in Section 4.2.1.2. |
|
update portion of the message sequence described in Section 4.2.1.2. |
|
|
|
|
|
|
|
When a relay receives a Membership Update message it must first |
|
When a relay receives a Membership Update message it must first |
|
|
determine whether it should accept or ignore the message. A relay |
|
determine whether it should accept or ignore the message. A relay |
|
|
MUST NOT make any changes to group membership and forwarding state if |
|
MUST NOT make any changes to group membership and forwarding state if |
|
|
|
|
|
|
|
skipping to change at page 70, line 15 skipping to change at page 72, line 18 |
|
o Use the IP datagram source and destination address to look up the |
|
o Use the IP datagram source and destination address to look up the |
|
|
appropriate (*,G) or (S,G) entry in the endpoint forwarding table |
|
appropriate (*,G) or (S,G) entry in the endpoint forwarding table |
|
|
created for the pseudo-interface as a result of IGMP/MLD |
|
created for the pseudo-interface as a result of IGMP/MLD |
|
|
processing. |
|
processing. |
|
|
|
|
|
|
|
o Possibly replicate the datagram for each gateway endpoint listed |
|
o Possibly replicate the datagram for each gateway endpoint listed |
|
|
for that (*,G) or (S,G) entry. |
|
for that (*,G) or (S,G) entry. |
|
|
|
|
|
|
|
o Encapsulate the IP datagram in a UDP/IP Membership Data message, |
|
o Encapsulate the IP datagram in a UDP/IP Membership Data message, |
|
|
using the endpoint UDP/IP address as the destination address and |
|
using the endpoint UDP/IP address as the destination address and |
|
|
|
the unicast relay address and IANA-assigned port as the source |
|
the unicast relay address and IANA-assigned AMT port number as the |
|
|
UDP/IP address. To ensure successful NAT traversal, the source |
|
source UDP/IP address. To ensure successful NAT traversal, the |
|
|
address and port MUST match the destination address and port |
|
source address and port MUST match the destination address and |
|
|
carried by the Membership Update message sent by the gateway to |
|
port carried by the Membership Update message sent by the gateway |
|
|
create the forwarding table entry. |
|
to create the forwarding table entry. |
|
|
|
|
|
|
|
o If possible, the relay SHOULD compute a valid, non-zero checksum |
|
o If possible, the relay SHOULD compute a valid, non-zero checksum |
|
|
for the UDP datagram carrying the Membership Data message. See |
|
for the UDP datagram carrying the Membership Data message. See |
|
|
Section 4.2.2.3. |
|
Section 4.2.2.3. |
|
|
|
|
|
|
|
|
o Send the message to the gateway. |
|
o If the resultant message does not require fragmentation because
|
|
|
|
|
its size is less than the MTU of the downstream path, the relay |
|
|
|
|
MUST send the message as an unfragmented datagram to the gateway. |
|
|
|
|
If the AMT message does require fragmentation, the relay MUST
|
|
|
|
|
discard the message if the multicast data is an IPv4 datagram |
|
|
|
|
where the "Don't Fragment" (DF) bit [RFC0791] is set OR the |
|
|
|
|
multicast data is an IPv6 datagram. If the DF-bit in an |
|
|
|
|
encapsulated multicast datagram is set and the AMT messages are |
|
|
|
|
being exchanged via IPv4, the relay MUST set the DF bit in the |
|
|
|
|
IPv4 header for the AMT data message. If the AMT data message |
|
|
|
|
encapsulates an IPv4 multicast datagram and the DF-bit is cleared |
|
|
|
|
the relay MUST fragment the AMT data message and transmit those |
|
|
|
|
fragments to the gateway(s). |
|
|
|
|
|
|
|
The relay pseudo-interface MUST ignore any other IP datagrams |
|
The relay pseudo-interface MUST ignore any other IP datagrams |
|
|
forwarded to the pseudo-interface. |
|
forwarded to the pseudo-interface. |
|
|
|
|
|
|
|
5.3.3.7. State Timers |
|
5.3.3.7. State Timers |
|
|
|
|
|
|
|
A relay MUST maintain a timer or timers whose expiration will trigger |
|
A relay MUST maintain a timer or timers whose expiration will trigger |
|
|
the removal of any group subscriptions and forwarding state |
|
the removal of any group subscriptions and forwarding state |
|
|
previously created for a gateway endpoint should the gateway fail to |
|
previously created for a gateway endpoint should the gateway fail to |
|
|
refresh the group membership state within a specified time interval. |
|
refresh the group membership state within a specified time interval. |
|
|
|
|
|
|
|
skipping to change at page 72, line 9 skipping to change at page 74, line 27 |
|
o Stop sending data messages to gateways. |
|
o Stop sending data messages to gateways. |
|
|
|
|
|
|
|
o Delete all AMT group membership and forwarding state created on |
|
o Delete all AMT group membership and forwarding state created on |
|
|
the relay, coordinating with the multicast routing protocol to |
|
the relay, coordinating with the multicast routing protocol to |
|
|
update the group membership state on upstream interfaces as |
|
update the group membership state on upstream interfaces as |
|
|
required. |
|
required. |
|
|
|
|
|
|
|
5.3.5. Response MAC Generation |
|
5.3.5. Response MAC Generation |
|
|
|
|
|
|
|
A Response MAC is produced by a hash digest computation. A Response |
|
A Response MAC is produced by a hash digest computation. A Response |
|
|
|
MAC value is computed from a Request message for inclusion in a |
|
MAC computation is required in the following situations:
|
|
|
Membership Query message, is computed from a Membership Update |
|
|
|
|
message to authenticate the Response MAC carried within that message,
|
|
o To generate a Response MAC value from a Request message for |
|
|
and is computed from fields in a Teardown message to authenticate the |
|
inclusion in a Membership Query message.
|
|
|
Response MAC carried within that message. |
|
|
|
|
|
|
o Tp generate a Response MAC value from a Membership Update message |
|
|
|
|
for use in authenticating the Response MAC carried within that |
|
|
|
|
message.
|
|
|
|
|
|
|
|
|
|
o To generate a Response MAC value from a Teardown message to |
|
|
|
|
authenticate the Response MAC carried within that message. |
|
|
|
|
|
|
|
Gateways treat the Response MAC field as an opaque value, so a relay |
|
Gateways treat the Response MAC field as an opaque value, so a relay |
|
|
implementation may generate the MAC using any method available to it. |
|
implementation may generate the MAC using any method available to it. |
|
|
The hash function RECOMMENDED for use in computing the Response MAC |
|
The hash function RECOMMENDED for use in computing the Response MAC |
|
|
is the MD5 hash digest [RFC1321], though hash functions or keyed-hash |
|
is the MD5 hash digest [RFC1321], though hash functions or keyed-hash |
|
|
functions of greater cryptographic strength may be used. |
|
functions of greater cryptographic strength may be used. |
|
|
|
|
|
|
|
The digest MUST be computed over the following values: |
|
The digest MUST be computed over the following values: |
|
|
|
|
|
|
|
o The Source IP address of the message (or Teardown Gateway IP |
|
o The Source IP address of the message (or Teardown Gateway IP |
|
|
|
|
|
|
|
skipping to change at page 76, line 9 skipping to change at page 79, line 9 |
|
messages that do not contain IGMP/MLD membership reports. |
|
messages that do not contain IGMP/MLD membership reports. |
|
|
|
|
|
|
|
Properly implemented gateways and relays will also filter |
|
Properly implemented gateways and relays will also filter |
|
|
encapsulated IP packets that appear corrupted or truncated by |
|
encapsulated IP packets that appear corrupted or truncated by |
|
|
verifying packet length and checksums. |
|
verifying packet length and checksums. |
|
|
|
|
|
|
|
7. IANA Considerations |
|
7. IANA Considerations |
|
|
|
|
|
|
|
7.1. IPv4 and IPv6 Anycast Prefix Allocation |
|
7.1. IPv4 and IPv6 Anycast Prefix Allocation |
|
|
|
|
|
|
|
|
IANA should allocate an IPv4 prefix and an IPv6 prefix dedicated to |
|
The following unicast prefixes have been assigned to provide anycast
|
|
|
the public AMT Relays to advertise to the native multicast backbone
|
|
routing of relay discovery messages to public AMT Relays as as
|
|
|
(as described in Section 4.1.4). The prefix length should be
|
|
described in Section 4.1.4.
|
|
|
determined by the IANA; the prefix should be large enough to |
|
|
|
|
guarantee advertisement in the default-free BGP networks. |
|
|
|
|
|
|
|
|
|
7.1.1. IPv4 |
|
7.1.1. IPv4 |
|
|
|
|
|
|
|
|
A prefix length of 24 will meet this requirement.
|
|
IANA has assigned 154.7.0/24 for IPv4 relays.
|
|
|
|
|
|
|
|
Internet Systems Consortium (ISC) has offered 154.7.0/24 for this
|
|
|
|
|
purpose. |
|
|
|
|
|
|
|
|
|
7.1.2. IPv6 |
|
7.1.2. IPv6 |
|
|
|
|
|
|
|
|
A prefix length of 32 will meet this requirement. IANA has |
|
IANA has assigned 2001:0003::/32 for IPv6 relays.
|
|
|
previously set aside the range 2001::/16 for allocating prefixes for
|
|
|
|
|
this purpose. |
|
|
|
|
|
|
|
|
|
7.2. IPv4 Address Prefix Allocation for IGMP Source Addresses |
|
7.2. IPv4 Address Prefix Allocation for IGMP Source Addresses |
|
|
|
|
|
|
|
|
IANA should allocate an IPv4 prefix dedicated for use in IGMP
|
|
IANA has assigned 154.7.1/24 as a prefix for IGMP source addresses.
|
|
|
messages exchanged between gateways and relays. This address range |
|
|
|
|
is intended for use within tunnels constructed between a gateway and |
|
|
|
|
relay, and as such, is not intended to be globally routable. |
|
|
|
|
|
|
|
|
|
A prefix length of 24 will meet this requirement. |
|
|
|
|
|
|
|
|
|
Internet Systems Consortium (ISC) has offered 154.7.1/24 for this
|
|
|
|
|
purpose. |
|
|
|
|
|
|
|
|
|
|
7.3. UDP Port number |
|
7.3. UDP Port Number |
|
|
|
|
|
|
|
|
IANA has reserved UDP port number 2268 for AMT. |
|
IANA has assigned UDP port number 2268 for AMT. |
|
|
|
|
|
|
|
8. Contributors |
|
8. Contributors |
|
|
|
|
|
|
|
The following people provided significant contributions to the design |
|
The following people provided significant contributions to the design |
|
|
of the protocol and earlier versions of this specification: |
|
of the protocol and earlier versions of this specification: |
|
|
|
|
|
|
|
Thomas Morin |
|
Thomas Morin |
|
|
France Telecom - Orange |
|
France Telecom - Orange |
|
|
2, avenue Pierre Marzin |
|
2, avenue Pierre Marzin |
|
|
Lannion 22300 |
|
Lannion 22300 |
|
|
|
|
|
|
|
skipping to change at page 79, line 15 skipping to change at page 82, line 15 |
|
10. References |
|
10. References |
|
|
|
|
|
|
|
10.1. Normative References |
|
10.1. Normative References |
|
|
|
|
|
|
|
[RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, |
|
[RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, |
|
|
August 1980. |
|
August 1980. |
|
|
|
|
|
|
|
[RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, |
|
[RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, |
|
|
RFC 792, September 1981. |
|
RFC 792, September 1981. |
|
|
|
|
|
|
|
|
[RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
|
|
|
|
|
April 1992. |
|
|
|
|
|
|
|
|
|
[RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. |
|
[RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. |
|
|
Thyagarajan, "Internet Group Management Protocol, Version |
|
Thyagarajan, "Internet Group Management Protocol, Version |
|
|
3", RFC 3376, October 2002. |
|
3", RFC 3376, October 2002. |
|
|
|
|
|
|
|
[RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery |
|
[RFC3810] Vida, R. and L. Costa, "Multicast Listener Discovery |
|
|
Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. |
|
Version 2 (MLDv2) for IPv6", RFC 3810, June 2004. |
|
|
|
|
|
|
|
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing |
|
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing |
|
|
Architecture", RFC 4291, February 2006. |
|
Architecture", RFC 4291, February 2006. |
|
|
|
|
|
|
|
|
|
|
|
|
skipping to change at page 79, line 43 skipping to change at page 82, line 40 |
|
[RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for |
|
[RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for |
|
|
IP", RFC 4607, August 2006. |
|
IP", RFC 4607, August 2006. |
|
|
|
|
|
|
|
[RFC4787] Audet, F. and C. Jennings, "Network Address Translation |
|
[RFC4787] Audet, F. and C. Jennings, "Network Address Translation |
|
|
(NAT) Behavioral Requirements for Unicast UDP", BCP 127, |
|
(NAT) Behavioral Requirements for Unicast UDP", BCP 127, |
|
|
RFC 4787, January 2007. |
|
RFC 4787, January 2007. |
|
|
|
|
|
|
|
10.2. Informative References |
|
10.2. Informative References |
|
|
|
|
|
|
|
[I-D.ietf-6man-udpchecksums] |
|
[I-D.ietf-6man-udpchecksums] |
|
|
|
Eubanks, M. and P. Chimento, "UDP Checksums for Tunneled |
|
Eubanks, M., Chimento, P., and M. Westerlund, "IPv6 and |
|
|
Packets", draft-ietf-6man-udpchecksums-02 (work in |
|
UDP Checksums for Tunneled Packets", |
|
|
progress), March 2012.
|
|
draft-ietf-6man-udpchecksums-08 (work in progress), |
|
|
|
|
February 2013.
|
|
|
|
|
|
|
|
[I-D.ietf-6man-udpzero] |
|
[I-D.ietf-6man-udpzero] |
|
|
|
Fairhurst, G. and M. Westerlund, "IPv6 UDP Checksum
|
|
Fairhurst, G. and M. Westerlund, "Applicability Statement
|
|
|
Considerations", draft-ietf-6man-udpzero-05 (work in |
|
for the use of IPv6 UDP Datagrams with Zero Checksums",
|
|
|
progress), December 2011.
|
|
draft-ietf-6man-udpzero-12 (work in progress), |
|
|
|
|
February 2013.
|
|
|
|
|
|
|
|
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, |
|
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, |
|
|
September 1981. |
|
September 1981. |
|
|
|
|
|
|
|
[RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, |
|
[RFC1112] Deering, S., "Host extensions for IP multicasting", STD 5, |
|
|
RFC 1112, August 1989. |
|
RFC 1112, August 1989. |
|
|
|
|
|
|
|
|
|
|
[RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
|
|
|
|
|
April 1992. |
|
|
|
|
|
|
|
[RFC1546] Partridge, C., Mendez, T., and W. Milliken, "Host |
|
[RFC1546] Partridge, C., Mendez, T., and W. Milliken, "Host |
|
|
Anycasting Service", RFC 1546, November 1993. |
|
Anycasting Service", RFC 1546, November 1993. |
|
|
|
|
|
|
|
[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- |
|
[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- |
|
|
Hashing for Message Authentication", RFC 2104, |
|
Hashing for Message Authentication", RFC 2104, |
|
|
February 1997. |
|
February 1997. |
|
|
|
|
|
|
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate |
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate |
|
|
Requirement Levels", BCP 14, RFC 2119, March 1997. |
|
Requirement Levels", BCP 14, RFC 2119, March 1997. |
|
|
|
|
|
|
|
|
|
|
|
|
skipping to change at page 80, line 50 skipping to change at page 83, line 52 |
|
RFC 3068, June 2001. |
|
RFC 3068, June 2001. |
|
|
|
|
|
|
|
[RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC |
|
[RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC |
|
|
Text on Security Considerations", BCP 72, RFC 3552, |
|
Text on Security Considerations", BCP 72, RFC 3552, |
|
|
July 2003. |
|
July 2003. |
|
|
|
|
|
|
|
[RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol |
|
[RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol |
|
|
Independent Multicast - Dense Mode (PIM-DM): Protocol |
|
Independent Multicast - Dense Mode (PIM-DM): Protocol |
|
|
Specification (Revised)", RFC 3973, January 2005. |
|
Specification (Revised)", RFC 3973, January 2005. |
|
|
|
|
|
|
|
|
|
|
[RFC4271] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway
|
|
|
|
|
Protocol 4 (BGP-4)", RFC 4271, January 2006. |
|
|
|
|
|
|
|
[RFC4443] Conta, A., Deering, S., and M. Gupta, "Internet Control |
|
[RFC4443] Conta, A., Deering, S., and M. Gupta, "Internet Control |
|
|
Message Protocol (ICMPv6) for the Internet Protocol |
|
Message Protocol (ICMPv6) for the Internet Protocol |
|
|
Version 6 (IPv6) Specification", RFC 4443, March 2006. |
|
Version 6 (IPv6) Specification", RFC 4443, March 2006. |
|
|
|
|
|
|
|
[RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas, |
|
[RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas, |
|
|
"Protocol Independent Multicast - Sparse Mode (PIM-SM): |
|
"Protocol Independent Multicast - Sparse Mode (PIM-SM): |
|
|
Protocol Specification (Revised)", RFC 4601, August 2006. |
|
Protocol Specification (Revised)", RFC 4601, August 2006. |
|
|
|
|
|
|
|
[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, |
|
[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, |
|
|
"Multiprotocol Extensions for BGP-4", RFC 4760, |
|
"Multiprotocol Extensions for BGP-4", RFC 4760, |
|
|
|
|
|
|
|
skipping to change at page 83, line 16 skipping to change at page 86, line 16 |
|
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 |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| V=0 |4 or 5| Reserved | | Response MAC | |
|
| V=0 |4 or 5| Reserved | | Response MAC | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |
|
|
| | |
|
| | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| Request Nonce | |
|
| Request Nonce | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
: : |
|
: : |
|
|
|
|
|
|
|
|
The Opaque Response MAC Field |
|
Figure 19: The Opaque Response MAC Field |
|
|
|
|
|
|
|
A relay may use the opaque Response MAC field to store a cookie as |
|
A relay may use the opaque Response MAC field to store a cookie as |
|
|
follows: |
|
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 |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| V=0 |4 or 5| Reserved | | Timestamp | |
|
| V=0 |4 or 5| Reserved | | Timestamp | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| MD5(Secret,Timestamp,IP_ADDR,IP_PORT,Request-Nonce) | |
|
| MD5(Secret,Timestamp,IP_ADDR,IP_PORT,Request-Nonce) | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
| Request Nonce | |
|
| Request Nonce | |
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|
|
: : |
|
: : |
|
|
|
|
|
|
|
|
Using The Response MAC Field To Carry An Authentication Cookie |
|
Figure 20: Using The Response MAC Field To Carry An Authentication |
|
|
|
|
Cookie |
|
|
|
|
|
|
|
The timestamp is an unsigned integer measured relative to the start |
|
The timestamp is an unsigned integer measured relative to the start |
|
|
time of relay. The age of the MAC is computed by subtracting the MAC |
|
time of relay. The age of the MAC is computed by subtracting the MAC |
|
|
timestamp from the current system timestamp. The operands must be |
|
timestamp from the current system timestamp. The operands must be |
|
|
unsigned 16-bit integers and the subtraction must use unsigned |
|
unsigned 16-bit integers and the subtraction must use unsigned |
|
|
arithmetic to allow for timestamp wrap-around. The timestamp |
|
arithmetic to allow for timestamp wrap-around. The timestamp |
|
|
resolution must provide range sufficient to handle the maximum |
|
resolution must provide range sufficient to handle the maximum |
|
|
allowable age for a MAC, e.g., a resolution of 1 second allows a |
|
allowable age for a MAC, e.g., a resolution of 1 second allows a |
|
|
maximum age of 18 hours. The timestamp should start at a random |
|
maximum age of 18 hours. The timestamp should start at a random |
|
|
value by adding a random offset, computed at startup, to the current |
|
value by adding a random offset, computed at startup, to the current |
|
|
|
|
|
|
|
skipping to change at page 84, line 22 skipping to change at page 87, line 22 |
|
| +-------------------------+----------------/ /-----------------+ |
|
| +-------------------------+----------------/ /-----------------+ |
|
|
|_____________________________________________________________________ |
|
|_____________________________________________________________________ |
|
|
| |
|
| |
|
|
+-------------------------+----------------/ /-----------------+ | |
|
+-------------------------+----------------/ /-----------------+ | |
|
|
-->| Timestamp(N1) [16-bits] | Random Secret [128-bits] |-- |
|
-->| Timestamp(N1) [16-bits] | Random Secret [128-bits] |-- |
|
|
| +-------------------------+----------------/ /-----------------+ |
|
| +-------------------------+----------------/ /-----------------+ |
|
|
| |
|
| |
|
|
|__ Current |
|
|__ Current |
|
|
Secret |
|
Secret |
|
|
|
|
|
|
|
|
Private Secret Queue |
|
Figure 21: Private Secret Queue |
|
|
|
|
|
|
|
The timestamp is not only used to compute the age of the MAC, but is |
|
The timestamp is not only used to compute the age of the MAC, but is |
|
|
also used to lookup the private secret used to generate the MAC. |
|
also used to lookup the private secret used to generate the MAC. |
|
|
Each time a new private secret is computed, the value and the time at |
|
Each time a new private secret is computed, the value and the time at |
|
|
which the value was computed is pushed into a fixed-length queue of |
|
which the value was computed is pushed into a fixed-length queue of |
|
|
recent values (typically only 2-deep). The relay uses the timestamp |
|
recent values (typically only 2-deep). The relay uses the timestamp |
|
|
contained in the MAC field to lookup the appropriate secret. The |
|
contained in the MAC field to lookup the appropriate secret. The |
|
|
relay iterates over the list of secrets, starting with the newest |
|
relay iterates over the list of secrets, starting with the newest |
|
|
entry, until it finds the first secret with a timestamp that is older |
|
entry, until it finds the first secret with a timestamp that is older |
|
|
than that contained in the MAC field. The relay then uses that |
|
than that contained in the MAC field. The relay then uses that |
|
|
secret to compute the MAC that will be compared with that carried by |
|
secret to compute the MAC that will be compared with that carried by |
|
|
the message. |
|
the message. |
|
|
|
|
|
|
|
Author's Address |
|
Author's Address |
|
|
|
|
|
|
|
Gregory Bumgardner |
|
Gregory Bumgardner |
|
|
|
Cisco
|
|
|
|
|
3700 Cisco Way |
|
|
|
|
San Jose, CA 95134 |
|
|
|
|
USA |
|
|
|
|
|
|
|
|
|
|
Phone: +1 408 853 4993
|
|
Phone: +1 541 343 6790
|
|
|
Email: gbumgard <at> cisco.com
|
|
Email: gbumgard <at> gmail.com
|
|
|
|
|
|
|
End of changes. 78 change blocks.
| 170 lines changed or deleted 270 lines changed or added |
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |