Re: [DMM] Mirja Kühlewind's Discuss on draft-ietf-dmm-ondemand-mobility-16: (with DISCUSS and COMMENT)

"Moses, Danny" <> Fri, 22 February 2019 10:49 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 19FFA12D4F3; Fri, 22 Feb 2019 02:49:59 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YtYZu6y6okzf; Fri, 22 Feb 2019 02:49:56 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 09E09124BF6; Fri, 22 Feb 2019 02:49:55 -0800 (PST)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from ([]) by with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Feb 2019 02:49:53 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.58,399,1544515200"; d="scan'208";a="145642704"
Received: from ([]) by with ESMTP; 22 Feb 2019 02:49:52 -0800
Received: from ( by ( with Microsoft SMTP Server (TLS) id 14.3.408.0; Fri, 22 Feb 2019 02:49:52 -0800
Received: from ( by ( with Microsoft SMTP Server (TLS) id 14.3.408.0; Fri, 22 Feb 2019 02:49:51 -0800
Received: from ([]) by ([]) with mapi id 14.03.0415.000; Fri, 22 Feb 2019 12:49:49 +0200
From: "Moses, Danny" <>
To: =?utf-8?B?TWlyamEgS8O8aGxld2luZA==?= <>, The IESG <>
CC: "" <>, Dapeng Liu <>, Sri Gundavelli <>, "" <>, "" <>, "" <>
Thread-Topic: =?utf-8?B?TWlyamEgS8O8aGxld2luZCdzIERpc2N1c3Mgb24gZHJhZnQtaWV0Zi1kbW0t?= =?utf-8?B?b25kZW1hbmQtbW9iaWxpdHktMTY6ICh3aXRoIERJU0NVU1MgYW5kIENPTU1F?= =?utf-8?Q?NT)?=
Thread-Index: AQHUySLXDUsznq/SV0W3niYR05oGWKXrpjLA
Date: Fri, 22 Feb 2019 10:49:48 +0000
Message-ID: <>
References: <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-ctpclassification: CTP_NT
x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMzExM2YwNTEtYjlhZS00YjFhLTg2NGItZDg1MTc0ODc2YzgxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoia2FZNGxCYUF4N0NXajVnck0wQ0JxSzRcL0h4Z0IxU3NnUlhlWnFrNDhoZzhLVFJOYVwvdHFlS1lYTUpTVXpSQ0N5In0=
dlp-product: dlpe-windows
dlp-version: 11.0.400.15
dlp-reaction: no-action
x-originating-ip: []
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Archived-At: <>
Subject: Re: [DMM] =?utf-8?q?Mirja_K=C3=BChlewind=27s_Discuss_on_draft-ietf-d?= =?utf-8?q?mm-ondemand-mobility-16=3A_=28with_DISCUSS_and_COMMENT=29?=
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Distributed Mobility Management Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 22 Feb 2019 10:49:59 -0000

Hi Mirja,
Thanks for your comments.

I would like to start with responding to your last proposal to remove all socket API specifications from the document.

Yes, we could do that. However, this is a significant modification and I would like some sort of ruff consensus from the rest of the reviewers for such a significant change.

I must admit that this idea was brought up to me after the WGLC and I was not sure whether this could be done without a broader discussion. During the work on this document (which has been discussed in many dmm session over several years), people felt that the Socket API info was important. Furthermore, there were several discussions about whether to use additional flags in setsockopt() or add a new function (which was added eventually). There were also discussions about whether or not to add a pseudo code example to the document and after it was added, a discussion about the example. 

My personal view is that the concept of introducing mobility service types and enabling applications to request them on a per-socket basis, is the most important aspect of this work. The socket extensions part is there to provide guidance from IETF as to how this extension should be designed. The multiple discussion we had about the socket extensions prove to me that some people think they are valuable as well.

If the reviewers think that leaving the socket extensions specification in the document is a show stopper, I will remove the text as you propose, but I would like the opinions of more reviewers on that. 

Response to the comment about the API approach:
The comment indicates that according to section 3.2 Fixed IP address cannot be configured on a per socket basis since the application needs the same IP address for multiple socket connections. This, according to the comment, contradicts the text in section 3.3 indicating that IP address type selection is made on a per-socket granularity.

I would like to clarify this point.

IP address type selection should indeed be done on a per-socket basis. If an application requires a socket with a Fixed address type, it will require the same address whenever it re-opens this specific socket. But this does not mean that the application requires the same Fixed source IP address for other sockets it uses (if any). It can use whatever source IP address type it needs according to the address reachability and/or session continuity requirements for the other sockets. 

Furthermore, when a mobile host deploys several applications with one of them requiring a Fixed source IP address, others may require different address types and this is supported when the address type is selected on a per-socket basis.

Response to the comment about adding flags to setsockopt() versus the new function setsc():
The original design was to use new flags for setsockopt(). However, during discussions in the dmm group, some people were concern with the fact that the new functionality may cause a ‘blocking’ behavior to setsockopt(). The reason for this ‘blocking’ behavior, as described in section 3.5, is due to the fact that in some cases, requesting a specific address type may trigger an interaction between the mobile host and the network requesting a prefix for this address. This interaction which involves exchange of packets may take some time, and the function can return only after the exchange of packets is completed.

The concern was that this changes the behavior of setsockopt() from a function that returns immediately, to a function that may block the invoking thread for a while, may confuse socket users.

Several options were presented to resolve this concern and the alternative that was selected by dmm was to leave setsockopt() in its non-‘blocking’ nature, and introduce a new function – ‘setsc()’ that has no legacy usage and may block the thread if the invocation triggers an exchange of packets between the TCP/IP stack in the mobile host and the network (as described in section 6.1).

I hope I managed to clarify this point.

Response to the comment about mobility being a transport question rather than an application layer question:
I am not sure I agree with this comment .I think that it does not take in account the extra cost and non-optimized routes used when networks provide session-lasting source IP addresses. But nevertheless, having a discussion about this point only strengthens the notion that the flexibility of being able to select service types on a per-socket basis is valuable.


-----Original Message-----
From: Mirja Kühlewind [] 
Sent: Wednesday, February 20, 2019 15:48
To: The IESG <>
Cc:; Dapeng Liu <>om>; Sri Gundavelli <>om>;;;
Subject: Mirja Kühlewind's Discuss on draft-ietf-dmm-ondemand-mobility-16: (with DISCUSS and COMMENT)

Mirja Kühlewind has entered the following ballot position for
draft-ietf-dmm-ondemand-mobility-16: Discuss

When responding, please keep the subject line intact and reply to all email addresses included in the To and CC lines. (Feel free to cut this introductory paragraph, however.)

Please refer to
for more information about IESG DISCUSS and COMMENT positions.

The document, along with other ballot positions, can be found here:


As mentioned by the TSV-ART review (Thanks Magnus!) and confirmed by Danny Moses in his response to the TSV-ART review ("There were several discussions as to whether this draft should specify Socket extensions or provide guidelines for an API provided by the network stack to applications. The decision, eventually, was that since IETF does not specify the Socket API, we should not specify Socket extensions, but rather, provide guidelines for such functionality. "), I don't think this document should specify an socket API.

Further I don't necessarily think the API approach taken is correct. First section 3.3. says:

  "IP address type selection is made on a per-socket granularity.
   Different parts of the same application may have different needs.
   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
   same application may be satisfied with a Session-lasting IP Address."

However, Fixed IP Address (as defined in section 3.2) cannot be configured on a per socket-basis as the application needs the same IP address for multiple socket connections.

Further, section 3.5. says.

 "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
   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
   allocated (or an error indication from the network is received)."

However, later on section 6.1. it says:

  "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."

Therefore, I really don't understand why a new flag in setsockopt() can not be used.

I propose to remove all socket API specifications from this document and only discuss requirements  (as indicated by Danny). That would basically mean to remove sections 3.5, 4.1, and 6.


Please also note that address mobility is actually more a transport question that an application layer question. For TCP session-lasting addresses will always be more efficient if available while an application using TCP will always need to cover the case where an TCP connection fails or is interrupted and therefore the application needs to reconnect. However, in contrast QUIC supports IP address mobility and will survive changing IP addresses. I think that should be also clarified in the draft and it should be double-check if the use of the word application is always correct or if it should be replaced sometimes with e.g. transport system or a more general term.

A member of the Intel Corporation group of companies

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.