Internet Engineering Task Force | K. Larose |
Internet-Draft | D. Dolson |
Intended status: Informational | Sandvine |
Expires: September 10, 2017 | March 9, 2017 |
CAPPORT Architecture
draft-larose-capport-architecture-00
This document aims to document concensus on the CAPPORT architecture. DHCP, ICMP, and an HTTP API are used to provide the solution.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 10, 2017.
Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Problems with captive portals have been described in [I-D.nottingham-capport-problem].
This document standardizes an architecture for implementing captive portals that provides tools for addressing most of those problems.
The architecture also attempts to enable IoT devices, in particular devices without user interfaces, to navigate a captive portal.
The architecture uses the following mechanisms:
The architecture attempts to provide privacy, authentication, and safety mechanisms to the extent possible.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].
Captive Network: A network for which communication outside of it is subject to a captive portal
Captive Portal Enforcement: The device which enforces the captive portal in the captive netowrk
Captive Portal User Equipment: Also known as User Equipment. A device which wants to communicate outside the captive network
The User Equipment is the device that a user desires to communicate with a network. The User Equipment communication is typically restricted by the Captive Portal Enforcement, described in Section 2.4, until site-specific requirements have been met.
A standard for providing a portal URI is described in [RFC7710]. The CAPPORT architecture expects this URI to access the API described in Section 2.3.
Although it is not clear from RFC7710 what protocol should be executed at the specified URI, it may have been assumed to be an HTML page, and hence there may be User Equipment assuming a browser should open this URI. For backwards compatibility, it might be necessary for the server to check Agent-Id when serving the URI.
The User Equipment performs GET at the DHCP-specified URI. The API is implemented at the CAPPORT API Server. The response is a JSON document. The following information should be available in the response document, allowing User Equipment devices to choose the next step:
The CAPPORT API is intended to provide information and a menu of choices to support options for interactive or non-interactive User Equipment.
The CAPPORT API should support TLS for privacy. [Does this API need to be secure, or do we place security at the interfaces it points to?]
The Captive Portal Enforcement component restricts network access to User Equipment according to site-specific policy. Typically User Equipment is denied network access until it has performed some action.
The Captive Portal Enforcement component:
A mechanism to trigger captive portal work-flows in the User Equipment is proposed earlier in [I-D.wkumari-capport-icmp-unreach]. Additionally, the Unreachable message carries a token to prove it is a valid notification.
The Captive Portal Enforcement function is required to send such ICMP messages when disallowed User Equipment attempts to send to the network.
The ICMP messages MUST NOT be sent to the Internet devices. The indications are only sent to the User Equipment.
The User Equipment MUST verify that the token matches the token received earlier via the CAPPORT API. If tokens do not match, the ICMP message MUST be discarded with no further impact. (It MAY be counted.)
The User Equipment does not necessarily deliver the impact of the ICMP message to the application that triggered it. The User Equipment may be able to satisfy the Captive Portal requirements quickly enough that existing transport connections are not impacted.
The following diagram shows the communication between each component.
o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o . CAPTIVE NETWORK . . +---------------+ . . +-------------+ CAPPORT API URI | DHCP Server | . . | | <-------------------------+ +---------------+ . . | User | . . | Equipment | Request Access/Information +--------------------+ . . | | +--------------------------> | CAPPORT API Server | . . +-------------+ +--------------------+ . . ^ | Connection Attempt | . . | +-------------------> +---------------+ Allow/Deny Access . . | | | | . . | ICMP Unreachable | Captive Portal| | . . +----------------------+ | Enforcement | <---+ . . +---------------+ . . | . . To/from external network . . | . . | . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o EXTERNAL NETWORK Figure 1: Captive Portal Architecture Component Diagram
This section describes the general workflow of solutions adhering to the architecture.
User Equipment may attempt to maintain transport connections, leaving it to the application to determine timeouts.
User Equipment may preemptively invoke its captive portal handling infrastructure when receiving the DHCP response indicating that it is behind a captive portal, rather than waiting for the ICMP unreachable message.
This memo includes no request to IANA.
The solution described here assumes that when the User Equipment needs to trust the API server, server authentication will be utilized.
TODO: this document has not specified the authentication mechanism.
It is possible for any user on the Internet to send ICMP packets in an attempt to cause the receiving equipment to go to the captive portal. This has been considered and addressed in the following ways:
The ICMP messaging informs the end-user device it is being held captive. There is no requirement that the device do something about this. Devices may permit users to disable automatic reaction to captive-portal indications. Hence, end-user devices may allow users to manually control captive portal interactions.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. |
[RFC7710] | Kumari, W., Gudmundsson, O., Ebersman, P. and S. Sheng, "Captive-Portal Identification Using DHCP or Router Advertisements (RAs)", RFC 7710, DOI 10.17487/RFC7710, December 2015. |
[I-D.nottingham-capport-problem] | Nottingham, M., "Captive Portals Problem Statement", Internet-Draft draft-nottingham-capport-problem-01, April 2016. |
[I-D.wkumari-capport-icmp-unreach] | Bird, D. and W. Kumari, "Captive Portal ICMP Destination Unreachable", Internet-Draft draft-wkumari-capport-icmp-unreach-01, April 2015. |