basic socket api extensions for lin6 end-to-end multi-home

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

Upload: elyse

Post on 06-Jan-2016

14 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Basic Socket API Extensions for  LIN6 End-to-End Multi-home

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 -

Page 2: Basic Socket API Extensions for  LIN6 End-to-End Multi-home

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

Page 3: Basic Socket API Extensions for  LIN6 End-to-End Multi-home

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

Page 4: Basic Socket API Extensions for  LIN6 End-to-End Multi-home

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

Page 5: Basic Socket API Extensions for  LIN6 End-to-End Multi-home

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

Page 6: Basic Socket API Extensions for  LIN6 End-to-End Multi-home

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

Page 7: Basic Socket API Extensions for  LIN6 End-to-End Multi-home

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

Page 8: Basic Socket API Extensions for  LIN6 End-to-End Multi-home

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

Page 9: Basic Socket API Extensions for  LIN6 End-to-End Multi-home

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/

Page 10: Basic Socket API Extensions for  LIN6 End-to-End Multi-home

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!