draft-ietf-dmm-ondemand-mobility-14.txt | draft-ietf-dmm-ondemand-mobility-15.txt | |||
---|---|---|---|---|
DMM Working Group A. Yegin | DMM Working Group A. Yegin | |||
Internet-Draft Actility | Internet-Draft Actility | |||
Intended status: Informational D. Moses | Intended status: Informational D. Moses | |||
Expires: September 20, 2018 Intel | Expires: January 27, 2019 Intel | |||
K. Kweon | K. Kweon | |||
J. Lee | J. Lee | |||
J. Park | J. Park | |||
Samsung | Samsung | |||
S. Jeon | S. Jeon | |||
Sungkyunkwan University | Sungkyunkwan University | |||
March 19, 2018 | July 26, 2018 | |||
On Demand Mobility Management | On Demand Mobility Management | |||
draft-ietf-dmm-ondemand-mobility-14 | draft-ietf-dmm-ondemand-mobility-15 | |||
Abstract | Abstract | |||
Applications differ with respect to whether they need IP 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. This document describes a | on the host yields inefficiencies. This document describes a | |||
solution for taking the application needs into account by selectively | solution for taking the application needs into account by selectively | |||
providing IP session continuity and IP address reachability on a per- | providing session continuity and IP address reachability on a per- | |||
socket basis. | socket basis. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on September 20, 2018. | This Internet-Draft will expire on January 27, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | |||
skipping to change at page 2, line 21 ¶ | skipping to change at page 2, line 21 ¶ | |||
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 | |||
2. Notational Conventions . . . . . . . . . . . . . . . . . . . 4 | 2. Notational Conventions . . . . . . . . . . . . . . . . . . . 4 | |||
3. Solution . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Solution . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Types of IP Addresses . . . . . . . . . . . . . . . . . . 4 | 3.1. Types of IP Addresses . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Granularity of Selection . . . . . . . . . . . . . . . . 5 | 3.2. Granularity of Selection . . . . . . . . . . . . . . . . 6 | |||
3.3. On Demand Nature . . . . . . . . . . . . . . . . . . . . 6 | 3.3. On Demand Nature . . . . . . . . . . . . . . . . . . . . 6 | |||
3.4. Conveying the Desired Address Type . . . . . . . . . . . 7 | 3.4. Conveying the Desired Address Type . . . . . . . . . . . 7 | |||
4. Usage example . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Usage example . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
5. Backwards Compatibility Considerations . . . . . . . . . . . 10 | 4.1. Pseudo-code example . . . . . . . . . . . . . . . . . . . 8 | |||
5.1. Applications . . . . . . . . . . . . . . . . . . . . . . 10 | 4.2. Message Flow example . . . . . . . . . . . . . . . . . . 10 | |||
5.2. IP Stack in the Mobile Host . . . . . . . . . . . . . . . 10 | 5. Backwards Compatibility Considerations . . . . . . . . . . . 11 | |||
5.3. Network Infrastructure . . . . . . . . . . . . . . . . . 10 | 5.1. Applications . . . . . . . . . . . . . . . . . . . . . . 11 | |||
5.4. Merging this work with RFC5014 . . . . . . . . . . . . . 11 | 5.2. IP Stack in the Mobile Host . . . . . . . . . . . . . . . 12 | |||
6. Summary of New Definitions . . . . . . . . . . . . . . . . . 11 | 5.3. Network Infrastructure . . . . . . . . . . . . . . . . . 12 | |||
6.1. New APIs . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5.4. Merging this work with RFC5014 . . . . . . . . . . . . . 12 | |||
6.2. New Flags . . . . . . . . . . . . . . . . . . . . . . . . 12 | 6. Summary of New Definitions . . . . . . . . . . . . . . . . . 13 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 6.1. New APIs . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 6.2. New Flags . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 13 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 14 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 15 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 15 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | ||||
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], the | |||
following two attributes are defined for IP service provided to | following two attributes are defined for IP service provided to | |||
mobile hosts: | mobile hosts: | |||
IP session continuity: The ability to maintain an ongoing IP session | Session continuity: The ability to maintain an ongoing transport | |||
by keeping the same local end-point IP address throughout the session | interaction by keeping the same local end-point IP address throughout | |||
despite the mobile host changing its point of attachment within the | the life-time of the IP socket despite the mobile host changing its | |||
IP network topology. The IP address of the host may change between | point of attachment within the IP network topology. The IP address | |||
two independent IP sessions, but that does not jeopardize its IP | of the host may change after closing the IP socket and before opening | |||
session continuity. IP session continuity is essential for mobile | a new one, but that does not jeopardize the ability of applications | |||
hosts to maintain ongoing flows without any interruption. | using these IP sockets to work flawlessly. Session continuity is | |||
essential for mobile hosts to maintain ongoing flows without any | ||||
interruption. | ||||
IP address reachability: The ability to maintain the same IP address | IP address reachability: The ability to maintain the same IP address | |||
for an extended period of time. The IP address stays the same across | for an extended period of time. The IP address stays the same across | |||
independent IP sessions, and even in the absence of any IP session. | independent sessions, and even in the absence of any session. The IP | |||
The IP address may be published in a long-term registry (e.g., DNS), | address may be published in a long-term registry (e.g., DNS), and is | |||
and is made available for serving incoming (e.g., TCP) connections. | made available for serving incoming (e.g., TCP) connections. IP | |||
IP address reachability is essential for mobile hosts to use | address reachability is essential for mobile hosts to use specific/ | |||
specific/published IP addresses. | published IP addresses. | |||
Mobile IP is designed to provide both IP 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 utilizing 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 the compliant networks 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 IP session continuity and IP address | treatment with respect to session continuity and IP address | |||
reachability. | reachability. | |||
It should be noted that in reality not every application may need | It should be noted that in reality not every application may need | |||
these benefits. IP address reachability is required for applications | these benefits. IP address reachability is required for applications | |||
running as servers (e.g., a web server running on the mobile host). | running as servers (e.g., a web server running on the mobile host). | |||
But, a typical client application (e.g., web browser) does not | But, a typical client application (e.g., web browser) does not | |||
necessarily require IP address reachability. Similarly, IP session | necessarily require IP address reachability. Similarly, session | |||
continuity is not required for all types of applications either. | continuity is not required for all types of applications either. | |||
Applications performing brief communication (e.g., ping) can survive | Applications performing brief communication (e.g., ping) can survive | |||
without having IP session continuity support. | without having session continuity support. | |||
Achieving IP session continuity and IP address reachability with | Achieving session continuity and IP address reachability with Mobile | |||
Mobile IP incurs some cost. Mobile IP protocol forces the mobile | IP incurs some cost. Mobile IP protocol forces the mobile host's IP | |||
host's IP traffic to traverse a centrally-located router (Home Agent, | traffic to traverse a centrally-located router (Home Agent, HA), | |||
HA), which incurs additional transmission latency and use of | which incurs additional transmission latency and use of additional | |||
additional network resources, adds to the network CAPEX and OPEX, and | network resources, adds to the network CAPEX and OPEX, and decreases | |||
decreases the reliability of the network due to the introduction of a | the reliability of the network due to the introduction of a single | |||
single point of failure [RFC7333]. Therefore, IP session continuity | point of failure [RFC7333]. Therefore, session continuity and IP | |||
and IP address reachability SHOULD be provided only when necessary. | address reachability SHOULD be provided only when necessary. | |||
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 MPTCP [RFC6824], SIP mobility [RFC3261], or an application- | |||
layer mobility solution. These higher-layer solutions are not | layer mobility solution. These higher-layer solutions are not | |||
subject to the same issues that arise with the use of Mobile IP since | subject to the same issues that arise with the use of Mobile IP since | |||
they can utilize the most direct data path between the end-points. | they can utilize the most direct data path between the end-points. | |||
But, if Mobile IP is being applied to the mobile host, the higher- | But, if Mobile IP is being applied to the mobile host, the higher- | |||
layer protocols are rendered useless because their operation is | layer protocols are rendered useless because their operation is | |||
inhibited by Mobile IP. Since Mobile IP ensures that the IP address | inhibited by Mobile IP. Since Mobile IP ensures that the IP address | |||
of the mobile host remains fixed (despite the location and movement | of the mobile host remains fixed (despite the location and movement | |||
of the mobile host), the higher-layer protocols never detect the IP- | of the mobile host), the higher-layer protocols never detect the IP- | |||
layer change and never engage in mobility management. | 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 whether they need IP session continuity or IP | hosts to indicate whether they need session continuity or IP address | |||
address reachability. The network protocol stack on the mobile host, | reachability. The network protocol stack on the mobile host, in | |||
in conjunction with the network infrastructure, provides the required | conjunction with the network infrastructure, provides the required | |||
type of IP 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", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
skipping to change at page 4, line 39 ¶ | skipping to change at page 4, line 42 ¶ | |||
- Fixed IP Address | - Fixed IP Address | |||
A Fixed IP address is an address with a guarantee to be valid for a | 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 | 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 | 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- | connected to the network, or whether it moves from one point-of- | |||
attachment to another (with a different IP prefix) while it is | attachment to another (with a different IP prefix) while it is | |||
connected. | connected. | |||
Fixed IP addresses are required by applications that need both IP | Fixed IP addresses are required by applications that need both | |||
session continuity and IP address reachability. | session continuity and IP address reachability. | |||
- Session-lasting IP Address | - Session-lasting IP Address | |||
A session-lasting IP address is an address with a guarantee to be | A session-lasting IP address is an address with a guarantee to be | |||
valid throughout the IP session(s) for which it was requested. It is | valid throughout the life-time of the socket(s) for which it was | |||
guaranteed to be valid even after the mobile host had moved from one | requested. It is guaranteed to be valid even after the mobile host | |||
point-of-attachment to another (with a different IP prefix). | had moved from one point-of-attachment to another (with a different | |||
IP prefix). | ||||
Session-lasting IP addresses are required by applications that need | Session-lasting IP addresses are required by applications that need | |||
IP session continuity but do not need IP address reachability. | session continuity but do not need IP address reachability. | |||
- Non-persistent IP Address | - Non-persistent IP Address | |||
This type of IP address does not provide IP session continuity nor IP | This type of IP address has no guarantee to exist after a mobile host | |||
address reachability. The IP address is created from an IP prefix | moves from one point-of-attachment to another, and therefore, no | |||
that is obtained from the serving IP gateway and is not maintained | session continuity nor IP address reachability are provided. The IP | |||
across gateway changes. In other words, the IP prefix may be | address is created from an IP prefix that is obtained from the | |||
released and replaced by a new one when the IP gateway changes due to | serving IP gateway and is not maintained across gateway changes. In | |||
the movement of the mobile host forcing the creation of a new source | other words, the IP prefix may be released and replaced by a new one | |||
IP address with the updated allocated IP prefix. | 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 | - Graceful Replacement IP Address | |||
In some cases, the network cannot guarantee the validity of the | In some cases, the network cannot guarantee the validity of the | |||
provided IP prefix throughout the duration of the IP session, but can | provided IP prefix throughout the duration of the opened socket, but | |||
provide a limited graceful period of time in which both the original | can provide a limited graceful period of time in which both the | |||
IP prefix and a new one are valid. This enables the application some | original IP prefix and a new one are valid. This enables the | |||
flexibility in the transition from the existing source IP address to | application some flexibility in the transition from the existing | |||
the new one. | 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 non-persistence 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 IP | |||
address but require that extra flexibility. | 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 IP sessions can use Session- | Applications with short-lived transient sessions can use Session- | |||
lasting IP Addresses. For example: Web browsers. | lasting IP Addresses. For example: Web browsers. | |||
Applications with very short IP 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 utilize Non-persistent IP Addresses. Even | |||
though they could very well use Fixed or Session-lasting IP | though they could very well use Fixed or Session-lasting IP | |||
Addresses, the transmission latency would be minimized when a Non- | Addresses, the transmission latency would be minimized when a Non- | |||
persistent IP Addresses are used. | persistent IP Addresses are 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.2. Granularity of Selection | 3.2. Granularity of Selection | |||
skipping to change at page 6, line 32 ¶ | skipping to change at page 6, line 38 ¶ | |||
the operation fails, the IP stack SHALL fail the associated socket | the operation fails, the IP stack SHALL fail the associated socket | |||
request and return an error. If successful, a Session-lasting IP | request and return an error. If successful, a Session-lasting IP | |||
Address gets configured on the mobile host. If another socket | Address gets configured on the mobile host. If another socket | |||
requests a Session-lasting IP address at a later time, the same IP | requests a Session-lasting IP address at a later time, the same IP | |||
address may be served to that socket as well. When the last socket | address may be served to that socket as well. When the last socket | |||
using the same configured IP address is closed, the IP address may be | using the same configured IP address is closed, the IP address may be | |||
released or kept for future applications that may be launched and | released or kept for future applications that may be launched and | |||
require a Session-lasting IP address. | require a Session-lasting IP address. | |||
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 a | |||
new Session-lasting IP address for a new opening of an IP session | 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 | |||
session). It is outside the scope of this specification to define | sockets). 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 | |||
skipping to change at page 7, line 25 ¶ | skipping to change at page 7, line 28 ¶ | |||
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. | |||
Extending this further by adding more flags does not work when a | Extending this further by adding more flags does not work when a | |||
request for an address of a certain type results in requiring the IP | request for an address of a certain type results in requiring the IP | |||
stack to wait for the network to provide the desired source IP prefix | stack to wait for the network to provide the desired source IP prefix | |||
and hence causing the setsockopt() call to block until the prefix is | and hence causing the setsockopt() call to block until the prefix is | |||
allocated (or an error indication from the network is received). | allocated (or an error indication from the network is received). | |||
Alternatively a new Socket API is defined - getsc() which allows | Alternatively a new socket API is defined - getsc() which allows | |||
applications to express their desired type of session continuity | applications to express their desired type of session continuity | |||
service. The new getsc() API will return an IPv6 address that is | service. The new getsc() API will return an IPv6 address that is | |||
associated with the desired session continuity service and with | associated with the desired session continuity service and with | |||
status information indicating whether or not the desired service was | status information indicating whether or not the desired service was | |||
provided. | provided. | |||
An application that wishes to secure a desired service will call | An application that wishes to secure a desired service will call | |||
getsc() with the service type definition and a place to contain the | getsc() with the service type definition and a place to contain the | |||
provided IP address, and call bind() to associate that IP address | provided IP address, and call bind() to associate that IP address | |||
with the Socket (See pseudo-code example in Section 4 below). | with the socket (See pseudo-code example in Section 4 below). | |||
When the IP stack is required to use a source IP address of a | When the IP stack is required to use a source IP address of a | |||
specified type, it can use an existing address, or request a new IP | specified type, it can use an existing address, or request a new IP | |||
prefix (of the same type) from the network and create a new one. If | prefix (of the same type) from the network and create a new one. If | |||
the host does not already have an IPv6 prefix of that specific type, | the host does not already have an IPv6 prefix of that specific type, | |||
it MUST request one from the network. | it MUST request one from the network. | |||
Using an existing address from an existing prefix is faster but might | Using an existing address from an existing prefix is faster but might | |||
yield a less optimal route (if a hand-off event occurred after its | yield a less optimal route (if a hand-off event occurred after its | |||
configuration). On the other hand, acquiring a new IP prefix from | configuration). On the other hand, acquiring a new IP prefix from | |||
skipping to change at page 8, line 11 ¶ | skipping to change at page 8, line 14 ¶ | |||
preconfigured source IP address (if exists) or to request a new IPv6 | preconfigured source IP address (if exists) or to request a new IPv6 | |||
prefix from the current serving network and configure a new IP | prefix from the current serving network and configure a new IP | |||
address. | address. | |||
This new flag is added to the set of flags in the | This new flag is added to the set of flags in the | |||
IPV6_ADDR_PREFERENCES option at the IPPROTO_IPV6 level. It is used | IPV6_ADDR_PREFERENCES option at the IPPROTO_IPV6 level. It is used | |||
in setsockopt() to set the desired behavior. | in setsockopt() to set the desired behavior. | |||
4. Usage example | 4. Usage example | |||
4.1. Pseudo-code example | ||||
The following example shows pseudo-code for creating a Stream socket | The following example shows pseudo-code for creating a Stream socket | |||
(TCP) with a Session-Lasting source IP address: | (TCP) with a Session-Lasting source IP address: | |||
#include <sys/socket.h> | #include <sys/socket.h> | |||
#include <netinnet/in.h> | #include <netinnet/in.h> | |||
// Socket information | // Socket information | |||
int s ; // Socket id | int s ; // socket id | |||
// Source information (for secsc() and bind()) | // Source information (for secsc() and bind()) | |||
sockaddr_in6 sourceInfo // my address and port for bind() | sockaddr_in6 sourceInfo // my address and port for bind() | |||
in6_addr sourceAddress // will contain the provisioned | in6_addr sourceAddress // will contain the provisioned | |||
// source IP address | // source IP address | |||
uint8_t sc_type = IPV6_REQUIRE_SESSION_LASTING_IP ; | uint8_t sc_type = IPV6_REQUIRE_SESSION_LASTING_IP ; | |||
// For requesting a Session-Lasting | // For requesting a Session-Lasting | |||
// source IP address | // source IP address | |||
// Destination information (for connect()) | // Destination information (for connect()) | |||
skipping to change at page 10, line 5 ¶ | skipping to change at page 10, line 5 ¶ | |||
// application code that does not use Session-lasting IP | // application code that does not use Session-lasting IP | |||
// address. The application may either connect without | // address. The application may either connect without | |||
// the desired Session-lasting service, or close the | // the desired Session-lasting service, or close the | |||
// socket... | // socket... | |||
} // if setsc() failed | } // if setsc() failed | |||
} // if socket was created successfully | } // if socket was created successfully | |||
// The rest of the application's code | // The rest of the application's code | |||
// ... | // ... | |||
4.2. Message Flow example | ||||
The following message flow illustrates a possible interaction for | ||||
achieving OnDemand functionality. It is an example of one scenario | ||||
and should not be regarded as the only scenario or the preferred one. | ||||
This flow describes the interaction between the following entities: | ||||
- Applications requiring different types of OnDemand service. | ||||
- The mobile host's IP stack. | ||||
- The network infrastructure providing the services. | ||||
In this example, the network infrastructure provides 2 IPv6 prefixes | ||||
upon attachment of the mobile host to the network: A Session-lasting | ||||
IPv6 prefix and a Non-persistent IPv6 prefix. Whenever the mobile | ||||
host moves to a different point-of-attachment, the network | ||||
infrastructure provides a new Non-persistent IPv6 address. | ||||
In this example, the network infrastructure does not support Fixed IP | ||||
addresses nor Graceful-replacement IP addresses. | ||||
Whenever an application opens an IP socket and requests a specific | ||||
IPv6 address type, the IP stack will provide one from its available | ||||
IPv6 prefixes or return an error message if the request cannot be | ||||
fulfilled. | ||||
Message Flow: | ||||
- The mobile device attaches to the network. | ||||
- The Network provides two IPv6 prefixes: PREFsl1 - a Session-lasting | ||||
IPv6 prefix and PREFnp1 - a Non-persistent IP v6 prefix. | ||||
- An application on the mobile host is launched. It opens an IP | ||||
socket and requests a Non-persistent IPv6 address. | ||||
- The IP stack provides IPnp1 which is generated from PREFnp1. | ||||
- Another application is launched, requesting a Non-persistent IPv6 | ||||
address. | ||||
- The IP stack provides IPnp1 again. | ||||
- A third application is launched. This time, it requires a Session- | ||||
lasting IPv6 address. | ||||
- The IP stack provides IPsl1 which is generated from PREFsl1. | ||||
- The mobile hosts moves to a new point-of-attachment. | ||||
- The network provides a new Non-persistent IPv6 prefix - PREFnp2. | ||||
PREFnp1 is no longer valid. | ||||
- The applications that were given IPnp1 re-establish the socket and | ||||
receive a new IPv6 address - IPnp2 which is generated from PREFnp2 | ||||
- The application that is using IPsl1 can still use it since the | ||||
network guaranteed that PREFsl1 will be valid even after moving to a | ||||
new point-of-attachment. | ||||
- A new application is launched, this time requiring a Graceful- | ||||
replacement IPv6 address. | ||||
- The IP stack returns setsc() with an error since the network does | ||||
not support this service. | ||||
- The application re-attempts to open a socket, this time requesting | ||||
a Session-lasting IPv6 address. | ||||
- The IP stack provides IPsl1. | ||||
5. Backwards Compatibility Considerations | 5. Backwards Compatibility Considerations | |||
Backwards compatibility support is REQUIRED by the following 3 types | Backwards compatibility support is REQUIRED by the following 3 types | |||
of entities: | 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 | |||
End of changes. 30 change blocks. | ||||
75 lines changed or deleted | 157 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/ |