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.

/Danny




-----Original Message-----
From: Mirja Kühlewind [mailto:[email protected]] 
Sent: Wednesday, February 20, 2019 15:48
To: The IESG <[email protected]>
Cc: [email protected]; Dapeng Liu 
<[email protected]>; Sri Gundavelli <[email protected]>; 
[email protected]; [email protected]; [email protected]
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 https://www.ietf.org/iesg/statement/discuss-criteria.html
for more information about IESG DISCUSS and COMMENT positions.


The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-dmm-ondemand-mobility/



----------------------------------------------------------------------
DISCUSS:
----------------------------------------------------------------------

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.


----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

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.
_______________________________________________
dmm mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/dmm

Reply via email to