rfc8777xml2.original.xml | rfc8777.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.12 --> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
]> | ||||
<?rfc toc="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc symrefs="yes"?> | ||||
<rfc ipr="trust200902" docName="draft-ietf-mboned-driad-amt-discovery-13" catego | ||||
ry="std" updates="7450"> | ||||
<front> | ||||
<title abbrev="DRIAD">DNS Reverse IP AMT (Automatic Multicast Tunneling) Dis | ||||
covery</title> | ||||
<author initials="J." surname="Holland" fullname="Jake Holland"> | ||||
<organization>Akamai Technologies, Inc.</organization> | ||||
<address> | ||||
<postal> | ||||
<street>150 Broadway</street> | ||||
<city>Cambridge, MA 02144</city> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>jakeholland.net@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<date year="2019" month="December" day="20"/> | ||||
<area>Ops</area> | ||||
<workgroup>Mboned</workgroup> | ||||
<keyword>Internet-Draft</keyword> | ||||
<abstract> | ||||
<t>This document updates RFC 7450 (Automatic Multicast Tunneling, or AMT) by | ||||
modifying the relay discovery process. A new DNS resource record named | ||||
AMTRELAY is defined for publishing AMT relays for source-specific multicast | ||||
channels. The reverse IP DNS zone for a multicast sender’s IP address is | ||||
configured to use AMTRELAY resource records to advertise a set of AMT relays | ||||
that can receive and forward multicast traffic from that sender over an AMT | ||||
tunnel. Other extensions and clarifications to the relay discovery | ||||
process are also defined.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section anchor="intro" title="Introduction"> | ||||
<t>This document defines DNS Reverse IP AMT Discovery (DRIAD), a mechanism for | ||||
AMT gateways to discover AMT relays that are capable of forwarding multicast | ||||
traffic from a known source IP address.</t> | ||||
<t>AMT (Automatic Multicast Tunneling) is defined in <xref target="RFC7450"/>, a | ||||
nd provides | ||||
a method to transport multicast traffic over a unicast tunnel, in order to | ||||
traverse non-multicast-capable network segments.</t> | ||||
<t>Section 4.1.5 of <xref target="RFC7450"/> explains that the relay selection p | ||||
rocess | ||||
for AMT is intended to be more flexible than the particular discovery method | ||||
described in that document, and further explains that the selection process | ||||
might need to depend on the source of the multicast traffic in some | ||||
deployments, since a relay must be able to receive multicast traffic from the | ||||
desired source in order to forward it.</t> | ||||
<t>That section goes on to suggest DNS-based queries as a possible solution. | ||||
DRIAD is a DNS-based solution, as suggested there. This solution also | ||||
addresses the relay discovery issues in the “Disadvantages” lists in Section | ||||
3.3 of <xref target="RFC8313"/> and Section 3.4 of <xref target="RFC8313"/>.</t> | ||||
<t>The goal for DRIAD is to enable multicast connectivity between separate | ||||
multicast-enabled networks when neither the sending nor the receiving network | ||||
is connected to a multicast-enabled backbone, without pre-configuring any | ||||
peering arrangement between the networks.</t> | ||||
<t>This document extends the relay discovery procedure described in Section | ||||
5.2.3.4 of <xref target="RFC7450"/>.</t> | ||||
<section anchor="background" title="Background"> | ||||
<t>The reader is assumed to be familiar with the basic DNS concepts | ||||
described in <xref target="RFC1034"/>, <xref target="RFC1035"/>, and the subsequ | ||||
ent documents that | ||||
update them, particularly <xref target="RFC2181"/>.</t> | ||||
<t>The reader is also assumed to be familiar with the concepts and terminology | ||||
regarding source-specific multicast as described in <xref target="RFC4607"/> and | ||||
the | ||||
use of IGMPv3 <xref target="RFC3376"/> and MLDv2 <xref target="RFC3810"/> for gr | ||||
oup management of | ||||
source-specific multicast channels, as described in <xref target="RFC4604"/>.</t | ||||
> | ||||
<t>The reader should also be familiar with AMT, particularly the terminology | ||||
listed in Section 3.2 of <xref target="RFC7450"/> and Section 3.3 of <xref targe | ||||
t="RFC7450"/>.</t> | ||||
</section> | ||||
<section anchor="terminology" title="Terminology"> | ||||
<section anchor="relays-and-gateways" title="Relays and Gateways"> | ||||
<t>When reading this document, it’s especially helpful to recall that once | ||||
an AMT tunnel is established, the relay receives native multicast traffic | ||||
and sends unicast tunnel-encapsulated traffic to the gateway, and the gateway | ||||
receives the tunnel-encapsulated packets, decapsulates them, and forwards | ||||
them as native multicast packets, as illustrated in <xref target="figtunnel"/>.< | ||||
/t> | ||||
<figure title="AMT Tunnel Illustration" anchor="figtunnel"><artwork><![CDATA[ | ||||
Multicast +-----------+ Unicast +-------------+ Multicast | ||||
>---------> | AMT relay | >=======> | AMT gateway | >---------> | ||||
+-----------+ +-------------+ | ||||
]]></artwork></figure> | ||||
</section> | ||||
<section anchor="definitions" title="Definitions"> | ||||
<texttable> | ||||
<ttcol align='right'>Term</ttcol> | ||||
<ttcol align='left'>Definition</ttcol> | ||||
<c>(S,G)</c> | ||||
<c>A source-specific multicast channel, as described in <xref target="RFC4 | ||||
607"/>. A pair of IP addresses with a source host IP and destination group IP.</ | ||||
c> | ||||
<c>discovery broker</c> | ||||
<c>A broker or load balancer for AMT relay discovery, as mentioned in sect | ||||
ion 4.2.1.1 of <xref target="RFC7450"/>.</c> | ||||
<c>downstream</c> | ||||
<c>Further from the source of traffic, as described in <xref target="RFC74 | ||||
50"/>.</c> | ||||
<c>FQDN</c> | ||||
<c>Fully Qualified Domain Name, as described in <xref target="RFC8499"/></ | ||||
c> | ||||
<c>gateway</c> | ||||
<c>An AMT gateway, as described in <xref target="RFC7450"/></c> | ||||
<c>L flag</c> | ||||
<c>The “Limit” flag described in Section 5.1.4.4 of <xref target="RFC7450" | ||||
/></c> | ||||
<c>relay</c> | ||||
<c>An AMT relay, as described in <xref target="RFC7450"/></c> | ||||
<c>RPF</c> | ||||
<c>Reverse Path Forwarding, as described in <xref target="RFC5110"/></c> | ||||
<c>RR</c> | ||||
<c>A DNS Resource Record, as described in <xref target="RFC1034"/></c> | ||||
<c>RRType</c> | ||||
<c>A DNS Resource Record Type, as described in <xref target="RFC1034"/></c | ||||
> | ||||
<c>SSM</c> | ||||
<c>Source-specific multicast, as described in <xref target="RFC4607"/></c> | ||||
<c>upstream</c> | ||||
<c>Closer to the source of traffic, as described in <xref target="RFC7450" | ||||
/>.</c> | ||||
<c>CMTS</c> | ||||
<c>Cable Modem Termination System</c> | ||||
<c>OLT</c> | ||||
<c>Optical Line Terminal</c> | ||||
</texttable> | ||||
<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL | ||||
NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, | ||||
“MAY”, and “OPTIONAL” in this document are to be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | ||||
only when, they | ||||
appear in all capitals, as shown here.</t> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
<section anchor="relay-discovery-overview" title="Relay Discovery Overview"> | ||||
<section anchor="basic-mechanics" title="Basic Mechanics"> | ||||
<t>The AMTRELAY resource record (RR) defined in this document is used to | ||||
publish the IP address or domain name of a set of AMT relays or discovery | ||||
brokers that can receive, encapsulate, and forward multicast traffic from | ||||
a particular sender.</t> | ||||
<t>The sender is the owner of the RR, and configures the zone so that it | ||||
contains a set of RRs that provide the addresses or domain names of AMT | ||||
relays (or discovery brokers that advertise relays) that can receive | ||||
multicast IP traffic from that sender.</t> | ||||
<t>This enables AMT gateways in remote networks to discover an AMT relay that | ||||
is capable of forwarding traffic from the sender. This in turn enables those | ||||
AMT gateways to receive the multicast traffic tunneled over a unicast AMT | ||||
tunnel from those relays, and then to pass the multicast packets into | ||||
networks or applications that are using the gateway to subscribe to traffic | ||||
from that sender.</t> | ||||
<t>This mechanism only works for source-specific multicast (SSM) channels. The | ||||
source address of the (S,G) is reversed and used as an index into one of the | ||||
reverse mapping trees (in-addr.arpa for IPv4, as described in Section 3.5 of | ||||
<xref target="RFC1035"/>, or ip6.arpa for IPv6, as described in Section 2.5 of < | ||||
xref target="RFC3596"/>).</t> | ||||
<t>This mechanism should be treated as an extension of the AMT relay discovery | ||||
procedure described in Section 5.2.3.4 of <xref target="RFC7450"/>. A gateway t | ||||
hat | ||||
supports this method of AMT relay discovery SHOULD use this method | ||||
whenever it’s performing the relay discovery procedure, and the source IP | ||||
addresses for desired (S,G)s are known to the gateway, and conditions match | ||||
the requirements outlined in <xref target="priority"/>.</t> | ||||
<t>Some detailed example use cases are provided in <xref target="exampledeployme | ||||
nts"/>, and | ||||
other applicable example topologies appear in Section 3.3 of <xref target="RFC83 | ||||
13"/>, | ||||
Section 3.4 of <xref target="RFC8313"/>, and Section 3.5 of <xref target="RFC831 | ||||
3"/>.</t> | ||||
</section> | ||||
<section anchor="signaling-and-discovery" title="Signaling and Discovery"> | ||||
<t>This section describes a typical example of the end-to-end process for | ||||
signaling a receiver’s join of an SSM channel that relies on an AMTRELAY | ||||
RR.</t> | ||||
<t>The example in <xref target="figmessaging"/> contains 2 multicast-enabled | ||||
networks that are both connected to the internet with non-multicast-capable | ||||
links, and which have no direct association with each other.</t> | ||||
<t>A content provider operates a sender, which is a source of multicast traffic | ||||
inside a multicast-capable network.</t> | ||||
<t>An end user who is a customer of the content provider has a multicast-capable | ||||
internet service provider, which operates a receiving network that uses an | ||||
AMT gateway. The AMT gateway is DRIAD-capable.</t> | ||||
<t>The content provider provides the user with a receiving application that | ||||
tries to subscribe to at least one (S,G). This receiving application could | ||||
for example be a file transfer system using FLUTE <xref target="RFC6726"/> or a | ||||
live | ||||
video stream using RTP <xref target="RFC3550"/>, or any other application that m | ||||
ight | ||||
subscribe to an SSM channel.</t> | ||||
<figure title="DRIAD Messaging" anchor="figmessaging"><artwork><![CDATA[ | ||||
+---------------+ | ||||
| Sender | | ||||
| | | 2001:db8::a | | ||||
| | +---------------+ | ||||
|Data| | | ||||
|Flow| Multicast | | ||||
\| |/ Network | | ||||
\ / | 5: Propagate RPF for Join(S,G) | ||||
\ / +---------------+ | ||||
\/ | AMT Relay | | ||||
| 2001:db8:c::f | | ||||
+---------------+ | ||||
| 4: Gateway connects to Relay, | ||||
sends Join(S,G) over tunnel | ||||
| | ||||
Unicast | ||||
Tunnel | 3: --> DNS Query: type=AMTRELAY, | ||||
/ a.0.0.0.0.0.0.0.0.0.0.0. | ||||
^ | / 0.0.0.0.0.0.0.0.0.0.0.0. | ||||
| / 8.b.d.0.1.0.0.2.ip6.arpa | ||||
| | / <-- Response: | ||||
Join/Leave +-------------+ AMTRELAY=2001:db8:c::f | ||||
Signals | AMT gateway | | ||||
| +-------------+ | ||||
| | 2: Propagate RPF for Join(S,G) | ||||
| Multicast | | ||||
Network | | ||||
| 1: Join(S=2001:db8::a,G=ff3e::8000:d) | ||||
+-------------+ | ||||
| Receiver | | ||||
| (end user) | | ||||
+-------------+ | ||||
]]></artwork></figure> | ||||
<t>In this simple example, the sender IP is 2001:db8::a, it is sending | ||||
traffic to the group address ff3e::8000:d, and the relay IP is | ||||
2001:db8::c:f.</t> | ||||
<t>The content provider has previously configured the DNS zone that | ||||
contains the reverse IP domain name for the sender’s IP address | ||||
so that it provides an AMTRELAY RR with the relay’s IP address. | ||||
(See <xref target="rpformat"/> for details about the AMTRELAY RR format and | ||||
semantics.) As described in Section 2.5 of <xref target="RFC3596"/>, the | ||||
reverse IP FQDN of the sender’s address “2001:db8::a” is:</t> | ||||
<figure><artwork><![CDATA[ | ||||
a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6. | ||||
arpa. | ||||
]]></artwork></figure> | ||||
<t>The sequence of events depicted in <xref target="figmessaging"/> is as follow | ||||
s:</t> | ||||
<t><list style="numbers"> | ||||
<t>The end user starts the app, which issues a join to the (S,G): | ||||
(2001:db8::a, ff3e::8000:d).</t> | ||||
<t>The join propagates with RPF through the receiver’s multicast-enabled | ||||
network with PIM <xref target="RFC7761"/> or another multicast routing mechanism | ||||
, | ||||
until the AMT gateway receives a signal to join the (S,G).</t> | ||||
<t>The AMT gateway performs a reverse DNS lookup for the AMTRELAY RRType, | ||||
by sending an AMTRELAY RRType query for the reverse IP domain name | ||||
for the sender’s source IP address (the S from the (S,G)). <vspace blankLines=' | ||||
1'/> | ||||
The DNS resolver for the AMT gateway uses ordinary DNS recursive | ||||
resolution until it has the authoritative result that the content | ||||
provider configured, which informs the AMT gateway that the relay address | ||||
is 2001:db8::c:f.</t> | ||||
<t>The AMT gateway performs AMT handshakes with the AMT relay as described | ||||
in Section 4 of <xref target="RFC7450"/>, then forwards a Membership report to t | ||||
he | ||||
relay indicating subscription to the (S,G).</t> | ||||
<t>The relay propagates the join through its network toward the sender, | ||||
then forwards the appropriate AMT-encapsulated traffic to the | ||||
gateway, which decapsulates and forwards it as native multicast through | ||||
its downstream network to the end user.</t> | ||||
</list></t> | ||||
<t>In the case of an IPv4 (S,G), the only difference in the AMT relay | ||||
discovery process is the use of the in-addr.arpa reverse IP domain name, | ||||
as described in Section 3.5 of <xref target="RFC1035"/>, instead of the in6.arpa | ||||
domain name. For example, if the (S,G) is (198.51.100.12, 232.252.0.2), | ||||
the reverse IP FQDN for the AMTRELAY query would be | ||||
“12.100.51.198.in-addr.arpa.”.</t> | ||||
<t>Note that the address family of the AMT tunnel is independent of the | ||||
address family for the multicast traffic.</t> | ||||
</section> | ||||
<section anchor="exampledeployments" title="Example Deployments"> | ||||
<section anchor="exrx" title="Example Receiving Networks"> | ||||
<section anchor="exrxisp" title="Internet Service Provider"> | ||||
<t>One example of a receiving network is an Internet Service Provider (ISP) | ||||
that offers multicast ingest services to its subscribers, illustrated in | ||||
<xref target="figrxisp"/>.</t> | ||||
<t>In the example network below, subscribers can join (S,G)s with MLDv2 or | ||||
IGMPv3 as described in <xref target="RFC4604"/>, and the AMT gateway in this | ||||
ISP can receive and forward multicast traffic from one of the example sending | ||||
networks in <xref target="extx"/> by discovering the appropriate AMT relays with | ||||
a DNS | ||||
lookup for the AMTRELAY RR with the reverse IP of the source in the (S,G).</t> | ||||
<figure title="Receiving ISP Example" anchor="figrxisp"><artwork><![CDATA[ | ||||
Internet | ||||
^ ^ Multicast-enabled | ||||
| | Receiving Network | ||||
+------|------------|-------------------------+ | ||||
| | | | | ||||
| +--------+ +--------+ +=========+ | | ||||
| | Border |---| Border | | AMT | | | ||||
| | Router | | Router | | gateway | | | ||||
| +--------+ +--------+ +=========+ | | ||||
| | | | | | ||||
| +-----+------+-----------+--+ | | ||||
| | | | | ||||
| +-------------+ +-------------+ | | ||||
| | Agg Routers | .. | Agg Routers | | | ||||
| +-------------+ +-------------+ | | ||||
| / \ \ / \ | | ||||
| +---------------+ +---------------+ | | ||||
| |Access Systems | ....... |Access Systems | | | ||||
| |(CMTS/OLT/etc.)| |(CMTS/OLT/etc.)| | | ||||
| +---------------+ +---------------+ | | ||||
| | | | | ||||
+--------|------------------------|-----------+ | ||||
| | | ||||
+---+-+-+---+---+ +---+-+-+---+---+ | ||||
| | | | | | | | | | | ||||
/-\ /-\ /-\ /-\ /-\ /-\ /-\ /-\ /-\ /-\ | ||||
|_| |_| |_| |_| |_| |_| |_| |_| |_| |_| | ||||
Subscribers | ||||
]]></artwork></figure> | ||||
</section> | ||||
<section anchor="exoffice" title="Small Office"> | ||||
<t>Another example receiving network is a small branch office that regularly | ||||
accesses some multicast content, illustrated in <xref target="figrxofficenm"/>.< | ||||
/t> | ||||
<t>This office has desktop devices that need to receive some multicast traffic, | ||||
so an AMT gateway runs on a LAN with these devices, to pull traffic in | ||||
through a non-multicast next-hop.</t> | ||||
<t>The office also hosts some mobile devices that have AMT gateway instances | ||||
embedded inside apps, in order to receive multicast traffic over their | ||||
non-multicast wireless LAN. (Note that the “Legacy Router” is a | ||||
simplification that’s meant to describe a variety of possible conditions; | ||||
for example it could be a device providing a split-tunnel VPN as described | ||||
in <xref target="RFC7359"/>, deliberately excluding multicast traffic for a VPN | ||||
tunnel, rather than a device which is incapable of multicast forwarding.)</t> | ||||
<figure title="Small Office (no multicast up)" anchor="figrxofficenm"><artwork>< | ||||
![CDATA[ | ||||
Internet | ||||
(non-multicast) | ||||
^ | ||||
| Office Network | ||||
+----------|----------------------------------+ | ||||
| | | | ||||
| +---------------+ (Wifi) Mobile apps | | ||||
| | Modem+ | Wifi | - - - - w/ embedded | | ||||
| | Router | AP | AMT gateways | | ||||
| +---------------+ | | ||||
| | | | ||||
| | | | ||||
| +----------------+ | | ||||
| | Legacy Router | | | ||||
| | (unicast) | | | ||||
| +----------------+ | | ||||
| / | \ | | ||||
| / | \ | | ||||
| +--------+ +--------+ +--------+=========+ | | ||||
| | Phones | | ConfRm | | Desks | AMT | | | ||||
| | subnet | | subnet | | subnet | gateway | | | ||||
| +--------+ +--------+ +--------+=========+ | | ||||
| | | ||||
+---------------------------------------------+ | ||||
]]></artwork></figure> | ||||
<t>By adding an AMT relay to this office network as in <xref target="figrxoffice | ||||
"/>, it’s | ||||
possible to make use of multicast services from the example multicast-capable | ||||
ISP in <xref target="exrxisp"/>.</t> | ||||
<figure title="Small Office Example" anchor="figrxoffice"><artwork><![CDATA[ | ||||
Multicast-capable ISP | ||||
^ | ||||
| Office Network | ||||
+----------|----------------------------------+ | ||||
| | | | ||||
| +---------------+ (Wifi) Mobile apps | | ||||
| | Modem+ | Wifi | - - - - w/ embedded | | ||||
| | Router | AP | AMT gateways | | ||||
| +---------------+ | | ||||
| | +=======+ | | ||||
| +---Wired LAN---| AMT | | | ||||
| | | relay | | | ||||
| +----------------+ +=======+ | | ||||
| | Legacy Router | | | ||||
| | (unicast) | | | ||||
| +----------------+ | | ||||
| / | \ | | ||||
| / | \ | | ||||
| +--------+ +--------+ +--------+=========+ | | ||||
| | Phones | | ConfRm | | Desks | AMT | | | ||||
| | subnet | | subnet | | subnet | gateway | | | ||||
| +--------+ +--------+ +--------+=========+ | | ||||
| | | ||||
+---------------------------------------------+ | ||||
]]></artwork></figure> | ||||
<t>When multicast-capable networks are chained like this, with a network like | ||||
the one in <xref target="figrxoffice"/> receiving internet services from a | ||||
multicast-capable network like the one in <xref target="figrxisp"/>, it’s import | ||||
ant for | ||||
AMT gateways to reach the more local AMT relay, in order to avoid | ||||
accidentally tunneling multicast traffic from a more distant AMT relay with | ||||
unicast, and failing to utilize the multicast transport capabilities of the | ||||
network in <xref target="figrxisp"/>.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="extx" title="Example Sending Networks"> | ||||
<section anchor="extxsnd" title="Sender-controlled Relays"> | ||||
<t>When a sender network is also operating AMT relays to distribute multicast | ||||
traffic, as in <xref target="figtxrelay"/>, each address could appear as an AMTR | ||||
ELAY RR | ||||
for the reverse IP of the sender, or one or more domain names could appear | ||||
in AMTRELAY RRs, and the AMT relay addresses can be discovered by finding | ||||
A or AAAA records from those domain names.</t> | ||||
<figure title="Small Office Example" anchor="figtxrelay"><artwork><![CDATA[ | ||||
Sender Network | ||||
+-----------------------------------+ | ||||
| | | ||||
| +--------+ +=======+ +=======+ | | ||||
| | Sender | | AMT | | AMT | | | ||||
| +--------+ | relay | | relay | | | ||||
| | +=======+ +=======+ | | ||||
| | | | | | ||||
| +-----+------+----------+ | | ||||
| | | | ||||
+-----------|-----------------------+ | ||||
v | ||||
Internet | ||||
(non-multicast) | ||||
]]></artwork></figure> | ||||
</section> | ||||
<section anchor="extxprv" title="Provider-controlled Relays"> | ||||
<t>When an ISP offers a service to transmit outbound multicast traffic through | ||||
a forwarding network, it might also offer AMT relays in order to reach | ||||
receivers without multicast connectivity to the forwarding network, as in | ||||
<xref target="figtxisp"/>. In this case it’s recommended that the ISP also provi | ||||
de at | ||||
least one domain name for the AMT relays for use with the AMTRELAY RR.</t> | ||||
<t>When the sender wishes to use the relays provided by the ISP for | ||||
forwarding multicast traffic, an AMTRELAY RR should be configured to use | ||||
the domain name provided by the ISP, to allow for address reassignment of the | ||||
relays without forcing the sender to reconfigure the corresponding AMTRELAY | ||||
RRs.</t> | ||||
<figure title="Sending ISP Example" anchor="figtxisp"><artwork><![CDATA[ | ||||
+--------+ | ||||
| Sender | | ||||
+---+----+ Multicast-enabled | ||||
| Sending Network | ||||
+-----------|-------------------------------+ | ||||
| v | | ||||
| +------------+ +=======+ +=======+ | | ||||
| | Agg Router | | AMT | | AMT | | | ||||
| +------------+ | relay | | relay | | | ||||
| | +=======+ +=======+ | | ||||
| | | | | | ||||
| +-----+------+--------+---------+ | | ||||
| | | | | ||||
| +--------+ +--------+ | | ||||
| | Border |---| Border | | | ||||
| | Router | | Router | | | ||||
| +--------+ +--------+ | | ||||
+-----|------------|------------------------+ | ||||
| | | ||||
v v | ||||
Internet | ||||
(non-multicast) | ||||
]]></artwork></figure> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
<section anchor="relay-discovery-operation" title="Relay Discovery Operation"> | ||||
<section anchor="priority" title="Optimal Relay Selection"> | ||||
<section anchor="overview" title="Overview"> | ||||
<t>The reverse source IP DNS query of an AMTRELAY RR is a good way for a gateway | ||||
to discover a relay that is known to the sender.</t> | ||||
<t>However, it is NOT necessarily a good way to discover the best relay for that | ||||
gateway to use, because the RR will only provide information about relays | ||||
known to the source.</t> | ||||
<t>If there is an upstream relay in a network that is topologically closer to | ||||
the gateway and able to receive and forward multicast traffic from the sender, | ||||
that relay is better for the gateway to use, since more of the network path | ||||
uses native multicast, allowing more chances for packet replication. But since | ||||
that relay is not known to the sender, it won’t be advertised in the sender’s | ||||
reverse IP DNS record. An example network that illustrates this scenario is | ||||
outlined in <xref target="figrxoffice"/> from <xref target="exoffice"/>.</t> | ||||
<t>It’s only appropriate for an AMT gateway to discover an AMT relay by querying | ||||
an AMTRELAY RR owned by a sender when all of these conditions are met:</t> | ||||
<t><list style="numbers"> | ||||
<t>The gateway needs to propagate a join of an (S,G) over AMT, because in | ||||
the gateway’s network, no RPF next hop toward the source can | ||||
propagate a native multicast join of the (S,G); and</t> | ||||
<t>The gateway is not already connected to a relay that forwards multicast | ||||
traffic from the source of the (S,G); and</t> | ||||
<t>The gateway is not configured to use a particular IP address for AMT | ||||
discovery, or a relay discovered with that IP is not able to forward | ||||
traffic from the source of the (S,G); and</t> | ||||
<t>The gateway is not able to find an upstream AMT relay with DNS-SD | ||||
<xref target="RFC6763"/>, using “_amt._udp” as the Service section of the querie | ||||
s, or a | ||||
relay discovered this way is not able to forward traffic from the source of | ||||
the (S,G) (as described in <xref target="trafficabsent"/> or <xref target="loade | ||||
d"/>); and</t> | ||||
<t>The gateway is not able to find an upstream AMT relay with the well-known | ||||
anycast addresses from Section 7 of <xref target="RFC7450"/>.</t> | ||||
</list></t> | ||||
<t>When the above conditions are met, the gateway has no path within its local | ||||
network that can receive multicast traffic from the source IP of the (S,G).</t> | ||||
<t>In this situation, the best way to find a relay that can forward the | ||||
required traffic is to use information that comes from the operator of the | ||||
sender. When the sender has configured an AMTRELAY RR, gateways can use the | ||||
DRIAD mechanism defined in this document to discover the relay information | ||||
provided by the sender.</t> | ||||
<t>Note that the DNS-SD service is not source-specific, so even though | ||||
when available, several methods of finding a more local source of | ||||
multicast traffic connectivity are preferred to using a relay | ||||
provided by an AMTRELAY RR, a gateway further upstream would still be | ||||
using the AMTRELAY RR unless the upstream network has a peering | ||||
that provides an alternative end-to-end multicast transport path for | ||||
the (S,G)’s traffic.</t> | ||||
</section> | ||||
<section anchor="ordering" title="Preference Ordering"> | ||||
<t>This section defines a preference ordering for relay addresses during | ||||
the relay discovery process. Gateways are encouraged to implement a | ||||
Happy Eyeballs algorithm to try candidate relays concurrently, but even | ||||
gateways that do not implement a Happy Eyeballs algorithm SHOULD use | ||||
this ordering, except as noted.</t> | ||||
<t>When establishing an AMT tunnel to forward multicast data, it’s | ||||
very important for the discovery process to prioritize the network | ||||
topology considerations ahead of address selection considerations, in | ||||
order to gain the packet replication benefits from using multicast | ||||
instead of unicast tunneling in the multicast-capable portions of the | ||||
network path.</t> | ||||
<t>The intent of the advice and requirements in this section is to describe | ||||
how a gateway should make use of the concurrency provided by a Happy | ||||
Eyeballs algorithm to reduce the join latency, while still prioritizing | ||||
network efficiency considerations over Address Selection considerations.</t> | ||||
<t>Section 4 of <xref target="RFC8305"/> requires a Happy Eyeballs algorithm to | ||||
sort | ||||
the addresses with the Destination Address Selection defined in Section | ||||
6 of <xref target="RFC6724"/>, but for the above reasons, that requirement is su | ||||
perseded | ||||
in the AMT discovery use case by the following considerations:</t> | ||||
<t><list style="symbols"> | ||||
<t>Prefer Local Relays <vspace blankLines='1'/> | ||||
<xref target="figrxoffice"/> and <xref target="exoffice"/> provide a motivating | ||||
example to prefer | ||||
DNS-SD <xref target="RFC6763"/> for discovery strictly ahead of using the AMTRE | ||||
LAY RR | ||||
controlled by the sender for AMT discovery. <vspace blankLines='1'/> | ||||
For this reason, it’s RECOMMENDED that AMT gateways by default perform | ||||
service discovery using DNS Service Discovery (DNS-SD) <xref target="RFC6763"/> | ||||
for | ||||
_amt._udp.<domain> (with <domain> chosen as described in Section 11 | ||||
of | ||||
<xref target="RFC6763"/>) and use the AMT relays discovered that way in prefere | ||||
nce to | ||||
AMT relays discoverable via the mechanism defined in this document | ||||
(DRIAD).</t> | ||||
<t>Prefer Relays Managed by the Containing Network <vspace blankLines='1'/> | ||||
When no local relay is discoverable with DNS-SD, it still may be the | ||||
case that a relay local to the receiver is operated by the network | ||||
providing transit services to the receiver. <vspace blankLines='1'/> | ||||
In this case, when the network cannot make the relay discoverable via | ||||
DNS-SD, the network SHOULD use the well-known anycast addresses from | ||||
Section 7 of <xref target="RFC7450"/> to route discovery traffic to the relay m | ||||
ost | ||||
appropriate to the receiver’s gateway. <vspace blankLines='1'/> | ||||
Accordingly, the gateway SHOULD by default discover a relay with the | ||||
well-known AMT anycast addresses as the second preference after DNS-SD | ||||
when searching for a local relay.</t> | ||||
<t>Let Sender Manage Relay Provisioning <vspace blankLines='1'/> | ||||
A related motivating example is provided by considering a sender whose | ||||
traffic can be forwarded by relays in a sender-controlled network | ||||
like <xref target="figtxrelay"/> in <xref target="extxsnd"/>, and also by relay | ||||
s in a | ||||
provider-controlled network like <xref target="figtxisp"/> in <xref target="ext | ||||
xprv"/>, with | ||||
different cost and scalability profiles for the different options. <vspace bla | ||||
nkLines='1'/> | ||||
In this example about the sending-side network, the precedence field | ||||
described in <xref target="rrdef-precedence"/> is a critical method of control | ||||
so | ||||
that senders can provide the appropriate guidance to gateways | ||||
during the discovery process, in order to manage load and failover | ||||
scenarios in a manner that operates well with the sender’s | ||||
provisioning strategy for horizontal scaling of AMT relays. <vspace blankLines | ||||
='1'/> | ||||
Therefore, after DNS-SD, the precedence from the RR MUST be used for | ||||
sorting preference ahead of the Destination Address Selection ordering | ||||
from Section 6 of <xref target="RFC6724"/>, so that only relay IPs with the sam | ||||
e | ||||
precedence are directly compared according to the Destination Address | ||||
Selection ordering.</t> | ||||
</list></t> | ||||
<t>Accordingly, AMT gateways SHOULD by default prefer relays in this order:</t> | ||||
<figure><artwork><![CDATA[ | ||||
1. DNS-SD | ||||
2. Anycast addresses from Section 7 of [RFC7450] | ||||
3. DRIAD | ||||
]]></artwork></figure> | ||||
<t>This default behavior MAY be overridden by administrative configuration where | ||||
other behavior is more appropriate for the gateway within its network.</t> | ||||
<t>Among relay addresses that have an equivalent preference as described above, | ||||
a | ||||
Happy Eyeballs algorithm for AMT SHOULD use the Destination Address Selection | ||||
defined in Section 6 of <xref target="RFC6724"/>.</t> | ||||
<t>Among relay addresses that still have an equivalent preference after the | ||||
above orderings, a gateway SHOULD make a non-deterministic choice (such as | ||||
a pseudorandom selection) for relay preference ordering, in order to | ||||
support load balancing by DNS configurations that provide many relay | ||||
options.</t> | ||||
<t>The gateway MAY introduce a bias in the non-deterministic choice according | ||||
to information obtained out of band or from a historical record about | ||||
network topology, timing information, or the response to a probing | ||||
mechanism, that indicates some expected benefits from selecting some relays | ||||
in preference to others. Details about the structure and collection of | ||||
this information are out of scope for this document, but a gateway in | ||||
possession of such information MAY use it to prefer topologically closer | ||||
relays.</t> | ||||
<t>Within the above constraints, gateways MAY make use of other considerations | ||||
from Section 4 of <xref target="RFC8305"/>, such as the address family interleav | ||||
ing | ||||
strategies, to produce a final ordering of candidate relay addresses.</t> | ||||
<t>Note also that certain relay addresses might be excluded from consideration | ||||
by the hold-down timers described in <xref target="trafficabsent"/> or <xref tar | ||||
get="loaded"/>. These | ||||
relays constitute “unusable destinations” under Rule 1 of the Destination | ||||
Address Selection, and are also not part of the superseding considerations | ||||
described above.</t> | ||||
<t>The discovery and connection process for the relay addresses in the above | ||||
described ordering MAY operate in parallel, subject to delays prescribed | ||||
by the Happy Eyeballs requirements described in Section 5 of <xref target="RFC83 | ||||
05"/> | ||||
for successively launched concurrent connection attempts.</t> | ||||
</section> | ||||
<section anchor="connecting-to-multiple-relays" title="Connecting to Multiple Re | ||||
lays"> | ||||
<t>In some deployments, it may be useful for a gateway to connect to | ||||
multiple upstream relays and subscribe to the same traffic, in order to | ||||
support an active/active failover model. A gateway SHOULD NOT be | ||||
configured to do so without guaranteeing that adequate bandwidth is | ||||
available.</t> | ||||
<t>A gateway configured to do this SHOULD still use the same preference | ||||
ordering logic from <xref target="ordering"/> for each connection. (Note that | ||||
this ordering allows for overriding by explicit administrative | ||||
configuration where required.)</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="happy" title="Happy Eyeballs"> | ||||
<section anchor="overview-1" title="Overview"> | ||||
<t>Often, multiple choices of relay will exist for a gateway using DRIAD | ||||
for relay discovery. Happy Eyeballs <xref target="RFC8305"/> provides a widely | ||||
deployed and generalizable strategy for probing multiple possible | ||||
connections in parallel, therefore it is RECOMMENDED that DRIAD-capable | ||||
gateways implement a Happy Eyeballs algorithm to support fast discovery | ||||
of the most preferred available relay, by probing multiple relays | ||||
concurrently.</t> | ||||
<t>The parallel discovery logic of a Happy Eyeballs algorithm serves to | ||||
reduce join latency for the initial join of an SSM channel. This section | ||||
and the preference ordering of relays defined in <xref target="ordering"/> taken | ||||
together provide guidance on use of a Happy Eyeballs algorithm for the | ||||
case of establishing AMT connections.</t> | ||||
<t>Note that according to the definition in <xref target="connection-def"/> of t | ||||
his | ||||
document, establishing the connection occurs before sending a membership | ||||
report. As described in Section 5 of <xref target="RFC8305"/>, only one of the | ||||
successful connections will be used, and the others are all canceled | ||||
or ignored. In the context of an AMT connection, this means the gateway | ||||
will send the membership reports that subscribe to traffic only for the | ||||
chosen connection, after the Happy Eyeballs algorithm resolves.</t> | ||||
</section> | ||||
<section anchor="algorithm-guidelines" title="Algorithm Guidelines"> | ||||
<t>During the “Initiation of asynchronous DNS queries” phase described in | ||||
Section 3 of <xref target="RFC8305"/>), a gateway attempts to resolve the domain | ||||
names | ||||
listed in <xref target="priority"/>. This consists of resolving the SRV queries | ||||
for | ||||
DNS-SD domains for the AMT service, as well as the AMTRELAY query for the | ||||
reverse IP domain defined in this document.</t> | ||||
<t>Each of the SRV and AMTRELAY responses might contain one or more IP | ||||
addresses, (as with type 1 or type 2 AMTRELAY responses, or when the | ||||
SRV Additional Data section of the SRV response contains the address | ||||
records for the target, as urged by <xref target="RFC2782"/>), or they might | ||||
contain only domain names (as with type 3 responses from <xref target="rtype"/>, | ||||
or | ||||
an SRV response without an additional data section).</t> | ||||
<t>When present, IP addresses in the initial response provide resolved | ||||
destination address candidates for the “Sorting of resolved | ||||
destination addresses” phase described in Section 4 of <xref target="RFC8305"/>) | ||||
, | ||||
whereas domain names without IP addresses in the initial response result | ||||
in another set of queries for AAAA and A records, whose responses provide | ||||
the candidate resolved destination addresses.</t> | ||||
<t>Since the SRV or AMTRELAY responses don’t have a bound on the count of | ||||
queries that might be generated aside from the bounds imposed by the | ||||
DNS resolver, it’s important for the gateway to provide a rate limit on | ||||
the DNS queries. The DNS query functionality is expected to follow | ||||
ordinary standards and best practices for DNS clients. A gateway MAY | ||||
use an existing DNS client implementation that does so, and MAY rely on | ||||
that client’s rate limiting logic to avoid issuing excessive queries. | ||||
Otherwise, a gateway MUST provide a rate limit for the DNS queries, and | ||||
its default settings SHOULD NOT permit more than 10 queries for any | ||||
100-millisecond period (though this MAY be overridable by administrative | ||||
configuration).</t> | ||||
<t>As the resolved IP addresses arrive, the Happy Eyeballs algorithm | ||||
sorts them according to the requirements and recommendations given in | ||||
<xref target="ordering"/>, and attempts connections with the corresponding relay | ||||
s | ||||
under the algorithm restrictions and guidelines given in <xref target="RFC8305"/ | ||||
> for | ||||
the “Establishment of one connection, which cancels all other attempts” | ||||
phase. As described in Section 3 of <xref target="RFC8305"/>, DNS resolution is | ||||
treated as asynchronous, and connection initiation does not wait | ||||
for lagging DNS responses.</t> | ||||
</section> | ||||
<section anchor="connection-def" title="Connection Definition"> | ||||
<t>Section 5 of <xref target="RFC8305"/> non-normatively describes success at a | ||||
connection attempt as “generally when the TCP handshake completes”.</t> | ||||
<t>There is no normative definition of a connection in the AMT specification | ||||
<xref target="RFC7450"/>, and there is no TCP connection involved in an AMT tunn | ||||
el.</t> | ||||
<t>However, the concept of an AMT connection in the context of a Happy | ||||
Eyeballs algorithm is a useful one, and so this section provides the | ||||
following normative definition:</t> | ||||
<t><list style="symbols"> | ||||
<t>An AMT connection is established successfully when the gateway receives | ||||
from a newly discovered relay a valid Membership Query message | ||||
(Section 5.1.4 of <xref target="RFC7450"/>) that does not have the L flag set.</ | ||||
t> | ||||
</list></t> | ||||
<t>See <xref target="loaded"/> of this document for further information about th | ||||
e | ||||
relevance of the L flag to the establishment of a Happy Eyeballs | ||||
connection. See <xref target="flowhealth"/> for an overview of how to respond | ||||
if the connection does not provide multicast connectivity to the | ||||
source.</t> | ||||
<t>To “cancel” this kind of AMT connection for the Happy Eyeballs algorithm, | ||||
a gateway that has not sent a membership report with a subscription | ||||
would simply stop sending AMT packets for that connection. A | ||||
gateway only sends a membership report to a connection it has chosen as | ||||
the most preferred available connection.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="guidelines-for-restarting-discovery" title="Guidelines for Rest | ||||
arting Discovery"> | ||||
<section anchor="overview-2" title="Overview"> | <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.12 --> | |||
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | ||||
<t>It’s expected that gateways deployed in different environments will use a | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draf | |||
variety of heuristics to decide when it’s appropriate to restart the relay | t-ietf-mboned-driad-amt-discovery-13" number="8777" submissionType="IETF" catego | |||
discovery process, in order to meet different performance goals (for example, | ry="std" consensus="true" updates="7450" obsoletes="" xml:lang="en" tocInclude=" | |||
to fulfill different kinds of service level agreements).</t> | true" sortRefs="true" symRefs="true" version="3"> | |||
<t>In general, restarting the discovery process is always safe for | <!-- xml2rfc v2v3 conversion 2.39.0 --> | |||
the gateway and relay during any of the events listed in this section, | <front> | |||
but may cause a disruption in the forwarded traffic if the discovery | <title abbrev="DRIAD">DNS Reverse IP Automatic Multicast | |||
process results in choosing a different relay, because this changes | Tunneling (AMT) Discovery</title> | |||
the RPF forwarding tree for the multicast traffic upstream of the gateway. | <seriesInfo name="RFC" value="8777"/> | |||
This is likely to result in some dropped or duplicated packets from channels | <author initials="J." surname="Holland" fullname="Jake Holland"> | |||
actively being tunneled from the old relay to the gateway.</t> | <organization>Akamai Technologies, Inc.</organization> | |||
<address> | ||||
<postal> | ||||
<street>150 Broadway</street> | ||||
<city>Cambridge</city><region>MA</region><code>02144</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>jakeholland.net@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<date year="2020" month="April"/> | ||||
<area>Ops</area> | ||||
<workgroup>Mboned</workgroup> | ||||
<t>The degree of impact on the traffic from choosing a different relay may | <keyword>example</keyword> | |||
depend on network conditions between the gateway and the new relay, as well | ||||
as the network conditions and topology between the sender and the new relay, | ||||
as this may cause the relay to propagate a new RPF join toward the sender.</t> | ||||
<t>Balancing the expected impact on the tunneled traffic against likely | <abstract> | |||
or observed problems with an existing connection to the relay is the goal | <t>This document updates RFC 7450, "Automatic Multicast Tunneling" (or AM | |||
of the heuristics that gateways use to determine when to restart the | T), by | |||
discovery process.</t> | modifying the relay discovery process. A new DNS resource record named | |||
AMTRELAY is defined for publishing AMT relays for source-specific multicast | ||||
channels. The reverse IP DNS zone for a multicast sender's IP address is | ||||
configured to use AMTRELAY resource records to advertise a set of AMT relays | ||||
that can receive and forward multicast traffic from that sender over an AMT | ||||
tunnel. Other extensions and clarifications to the relay discovery | ||||
process are also defined.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section anchor="intro" numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<t>This document defines DNS Reverse IP AMT Discovery (DRIAD), a mechanis | ||||
m for | ||||
AMT gateways to discover AMT relays that are capable of forwarding multicast | ||||
traffic from a known source IP address.</t> | ||||
<t>AMT (Automatic Multicast Tunneling) is defined in <xref target="RFC745 | ||||
0" format="default"/> and provides | ||||
a method to transport multicast traffic over a unicast tunnel in order to | ||||
traverse network segments that are not multicast capable.</t> | ||||
<t><xref target="RFC7450" sectionFormat="of" section="4.1.5"/> explains t | ||||
hat the relay selection process | ||||
for AMT is intended to be more flexible than the particular discovery method | ||||
described in that document. That section further explains that the selection pr | ||||
ocess | ||||
might need to depend on the source of the multicast traffic in some | ||||
deployments, since a relay must be able to receive multicast traffic from the | ||||
desired source in order to forward it.</t> | ||||
<t><xref target="RFC7450" sectionFormat="of" section="4.1.5"/> goes on | ||||
to suggest DNS-based queries as a possible solution: DRIAD is DNS based. | ||||
This solution also | ||||
addresses the relay discovery issues in the "Disadvantages of this configuratio | ||||
n" lists in Sections | ||||
<xref target="RFC8313" sectionFormat="bare" section="3.3"/> and | ||||
<xref target="RFC8313" sectionFormat="bare" section="3.4"/> of <xref | ||||
target="RFC8313"/>.</t> | ||||
<t>The goal for DRIAD is to enable multicast connectivity between separat | ||||
e | ||||
multicast-enabled networks without preconfiguring any | ||||
peering arrangements between the networks when neither the sending nor the rece | ||||
iving network | ||||
is connected to a multicast-enabled backbone.</t> | ||||
<t>This document extends the relay discovery procedure described in <xref | ||||
target="RFC7450" sectionFormat="of" section="5.2.3.4"/>.</t> | ||||
<section anchor="background" numbered="true" toc="default"> | ||||
<name>Background</name> | ||||
<t>The reader is assumed to be familiar with the basic DNS concepts | ||||
described in <xref target="RFC1034" format="default"/>, <xref target="RFC1035" | ||||
format="default"/>, and the subsequent documents that update them, particularly | ||||
<xref target="RFC2181" format="default"/>.</t> | ||||
<t>The reader is also assumed to be familiar with the concepts and termi | ||||
nology | ||||
regarding source-specific multicast as described in <xref target="RFC4607" form | ||||
at="default"/> and the | ||||
use of Internet Group Management Protocol Version 3 (IGMPv3) <xref | ||||
target="RFC3376" format="default"/> and Multicast Listener Discovery Version 2 | ||||
(MLDv2) <xref target="RFC3810" format="default"/> for group management of | ||||
source-specific multicast channels, as described in <xref target="RFC4604" form | ||||
at="default"/>.</t> | ||||
<t>The reader should also be familiar with AMT, particularly the termino | ||||
logy | ||||
listed in Sections <xref target="RFC7450" sectionFormat="bare" section="3.2"/> | ||||
and <xref target="RFC7450" sectionFormat="bare" section="3.3"/> of <xref | ||||
target="RFC7450"/>.</t> | ||||
</section> | ||||
<section anchor="terminology" numbered="true" toc="default"> | ||||
<name>Terminology</name> | ||||
<section anchor="relays-and-gateways" numbered="true" toc="default"> | ||||
<name>Relays and Gateways</name> | ||||
<t>When reading this document, it's especially helpful to recall that | ||||
once | ||||
an AMT tunnel is established, the relay receives native multicast traffic | ||||
and sends unicast tunnel-encapsulated traffic to the gateway. The gateway | ||||
receives the tunnel-encapsulated packets, decapsulates them, and forwards | ||||
them as native multicast packets, as illustrated in <xref target="figtunnel" fo | ||||
rmat="default"/>.</t> | ||||
<figure anchor="figtunnel"> | ||||
<name>AMT Tunnel Illustration</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
<t>The non-normative advice in this section should be treated as guidelines to | Multicast +-----------+ Unicast +-------------+ Multicast | |||
operators and implementors working with AMT systems that can use DRIAD as | >---------> | AMT relay | >=======> | AMT gateway | >---------> | |||
part of the relay discovery process.</t> | +-----------+ +-------------+ | |||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
<section anchor="definitions" numbered="true" toc="default"> | ||||
<name>Definitions</name> | ||||
<table align="center"> | ||||
<name>Definitions</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="right">Term</th> | ||||
<th align="left">Definition</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="right">(S,G)</td> | ||||
<td align="left">A source-specific multicast channel, as describ | ||||
ed in <xref target="RFC4607" format="default"/>. A pair of IP addresses with a s | ||||
ource host IP and destination group IP.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">CMTS</td> | ||||
<td align="left">Cable Modem Termination System</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">discovery broker</td> | ||||
<td align="left">A broker or load balancer for AMT relay | ||||
discovery, as mentioned in <xref | ||||
target="RFC7450" sectionFormat="of" section="4.2.1.1"/>.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">downstream</td> | ||||
<td align="left">Further from the source of traffic, as describe | ||||
d in <xref target="RFC7450" format="default"/>.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">FQDN</td> | ||||
<td align="left">Fully Qualified Domain Name, as described in <x | ||||
ref target="RFC8499" format="default"/>.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">gateway</td> | ||||
<td align="left">An AMT gateway, as described in <xref target="R | ||||
FC7450" format="default"/>.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">L flag</td> | ||||
<td align="left">The "Limit" flag described in <xref target="RFC | ||||
7450" sectionFormat="of" section="5.1.4.4"/>.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">OLT</td> | ||||
<td align="left">Optical Line Terminal</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">relay</td> | ||||
<td align="left">An AMT relay, as described in <xref target="RFC | ||||
7450" format="default"/>.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">RPF</td> | ||||
<td align="left">Reverse Path Forwarding, as described in <xref | ||||
target="RFC5110" format="default"/>.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">RR</td> | ||||
<td align="left">A DNS Resource Record, as described in <xref ta | ||||
rget="RFC1034" format="default"/>.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">RRType</td> | ||||
<td align="left">A DNS Resource Record Type, as described in <xr | ||||
ef target="RFC1034" format="default"/>.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">SSM</td> | ||||
<td align="left">Source-specific multicast, as described in <xre | ||||
f target="RFC4607" format="default"/>.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="right">upstream</td> | ||||
<td align="left">Closer to the source of traffic, as described i | ||||
n <xref target="RFC7450" format="default"/>.</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section anchor="reqs" numbered="true" toc="default"> | ||||
<name>Requirements Language</name> | ||||
<t> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQ | ||||
UIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14 | ||||
>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
<section anchor="relay-discovery-overview" numbered="true" toc="default"> | ||||
<name>Relay Discovery Overview</name> | ||||
<section anchor="basic-mechanics" numbered="true" toc="default"> | ||||
<name>Basic Mechanics</name> | ||||
<t>The AMTRELAY resource record (RR) defined in this document is used to | ||||
publish the IP address or domain name of a set of AMT relays or discovery | ||||
brokers that can receive, encapsulate, and forward multicast traffic from | ||||
a particular sender.</t> | ||||
<t>The sender is the owner of the RR and configures the zone so that it | ||||
contains a set of RRs that provide the addresses or domain names of AMT | ||||
relays (or discovery brokers that advertise relays) that can receive | ||||
multicast IP traffic from that sender.</t> | ||||
<t>This enables AMT gateways in remote networks to discover an AMT relay | ||||
that | ||||
is capable of forwarding traffic from the sender. This, in turn, enables those | ||||
AMT gateways to receive the multicast traffic tunneled over a unicast AMT | ||||
tunnel from those relays and then pass the multicast packets into | ||||
networks or applications that are using the gateway to subscribe to traffic | ||||
from that sender.</t> | ||||
<t>This mechanism only works for source-specific multicast (SSM) channel | ||||
s. The | ||||
source address of the (S,G) is reversed and used as an index into one of the | ||||
reverse mapping trees (in-addr.arpa for IPv4, as described in <xref | ||||
target="RFC1035" sectionFormat="of" section="3.5"/>, or ip6.arpa for IPv6, as | ||||
described in <xref target="RFC3596" sectionFormat="of" section="2.5"/>). | ||||
</t> | ||||
<t>This mechanism should be treated as an extension of the AMT relay dis | ||||
covery | ||||
procedure described in <xref target="RFC7450" sectionFormat="of" section="5.2.3 | ||||
.4"/>. A gateway that | ||||
supports this method of AMT relay discovery <bcp14>SHOULD</bcp14> use this meth | ||||
od | ||||
whenever it's performing the relay discovery procedure, the source IP | ||||
addresses for desired (S,G)s are known to the gateway, and conditions match | ||||
the requirements outlined in <xref target="priority" format="default"/>.</t> | ||||
<t>Some detailed example use cases are provided in <xref target="example | ||||
deployments" format="default"/>, and | ||||
other applicable example topologies appear in Sections <xref | ||||
target="RFC8313" sectionFormat="bare" section="3.3"/>, | ||||
<xref target="RFC8313" sectionFormat="bare" section="3.4"/>, and <xref | ||||
target="RFC8313" sectionFormat="bare" section="3.5"/> of <xref target="RFC8313" | ||||
/>.</t> | ||||
</section> | ||||
<section anchor="signaling-and-discovery" numbered="true" toc="default"> | ||||
<name>Signaling and Discovery</name> | ||||
<t>This section describes a typical example of the end-to-end process fo | ||||
r | ||||
signaling a receiver's join of an SSM channel that relies on an AMTRELAY | ||||
RR.</t> | ||||
<t>The example in <xref target="figmessaging" format="default"/> contain | ||||
s two multicast-enabled | ||||
networks that are both connected to the internet with non-multicast-capable | ||||
links and which have no direct association with each other.</t> | ||||
<t>A content provider operates a sender, which is a source of multicast | ||||
traffic | ||||
inside a multicast-capable network.</t> | ||||
<t>An end user who is a customer of the content provider has a multicast | ||||
-capable | ||||
Internet Service Provider (ISP), which operates a receiving network that uses a | ||||
n | ||||
AMT gateway. The AMT gateway is DRIAD capable.</t> | ||||
<t>The content provider provides the user with a receiving application t | ||||
hat | ||||
tries to subscribe to at least one (S,G). This receiving application could, | ||||
for example, be a file transfer system using File Delivery over Unidirectional | ||||
Transport (FLUTE) <xref target="RFC6726" format="default"/>, a live | ||||
video stream using RTP <xref target="RFC3550" format="default"/>, or any other | ||||
application that might | ||||
subscribe to an SSM channel.</t> | ||||
<figure anchor="figmessaging"> | ||||
<name>DRIAD Messaging</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
+---------------+ | ||||
| Sender | | ||||
| | | 2001:db8::a | | ||||
| | +---------------+ | ||||
|Data| | | ||||
|Flow| Multicast | | ||||
\| |/ Network | | ||||
\ / | 5: Propagate RPF for Join(S,G) | ||||
\ / +---------------+ | ||||
\/ | AMT relay | | ||||
| 2001:db8:c::f | | ||||
+---------------+ | ||||
| 4: Gateway connects to Relay, | ||||
sends Join(S,G) over tunnel | ||||
| | ||||
Unicast | ||||
Tunnel | 3: --> DNS Query: type=AMTRELAY, | ||||
/ a.0.0.0.0.0.0.0.0.0.0.0. | ||||
^ | / 0.0.0.0.0.0.0.0.0.0.0.0. | ||||
| / 8.b.d.0.1.0.0.2.ip6.arpa | ||||
| | / <-- Response: | ||||
Join/Leave +-------------+ AMTRELAY=2001:db8:c::f | ||||
Signals | AMT gateway | | ||||
| +-------------+ | ||||
| | 2: Propagate RPF for Join(S,G) | ||||
| Multicast | | ||||
Network | | ||||
| 1: Join(S=2001:db8::a,G=ff3e::8000:d) | ||||
+-------------+ | ||||
| Receiver | | ||||
| (end user) | | ||||
+-------------+ | ||||
]]></artwork> | ||||
</figure> | ||||
<t>In this simple example, the sender IP is 2001:db8::a, which is sendin | ||||
g | ||||
traffic to the group address ff3e::8000:d, and the relay IP is | ||||
2001:db8::c:f.</t> | ||||
<t>The content provider has previously configured the DNS zone that | ||||
contains the reverse IP domain name for the sender's IP address | ||||
so that it provides an AMTRELAY RR with the relay's IP address | ||||
(see <xref target="rpformat" format="default"/> for details about the AMTRELAY | ||||
RR format and | ||||
semantics). As described in <xref target="RFC3596" | ||||
sectionFormat="of" section="2.5"/>, the | ||||
reverse IP FQDN of the sender's address "2001:db8::a" is:</t> | ||||
<sourcecode name="" type=""><![CDATA[ | ||||
a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6. | ||||
arpa. | ||||
]]></sourcecode> | ||||
<t>The sequence of events depicted in <xref target="figmessaging" format | ||||
="default"/> is as follows:</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>The end user starts the app, which issues a join to the (S,G): | ||||
(2001:db8::a, ff3e::8000:d).</li> | ||||
<li>The join propagates with RPF through the receiver's multicast-enab | ||||
led | ||||
network with PIM <xref target="RFC7761" format="default"/> or another | ||||
multicast routing mechanism until the AMT gateway receives a signal to | ||||
join the (S,G).</li> | ||||
<li> | ||||
<t>The AMT gateway performs a reverse DNS lookup for the AMTRELAY | ||||
RRType by sending an AMTRELAY RRType query for the reverse IP domain | ||||
name | ||||
for the sender's source IP address (the S from the (S,G)). </t> | ||||
<t> | ||||
The DNS resolver for the AMT gateway uses ordinary DNS recursive | ||||
resolution until it has the authoritative result that the content | ||||
provider configured, which informs the AMT gateway that the relay address | ||||
is 2001:db8::c:f.</t> | ||||
</li> | ||||
<li>The AMT gateway performs AMT handshakes with the AMT relay as desc | ||||
ribed | ||||
in <xref target="RFC7450" section="4" sectionFormat="of"/>, then forwards a mem | ||||
bership report to the | ||||
relay, indicating subscription to the (S,G).</li> | ||||
<li>The relay propagates the join through its network toward the | ||||
sender and then forwards the appropriate AMT-encapsulated traffic to t | ||||
he | ||||
gateway, which decapsulates and forwards it as a native multicast through | ||||
its downstream network to the end user.</li> | ||||
</ol> | ||||
<t>In the case of an IPv4 (S,G), the only difference in the AMT relay | ||||
discovery process is the use of the in-addr.arpa reverse IP domain name, | ||||
as described in <xref target="RFC1035" sectionFormat="of" section="3.5"/>, inst | ||||
ead of the in6.arpa | ||||
domain name. For example, if the (S,G) is (198.51.100.12, 232.252.0.2), | ||||
the reverse IP FQDN for the AMTRELAY query would be | ||||
"12.100.51.198.in-addr.arpa.".</t> | ||||
<t>Note that the address family of the AMT tunnel is independent of the | ||||
address family for the multicast traffic.</t> | ||||
</section> | ||||
<section anchor="exampledeployments" numbered="true" toc="default"> | ||||
<name>Example Deployments</name> | ||||
<section anchor="exrx" numbered="true" toc="default"> | ||||
<name>Example Receiving Networks</name> | ||||
<section anchor="exrxisp" numbered="true" toc="default"> | ||||
<name>Internet Service Provider</name> | ||||
<t>One example of a receiving network is an Internet Service Provide | ||||
r (ISP) | ||||
that offers multicast ingest services to its subscribers, illustrated in | ||||
<xref target="figrxisp" format="default"/>.</t> | ||||
<t>In the example network below, subscribers can join (S,G)s with ML | ||||
Dv2 or | ||||
IGMPv3 as described in <xref target="RFC4604" format="default"/>, and the AMT g | ||||
ateway in this | ||||
ISP can receive and forward multicast traffic from one of the example sending | ||||
networks in <xref target="extx" format="default"/> by discovering the appropria | ||||
te AMT relays with a DNS | ||||
lookup for the AMTRELAY RR with the reverse IP of the source in the (S,G).</t> | ||||
<figure anchor="figrxisp"> | ||||
<name>Receiving ISP Example</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Internet | ||||
^ ^ Multicast-enabled | ||||
| | Receiving Network | ||||
+------|------------|-------------------------+ | ||||
| | | | | ||||
| +--------+ +--------+ +=========+ | | ||||
| | Border |---| Border | | AMT | | | ||||
| | Router | | Router | | gateway | | | ||||
| +--------+ +--------+ +=========+ | | ||||
| | | | | | ||||
| +-----+------+-----------+--+ | | ||||
| | | | | ||||
| +-------------+ +-------------+ | | ||||
| | Agg Routers | .. | Agg Routers | | | ||||
| +-------------+ +-------------+ | | ||||
| / \ \ / \ | | ||||
| +---------------+ +---------------+ | | ||||
| |Access Systems | ....... |Access Systems | | | ||||
| |(CMTS/OLT/etc.)| |(CMTS/OLT/etc.)| | | ||||
| +---------------+ +---------------+ | | ||||
| | | | | ||||
+--------|------------------------|-----------+ | ||||
| | | ||||
+---+-+-+---+---+ +---+-+-+---+---+ | ||||
| | | | | | | | | | | ||||
/-\ /-\ /-\ /-\ /-\ /-\ /-\ /-\ /-\ /-\ | ||||
|_| |_| |_| |_| |_| |_| |_| |_| |_| |_| | ||||
</section> | Subscribers | |||
<section anchor="updates-to-restarting-events" title="Updates to Restarting Even | ]]></artwork> | |||
ts"> | </figure> | |||
</section> | ||||
<section anchor="exoffice" numbered="true" toc="default"> | ||||
<name>Small Office</name> | ||||
<t>Another example receiving network is a small branch office that r | ||||
egularly | ||||
accesses some multicast content, illustrated in <xref target="figrxofficenm" fo | ||||
rmat="default"/>.</t> | ||||
<t>This office has desktop devices that need to receive some multica | ||||
st traffic, | ||||
so an AMT gateway runs on a LAN with these devices to pull traffic in | ||||
through a non-multicast next hop.</t> | ||||
<t>The office also hosts some mobile devices that have AMT gateway i | ||||
nstances | ||||
embedded inside apps in order to receive multicast traffic over their | ||||
non-multicast wireless LAN. (Note that the "Legacy Router" is a | ||||
simplification that's meant to describe a variety of possible conditions; | ||||
for example, it could be a device providing a split-tunnel VPN as described | ||||
in <xref target="RFC7359" format="default"/>, deliberately excluding multicast | ||||
traffic for a VPN | ||||
tunnel, rather than a device that is incapable of multicast forwarding.)</t> | ||||
<figure anchor="figrxofficenm"> | ||||
<name>Small Office (No Multicast Up)</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Internet | ||||
(non-multicast) | ||||
^ | ||||
| Office Network | ||||
+----------|----------------------------------+ | ||||
| | | | ||||
| +---------------+ (Wifi) Mobile apps | | ||||
| | Modem+ | Wifi | - - - - w/ embedded | | ||||
| | Router | AP | AMT gateways | | ||||
| +---------------+ | | ||||
| | | | ||||
| | | | ||||
| +----------------+ | | ||||
| | Legacy Router | | | ||||
| | (unicast) | | | ||||
| +----------------+ | | ||||
| / | \ | | ||||
| / | \ | | ||||
| +--------+ +--------+ +--------+=========+ | | ||||
| | Phones | | ConfRm | | Desks | AMT | | | ||||
| | subnet | | subnet | | subnet | gateway | | | ||||
| +--------+ +--------+ +--------+=========+ | | ||||
| | | ||||
+---------------------------------------------+ | ||||
]]></artwork> | ||||
</figure> | ||||
<t>By adding an AMT relay to this office network as in <xref target= | ||||
"figrxoffice" format="default"/>, it's | ||||
possible to make use of multicast services from the example multicast-capable | ||||
ISP in <xref target="exrxisp" format="default"/>.</t> | ||||
<figure anchor="figrxoffice"> | ||||
<name>Small Office Example</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Multicast-capable ISP | ||||
^ | ||||
| Office Network | ||||
+----------|----------------------------------+ | ||||
| | | | ||||
| +---------------+ (Wifi) Mobile apps | | ||||
| | Modem+ | Wifi | - - - - w/ embedded | | ||||
| | Router | AP | AMT gateways | | ||||
| +---------------+ | | ||||
| | +=======+ | | ||||
| +---Wired LAN---| AMT | | | ||||
| | | relay | | | ||||
| +----------------+ +=======+ | | ||||
| | Legacy Router | | | ||||
| | (unicast) | | | ||||
| +----------------+ | | ||||
| / | \ | | ||||
| / | \ | | ||||
| +--------+ +--------+ +--------+=========+ | | ||||
| | Phones | | ConfRm | | Desks | AMT | | | ||||
| | subnet | | subnet | | subnet | gateway | | | ||||
| +--------+ +--------+ +--------+=========+ | | ||||
| | | ||||
+---------------------------------------------+ | ||||
]]></artwork> | ||||
</figure> | ||||
<t>When multicast-capable networks are chained like this, with a net | ||||
work like | ||||
the one in <xref target="figrxoffice" format="default"/> receiving Internet ser | ||||
vices from a | ||||
multicast-capable network like the one in <xref target="figrxisp" format="defau | ||||
lt"/>, it's important for | ||||
AMT gateways to reach the more local AMT relay in order to avoid | ||||
accidentally tunneling multicast traffic from a more distant AMT relay with | ||||
unicast and failing to utilize the multicast transport capabilities of the | ||||
network in <xref target="figrxisp" format="default"/>.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="extx" numbered="true" toc="default"> | ||||
<name>Example Sending Networks</name> | ||||
<section anchor="extxsnd" numbered="true" toc="default"> | ||||
<name>Sender-Controlled Relays</name> | ||||
<t>When a sender network is also operating AMT relays to distribute | ||||
multicast | ||||
traffic, as in <xref target="figtxrelay" format="default"/>, each address could | ||||
appear as an AMTRELAY RR | ||||
for the reverse IP of the sender. Alternately, one or more domain names could a | ||||
ppear | ||||
in AMTRELAY RRs, and the AMT relay addresses can be discovered by finding | ||||
A or AAAA records from those domain names.</t> | ||||
<figure anchor="figtxrelay"> | ||||
<name>Small Office Example</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Sender Network | ||||
+-----------------------------------+ | ||||
| | | ||||
| +--------+ +=======+ +=======+ | | ||||
| | Sender | | AMT | | AMT | | | ||||
| +--------+ | relay | | relay | | | ||||
| | +=======+ +=======+ | | ||||
| | | | | | ||||
| +-----+------+----------+ | | ||||
| | | | ||||
+-----------|-----------------------+ | ||||
v | ||||
Internet | ||||
(non-multicast) | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
<section anchor="extxprv" numbered="true" toc="default"> | ||||
<name>Provider-Controlled Relays</name> | ||||
<t>When an ISP offers a service to transmit outbound multicast traff | ||||
ic through | ||||
a forwarding network, it might also offer AMT relays in order to reach | ||||
receivers without multicast connectivity to the forwarding network, as in | ||||
<xref target="figtxisp" format="default"/>. In this case, it's recommended that | ||||
the ISP also provide at | ||||
least one domain name for the AMT relays for use with the AMTRELAY RR.</t> | ||||
<t>When the sender wishes to use the relays provided by the ISP for | ||||
forwarding multicast traffic, an AMTRELAY RR should be configured to use | ||||
the domain name provided by the ISP to allow for address reassignment of the | ||||
relays without forcing the sender to reconfigure the corresponding AMTRELAY | ||||
RRs.</t> | ||||
<figure anchor="figtxisp"> | ||||
<name>Sending ISP Example</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
+--------+ | ||||
| Sender | | ||||
+---+----+ Multicast-enabled | ||||
| Sending Network | ||||
+-----------|-------------------------------+ | ||||
| v | | ||||
| +------------+ +=======+ +=======+ | | ||||
| | Agg Router | | AMT | | AMT | | | ||||
| +------------+ | relay | | relay | | | ||||
| | +=======+ +=======+ | | ||||
| | | | | | ||||
| +-----+------+--------+---------+ | | ||||
| | | | | ||||
| +--------+ +--------+ | | ||||
| | Border |---| Border | | | ||||
| | Router | | Router | | | ||||
| +--------+ +--------+ | | ||||
+-----|------------|------------------------+ | ||||
| | | ||||
v v | ||||
Internet | ||||
(non-multicast) | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
<section anchor="relay-discovery-operation" numbered="true" toc="default"> | ||||
<name>Relay Discovery Operation</name> | ||||
<section anchor="priority" numbered="true" toc="default"> | ||||
<name>Optimal Relay Selection</name> | ||||
<section anchor="overview" numbered="true" toc="default"> | ||||
<name>Overview</name> | ||||
<t>The reverse source IP DNS query of an AMTRELAY RR is a good way for | ||||
a gateway | ||||
to discover a relay that is known to the sender.</t> | ||||
<t>However, it is *not* necessarily a good way to discover the best re | ||||
lay for that | ||||
gateway to use, because the RR will only provide information about relays | ||||
known to the source.</t> | ||||
<t>If there is an upstream relay in a network that is topologically cl | ||||
oser to | ||||
the gateway and is able to receive and forward multicast traffic from the sende | ||||
r, | ||||
that relay is better for the gateway to use since more of the network path | ||||
uses native multicast, allowing more chances for packet replication. But since | ||||
that relay is not known to the sender, it won't be advertised in the sender's | ||||
reverse IP DNS record. An example network that illustrates this scenario is | ||||
outlined in <xref target="figrxoffice" format="default"/> from <xref target="ex | ||||
office" format="default"/>.</t> | ||||
<t>It's only appropriate for an AMT gateway to discover an AMT relay b | ||||
y querying | ||||
an AMTRELAY RR owned by a sender when all of these conditions are met:</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>The gateway needs to propagate a join of an (S,G) over AMT becau | ||||
se in | ||||
the gateway's network, no RPF next hop toward the source can | ||||
propagate a native multicast join of the (S,G);</li> | ||||
<li>The gateway is not already connected to a relay that forwards mu | ||||
lticast | ||||
traffic from the source of the (S,G);</li> | ||||
<li>The gateway is not configured to use a particular IP address for | ||||
AMT | ||||
discovery, or a relay discovered with that IP is not able to forward | ||||
traffic from the source of the (S,G);</li> | ||||
<li>The gateway is not able to find an upstream AMT relay with | ||||
DNS-based Service Discovery (DNS-SD) | ||||
<xref target="RFC6763" format="default"/> using "_amt._udp" as the Service sect | ||||
ion of the queries, or a | ||||
relay discovered this way is not able to forward traffic from the source of | ||||
the (S,G) (as described in <xref target="trafficabsent" format="default"/> and | ||||
<xref target="loaded" format="counter"/>); and</li> | ||||
<li>The gateway is not able to find an upstream AMT relay with the w | ||||
ell-known | ||||
anycast addresses from <xref target="RFC7450" sectionFormat="of" section="7"/>. | ||||
</li> | ||||
</ol> | ||||
<t>When all of the above conditions are met, the gateway has no path w | ||||
ithin its local | ||||
network that can receive multicast traffic from the source IP of the (S,G).</t> | ||||
<t>In this situation, the best way to find a relay that can forward th | ||||
e | ||||
required traffic is to use information that comes from the operator of the | ||||
sender. When the sender has configured an AMTRELAY RR, gateways can use the | ||||
DRIAD mechanism defined in this document to discover the relay information | ||||
provided by the sender.</t> | ||||
<t>Note that the above conditions are designed to prefer the use of | ||||
a local AMT relay if one can be discovered. However, note also | ||||
that the network upstream of the locally discovered relay would | ||||
still need to receive traffic from the sender of the (S,G) in order | ||||
to forward it. Therefore, unless the upstream network contains the | ||||
sender or has a multicast-capable peering with a network that can | ||||
forward traffic from the sender, the upstream network might still | ||||
use AMT to ingest the traffic from a network that can receive | ||||
traffic from the sender. If this is the case, the upstream AMT | ||||
gateway could still rely on the AMTRELAY RR provided by the sender, | ||||
even though the AMTRELAY RR is not directly used by gateways | ||||
topologically closer to the receivers. For a concrete example of | ||||
such a situation, consider the network in <xref target="figrxoffice"/> | ||||
connected as one | ||||
of the customers to the network in <xref target="figrxisp"/>.</t> | ||||
</section> | ||||
<section anchor="ordering" numbered="true" toc="default"> | ||||
<name>Preference Ordering</name> | ||||
<t>This section defines a preference ordering for relay addresses duri | ||||
ng | ||||
the relay discovery process. Gateways are encouraged to implement a | ||||
Happy Eyeballs <xref target="RFC8305"/> algorithm to try candidate relays | ||||
concurrently (see <xref target="happy"/>), but even | ||||
gateways that do not implement a Happy Eyeballs algorithm <bcp14>SHOULD</bcp14> | ||||
use | ||||
this ordering, except as noted.</t> | ||||
<t>When establishing an AMT tunnel to forward multicast data, it's | ||||
very important for the discovery process to prioritize network | ||||
topology considerations ahead of address selection considerations in | ||||
order to gain the packet replication benefits from using multicast | ||||
instead of unicast tunneling in the multicast-capable portions of the | ||||
network path.</t> | ||||
<t>The intent of the advice and requirements in this section is to des | ||||
cribe | ||||
how a gateway should make use of the concurrency provided by a Happy | ||||
Eyeballs algorithm to reduce the join latency while still prioritizing | ||||
network efficiency considerations over address selection considerations.</t> | ||||
<t><xref target="RFC8305" sectionFormat="of" section="4"/> requires a | ||||
Happy Eyeballs algorithm to sort | ||||
the addresses with the Destination Address Selection defined in <xref target="R | ||||
FC6724" sectionFormat="of" section="6"/>, but for the above reasons, that requir | ||||
ement is superseded | ||||
in the AMT discovery use case by the following considerations:</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>Prefer Local Relays </t> | ||||
<t><xref target="figrxoffice" format="default"/> and <xref target= | ||||
"exoffice" format="default"/> provide a motivating example to prefer | ||||
DNS-SD <xref target="RFC6763" format="default"/> for discovery strictly ahead | ||||
of using the AMTRELAY RR | ||||
controlled by the sender for AMT discovery.</t> | ||||
<t> | ||||
For this reason, it's <bcp14>RECOMMENDED</bcp14> that AMT gateways by default p | ||||
erform | ||||
service discovery using DNS Service Discovery (DNS-SD) <xref target="RFC6763" | ||||
format="default"/> for | ||||
_amt._udp.<domain> (with <domain> chosen as described in <xref tar | ||||
get="RFC6763" sectionFormat="of" section="11"/>) and use the AMT relays discover | ||||
ed that way in preference to | ||||
AMT relays discoverable via the mechanism defined in this document | ||||
(DRIAD).</t> | ||||
</li> | ||||
<li> | ||||
<t>Prefer Relays Managed by the Containing Network </t> | ||||
<t> | ||||
When no local relay is discoverable with DNS-SD, it still may be the | ||||
case that a relay local to the receiver is operated by the network | ||||
providing transit services to the receiver. </t> | ||||
<t> | ||||
In this case, when the network cannot make the relay discoverable via | ||||
DNS-SD, the network <bcp14>SHOULD</bcp14> use the well-known anycast addresses | ||||
from <xref target="RFC7450" format="default" section="7"/> to route discovery t | ||||
raffic to the relay most | ||||
appropriate to the receiver's gateway.</t> | ||||
<t> | ||||
Accordingly, the gateway <bcp14>SHOULD</bcp14> by default discover a relay with | ||||
the | ||||
well-known AMT anycast addresses as the next-best option after DNS-SD | ||||
when searching for a local relay.</t> | ||||
</li> | ||||
<li> | ||||
<t>Let Sender Manage Relay Provisioning </t> | ||||
<t> | ||||
A related motivating example is provided by considering a sender whose | ||||
traffic can be forwarded by relays in a sender-controlled network | ||||
like <xref target="figtxrelay" format="default"/> in <xref target="extxsnd" fo | ||||
rmat="default"/> and by relays in a | ||||
provider-controlled network like <xref target="figtxisp" format="default"/> in | ||||
<xref target="extxprv" format="default"/>, with | ||||
different cost and scalability profiles for the different options. </t> | ||||
<t> | ||||
In this example about the sending-side network, the precedence field | ||||
described in <xref target="rrdef-precedence" format="default"/> is a critical | ||||
method of control so | ||||
that senders can provide the appropriate guidance to gateways | ||||
during the discovery process in order to manage load and failover | ||||
scenarios in a manner that operates well with the sender's | ||||
provisioning strategy for horizontal scaling of AMT relays. </t> | ||||
<t> | ||||
Therefore, after DNS-SD, the precedence from the RR <bcp14>MUST</bcp14> be used | ||||
for | ||||
sorting preference ahead of the Destination Address Selection ordering | ||||
from <xref target="RFC6724" section="6" sectionFormat="of"/> so that only rela | ||||
y IPs with the same | ||||
precedence are directly compared according to the Destination Address | ||||
Selection ordering.</t> | ||||
</li> | ||||
</ul> | ||||
<t>Accordingly, AMT gateways <bcp14>SHOULD</bcp14> by default prefer r | ||||
elays in this | ||||
order:</t> | ||||
<ol> | ||||
<li>DNS-SD</li> | ||||
<li>Anycast addresses from <xref target="RFC7450" sectionFormat="of" section="7 | ||||
"/></li> | ||||
<li>DRIAD</li> | ||||
</ol> | ||||
<t>This default behavior <bcp14>MAY</bcp14> be overridden by administr | ||||
ative configuration where | ||||
other behavior is more appropriate for the gateway within its network.</t> | ||||
<t>Among relay addresses that have an equivalent preference as describ | ||||
ed above, a | ||||
Happy Eyeballs algorithm for AMT <bcp14>SHOULD</bcp14> use the Destination Addr | ||||
ess Selection | ||||
defined in <xref target="RFC6724" sectionFormat="of" section="6"/>.</t> | ||||
<t>Among relay addresses that still have an equivalent preference afte | ||||
r the | ||||
above orderings, a gateway <bcp14>SHOULD</bcp14> make a non-deterministic choic | ||||
e (such as | ||||
a pseudorandom selection) for relay preference ordering in order to | ||||
support load balancing by DNS configurations that provide many relay | ||||
options.</t> | ||||
<t>The gateway <bcp14>MAY</bcp14> introduce a bias in the non-determin | ||||
istic choice according | ||||
to information that indicates expected benefits from selecting some relays in | ||||
preference to others. Details about the structure and collection of this | ||||
information are out of scope for this document but could, for example, be | ||||
obtained by out-of-band methods or from a historical record about | ||||
network topology, timing information, or the response to a probing | ||||
mechanism. A gateway in possession of such information <bcp14>MAY</bcp14> use i | ||||
t to prefer topologically closer relays.</t> | ||||
<t>Within the above constraints, gateways <bcp14>MAY</bcp14> make use | ||||
of other considerations | ||||
from <xref target="RFC8305" sectionFormat="of" section="4"/>, such as the addre | ||||
ss family interleaving | ||||
strategies, to produce a final ordering of candidate relay addresses.</t> | ||||
<t>Note also that certain relay addresses might be excluded from consi | ||||
deration | ||||
by the hold-down timers described in <xref target="trafficabsent" format="defau | ||||
lt"/> or <xref target="loaded" format="counter"/>. These | ||||
relays constitute "unusable destinations" under Rule 1 of the Destination | ||||
Address Selection and are also not part of the superseding considerations | ||||
described above.</t> | ||||
<t>The discovery and connection process for the relay addresses in the | ||||
above | ||||
described ordering <bcp14>MAY</bcp14> operate in parallel, subject to delays pr | ||||
escribed | ||||
by the Happy Eyeballs requirements described in <xref | ||||
target="RFC8305" sectionFormat="of" section="5"/> | ||||
for successively launched concurrent connection attempts.</t> | ||||
</section> | ||||
<section anchor="connecting-to-multiple-relays" numbered="true" toc="def | ||||
ault"> | ||||
<name>Connecting to Multiple Relays</name> | ||||
<t>In some deployments, it may be useful for a gateway to connect to | ||||
multiple upstream relays and subscribe to the same traffic in order to | ||||
support an active/active failover model. A gateway <bcp14>SHOULD NOT</bcp14> b | ||||
e | ||||
configured to do so without guaranteeing that adequate bandwidth is | ||||
available.</t> | ||||
<t>A gateway configured to do this <bcp14>SHOULD</bcp14> still use the | ||||
same preference-ordering logic from <xref target="ordering" format="default"/> | ||||
for each connection. (Note that | ||||
this ordering allows for overriding by explicit administrative | ||||
configuration where required.)</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="happy" numbered="true" toc="default"> | ||||
<name>Happy Eyeballs</name> | ||||
<section anchor="overview-1" numbered="true" toc="default"> | ||||
<name>Overview</name> | ||||
<t>Often, multiple choices of relay will exist for a gateway using DRI | ||||
AD | ||||
for relay discovery. Happy Eyeballs <xref target="RFC8305" format="default"/> | ||||
provides a widely | ||||
deployed and generalizable strategy for probing multiple possible | ||||
connections in parallel. Therefore, it is <bcp14>RECOMMENDED</bcp14> that DRIAD | ||||
-capable | ||||
gateways implement a Happy Eyeballs algorithm to support fast discovery | ||||
of the most preferred available relay by probing multiple relays | ||||
concurrently.</t> | ||||
<t>The parallel discovery logic of a Happy Eyeballs algorithm serves t | ||||
o | ||||
reduce join latency for the initial join of an SSM channel. This section | ||||
and the preference ordering of relays defined in <xref target="ordering" | ||||
format="default"/> together provide guidance on use of a Happy Eyeballs algorit | ||||
hm for the | ||||
case of establishing AMT connections.</t> | ||||
<t>Note that according to the definition in <xref target="connection-d | ||||
ef" format="default"/> of this | ||||
document, establishing the connection occurs before sending a membership | ||||
report. As described in <xref target="RFC8305" | ||||
sectionFormat="of" section="5"/>, only one of the | ||||
successful connections will be used, and the others are all canceled | ||||
or ignored. In the context of an AMT connection, this means the gateway | ||||
will send the membership reports that subscribe to traffic only for the | ||||
chosen connection after the Happy Eyeballs algorithm resolves.</t> | ||||
</section> | ||||
<section anchor="algorithm-guidelines" numbered="true" toc="default"> | ||||
<name>Algorithm Guidelines</name> | ||||
<t>During the "Initiation of asynchronous DNS queries" phase | ||||
described in <xref target="RFC8305" sectionFormat="of" section="3"/>, | ||||
a gateway attempts to resolve the domain names | ||||
listed in <xref target="priority" format="default"/>. This consists of resolvi | ||||
ng the SRV queries for | ||||
DNS-SD domains for the AMT service, as well as the AMTRELAY query for the | ||||
reverse IP domain defined in this document.</t> | ||||
<t>Section 5.2.3.4.1 of <xref target="RFC7450"/> lists several events that may c | <t>Each of the SRV and AMTRELAY responses might contain:</t> | |||
ause a | ||||
gateway to start or restart the discovery procedure.</t> | ||||
<t>This document provides some updates and recommendations regarding the | <ul | |||
handling of these and similar events. The first 5 events are copied | spacing="normal"> <li>one | |||
here and numbered for easier reference, and the remaining 4 events are | or more IP addresses (as with type 1 or type 2 AMTRELAY | |||
newly added for consideration in this document:</t> | responses or when the SRV Additional Data section of the | |||
SRV response contains the address records for the target, | ||||
as urged by <xref target="RFC2782" format="default"/>), | ||||
or</li> | ||||
<li> | ||||
only domain names (as with type 3 | ||||
responses from <xref target="rtype" format="default"/> or | ||||
an SRV response without an additional data section).</li></ul> | ||||
<t>When present, IP addresses in the initial response provide resolved | ||||
destination address candidates for the "Sorting of resolved | ||||
destination addresses" phase described in <xref target="RFC8305" | ||||
sectionFormat="of" section="4"/>), | ||||
whereas domain names without IP addresses in the initial response result | ||||
in another set of queries for AAAA and A records, whose responses provide | ||||
the candidate resolved destination addresses.</t> | ||||
<t>Since the SRV or AMTRELAY responses don't have a bound on the count | ||||
of | ||||
queries that might be generated aside from the bounds imposed by the | ||||
DNS resolver, it's important for the gateway to provide a rate limit on | ||||
the DNS queries. The DNS query functionality is expected to follow | ||||
ordinary standards and best practices for DNS clients. A gateway <bcp14>MAY</b | ||||
cp14> | ||||
use an existing DNS client implementation that does so and <bcp14>MAY</bcp14> r | ||||
ely on | ||||
that client's rate-limiting logic to avoid issuing excessive queries. | ||||
Otherwise, a gateway <bcp14>MUST</bcp14> provide a rate limit for the DNS queri | ||||
es, and | ||||
its default settings <bcp14>SHOULD NOT</bcp14> permit more than 10 queries for | ||||
any | ||||
100-millisecond period (though this <bcp14>MAY</bcp14> be overridable by the ad | ||||
ministrative | ||||
configuration).</t> | ||||
<t>As the resolved IP addresses arrive, the Happy Eyeballs algorithm | ||||
sorts them according to the requirements and recommendations given in | ||||
<xref target="ordering" format="default"/> and attempts connections with the co | ||||
rresponding relays | ||||
under the algorithm restrictions and guidelines given in <xref target="RFC8305" | ||||
format="default"/> for | ||||
the "Establishment of one connection, which cancels all other attempts" | ||||
phase. As described in <xref target="RFC8305" sectionFormat="of" section="3"/> | ||||
, DNS resolution is | ||||
treated as asynchronous, and connection initiation does not wait | ||||
for lagging DNS responses.</t> | ||||
</section> | ||||
<section anchor="connection-def" numbered="true" toc="default"> | ||||
<name>Connection Definition</name> | ||||
<t><xref target="RFC8305" sectionFormat="of" section="5"/> | ||||
non-normatively describes a successful connection attempt as "generall | ||||
y when the TCP handshake completes".</t> | ||||
<t>There is no normative definition of a connection in the AMT specifi | ||||
cation | ||||
<xref target="RFC7450" format="default"/>, and there is no TCP connection invol | ||||
ved in an AMT tunnel.</t> | ||||
<t>However, the concept of an AMT connection in the context of a Happy | ||||
Eyeballs algorithm is a useful one, and so this section provides the | ||||
following normative definition:</t> | ||||
<ul spacing="normal"> | ||||
<t><list style="numbers"> | <li>An AMT connection is established successfully when the gateway r | |||
<t>When a gateway pseudo-interface is started (enabled).</t> | eceives | |||
<t>When the gateway wishes to report a group subscription when none | from a newly discovered relay a valid Membership Query message | |||
currently exist.</t> | (<xref target="RFC7450" sectionFormat="of" section="5.1.4"/>) that does not hav | |||
<t>Before sending the next Request message in a membership update | e the L flag set.</li> | |||
cycle.</t> | </ul> | |||
<t>After the gateway fails to receive a response to a Request | <t>See <xref target="loaded" format="default"/> of this document for f | |||
message.</t> | urther information about the | |||
<t>After the gateway receives a Membership Query message with the | relevance of the L flag to the establishment of a Happy Eyeballs | |||
L flag set to 1.</t> | connection. See <xref target="flowhealth" format="default"/> for an overview o | |||
<t>When the gateway wishes to report an (S,G) subscription with a source | f how to respond | |||
address that does not currently have other group subscriptions.</t> | if the connection does not provide multicast connectivity to the | |||
<t>When there is a network change detected, for example when a gateway is | source.</t> | |||
operating inside an end user device or application, and the device | <t>To "cancel" this kind of AMT connection for the Happy Eyeballs algo | |||
joins a different network, or when the domain portion of a DNS-SD | rithm, | |||
a gateway that has not sent a membership report with a subscription | ||||
would simply stop sending AMT packets for that connection. A | ||||
gateway only sends a membership report to a connection it has chosen as | ||||
the most preferred available connection.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="guidelines-for-restarting-discovery" numbered="true" toc | ||||
="default"> | ||||
<name>Guidelines for Restarting Discovery</name> | ||||
<section anchor="overview-2" numbered="true" toc="default"> | ||||
<name>Overview</name> | ||||
<t>It's expected that gateways deployed in different environments will | ||||
use a | ||||
variety of heuristics to decide when it's appropriate to restart the relay | ||||
discovery process in order to meet different performance goals (for example, | ||||
to fulfill different kinds of service level agreements).</t> | ||||
<t>In general, restarting the discovery process is always safe for | ||||
the gateway and relay during any of the events listed in this section | ||||
but may cause a disruption in the forwarded traffic if the discovery | ||||
process results in choosing a different relay because this changes | ||||
the RPF forwarding tree for the multicast traffic upstream of the gateway. | ||||
This is likely to result in some dropped or duplicated packets from channels | ||||
actively being tunneled from the old relay to the gateway.</t> | ||||
<t>The degree of impact on the traffic from choosing a different relay | ||||
may | ||||
depend on network conditions between the gateway and the new relay, as well | ||||
as the network conditions and topology between the sender and the new relay, | ||||
as this may cause the relay to propagate a new RPF join toward the sender.</t> | ||||
<t>Balancing the expected impact on the tunneled traffic against likel | ||||
y | ||||
or observed problems with an existing connection to the relay is the goal | ||||
of the heuristics that gateways use to determine when to restart the | ||||
discovery process.</t> | ||||
<t>The non-normative advice in this section should be treated as guide | ||||
lines to | ||||
operators and implementors working with AMT systems that can use DRIAD as | ||||
part of the relay discovery process.</t> | ||||
</section> | ||||
<section anchor="updates-to-restarting-events" numbered="true" toc="defa | ||||
ult"> | ||||
<name>Updates to Restarting Events</name> | ||||
<t><xref target="RFC7450" sectionFormat="of" section="5.2.3.4.1"/> lis | ||||
ts several events that may cause a | ||||
gateway to start or restart the discovery procedure.</t> | ||||
<t>This document provides some updates and recommendations regarding t | ||||
he | ||||
handling of these and similar events. The first five events are copied | ||||
here and numbered for easier reference, and the remaining four events are | ||||
newly added for consideration in this document:</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>When a gateway pseudo-interface is started (enabled).</li> | ||||
<li>When the gateway wishes to report a group subscription when none | ||||
currently exists.</li> | ||||
<li>Before sending the next Request message in a membership update | ||||
cycle.</li> | ||||
<li>After the gateway fails to receive a response to a Request | ||||
message.</li> | ||||
<li>After the gateway receives a Membership Query message with the | ||||
L flag set to 1.</li> | ||||
<li>When the gateway wishes to report an (S,G) subscription with a s | ||||
ource | ||||
address that does not currently have other group subscriptions.</li> | ||||
<li>When there is a network change detected; for example, when a gat | ||||
eway is | ||||
operating inside an end user device or application and the device | ||||
joins a different network or when the domain portion of a DNS-SD | ||||
domain name changes in response to a DHCP message or administrative | domain name changes in response to a DHCP message or administrative | |||
configuration.</t> | configuration.</li> | |||
<t>When substantial loss, persistent congestion, or network overload is | <li>When substantial loss, persistent congestion, or network overloa | |||
detected in the stream of AMT packets from a relay.</t> | d is | |||
<t>When the gateway has reported one or more (S,G) subscriptions, but | detected in the stream of AMT packets from a relay.</li> | |||
no traffic is received from the source for some timeout. (See | <li>When the gateway has reported one or more (S,G) subscriptions bu | |||
<xref target="trafficabsent"/>).</t> | t | |||
</list></t> | no traffic is received from the source for some timeout (see | |||
<xref target="trafficabsent" format="default"/>).</li> | ||||
<t>This list is not exhaustive, nor are any of the listed events strictly | </ol> | |||
<t>This list is not exhaustive, nor are any of the listed events stric | ||||
tly | ||||
required to always force a restart of the discovery process.</t> | required to always force a restart of the discovery process.</t> | |||
<t>Note that during event #1, a gateway may use DNS-SD but does not | ||||
<t>Note that during event #1, a gateway may use DNS-SD, but does not | ||||
have sufficient information to use DRIAD, since no source is known.</t> | have sufficient information to use DRIAD, since no source is known.</t> | |||
</section> | ||||
</section> | <section anchor="stability" numbered="true" toc="default"> | |||
<section anchor="stability" title="Tunnel Stability"> | <name>Tunnel Stability</name> | |||
<t>In general, subscribers to active traffic flows that are being forw | ||||
<t>In general, subscribers to active traffic flows that are being forwarded | arded | |||
by an AMT gateway are less likely to experience a degradation in service | by an AMT gateway are less likely to experience a degradation in service | |||
(for example, from missing or duplicated packets) when the gateway continues | (for example, from missing or duplicated packets) when the gateway continues | |||
using the same relay, as long as the relay is not overloaded and the network | using the same relay as long as the relay is not overloaded and the network | |||
conditions remain stable.</t> | conditions remain stable.</t> | |||
<t>Therefore, gateways <bcp14>SHOULD</bcp14> avoid performing a full r | ||||
<t>Therefore, gateways SHOULD avoid performing a full restart of the discovery | estart of the discovery | |||
process during routine cases of event #3 (sending a new Request message), | process during routine cases of event #3 (sending a new Request message), | |||
since it occurs frequently in normal operation.</t> | since it occurs frequently in normal operation.</t> | |||
<t>However, see Sections <xref target="flowhealth" format="counter"/>, | ||||
<t>However, see <xref target="flowhealth"/>, <xref target="discoverymessage"/>, | <xref target="discoverymessage" format="counter"/>, and <xref target="ancient" | |||
and <xref target="ancient"/> for more | format="counter"/> for more | |||
information about exceptional cases when it may be appropriate to use | information about exceptional cases when it may be appropriate to use | |||
event #3.</t> | event #3.</t> | |||
</section> | ||||
</section> | <section anchor="flowhealth" numbered="true" toc="default"> | |||
<section anchor="flowhealth" title="Traffic Health"> | <name>Traffic Health</name> | |||
<section anchor="trafficabsent" numbered="true" toc="default"> | ||||
<section anchor="trafficabsent" title="Absence of Traffic"> | <name>Absence of Traffic</name> | |||
<t>If a gateway indicates one or more (S,G) subscriptions in a Membe | ||||
<t>If a gateway indicates one or more (S,G) subscriptions in a Membership | rship | |||
Update message, but no traffic for any of the (S,G)s is received in a | Update message but no traffic for any of the (S,G)s is received in a | |||
reasonable time, it’s appropriate for the gateway to restart the | reasonable time, it's appropriate for the gateway to restart the | |||
discovery process.</t> | discovery process.</t> | |||
<t>If the gateway restarts the discovery process multiple times cons | ||||
<t>If the gateway restarts the discovery process multiple times consecutively | ecutively | |||
for this reason, the timeout period SHOULD be adjusted to provide a random | for this reason, the timeout period <bcp14>SHOULD</bcp14> be adjusted to provide | |||
a random | ||||
exponential back-off.</t> | exponential back-off.</t> | |||
<t>The <bcp14>RECOMMENDED</bcp14> timeout is a random value in the r | ||||
<t>The RECOMMENDED timeout is a random value in the range | ange | |||
[initial_timeout, MIN(initial_timeout * 2^retry_count, maximum_timeout)], | [initial_timeout, MIN(initial_timeout * 2^retry_count, maximum_timeout)], | |||
with a RECOMMENDED initial_timeout of 4 seconds and a RECOMMENDED | with a <bcp14>RECOMMENDED</bcp14> initial_timeout of 4 seconds and a <bcp14>RECO MMENDED</bcp14> | |||
maximum_timeout of 120 seconds (which is the recommended minimum NAT | maximum_timeout of 120 seconds (which is the recommended minimum NAT | |||
mapping timeout described in <xref target="RFC4787"/>).</t> | mapping timeout described in <xref target="RFC4787" format="default"/>).</t> | |||
<t>Note that the recommended initial_timeout is larger than the init | ||||
<t>Note that the recommended initial_timeout is larger than the initial | ial | |||
timout recommended in the similar algorithm from Section 5.2.3.4.3 of | timeout recommended in the similar algorithm from <xref target="RFC7450" section | |||
<xref target="RFC7450"/>. This is to provide time for RPF Join propagation in t | Format="of" section="5.2.3.4.3"/>. This is to provide time for RPF Join propaga | |||
he | tion in the | |||
sending network. Although the timeout values may be administratively | sending network. Although the timeout values may be administratively | |||
adjusted to support performance requirements, operators are advised to | adjusted to support performance requirements, operators are advised to | |||
consider the possibility of join propagation delays between the sender | consider the possibility of join propagation delays between the sender | |||
and the relay when choosing an appropriate timeout value.</t> | and the relay when choosing an appropriate timeout value.</t> | |||
<t>Gateways restarting the discovery process because of an absence o | ||||
<t>Gateways restarting the discovery process because of an absence of | f | |||
traffic MUST use a hold-down timer that removes this relay from | traffic <bcp14>MUST</bcp14> use a hold-down timer that removes this relay from | |||
consideration during subsequent rounds of discovery while active. | consideration during subsequent rounds of discovery while active. | |||
The hold-down SHOULD last for no less than 3 minutes and no more than | The hold-down <bcp14>SHOULD</bcp14> last for no less than 3 minutes and no more than | |||
10 minutes.</t> | 10 minutes.</t> | |||
</section> | ||||
</section> | <section anchor="loss-and-congestion" numbered="true" toc="default"> | |||
<section anchor="loss-and-congestion" title="Loss and Congestion"> | <name>Loss and Congestion</name> | |||
<t>In some gateway deployments, it is also feasible to monitor the h | ||||
<t>In some gateway deployments, it is also feasible to monitor the health of | ealth of | |||
traffic flows through the gateway, for example by detecting the rate of | traffic flows through the gateway -- for example, by detecting the rate of | |||
packet loss by communicating out of band with receivers, or monitoring the | packet loss by communicating out of band with receivers or monitoring the | |||
packets of known protocols with sequence numbers. Where feasible, | packets of known protocols with sequence numbers. Where feasible, | |||
it’s encouraged for gateways to use such traffic health information to | it's encouraged for gateways to use such traffic health information to | |||
trigger a restart of the discovery process during event #3 (before | trigger a restart of the discovery process during event #3 (before | |||
sending a new Request message).</t> | sending a new Request message).</t> | |||
<t>However, if a transient network event that affects the tunneled | ||||
<t>However, to avoid synchronized rediscovery by many gateways simultaneously | multicast stream -- as opposed to an event that affects the tunnel | |||
after a transient network event upstream of a relay results in | connection between the relay and gateway -- occurs, poor health | |||
many receivers detecting poor flow health at the same time, it’s recommended | detection could be triggered for many gateways simultaneously. In | |||
to add a random delay before restarting the discovery process in this case.</t> | this situation, adding a random delay to avoid synchronized | |||
rediscovery by many gateways is recommended.</t> | ||||
<t>The span of the random portion of the delay should be no less than 10 | <t>The span of the random portion of the delay should be no less tha | |||
seconds by default, but may be administratively configured | n 10 | |||
seconds by default but may be administratively configured | ||||
to support different performance requirements.</t> | to support different performance requirements.</t> | |||
</section> | ||||
</section> | <section anchor="ancient" numbered="true" toc="default"> | |||
<section anchor="ancient" title="Ancient Discovery Information"> | <name>Ancient Discovery Information</name> | |||
<t>In most cases, a gateway actively receiving healthy traffic from | ||||
<t>In most cases, a gateway actively receiving healthy traffic from a relay | a relay | |||
that has not indicated load with the L flag should prefer to remain | that has not indicated load with the L flag should prefer to remain | |||
connected to the same relay, as described in <xref target="stability"/>.</t> | connected to the same relay, as described in <xref target="stability" format="de | |||
fault"/>.</t> | ||||
<t>However, a relay that appears healthy but has been forwarding traffic for | <t>However, a relay that appears healthy but has been forwarding tra | |||
ffic for | ||||
days or weeks may have an increased chance of becoming unstable. Gateways | days or weeks may have an increased chance of becoming unstable. Gateways | |||
may benefit from restarting the discovery process during event #3 (before | may benefit from restarting the discovery process during event #3 (before | |||
sending a Request message) after the expiration of a long-term timeout, on | sending a Request message) after the expiration of a long-term timeout on | |||
the order of multiple hours, or even days in some deployments.</t> | the order of multiple hours or even days in some deployments.</t> | |||
<t>It may be beneficial for such timers to consider the amount of tr | ||||
<t>It may be beneficial for such timers to consider the amount of traffic | affic | |||
currently being forwarded, and to give a higher probability of restarting | currently being forwarded and to give a higher probability of restarting | |||
discovery during periods with an unusually low data rate, to reduce the | discovery during periods with an unusually low data rate to reduce the | |||
impact on active traffic while still avoiding relying on the results of a | impact on active traffic while still avoiding relying on the results of a | |||
very old discovery.</t> | very old discovery.</t> | |||
<t>Other issues may also be worth considering as part of this heuris | ||||
<t>Other issues may also be worth considering as part of this heuristic; for | tic; for | |||
example, if the DNS expiry time of the record that was used to discover | example, if the DNS expiry time of the record that was used to discover | |||
the current relay has not passed, the long term timer might be restarted | the current relay has not passed, the long-term timer might be restarted | |||
without restarting the discovery process.</t> | without restarting the discovery process.</t> | |||
</section> | ||||
</section> | </section> | |||
</section> | <section anchor="loaded" numbered="true" toc="default"> | |||
<section anchor="loaded" title="Relay Loaded or Shutting Down"> | <name>Relay Loaded or Shutting Down</name> | |||
<t>The L flag (see <xref target="RFC7450" sectionFormat="of" section=" | ||||
<t>The L flag (see Section 5.1.4.4 of <xref target="RFC7450"/>) is the preferred | 5.1.4.4"/>) is the preferred mechanism for | |||
mechanism for | ||||
a relay to signal overloading or a graceful shutdown to gateways.</t> | a relay to signal overloading or a graceful shutdown to gateways.</t> | |||
<t>A gateway that supports handling of the L flag should generally res | ||||
<t>A gateway that supports handling of the L flag should generally restart the | tart the | |||
discovery process when it processes a Membership Query packet with the | discovery process when it processes a Membership Query packet with the | |||
L flag set. If an L flag is received while a concurrent Happy Eyeballs | L flag set. If an L flag is received while a concurrent Happy Eyeballs | |||
discovery process is under way for multiple candidate relays (<xref target="happ | discovery process is underway for multiple candidate relays (<xref target="happy | |||
y"/>), | " format="default"/>), | |||
the relay sending the L flag SHOULD NOT be considered for the relay selection.</ | the relay sending the L flag <bcp14>SHOULD NOT</bcp14> be considered for the rel | |||
t> | ay selection.</t> | |||
<t>It is also <bcp14>RECOMMENDED</bcp14> that gateways avoid choosing | ||||
<t>It is also RECOMMENDED that gateways avoid choosing a relay | a relay | |||
that has recently sent an L flag, with approximately a 10-minute hold-down. | that has recently sent an L flag, with approximately a 10-minute hold-down. | |||
Gateways SHOULD treat this hold-down timer in the same way as the hold-down | Gateways <bcp14>SHOULD</bcp14> treat this hold-down timer in the same way as the | |||
in <xref target="trafficabsent"/>, so that the relay is removed from considerati | hold-down | |||
on | in <xref target="trafficabsent" format="default"/> so that the relay is removed | |||
for short-term subsequent rounds of discovery.</t> | from consideration | |||
for subsequent short-term rounds of discovery.</t> | ||||
</section> | </section> | |||
<section anchor="discoverymessage" title="Relay Discovery Messages vs. Restartin | <section anchor="discoverymessage" numbered="true" toc="default"> | |||
g Discovery"> | <name>Relay Discovery Messages vs. Restarting Discovery</name> | |||
<t>All AMT relays are required by <xref target="RFC7450" | ||||
<t>All AMT relays are required by <xref target="RFC7450"/> to support handling o | format="default"/> to support handling of | |||
f | Relay Discovery messages (e.g., in <xref target="RFC7450" sectionFormat="of" sec | |||
Relay Discovery messages (e.g. in Section 5.3.3.2 of <xref target="RFC7450"/>).< | tion="5.3.3.2"/>).</t> | |||
/t> | <t>So a gateway with an existing connection to a relay can send a Rela | |||
y | ||||
<t>So a gateway with an existing connection to a relay can send a Relay | ||||
Discovery message to the unicast address of that AMT relay. Under stable | Discovery message to the unicast address of that AMT relay. Under stable | |||
conditions with an unloaded relay, it’s expected that the relay will | conditions with an unloaded relay, it's expected that the relay will | |||
return its own unicast address in the Relay Advertisement, in response | return its own unicast address in the Relay Advertisement in response | |||
to such a Relay Discovery message. Since this will not result in the | to such a Relay Discovery message. Since this will not result in the | |||
gateway changing to another relay unless the relay directs the gateway | gateway changing to another relay unless the relay directs the gateway | |||
away, this is a reasonable exception to the advice against handling event #3 | away, this is a reasonable exception to the advice against handling event #3 | |||
described in <xref target="stability"/>.</t> | described in <xref target="stability" format="default"/>.</t> | |||
<t>This behavior is discouraged for gateways that do support the L fla | ||||
<t>This behavior is discouraged for gateways that do support the L flag, to | g to | |||
avoid sending unnecessary packets over the network.</t> | avoid sending unnecessary packets over the network.</t> | |||
<t>However, gateways that do not support the L flag may be able to avo | ||||
<t>However, gateways that do not support the L flag may be able to avoid a | id a | |||
disruption in the forwarded traffic by sending such Relay Discovery | disruption in the forwarded traffic by sending such Relay Discovery | |||
messages regularly. When a relay is under load or has started a graceful | messages regularly. When a relay is under load or has started a graceful | |||
shutdown, it may respond with a different relay address, which the gateway | shutdown, it may respond with a different relay address, which the gateway | |||
can use to connect to a different relay. This kind of coordinated handoff | can use to connect to a different relay. This kind of coordinated handoff | |||
will likely result in a smaller disruption to the traffic than if the relay | will likely result in a smaller disruption to the traffic than if the relay | |||
simply stops responding to Request messages, and stops forwarding traffic.</t> | simply stops responding to Request messages and stops forwarding traffic.</t> | |||
<t>This style of Relay Discovery message (one sent to the unicast addr | ||||
<t>This style of Relay Discovery message (one sent to the unicast address | ess | |||
of a relay that’s already forwarding traffic to this gateway) SHOULD NOT be | of a relay that's already forwarding traffic to this gateway) <bcp14>SHOULD NOT< | |||
considered a full restart of the relay discovery process. It is RECOMMENDED | /bcp14> be | |||
for gateways to support the L flag, but for gateways that do not support the | considered a full restart of the relay discovery process. It is <bcp14>RECOMMEN | |||
DED</bcp14> | ||||
that gateways support the L flag, but for gateways that do not support the | ||||
L flag, sending this message during event #3 may help mitigate service | L flag, sending this message during event #3 may help mitigate service | |||
degradation when relays become unstable.</t> | degradation when relays become unstable.</t> | |||
</section> | ||||
</section> | <section anchor="independent-discovery-per-traffic-source" numbered="tru | |||
<section anchor="independent-discovery-per-traffic-source" title="Independent Di | e" toc="default"> | |||
scovery Per Traffic Source"> | <name>Independent Discovery per Traffic Source</name> | |||
<t>Relays discovered via the AMTRELAY RR are source-specific relay add | ||||
<t>Relays discovered via the AMTRELAY RR are source-specific relay addresses, an | resses and | |||
d | ||||
may use different pseudo-interfaces from each other and from relays | may use different pseudo-interfaces from each other and from relays | |||
discovered via DNS-SD or a non-source-specific address, as described in | discovered via DNS-SD or via a non-source-specific address, as described in | |||
Section 4.1.2.1 of <xref target="RFC7450"/>.</t> | <xref target="RFC7450" sectionFormat="of" section="4.1.2.1"/>.</t> | |||
<t>Restarting the discovery process for one pseudo-interface does not | ||||
<t>Restarting the discovery process for one pseudo-interface does not require | require | |||
restarting the discovery process for other pseudo-interfaces. Gateway | restarting the discovery process for other pseudo-interfaces. Gateway | |||
heuristics about restarting the discovery process should operate | heuristics about restarting the discovery process should operate | |||
independently for different tunnels to relays, when responding to events | independently for different tunnels to relays when responding to events | |||
that are specific to the different tunnels.</t> | that are specific to the different tunnels.</t> | |||
</section> | ||||
</section> | </section> | |||
</section> | <section anchor="dns-configuration" numbered="true" toc="default"> | |||
<section anchor="dns-configuration" title="DNS Configuration"> | <name>DNS Configuration</name> | |||
<t>Often, an AMT gateway will only have access to the source and group I | ||||
<t>Often an AMT gateway will only have access to the source and group IP address | P addresses | |||
es | of the desired traffic and will not know any other name for the source of the | |||
of the desired traffic, and will not know any other name for the source of the | traffic. Because of this, typically, the best way of looking up AMTRELAY RRs | |||
traffic. Because of this, typically the best way of looking up AMTRELAY RRs | ||||
will be by using the source IP address as an index into one of the reverse | will be by using the source IP address as an index into one of the reverse | |||
mapping trees (in-addr.arpa for IPv4, as described in Section 3.5 of | mapping trees (in-addr.arpa for IPv4, as described in <xref target="RFC1035" sec | |||
<xref target="RFC1035"/>, or ip6.arpa for IPv6, as described in Section 2.5 of < | tionFormat="of" section="3.5"/>, or ip6.arpa for IPv6, as described in <xref tar | |||
xref target="RFC3596"/>).</t> | get="RFC3596" sectionFormat="of" section="2.5"/>).</t> | |||
<t>Therefore, it is <bcp14>RECOMMENDED</bcp14> that AMTRELAY RRs be adde | ||||
<t>Therefore, it is RECOMMENDED that AMTRELAY RRs be added to reverse IP | d to reverse IP | |||
zones as appropriate. AMTRELAY records MAY also appear in other zones, | zones as appropriate. AMTRELAY records <bcp14>MAY</bcp14> also appear in other | |||
zones, | ||||
since this may be necessary to perform delegation from the reverse zones | since this may be necessary to perform delegation from the reverse zones | |||
(see for example Section 5.2 of <xref target="RFC2317"/>), but the use case enab led | (see, for example, <xref target="RFC2317" sectionFormat="of" section="5.2"/>), b ut the use case enabled | |||
by this document requires a reverse IP mapping for the source from an | by this document requires a reverse IP mapping for the source from an | |||
(S,G) in order to be useful to most AMT gateways. This document does | (S,G) in order to be useful to most AMT gateways. This document does | |||
not define semantics for the use of AMTRELAY records obtained in a way | not define semantics for the use of AMTRELAY records obtained in a way | |||
other than by a reverse IP lookup.</t> | other than by a reverse IP lookup.</t> | |||
<t>When performing the AMTRELAY RR lookup, any CNAMEs or DNAMEs found <b | ||||
<t>When performing the AMTRELAY RR lookup, any CNAMEs or DNAMEs found MUST be | cp14>MUST</bcp14> be | |||
followed. This is necessary to support zone delegation. Some examples | followed. This is necessary to support zone delegation. Some examples | |||
outlining this need are described in <xref target="RFC2317"/>.</t> | outlining this need are described in <xref target="RFC2317" format="default"/>.< | |||
/t> | ||||
<t>See <xref target="rrdef"/> and <xref target="rpformat"/> for a detailed expla | <t>See Sections <xref target="rrdef" format="counter"/> and <xref target | |||
nation of the contents | ="rpformat" format="counter"/> for a detailed explanation of the contents | |||
for a DNS Zone file.</t> | of a DNS zone file.</t> | |||
</section> | ||||
</section> | <section anchor="waiting-for-dns-resolution" numbered="true" toc="default" | |||
<section anchor="waiting-for-dns-resolution" title="Waiting for DNS resolution"> | > | |||
<name>Waiting for DNS Resolution</name> | ||||
<t>The DNS query functionality is expected to follow ordinary standards and best | <t>DNS query functionality is expected to follow ordinary standards and | |||
practices for DNS clients. A gateway MAY use an existing DNS client | best | |||
implementation that does so, and MAY rely on that client’s retry logic | practices for DNS clients. A gateway <bcp14>MAY</bcp14> use an existing DNS cli | |||
ent | ||||
implementation that does so and <bcp14>MAY</bcp14> rely on that client's retry l | ||||
ogic | ||||
to determine the timeouts between retries.</t> | to determine the timeouts between retries.</t> | |||
<t>Otherwise, a gateway <bcp14>MAY</bcp14> resend a DNS query if it does | ||||
<t>Otherwise, a gateway MAY re-send a DNS query if it does not receive an | not receive an | |||
appropriate DNS response within some timeout period. If the gateway retries | appropriate DNS response within some timeout period. If the gateway retries | |||
multiple times, the timeout period SHOULD be adjusted to provide a random | multiple times, the timeout period <bcp14>SHOULD</bcp14> be adjusted to provide a random | |||
exponential back-off.</t> | exponential back-off.</t> | |||
<t>As with the waiting process for the Relay Advertisement message from | ||||
<t>As with the waiting process for the Relay Advertisement message from | <xref target="RFC7450" sectionFormat="of" section="5.2.3.4.3"/>, the <bcp14>RECO | |||
Section 5.2.3.4.3 of <xref target="RFC7450"/>, the RECOMMENDED timeout is a rand | MMENDED</bcp14> timeout is a random value | |||
om value | ||||
in the range [initial_timeout, MIN(initial_timeout * 2^retry_count, | in the range [initial_timeout, MIN(initial_timeout * 2^retry_count, | |||
maximum_timeout)], with a RECOMMENDED initial_timeout of 1 second and | maximum_timeout)], with a <bcp14>RECOMMENDED</bcp14> initial_timeout of 1 second | |||
a RECOMMENDED maximum_timeout of 120 seconds.</t> | and | |||
a <bcp14>RECOMMENDED</bcp14> maximum_timeout of 120 seconds.</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="rrdef" title="AMTRELAY Resource Record Definition"> | <section anchor="rrdef" numbered="true" toc="default"> | |||
<name>AMTRELAY Resource Record Definition</name> | ||||
<section anchor="amtrelay-rrtype" title="AMTRELAY RRType"> | <section anchor="amtrelay-rrtype" numbered="true" toc="default"> | |||
<name>AMTRELAY RRType</name> | ||||
<t>The AMTRELAY RRType has the mnemonic AMTRELAY and type code 260 (decimal).</t | <t>The AMTRELAY RRType has the mnemonic AMTRELAY and type code 260 (deci | |||
> | mal).</t> | |||
<t>The AMTRELAY RR is class independent.</t> | ||||
<t>The AMTRELAY RR is class independent.</t> | </section> | |||
<section anchor="amtrelay-rdata-format" numbered="true" toc="default"> | ||||
</section> | <name>AMTRELAY RData Format</name> | |||
<section anchor="amtrelay-rdata-format" title="AMTRELAY RData Format"> | <t>The AMTRELAY RData consists of an 8-bit precedence field, a 1-bit | |||
"Discovery Optional" field, a 7-bit type field, and a variable | ||||
<t>The AMTRELAY RData consists of a 8-bit precedence field, a 1-bit | ||||
“Discovery Optional” field, a 7-bit type field, and a variable | ||||
length relay field.</t> | length relay field.</t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| precedence |D| type | | | | precedence |D| type | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | |||
~ relay ~ | ~ relay ~ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork></figure> | ]]></artwork> | |||
<section anchor="rrdef-precedence" numbered="true" toc="default"> | ||||
<section anchor="rrdef-precedence" title="RData Format - Precedence"> | <name>RData Format - Precedence</name> | |||
<t>This is an 8-bit precedence for this record. It is interpreted in | ||||
<t>This is an 8-bit precedence for this record. It is interpreted in | the same way as the PREFERENCE field described in <xref target="RFC1035" section | |||
the same way as the PREFERENCE field described in Section 3.3.9 of | Format="of" section="3.3.9"/>.</t> | |||
<xref target="RFC1035"/>.</t> | <t>Relays listed in AMTRELAY records with a lower value for precedence | |||
are to be | ||||
<t>Relays listed in AMTRELAY records with a lower value for precedence are to be | ||||
attempted first.</t> | attempted first.</t> | |||
</section> | ||||
</section> | <section anchor="rrdef-dbit" numbered="true" toc="default"> | |||
<section anchor="rrdef-dbit" title="RData Format - Discovery Optional (D-bit)"> | <name>RData Format - Discovery Optional (D-bit)</name> | |||
<t>The D-bit is a "Discovery Optional" flag.</t> | ||||
<t>The D bit is a “Discovery Optional” flag.</t> | <t>If the D-bit is set to 0, a gateway using this RR <bcp14>MUST</bcp1 | |||
4> perform AMT relay | ||||
<t>If the D bit is set to 0, a gateway using this RR MUST perform AMT relay | discovery as described in <xref target="RFC7450" sectionFormat="of" section="4.2 | |||
discovery as described in Section 4.2.1.1 of <xref target="RFC7450"/>, rather th | .1.1"/> rather than directly | |||
an directly | ||||
sending an AMT Request message to the relay.</t> | sending an AMT Request message to the relay.</t> | |||
<t>That is, the gateway <bcp14>MUST</bcp14> receive an AMT Relay Adver | ||||
<t>That is, the gateway MUST receive an AMT Relay Advertisement message (Section | tisement message (<xref target="RFC7450" sectionFormat="of" section="5.1.2"/>) f | |||
5.1.2 of <xref target="RFC7450"/>) for an address before sending an AMT Request | or an address before sending an AMT Request message | |||
message | (<xref target="RFC7450" sectionFormat="of" section="5.1.3"/>) to that address. B | |||
(Section 5.1.3 of <xref target="RFC7450"/>) to that address. Before receiving th | efore receiving the Relay | |||
e Relay | ||||
Advertisement message, this record has only indicated that the address can be | Advertisement message, this record has only indicated that the address can be | |||
used for AMT relay discovery, not for a Request message. This is necessary for | used for AMT relay discovery, not for a Request message. This is necessary for | |||
devices that are not fully functional AMT relays, but rather load balancers or | devices that are not fully functional AMT relays but rather load balancers or | |||
brokers, as mentioned in Section 4.2.1.1 of <xref target="RFC7450"/>.</t> | brokers, as mentioned in <xref target="RFC7450" sectionFormat="of" section="4.2. | |||
1.1"/>.</t> | ||||
<t>If the D bit is set to 1, the gateway MAY send an AMT Request message directl | <t>If the D-bit is set to 1, the gateway <bcp14>MAY</bcp14> send an AM | |||
y | T Request message directly | |||
to the discovered relay address without first sending an AMT Discovery message.< /t> | to the discovered relay address without first sending an AMT Discovery message.< /t> | |||
<t>This bit should be set according to advice from the AMT relay opera | ||||
<t>This bit should be set according to advice from the AMT relay operator. The | tor. The | |||
D bit MUST be set to zero when no information is available from the AMT relay | D-bit <bcp14>MUST</bcp14> be set to zero when no information is available from t | |||
he AMT relay | ||||
operator about its suitability.</t> | operator about its suitability.</t> | |||
</section> | ||||
</section> | <section anchor="rtype" numbered="true" toc="default"> | |||
<section anchor="rtype" title="RData Format - Type"> | <name>RData Format - Type</name> | |||
<t>The type field indicates the format of the information that | ||||
<t>The type field indicates the format of the information that | ||||
is stored in the relay field.</t> | is stored in the relay field.</t> | |||
<t>The following values are defined:</t> | ||||
<t>The following values are defined:</t> | <ul spacing="normal"> | |||
<li>type = 0: | ||||
<t><list style="symbols"> | The relay field is empty (0 bytes).</li> | |||
<t>type = 0: | <li>type = 1: | |||
The relay field is empty (0 bytes).</t> | The relay field contains a 4-octet IPv4 address.</li> | |||
<t>type = 1: | <li>type = 2: | |||
The relay field contains a 4-octet IPv4 address.</t> | The relay field contains a 16-octet IPv6 address.</li> | |||
<t>type = 2: | <li>type = 3: | |||
The relay field contains a 16-octet IPv6 address.</t> | ||||
<t>type = 3: | ||||
The relay field contains a wire-encoded domain name. The wire-encoded | The relay field contains a wire-encoded domain name. The wire-encoded | |||
format is self-describing, so the length is implicit. The domain name | format is self-describing, so the length is implicit. The domain name | |||
MUST NOT be compressed. (See Section 3.3 of <xref target="RFC1035"/> and Sectio | <bcp14>MUST NOT</bcp14> be compressed (see <xref target="RFC1035" sectionFormat= | |||
n 4 of | "of" | |||
<xref target="RFC3597"/>.)</t> | section="3.3"/> and <xref target="RFC3597" sectionFormat="of" section="4"/>).</l | |||
</list></t> | i> | |||
</ul> | ||||
<t>RRs with an undefined value in the Type field SHOULD NOT be considered | <t>RRs with an undefined value in the Type field <bcp14>SHOULD NOT</bc | |||
p14> be considered | ||||
by receiving gateways for AMT relay discovery.</t> | by receiving gateways for AMT relay discovery.</t> | |||
</section> | ||||
</section> | <section anchor="rdformat" numbered="true" toc="default"> | |||
<section anchor="rdformat" title="RData Format - Relay"> | <name>RData Format - Relay</name> | |||
<t>The relay field is the address or domain name of the AMT relay. It | ||||
<t>The relay field is the address or domain name of the AMT relay. It is | is | |||
formatted according to the type field.</t> | formatted according to the type field.</t> | |||
<t>When the type field is 0, the length of the relay field is 0, and i | ||||
<t>When the type field is 0, the length of the relay field is 0, and it | t | |||
indicates that no AMT relay should be used for multicast traffic from this | indicates that no AMT relay should be used for multicast traffic from this | |||
source.</t> | source.</t> | |||
<t>When the type field is 1, the length of the relay field is 4 octets | ||||
<t>When the type field is 1, the length of the relay field is 4 octets, and a | , and a | |||
32-bit IPv4 address is present. This is an IPv4 address as described in | 32-bit IPv4 address is present. This is an IPv4 address as described in | |||
Section 3.4.1 of <xref target="RFC1035"/>. This is a 32-bit number in network by te | <xref target="RFC1035" sectionFormat="of" section="3.4.1"/>. This is a 32-bit nu mber in network byte | |||
order.</t> | order.</t> | |||
<t>When the type field is 2, the length of the relay field is 16 octet | ||||
<t>When the type field is 2, the length of the relay field is 16 octets, and | s, and | |||
a 128-bit IPv6 address is present. This is an IPv6 address as described in | a 128-bit IPv6 address is present. This is an IPv6 address as described in | |||
Section 2.2 of <xref target="RFC3596"/>. This is a 128-bit number in network byt | <xref target="RFC3596" sectionFormat="of" section="2.2"/>. This is a 128-bit num | |||
e order.</t> | ber in network byte order.</t> | |||
<t>When the type field is 3, the relay field is a normal wire-encoded | ||||
<t>When the type field is 3, the relay field is a normal wire-encoded domain | domain | |||
name, as described in Section 3.3 of <xref target="RFC1035"/>. Compression MUST | name, as described in <xref target="RFC1035" sectionFormat="of" | |||
NOT be | section="3.3"/>. For the reasons given in <xref target="RFC3597" | |||
used, for the reasons given in Section 4 of <xref target="RFC3597"/>.</t> | sectionFormat="of" section="4"/>, compression <bcp14>MUST NOT</bcp14> be | |||
used.</t> | ||||
<t>For a type 3 record, the D-bit and preference fields carry over to all | <t>For a type 3 record, the D-bit and preference fields carry over to | |||
all | ||||
A or AAAA records for the domain name. There is no difference in the | A or AAAA records for the domain name. There is no difference in the | |||
result of the discovery process when it’s obtained by type 1 or type 2 | result of the discovery process when it's obtained by type 1 or type 2 | |||
AMTRELAY records with identical D-bit and preference fields, vs. when | AMTRELAY records with identical D-bit and preference fields vs. when | |||
the result is obtained by a type 3 AMTRELAY record that resolves | the result is obtained by a type 3 AMTRELAY record that resolves | |||
to the same set of IPv4 and IPv6 addresses via A and AAAA lookups.</t> | to the same set of IPv4 and IPv6 addresses via A and AAAA lookups.</t> | |||
</section> | ||||
</section> | </section> | |||
</section> | <section anchor="rpformat" numbered="true" toc="default"> | |||
<section anchor="rpformat" title="AMTRELAY Record Presentation Format"> | <name>AMTRELAY Record Presentation Format</name> | |||
<section anchor="representation-of-amtrelay-rrs" numbered="true" toc="de | ||||
<section anchor="representation-of-amtrelay-rrs" title="Representation of AMTREL | fault"> | |||
AY RRs"> | <name>Representation of AMTRELAY RRs</name> | |||
<t>AMTRELAY RRs may appear in a zone data master file. The precedence, | ||||
<t>AMTRELAY RRs may appear in a zone data master file. The precedence, D-bit, | D-bit, | |||
relay type, and relay fields are REQUIRED.</t> | relay type, and relay fields are <bcp14>REQUIRED</bcp14>.</t> | |||
<t>If the relay type field is 0, the relay field <bcp14>MUST</bcp14> b | ||||
<t>If the relay type field is 0, the relay field MUST be “.”.</t> | e ".".</t> | |||
<t>The presentation for the record is as follows:</t> | ||||
<t>The presentation for the record is as follows:</t> | <sourcecode name="" type=""><![CDATA[ | |||
<figure><artwork><![CDATA[ | ||||
IN AMTRELAY precedence D-bit type relay | IN AMTRELAY precedence D-bit type relay | |||
]]></artwork></figure> | ]]></sourcecode> | |||
</section> | ||||
</section> | <section anchor="examples" numbered="true" toc="default"> | |||
<section anchor="examples" title="Examples"> | <name>Examples</name> | |||
<t>In a DNS authoritative nameserver that understands the AMTRELAY typ | ||||
<t>In a DNS authoritative nameserver that understands the AMTRELAY type, | e, | |||
the zone might contain a set of entries like this:</t> | the zone might contain a set of entries like this:</t> | |||
<sourcecode name="" type=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
$ORIGIN 100.51.198.in-addr.arpa. | $ORIGIN 100.51.198.in-addr.arpa. | |||
12 IN AMTRELAY 10 0 1 203.0.113.15 | 12 IN AMTRELAY 10 0 1 203.0.113.15 | |||
12 IN AMTRELAY 10 0 2 2001:db8::15 | 12 IN AMTRELAY 10 0 2 2001:db8::15 | |||
12 IN AMTRELAY 128 1 3 amtrelays.example.com. | 12 IN AMTRELAY 128 1 3 amtrelays.example.com. | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t>This configuration advertises an IPv4 discovery address, an IPv6 | ||||
<t>This configuration advertises an IPv4 discovery address, an IPv6 | discovery address, and a domain name for AMT relays that can receive | |||
discovery address, and a domain name for AMT relays which can receive | ||||
traffic from the source 198.51.100.12. The IPv4 and IPv6 addresses | traffic from the source 198.51.100.12. The IPv4 and IPv6 addresses | |||
are configured with a D-bit of 0 (meaning discovery is mandatory, as | are configured with a D-bit of 0 (meaning discovery is mandatory, as | |||
described in <xref target="rrdef-dbit"/>), and a precedence 10 (meaning they’re | described in <xref target="rrdef-dbit" format="default"/>) and a precedence 10 ( meaning they're | |||
preferred ahead of the last entry, which has precedence 128).</t> | preferred ahead of the last entry, which has precedence 128).</t> | |||
<t>For zone files in name servers that don't support the AMTRELAY RRTy | ||||
<t>For zone files in name servers that don’t support the AMTRELAY RRType | pe | |||
natively, it’s possible to use the format for unknown RR types, as | natively, it's possible to use the format for unknown RR types, as | |||
described in <xref target="RFC3597"/>. This approach would replace the AMTRELAY | described in <xref target="RFC3597" format="default"/>. This approach would rep | |||
lace the AMTRELAY | ||||
entries in the example above with the entries below:</t> | entries in the example above with the entries below:</t> | |||
<sourcecode name="" type=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
10 IN TYPE260 \# ( | 10 IN TYPE260 \# ( | |||
6 ; length | 6 ; length | |||
0a ; precedence=10 | 0a ; precedence=10 | |||
01 ; D=0, relay type=1, an IPv4 address | 01 ; D=0, relay type=1, an IPv4 address | |||
cb00710f ) ; 203.0.113.15 | cb00710f ) ; 203.0.113.15 | |||
10 IN TYPE260 \# ( | 10 IN TYPE260 \# ( | |||
18 ; length | 18 ; length | |||
0a ; precedence=10 | 0a ; precedence=10 | |||
02 ; D=0, relay type=2, an IPv6 address | 02 ; D=0, relay type=2, an IPv6 address | |||
20010db800000000000000000000000f ) ; 2001:db8::15 | 20010db800000000000000000000000f ) ; 2001:db8::15 | |||
10 IN TYPE260 \# ( | 10 IN TYPE260 \# ( | |||
24 ; length | 24 ; length | |||
80 ; precedence=128 | 80 ; precedence=128 | |||
83 ; D=1, relay type=3, a wire-encoded domain name | 83 ; D=1, relay type=3, a wire-encoded domain name | |||
09616d7472656c617973076578616d706c6503636f6d ) ; domain name | 09616d7472656c617973076578616d706c6503636f6d ) ; domain name | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t>See <xref target="extranslate" format="default"/> for more details. | ||||
<t>See <xref target="extranslate"/> for more details.</t> | </t> | |||
</section> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | <section anchor="iana" numbered="true" toc="default"> | |||
<section anchor="iana" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
<t>This document updates the DNS "Resource Record (RR) TYPEs" registry | ||||
<t>This document updates the IANA Registry for DNS Resource Record Types | ||||
by assigning type 260 to the AMTRELAY record.</t> | by assigning type 260 to the AMTRELAY record.</t> | |||
<t>This document creates a new registry named "AMTRELAY Resource Record | ||||
<t>This document creates a new registry named “AMTRELAY Resource Record | Parameters" with a subregistry for the "Relay Type Field". The initial | |||
Parameters”, with a sub-registry for the “Relay Type Field”. The initial | values in the subregistry are:</t> | |||
values in the sub-registry are:</t> | <table align="left"> | |||
<name>Initial Contents of the "Relay Type Field" Registry</na | ||||
<figure><artwork><![CDATA[ | me> | |||
+-------+---------------------------------------+ | <thead> | |||
| Value | Description | | <tr> | |||
+-------+---------------------------------------+ | <th align="left">Value</th> | |||
| 0 | No relay is present. | | <th align="left">Description</th> | |||
| 1 | A 4-byte IPv4 address is present | | </tr> | |||
| 2 | A 16-byte IPv6 address is present | | </thead> | |||
| 3 | A wire-encoded domain name is present | | <tbody> | |||
| 4-255 | Unassigned | | <tr> | |||
+-------+---------------------------------------+ | <td align="left">0</td> | |||
]]></artwork></figure> | <td align="left">No relay is present</td> | |||
</tr> | ||||
<t>Values 0, 1, 2, and 3 are further explained in <xref target="rtype"/> and <xr | <tr> | |||
ef target="rdformat"/>. | <td align="left">1</td> | |||
<td align="left">A 4-byte IPv4 address is present</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">2</td> | ||||
<td align="left">A 16-byte IPv6 address is present</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">3</td> | ||||
<td align="left">A wire-encoded domain name is present</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">4-255</td> | ||||
<td align="left">Unassigned</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>Values 0, 1, 2, and 3 are further explained in Sections <xref target="r | ||||
type" format="counter"/> and <xref target="rdformat" format="counter"/>. | ||||
Relay type numbers 4 through 255 can be assigned with a policy of | Relay type numbers 4 through 255 can be assigned with a policy of | |||
Specification Required (as described in <xref target="RFC8126"/>).</t> | Specification Required (as described in <xref target="RFC8126" format="default"/ | |||
>).</t> | ||||
</section> | </section> | |||
<section anchor="security-considerations" title="Security Considerations"> | <section anchor="security-considerations" numbered="true" toc="default"> | |||
<name>Security Considerations</name> | ||||
<section anchor="use-of-amt" title="Use of AMT"> | <section anchor="use-of-amt" numbered="true" toc="default"> | |||
<name>Use of AMT</name> | ||||
<t>This document defines a mechanism that enables a more widespread and | <t>This document defines a mechanism that enables a more widespread and | |||
automated use of AMT, even without access to a multicast backbone. | automated use of AMT, even without access to a multicast backbone. | |||
Operators of networks and applications that include a DRIAD-capable | Operators of networks and applications that include a DRIAD-capable | |||
AMT gateway are advised to carefully consider the security considerations | AMT gateway are advised to carefully consider the security considerations | |||
in Section 6 of <xref target="RFC7450"/>.</t> | in <xref target="RFC7450" sectionFormat="of" section="6"/>.</t> | |||
<t>AMT gateway operators also are encouraged to take appropriate steps t | ||||
<t>AMT gateway operators also are encouraged to take appropriate steps to | o | |||
ensure the integrity of the data received via AMT, for example by the | ensure the integrity of the data received via AMT, for example, by the | |||
opportunistic use of IPSec <xref target="RFC4301"/> to secure traffic received f | opportunistic use of IPsec <xref target="RFC4301" format="default"/> to secure t | |||
rom AMT | raffic received from AMT | |||
relays, when IPSECKEY records <xref target="RFC4025"/> are available or when a t | relays when IPSECKEY records <xref target="RFC4025" format="default"/> are avail | |||
rust | able or when a trust | |||
relationship with the AMT relays can be otherwise established and secured.</t> | relationship with the AMT relays can be otherwise established and secured.</t> | |||
<t>Note that AMT does not itself provide any integrity protection for | ||||
<t>Note that AMT does not itself provide any integrity protection on | Multicast Data packets (<xref target="RFC7450" sectionFormat="of" section="5.1.6 | |||
Multicast Data packets (Section 5.1.6 of <xref target="RFC7450"/>), so absent | "/>), so absent | |||
protections like those mentioned above, even an off-path attacker who | protections like those mentioned above, even an off-path attacker who | |||
discovers the gateway IP, the relay IP, and the relay source port for | discovers the gateway IP, the relay IP, and the relay source port for | |||
an active AMT connection can inject multicast data packets for a | an active AMT connection can inject multicast data packets for a | |||
joined (S,G) into the data stream if he can get data packets delivered | joined (S,G) into the data stream if he can get data packets delivered | |||
to the gateway IP that spoof the relay as the source.</t> | to the gateway IP that spoof the relay as the source.</t> | |||
</section> | ||||
</section> | <section anchor="record-spoofing" numbered="true" toc="default"> | |||
<section anchor="record-spoofing" title="Record-spoofing"> | <name>Record-Spoofing</name> | |||
<t>The AMTRELAY resource record contains information that <bcp14>SHOULD< | ||||
<t>The AMTRELAY resource record contains information that SHOULD be | /bcp14> be | |||
communicated to the DNS client without being modified. The | communicated to the DNS client without being modified. The | |||
method used to ensure the result was unmodified is up to the client.</t> | method used to ensure the result was unmodified is up to the client.</t> | |||
<t>There must be a trust relationship between the end consumer of this | ||||
<t>There must be a trust relationship between the end consumer of this | ||||
resource record and the DNS server. This relationship may be end-to-end | resource record and the DNS server. This relationship may be end-to-end | |||
DNSSEC validation, or a secure connection to a trusted DNS server that | DNSSEC validation or a secure connection to a trusted DNS server that | |||
provides end-to-end safety, to prevent record-spoofing of the response | provides end-to-end safety to prevent record-spoofing of the response | |||
from the trusted server. The connection to the trusted server can use | from the trusted server. The connection to the trusted server can use | |||
any secure channel, such as with a TSIG <xref target="RFC2845"/> or SIG(0) <xref | any secure channel, such as with a TSIG <xref target="RFC2845" format="default"/ | |||
target="RFC2931"/> | > or SIG(0) <xref target="RFC2931" format="default"/> | |||
channel, a secure local channel on the host, DNS over TLS <xref target="RFC7858" | channel, a secure local channel on the host, DNS over TLS <xref target="RFC7858" | |||
/>, | format="default"/>, | |||
DNS over HTTPS <xref target="RFC8484"/>, or some other mechanism that provides | DNS over HTTPS <xref target="RFC8484" format="default"/>, or some other mechanis | |||
m that provides | ||||
authentication of the RR.</t> | authentication of the RR.</t> | |||
<t>If an AMT gateway accepts a maliciously crafted AMTRELAY record, | ||||
<t>If an AMT gateway accepts a maliciously crafted AMTRELAY record, | the result could be a Denial of Service or receivers processing | |||
the result could be a Denial of Service, or receivers processing | multicast traffic from a source under the attacker's control.</t> | |||
multicast traffic from a source under the attacker’s control.</t> | </section> | |||
<section anchor="congestion" numbered="true" toc="default"> | ||||
</section> | <name>Congestion</name> | |||
<section anchor="congestion" title="Congestion"> | <t>Multicast traffic, particularly interdomain multicast traffic, carrie | |||
s | ||||
<t>Multicast traffic, particularly interdomain multicast traffic, carries | some congestion risks, as described in <xref target="RFC8085" sectionFormat="of" | |||
some congestion risks, as described in Section 4 of <xref target="RFC8085"/>.</t | section="4"/>.</t> | |||
> | <t>Application implementors and network operators that use AMT gateways | |||
are advised to take precautions, including monitoring of application | ||||
<t>Application implementors and network operators that use AMT gateways | ||||
are advised to take precautions including monitoring of application | ||||
traffic behavior, traffic authentication at ingest, rate-limiting of | traffic behavior, traffic authentication at ingest, rate-limiting of | |||
multicast traffic, and the use of circuit-breaker techniques such as | multicast traffic, and the use of circuit-breaker techniques such as | |||
those described in Section 3.1.10 of <xref target="RFC8085"/> and similar | those described in <xref target="RFC8085" sectionFormat="of" section="3.1.10"/> | |||
protections at the network level, in order to ensure network health | and similar | |||
protections at the network level in order to ensure network health | ||||
in the event of misconfiguration, poorly written applications that | in the event of misconfiguration, poorly written applications that | |||
don’t follow UDP congestion control principles, or deliberate attack.</t> | don't follow UDP congestion control principles, or a deliberate attack.</t> | |||
<t><xref target="RFC7450" sectionFormat="of" section="4.1.4.2"/> and <xr | ||||
<t>Section 4.1.4.2 of <xref target="RFC7450"/> and Section 6.1 of <xref target=" | ef target="RFC7450" sectionFormat="of" section="6.1"/> | |||
RFC7450"/> | ||||
provide some further considerations and advice about mitigating | provide some further considerations and advice about mitigating | |||
congestion risk.</t> | congestion risk.</t> | |||
</section> | ||||
</section> | </section> | |||
</section> | ||||
<section anchor="acknowledgements" title="Acknowledgements"> | ||||
<t>This specification was inspired by the previous work of Doug Nortz, | ||||
Robert Sayko, David Segelstein, and Percy Tarapore, presented in | ||||
the MBONED working group at IETF 93.</t> | ||||
<t>Thanks to Jeff Goldsmith, Toerless Eckert, Mikael Abrahamsson, Lenny | ||||
Giuliano, Mark Andrews, Sandy Zheng, Kyle Rose, Ben Kaduk, Bill | ||||
Atwood, Tim Chown, Christian Worm Mortensen, Warren Kumari, Dan | ||||
Romanescu, Bernard Aboba, Carlos Pignataro, Niclas Comstedt, | ||||
Mirja Kühlewind, Henning Rogge, Éric Vyncke, Barry Lieba, | ||||
Roman Danyliw, Alissa Cooper, Suresh Krishnan, Adam Roach, | ||||
and Daniel Franke for their very helpful reviews and comments.</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references> | ||||
<references title='Normative References'> | <name>References</name> | |||
<references> | ||||
<reference anchor="RFC1034" target='https://www.rfc-editor.org/info/rfc1034'> | <name>Normative References</name> | |||
<front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<title>Domain names - concepts and facilities</title> | FC.1034.xml"/> | |||
<author initials='P.V.' surname='Mockapetris' fullname='P.V. Mockapetris'><organ | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
ization /></author> | FC.1035.xml"/> | |||
<date year='1987' month='November' /> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<abstract><t>This RFC is the revised basic definition of The Domain Name System. | FC.2119.xml"/> | |||
It obsoletes RFC-882. This memo describes the domain style names and their us | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
ed for host address look up and electronic mail forwarding. It discusses the cl | FC.2181.xml"/> | |||
ients and servers in the domain name system and the protocol used between them.< | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
/t></abstract> | FC.2782.xml"/> | |||
</front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<seriesInfo name='STD' value='13'/> | FC.3376.xml"/> | |||
<seriesInfo name='RFC' value='1034'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<seriesInfo name='DOI' value='10.17487/RFC1034'/> | FC.3596.xml"/> | |||
</reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
FC.3597.xml"/> | ||||
<reference anchor="RFC1035" target='https://www.rfc-editor.org/info/rfc1035'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<front> | FC.3810.xml"/> | |||
<title>Domain names - implementation and specification</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<author initials='P.V.' surname='Mockapetris' fullname='P.V. Mockapetris'><organ | FC.4604.xml"/> | |||
ization /></author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<date year='1987' month='November' /> | FC.4607.xml"/> | |||
<abstract><t>This RFC is the revised specification of the protocol and format us | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
ed in the implementation of the Domain Name System. It obsoletes RFC-883. This | FC.6724.xml"/> | |||
memo documents the details of the domain name client - server communication.</t> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
</abstract> | FC.6763.xml"/> | |||
</front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<seriesInfo name='STD' value='13'/> | FC.7450.xml"/> | |||
<seriesInfo name='RFC' value='1035'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<seriesInfo name='DOI' value='10.17487/RFC1035'/> | FC.8085.xml"/> | |||
</reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
FC.8305.xml"/> | ||||
<reference anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<front> | FC.8174.xml"/> | |||
<title>Key words for use in RFCs to Indicate Requirement Levels</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></ | FC.8499.xml"/> | |||
author> | </references> | |||
<date year='1997' month='March' /> | <references> | |||
<abstract><t>In many standards track documents several words are used to signify | <name>Informative References</name> | |||
the requirements in the specification. These words are often capitalized. This | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
document defines these words as they should be interpreted in IETF documents. | FC.2317.xml"/> | |||
This document specifies an Internet Best Current Practices for the Internet Comm | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
unity, and requests discussion and suggestions for improvements.</t></abstract> | FC.2845.xml"/> | |||
</front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<seriesInfo name='BCP' value='14'/> | FC.2931.xml"/> | |||
<seriesInfo name='RFC' value='2119'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<seriesInfo name='DOI' value='10.17487/RFC2119'/> | FC.3550.xml"/> | |||
</reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
FC.4025.xml"/> | ||||
<reference anchor="RFC2181" target='https://www.rfc-editor.org/info/rfc2181'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<front> | FC.4301.xml"/> | |||
<title>Clarifications to the DNS Specification</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<author initials='R.' surname='Elz' fullname='R. Elz'><organization /></author> | FC.4787.xml"/> | |||
<author initials='R.' surname='Bush' fullname='R. Bush'><organization /></author | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
> | FC.5110.xml"/> | |||
<date year='1997' month='July' /> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<abstract><t>This document considers some areas that have been identified as pro | FC.6726.xml"/> | |||
blems with the specification of the Domain Name System, and proposes remedies fo | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
r the defects identified. [STANDARDS-TRACK]</t></abstract> | FC.7359.xml"/> | |||
</front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<seriesInfo name='RFC' value='2181'/> | FC.7761.xml"/> | |||
<seriesInfo name='DOI' value='10.17487/RFC2181'/> | <xi:include | |||
</reference> | href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7858.x | |||
ml"/> | ||||
<reference anchor="RFC2782" target='https://www.rfc-editor.org/info/rfc2782'> | <xi:include | |||
<front> | href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/> | |||
<title>A DNS RR for specifying the location of services (DNS SRV)</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<author initials='A.' surname='Gulbrandsen' fullname='A. Gulbrandsen'><organizat | FC.8313.xml"/> | |||
ion /></author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<author initials='P.' surname='Vixie' fullname='P. Vixie'><organization /></auth | FC.8484.xml"/> | |||
or> | </references> | |||
<author initials='L.' surname='Esibov' fullname='L. Esibov'><organization /></au | ||||
thor> | ||||
<date year='2000' month='February' /> | ||||
<abstract><t>This document describes a DNS RR which specifies the location of th | ||||
e server(s) for a specific protocol and domain. [STANDARDS-TRACK]</t></abstract | ||||
> | ||||
</front> | ||||
<seriesInfo name='RFC' value='2782'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC2782'/> | ||||
</reference> | ||||
<reference anchor="RFC3376" target='https://www.rfc-editor.org/info/rfc3376'> | ||||
<front> | ||||
<title>Internet Group Management Protocol, Version 3</title> | ||||
<author initials='B.' surname='Cain' fullname='B. Cain'><organization /></author | ||||
> | ||||
<author initials='S.' surname='Deering' fullname='S. Deering'><organization /></ | ||||
author> | ||||
<author initials='I.' surname='Kouvelas' fullname='I. Kouvelas'><organization /> | ||||
</author> | ||||
<author initials='B.' surname='Fenner' fullname='B. Fenner'><organization /></au | ||||
thor> | ||||
<author initials='A.' surname='Thyagarajan' fullname='A. Thyagarajan'><organizat | ||||
ion /></author> | ||||
<date year='2002' month='October' /> | ||||
</front> | ||||
<seriesInfo name='RFC' value='3376'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC3376'/> | ||||
</reference> | ||||
<reference anchor="RFC3596" target='https://www.rfc-editor.org/info/rfc3596'> | ||||
<front> | ||||
<title>DNS Extensions to Support IP Version 6</title> | ||||
<author initials='S.' surname='Thomson' fullname='S. Thomson'><organization /></ | ||||
author> | ||||
<author initials='C.' surname='Huitema' fullname='C. Huitema'><organization /></ | ||||
author> | ||||
<author initials='V.' surname='Ksinant' fullname='V. Ksinant'><organization /></ | ||||
author> | ||||
<author initials='M.' surname='Souissi' fullname='M. Souissi'><organization /></ | ||||
author> | ||||
<date year='2003' month='October' /> | ||||
<abstract><t>This document defines the changes that need to be made to the Domai | ||||
n Name System (DNS) to support hosts running IP version 6 (IPv6). The changes i | ||||
nclude a resource record type to store an IPv6 address, a domain to support look | ||||
ups based on an IPv6 address, and updated definitions of existing query types th | ||||
at return Internet addresses as part of additional section processing. The exte | ||||
nsions are designed to be compatible with existing applications and, in particul | ||||
ar, DNS implementations themselves. [STANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='STD' value='88'/> | ||||
<seriesInfo name='RFC' value='3596'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC3596'/> | ||||
</reference> | ||||
<reference anchor="RFC3597" target='https://www.rfc-editor.org/info/rfc3597'> | ||||
<front> | ||||
<title>Handling of Unknown DNS Resource Record (RR) Types</title> | ||||
<author initials='A.' surname='Gustafsson' fullname='A. Gustafsson'><organizatio | ||||
n /></author> | ||||
<date year='2003' month='September' /> | ||||
<abstract><t>Extending the Domain Name System (DNS) with new Resource Record (RR | ||||
) types currently requires changes to name server software. This document speci | ||||
fies the changes necessary to allow future DNS implementations to handle new RR | ||||
types transparently. [STANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='3597'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC3597'/> | ||||
</reference> | ||||
<reference anchor="RFC3810" target='https://www.rfc-editor.org/info/rfc3810'> | ||||
<front> | ||||
<title>Multicast Listener Discovery Version 2 (MLDv2) for IPv6</title> | ||||
<author initials='R.' surname='Vida' fullname='R. Vida' role='editor'><organizat | ||||
ion /></author> | ||||
<author initials='L.' surname='Costa' fullname='L. Costa' role='editor'><organiz | ||||
ation /></author> | ||||
<date year='2004' month='June' /> | ||||
<abstract><t>This document updates RFC 2710, and it specifies Version 2 of the u | ||||
lticast Listener Discovery Protocol (MLDv2). MLD is used by an IPv6 router to d | ||||
iscover the presence of multicast listeners on directly attached links, and to d | ||||
iscover which multicast addresses are of interest to those neighboring nodes. M | ||||
LDv2 is designed to be interoperable with MLDv1. MLDv2 adds the ability for a n | ||||
ode to report interest in listening to packets with a particular multicast addre | ||||
ss only from specific source addresses or from all sources except for specific s | ||||
ource addresses. [STANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='3810'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC3810'/> | ||||
</reference> | ||||
<reference anchor="RFC4604" target='https://www.rfc-editor.org/info/rfc4604'> | ||||
<front> | ||||
<title>Using Internet Group Management Protocol Version 3 (IGMPv3) and Multicast | ||||
Listener Discovery Protocol Version 2 (MLDv2) for Source-Specific Multicast</ti | ||||
tle> | ||||
<author initials='H.' surname='Holbrook' fullname='H. Holbrook'><organization /> | ||||
</author> | ||||
<author initials='B.' surname='Cain' fullname='B. Cain'><organization /></author | ||||
> | ||||
<author initials='B.' surname='Haberman' fullname='B. Haberman'><organization /> | ||||
</author> | ||||
<date year='2006' month='August' /> | ||||
<abstract><t>The Internet Group Management Protocol Version 3 (IGMPv3) and the M | ||||
ulticast Listener Discovery Protocol Version 2 (MLDv2) are protocols that allow | ||||
a host to inform its neighboring routers of its desire to receive IPv4 and IPv6 | ||||
multicast transmissions, respectively. Source-specific multicast (SSM) is a form | ||||
of multicast in which a receiver is required to specify both the network-layer | ||||
address of the source and the multicast destination address in order to receive | ||||
the multicast transmission. This document defines the notion of an "SSM-aw | ||||
are" router and host, and clarifies and (in some cases) modifies the behavi | ||||
or of IGMPv3 and MLDv2 on SSM-aware routers and hosts to accommodate source-spec | ||||
ific multicast. This document updates the IGMPv3 and MLDv2 specifications. [ST | ||||
ANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='4604'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC4604'/> | ||||
</reference> | ||||
<reference anchor="RFC4607" target='https://www.rfc-editor.org/info/rfc4607'> | ||||
<front> | ||||
<title>Source-Specific Multicast for IP</title> | ||||
<author initials='H.' surname='Holbrook' fullname='H. Holbrook'><organization /> | ||||
</author> | ||||
<author initials='B.' surname='Cain' fullname='B. Cain'><organization /></author | ||||
> | ||||
<date year='2006' month='August' /> | ||||
<abstract><t>IP version 4 (IPv4) addresses in the 232/8 (232.0.0.0 to 232.255.25 | ||||
5.255) range are designated as source-specific multicast (SSM) destination addre | ||||
sses and are reserved for use by source-specific applications and protocols. Fo | ||||
r IP version 6 (IPv6), the address prefix FF3x::/32 is reserved for source-speci | ||||
fic multicast use. This document defines an extension to the Internet network s | ||||
ervice that applies to datagrams sent to SSM addresses and defines the host and | ||||
router requirements to support this extension. [STANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='4607'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC4607'/> | ||||
</reference> | ||||
<reference anchor="RFC6724" target='https://www.rfc-editor.org/info/rfc6724'> | ||||
<front> | ||||
<title>Default Address Selection for Internet Protocol Version 6 (IPv6)</title> | ||||
<author initials='D.' surname='Thaler' fullname='D. Thaler' role='editor'><organ | ||||
ization /></author> | ||||
<author initials='R.' surname='Draves' fullname='R. Draves'><organization /></au | ||||
thor> | ||||
<author initials='A.' surname='Matsumoto' fullname='A. Matsumoto'><organization | ||||
/></author> | ||||
<author initials='T.' surname='Chown' fullname='T. Chown'><organization /></auth | ||||
or> | ||||
<date year='2012' month='September' /> | ||||
<abstract><t>This document describes two algorithms, one for source address sele | ||||
ction and one for destination address selection. The algorithms specify default | ||||
behavior for all Internet Protocol version 6 (IPv6) implementations. They do n | ||||
ot override choices made by applications or upper-layer protocols, nor do they p | ||||
reclude the development of more advanced mechanisms for address selection. The | ||||
two algorithms share a common context, including an optional mechanism for allow | ||||
ing administrators to provide policy that can override the default behavior. In | ||||
dual-stack implementations, the destination address selection algorithm can con | ||||
sider both IPv4 and IPv6 addresses -- depending on the available source addresse | ||||
s, the algorithm might prefer IPv6 addresses over IPv4 addresses, or vice versa. | ||||
</t><t>Default address selection as defined in this specification applies to all | ||||
IPv6 nodes, including both hosts and routers. This document obsoletes RFC 3484 | ||||
. [STANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='6724'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC6724'/> | ||||
</reference> | ||||
<reference anchor="RFC6763" target='https://www.rfc-editor.org/info/rfc6763'> | ||||
<front> | ||||
<title>DNS-Based Service Discovery</title> | ||||
<author initials='S.' surname='Cheshire' fullname='S. Cheshire'><organization /> | ||||
</author> | ||||
<author initials='M.' surname='Krochmal' fullname='M. Krochmal'><organization /> | ||||
</author> | ||||
<date year='2013' month='February' /> | ||||
<abstract><t>This document specifies how DNS resource records are named and stru | ||||
ctured to facilitate service discovery. Given a type of service that a client i | ||||
s looking for, and a domain in which the client is looking for that service, thi | ||||
s mechanism allows clients to discover a list of named instances of that desired | ||||
service, using standard DNS queries. This mechanism is referred to as DNS-based | ||||
Service Discovery, or DNS-SD.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='6763'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC6763'/> | ||||
</reference> | ||||
<reference anchor="RFC7450" target='https://www.rfc-editor.org/info/rfc7450'> | ||||
<front> | ||||
<title>Automatic Multicast Tunneling</title> | ||||
<author initials='G.' surname='Bumgardner' fullname='G. Bumgardner'><organizatio | ||||
n /></author> | ||||
<date year='2015' month='February' /> | ||||
<abstract><t>This document describes Automatic Multicast Tunneling (AMT), a prot | ||||
ocol for delivering multicast traffic from sources in a multicast-enabled networ | ||||
k to receivers that lack multicast connectivity to the source network. The prot | ||||
ocol uses UDP encapsulation and unicast replication to provide this functionalit | ||||
y.</t><t>The AMT protocol is specifically designed to support rapid deployment b | ||||
y requiring minimal changes to existing network infrastructure.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='7450'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC7450'/> | ||||
</reference> | ||||
<reference anchor="RFC8085" target='https://www.rfc-editor.org/info/rfc8085'> | ||||
<front> | ||||
<title>UDP Usage Guidelines</title> | ||||
<author initials='L.' surname='Eggert' fullname='L. Eggert'><organization /></au | ||||
thor> | ||||
<author initials='G.' surname='Fairhurst' fullname='G. Fairhurst'><organization | ||||
/></author> | ||||
<author initials='G.' surname='Shepherd' fullname='G. Shepherd'><organization /> | ||||
</author> | ||||
<date year='2017' month='March' /> | ||||
<abstract><t>The User Datagram Protocol (UDP) provides a minimal message-passing | ||||
transport that has no inherent congestion control mechanisms. This document pr | ||||
ovides guidelines on the use of UDP for the designers of applications, tunnels, | ||||
and other protocols that use UDP. Congestion control guidelines are a primary f | ||||
ocus, but the document also provides guidance on other topics, including message | ||||
sizes, reliability, checksums, middlebox traversal, the use of Explicit Congest | ||||
ion Notification (ECN), Differentiated Services Code Points (DSCPs), and ports.< | ||||
/t><t>Because congestion control is critical to the stable operation of the Inte | ||||
rnet, applications and other protocols that choose to use UDP as an Internet tra | ||||
nsport must employ mechanisms to prevent congestion collapse and to establish so | ||||
me degree of fairness with concurrent traffic. They may also need to implement | ||||
additional mechanisms, depending on how they use UDP.</t><t>Some guidance is als | ||||
o applicable to the design of other protocols (e.g., protocols layered directly | ||||
on IP or via IP-based tunnels), especially when these protocols do not themselve | ||||
s provide congestion control.</t><t>This document obsoletes RFC 5405 and adds gu | ||||
idelines for multicast UDP usage.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='145'/> | ||||
<seriesInfo name='RFC' value='8085'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8085'/> | ||||
</reference> | ||||
<reference anchor="RFC8305" target='https://www.rfc-editor.org/info/rfc8305'> | ||||
<front> | ||||
<title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title> | ||||
<author initials='D.' surname='Schinazi' fullname='D. Schinazi'><organization /> | ||||
</author> | ||||
<author initials='T.' surname='Pauly' fullname='T. Pauly'><organization /></auth | ||||
or> | ||||
<date year='2017' month='December' /> | ||||
<abstract><t>Many communication protocols operating over the modern Internet use | ||||
hostnames. These often resolve to multiple IP addresses, each of which may hav | ||||
e different performance and connectivity characteristics. Since specific addres | ||||
ses or address families (IPv4 or IPv6) may be blocked, broken, or sub-optimal on | ||||
a network, clients that attempt multiple connections in parallel have a chance | ||||
of establishing a connection more quickly. This document specifies requirements | ||||
for algorithms that reduce this user-visible delay and provides an example algo | ||||
rithm, referred to as "Happy Eyeballs". This document obsoletes the o | ||||
riginal algorithm description in RFC 6555.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='8305'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8305'/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> | ||||
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></auth | ||||
or> | ||||
<date year='2017' month='May' /> | ||||
<abstract><t>RFC 2119 specifies common key words that may be used in protocol s | ||||
pecifications. This document aims to reduce the ambiguity by clarifying that on | ||||
ly UPPERCASE usage of the key words have the defined special meanings.</t></abs | ||||
tract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='14'/> | ||||
<seriesInfo name='RFC' value='8174'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8174'/> | ||||
</reference> | ||||
<reference anchor="RFC8499" target='https://www.rfc-editor.org/info/rfc8499'> | ||||
<front> | ||||
<title>DNS Terminology</title> | ||||
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></ | ||||
author> | ||||
<author initials='A.' surname='Sullivan' fullname='A. Sullivan'><organization /> | ||||
</author> | ||||
<author initials='K.' surname='Fujiwara' fullname='K. Fujiwara'><organization /> | ||||
</author> | ||||
<date year='2019' month='January' /> | ||||
<abstract><t>The Domain Name System (DNS) is defined in literally dozens of diff | ||||
erent RFCs. The terminology used by implementers and developers of DNS protocol | ||||
s, and by operators of DNS systems, has sometimes changed in the decades since t | ||||
he DNS was first defined. This document gives current definitions for many of t | ||||
he terms used in the DNS in a single document.</t><t>This document obsoletes RFC | ||||
7719 and updates RFC 2308.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='219'/> | ||||
<seriesInfo name='RFC' value='8499'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8499'/> | ||||
</reference> | ||||
</references> | ||||
<references title='Informative References'> | ||||
<reference anchor="RFC2317" target='https://www.rfc-editor.org/info/rfc2317'> | ||||
<front> | ||||
<title>Classless IN-ADDR.ARPA delegation</title> | ||||
<author initials='H.' surname='Eidnes' fullname='H. Eidnes'><organization /></au | ||||
thor> | ||||
<author initials='G.' surname='de Groot' fullname='G. de Groot'><organization /> | ||||
</author> | ||||
<author initials='P.' surname='Vixie' fullname='P. Vixie'><organization /></auth | ||||
or> | ||||
<date year='1998' month='March' /> | ||||
<abstract><t>This document describes a way to do IN-ADDR.ARPA delegation on non- | ||||
octet boundaries for address spaces covering fewer than 256 addresses. This doc | ||||
ument specifies an Internet Best Current Practices for the Internet Community, a | ||||
nd requests discussion and suggestions for improvements.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='20'/> | ||||
<seriesInfo name='RFC' value='2317'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC2317'/> | ||||
</reference> | ||||
<reference anchor="RFC2845" target='https://www.rfc-editor.org/info/rfc2845'> | ||||
<front> | ||||
<title>Secret Key Transaction Authentication for DNS (TSIG)</title> | ||||
<author initials='P.' surname='Vixie' fullname='P. Vixie'><organization /></auth | ||||
or> | ||||
<author initials='O.' surname='Gudmundsson' fullname='O. Gudmundsson'><organizat | ||||
ion /></author> | ||||
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organiz | ||||
ation /></author> | ||||
<author initials='B.' surname='Wellington' fullname='B. Wellington'><organizatio | ||||
n /></author> | ||||
<date year='2000' month='May' /> | ||||
<abstract><t>This protocol allows for transaction level authentication using sha | ||||
red secrets and one way hashing. It can be used to authenticate dynamic updates | ||||
as coming from an approved client, or to authenticate responses as coming from | ||||
an approved recursive name server. [STANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='2845'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC2845'/> | ||||
</reference> | ||||
<reference anchor="RFC2931" target='https://www.rfc-editor.org/info/rfc2931'> | ||||
<front> | ||||
<title>DNS Request and Transaction Signatures ( SIG(0)s )</title> | ||||
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organiz | ||||
ation /></author> | ||||
<date year='2000' month='September' /> | ||||
<abstract><t>This document describes the minor but non-interoperable changes in | ||||
Request and Transaction signature resource records ( SIG(0)s ) that implementati | ||||
on experience has deemed necessary. [STANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='2931'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC2931'/> | ||||
</reference> | ||||
<reference anchor="RFC3550" target='https://www.rfc-editor.org/info/rfc3550'> | ||||
<front> | ||||
<title>RTP: A Transport Protocol for Real-Time Applications</title> | ||||
<author initials='H.' surname='Schulzrinne' fullname='H. Schulzrinne'><organizat | ||||
ion /></author> | ||||
<author initials='S.' surname='Casner' fullname='S. Casner'><organization /></au | ||||
thor> | ||||
<author initials='R.' surname='Frederick' fullname='R. Frederick'><organization | ||||
/></author> | ||||
<author initials='V.' surname='Jacobson' fullname='V. Jacobson'><organization /> | ||||
</author> | ||||
<date year='2003' month='July' /> | ||||
<abstract><t>This memorandum describes RTP, the real-time transport protocol. R | ||||
TP provides end-to-end network transport functions suitable for applications tra | ||||
nsmitting real-time data, such as audio, video or simulation data, over multicas | ||||
t or unicast network services. RTP does not address resource reservation and do | ||||
es not guarantee quality-of- service for real-time services. The data transport | ||||
is augmented by a control protocol (RTCP) to allow monitoring of the data deliv | ||||
ery in a manner scalable to large multicast networks, and to provide minimal con | ||||
trol and identification functionality. RTP and RTCP are designed to be independ | ||||
ent of the underlying transport and network layers. The protocol supports the u | ||||
se of RTP-level translators and mixers. Most of the text in this memorandum is i | ||||
dentical to RFC 1889 which it obsoletes. There are no changes in the packet for | ||||
mats on the wire, only changes to the rules and algorithms governing how the pro | ||||
tocol is used. The biggest change is an enhancement to the scalable timer algori | ||||
thm for calculating when to send RTCP packets in order to minimize transmission | ||||
in excess of the intended rate when many participants join a session simultaneou | ||||
sly. [STANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='STD' value='64'/> | ||||
<seriesInfo name='RFC' value='3550'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC3550'/> | ||||
</reference> | ||||
<reference anchor="RFC4025" target='https://www.rfc-editor.org/info/rfc4025'> | ||||
<front> | ||||
<title>A Method for Storing IPsec Keying Material in DNS</title> | ||||
<author initials='M.' surname='Richardson' fullname='M. Richardson'><organizatio | ||||
n /></author> | ||||
<date year='2005' month='March' /> | ||||
<abstract><t>This document describes a new resource record for the Domain Name S | ||||
ystem (DNS). This record may be used to store public keys for use in IP securit | ||||
y (IPsec) systems. The record also includes provisions for indicating what syst | ||||
em should be contacted when an IPsec tunnel is established with the entity in qu | ||||
estion. </t><t> This record replaces the functionality of the sub-type #4 of the | ||||
KEY Resource Record, which has been obsoleted by RFC 3445. [STANDARDS-TRACK]</ | ||||
t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='4025'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC4025'/> | ||||
</reference> | ||||
<reference anchor="RFC4301" target='https://www.rfc-editor.org/info/rfc4301'> | ||||
<front> | ||||
<title>Security Architecture for the Internet Protocol</title> | ||||
<author initials='S.' surname='Kent' fullname='S. Kent'><organization /></author | ||||
> | ||||
<author initials='K.' surname='Seo' fullname='K. Seo'><organization /></author> | ||||
<date year='2005' month='December' /> | ||||
<abstract><t>This document describes an updated version of the "Security Ar | ||||
chitecture for IP", which is designed to provide security services for traf | ||||
fic at the IP layer. This document obsoletes RFC 2401 (November 1998). [STANDA | ||||
RDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='4301'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC4301'/> | ||||
</reference> | ||||
<reference anchor="RFC4787" target='https://www.rfc-editor.org/info/rfc4787'> | ||||
<front> | ||||
<title>Network Address Translation (NAT) Behavioral Requirements for Unicast UDP | ||||
</title> | ||||
<author initials='F.' surname='Audet' fullname='F. Audet' role='editor'><organiz | ||||
ation /></author> | ||||
<author initials='C.' surname='Jennings' fullname='C. Jennings'><organization /> | ||||
</author> | ||||
<date year='2007' month='January' /> | ||||
<abstract><t>This document defines basic terminology for describing different ty | ||||
pes of Network Address Translation (NAT) behavior when handling Unicast UDP and | ||||
also defines a set of requirements that would allow many applications, such as m | ||||
ultimedia communications or online gaming, to work consistently. Developing NAT | ||||
s that meet this set of requirements will greatly increase the likelihood that t | ||||
hese applications will function properly. This document specifies an Internet B | ||||
est Current Practices for the Internet Community, and requests discussion and su | ||||
ggestions for improvements.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='127'/> | ||||
<seriesInfo name='RFC' value='4787'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC4787'/> | ||||
</reference> | ||||
<reference anchor="RFC5110" target='https://www.rfc-editor.org/info/rfc5110'> | ||||
<front> | ||||
<title>Overview of the Internet Multicast Routing Architecture</title> | ||||
<author initials='P.' surname='Savola' fullname='P. Savola'><organization /></au | ||||
thor> | ||||
<date year='2008' month='January' /> | ||||
<abstract><t>This document describes multicast routing architectures that are cu | ||||
rrently deployed on the Internet. This document briefly describes those protoco | ||||
ls and references their specifications.</t><t>This memo also reclassifies severa | ||||
l older RFCs to Historic. These RFCs describe multicast routing protocols that | ||||
were never widely deployed or have fallen into disuse. This memo provides infor | ||||
mation for the Internet community.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='5110'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC5110'/> | ||||
</reference> | ||||
<reference anchor="RFC6726" target='https://www.rfc-editor.org/info/rfc6726'> | ||||
<front> | ||||
<title>FLUTE - File Delivery over Unidirectional Transport</title> | ||||
<author initials='T.' surname='Paila' fullname='T. Paila'><organization /></auth | ||||
or> | ||||
<author initials='R.' surname='Walsh' fullname='R. Walsh'><organization /></auth | ||||
or> | ||||
<author initials='M.' surname='Luby' fullname='M. Luby'><organization /></author | ||||
> | ||||
<author initials='V.' surname='Roca' fullname='V. Roca'><organization /></author | ||||
> | ||||
<author initials='R.' surname='Lehtonen' fullname='R. Lehtonen'><organization /> | ||||
</author> | ||||
<date year='2012' month='November' /> | ||||
<abstract><t>This document defines File Delivery over Unidirectional Transport ( | ||||
FLUTE), a protocol for the unidirectional delivery of files over the Internet, w | ||||
hich is particularly suited to multicast networks. The specification builds on | ||||
Asynchronous Layered Coding, the base protocol designed for massively scalable m | ||||
ulticast distribution. This document obsoletes RFC 3926. [STANDARDS-TRACK]</t>< | ||||
/abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='6726'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC6726'/> | ||||
</reference> | ||||
<reference anchor="RFC7359" target='https://www.rfc-editor.org/info/rfc7359'> | ||||
<front> | ||||
<title>Layer 3 Virtual Private Network (VPN) Tunnel Traffic Leakages in Dual-Sta | ||||
ck Hosts/Networks</title> | ||||
<author initials='F.' surname='Gont' fullname='F. Gont'><organization /></author | ||||
> | ||||
<date year='2014' month='August' /> | ||||
<abstract><t>The subtle way in which the IPv6 and IPv4 protocols coexist in typi | ||||
cal networks, together with the lack of proper IPv6 support in popular Virtual P | ||||
rivate Network (VPN) tunnel products, may inadvertently result in VPN tunnel tra | ||||
ffic leakages. That is, traffic meant to be transferred over an encrypted and i | ||||
ntegrity- protected VPN tunnel may leak out of such a tunnel and be sent in the | ||||
clear on the local network towards the final destination. This document discuss | ||||
es some scenarios in which such VPN tunnel traffic leakages may occur as a resul | ||||
t of employing IPv6-unaware VPN software. Additionally, this document offers po | ||||
ssible mitigations for this issue.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='7359'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC7359'/> | ||||
</reference> | ||||
<reference anchor="RFC7761" target='https://www.rfc-editor.org/info/rfc7761'> | ||||
<front> | ||||
<title>Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specifica | ||||
tion (Revised)</title> | ||||
<author initials='B.' surname='Fenner' fullname='B. Fenner'><organization /></au | ||||
thor> | ||||
<author initials='M.' surname='Handley' fullname='M. Handley'><organization /></ | ||||
author> | ||||
<author initials='H.' surname='Holbrook' fullname='H. Holbrook'><organization /> | ||||
</author> | ||||
<author initials='I.' surname='Kouvelas' fullname='I. Kouvelas'><organization /> | ||||
</author> | ||||
<author initials='R.' surname='Parekh' fullname='R. Parekh'><organization /></au | ||||
thor> | ||||
<author initials='Z.' surname='Zhang' fullname='Z. Zhang'><organization /></auth | ||||
or> | ||||
<author initials='L.' surname='Zheng' fullname='L. Zheng'><organization /></auth | ||||
or> | ||||
<date year='2016' month='March' /> | ||||
<abstract><t>This document specifies Protocol Independent Multicast - Sparse Mod | ||||
e (PIM-SM). PIM-SM is a multicast routing protocol that can use the underlying | ||||
unicast routing information base or a separate multicast-capable routing informa | ||||
tion base. It builds unidirectional shared trees rooted at a Rendezvous Point ( | ||||
RP) per group, and it optionally creates shortest-path trees per source.</t><t>T | ||||
his document obsoletes RFC 4601 by replacing it, addresses the errata filed agai | ||||
nst it, removes the optional (*,*,RP), PIM Multicast Border Router features and | ||||
authentication using IPsec that lack sufficient deployment experience (see Appen | ||||
dix A), and moves the PIM specification to Internet Standard.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='STD' value='83'/> | ||||
<seriesInfo name='RFC' value='7761'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC7761'/> | ||||
</reference> | ||||
<reference anchor="RFC7858" target='https://www.rfc-editor.org/info/rfc7858'> | ||||
<front> | ||||
<title>Specification for DNS over Transport Layer Security (TLS)</title> | ||||
<author initials='Z.' surname='Hu' fullname='Z. Hu'><organization /></author> | ||||
<author initials='L.' surname='Zhu' fullname='L. Zhu'><organization /></author> | ||||
<author initials='J.' surname='Heidemann' fullname='J. Heidemann'><organization | ||||
/></author> | ||||
<author initials='A.' surname='Mankin' fullname='A. Mankin'><organization /></au | ||||
thor> | ||||
<author initials='D.' surname='Wessels' fullname='D. Wessels'><organization /></ | ||||
author> | ||||
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></ | ||||
author> | ||||
<date year='2016' month='May' /> | ||||
<abstract><t>This document describes the use of Transport Layer Security (TLS) t | ||||
o provide privacy for DNS. Encryption provided by TLS eliminates opportunities | ||||
for eavesdropping and on-path tampering with DNS queries in the network, such as | ||||
discussed in RFC 7626. In addition, this document specifies two usage profiles | ||||
for DNS over TLS and provides advice on performance considerations to minimize | ||||
overhead from using TCP and TLS with DNS.</t><t>This document focuses on securin | ||||
g stub-to-recursive traffic, as per the charter of the DPRIVE Working Group. It | ||||
does not prevent future applications of the protocol to recursive-to-authoritat | ||||
ive traffic.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='7858'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC7858'/> | ||||
</reference> | ||||
<reference anchor="RFC8126" target='https://www.rfc-editor.org/info/rfc8126'> | ||||
<front> | ||||
<title>Guidelines for Writing an IANA Considerations Section in RFCs</title> | ||||
<author initials='M.' surname='Cotton' fullname='M. Cotton'><organization /></au | ||||
thor> | ||||
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></auth | ||||
or> | ||||
<author initials='T.' surname='Narten' fullname='T. Narten'><organization /></au | ||||
thor> | ||||
<date year='2017' month='June' /> | ||||
<abstract><t>Many protocols make use of points of extensibility that use constan | ||||
ts to identify various protocol parameters. To ensure that the values in these | ||||
fields do not have conflicting uses and to promote interoperability, their alloc | ||||
ations are often coordinated by a central record keeper. For IETF protocols, th | ||||
at role is filled by the Internet Assigned Numbers Authority (IANA).</t><t>To ma | ||||
ke assignments in a given registry prudently, guidance describing the conditions | ||||
under which new values should be assigned, as well as when and how modification | ||||
s to existing values can be made, is needed. This document defines a framework | ||||
for the documentation of these guidelines by specification authors, in order to | ||||
assure that the provided guidance for the IANA Considerations is clear and addre | ||||
sses the various issues that are likely in the operation of a registry.</t><t>Th | ||||
is is the third edition of this document; it obsoletes RFC 5226.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='26'/> | ||||
<seriesInfo name='RFC' value='8126'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8126'/> | ||||
</reference> | ||||
<reference anchor="RFC8313" target='https://www.rfc-editor.org/info/rfc8313'> | ||||
<front> | ||||
<title>Use of Multicast across Inter-domain Peering Points</title> | ||||
<author initials='P.' surname='Tarapore' fullname='P. Tarapore' role='editor'><o | ||||
rganization /></author> | ||||
<author initials='R.' surname='Sayko' fullname='R. Sayko'><organization /></auth | ||||
or> | ||||
<author initials='G.' surname='Shepherd' fullname='G. Shepherd'><organization /> | ||||
</author> | ||||
<author initials='T.' surname='Eckert' fullname='T. Eckert' role='editor'><organ | ||||
ization /></author> | ||||
<author initials='R.' surname='Krishnan' fullname='R. Krishnan'><organization /> | ||||
</author> | ||||
<date year='2018' month='January' /> | ||||
<abstract><t>This document examines the use of Source-Specific Multicast (SSM) a | ||||
cross inter-domain peering points for a specified set of deployment scenarios. | ||||
The objectives are to (1) describe the setup process for multicast-based deliver | ||||
y across administrative domains for these scenarios and (2) document supporting | ||||
functionality to enable this process.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='213'/> | ||||
<seriesInfo name='RFC' value='8313'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8313'/> | ||||
</reference> | ||||
<reference anchor="RFC8484" target='https://www.rfc-editor.org/info/rfc8484'> | ||||
<front> | ||||
<title>DNS Queries over HTTPS (DoH)</title> | ||||
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></ | ||||
author> | ||||
<author initials='P.' surname='McManus' fullname='P. McManus'><organization /></ | ||||
author> | ||||
<date year='2018' month='October' /> | ||||
<abstract><t>This document defines a protocol for sending DNS queries and gettin | ||||
g DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP | ||||
exchange.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='8484'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8484'/> | ||||
</reference> | ||||
</references> | </references> | |||
<section anchor="extranslate" numbered="true" toc="default"> | ||||
<section anchor="extranslate" title="Unknown RRType construction"> | <name>Unknown RRType Construction</name> | |||
<t>In a DNS resolver that understands the AMTRELAY type, the zone file mig | ||||
<t>In a DNS resolver that understands the AMTRELAY type, the zone file might | ht | |||
contain this line:</t> | contain this line:</t> | |||
<sourcecode name="" type=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
IN AMTRELAY 128 0 3 amtrelays.example.com. | IN AMTRELAY 128 0 3 amtrelays.example.com. | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t>In order to translate this example to appear as an unknown RRType | ||||
<t>In order to translate this example to appear as an unknown RRType | as defined in <xref target="RFC3597" format="default"/>, one could run the follo | |||
as defined in <xref target="RFC3597"/>, one could run the following program:</t> | wing program:</t> | |||
<sourcecode name="" type="python" markers="true"><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
<CODE BEGINS> | ||||
$ cat translate.py | $ cat translate.py | |||
#!/usr/bin/env python3 | #!/usr/bin/env python3 | |||
import sys | import sys | |||
name=sys.argv[1] | name=sys.argv[1] | |||
wire='' | wire='' | |||
for dn in name.split('.'): | for dn in name.split('.'): | |||
if len(dn) > 0: | if len(dn) > 0: | |||
wire += ('%02x' % len(dn)) | wire += ('%02x' % len(dn)) | |||
wire += (''.join('%02x'%ord(x) for x in dn)) | wire += (''.join('%02x'%ord(x) for x in dn)) | |||
print(len(wire)//2) + 2 | print(len(wire)//2) + 2 | |||
print(wire) | print(wire) | |||
$ ./translate.py amtrelays.example.com | $ ./translate.py amtrelays.example.com | |||
24 | 24 | |||
09616d7472656c617973076578616d706c6503636f6d | 09616d7472656c617973076578616d706c6503636f6d | |||
<CODE ENDS> | ]]></sourcecode> | |||
]]></artwork></figure> | <t>The length of the RData and the hex string for the domain name | |||
"amtrelays.example.com" are the outputs of this program.</t> | ||||
<t>The length of the RData and the hex string for the domain name | <t>The length of the wire-encoded domain name is 22, so 2 was added to | |||
“amtrelays.example.com” are the outputs of this program.</t> | ||||
<t>22 is the length of the wire-encoded domain name, so 2 was added to | ||||
that value (1 for the precedence field and 1 for the combined D-bit and | that value (1 for the precedence field and 1 for the combined D-bit and | |||
relay type fields) to get the full length 24 of the RData. For the 2 | relay type fields) to get the full length 24 of the RData. For the 2 | |||
octets ahead of the domain name, we encode the precedence, D-bit, and | octets ahead of the domain name, we encode the precedence, D-bit, and | |||
relay type fields, as described in <xref target="rrdef"/>.</t> | relay type fields, as described in <xref target="rrdef" format="default"/>.</t> | |||
<t>This results in a zone file entry like this:</t> | ||||
<t>This results in a zone file entry like this:</t> | ||||
<figure><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
IN TYPE260 \# ( 24 ; length | IN TYPE260 \# ( 24 ; length | |||
80 ; precedence = 128 | 80 ; precedence = 128 | |||
03 ; D-bit=0, relay type=3 (wire-encoded domain name) | 03 ; D-bit=0, relay type=3 (wire-encoded domain name) | |||
09616d7472656c617973076578616d706c6503636f6d ) ; domain name | 09616d7472656c617973076578616d706c6503636f6d ) ; domain name | |||
]]></artwork></figure> | ]]></artwork> | |||
</section> | ||||
</section> | ||||
<section anchor="acknowledgements" numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t>This specification was inspired by the previous work of <contact | ||||
fullname="Doug Nortz"/>, <contact fullname="Robert Sayko"/>, <contact full | ||||
name="David Segelstein"/>, and <contact fullname="Percy Tarapore"/>, presented i | ||||
n | ||||
the MBONED Working Group at IETF 93.</t> | ||||
<t>Thanks to <contact fullname="Jeff Goldsmith"/>, <contact fullname="Toer | ||||
less Eckert"/>, <contact fullname="Mikael Abrahamsson"/>, <contact fullname="Len | ||||
ny | ||||
Giuliano"/>, <contact fullname="Mark Andrews"/>, <contact fullname="Sandy | ||||
Zheng"/>, <contact fullname="Kyle Rose"/>, <contact fullname="Ben Kaduk"/>, | ||||
<contact fullname="Bill Atwood"/>, <contact fullname="Tim Chown"/>, <conta | ||||
ct fullname="Christian Worm Mortensen"/>, <contact fullname="Warren Kumari"/>, < | ||||
contact fullname="Dan | ||||
Romanescu"/>, <contact fullname="Bernard Aboba"/>, <contact fullname="Carlos | ||||
Pignataro"/>, <contact fullname="Niclas Comstedt"/>, <contact fullname="Mirja Kü | ||||
hlewind"/>, <contact fullname="Henning Rogge"/>, <contact fullname="Eric Vyncke" | ||||
/>, <contact fullname="Barry Lieba"/>, | ||||
<contact fullname="Roman Danyliw"/>, <contact fullname="Alissa Cooper"/>, | ||||
<contact fullname="Suresh Krishnan"/>, <contact fullname="Adam Roach"/>, | ||||
and <contact fullname="Daniel Franke"/> for their very helpful reviews and comme | ||||
nts.</t> | ||||
</section> | ||||
</back> | </back> | |||
<!-- ##markdown-source: | ||||
H4sIAISyF14AA+19W3fbyJXue/2KOtLMamlM0SR1sayMs47asruVWLYjqZOV | ||||
SSdZIAlKiEmAA4CS2bbzfv7TeZs/dva1LgAouZOel7OGPRlTBFCoy659+fal | ||||
9vb2TJ3V8/TEnr29spfpXVpWqT1/b08vru3O6aouFkmdTezFag7/JFVtr1d5 | ||||
ns6z/GbXnmXVpIAn1iYZj8v0Dhq5PD89M9NikicLaHNaJrN6L0vr2d5iXOTp | ||||
dG9aZsl0L1nUe1N9eG+4b6ZJDbePBsPne8PR3mhgJvDDTVGuT2xVT43JluWJ | ||||
rctVVY8Gg+eDkUnKNDmx75aVuS/KDzdlsVqe2At6h/mQruHH6Yk9z+u0zNN6 | ||||
7wz7YUxVJ/n0r8kc7jqx67Qyy+zE/qkuJj1bFWVdprMKvq0X+OXPxiSr+rYo | ||||
T4zdMxY+WV6d2N/07ffFfA7t0G88zN8kH9Lo56K8ObGnH5JFktnrdHKbF/Pi | ||||
Jkuh9fN80qdbKnhdWp/Y4eHAflsWyfQ+WdOFSVbDqF8mi3GZTW/Snr04tYPR | ||||
8OCArxarvMZp+SHP6nRqr2qYqMoWM3u6SEtYIborhRfPT+zfoF+33K0+TMP/ | ||||
vsGf+5NiYcxqiVMOA3p2cDgwJi9KXOe7FEZrL1+/HA72D/zXQ/k6Gg6fu6/H | ||||
Q/367HgkX/f3nx3p18Pnwddn+vV4OJCvB0eDA/9Vbzh6NjpwX4/25St2Ur4e | ||||
D461O8f7A/d1+EwfOz54Dp00WT5rjGm0P9S3jI4P3Jie7w9dP91bDgYjveFg | ||||
f6A3HDw71hYOh24g0GUd6TMYqn59dqSPPTs+PHb9dPce7w/3XZePofdmb2/P | ||||
JmMgjGQCxHp9m1UWdtJqkea1lfXCu2nJHtmbPSBB3MK7drw2i2Kazdbwq61v | ||||
U1um82Rt3e6zy7KYpFXVt/bU5uk98YEyrYpVOcGbJ7CTiMynBtq7fPXm9I8W | ||||
O5bOMthrFibZLlfjeVbd4guQa9ALKrrCrexVy3SSzaCnC+2pmdwm2FV87TV1 | ||||
yjEefP9PsEOpgcQ/Yqs0n6blNxXelEyn0McKemImRT7LblYldKYu7Aoacf1s | ||||
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 | ||||
a+0r8ZOfTyck4TkahAdJn44rjSd3MMDk6bs310/TetLfDQDX1pVfqrddUxV+ | ||||
wguf2zzhAUYQXujENze/M74bX/WE/mMCf7LxQvzc547/dV+Innu692Prf5su | ||||
RA9+/uvn1v82XTAPGelXXqyGcBJJZYWSPL9G0ShaicQcbl8tMKjmHcrClPSN | ||||
gr5+QQ8Rm64qEbv1DVtRA+MyydHNw+2I1+6GY3ZNQrScVpTOEIfJ1xw72xEI | ||||
WkpP8oVEDGeVNn/LusGHuljCv6Kv4Cs1z0JFf+N9GryFqFGSx4b2KmcHo31z | ||||
+tbJ4yrV9nsUPrHCKF6XnWHUnklinyB042O9d1ssBSCTXlOEM8ZO6jwUY/QJ | ||||
RQMgp2Gs1GCSJlw3aKZN2ZHM7r3lsoqybx5I/mDw/jbNShP39D4DPQX5DIwa | ||||
FPydWKXeepPeJJO1MNwtWm9D6KPL1KKbER1Jk7zmFBfxMyX2LimztCZV3GWF | ||||
eH/7ryIfWVaz44ydZTwnYnezq7iCl9Z7osr//v3b2Op1AXj7h89RP5ymc9wT | ||||
MImg06cfJ/NVnGnl1T9ytUF7RvOZ4CFOvkhy3xPnec3yIPzHN+cDgfq7G7Sz | ||||
DarZTrQgXdg0fP7S/XMHV5SNvFExe5ANdzPhz51fN31aIqMtVXb+AOSzC5cu | ||||
eAcgJXc9+ZnjJkEMWXwC/tmT/+z9U+v2Q+eTXhs7fR/1Owq5+prefu04//EZ | ||||
+ieebHZ3U3/bT3620ebe+P6uJ4FqJfZs94Ge/5K99UqY/P2j7fy0n3za+HvT | ||||
oxuUpCfdX0MtvaGY2fe3BaaT4teXRT67XNDXM5BXVcOmaD4JNjLa7Zu+BjbF | ||||
L9Xbn/PpVOm+6vMkVk1Urqt+EqkgwA8Dvrpa7m7ZE1BGviUM1WPSGpNZsEtM | ||||
RKwqJknVUiMI5QJJZZwogmcXWKhAcLUwsVowEAdMq5RqB76gRiXIgEdCGvz/ | ||||
ohWGA0/9D6P3T/7/wOifRGb7Q0/im/9AEYqgdOEqCUd42Hbveudnl+LxwJOd | ||||
TPerevs/IuKhJ/9HRDw8Q7+AiOgUEIH9SumYG4McOf52cptQ9O48+8Dhxz3F | ||||
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 | ||||
mP8HF313I2fxAAA= | ||||
</rfc> | </rfc> | |||
End of changes. 99 change blocks. | ||||
2493 lines changed or deleted | 1537 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |