rfc8910xml2.original.xml | rfc8910.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<!ENTITY rfc2119 PUBLIC "" ".//reference.RFC.2119.xml"> | ||||
<!ENTITY rfc8174 PUBLIC "" ".//reference.RFC.8174.xml"> | ||||
]> | ||||
<!-- WK: Set category, IPR, docName --> | ||||
<rfc category="std" docName="draft-ietf-capport-rfc7710bis-10" | ||||
ipr="trust200902" obsoletes="7710" updates="3679"> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc toc="yes" ?> | ||||
<?rfc symrefs="yes" ?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc iprnotified="no" ?> | ||||
<?rfc strict="yes"?> | ||||
<?rfc compact="yes" ?> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" | ||||
docName="draft-ietf-capport-rfc7710bis-10" number="8910" | ||||
ipr="trust200902" consensus="true" | ||||
obsoletes="7710" updates="3679" submissionType="IETF" xml:lang="en" | ||||
tocInclude="true" symRefs="true" sortRefs="true" version="3"> | ||||
<front> | <front> | |||
<!--c WK: Set long title. --> | ||||
<title abbrev="DHCP Captive-Portal">Captive-Portal Identification in DHCP | <title abbrev="DHCP Captive-Portal">Captive-Portal Identification in DHCP | |||
/ RA</title> | and Router Advertisements (RAs)</title> | |||
<seriesInfo name="RFC" value="8910"/> | ||||
<author fullname="Warren Kumari" initials="W." surname="Kumari"> | <author fullname="Warren Kumari" initials="W." surname="Kumari"> | |||
<organization>Google</organization> | <organization>Google</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1600 Amphitheatre Parkway</street> | <street>1600 Amphitheatre Parkway</street> | |||
<city>Mountain View, CA</city> | <city>Mountain View, CA</city> | |||
<code>94043</code> | <code>94043</code> | |||
<country>United States of America</country> | ||||
<country>US</country> | ||||
</postal> | </postal> | |||
<email>warren@kumari.net</email> | <email>warren@kumari.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Erik Kline" initials="E." surname="Kline"> | <author fullname="Erik Kline" initials="E." surname="Kline"> | |||
<organization>Loon</organization> | <organization>Loon</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1600 Amphitheatre Parkway</street> | <street>1600 Amphitheatre Parkway</street> | |||
<city>Mountain View, CA</city> | <city>Mountain View, CA</city> | |||
<code>94043</code> | <code>94043</code> | |||
<country>United States of America</country> | ||||
<country>US</country> | ||||
</postal> | </postal> | |||
<phone/> | <phone/> | |||
<email>ek@loon.com</email> | <email>ek@loon.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="September" year="2020"/> | ||||
<date month="July" year="2020"/> | <keyword>Captive Portal</keyword> | |||
<keyword>Walled Garden</keyword> | ||||
<keyword>Coffee-shop</keyword> | ||||
<keyword>Hotel</keyword> | ||||
<abstract> | <abstract> | |||
<t>In many environments offering short-term or temporary Internet access | <t>In many environments offering short-term or temporary Internet access | |||
(such as coffee shops), it is common to start new connections in a | (such as coffee shops), it is common to start new connections in a | |||
captive portal mode. This highly restricts what the user can do | captive portal mode. This highly restricts what the user can do | |||
until the user has satisfied the captive portal conditions.</t> | until the user has satisfied the captive portal conditions.</t> | |||
<t>This document describes a DHCPv4 and DHCPv6 option and a Router Adverti sement | <t>This document describes a DHCPv4 and DHCPv6 option and a Router Adverti sement | |||
(RA) option to inform clients that they are behind some sort of | (RA) option to inform clients that they are behind some sort of | |||
captive portal enforcement device, and that they will need to satify the | captive portal enforcement device, and that they will need to satisfy the | |||
Captive Portal conditions to get | Captive Portal conditions to get | |||
Internet access. It is not a full solution to address all of the issues | Internet access. It is not a full solution to address all of the issues | |||
that clients may have with captive portals; it is designed to be one | that clients may have with captive portals; it is designed to be one | |||
component of a standardized approach for hosts to interact with such | component of a standardized approach for hosts to interact with such | |||
portals. While this document defines how the network operator may convey | portals. While this document defines how the network operator may convey | |||
the captive portal API endpoint to hosts, the specific methods of | the captive portal API endpoint to hosts, the specific methods of | |||
satisfying and interacting with the captive portal are out of | satisfying and interacting with the captive portal are out of | |||
scope of this document.</t> | scope of this document.</t> | |||
<t>This document replaces RFC 7710, which used DHCP code point 160. | ||||
<t>This document replaces <xref target="RFC7710"/>. <xref target="RFC7710 | Due to a conflict, this document specifies 114. Consequently, this | |||
"/> | document also updates RFC 3679.</t> | |||
used DHCP code point 160. Due to a conflict, this document specifies 114. | ||||
Consequently, this document also updates <xref target="RFC3679"/>.</t> | ||||
</abstract> | </abstract> | |||
</front> | ||||
</front> | ||||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<name>Introduction</name> | ||||
<t>In many environments, users need to connect to a captive portal | <t>In many environments, users need to connect to a captive portal | |||
device and agree to an Acceptable Use Policy (AUP) and / or provide | device and agree to an Acceptable Use Policy (AUP) and/or provide | |||
billing information before they can access the Internet. Regardless of | billing information before they can access the Internet. Regardless of | |||
how that mechanism operates, this document provides functionality | how that mechanism operates, this document provides functionality | |||
to allow the client to know when it is | to allow the client to know when it is | |||
behind a captive portal and how to contact it.</t> | behind a captive portal and how to contact it.</t> | |||
<t>In order to present users with the payment or AUP pages, a captive | ||||
<t>In order to present users with the payment or AUP pages, presently a | portal enforcement device presently has to intercept the user's connection | |||
captive portal enforcement device has to intercept the user's connections | s and | |||
and | redirect the user to a captive portal server, using methods that are | |||
redirect the user to a captive portal server, using methods that are very | very similar to man-in-the-middle (MITM) attacks. As increasing focus is | |||
similar to man-in-the-middle (MITM) attacks. As increasing focus is | ||||
placed on security, and end nodes adopt a more secure stance, these | placed on security, and end nodes adopt a more secure stance, these | |||
interception techniques will become less effective and/or more | interception techniques will become less effective and/or more | |||
intrusive.</t> | intrusive.</t> | |||
<t>This document describes a DHCPv4 <xref target="RFC2131" format="default | ||||
<t>This document describes a DHCPv4 <xref target="RFC2131"/> and DHCPv6 | "/> and DHCPv6 | |||
<xref target="RFC8415"/> option (Captive-Portal) and an IPv6 | <xref target="RFC8415" format="default"/> option (Captive-Portal) and an I | |||
Router Advertisement (RA) <xref target="RFC4861"/> option that informs | Pv6 | |||
Router Advertisement (RA) <xref target="RFC4861" format="default"/> option | ||||
that informs | ||||
clients that they are behind a captive portal enforcement device and | clients that they are behind a captive portal enforcement device and | |||
the API endpoint that the host can contact for more information.</t> | the API endpoint that the host can contact for more information.</t> | |||
<t>This document replaces RFC 7710 <xref target="RFC7710" | ||||
format="default"/>, which used DHCP code point 160. Due to a conflict, | ||||
this document specifies 114. Consequently, this document also updates | ||||
<xref target="RFC3679"/>.</t> | ||||
<section numbered="true" toc="default"> | ||||
<name>Requirements Notation</name> | ||||
<t>This document replaces RFC 7710 <xref target="RFC7710"/>.</t> | <t> | |||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
<section title="Requirements Notation"> | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"OPTIONAL" in this document are to be interpreted as described in | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, | be interpreted as | |||
and only when, they appear in all capitals, as shown here.</t> | 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> | |||
<section anchor="option" title="The Captive-Portal Option"> | <section anchor="option" numbered="true" toc="default"> | |||
<t>The Captive-Portal DHCP / RA Option informs the client that it may be | <name>The Captive-Portal Option</name> | |||
<t>The Captive-Portal DHCP/RA Option informs the client that it may be | ||||
behind a captive portal and provides the URI to access an API as defined | behind a captive portal and provides the URI to access an API as defined | |||
by [draft-ietf-capport-api]. This is primarily intended to improve the | by <xref target="RFC8908"/>. This is primarily intended to improve the | |||
user experience by showing the user the captive portal information faster and more | user experience by showing the user the captive portal information faster and more | |||
reliably. Note that, for the foreseeable future, captive portals will | reliably. Note that, for the foreseeable future, captive portals will | |||
still need to implement interception techniques to serve legacy | still need to implement interception techniques to serve legacy | |||
clients, and clients will need to perform probing to detect captive | clients, and clients will need to perform probing to detect captive | |||
portals"; nonetheless, the mechanism provided by this document provides | portals; nonetheless, the mechanism provided by this document provides | |||
a more reliable and performant way to do so, and is therefore the preferre d | a more reliable and performant way to do so, and is therefore the preferre d | |||
mechanism for captive portal detection.</t> | mechanism for captive portal detection.</t> | |||
<t>Clients that support the Captive Portal DHCP option <bcp14>SHOULD</bcp1 | ||||
<t>Clients that support the Captive Portal DHCP option SHOULD include the | 4> include the | |||
option in the Parameter Request List in DHCPREQUEST messages. DHCP servers | option in the Parameter Request List in DHCPREQUEST messages. DHCP servers | |||
MAY send the Captive Portal option without any explicit request.</t> | <bcp14>MAY</bcp14> send the Captive Portal option without any explicit req | |||
uest.</t> | ||||
<t>In order to support multiple "classes" of clients (e.g. IPv4 only, | ||||
IPv6 only with DHCPv6 (<xref target="RFC8415"/>), and IPv6 only with RA) t | ||||
he | ||||
captive network can provision the client with the URI via multiple methods | ||||
(IPv4 DHCP, IPv6 | ||||
DHCP, and IPv6 RA). The captive portal operator SHOULD ensure that the URI | ||||
s | ||||
provisioned by each method are identical to reduce the chance of operation | ||||
al problems. | ||||
As the maximum length of the URI that can be carried in IPv4 DHCP is 255 | ||||
bytes, URIs longer than this SHOULD NOT be provisioned by any of the IPv6 | ||||
options described in this document. In IPv6-only environments | ||||
this restriction can be relaxed.</t> | ||||
<t>In all variants of this option, the URI MUST be that of the captive | <t>In order to support multiple "classes" of clients (e.g., IPv4 only, | |||
portal API endpoint [draft-ietf-capport-api]. | IPv6 only with DHCPv6 (<xref target="RFC8415" format="default"/>), and | |||
IPv6 only with RA), the captive network can provision the client with the | ||||
URI via multiple methods (IPv4 DHCP, IPv6 DHCP, and IPv6 RA). The | ||||
captive portal operator <bcp14>SHOULD</bcp14> ensure that the URIs | ||||
provisioned by each method are identical to reduce the chance of | ||||
operational problems. As the maximum length of the URI that can be | ||||
carried in IPv4 DHCP is 255 bytes, URIs longer than this <bcp14>SHOULD | ||||
NOT</bcp14> be provisioned by any of the IPv6 options described in this | ||||
document. In IPv6-only environments, this restriction can be | ||||
relaxed.</t> | ||||
<t>In all variants of this option, the URI <bcp14>MUST</bcp14> be that of | ||||
the captive | ||||
portal API endpoint (<xref target="RFC8908"/>). | ||||
</t> | </t> | |||
<t>A captive portal MAY do content negotiation (<xref target="RFC7231"/> | <t>A captive portal <bcp14>MAY</bcp14> do content negotiation (<xref | |||
section 3.4) and attempt to redirect clients querying without an | target="RFC7231" sectionFormat="of" section="3.4"/>) and attempt to | |||
explicit indication of support for the captive portal API content type | redirect clients querying without an explicit indication of support for | |||
(i.e. without application/capport+json listed explicitly anywhere within | the captive portal API content type (i.e., without | |||
an Accept header vis. <xref target="RFC7231"/> section 5.3). In so | application/capport+json listed explicitly anywhere within an Accept | |||
doing, the captive portal SHOULD redirect the client to the value | header field as described in <xref target="RFC7231" sectionFormat="of" | |||
associated with the "user-portal-url" API key. When performing such | section="5.3"/>). In so doing, the captive portal <bcp14>SHOULD</bcp14> | |||
content negotiation (<xref target="RFC7231"/> Section 3.4), implementors | redirect the client to the value associated with the "user-portal-url" | |||
of captive portals need to keep in mind that such responses might be | API key. When performing such content negotiation (<xref | |||
cached, and therefore SHOULD include an appropriate Vary header field | target="RFC7231" sectionFormat="of" section="3.4"/>), implementors of | |||
(<xref target="RFC7231"/> Section 7.1.4) or set the Cache-Control header | captive portals need to keep in mind that such responses might be | |||
field in any responses to "private", or a more restrictive value such as | cached, and therefore <bcp14>SHOULD</bcp14> include an appropriate Vary | |||
"no-store" <xref target="RFC7234"/> Section 5.2.2.3). | header field (<xref target="RFC7231" sectionFormat="of" | |||
section="7.1.4"/>) or set the Cache-Control header field in any | ||||
responses to "private" or a more restrictive value such as "no-store" | ||||
(<xref target="RFC7234" sectionFormat="of" section="5.2.2.3"/>). | ||||
</t> | </t> | |||
<t>The URI SHOULD NOT contain an IP address literal. Exceptions to this | <t>The URI <bcp14>SHOULD NOT</bcp14> contain an IP address literal. Except ions to this | |||
might include networks with only one operational IP address family where | might include networks with only one operational IP address family where | |||
DNS is either not available or not fully functional until the captive | DNS is either not available or not fully functional until the captive | |||
portal has been satisfied. Use of iPAddress certificates (<xref target="RF C3779"/>) | portal has been satisfied. Use of IP Address certificates (<xref target="R FC3779" format="default"/>) | |||
adds considerations that are out of scope for this document.</t> | adds considerations that are out of scope for this document.</t> | |||
<t>Networks with no captive portals may explicitly indicate this | <t>Networks with no captive portals may explicitly indicate this | |||
condition by using this option with the IANA-assigned URI for this | condition by using this option with the IANA-assigned URI for this | |||
purpose. Clients observing the URI value | purpose. Clients observing the URI value | |||
"urn:ietf:params:capport:unrestricted" may forego time-consuming forms of | "urn:ietf:params:capport:unrestricted" may forego time-consuming forms of | |||
captive portal detection.</t> | captive portal detection.</t> | |||
<section anchor="dhcpv4opt" numbered="true" toc="default"> | ||||
<section anchor="dhcpv4opt" title="IPv4 DHCP Option"> | <name>IPv4 DHCP Option</name> | |||
<t>The format of the IPv4 Captive-Portal DHCP option is shown | <t>The format of the IPv4 Captive-Portal DHCP option is shown | |||
below.<figure> | below.</t> | |||
<artwork><![CDATA[ | ||||
<figure title="Captive-Portal DHCPv4 Option Format"> | ||||
<artwork name="" type="" align="left" alt=""><![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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Code | Len | URI (variable length) ... | | | Code | Len | URI (variable length) ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
. ...URI continued... . | . ...URI continued... . | |||
| ... | | | ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
</figure></t> | </figure> | |||
<t><list style="symbols"> | <ul empty="true"> | |||
<t>Code: The Captive-Portal DHCPv4 Option (114) (one octet)</t> | ||||
<t>Len: The length (one octet), in octets, of the URI.</t> | <li> | |||
<dl> | ||||
<t>URI: The URI for the captive portal API endpoint to which the | <dt>Code: | |||
</dt> | ||||
<dd>The Captive-Portal DHCPv4 Option (114) (one octet). | ||||
</dd> | ||||
<dt>Len: | ||||
</dt> | ||||
<dd>The length (one octet), in octets, of the URI. | ||||
</dd> | ||||
<dt>URI: | ||||
</dt> | ||||
<dd>The URI for the captive portal API endpoint to which the | ||||
user should connect (encoded following the rules in <xref | user should connect (encoded following the rules in <xref | |||
target="RFC3986"/>).</t> | target="RFC3986" format="default"/>). | |||
</list>See <xref target="RFC2132"/>, Section 2 for more on the format | </dd> | |||
of IPv4 DHCP options.</t> | ||||
</dl> | ||||
</li> | ||||
</ul> | ||||
<t>See <xref target="RFC2132" sectionFormat="of" section="2"/> for more | ||||
on the format | ||||
of IPv4 DHCP options.</t> | ||||
<t>Note that the URI parameter is not null terminated.</t> | <t>Note that the URI parameter is not null terminated.</t> | |||
</section> | </section> | |||
<section anchor="dhcpv6opt" numbered="true" toc="default"> | ||||
<section anchor="dhcpv6opt" title="IPv6 DHCP Option"> | <name>IPv6 DHCP Option</name> | |||
<t>The format of the IPv6 Captive-Portal DHCP option is shown below. | <t>The format of the IPv6 Captive-Portal DHCP option is shown below. | |||
<figure> | </t> | |||
<artwork><![CDATA[ | <figure title="Captive-Portal DHCPv6 Option Format"> | |||
<artwork name="" type="" align="left" alt=""><![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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| option-code | option-len | | | option-code | option-len | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
. URI (variable length) . | . URI (variable length) . | |||
| ... | | | ... | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
</figure></t> | </figure> | |||
<t><list style="symbols"> | <ul empty="true"> | |||
<t>option-code: The Captive-Portal DHCPv6Option (103) (two | <li> | |||
octets)</t> | <dl> | |||
<t>option-len: The unsigned 16-bit length, in octets, of the URI. | <dt>option-code: | |||
</t> | </dt> | |||
<dd>The Captive-Portal DHCPv6 Option (103) (two octets). | ||||
</dd> | ||||
<t>URI: The URI for the captive portal API endpoint to which the | <dt>option-len: | |||
user should connect (encoded following the rules in <xref | </dt> | |||
target="RFC3986"/>).</t> | <dd>The unsigned 16-bit length, in octets, of the URI. | |||
</list>See <xref target="RFC7227"/>, Section 5.7 for more examples | </dd> | |||
of DHCP Options with URIs. See <xref target="RFC8415"/>, Section 21.1 | ||||
for more on the format of IPv6 DHCP options.</t> | ||||
<t>Note that the URI parameter is not null terminated.</t> | <dt>URI: | |||
</dt> | ||||
<dd>The URI for the captive portal API endpoint to which the user should | ||||
connect (encoded following the rules in <xref target="RFC3986" format="default"/ | ||||
>). | ||||
</dd> | ||||
</dl> | ||||
</li> | ||||
</ul> | ||||
<t>See <xref target="RFC7227" sectionFormat="of" section="5.7"/> for | ||||
more examples of DHCP Options with URIs. See <xref target="RFC8415" | ||||
sectionFormat="of" section="21.1"/> for more on the format of IPv6 | ||||
DHCP options.</t> | ||||
<t>Note that the URI parameter is not null terminated.</t> | ||||
<t>As the maximum length of the URI that can be carried in IPv4 DHCP is | <t>As the maximum length of the URI that can be carried in IPv4 DHCP is | |||
255 bytes, URIs longer than this SHOULD NOT be provisioned via | 255 bytes, URIs longer than this <bcp14>SHOULD NOT</bcp14> be provisione d via | |||
IPv6 DHCP options.</t> | IPv6 DHCP options.</t> | |||
</section> | </section> | |||
<section anchor="v6ndopt" numbered="true" toc="default"> | ||||
<section anchor="v6ndopt" title="The Captive-Portal IPv6 RA Option"> | <name>The Captive-Portal IPv6 RA Option</name> | |||
<t>This section describes the Captive-Portal Router Advertisement | <t>This section describes the Captive-Portal Router Advertisement | |||
option.</t> | option.</t> | |||
<figure title="Captive-Portal RA Option Format"> | ||||
<t><figure> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Length | URI . | | Type | Length | URI . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . | |||
. . | . . | |||
. . | . . | |||
. . | . . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 2: Captive-Portal RA Option Format]]></artwork> | ]]></artwork> | |||
</figure></t> | </figure> | |||
<t><list style="hanging"> | ||||
<t hangText="Type">37</t> | ||||
<t hangText="Length">8-bit unsigned integer. The length of the | <ul empty="true"> | |||
<li> | ||||
<dl newline="false" spacing="normal"> | ||||
<dt>Type:</dt> | ||||
<dd>37</dd> | ||||
<dt>Length:</dt> | ||||
<dd>8-bit unsigned integer. The length of the | ||||
option (including the Type and Length fields) in units of 8 | option (including the Type and Length fields) in units of 8 | |||
bytes.</t> | bytes.</dd> | |||
<dt>URI:</dt> | ||||
<t hangText="URI">The URI for the captive portal API endpoint to | <dd>The URI for the captive portal API endpoint to | |||
which the user should connect. This MUST be padded with NUL | which the user should connect. This <bcp14>MUST</bcp14> be padded wi | |||
th NUL | ||||
(0x00) to make the total option length (including the Type and | (0x00) to make the total option length (including the Type and | |||
Length fields) a multiple of 8 bytes.</t> | Length fields) a multiple of 8 bytes.</dd> | |||
</list></t> | </dl> | |||
</li> | ||||
</ul> | ||||
<t>Note that the URI parameter is not guaranteed to be null terminated.< /t> | <t>Note that the URI parameter is not guaranteed to be null terminated.< /t> | |||
<t>As the maximum length of the URI that can be carried in IPv4 DHCP is | <t>As the maximum length of the URI that can be carried in IPv4 DHCP is | |||
255 bytes, URIs longer than this SHOULD NOT be provisioned via | 255 bytes, URIs longer than this <bcp14>SHOULD NOT</bcp14> be provisione d via | |||
IPv6 RA options.</t> | IPv6 RA options.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="precedence" numbered="true" toc="default"> | ||||
<section anchor="precedence" title="Precedence of API URIs"> | <name>Precedence of API URIs</name> | |||
<t>A device may learn about Captive Portal API URIs through more than | <t>A device may learn about Captive Portal API URIs through more than | |||
one of (or indeed all of) the above options. Implementations can select | one of (or indeed all of) the above options. Implementations can select | |||
their own precedence order (e.g., prefer one of the IPv6 options before | their own precedence order (e.g., prefer one of the IPv6 options before | |||
the DHCPv4 option, or vice versa, et cetera).</t> | the DHCPv4 option, or vice versa, et cetera).</t> | |||
<t>If the URIs learned via more than one option described in <xref target= | ||||
<t>If the URIs learned via more than one option described in <xref | "option" format="default"/> are not all identical, this condition should be logg | |||
target="option"/> are not all identical, this condition should be logged | ed | |||
for the device owner or administrator; it is a network configuration error | for the device owner or administrator; it is a network configuration error | |||
if the learned URIs are not all identical.</t> | if the learned URIs are not all identical.</t> | |||
</section> | </section> | |||
<section anchor="iana" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<section anchor="iana" title="IANA Considerations"> | <t>IANA has registered a new IETF URN protocol parameter (<xref | |||
<t>This document requests one new IETF URN protocol parameter (<xref | target="RFC3553" format="default"/>). IANA has also reallocated two | |||
target="RFC3553"/>) entry. This document also requests a reallocation | DHCPv4 option codes (see <xref target="exp106" format="default"/> for | |||
of DHCPv4 option codes (see <xref target="exp106"/> for background).</t> | background) and updated the references for previously registered DHCPv6 | |||
and IPv6 ND options.</t> | ||||
<section anchor="iana-urn" numbered="true" toc="default"> | ||||
<name>Captive Portal Unrestricted Identifier</name> | ||||
<t>IANA has registered a new entry in the "IETF URN Sub-namespace | ||||
for Registered Protocol Parameter Identifiers" registry defined in | ||||
<xref target="RFC3553" format="default"/>: | ||||
</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>Registered Parameter Identifier:</dt> | ||||
<dd>capport:unrestricted</dd> | ||||
<dt>Reference:</dt> | ||||
<dd>RFC 8910</dd> | ||||
<dt>IANA Registry Reference:</dt> | ||||
<dd>RFC 8910</dd> | ||||
</dl> | ||||
<t>Only one value is defined (see URN above). No hierarchy is defined | ||||
and, therefore, no sub-namespace registrations are possible.</t> | ||||
</section> | ||||
<section anchor="ietf_dhcpv4_option_code_change" numbered="true" toc="defa | ||||
ult"> | ||||
<name>BOOTP Vendor Extensions and DHCP Options Code Change</name> | ||||
<t>Thanks IANA!</t> | <t>IANA has updated the "BOOTP Vendor Extensions and DHCP | |||
Options" registry (<<eref | ||||
target="https://www.iana.org/assignments/bootp-dhcp-parameters"/>>) | ||||
as follows.</t> | ||||
<section anchor="iana-urn" | <dl spacing="compact"> | |||
title="Captive Portal Unrestricted Identifier"> | <dt>Tag:</dt> | |||
<t>This document registers a new entry under the IETF URN | <dd>114</dd> | |||
Sub-namespace for Registered Protocol Parameter Identifiers | ||||
defined in <xref target="RFC3553"/>: | ||||
<list style="hanging"> | ||||
<t hangText="Registered Parameter Identifier:">capport:unrestricted</t> | ||||
<t hangText="Reference:">RFC TBD (this document)</t> | ||||
<t hangText="IANA Registry Reference:"><xref target="RFC3553"/></t> | ||||
</list></t> | ||||
<t>Only one value is defined (see URN above). No hierarchy is defined and | <dt>Name:</dt> | |||
therefore no sub-namespace registrations are possible.</t> | <dd>DHCP Captive-Portal</dd> | |||
</section> | ||||
<section anchor="ietf_dhcpv4_option_code_change" | <dt>Data Length:</dt> | |||
title="BOOTP Vendor Extensions and DHCP Options Code Change"> | <dd>N</dd> | |||
<t> | ||||
[ RFC Ed: Please remove before publication: | ||||
RFC7710 uses DHCP Code 160 -- unfortunately, it was discovered that this o | ||||
ption code is already widely used by Polycom (see appendix). | ||||
Option 114 (URL) is currently assigned to Apple (RFC3679, Section 3.2.3 - | ||||
Contact: Dieter Siegmund, dieter@apple.com - Reason to recover: Never published | ||||
in an RFC) | ||||
Tommy Pauly (Apple) and Dieter Siegmund confirm that this codepoint hasn't | ||||
been used, and Apple is willing to relinquish it for use in CAPPORT. | ||||
Please see thread: https://mailarchive.ietf.org/arch/msg/captive-portals/T | ||||
mqQz6Ma_fznD3XbhwkH9m2dB28 for more background. ] | ||||
</t> | ||||
<t>The IANA is requested to update the | <dt>Meaning:</dt> | |||
"BOOTP Vendor Extensions and DHCP Options" registry | <dd>DHCP Captive-Portal</dd> | |||
(https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-par | ||||
ameters.xhtml) | ||||
as follows.</t> | ||||
<t><figure><artwork><![CDATA[ Tag: 114 | <dt>Reference:</dt> | |||
Name: DHCP Captive-Portal | <dd>RFC 8910</dd> | |||
Data Length: N | </dl> | |||
Meaning: DHCP Captive-Portal | ||||
Reference: [THIS-RFC]]]></artwork></figure></t> | <dl spacing="compact"> | |||
<dt>Tag:</dt> | ||||
<dd>160</dd> | ||||
<dt>Name:</dt> | ||||
<dd>Unassigned</dd> | ||||
<dt>Data Length:</dt> | ||||
<dd></dd> | ||||
<dt>Meaning:</dt> | ||||
<dd>Previously assigned by <xref target="RFC7710"/>; known to also be used by Po | ||||
lycom.</dd> | ||||
<dt>Reference:</dt> | ||||
<dd><xref target="RFC7710"/> RFC 8910</dd> | ||||
</dl> | ||||
<t><figure><artwork><![CDATA[ Tag: 160 | ||||
Name: Unassigned | ||||
Data Length: | ||||
Meaning: Previously assigned by RFC7710; known to also be used by Polycom. | ||||
Reference: [THIS-RFC][RFC7710]]]></artwork></figure></t> | ||||
</section> | </section> | |||
<section anchor="iana_update_dhcv6_and_icmpv6" | <section anchor="iana_update_dhcv6_and_icmpv6" numbered="true" toc="defaul | |||
title="Update DHCPv6 and IPv6 ND Options Registries"> | t"> | |||
<t>This document requests that the DHCPv6 and IPv6 ND options previously | <name>Update DHCPv6 and IPv6 ND Options Registries</name> | |||
registered in <xref target="RFC7710"/> be updated to reference this | ||||
<t>IANA has updated the DHCPv6 (103 - DHCP Captive-Portal) and IPv6 ND | ||||
(37 - DHCP Captive-Portal) options previously | ||||
registered in <xref target="RFC7710" format="default"/> to reference thi | ||||
s | ||||
document.</t> | document.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="security" numbered="true" toc="default"> | ||||
<section anchor="security" title="Security Considerations"> | <name>Security Considerations</name> | |||
<t>By removing or reducing the need for captive portals to perform MITM | <t>By removing or reducing the need for captive portals to perform | |||
hijacking, this mechanism improves security by making the portal and its | MITM hijacking, this mechanism improves security by | |||
actions visible, rather than hidden, and reduces the likelihood that users | making the portal and its actions visible, rather than hidden, and | |||
will disable useful security safeguards like DNSSEC validation, VPNs, etc | reduces the likelihood that users will disable useful security | |||
in order to interact with the captive portal. | safeguards like DNSSEC validation, VPNs, etc. in order to interact with | |||
In addition, because the system knows that it is behind a captive portal, | the captive portal. In addition, because the system knows that it is | |||
it can know not to send cookies, credentials, etc. By handing out a URI | behind a captive portal, it can know not to send cookies, credentials, | |||
which is protected with TLS, the captive portal operator can attempt to | etc. By handing out a URI that is protected with TLS, the captive | |||
reassure the user that the captive portal is not malicious.</t> | portal operator can attempt to reassure the user that the captive portal | |||
is not malicious.</t> | ||||
<t>Clients processing these options SHOULD validate that the option's | <t>Clients processing these options <bcp14>SHOULD</bcp14> validate that th | |||
e option's | ||||
contents conform to the validation requirements for URIs, including | contents conform to the validation requirements for URIs, including | |||
<xref target="RFC3986"/>.</t> | those described in | |||
<xref target="RFC3986" format="default"/>.</t> | ||||
<t>Each of the options described in this document is presented to a node | <t>Each of the options described in this document is presented to a | |||
using the same protocols used to provision other information critical | node using the same protocols used to provision other information | |||
to the node's successful configuration on a network. The security | critical to the node's successful configuration on a network. The | |||
considerations applicable to each of these provisioning mechanisms also | security considerations applicable to each of these provisioning | |||
apply when the node is attempting to learn the information conveyed in | mechanisms also apply when the node is attempting to learn the | |||
these options. In the absence of security measures like RA Guard | information conveyed in these options. In the absence of security | |||
(<xref target="RFC6105"/>, <xref target="RFC7113"/>) or DHCP Shield | measures like RA-Guard (<xref target="RFC6105" format="default"/>, <xref | |||
<xref target="RFC7610"/>, an attacker could inject, modify, or block DHCP | target="RFC7113" format="default"/>) or DHCPv6-Shield <xref | |||
messages or RAs.</t> | target="RFC7610" format="default"/>, an attacker could inject, modify, | |||
or block DHCP messages or RAs.</t> | ||||
<t>An attacker with the ability to inject DHCP messages or RAs | <t>An attacker with the ability to inject DHCP messages or RAs | |||
could include an option from this document to force users to contact | could include an option from this document to force users to contact | |||
an address of his choosing. As an attacker with this capability could | an address of the attacker's choosing. An attacker with this capability co uld | |||
simply list themselves as the default gateway (and so intercept all the | simply list themselves as the default gateway (and so intercept all the | |||
victim's traffic); this does not provide them with significantly more | victim's traffic); this does not provide them with significantly more | |||
capabilities, but because this document removes the need for | capabilities, but because this document removes the need for | |||
interception, the attacker may have an easier time performing the | interception, the attacker may have an easier time performing the | |||
attack.</t> | attack.</t> | |||
<t>However, as the operating systems and application(s) that make use of | <t>However, as the operating systems and application(s) that make use of | |||
this information know that they are connecting to a captive portal device | this information know that they are connecting to a captive portal | |||
(as opposed to intercepted connections where the OS/application may not | device (as opposed to intercepted connections where the OS/application | |||
know that they are connecting to a captive portal or hostile device) | may not know that they are connecting to a captive portal or hostile | |||
they can render the page in a | device), they can render the page in a sandboxed environment and take | |||
sandboxed environment and take other precautions, such as clearly | other precautions such as clearly labeling the page as untrusted. The | |||
labeling the page as untrusted. The means of sandboxing and user | means of sandboxing and a user interface presenting this information is | |||
interface presenting this information is not covered in this document - | not covered in this document; by its nature, it is implementation | |||
by its nature it is implementation specific and best left to the | specific and best left to the application and user interface | |||
application and user interface designers.</t> | designers.</t> | |||
<t>Devices and systems that automatically connect to an open network | <t>Devices and systems that automatically connect to an open network | |||
could potentially be tracked using the techniques described in this | could potentially be tracked using the techniques described in this | |||
document (forcing the user to continually re-satisfy the Captive Portal | document (forcing the user to continually resatisfy the Captive Portal | |||
conditions, or exposing their browser fingerprint). However, | conditions or exposing their browser fingerprint). However, | |||
similar tracking can already be performed with the presently common | similar tracking can already be performed with the presently common | |||
captive portal mechanisms, so this technique does not give the attackers | captive portal mechanisms, so this technique does not give the attackers | |||
more capabilities.</t> | more capabilities.</t> | |||
<t>Captive portals are increasingly hijacking TLS connections to force | <t>Captive portals are increasingly hijacking TLS connections to force | |||
browsers to talk to the portal. Providing the portal's URI via a DHCP or | browsers to talk to the portal. Providing the portal's URI via a DHCP or | |||
RA option is a cleaner technique, and reduces user expectations of being | RA option is a cleaner technique, and reduces user expectations of being | |||
hijacked - this may improve security by making users more reluctant to | hijacked; this may improve security by making users more reluctant to | |||
accept TLS hijacking, which can be performed from beyond the network | accept TLS hijacking, which can be performed from beyond the network | |||
associated with the captive portal.</t> | associated with the captive portal.</t> | |||
</section> | </section> | |||
<section title="Acknowledgements"> | ||||
<t>This document is a -bis of RFC7710. Thanks to all of the original | ||||
authors (Warren Kumari, Olafur Gudmundsson, Paul Ebersman, Steve Sheng), | ||||
and original contributors.</t> | ||||
<t>Also thanks to the CAPPORT WG for all of the discussion and | ||||
improvements including contributions and review from Joe Clarke, | ||||
Lorenzo Colitti, Dave Dolson, Hans Kuhn, Kyle Larose, Clemens Schimpe, | ||||
Martin Thomson, Michael Richardson, | ||||
Remi Nguyen Van, Subash Tirupachur Comerica, Bernie Volz, | ||||
and Tommy Pauly.</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | <references> | |||
<?rfc include='reference.RFC.2131'?> | <name>References</name> | |||
<references> | ||||
<?rfc include='reference.RFC.2132'?> | <name>Normative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.2119'?> | FC.2131.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.3553'?> | FC.2132.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.3986'?> | FC.2119.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.4861'?> | FC.3553.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.7227'?> | FC.3986.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.7231'?> | FC.4861.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.7234'?> | FC.7227.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
<?rfc include='reference.RFC.8174'?> | FC.7231.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7234.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8415.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3679.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3779.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6105.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7113.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7610.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7710.xml"/> | ||||
<?rfc include='reference.RFC.8415'?> | <reference anchor="RFC8908" target="https://www.rfc-editor.org/info/rfc8908"> | |||
</references> | <front> | |||
<title>Captive Portal API</title> | ||||
<author initials="T" surname="Pauly" fullname="Tommy Pauly" role="editor" | ||||
> | ||||
<organization /> | ||||
</author> | ||||
<author initials="D" surname="Thakore" fullname="Darshak Thakore" role="e | ||||
ditor"> | ||||
<organization /> | ||||
</author> | ||||
<date month="September" year="2020" /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8908" /> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8908"/> | ||||
</reference> | ||||
<references title="Informative References"> | </references> | |||
<?rfc include='reference.RFC.3679'?> | ||||
<?rfc include='reference.RFC.3779'?> | ||||
<?rfc include='reference.RFC.6105'?> | ||||
<?rfc include='reference.RFC.7113'?> | ||||
<?rfc include='reference.RFC.7610'?> | ||||
<?rfc include='reference.RFC.7710'?> | ||||
</references> | </references> | |||
<section title="Changes / Author Notes."> | <section anchor="diff7710" numbered="true" toc="default"> | |||
<t>[RFC Editor: Please remove this section before publication ]</t> | <name>Changes from RFC 7710</name> | |||
<t>This document incorporates the following changes from <xref target="RFC | ||||
<t>From initial to -00.</t> | 7710" format="default"/>.</t> | |||
<ol spacing="normal" type="1"> | ||||
<t><list style="symbols"> | <li>Clarified that IP string literals are <bcp14>NOT RECOMMENDED</bcp14> | |||
<t>Import of RFC7710.</t> | .</li> | |||
</list></t> | <li>Clarified that the option URI <bcp14>MUST</bcp14> be that of the cap | |||
tive portal | ||||
<t>From -00 to -01.</t> | API endpoint.</li> | |||
<li>Clarified that captive portals <bcp14>MAY</bcp14> do content negotia | ||||
<t><list style="symbols"> | tion.</li> | |||
<t>Remove link-relation text.</t> | <li>Added text about Captive Portal API URI precedence in the event | |||
<t>Clarify option should be in DHCPREQUEST parameter list.</t> | of a network configuration error.</li> | |||
<t>Uppercase some SHOULDs.</t> | <li>Added urn:ietf:params:capport:unrestricted URN.</li> | |||
</list></t> | <li>Noted that the DHCPv4 Option Code changed from 160 to 114.</li> | |||
</ol> | ||||
</section> | </section> | |||
<section anchor="exp106" numbered="true" toc="default"> | ||||
<name>Observations from IETF 106 Network Experiment</name> | ||||
<section anchor="diff7710" title="Changes from RFC 7710"> | <t>During IETF 106 in Singapore, an <eref | |||
<t>This document incorporates the following changes from <xref | target="https://tickets.meeting.ietf.org/wiki/IETF106network#Experiments"> | |||
target="RFC7710"/>.</t> | experiment</eref> | |||
enabling clients compatible with the Captive Portal API to discover a | ||||
<t><list style="numbers"> | venue-info-url (see <eref | |||
<t>Clarify that IP string literals are NOT RECOMMENDED.</t> | target="https://tickets.meeting.ietf.org/wiki/CAPPORT"> experiment | |||
description</eref> for more detail) revealed that some Polycom devices | ||||
<t>Clarify that the option URI MUST be that of the captive portal | on the same network made use of DHCPv4 option code 160 for <eref | |||
API endpoint.</t> | target="https://community.polycom.com/t5/VoIP-SIP-Phones/DHCP-Standardizat | |||
ion-160-vs-66/td-p/72577">other | ||||
<t>Clarify that captive portals MAY do content negotiation.</t> | purposes</eref>.</t> | |||
<t>The presence of DHCPv4 Option code 160 holding a value indicating the | ||||
<t>Added text about Captive Portal API URI precedence in the event | Captive Portal API URL caused these devices to not function as desired. | |||
of a network configuration error.</t> | For this reason, IANA has deprecated option code 160 and | |||
allocated a different value to be used for the Captive Portal API URL.</t> | ||||
<t>Added urn:ietf:params:capport:unrestricted URN.</t> | ||||
<t>Notes that the DHCPv4 Option Code changed from 160 to 114.</t> | ||||
</list></t> | ||||
</section> | </section> | |||
<section anchor="exp106" | <section numbered="false" toc="default"> | |||
title="Observations From IETF 106 Network Experiment"> | <name>Acknowledgements</name> | |||
<t>During IETF 106 in Singapore an <eref | ||||
target="https://tickets.meeting.ietf.org/wiki/IETF106network#Experiments | ||||
" | ||||
>experiment</eref> enabling Captive Portal API compatible clients to | ||||
discover a venue-info-url (see <eref | ||||
target="https://tickets.meeting.ietf.org/wiki/CAPPORT"> | ||||
experiment description</eref> for more detail) revealed that some | ||||
Polycom devices on the same network made use of DHCPv4 option code 160 | ||||
for <eref | ||||
target="https://community.polycom.com/t5/VoIP-SIP-Phones/DHCP-Standardiz | ||||
ation-160-vs-66/td-p/72577" | ||||
>other purposes</eref>.</t> | ||||
<t>The presence of DHCPv4 Option code 160 holding a value indicating the | <t>This document is a -bis of RFC 7710. Thanks to all of the original | |||
Captive Portal API URL caused these devices to not function as desired. | authors (<contact fullname="Warren Kumari"/>, <contact fullname="Olafur | |||
For this reason, this document requests IANA deprecate option code 160 and | Gudmundsson"/>, <contact fullname="Paul Ebersman"/>, and <contact fullname | |||
reallocate different value to be used for the Captive Portal API URL.</t> | ="Steve Sheng"/>) | |||
and original contributors.</t> | ||||
<t>Also thanks to the CAPPORT WG for all of the discussion and | ||||
improvements, including contributions and review from <contact fullname="J | ||||
oe Clarke"/>, | ||||
<contact fullname="Lorenzo Colitti"/>, <contact fullname="Dave | ||||
Dolson"/>, <contact fullname="Hans Kuhn"/>, <contact fullname="Kyle | ||||
Larose"/>, <contact fullname="Clemens Schimpe"/>, | ||||
<contact fullname="Martin Thomson"/>, <contact fullname="Michael Richardso | ||||
n"/>, | ||||
<contact fullname="Remi Nguyen Van"/>, <contact fullname="Subash | ||||
Tirupachur Comerica"/>, <contact fullname="Bernie Volz"/>, | ||||
and <contact fullname="Tommy Pauly"/>.</t> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 95 change blocks. | ||||
347 lines changed or deleted | 402 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |