draft-ietf-dmm-ondemand-mobility-11.txt | draft-ietf-dmm-ondemand-mobility-12.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: December 26, 2017 Intel | Expires: January 31, 2018 Intel | |||
K. Kweon | K. Kweon | |||
J. Lee | J. Lee | |||
J. Park | J. Park | |||
Samsung | Samsung | |||
S. Jeon | S. Jeon | |||
Sungkyunkwan University | Sungkyunkwan University | |||
June 24, 2017 | July 30, 2017 | |||
On Demand Mobility Management | On Demand Mobility Management | |||
draft-ietf-dmm-ondemand-mobility-11 | draft-ietf-dmm-ondemand-mobility-12 | |||
Abstract | Abstract | |||
Applications differ with respect to whether they need IP session | Applications differ with respect to whether they need IP 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 IP session continuity and IP address reachability on a per- | |||
socket basis. | socket basis. | |||
skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 December 26, 2017. | This Internet-Draft will expire on January 31, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://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 29 ¶ | skipping to change at page 2, line 29 ¶ | |||
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 . . . . . . . . . . . . . . . . 5 | |||
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 | 5. Backwards Compatibility Considerations . . . . . . . . . . . 10 | |||
5.1. Applications . . . . . . . . . . . . . . . . . . . . . . 10 | 5.1. Applications . . . . . . . . . . . . . . . . . . . . . . 10 | |||
5.2. IP Stack in the Mobile Host . . . . . . . . . . . . . . . 10 | 5.2. IP Stack in the Mobile Host . . . . . . . . . . . . . . . 10 | |||
5.3. Network Infrastructure . . . . . . . . . . . . . . . . . 10 | 5.3. Network Infrastructure . . . . . . . . . . . . . . . . . 10 | |||
5.4. Merging this work with RFC5014 . . . . . . . . . . . . . 11 | ||||
6. Summary of New Definitions . . . . . . . . . . . . . . . . . 11 | 6. Summary of New Definitions . . . . . . . . . . . . . . . . . 11 | |||
6.1. New APIs . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6.1. New APIs . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
6.2. New Flags . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6.2. New Flags . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | |||
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 12 | 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 12 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 13 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 13 | 11.2. Informative References . . . . . . . . . . . . . . . . . 14 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
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 | IP session continuity: The ability to maintain an ongoing IP session | |||
by keeping the same local end-point IP address throughout the session | by keeping the same local end-point IP address throughout the session | |||
despite the mobile host changing its point of attachment within the | despite the mobile host changing its point of attachment within the | |||
skipping to change at page 7, line 35 ¶ | skipping to change at page 7, line 35 ¶ | |||
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 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 11 ¶ | |||
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 | |||
The following example shows the 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() | |||
skipping to change at page 11, line 5 ¶ | skipping to change at page 11, line 5 ¶ | |||
host, the IP stack uses it and may not request a new one from the | host, the IP stack uses it and may not request a new one from the | |||
network. | network. | |||
5.3. Network Infrastructure | 5.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. | |||
5.4. Merging this work with RFC5014 | ||||
[RFC5014] defines new flags that may be used with setsockopt() to | ||||
influence source IP address selection for a socket. The list of | ||||
flags include: source home address, care-of address, temporary | ||||
address, public address CGA (Cryptographically Created Address) and | ||||
non-CGA. When applications require session continuity service and | ||||
use setsc() and bind(), they should not set the flags specified in | ||||
[RFC5014]. | ||||
However, if an application sets a specific option using setsockopt() | ||||
with one of the flags specified in [RFC5014] and also selects a | ||||
source IP address using setsc() and bind() the IP address that was | ||||
generated by setsc() and bound using bind() will be the one used by | ||||
traffic generated using that socket and options set by setsockopt() | ||||
will be ignored. | ||||
If bind() was not invoked after setsc() by the application, the IP | ||||
address generated by setsc() will not be used and traffic generated | ||||
by the socket will use a source IP address that complies with the | ||||
options selected by setsockopt(). | ||||
6. Summary of New Definitions | 6. Summary of New Definitions | |||
6.1. New APIs | 6.1. New APIs | |||
setsc() enables applications to request a specific type of source IP | setsc() enables applications to request a specific type of source IP | |||
address in terms of session continuity. Its definition is: | address in terms of session continuity. Its definition is: | |||
int setsc (int sockfd, in6_addr *sourceAddress, sc_type addressType) ; | int setsc (int sockfd, in6_addr *sourceAddress, sc_type addressType) ; | |||
Where: | Where: | |||
skipping to change at page 11, line 35 ¶ | skipping to change at page 12, line 28 ¶ | |||
2 - SESSION_LASTING_IPV6_ADDRESS | 2 - SESSION_LASTING_IPV6_ADDRESS | |||
3 - NON_PERSISTENT_IPV6_ADDRESS | 3 - NON_PERSISTENT_IPV6_ADDRESS | |||
4 - GRACEFUL_REPLACEMENT_IPV6_ADDRESS | 4 - GRACEFUL_REPLACEMENT_IPV6_ADDRESS | |||
5-7 - Reserved | 5-7 - Reserved | |||
setsc() returns the status of the operation: | setsc() returns the status of the operation: | |||
- 0 - Address was successfully generated | - 0 - Address was successfully generated | |||
- EAI_REQUIREDIPNOTSUPPORTED - the required service type is not supported | - EAI_REQUIREDIPNOTSUPPORTED - the required service type is not supported | |||
- EAI_REQUIREDIPFAILED - the network could not fulfill the desired request | - EAI_REQUIREDIPFAILED - the network could not fulfill the desired request | |||
setsc() may block the invoking thread if it triggers the TCP/IP stack | ||||
to request a new IP prefix from the network to construct the desired | ||||
source IP address. If an IP prefix with the desired session | ||||
continuity features already exists (was previously allocated to the | ||||
mobile host) and the stack is not required to request a new one as a | ||||
result of setting the IPV6_REQUIRE_SRC_ON_NET flag (defined below), | ||||
setsc() may return immediately with the constructed IP address and | ||||
will not block the thread. | ||||
6.2. New Flags | 6.2. New Flags | |||
The following flag is added to the list of flags in the | The following flag is added to the list of flags in the | |||
IPV6_ADDR_PREFERENCE option at the IPPROTO6 level: | IPV6_ADDR_PREFERENCE option at the IPPROTO6 level: | |||
IPV6_REQUIRE_SRC_ON_NET - set IP stack address allocation behavior | IPV6_REQUIRE_SRC_ON_NET - set IP stack address allocation behavior | |||
If set, the IP stack will request a new IPv6 prefix of the desired | If set, the IP stack will request a new IPv6 prefix of the desired | |||
type from the current serving network and configure a new source IP | type from the current serving network and configure a new source IP | |||
address. If reset, the IP stack will use a preconfigured one if it | address. If reset, the IP stack will use a preconfigured one if it | |||
End of changes. 10 change blocks. | ||||
15 lines changed or deleted | 47 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |