draft-ietf-dmm-ondemand-mobility-13.txt | draft-ietf-dmm-ondemand-mobility-14.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: July 28, 2018 Intel | Expires: September 20, 2018 Intel | |||
K. Kweon | K. Kweon | |||
J. Lee | J. Lee | |||
J. Park | J. Park | |||
Samsung | Samsung | |||
S. Jeon | S. Jeon | |||
Sungkyunkwan University | Sungkyunkwan University | |||
January 24, 2018 | March 19, 2018 | |||
On Demand Mobility Management | On Demand Mobility Management | |||
draft-ietf-dmm-ondemand-mobility-13 | draft-ietf-dmm-ondemand-mobility-14 | |||
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 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 July 28, 2018. | This Internet-Draft will expire on September 20, 2018. | |||
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 3, line 39 ¶ | skipping to change at page 3, line 39 ¶ | |||
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 IP session continuity support. | |||
Achieving IP session continuity and IP address reachability with | Achieving IP session continuity and IP address reachability with | |||
Mobile IP incurs some cost. Mobile IP protocol forces the mobile | Mobile IP incurs some cost. Mobile IP protocol forces the mobile | |||
host's IP traffic to traverse a centrally-located router (Home Agent, | host's IP traffic to traverse a centrally-located router (Home Agent, | |||
HA), which incurs additional transmission latency and use of | HA), which incurs additional transmission latency and use of | |||
additional network resources, adds to the network CAPEX and OPEX, and | additional network resources, adds to the network CAPEX and OPEX, and | |||
decreases the reliability of the network due to the introduction of a | decreases the reliability of the network due to the introduction of a | |||
single point of failure [RFC7333]. Therefore, IP session continuity | single point of failure [RFC7333]. Therefore, IP session continuity | |||
and IP address reachability should be provided only when necessary. | and IP 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 IP session continuity or IP | |||
address reachability. The network protocol stack on the mobile host, | address reachability. The network protocol stack on the mobile host, | |||
in conjunction with the network infrastructure, would provide the | in conjunction with the network infrastructure, provides the required | |||
required type of IP service. It is for the benefit of both the users | type of IP service. It is for the benefit of both the users and the | |||
and the network operators not to engage an extra level of service | network operators not to engage an extra level of service unless it | |||
unless it is absolutely necessary. It is expected that applications | is absolutely necessary. It is expected that applications and | |||
and networks compliant with this specification would utilize this | networks compliant with this specification will utilize this solution | |||
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]. | |||
3. Solution | 3. Solution | |||
3.1. Types of IP Addresses | 3.1. Types of IP Addresses | |||
skipping to change at page 6, line 17 ¶ | skipping to change at page 6, line 17 ¶ | |||
3.3. On Demand Nature | 3.3. 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 Non-persistent, zero or more | addresses configured. Zero or more Non-persistent, zero or more | |||
Session-lasting, zero or more Fixed and zero or more Graceful- | Session-lasting, zero or more Fixed 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 as 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 (see Section 3.4 below for more details). If | request to the network (see Section 3.4 below for more details). If | |||
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 session | |||
skipping to change at page 7, line 41 ¶ | skipping to change at page 7, line 41 ¶ | |||
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 | |||
the network may be slower due to signaling exchange with the network. | the network may be slower due to signaling exchange with the network. | |||
Applications can control the stack's operation by setting a new flag | Applications can control the stack's operation by setting a new flag | |||
- ON_NET flag - which directs the IP stack whether to use a | - ON_NET flag - which directs the IP stack whether to use a | |||
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 | |||
skipping to change at page 8, line 14 ¶ | skipping to change at page 8, line 14 ¶ | |||
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 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 source | in6_addr sourceAddress // will contain the provisioned | |||
// 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()) | |||
sockaddr_in6 serverInfo ; // server info for connect() | sockaddr_in6 serverInfo ; // server info for connect() | |||
// Create an IPv6 TCP socket | // Create an IPv6 TCP socket | |||
s = socket(AF_INET6, SOCK_STREAM, 0) ; | s = socket(AF_INET6, SOCK_STREAM, 0) ; | |||
if (s!=0) { | if (s!=0) { | |||
// Handle socket creation error | // Handle socket creation error | |||
// ... | // ... | |||
} // if socket creation failed | } // if socket creation failed | |||
else { | else { | |||
// Socket creation is successful | // Socket creation is successful | |||
// The application cannot connect yet, since it wants to use a | // The application cannot connect yet, since it wants to use | |||
// Session-Lasting source IP address It needs to request the | // a Session-Lasting source IP address It needs to request | |||
// Session-Lasting source IP before connecting | // the Session-Lasting source IP before connecting | |||
if (setsc(s, &sourceAddress, &sc_type)) == 0){ | if (setsc(s, &sourceAddress, &sc_type)) == 0){ | |||
// setting session continuity to Session Lasting is successful | // setting session continuity to Session Lasting is | |||
// sourceAddress now contains the Session-Lasting source IP | // Successful. sourceAddress now contains the Session- | |||
// address | // LAsting source IP address | |||
// Bind to that source IP address | // Bind to that source IP address | |||
sourceInfo.sin6_family = AF_INET6 ; | sourceInfo.sin6_family = AF_INET6 ; | |||
sourceInfo.sin6_port = 0 // let the stack choose the port | sourceInfo.sin6_port = 0 // let the stack choose the port | |||
sourceInfo.sin6_address = sourceAddress ; | sourceInfo.sin6_address = sourceAddress ; | |||
// Use the source address that was | // Use the source address that was | |||
// generated by the setsc() call | // generated by the setsc() call | |||
if (bind(s, &sourceInfo, sizeof(sourceInfo))==0){ | if (bind(s, &sourceInfo, sizeof(sourceInfo))==0){ | |||
// Set the desired server's information for connect() | // Set the desired server's information for connect() | |||
serverInfo.sin6_family = AF_INET6 ; | serverInfo.sin6_family = AF_INET6 ; | |||
serverInfo.sin6_port = SERVER_PORT_NUM ; | serverInfo.sin6_port = SERVER_PORT_NUM ; | |||
serverAddress.sin6_addr = SERVER_IPV6_ADDRESS ; | serverAddress.sin6_addr = SERVER_IPV6_ADDRESS ; | |||
// Connect to the server | // Connect to the server | |||
if (connect(s, &serverInfo, sizeof(serverInfo))==0) { | if (connect(s, &serverInfo, sizeof(serverInfo))==0) { | |||
// connect successful (3-way handshake has been completed | // connect successful (3-way handshake has been | |||
// with Session-Lasting source address. | // completed with Session-Lasting source address. | |||
// Continue application functionality | // Continue application functionality | |||
// ... | // ... | |||
} // if connect() is successful | } // if connect() is successful | |||
else { | ||||
// connect failed | ||||
// ... | ||||
// Application code that handles connect failure and | ||||
// closes the socket | ||||
// ... | ||||
} // if connect() failed | ||||
} // if bind() successful | ||||
else { | else { | |||
// connect failed | // bind() failed | |||
// ... | // ... | |||
// Application code that handles connect failure and closes | // Application code that handles bind failure and | |||
// the socket | // closes the socket | |||
// ... | // ... | |||
} // if connect() failed | } // if bind() failed | |||
} // if bind() successful | } // if setsc() was successful and of a Session-Lasting | |||
// source IP address was provided | ||||
else { | else { | |||
// bind() failed | // application code that does not use Session-lasting IP | |||
// ... | // address. The application may either connect without | |||
// Application code that handles bind failure and closes | // the desired Session-lasting service, or close the | |||
// the socket | // socket... | |||
// ... | } // if setsc() failed | |||
} // if bind() failed | } // if socket was created successfully | |||
} // if setsc() was successful and of a Session-Lasting source address was provided | ||||
else { | ||||
// application code that does not use Session-lasting IP address | ||||
// The application may either connect without the desired | ||||
// Session-lasting service, or close the socket | ||||
//... | ||||
} // if setsc() failed | ||||
} // if socket was created successfully | ||||
// The rest of the application's code | // The rest of the application's code | |||
// ... | // ... | |||
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 | |||
5.1. Applications | 5.1. Applications | |||
Legacy applications that do not support the OnDemand functionality | Legacy applications that do not support the OnDemand 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 OnDemand functionality must be aware that | Applications using the new OnDemand functionality MUST be aware that | |||
they may be executed in legacy environments that do not support it. | they may be executed in legacy environments that do not support it. | |||
Such environments may include a legacy IP stack on the mobile host, | Such environments may include a legacy IP stack on the mobile host, | |||
legacy network infrastructure, or both. In either case, the API will | legacy network infrastructure, or both. In either case, the API will | |||
return an error code and the invoking applications may just give up | return an error code and the invoking applications may just give up | |||
and use legacy calls. | and use legacy calls. | |||
5.2. IP Stack in the Mobile Host | 5.2. IP Stack in the Mobile Host | |||
New IP stacks must continue to support all legacy operations. If an | New IP stacks MUST continue to support all legacy operations. If an | |||
application does not use On-Demand functionality, the IP stack must | application does not use On-Demand functionality, the IP stack MUST | |||
respond in a legacy manner. | 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 and leave | |||
it to the network's default behavior to choose the type of the | it to the network's default behavior to choose the type of the | |||
allocated IP prefix. If an IP prefix was already allocated to the | allocated IP prefix. If an IP prefix was already allocated to the | |||
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 | 5.4. Merging this work with RFC5014 | |||
[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: source home address, care-of address, temporary | |||
address, public address CGA (Cryptographically Created Address) and | address, public address CGA (Cryptographically Created Address) and | |||
non-CGA. When applications require session continuity service and | non-CGA. When applications require session continuity service and | |||
use setsc() and bind(), they should not set the flags specified in | use setsc() and bind(), they SHOULD NOT set the flags specified in | |||
[RFC5014]. | [RFC5014]. | |||
However, if an application sets a specific option using setsockopt() | However, if an application sets a specific option using setsockopt() | |||
with one of the flags specified in [RFC5014] and also selects a | with one of the flags specified in [RFC5014] and also selects a | |||
source IP address using setsc() and bind() the IP address that was | 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 | generated by setsc() and bound using bind() will be the one used by | |||
traffic generated using that socket and options set by setsockopt() | traffic generated using that socket and options set by setsockopt() | |||
will be ignored. | will be ignored. | |||
If bind() was not invoked after setsc() by the application, the IP | If bind() was not invoked after setsc() by the application, the IP | |||
skipping to change at page 12, line 5 ¶ | skipping to change at page 12, line 5 ¶ | |||
by the socket will use a source IP address that complies with the | by the socket will use a source IP address that complies with the | |||
options selected by setsockopt(). | 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: | |||
- sockfd - is the socket descriptor of the socket with which a | - sockfd - is the socket descriptor of the socket with which | |||
specific address type is associated | a specific address type is associated | |||
- sourceAddress - is a pointer to an area allocated for setsc() to place | - sourceAddress - is a pointer to an area allocated for setsc() to | |||
the generated source IP address of the desired session | place the generated source IP address of the | |||
continuity type | desired session continuity type | |||
- addressType - Is the desired type of session continuity service. | - addressType - Is the desired type of session continuity service. | |||
It is a 3-bit field containing one of the following | It is a 3-bit field containing one of the | |||
values: | following values: | |||
0 - Reserved | 0 - Reserved | |||
1 - FIXED_IPV6_ADDRESS | 1 - FIXED_IPV6_ADDRESS | |||
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 | |||
- EAI_REQUIREDIPFAILED - the network could not fulfill the desired request | supported | |||
- EAI_REQUIREDIPFAILED - the network could not fulfill the desired | ||||
request | ||||
setsc() may block the invoking thread if it triggers the TCP/IP stack | 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 | to request a new IP prefix from the network to construct the desired | |||
source IP address. If an IP prefix with the desired session | source IP address. If an IP prefix with the desired session | |||
continuity features already exists (was previously allocated to the | continuity features already exists (was previously allocated to the | |||
mobile host) and the stack is not required to request a new one as a | 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), | result of setting the IPV6_REQUIRE_SRC_ON_NET flag (defined below), | |||
setsc() may return immediately with the constructed IP address and | setsc() MAY return immediately with the constructed IP address and | |||
will not block the thread. | 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 | |||
skipping to change at page 14, line 10 ¶ | skipping to change at page 14, line 10 ¶ | |||
[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>. | |||
[RFC6724] Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown, | ||||
"Default Address Selection for Internet Protocol Version 6 | ||||
(IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012, | ||||
<https://www.rfc-editor.org/info/rfc6724>. | ||||
11.2. Informative References | 11.2. Informative References | |||
[I-D.sijeon-dmm-use-cases-api-source] | [I-D.sijeon-dmm-use-cases-api-source] | |||
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", draft-sijeon-dmm-use-cases-api-source-07 (work | |||
in progress), September 2017. | in progress), September 2017. | |||
[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. | |||
End of changes. 32 change blocks. | ||||
119 lines changed or deleted | 117 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |