Title: Basic Socket API Extensions for LIN6 EndtoEnd Multihome
1Basic 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
2Proposal Overview
- Host-based multi-home 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 model for simplicity
- Specifications of extended Socket API
- To manipulate multiple addresses from application
3What is LIN6 ?/ For what ?
- LIN6Location Independent Network Architecture
for IPv6 - 88 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
4E2E Multi-home with LIN6(1/2)
- E2E multi-home has an affinity to loc/id
- End node knows each others locators through LIN6
protocol
Loc1ID-A lt-gt Loc2ID-B
Host-A
ISP1
Loc1ID-A
ISP2
Loc2ID-B
Host-B
Internet
Loc3ID-B
ISP3
5E2E Multi-home with LIN6(2/2)
- The mere change of locator can avoid connection
down even when a line gets in trouble - Its simple each connection is identified by Id.
Host-A
ISP1
Dst. ID-B
ISP2
Internet
Dst. ID-A
ISP3
Host-B
6What 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
7APIs 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 CNs latest
locators - getsockopt()/setsockopt()
- Get/Change the dst/src locator of a connected
socket - When connection error is detected, another
locator can be used
8Example Program
struct addrinfo2 ai_family
ai_socktype ai_addr .. ai_ntloc
ai_tloc ..
struct addrinfo2 hints, res, res2 getaddrinfo2(
hoge.com,http,hints,res) / get
addresses?make connection / for(con0con!1res
-gtai_next!NULL resres-gtai_next) sock
socket(res-gtai_family, res-gtai_socktype,
res-gtai_protocol) if (res-gtai_family
AF_ALIN6) for (con0,i0iltres-gtai_ntloci
) if (connect(sock, res-gtai_tloci,
res-gtai_addrlen)0) con 1 else
connect(sock, res-gtai_addr, res-gtai_addrlen)
void sig_urg(int signo) / error signal
handling / setsockopt(sock,IPPROTO_IPV6,FOREIGN
LOCATOR, res-gtai_tloci,
sizeof(struct lin6_prefix))
9Conclusion
- Weve developed a running implementation of our
APIs - To re-make all the application with these APIs
isnt realistic - For TCP, multi-home support can be done in TCP
layer 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 support extension to TCP.
10MIAKO 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
Oh! Yes, Lets go to Kyoto !!
11End-to-End Multihoming
- draft-ohta-e2e-multihoming-03.txt
- Multihoming not by intelligent routing protocols
but by a pair of end-system - Multiple addresses for a node
- Transport or upper layers manipulate addresses.
- No change is
- necessary for routers
ISP1
Router adv.
Loc1ID
Internet
End-node
Loc2ID
ISP2
Router adv.