13
API Extension Discussion for MIF- enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

Embed Size (px)

Citation preview

Page 1: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

API Extension Discussion for MIF-enabled Hosts

IETF#77

Dapeng Liu, Zhen Cao

Page 2: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

Background

• There are API extension works going on in IETF– IPv6– MPTCP– SHIM6– HIP

Page 3: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

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);

Page 4: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

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

Page 5: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

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

Page 6: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

SHIM6 (cont.)• Socket Options Extensions

– Used for getsockopt()/setsockopt()

……

Page 7: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

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

Page 8: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

HIP (cont.)• Socket Family and Address Structure Extensions

– New protocol family/new address family• PF_HIP/AF_HIP

– Socket structure for HIP #include <netinet/hip.h>

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 <netdb.h> #include <netdb.h>

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;

};

Page 9: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

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

Page 10: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

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…

Page 11: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

Requirement

• R1: Compatible with existing Socket APIs• R2: Support for Multiple Connections• R3: No Changes to Existing Socket APIs• R4: Easy for Implementation

Page 12: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

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

Page 13: API Extension Discussion for MIF-enabled Hosts IETF#77 Dapeng Liu, Zhen Cao

Thanks

• Question or Comments?