draft-ietf-dmm-ondemand-mobility-18.txt | rfc8653.txt | |||
---|---|---|---|---|
DMM Working Group A. Yegin | Internet Engineering Task Force (IETF) A. Yegin | |||
Internet-Draft Actility | Request for Comments: 8653 Actility | |||
Intended status: Informational D. Moses | Category: Informational D. Moses | |||
Expires: January 31, 2020 Intel | ISSN: 2070-1721 Intel | |||
S. Jeon | S. Jeon | |||
Sungkyunkwan University | Sungkyunkwan University | |||
July 30, 2019 | October 2019 | |||
On Demand Mobility Management | On-Demand Mobility Management | |||
draft-ietf-dmm-ondemand-mobility-18 | ||||
Abstract | Abstract | |||
Applications differ with respect to whether they need session | Applications differ with respect to whether they need session | |||
continuity and/or IP address reachability. The network providing the | continuity and/or IP address reachability. The network providing the | |||
same type of service to any mobile host and any application running | same type of service to any mobile host and any application running | |||
on the host yields inefficiencies, as described in [RFC7333]. This | on the host yields inefficiencies, as described in RFC 7333. This | |||
document defines a new concep of enabling applications to influence | document defines a new concept of enabling applications to influence | |||
the network's mobility services (session continuity and/or IP address | the network's mobility services (session continuity and/or IP address | |||
reachability) on a per-Socket basis, and suggests extensions to the | reachability) on a per-socket basis, and suggests extensions to the | |||
networking stack's API to accomodate this concept. | networking stack's API to accommodate this concept. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
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 https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are candidates for any level of Internet | ||||
Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on January 31, 2020. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8653. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Notational Conventions . . . . . . . . . . . . . . . . . . . 4 | 2. Notational Conventions | |||
3. Solution . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Solution | |||
3.1. High-level Description . . . . . . . . . . . . . . . . . 4 | 3.1. High-Level Description | |||
3.2. Types of IP Addresses . . . . . . . . . . . . . . . . . . 5 | 3.2. Types of IP Addresses | |||
3.3. Granularity of Selection . . . . . . . . . . . . . . . . 6 | 3.3. Granularity of Selection | |||
3.4. On Demand Nature . . . . . . . . . . . . . . . . . . . . 6 | 3.4. On-Demand Nature | |||
4. Backwards Compatibility Considerations . . . . . . . . . . . 7 | 4. Backwards Compatibility Considerations | |||
4.1. Applications . . . . . . . . . . . . . . . . . . . . . . 8 | 4.1. Applications | |||
4.2. IP Stack in the Mobile Host . . . . . . . . . . . . . . . 8 | 4.2. IP Stack in the Mobile Host | |||
4.3. Network Infrastructure . . . . . . . . . . . . . . . . . 8 | 4.3. Network Infrastructure | |||
4.4. Merging this work with RFC5014 . . . . . . . . . . . . . 8 | 4.4. Merging this work with RFC 5014 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | 5. Security Considerations | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 6. IANA Considerations | |||
7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 10 | 7. References | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 7.1. Normative References | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 7.2. Informative References | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 10 | Appendix A. Conveying the Desired Address Type | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 11 | Acknowledgements | |||
Appendix A. Conveying the Desired Address Type . . . . . . . . . 11 | Contributors | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
In the context of Mobile IP [RFC5563][RFC6275][RFC5213][RFC5944], the | In the context of Mobile IP [RFC5563] [RFC6275] [RFC5213] [RFC5944], | |||
following two attributes are defined for IP service provided to | the following two attributes are defined for IP service provided to | |||
mobile hosts: | mobile hosts: | |||
- Session Continuity | Session Continuity | |||
The ability to maintain an ongoing transport interaction by | ||||
The ability to maintain an ongoing transport interaction by keeping | keeping the same local endpoint IP address throughout the lifetime | |||
the same local end-point IP address throughout the life-time of the | of the IP socket despite the mobile host changing its point of | |||
IP socket despite the mobile host changing its point of attachment | attachment within the IP network topology. The IP address of the | |||
within the IP network topology. The IP address of the host may | host may change after closing the IP socket and before opening a | |||
change after closing the IP socket and before opening a new one, but | new one, but that does not jeopardize the ability of applications | |||
that does not jeopardize the ability of applications using these IP | using these IP sockets to work flawlessly. Session continuity is | |||
sockets to work flawlessly. Session continuity is essential for | essential for mobile hosts to maintain ongoing flows without any | |||
mobile hosts to maintain ongoing flows without any interruption. | interruption. | |||
- IP Address Reachability | ||||
The ability to maintain the same IP address for an extended period of | IP Address Reachability | |||
time. The IP address stays the same across independent sessions, and | The ability to maintain the same IP address for an extended period | |||
even in the absence of any session. The IP address may be published | of time. The IP address stays the same across independent | |||
in a long-term registry (e.g., DNS), and is made available for | sessions, even in the absence of any session. The IP address may | |||
serving incoming (e.g., TCP) connections. IP address reachability is | be published in a long-term registry (e.g., DNS) and is made | |||
essential for mobile hosts to use specific/published IP addresses. | available for serving incoming (e.g., TCP) connections. IP | |||
address reachability is essential for mobile hosts to use | ||||
specific/published IP addresses. | ||||
Mobile IP is designed to provide both session continuity and IP | Mobile IP is designed to provide both session continuity and IP | |||
address reachability to mobile hosts. Architectures utilizing these | address reachability to mobile hosts. Architectures using these | |||
protocols (e.g., 3GPP, 3GPP2, WIMAX) ensure that any mobile host | protocols (e.g., 3GPP, 3GPP2, WiMAX) ensure that any mobile host | |||
attached to the compliant networks can enjoy these benefits. Any | attached to a compliant network can enjoy these benefits. Any | |||
application running on these mobile hosts is subjected to the same | application running on these mobile hosts is subjected to the same | |||
treatment with respect to session continuity and IP address | treatment with respect to session continuity and IP address | |||
reachability. | reachability. | |||
Achieving session continuity and IP address reachability with Mobile | Achieving session continuity and IP address reachability with Mobile | |||
IP incurs some cost. Mobile IP protocol forces the mobile host's IP | IP incurs some cost. Mobile IP forces the mobile host's IP traffic | |||
traffic to traverse a centrally-located router (Home Agent, HA), | to traverse a centrally located router (Home Agent, HA), which incurs | |||
which incurs additional transmission latency and use of additional | additional transmission latency and use of additional network | |||
network resources, adds to the network CAPEX and OPEX, and decreases | resources, adds to the network's operating and capital expenditures, | |||
the reliability of the network due to the introduction of a single | and decreases the reliability of the network due to the introduction | |||
point of failure [RFC7333]. Therefore, session continuity and IP | of a single point of failure [RFC7333]. Therefore, session | |||
address reachability SHOULD be provided only when necessary. | continuity and IP address reachability SHOULD be provided only when | |||
necessary. | ||||
In reality not every application may need these benefits. IP address | In reality, not every application may need these benefits. IP | |||
reachability is required for applications running as servers (e.g., a | address reachability is required for applications running as servers | |||
web server running on the mobile host). But, a typical client | (e.g., a web server running on the mobile host), but a typical client | |||
application (e.g., web browser) does not necessarily require IP | application (e.g., web browser) does not necessarily require IP | |||
address reachability. Similarly, session continuity is not required | address reachability. Similarly, session continuity is not required | |||
for all types of applications either. Applications performing brief | for all types of applications either. Applications performing brief | |||
communication (e.g., text messaging) can survive without having | communication (e.g., text messaging) can survive without having | |||
session continuity support. | session continuity support. | |||
Furthermore, when an application needs session continuity, it may be | Furthermore, when an application needs session continuity, it may be | |||
able to satisfy that need by using a solution above the IP layer, | able to satisfy that need by using a solution above the IP layer, | |||
such as MPTCP [RFC6824], SIP mobility [RFC3261], or an application- | such as Multipath TCP [RFC6824], SIP mobility [RFC3261], or an | |||
layer mobility solution. These higher-layer solutions are not | application-layer mobility solution. These higher-layer solutions | |||
subject to the same issues that arise with the use of Mobile IP since | are not subject to the same issues that arise with the use of Mobile | |||
they can utilize the most direct data path between the end-points. | IP since they can use the most direct data path between the | |||
But, if Mobile IP is being applied to the mobile host, the higher- | endpoints. But, if Mobile IP is being applied to the mobile host, | |||
layer protocols are rendered useless because their operation is | the higher-layer protocols are rendered useless because their | |||
inhibited by Mobile IP. Since Mobile IP ensures that the IP address | operation is inhibited by Mobile IP. Since Mobile IP ensures that | |||
of the mobile host remains fixed (despite the location and movement | the IP address of the mobile host remains fixed (despite the location | |||
of the mobile host), the higher-layer protocols never detect the IP- | and movement of the mobile host), the higher-layer protocols never | |||
layer change and never engage in mobility management. | detect the IP-layer change and never engage in mobility management. | |||
This document proposes a solution for applications running on mobile | This document proposes a solution for applications running on mobile | |||
hosts to indicate when establishing the network connection ('on | hosts to indicate when establishing the network connection ('on | |||
demand') whether they need session continuity or IP address | demand') whether they need session continuity or IP address | |||
reachability. The network protocol stack on the mobile host, in | reachability. The network protocol stack on the mobile host, in | |||
conjunction with the network infrastructure, provides the required | conjunction with the network infrastructure, provides the required | |||
type of service. It is for the benefit of both the users and the | type of service. It is for the benefit of both the users and the | |||
network operators not to engage an extra level of service unless it | network operators not to engage an extra level of service unless it | |||
is absolutely necessary. It is expected that applications and | is absolutely necessary. It is expected that applications and | |||
networks compliant with this specification will utilize this solution | networks compliant with this specification will utilize this solution | |||
to use network resources more efficiently. | to use network resources more efficiently. | |||
2. Notational Conventions | 2. Notational Conventions | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 , [RFC2119] [RFC8174] when, they appear in all capitals, as shown | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
here. | capitals, as shown here. | |||
3. Solution | 3. Solution | |||
3.1. High-level Description | 3.1. High-Level Description | |||
Enabling applications to indicate their mobility service requirements | Enabling applications to indicate their mobility service requirements | |||
e.g. session continuity and/or IP address reachability, comprises the | (e.g., session continuity and/or IP address reachability) comprises | |||
following steps: | the following steps: | |||
- The application indicates to the network stack (local to the mobile | 1. The application indicates to the network stack (local to the | |||
host) the desired mobility service. | mobile host) the desired mobility service. | |||
- The network stack assigns a source IP address based on an IP prefix | 2. The network stack assigns a source IP address based on an IP | |||
with the desired services that was previously provided by the | prefix with the desired services that was previously provided by | |||
network. If such an IP prefix is not available, the network stack | the network. If such an IP prefix is not available, the network | |||
performs the additional steps below. | stack performs the additional steps below. | |||
- The network stack sends a request to the network for a new source | 3. The network stack sends a request to the network for a new source | |||
IP prefix that is associated with the desired mobility service. | IP prefix that is associated with the desired mobility service. | |||
- The network responds with the suitable allocated source IP prefix | 4. The network responds with the suitable allocated source IP prefix | |||
(or responds with a failure indication). | (or responds with a failure indication). | |||
- If the suitable source IP prefix was allocates, the network stack | 5. If the suitable source IP prefix was allocated, the network stack | |||
constructs a source IP address and provides it to the application. | constructs a source IP address and provides it to the | |||
application. | ||||
This document specifies the new address types associated with | This document specifies the new address types associated with | |||
mobility services and details the interaction between the | mobility services and details the interaction between the | |||
applications and the network stack steps. It uses the Socket | applications and the network stack steps. It uses the socket | |||
interface as an example for an API between applications and the | interface as an example for an API between applications and the | |||
network stack. Other steps are outside the scope of this document. | network stack. Other steps are outside the scope of this document. | |||
3.2. Types of IP Addresses | 3.2. Types of IP Addresses | |||
Four types of IP addresses are defined with respect to mobility | Four types of IP addresses are defined with respect to mobility | |||
management. | management: | |||
- Fixed IP Address | ||||
A Fixed IP address is an address with a guarantee to be valid for a | ||||
very long time, regardless of whether it is being used in any packet | ||||
to/from the mobile host, or whether or not the mobile host is | ||||
connected to the network, or whether it moves from one point-of- | ||||
attachment to another (with a different IP prefix) while it is | ||||
connected. | ||||
Fixed IP addresses are required by applications that need both | ||||
session continuity and IP address reachability. | ||||
- Session-lasting IP Address | ||||
A session-lasting IP address is an address with a guarantee to be | Fixed IP address | |||
valid throughout the life-time of the socket(s) for which it was | A Fixed IP address is an address guaranteed to be valid for a very | |||
requested. It is guaranteed to be valid even after the mobile host | long time, regardless of whether it is being used in any packet | |||
had moved from one point-of-attachment to another (with a different | to/from the mobile host, or whether or not the mobile host is | |||
IP prefix). | connected to the network, or whether it moves from one point of | |||
attachment to another (with a different IP prefix) while it is | ||||
connected. | ||||
Session-lasting IP addresses are required by applications that need | Fixed IP addresses are required by applications that need both | |||
session continuity but do not need IP address reachability. | session continuity and IP address reachability. | |||
- Non-persistent IP Address | Session-Lasting IP address | |||
A Session-Lasting IP address is an address guaranteed to be valid | ||||
for the lifetime of the socket(s) for which it was requested. It | ||||
is guaranteed to be valid even after the mobile host has moved | ||||
from one point of attachment to another (with a different IP | ||||
prefix). | ||||
This type of IP address has no guarantee to exist after a mobile host | Session-Lasting IP addresses are required by applications that | |||
moves from one point-of-attachment to another, and therefore, no | need session continuity but do not need IP address reachability. | |||
session continuity nor IP address reachability are provided. The IP | ||||
address is created from an IP prefix that is obtained from the | ||||
serving IP gateway and is not maintained across gateway changes. In | ||||
other words, the IP prefix may be released and replaced by a new one | ||||
when the IP gateway changes due to the movement of the mobile host | ||||
forcing the creation of a new source IP address with the updated | ||||
allocated IP prefix. | ||||
- Graceful Replacement IP Address | Nonpersistent IP address | |||
This type of IP address is not guaranteed to exist after a mobile | ||||
host moves from one point of attachment to another; therefore, no | ||||
session continuity nor IP address reachability are provided. The | ||||
IP address is created from an IP prefix that is obtained from the | ||||
serving IP gateway and is not maintained across gateway changes. | ||||
In other words, the IP prefix may be released and replaced by a | ||||
new one when the IP gateway changes due to the movement of the | ||||
mobile host forcing the creation of a new source IP address with | ||||
the updated allocated IP prefix. | ||||
In some cases, the network cannot guarantee the validity of the | Graceful-Replacement IP address | |||
provided IP prefix throughout the duration of the opened socket, but | In some cases, the network cannot guarantee the validity of the | |||
can provide a limited graceful period of time in which both the | provided IP prefix throughout the duration of the opened socket, | |||
original IP prefix and a new one are valid. This enables the | but can provide a limited graceful period of time in which both | |||
application some flexibility in the transition from the existing | the original IP prefix and a new one are valid. This enables the | |||
source IP address to the new one. | application some flexibility in the transition from the existing | |||
source IP address to the new one. | ||||
This gracefulness is still better than the non-persistence type of | This gracefulness is still better than the nonpersistence type of | |||
address for applications that can handle a change in their source IP | address for applications that can handle a change in their source | |||
address but require that extra flexibility. | IP address but require that extra flexibility. | |||
Applications running as servers at a published IP address require a | Applications running as servers at a published IP address require a | |||
Fixed IP Address. Long-standing applications (e.g., an SSH session) | Fixed IP address. Long-standing applications (e.g., an SSH session) | |||
may also require this type of address. Enterprise applications that | may also require this type of address. Enterprise applications that | |||
connect to an enterprise network via virtual LAN require a Fixed IP | connect to an enterprise network via virtual LAN require a Fixed IP | |||
Address. | address. | |||
Applications with short-lived transient sessions can use Session- | Applications with short-lived transient sessions (e.g., web browsers) | |||
lasting IP Addresses. For example: Web browsers. | can use Session-Lasting IP addresses. | |||
Applications with very short sessions, such as DNS clients and | Applications with very short sessions, such as DNS clients and | |||
instant messengers, can utilize Non-persistent IP Addresses. Even | instant messengers, can use Nonpersistent IP addresses. Even though | |||
though they could very well use Fixed or Session-lasting IP | they could very well use Fixed or Session-Lasting IP addresses, the | |||
Addresses, the transmission latency would be minimized when a Non- | transmission latency would be minimized when a Nonpersistent IP | |||
persistent IP Addresses are used. | address is used. | |||
Applications that can tolerate a short interruption in connectivity | Applications that can tolerate a short interruption in connectivity | |||
can use the Graceful-replacement IP addresses. For example, a | can use the Graceful-Replacement IP addresses, for example, a | |||
streaming client that has buffering capabilities. | streaming client that has buffering capabilities. | |||
3.3. Granularity of Selection | 3.3. Granularity of Selection | |||
IP address type selection is made on a per-socket granularity. | IP address type selection is made on a per-socket granularity. | |||
Different parts of the same application may have different needs. | Different parts of the same application may have different needs. | |||
For example, the control-plane of an application may require a Fixed | For example, the control plane of an application may require a Fixed | |||
IP Address in order to stay reachable, whereas the data-plane of the | IP address in order to stay reachable, whereas the data plane of the | |||
same application may be satisfied with a Session-lasting IP Address. | same application may be satisfied with a Session-Lasting IP address. | |||
3.4. On Demand Nature | 3.4. On-Demand Nature | |||
At any point in time, a mobile host may have a combination of IP | At any point in time, a mobile host may have a combination of IP | |||
addresses configured. Zero or more Fixed, zero or more Session- | addresses configured. Zero or more Fixed, zero or more Session- | |||
lasting, zero or more Non-persistent and zero or more Graceful- | Lasting, zero or more Nonpersistent, and zero or more Graceful- | |||
Replacement IP addresses may be configured by the IP stack of the | Replacement IP addresses may be configured by the IP stack of the | |||
host. The combination may be as a result of the host policy, | host. The combination may be a result of the host policy, | |||
application demand, or a mix of the two. | application demand, or a mix of the two. | |||
When an application requires a specific type of IP address and such | When an application requires a specific type of IP address, and such | |||
an address is not already configured on the host, the IP stack SHALL | an address is not already configured on the host, the IP stack SHALL | |||
attempt to configure one. For example, a host may not always have a | attempt to configure one. For example, a host may not always have a | |||
Session-lasting IP address available. When an application requests | Session-Lasting IP address available. When an application requests | |||
one, the IP stack SHALL make an attempt to configure one by issuing a | one, the IP stack SHALL make an attempt to configure one by issuing a | |||
request to the network. If the operation fails, the IP stack SHALL | request to the network. If the operation fails, the IP stack SHALL | |||
fail the associated socket request and return an error. If | fail the associated socket request and return an error. If | |||
successful, a Session-lasting IP Address gets configured on the | successful, a Session-Lasting IP address is configured on the mobile | |||
mobile host. If another socket requests a Session-lasting IP address | host. If another socket requests a Session-Lasting IP address at a | |||
at a later time, the same IP address may be served to that socket as | later time, the same IP address may be served to that socket as well. | |||
well. When the last socket using the same configured IP address is | When the last socket using the same configured IP address is closed, | |||
closed, the IP address may be released or kept for future | the IP address may be released, or it may be kept for applications | |||
applications that may be launched and require a Session-lasting IP | requiring a Session-Lasting IP address that may be launched in the | |||
address. | future. | |||
In some cases it might be preferable for the mobile host to request a | In some cases, it might be preferable for the mobile host to request | |||
new Session-lasting IP address for a new opening of an IP socket | a new Session-Lasting IP address for a new opening of an IP socket | |||
(even though one was already assigned to the mobile host by the | (even though one was already assigned to the mobile host by the | |||
network and might be in use in a different, already active IP | network and might be in use in a different, already active IP | |||
sockets). It is outside the scope of this specification to define | socket). It is outside the scope of this specification to define | |||
criteria for choosing to use available addresses or choosing to | criteria for choosing to use available addresses or choosing to | |||
request new ones. It supports both alternatives (and any | request new ones. It supports both alternatives (and any | |||
combination). | combination). | |||
It is outside the scope of this specification to define how the host | It is outside the scope of this specification to define how the host | |||
requests a specific type of prefix and how the network indicates the | requests a specific type of prefix and how the network indicates the | |||
type of prefix in its advertisement or in its reply to a request. | type of prefix in its advertisement or in its reply to a request. | |||
The following are matters of policy, which may be dictated by the | The following are matters of policy, which may be dictated by the | |||
host itself, the network operator, or the system architecture | host itself, the network operator, or the system architecture | |||
standard: | standard: | |||
- The initial set of IP addresses configured on the host at boot | * The initial set of IP addresses configured on the host at boot | |||
time. | time | |||
- Permission to grant various types of IP addresses to a requesting | * Permission to grant various types of IP addresses to a requesting | |||
application. | application | |||
- Determination of a default address type when an application does | * Determination of a default address type when an application does | |||
not make any explicit indication, whether it already supports the | not explicitly indicate whether it supports the required API or is | |||
required API or it is just a legacy application. | a legacy application | |||
4. Backwards Compatibility Considerations | 4. Backwards Compatibility Considerations | |||
Backwards compatibility support is REQUIRED by the following 3 types | Backwards compatibility support is REQUIRED by the following three | |||
of entities: | types of entities: | |||
- The Applications on the mobile host | * The applications on the mobile host | |||
- The IP stack in the mobile host | * The IP stack in the mobile host | |||
- The network infrastructure | * The network infrastructure | |||
4.1. Applications | 4.1. Applications | |||
Legacy applications that do not support the On-Demand functionality | Legacy applications that do not support the On-Demand functionality | |||
will use the legacy API and will not be able to take advantage of the | will use the legacy API and will not be able to take advantage of the | |||
On-Demand Mobility feature. | On-Demand Mobility feature. | |||
Applications using the new On-Demand functionality should be aware | Applications using the new On-Demand functionality should be aware | |||
that they may be executed in legacy environments that do not support | that they may be executed in legacy environments that do not support | |||
it. Such environments may include a legacy IP stack on the mobile | it. Such environments may include a legacy IP stack on the mobile | |||
host, legacy network infrastructure, or both. In either case, the | host, legacy network infrastructure, or both. In either case, the | |||
API will return an error code and the invoking applications may just | API will return an error code, and the invoking application may just | |||
give up and use legacy calls. | give up and use legacy calls. | |||
4.2. IP Stack in the Mobile Host | 4.2. IP Stack in the Mobile Host | |||
New IP stacks (that implement On Demand functionality) MUST continue | New IP stacks (that implement On-Demand functionality) MUST continue | |||
to support all legacy operations. If an application does not use On- | to support all legacy operations. If an application does not use On- | |||
Demand functionality, the IP stack MUST respond in a legacy manner. | Demand functionality, the IP stack MUST respond in a legacy manner. | |||
If the network infrastructure supports On-Demand functionality, the | If the network infrastructure supports On-Demand functionality, the | |||
IP stack SHOULD follow the application request: If the application | IP stack SHOULD follow the application request: If the application | |||
requests a specific address type, the stack SHOULD forward this | requests a specific address type, the stack SHOULD forward this | |||
request to the network. If the application does not request an | request to the network. If the application does not request an | |||
address type, the IP stack MUST NOT request an address type and leave | address type, the IP stack MUST NOT request an address type. | |||
it to the network's default behavior to choose the type of the | Instead, the network will choose the type of allocated IP prefix. | |||
allocated IP prefix. If an IP prefix was already allocated to the | How the network selects the type of allocated IP prefix is outside | |||
host, the IP stack uses it and may not request a new one from the | the scope of this document. If an IP prefix was already allocated to | |||
the host, the IP stack uses it and may not request a new one from the | ||||
network. | network. | |||
4.3. Network Infrastructure | 4.3. Network Infrastructure | |||
The network infrastructure may or may not support the On-Demand | The network infrastructure may or may not support the On-Demand | |||
functionality. How the IP stack on the host and the network | functionality. How the IP stack on the host and the network | |||
infrastructure behave in case of a compatibility issue is outside the | infrastructure behave in case of a compatibility issue is outside the | |||
scope of this API specification. | scope of this API specification. | |||
4.4. Merging this work with RFC5014 | 4.4. Merging this work with RFC 5014 | |||
[RFC5014] defines new flags that may be used with setsockopt() to | [RFC5014] defines new flags that may be used with setsockopt() to | |||
influence source IP address selection for a socket. The list of | influence source IP address selection for a socket. The list of | |||
flags include: source home address, care-of address, temporary | flags include the following: source home address, care-of address, | |||
address, public address CGA (Cryptographically Created Address) and | temporary address, public address CGA (Cryptographically Created | |||
non-CGA. When applications require session continuity service, they | Address), and non-CGA. When applications require session continuity | |||
SHOULD NOT set the flags specified in [RFC5014]. | service, they SHOULD NOT set the flags specified in [RFC5014]. | |||
However, if an application erroneously performs a combination of (1) | However, if an application erroneously performs a combination of (1) | |||
Use setsockopt() to set a specific option (using one of the flags | using setsockopt() to set a specific option (using one of the flags | |||
specified in [RFC5014]) and (2) Selects a source IP address type, the | specified in [RFC5014]) and (2) selecting a source IP address type, | |||
IP stack will fulfill the request specified by (2) and ignore the | the IP stack will fulfill the request specified by (2) and ignore the | |||
flags set by (1). | flags set by (1). | |||
5. Security Considerations | 5. Security Considerations | |||
The different service types (session continuity types and address | The different service types (session continuity types and address | |||
reachability) associated with the allocated IP address types, may be | reachability) associated with the allocated IP address types may be | |||
associated with different costs. The cost to the operator for | associated with different costs: the cost to the operator for | |||
enabling a type of service, and the cost to applications using a | enabling a type of service, and the cost to applications using a | |||
selected service. A malicious application may use these to generate | selected service. A malicious application may use these to | |||
extra billing of a mobile subscriber, and/or impose costly services | indirectly generate extra billing of a mobile subscriber, and/or | |||
on the mobile operator. When costly services are limited, malicious | impose costly services on the mobile operator. When expensive | |||
applications may exhaust them, preventing other applications on the | services are limited, malicious applications may exhaust them, | |||
same mobile host from being able to use them. | preventing other applications on the same mobile host from being able | |||
to use them. | ||||
Mobile hosts that enables such service options, should provide | Mobile hosts that enable such service options should provide | |||
capabilities for ensuring that only authorized applications can use | capabilities for ensuring that only authorized applications can use | |||
the costly (or limited) service types. | the expensive (or limited) service types. | |||
The ability to select service types requires the exchange of the | The ability to select service types requires the exchange of the | |||
association of source IP prefixes and their corresponding service | association of source IP prefixes and their corresponding service | |||
types, between the mobile host and mobile network. Exposing these | types, between the mobile host and mobile network. Exposing these | |||
associations may provide information to passive attackers even if the | associations may provide information to passive attackers even if the | |||
traffic that is used with these addressed is encrypted. | traffic that is used with these addresses is encrypted. | |||
To avoid profiling an application according to the type of IP | To avoid profiling an application according to the type of IP | |||
addresses, it is expected that prefixes provided by the mobile | address, it is expected that prefixes provided by the mobile operator | |||
operator are associated to various type of addresses over time. As a | are associated with various types of addresses over time. As a | |||
result, the type of address could not be associated to the prefix, | result, the type of address cannot be associated with the prefix, | |||
making application profiling based on the type of address harder. | making application profiling based on the type of address more | |||
difficult. | ||||
The application or the OS should ensure that IP addresses regularly | The application or the OS should ensure that IP addresses regularly | |||
change to limit IP tracking by a passive observer. The application | change to limit IP tracking by a passive observer. The application | |||
should regularly set the On Demand flag. The application should be | should regularly set the On-Demand flag. The application should be | |||
able to ensure that session lasting IP addresses are regularly | able to ensure that Session-Lasting IP addresses are regularly | |||
changed by setting a lifetime for example handled by the application. | changed by setting a lifetime, for example, handled by the | |||
In addition, the application should consider the use of graceful | application. In addition, the application should consider the use of | |||
replacement IP addresses. | Graceful-Replacement IP addresses. | |||
Similarly, the OS may also associated IP addresses with a lifetime. | Similarly, the OS may also associate IP addresses with a lifetime. | |||
Upon receiving a request for a given type of IP address, after some | Upon receiving a request for a given type of IP address, after some | |||
time, the OS should request a new address to the network even if it | time, the OS should request a new address to the network even if it | |||
already has one IP address available with the requested type. This | already has one IP address available with the requested type. This | |||
includes any type of IP address. IP addresses of type graceful | includes any type of IP address. IP addresses of type Graceful- | |||
replacement or non persistent should be regularly renewed by the OS. | Replacement or nonpersistent should be regularly renewed by the OS. | |||
The lifetime of an IP address may be expressed in number of seconds | The lifetime of an IP address may be expressed in number of seconds | |||
or in number of bytes sent through this IP address. | or in number of bytes sent through this IP address. | |||
6. IANA Considerations | 6. IANA Considerations | |||
This document has no IANA considerations. | This document has no IANA actions. | |||
7. Contributors | ||||
This document was merged with [I-D.sijeon-dmm-use-cases-api-source]. | ||||
We would like to acknowledge the contribution of the following people | ||||
to that document as well: | ||||
Sergio Figueiredo | ||||
Altran Research, France | ||||
Email: sergio.figueiredo@altran.com | ||||
Younghan Kim | ||||
Soongsil University, Korea | ||||
Email: younghak@ssu.ac.kr | ||||
John Kaippallimalil | ||||
Huawei, USA | ||||
Email: john.kaippallimalil@huawei.com | ||||
8. Acknowledgements | ||||
We would like to thank Wu-chi Feng, Alexandru Petrescu, Jouni | ||||
Korhonen, Sri Gundavelli, Dave Dolson Lorenzo Colitti and Daniel | ||||
Migault for their valuable comments and suggestions on this work. | ||||
9. References | 7. References | |||
9.1. Normative References | 7.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC5014] Nordmark, E., Chakrabarti, S., and J. Laganier, "IPv6 | [RFC5014] Nordmark, E., Chakrabarti, S., and J. Laganier, "IPv6 | |||
Socket API for Source Address Selection", RFC 5014, | Socket API for Source Address Selection", RFC 5014, | |||
DOI 10.17487/RFC5014, September 2007, | DOI 10.17487/RFC5014, September 2007, | |||
<https://www.rfc-editor.org/info/rfc5014>. | <https://www.rfc-editor.org/info/rfc5014>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
9.2. Informative References | 7.2. Informative References | |||
[I-D.sijeon-dmm-use-cases-api-source] | [API-EXT] Jeon, S., Figueiredo, S., Kim, Y., and J. Kaippallimalil, | |||
Jeon, S., Figueiredo, S., Kim, Y., and J. Kaippallimalil, | ||||
"Use Cases and API Extension for Source IP Address | "Use Cases and API Extension for Source IP Address | |||
Selection", draft-sijeon-dmm-use-cases-api-source-07 (work | Selection", Work in Progress, Internet-Draft, draft- | |||
in progress), September 2017. | sijeon-dmm-use-cases-api-source-07, 10 September 2017, | |||
<https://tools.ietf.org/html/draft-sijeon-dmm-use-cases- | ||||
api-source-07>. | ||||
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | |||
A., Peterson, J., Sparks, R., Handley, M., and E. | A., Peterson, J., Sparks, R., Handley, M., and E. | |||
Schooler, "SIP: Session Initiation Protocol", RFC 3261, | Schooler, "SIP: Session Initiation Protocol", RFC 3261, | |||
DOI 10.17487/RFC3261, June 2002, | DOI 10.17487/RFC3261, June 2002, | |||
<https://www.rfc-editor.org/info/rfc3261>. | <https://www.rfc-editor.org/info/rfc3261>. | |||
[RFC5213] Gundavelli, S., Ed., Leung, K., Devarapalli, V., | [RFC5213] Gundavelli, S., Ed., Leung, K., Devarapalli, V., | |||
Chowdhury, K., and B. Patil, "Proxy Mobile IPv6", | Chowdhury, K., and B. Patil, "Proxy Mobile IPv6", | |||
RFC 5213, DOI 10.17487/RFC5213, August 2008, | RFC 5213, DOI 10.17487/RFC5213, August 2008, | |||
skipping to change at page 11, line 49 ¶ | skipping to change at line 500 ¶ | |||
Addresses", RFC 6824, DOI 10.17487/RFC6824, January 2013, | Addresses", RFC 6824, DOI 10.17487/RFC6824, January 2013, | |||
<https://www.rfc-editor.org/info/rfc6824>. | <https://www.rfc-editor.org/info/rfc6824>. | |||
[RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J. | [RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J. | |||
Korhonen, "Requirements for Distributed Mobility | Korhonen, "Requirements for Distributed Mobility | |||
Management", RFC 7333, DOI 10.17487/RFC7333, August 2014, | Management", RFC 7333, DOI 10.17487/RFC7333, August 2014, | |||
<https://www.rfc-editor.org/info/rfc7333>. | <https://www.rfc-editor.org/info/rfc7333>. | |||
Appendix A. Conveying the Desired Address Type | Appendix A. Conveying the Desired Address Type | |||
Following are some suggestions of possible extensions to the Socket | The following are some suggestions of possible extensions to the | |||
API for enabling applications to convey their session continuity and | socket API for enabling applications to convey their session | |||
address reachability requirements. | continuity and address reachability requirements. | |||
[RFC5014] introduced the ability of applications to influence the | [RFC5014] introduced the ability of applications to influence the | |||
source address selection with the IPV6_ADDR_PREFERENCE option at the | source address selection with the IPV6_ADDR_PREFERENCE option at the | |||
IPPROTO_IPV6 level. This option is used with setsockopt() and | IPPROTO_IPV6 level. This option is used with setsockopt() and | |||
getsockopt() calls to set/get address selection preferences. | getsockopt() calls to set/get address selection preferences. | |||
One alternative is to extend the defintion of the IPV6_ADDR_REFERENCE | One alternative is to extend the definition of the | |||
opion with flags that express the invoker's desire. An "OnDeman" | IPV6_ADDR_REFERENCE option with flags that express the invoker's | |||
field could contains one of the values: FIXED_IP_ADDRESS, | desire. An "OnDemand" field could contain one of the following | |||
SESSION_LASTING_IP_ADDRESS, NON_PERSISTENT_IP_ADDRESS or | values: FIXED_IP_ADDRESS, SESSION_LASTING_IP_ADDRESS, | |||
GRACEFUL_REPLACEMENT_IP_ADDRESS. | NON_PERSISTENT_IP_ADDRESS, or GRACEFUL_REPLACEMENT_IP_ADDRESS. | |||
Another alternative is to define a new Socket function used by the | Another alternative is to define a new socket function used by the | |||
invoker to convey its desire. This enables the implementation of two | invoker to convey its desire. This enables the implementation of two | |||
behaviors of Socket functions: The existing "setsockotp()" is a | behaviors of socket functions: the existing setsockopt() is a | |||
function that returns after executing, and the new "setsc()" (Set | function that returns after executing, and the new setsc() (Set | |||
Service Contionuity) function that may initaite a request for the | Service Continuity) is a function that may initiate a request for the | |||
desired service, and wait until the network responds with the | desired service, and wait until the network responds with the | |||
allocated resources, before returning to the invoker. | allocated resources, before returning to the invoker. | |||
After obtaining an IP address with the desired behavior the | After obtaining an IP address with the desired behavior, the | |||
application can call the bind() Socket function to associate that | application can call the bind() socket function to associate that | |||
received IP address with the socket. | received IP address with the socket. | |||
Acknowledgements | ||||
We would like to thank Wu-chi Feng, Alexandru Petrescu, Jouni | ||||
Korhonen, Sri Gundavelli, Dave Dolson, Lorenzo Colitti, and Daniel | ||||
Migault for their valuable comments and suggestions on this work. | ||||
Contributors | ||||
This document was merged with "Use Cases and API Extension for Source | ||||
IP Address Selection" [API-EXT]. We would like to acknowledge the | ||||
contribution of the following people to that document as well: | ||||
Sergio Figueiredo | ||||
Altran Research | ||||
France | ||||
Email: sergio.figueiredo@altran.com | ||||
Younghan Kim | ||||
Soongsil University | ||||
Republic of Korea | ||||
Email: younghak@ssu.ac.kr | ||||
John Kaippallimalil | ||||
Huawei | ||||
United States of America | ||||
Email: john.kaippallimalil@huawei.com | ||||
Authors' Addresses | Authors' Addresses | |||
Alper Yegin | Alper Yegin | |||
Actility | Actility | |||
Istanbul | Istanbul/ | |||
Turkey | Turkey | |||
Email: alper.yegin@actility.com | Email: alper.yegin@actility.com | |||
Danny Moses | Danny Moses | |||
Intel Corporation | Intel Corporation | |||
Petah Tikva | Petah Tikva | |||
Israel | Israel | |||
Email: danny.moses@intel.com | Email: danny.moses@intel.com | |||
Seil Jeon | Seil Jeon | |||
Sungkyunkwan University | Republic of Korea | |||
Suwon | Suwon | |||
South Korea | Sungkyunkwan University | |||
Email: seiljeon@skku.edu | Email: seiljeon.ietf@gmail.com | |||
End of changes. 85 change blocks. | ||||
272 lines changed or deleted | 275 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |