basic socket api extensions for lin6 end-to-end multi-home
DESCRIPTION
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. Proposal Overview. E2E multi-home solution in application layer - PowerPoint PPT PresentationTRANSCRIPT
1
Basic Socket API Extensions for LIN6 End-to-End Multi-home
Arifumi MatsumotoKenji Fujikawa
Yasuo Okabe
Kyoto University, JAPAN
July. 14, 2003 IETF 57th
- draft-arifumi-lin6-multihome-api-00.txt -
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
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
IPv6
Node Id.Global unique
Location Id.
8byte 8byte
LIN6Location Id.(Locator) Node Id.(ID) Global Unique
4
Internet
E2E Multi-home with LIN6(1/2)
Host-A
Host-B
Loc2:ID-B
Loc3:ID-B
Loc1:ID-A
Loc1:ID-A <-> Loc2:ID-B
E2E multi-home has an affinity to loc/id End node knows each other’s locators
through LIN6 protocol
ISP2
ISP3
ISP1
5
E2E Multi-home with LIN6(2/2)
Internet
Host-A
Host-BDst. Loc3:ID-B
Dst. Loc2:ID-B
Error Message (ICMP Host Un-reach)
Dst.= *:ID-B
Dst.= *:ID-A
The mere change of locator can avoid connection down even when a line gets in trouble
Each connection is identified by Id.
ISP2
ISP3
ISP1
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
Example Programstruct addrinfo2 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));…}
struct addrinfo2{ ai_family ai_socktype ai_addr .. ai_ntloc ai_tloc .. }
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!