1 / 10

Basic Socket API Extensions for LIN6 End-to-End Multi-home

This document proposes extensions to the basic socket API to support multi-home functionality in LIN6, a location-independent network architecture for IPv6. The API includes methods for manipulating multiple addresses from a single application node and changing destination/source locators during an established connection.

thurber
Download Presentation

Basic Socket API Extensions for LIN6 End-to-End Multi-home

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basic Socket API Extensions for LIN6 End-to-End Multi-home - draft-arifumi-lin6-multihome-api-00.txt - Arifumi Matsumoto Kenji Fujikawa Yasuo Okabe Kyoto University, JAPAN July. 14, 2003 IETF 57th

  2. Proposal Overview • E2E multi-home solution in application layer • Multi-home support has to be achieved in transport or upper layers, we believe • Based on a mobile protocol LIN6 for address-aquirement, notification and registration • Based on loc/id(8+8) model for simplicity • Extended Socket API • To manipulate multiple addresses from application

  3. Node Id.(ID) Global Unique Location Id.(Locator) LIN6 What is LIN6 ?/ For what ? • LIN6:Location Independent Network Architecture for IPv6 • 8+8 model: Divide an IPv6 address into 2 parts • Upper 8bytes: Location Id.(Locator) • Lower 8bytes: Node Id.(Identifier) • Identify each connection only by Node Id. • Address-acquirement, notification, registration in a secure manner Node Id.Global unique IPv6 Location Id. 8byte 8byte

  4. E2EMulti-home with LIN6(1/2) • E2E multi-home has an affinity to loc/id • End node knows each other’s locators through LIN6 protocol Loc1:ID-A <->Loc2:ID-B Host-A ISP1 Loc1:ID-A ISP2 Loc2:ID-B Host-B Internet Loc3:ID-B ISP3

  5. Error Message (ICMP Host Un-reach) Dst.Loc2:ID-B Dst. Loc3:ID-B E2EMulti-home with LIN6(2/2) • The mere change of locator can avoid connection down even when a line gets in trouble • Each connection is identified by Id. Host-A ISP1 Dst.= *:ID-B ISP2 Internet Dst.= *:ID-A ISP3 Host-B

  6. What to do ? • Existing Socket APIs cannot handle multiple dst/src addresses for one connection • Prepare APIs to manipulate locators • API to make a multi-home ready socket • API to change dst./src. locator while connection is established • API to get locators of Corresponding Node

  7. APIs for Multi-home • socket(AF_ALIN6) • Make a special socket to handle multiple addresses • LIN6 socket identifies each connection using only lower 8 bytes • getaddrinfo2() • Acquires corresponding node(CN)’s locators • Queries Location Agent and gets CN’s latest locators • getsockopt()/setsockopt() • Get/Change the dst/src locator of a connected socket • When connection error is detected, another locator can be used

  8. struct addrinfo2 { ai_family ai_socktype ai_addr .. ai_ntloc ai_tloc .. } Example Program structaddrinfo2 hints, *res, *res2; getaddrinfo2(“hoge.com”,”http”,&hints,&res); /* get addresses、make connection */ for(con=0;con!=1&&res->ai_next!=NULL; res=res->ai_next) { sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol); if (res->ai_family == AF_ALIN6) { for (con=0,i=0;i<res->ai_ntloc;i++) if (connect(sock, res->ai_tloc[i], res->ai_addrlen)==0) con = 1; } else { connect(sock, res->ai_addr, res->ai_addrlen)…} } void sig_urg(int signo) { /* error signal handling */ setsockopt(sock,IPPROTO_IPV6,FOREIGNLOCATOR, res->ai_tloc[++i], sizeof(struct lin6_prefix)); …}

  9. Considerations • Our APIs are mainly for active multi-homing applications (for redundancy, load-sharing…) • For TCP, minimal multi-home support can be done in TCP layer automatically (just like SCTP.) • For UDP, multi-home support has to be done in App. layer using our APIs. • As a future work, • We develop multi-home ready TCP. • We’ve developed a running implementation of our APIs • Source will soon be available from http://www.users.kudpc.kyoto-u.ac.jp/~r52801/

  10. MIAKO Project • MIAKO(Mobile Internet Access in KyotO) • http://www.miako.net/ • The World Largest Wireless IPv4/IPv6 dual-stack Access Network • About 200 Access Points • About 4000 Users • IPv6 multi-home support is now in progress • We will really welcome you all to Kyoto!

More Related