Download presentation
Presentation is loading. Please wait.
Published byAnabel Shields Modified over 9 years ago
1
API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao
2
Background There are API extension works going on in IETF –IPv6 –MPTCP –SHIM6 –HIP
3
Background-IPv6 Basic Socket Interface Extensions for IPv6 –RFC3493 Objective –Support IPv6 Extensions –IPv6 Address Family and Protocol Family AF_INET6/PF_INET6 IPv6 address structure IPv6 Socket address structure –Socket Functions s = socket(AF_INET6, SOCK_STREAM, 0); s = socket(AF_INET6, SOCK_DGRAM, 0);
4
Background-MPTCP MPTCP Application Considerations –draft-scharf-mptcp-api-00 Motivation –Define extended API for applications to exploit additional features of multipath transport. –Optional extension that provides access to multipath information and enables control over the usage of multipath. Specification of API Extensions for MPTCP: –New options that defined at TCP level(IPPROTO_TCP), used by getsockopt()/setsockopt() TCP_MP_ENABLE: Enable/disable MPTCP TCP_MP_SUBFLOWS: Get the addresses currently used by the MPTCP subflows TCP_MP_PROFILE: Get/set the MPTCP profile
5
Background-SHIM6 Socket Application Program Interface (API) for Multihoming Shim –draft-ietf-shim6-multihome-shim-api-12 Objective –The API aims to enable interactions between applications and the multihoming shim layer for advanced locator management, and access to information about failure detection and path exploration. Extensions focus on –Turn on/off shim –Locator management –Notification from application to the shim sub-layer about the status of the communication –Feedback from applications to the shim sub-layer –Hot-standy –Providing locator information to the applications
6
SHIM6 (cont.) Socket Options Extensions –Used for getsockopt()/setsockopt() ……
7
Background-HIP Basic Socket Interface Extensions for Host Identity Protocol –draft-ietf-hip-native-api-12 Goals –The first goal is to allow HIP-aware applications to open sockets to other hosts based on the HITs alone –The second goal is that applications can explicitly initiate communications with unknown peer identifiers The Extensions focus on –The use of public-key based identifiers discovered via DNS resolution –Interfaces for manual bindings between HITs and locators
8
HIP (cont.) Socket Family and Address Structure Extensions –New protocol family/new address family PF_HIP/AF_HIP –Socket structure for HIP #include typedef struct in6_addr hip_hit_t; struct sockaddr_hip { uint8_t ship_len; sa_family_t ship_family; in_port_t ship_port; uint32_t ship_flags; hip_hit_t ship_hit; }; Extensions to Resolver Data Structures #include #include int getaddrinfo (const char *nodename, struct addrinfo { const char * servname, int ai_flags; /* e.g. AI_CANONNAME*/ const struct addrinfo *hints, int ai_family; /*e.g. AF_HIP*/ struct addrinfo **res) int ai_protocol; /*e.g. SOCK_STREAM*/ void free_addrinfo (struct addrinfo *res) socklen_t ai_addrlen; struct sockaddr *ai_addr; char * ai_canonname; struct addrinfo *ai_next; int ai_eflags; };
9
HIP (cont.) Explicit Handling of Locators –Application first creates a socket with AF_HIP as the domain argument. –Second, the application may get or set locator information with one of the following shim socket options as defined in the multihoming extensions in [I-D.ietf-shim6-multihome-shim-api].I-D.ietf-shim6-multihome-shim-api
10
MIF API Extensions Motivation –For the application to utilize the benefits from multiple interfaces in a smooth way, there should be some socket API exported to the upper layer. Extensions may focus on –Use extended API to solve the problems that caused by multiple connections Name and addressing/Routing/Address selection/Configuration polices…
11
Requirement R1: Compatible with existing Socket APIs R2: Support for Multiple Connections R3: No Changes to Existing Socket APIs R4: Easy for Implementation
12
Tentative Way Generic Connection approach –Application bind to this generic connection –Generic Connection manages the multiple interfaces/domains Control which interfaces/routes/address/domain to use –Extend Data Structure/ Provides API to application layer struct GenericConnection { struct GenericConnection *next; int index; struct Netdevice *dev; int priority; char status; struct socket *sock; } Data Structure of Generic Connection
13
Thanks Question or Comments?
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.