Danny, Your explanation is still too low-level for the API, since it requires driver-level knowledge at the IP stack. As I understand it, tunnels are usually implemented as special interfaces, beneath which tunneling occurs.
So at the socket layer of abstraction, the operating system is aware of multiple interfaces, each having an IP address and subnet prefix. (On some operating systems an interface may have multiple IP addresses/lengths.) I imagine the operating system will require enhancement to assign properties of Non-persistent, Session-lasting & Fixed to each address in the system. These properties are access-agnostic. I’m not clear on what mechanism would trigger obtaining a new address on-demand. This would be like establishing a VPN, usually requiring a process to bring up a new interface. (Seldom do applications bring up VPN interfaces.) Also, it occurs to me that the device running the application might NOT be the device establishing the tunnel. A gateway router (e.g., WiFi hotspot) could join a mobile network and advertise two prefixes to the devices on the network, one being Fixed and the other being temporary. I imagine there could be a DHCP mechanism to convey which is which. Considering also Lorenzo’s concern about changing non-blocking functions into blocking operations, I’m inclined to think the socket options should only express preference for addresses already obtained, not trigger a blocking operation. Provide a different mechanism to obtain an address on demand, like starting a VPN. -Dave From: Moses, Danny [mailto:[email protected]] Sent: Wednesday, December 21, 2016 3:37 AM To: Dave Dolson; Lorenzo Colitti Cc: [email protected]; [email protected] Subject: RE: [DMM] New name for topic: Supporting both PMIP and MIP Actually this is an interesting point. I would like to add some details to make sure we are in sync: Since applications may be running on mobile nodes with mobility services either provided by proxy by the network, or co-handled by terminating tunnels (MIP), the implementation of the local IP stack is different (but transparent to the applications). If, the mobile node is receiving mobility services by proxy, the service request will be forwarded to the network (as described in the current version of the draft). If, however, the mobile node is handling the termination point of the tunnel, e.g. encapsulating outgoing packets and decapsulating incoming packets, the service request is handled differently: · If an application requests a Non-persistent IP address, the IP stack will provide a CoA to it (either from an existing one or by requesting a prefix from the network). Packets generated by this application will not be encapsulated by the IP stack before being transmitted. · If an application requests a Session-lasting IP address, the IP stack will provide the HOME address and will encapsulate each generated packet with an outer IP header using a CoA as the source IP address. The IP stack will also decapsulate incoming packets for this application. · If an application requests a Fixed IP address, the IP stack, similar to the Session-lasting case, will provide a HOME address and perform the encapsulation/decapsulation service. But the HOME address will be generated from an IP prefix with a network guarantee to be fixed. Does this text describe accurately your intention? Thanks, Danny From: Dave Dolson [mailto:[email protected]] Sent: Tuesday, December 20, 2016 16:35 To: Moses, Danny <[email protected]>; Lorenzo Colitti <[email protected]> Cc: [email protected]; [email protected] Subject: RE: [DMM] WGLC for draft-ietf-dmm-ondemand-mobility-08 -- Danny, Thank you for explaining. I read this draft without knowing the back story, and I did not glean the explanation below from the draft. If you want the explanation recorded for posterity, it should be in the draft. Having said that, it would be better, in my opinion, if this API is NOT specific to proxy-based architectures. An application programmer is concerned with whether it needs a long-lasting address or whether an ephemeral address is acceptable. (i.e., am I a client or a server?) I don’t see many application programmers concerned with on-demand DMM per se. -Dave From: Moses, Danny [mailto:[email protected]] Sent: Monday, December 19, 2016 6:16 AM To: Lorenzo Colitti; Dave Dolson Cc: [email protected]<mailto:[email protected]>; [email protected]<mailto:[email protected]> Subject: RE: [DMM] WGLC for draft-ietf-dmm-ondemand-mobility-08 -- OK, two is a crowd… I am thinking of the appropriate example and will send a draft for review. I think there might be a confusion regarding the HOME and CoA flags. Although they are also related to mobility and enable applications a selection between two types of source IP addresses, they are very different and should not be discussed in the context of OnDemand. The HOME and CoA flags are defined to enable an application to select between a HOME address and a Care-of address. This is in the context of Mobile IP (no Proxy Mobile IP) in which the network allocates both a Home Address and a Care-of Address to the mobile host. These flags enable applications to select the type of IP session continuity in this context (where the host is one termination point of the tunnel). The context of the OnDemand draft is PMIP (or any proxy-based architecture, like GTP). In this context, the mobile host does not have a Home Address and a Care-of-Address since the tunnel is terminated by a proxy agent. So an application cannot specify its preference regarding Home or CoA. Danny From: Lorenzo Colitti [mailto:[email protected]] Sent: Monday, December 19, 2016 03:04 To: Dave Dolson <[email protected]<mailto:[email protected]>> Cc: Moses, Danny <[email protected]<mailto:[email protected]>>; [email protected]<mailto:[email protected]>; [email protected]<mailto:[email protected]> Subject: Re: [DMM] WGLC for draft-ietf-dmm-ondemand-mobility-08 -- rOn Fri, Dec 9, 2016 at 3:59 AM, Dave Dolson <[email protected]<mailto:[email protected]>> wrote: 5. Are there new errors from bind(), listen() or connect(), etc.? E.g., socket option is FIXED, but user explicitly specified a COA address to bind to? +1. An implementer would probably choose to return EADDRNOTAVAIL if an API requested a type of address that is not available, but the draft makes no mention of that. The draft also fails to mention which of the APIs will result in a request to the network (which can block for a long period of time) and which will not. It will be quite unexpected to app developers if system calls such as bind() and setsockopt(), which always return immediately, can suddenly block for whole seconds. It would also be highly unexpected if connect() on a UDP socket took a long time since it currently returns immediately. I don't think it's a good idea to overload these existing system calls with new "obtain an prefix from the network" semantics. It's better to add a new system call for that. --------------------------------------------------------------------- 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. --------------------------------------------------------------------- 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
