2010 ( 22 ) ARMS (An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication) ARMS ARMS SCTP SCTP i

Similar documents

TCP T ransmission Control Protocol TCP TCP TCP TCP TCP TCP TCP TCP c /(18)

TCP-STAR a) Implementation and Evaluation of TCP-STAR: TCP Congestion Control Method for Satellite Internet Hiroyasu OBATA a), Kazuhiro TAIRA, and Ken


I TCP 1/2 1

橡c03tcp詳説(3/24修正版).PDF

TCP/IP IEEE Bluetooth LAN TCP TCP BEC FEC M T M R M T 2. 2 [5] AODV [4]DSR [3] 1 MS 100m 5 /100m 2 MD 2 c 2009 Information Processing Society of

DTN DTN DTN DTN i

LAN LAN LAN LAN LAN LAN,, i

Run-Based Trieから構成される 決定木の枝刈り法

IP L09( Tue) : Time-stamp: Tue 14:52 JST hig TCP/IP. IP,,,. ( ) L09 IP (2017) 1 / 28

WMN Wi-Fi MBCR i

IPSJ SIG Technical Report * Wi-Fi Survey of the Internet connectivity using geolocation of smartphones Yoshiaki Kitaguchi * Kenichi Nagami and Yutaka

エラー処理・分割コンパイル・コマンドライン引数

Core1 FabScalar VerilogHDL Cache Cache FabScalar 1 CoreConnect[2] Wishbone[3] AMBA[4] AMBA 1 AMBA ARM L2 AMBA2.0 AMBA2.0 FabScalar AHB APB AHB AMBA2.0

8 P2P P2P (Peer-to-Peer) P2P P2P As Internet access line bandwidth has increased, peer-to-peer applications have been increasing and have great impact

4.1 % 7.5 %

IPSJ SIG Technical Report Vol.2009-DPS-141 No.23 Vol.2009-GN-73 No.23 Vol.2009-EIP-46 No /11/27 t-room t-room 2 Development of

Contents Part1: TCP Part2: TCP Part3: TCP Part4: Part5: TCP Part6:

P2P P2P Winny 3 P2P P2P 1 P2P, i

IP IPv4-IPv6

i

IP RTP 2 QoS i

58 10

i TCP/IP NIC Intel 3com NIC TCP/IP *1 20 IPv4 IPv6 IPv6 TCP/IP TCP/IP *1 3

( )

THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS TECHNICAL REPORT OF IEICE {s-kasihr, wakamiya,

1 DHT Fig. 1 Example of DHT 2 Successor Fig. 2 Example of Successor 2.1 Distributed Hash Table key key value O(1) DHT DHT 1 DHT 1 ID key ID IP value D

ITAOI2003第三屆離島資訊與應用研討會論文範例

,,,,., C Java,,.,,.,., ,,.,, i

total-all-nt.dvi

1 I/F I/F 1 6) MobileIP 7) 8) MN: Monile Node MN AR Mobility Anchor Point(MAP) MobileIP HMIP HMIP HA-MAP MN MAP MN MAP HMIP MAP MN 2 MobileIP Mo

wide97.dvi

Vol.58 No (Mar. 2017) LAN MAC 1,a) , IoT LAN LAN AP MAC 1 Null Function Data Frame NFDF NFDF LAN NFDF LAN LAN MAC Null

DEIM Forum 2009 B4-6, Str

6 2. AUTOSAR 2.1 AUTOSAR AUTOSAR ECU OSEK/VDX 3) OSEK/VDX OS AUTOSAR AUTOSAR ECU AUTOSAR 1 AUTOSAR BSW (Basic Software) (Runtime Environment) Applicat

1 Web DTN DTN 2. 2 DTN DTN Epidemic [5] Spray and Wait [6] DTN Android Twitter [7] 2 2 DTN 10km 50m % %Epidemic 99% 13.4% 10km DTN [8] 2

Virtual Window System Virtual Window System Virtual Window System Virtual Window System Virtual Window System Virtual Window System Social Networking

修士論文

28 NTMobile Java Proposal and Implementation of Java Wrapper for NTMobile ( : ) :

[1] [2] [3] (RTT) 2. Android OS Android OS Google OS 69.7% [4] 1 Android Linux [5] Linux OS Android Runtime Dalvik Dalvik UI Application(Home,T

P2P P2P peer peer P2P peer P2P peer P2P i

( ) [1] [4] ( ) 2. [5] [6] Piano Tutor[7] [1], [2], [8], [9] Radiobaton[10] Two Finger Piano[11] Coloring-in Piano[12] ism[13] MIDI MIDI 1 Fig. 1 Syst

IPv6における

IPSJ SIG Technical Report Vol.2014-EIP-63 No /2/21 1,a) Wi-Fi Probe Request MAC MAC Probe Request MAC A dynamic ads control based on tra

WebRTC P2P Web Proxy P2P Web Proxy WebRTC WebRTC Web, HTTP, WebRTC, P2P i

17 Proposal of an Algorithm of Image Extraction and Research on Improvement of a Man-machine Interface of Food Intake Measuring System

Dual Stack Virtual Network Dual Stack Network RS DC Real Network 一般端末 GN NTM 端末 C NTM 端末 B IPv4 Private Network IPv4 Global Network NTM 端末 A NTM 端末 B

IPSJ SIG Technical Report Vol.2014-DBS-159 No.6 Vol.2014-IFAT-115 No /8/1 1,a) 1 1 1,, 1. ([1]) ([2], [3]) A B 1 ([4]) 1 Graduate School of Info

00.目次_ope

¥¤¥ó¥¿¡¼¥Í¥Ã¥È·×¬¤È¥Ç¡¼¥¿²òÀÏ Âè1²ó

HP cafe HP of A A B of C C Map on N th Floor coupon A cafe coupon B Poster A Poster A Poster B Poster B Case 1 Show HP of each company on a user scree

develop

,,.,.,,.,.,.,.,,.,..,,,, i


23

Vol. 48 No. 4 Apr LAN TCP/IP LAN TCP/IP 1 PC TCP/IP 1 PC User-mode Linux 12 Development of a System to Visualize Computer Network Behavior for L

1 Table 1: Identification by color of voxel Voxel Mode of expression Nothing Other 1 Orange 2 Blue 3 Yellow 4 SSL Humanoid SSL-Vision 3 3 [, 21] 8 325

ルータ(IPv6)掲示用池田.PDF

Android LAN 1 1,, Google Android. Android, Android,. Android x86 CPU,,,. A study of performance improvement of a wireless LAN bases on Android termina

MAC root Linux 1 OS Linux 2.6 Linux Security Modules LSM [1] Security-Enhanced Linux SELinux [2] AppArmor[3] OS OS OS LSM LSM Performance Monitor LSMP

Flow Control Information Network 1 /

& Vol.2 No (Mar. 2012) 1,a) , Bluetooth A Health Management Service by Cell Phones and Its Us

ディスプレイと携帯端末間の通信を実現する映像媒介通信技術

3. LISP B EID RLOC ETR B 4. ETR B ITR A 1: LISP 5. ITR A B EID RLOC 6. A SYN 7. ITR A ITR A B EID RLOC SYN ITR A RLOC ETR B RLOC 8. ETR B SYN ETR B B

DEIM Forum 2017 H2-2 Android LAN Android 1 Android LAN

IP IP DHCP..

IPSJ SIG Technical Report Vol.2015-GN-93 No.29 Vol.2015-CDS-12 No.29 Vol.2015-DCC-9 No /1/27 1,a) 1 1 LAN IP 1), 2), 3), 4), 5) [

CSIS (No.324) {kazuya-o, okuda, 2012 IP (LBM) IPv6 GALMA LBM GALMA GALMA 1 (LBM:Location Based Multicast) LBM IP IP GALMA (Geograp

wide95.dvi

IEEE e

Vol. 42 No. SIG 8(TOD 10) July HTML 100 Development of Authoring and Delivery System for Synchronized Contents and Experiment on High Spe

Vol. 23 No. 4 Oct Kitchen of the Future 1 Kitchen of the Future 1 1 Kitchen of the Future LCD [7], [8] (Kitchen of the Future ) WWW [7], [3

PowerPoint プレゼンテーション

JANOG14-コンバージェンスを重視したMPLSの美味しい使い方

Teradici Corporation # Canada Way, Burnaby, BC V5G 4X8 Canada p f Teradici Corporation Teradi

wide93.dvi

IPSJ SIG Technical Report Vol.2010-GN-74 No /1/ , 3 Disaster Training Supporting System Based on Electronic Triage HIROAKI KOJIMA, 1 KU

先進的計算基盤システムシンポジウム SACSIS2012 Symposium on Advanced Computing Systems and Infrastructures SACSIS /5/17 Android LAN TCP Android. TCP A Proposal

paper.dvi


(a) 1 (b) 3. Gilbert Pernicka[2] Treibitz Schechner[3] Narasimhan [4] Kim [5] Nayar [6] [7][8][9] 2. X X X [10] [11] L L t L s L = L t + L s

1

Fig. 3 Flow diagram of image processing. Black rectangle in the photo indicates the processing area (128 x 32 pixels).

A B 1: Ex. MPICH-G2 C.f. NXProxy [Tanaka] 2:

untitled

MmUm+FopX m Mm+Mop F-Mm(Fop-Mopum)M m+mop MSuS+FX S M S+MOb Fs-Ms(Mobus-Fex)M s+mob Fig. 1 Particle model of single degree of freedom master/ slave sy

fiš„v8.dvi

1 Web [2] Web [3] [4] [5], [6] [7] [8] S.W. [9] 3. MeetingShelf Web MeetingShelf MeetingShelf (1) (2) (3) (4) (5) Web MeetingShelf

IPSJ SIG Technical Report Vol.2014-GN-90 No.16 Vol.2014-CDS-9 No.16 Vol.2014-DCC-6 No /1/24 1,a) 2,b) 2,c) 1,d) QUMARION QUMARION Kinect Kinect

A Feasibility Study of Direct-Mapping-Type Parallel Processing Method to Solve Linear Equations in Load Flow Calculations Hiroaki Inayoshi, Non-member

Web Basic Web SAS-2 Web SAS-2 i

& Vol.5 No (Oct. 2015) TV 1,2,a) , Augmented TV TV AR Augmented Reality 3DCG TV Estimation of TV Screen Position and Ro

2004 SYN/ACK SYN Flood G01P014-6

Vol.54 No (June 2013) GSRAv2 1,a) 1,b) 1,c) 1,d) , IPsec-VPN SSL-VPN OpenVPN PacketiX VPN GSRA Group-based Secure Remote

B HNS 7)8) HNS ( ( ) 7)8) (SOA) HNS HNS 4) HNS ( ) ( ) 1 TV power, channel, volume power true( ON) false( OFF) boolean channel volume int

IP.dvi

DPA,, ShareLog 3) 4) 2.2 Strino Strino STRain-based user Interface with tacticle of elastic Natural ObjectsStrino 1 Strino ) PC Log-Log (2007 6)

untitled

$ ifconfig lo Link encap: inet : : inet6 : ::1/128 : UP LOOPBACK RUNNING MTU:65536 :1 RX :8 :0 :0 :0 :0 TX :8 :0 :0 :0 :0 (Collision

Transcription:

2010 ( 22 ) An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication takahiro@ht.sfc.keio.ac.jp

2010 ( 22 ) ARMS (An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication) ARMS ARMS SCTP 2 1.97 2 5 SCTP i

Abstract of Master s Thesis Academic Year 2010 An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication In this paper, we present a new transport scheme that simultaneously transmits application data over multiple paths between a source and a destination host. Multi-homed hosts are becoming common, hence if communication protocols transmit data to multiple paths, available network bandwidth can be increased. Several such protocols have been proposed, however, they do not get deployed, because they enforce protocol modification with the new standardization. Our proposed An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication (ARMS) is designed as a part of the application, which does not require any change of transport protocols and operating systems, resulting in the maximized chance to benefit for the multi-homed hosts. ARMS allows applications to communicate over a reliable and ordered end-to-end connection along multiple paths, using SCTP. ARMS can effectively utilize multiple distinct paths, because it transmits data along independently congestion controlled paths by SCTP. Our experimental results show that applications which implements ARMS significantly improve the throughput by using spare bandwidth of multiple paths effectively. bandwidth aggregation, multi-homed mobile node, SCTP Keio University Graduate School of Media and Governance Takahiro Nozawa ii

1 1 1.1.................................... 2 1.2.................................... 4 1.3.................................... 4 2 5 2.1....................................... 6 2.2.......................... 6 2.3............................. 6 2.4 TCP.................................. 7 2.5 SCTP................................. 8 2.6............ 9 2.7........................................ 10 3 ARMS 12 3.1 ARMS..................................... 13 3.2 ARMS..................... 13 3.3 ARMS..................................... 14 3.3.1.................... 15 3.3.2.......................... 17 3.3.3................................. 18 4 ARMS 21 4.1 ARMS......................... 22 4.2 socket()....................... 22 4.3.................. 23 4.4............................ 25 iii

4.5...................... 26 4.6................. 26 4.7..................... 28 5 30 5.1.................... 31 5.2....................................... 32 5.2.1.......................... 33 5.2.2........................... 33 5.2.3............................... 34 5.3 cwnd......................... 35 5.4........................ 38 5.5.................. 42 6 ARMS 43 6.1.................. 44 6.2............................... 47 6.3......................................... 49 7 51 7.1........................................ 52 7.2..................................... 53 7.3......................................... 53 iv

1.1....................................... 2 1.2.................. 3 1.3............................ 4 2.1................................. 10 3.1................................. 14 3.2 ARMS................................ 15 3.3 SCTP......................... 18 3.4.................. 19 5.1.................................... 32 5.2............. 35 5.3..... 37 5.4............................... 38 5.5 cwnd........................ 39 5.6 2 cwnd............... 39 5.7............ 41 5.8. 42 6.1 ARMS 20MByte 46 6.2 ARMS 200MByte 46 6.3 ARMS............. 48 6.4 CMT ARMS......................... 50 v

2.1................................... 11 3.1........................ 17 5.1 20MByte ( )............................. 34 5.2 20MByte ( ).......................... 36 6.1 ARMS 20MByte ( )................... 45 6.2 ARMS 200MByte ( )................... 47 6.3 ARMS CMT (Mbps).................... 49 vi

4.1 sctp socket.c..................................... 23 4.2 get asoc info.c.................................... 23 4.3 get peer addrs.c................................... 25 4.4 ARMS send data.c................................. 27 vii

1 1

1.1 WiFi LAN WiMAX MAN HSPA WAN HSPA 100% LAN WiFi WAN HSPA 2 1.1 1.1 Wireless WAN Wireless WAN Wireless LAN 1.2 2009 1.1 2

9,408 78.0% PC 9 85 % IP Cisco Systems 2014 2009 4 2009 2014 39 1.2 3

1.3 1.2 An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication (ARMS) ARMS ( ) Stream Control Transmission Protocol (SCTP) [15] ARMS 1.3 2 3 ARMS 4 ARMS 5 6 ARMS 7 4

2 5

2.1 end-to-end PSocket [19] Parallel TCP [5] 4 1 SBAM [7] 2 TCP ptcp [8] mtcp [14] AMS [18] [6] [10] 3 SCTP CMT [9] [4], [3] R-MTP [12] 5 2.2 PSocket PSocket [19] TCP PSocket 2 1 5 2.3 SBAM SBAM [7] SBAM packet pair [11] SBAM 6

TCP SBAM UDP UDP SBAM 1 2.4 TCP ptcp ptcp [8] TCP 1 ptcp ptcp TCP-v ptcp TCP-v open/close, send/receive 8 ptcp send buffer TCP-v virtual send buffer bandwidth-delay product (BDP) ptcp TCP-v close open ptcp ptcp 5 6 ptcp 7

ptcp AMS AMS [18] TCP 1 AMS TCP 3 1. AMS Permitted AMS 2. AMS Control 3. AMS Common AMS AMS SYN SYN/ACK RTT 2 3 7 % 5 2.5 SCTP CMT CMT [9] SCTP CMT 3 (1) (2) cwnd cwnd (3) ack traffic ack 5 8

1. RTX-SAME 2. RTX-ASAP cwnd cwnd 3. RTX-CWND cwnd 4. RTX-SSTHRESH ssthresh (slow start threshold) 5. RTX-LOSSRATE CMT SCTP 10 % 5 RTX-CWND, RTX-SSTHRESH, RTX-LOSSRATE 3 2.6 R-MTP R-MTP [12] TCP UDP SCTP interarrival time jitter long run jitter 3 interarrival time arrival time long run jitter jitter 0 jitter long run jitter 9

2.1 TCP 30 % TCP 250 R-MTP 160 2.7 2.1 PSocket 2.1 WiFi 3G/4G PSocket CMT CMT FreeBSD TCP SCTP TCP SCTP API 2.1 OS 10

OS PSocket SBAM ptcp CMT R-MTP 2.1 11

3 ARMS ARMS ARMS 12

3.1 ARMS 1 An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication (ARMS) ARMS 3.2 ARMS 1. 1 a 3.1 (b) 1 2. a b 3.1 (a) c 13

3.1 3.1 (a) 3.3 ARMS ARMS ARMS 3.2 ARMS ARMS ARMS 14

Acquiring and Measurement path status 3.2 ARMS 3.3.1 TCP, UDP, SCTP, DCCP UDP DCCP TCP SCTP ARMS SCTP SCTP TCP TCP 3-Way Handshake 4-Way Handshake end-to-end SCTP 15

SCTP 4-Way Handshake SCTP API [16] TCP 1 1 SCTP 1 SCTP IP TCP IP IP SCTP Dynamic Address Reconfiguration (ADDIP) [17] IP IP ARMS SCTP 3.1 16

TCP UDP SCTP DCCP 3.1 3.1 SCTP ARMS SCTP SCTP FreeBSD, Linux, Solaris FreeBSD Windows Mac OSX 3.3.2 SCTP SCTP 3.3 (a) SCTP 3.3 (b) ARMS SCTP SCTP 3.3 (b) 17

3.3 SCTP 3.3.3 ( 3.4) 3.4 Link 1 2Mbps Link 2 8Mbps 1 Link 1 ( ) Link 2 ( ) Link 1 Round Trip Time (RTT) Round Trip Time (RTT) 4 1:4 18

3.4 bandwidth-delay product 3:8 4 3:8 4 Link 1 1 Link 2 2-5 Mobile Node 2-5 25 ms 1 SCTP delayed sack ack 200ms RTT 19

ARMS Congestion Window Size (cwnd) [13] srtt cwnd TCP SCTP SCTP cwnd cwnd ACK delay-bandwidth product srtt RTT cwnd srtt cwnd 5 20

4 ARMS SCTP API ARMS 21

4.1 ARMS ARMS 1. socket() 2. 3. 4. 5. 4.2 socket() ARMS MN 1 SCTP CN MN socket() SCTP 2 4.1 1 one-to-one socket style one-to-many socket style one-to-one soket style TCP one-to-many socket style UDP SCTP API ARMS one-to-many socket style 4.1 5 socket() 2 SOCK SEQPACKET 22

4.1 sctp socket.c 1 /* one - to - one socket style */ 2 int oto_ sock = socket ( AF_ INET6, SOCK_ STREAM, IPPROTO_ SCTP ); 3 4 /* one - to - many socket style */ 5 int otm_ sock = socket ( AF_ INET6, SOCK_ SEQPACKET, IPPROTO_ SCTP ); 4.3 ARMS CN MN cwnd cwnd SCTP API 4.2 19, 20 getsockopt() 3 SCTP GET PEER ADDR INFO sctp paddrinfo ARMS sctp paddrinfo ID spinfo assoc id MN cwnd spinfo cwnd 2 cwnd 4.2 17 getsockopt() sctp paddrinfo spinfo address MN ARMS 4.2 get assoc info() SCTP ID get assoc info() 3 0 cwnd get assoc info() 2 3 1 srtt get assoc info() 3 2 4.2 get asoc info.c 1 static sctp_assoc_t 2 get_assoc_info ( int sock, struct sockaddr * addr, int flag ) 3 { 4 struct sctp_paddrinfo sp; 5 socklen_t siz ; 6 socklen_ t sa_ len ; 23

7 8 siz = sizeof ( sp ); 9 memset (&sp, 0, sizeof (sp )); 10 if ( addr - > sa_ family == AF_ INET ) { 11 sa_ len = sizeof ( struct sockaddr_ in ); 12 } else if ( addr - > sa_family == AF_INET6 ) { 13 sa_ len = sizeof ( struct sockaddr_ in6 ); 14 } else { 15 return (( sctp_assoc_t ) 0); 16 } 17 memcpy (( caddr_t ) &sp. spinfo_address, addr, sa_len ); 18 19 if ( getsockopt ( sock, IPPROTO_ SCTP, 20 SCTP_GET_PEER_ADDR_INFO, & sp, & siz )!= 0) { 21 return (( sctp_assoc_t ) 0); 22 } 23 24 switch ( flag ){ 25 case 0: // Return association ID 26 return ( sp. spinfo_assoc_id ); 27 break ; 28 case 1: // Return specified path s CWND 29 return ( sp. spinfo_cwnd ); 30 break ; 31 case 2: // Return specified path s srtt 32 return ( sp. spinfo_srtt ); 33 break ; 34 } 35 } 24

4.4 SCTP API 4.3 14 sctp getpaddrs() sctp getpaddrs() 2 4.2 ID sockaddr 3 sctp getpaddrs() sctp freeaddrs() 4.3 get peer addrs.c 1 # define REMOTE_ADDRESS_NUM 3 2 3 void 4 get_peer_addr ( int sock, int assoc_id ) 5 { 6 struct sockaddr * addrs, * addrp ; 7 struct sockaddr_in * addrp4 ; 8 struct sockaddr_in6 * addrp6 ; 9 struct peer_ addrs p_ addrs ; 10 int paddr_num ; 11 char uaddr [ REMOTE_ADDRESS_NUM ][ INET6_ADDRSTRLEN ]; 12 13 /* sctp_getpaddrs function */ 14 paddr_ num = sctp_ getpaddrs ( sock, assoc_ id, & addrs ); 15 16 addrp = addrs ; 17 18 if ( addrp - > sa_ family == AF_ INET ) { 19 addrp4 = ( struct sockaddr_in *) addrp ; 20 ++ addrp4 ; 21 addrp = ( struct sockaddr *) addrp4 ; 22 } else if ( addrp - > sa_family == AF_INET6 ) { 23 for ( int count = 0; count < paddr_ num ; count ++){ 25

24 addrp6 = ( struct sockaddr_in6 *) addrp ; 25 memset ( uaddr, 0, sizeof ( uaddr [ count ])); 26 if (( inet_ntop ( AF_INET6, & addrp6 -> sin6_addr. s6_addr, 27 uaddr [ count ], 28 INET6_ADDRSTRLEN )) == NULL ) { 29 perror (" inet_ntop "); 30 exit (1); 31 } 32 ++ addrp6 ; 33 addrp = ( struct sockaddr *) addrp6 ; 34 } 35 } 36 sctp_freepaddrs ( addrs ); 37 } 4.5 cwnd srtt 4.6 ARMS SCTP API sctp sendmsg() [16] sctp sendmsg() 1 SCTP ARMS sctp sendmsg() 4 26

SCTP sctp sendmsg() 7 SCTP ADDR OVER sctp sendmsg() one-to-one socket style one-to-many socket style one-to-one socket style SCTP ADDR OVER ARMS SCTP one-to-many socket style 4.4 ARMS send data.c 1 void 2 ARMS_snd_rcv_data ( int sock, struct sockaddr_in remote ) 3 { 4 int sent_len ; 5 int recv_len ; 6 char buf [ BUFSIZE ]; 7 8 switch ( YOUR_PROGRAM ) { 9 10 case SENDER : 11 /* ************************************************************ 12 * ssize_ t * 13 * sctp_ sendmsg ( int sockfd, const void * msg, size_ t msgsz, * 14 * const struct sockaddr * to, socklen_t tolen,* 15 * uinit32_t ppid, * 16 * uint32_t flag, uint16_t stream, * 17 * uint32_t timetolive, uint32_t context ); * 18 *********************************************************** */ 19 sent_len = sctp_sendmsg ( sock, buf, sizeof ( buf ), 20 ( struct sockaddr *) & remote, 21 ( socklen_t ) sizeof ( remote ), 22 0, SCTP_ADDR_OVER, 0, 0, 0); 23 /* if fail to send */ 24 if ( sent_len < 0) { 27

25 perror (" sctp_sendmsg "); 26 exit ( EXIT_FAILURE ); 27 } 28 break ; 29 30 case RECEIVER : 31 /* ************************************************************* 32 * ssize_ t * 33 * sctp_ recvmsg ( int sockfd, const void * msg, size_ t msgsz, * 34 * struct sockaddr * from, socklen_t * fromlen, * 35 * struct sctp_sndrcvinfo * sri, int * msg_flag );* 36 ************************************************************ */ 37 struct sctp_sndrcvinfo sri ; 38 int len, flag ; 39 recv_len = sctp_recvmsg ( sock, buf, sizeof ( buf ), 40 ( struct sockaddr *) & remote, 41 ( socklen_t *) & len, &sri, & flag ); 42 /* if fail to recreceive */ 43 if ( sent_len < 0) { 44 perror (" sctp_recvmsg "); 45 exit ( EXIT_FAILURE ); 46 } 47 break ; 48 } 49 } 4.7 ARMS?? SCTP one-to-many get assoc info() get peer addr() cwnd rate decision() 28

ARMS send data() SCTP ADDR OVER 29

5 30

5.1 5.1 Correspondent Node Mobile Node 2 Correspondent Node, Mobile Node PC 1Gbps Network 1, 2, 3 Correspondent Node Mobile Node Mobile Node Correspondent Node Router Dummynet Dummynet Dummynet Mobile Node Correspondent Node,Mobile Node, Dummynet OS FreeBSD Dummynet Correspondent Node Mobile Node 1-8 Mbps RTT 30-120 ms 1 Mbps RTT 30 ms path(1mbps, 30ms) 2Mbps RTT 60 ms path(2mbps, 60ms) 5.1 2 2 31

Correspondent Node (CN) FreeBSD 8.1R ISP 1 (1000 Mbps) Dummynet FreeBSD 8.1R Control BW, RTT Router ISP 2 ISP 3 Mobile Node (MN) FreeBSD 8.1R 5.1 5.2 2 Dummynet 32

5.2.1 5.1 Network 2 3 10Mbyte 20MByte Correspondent Node Mobile Node Dummynet 1, 2, 4 Mbps RTT 30, 60, 120 ms 5.1 5.2 5.1 5.1 none path1(1mbps, 30ms), path2(none) Mobile Node Network 2 5.1 1Mbps path2 2Mbps, 4Mbps path1(1mbps,30ms), path2(4mbps, 30ms) 5.2 5.2 MByte 1.80Mbps path1(4mbps, 30ms) 5.2.2 Dummynet Dummynet path1(1mbps, 30ms), path2(2mbps, 30ms) path1 1 path2 2 Dummynet 5.2 5.3 33

path1 none 1Mbps 2Mbps 4Mbps path2 rtt : 30ms rtt : 30ms rtt : 30ms none 169.60 84.64 42.35 rtt : 30ms 169.60 84.74 84.65 84.67 1Mbps rtt : 60ms 169.52 84.75 84.66 84.66 rtt : 120ms 169.40 84.76 84.71 84.72 5.1 20MByte ( ) 5.2 20Mbyte path2 2Mbps, 4Mbps path1(1mbps, 30ms), path2(4mbps, 30ms) Dummynet 5.3 5.3 1Mbps, 4Mbps, 5Mbps path1(1mbps, 30ms), path2(4mbps, 30ms) 5Mbps 5.2.3 2 path1(1mbps, 30ms), path2(4mbps, 30ms) 1.80Mbps 4.5Mbps path(5mbps, 30ms), path2(none) 4.5Mbps path1 RTT RTT 34

A m ount of D ata (M Byte) 20 15 10 5 1M-Single 4M-Single 4M+1M-1to1 0 0 10 20 30 40 50 Tim e (s) Proportion 1:1 static 5.2 5.3 cwnd RTT 2 cwnd SCTP cwnd cwnd cwnd socket Byte cwnd cwnd cwnd 4.2 get assoc info() cwnd cwnd socket 35

path1 none 1Mbps 2Mbps 4Mbps path2 rtt : 30ms rtt : 30ms rtt : 30ms none 169.60 84.64 42.35 rtt : 30ms 169.60 84.74 56.76 33.88 1Mbps rtt : 60ms 169.52 84.75 56.46 33.91 rtt : 120ms 169.40 84.76 56.55 34.04 5.2 20MByte ( ) 5.1 Dummynet Network 1 Network 2 Network 1 Network 3 1Mbps 2Mbps 30ms 60ms Dummynet 4 10 14 20MByte 5 5.4 2 1 Network 2 Network 3 1Mbps 2Mbps 1.9 2.0 2 2 1Mpbs 2Mbps 1.1 36

A m ount of D ata (M Byte) 20 15 10 5 1M-Single 4M-Single 5M-Single 4M+1M-D ual 0 0 10 20 30 40 50 Tim e (s) Proportion 4:1 static 5.3 cwnd Correspondent Node cwnd 5.5, 5.6 5.5 (a) cwnd SCTP TCP cwnd 5.5 (b) cwnd 5.5 (a) cwnd cwnd 5.6 5.6 cwnd 37

5.4 1RTT cwnd 1MSS(Maximum Segment Size) cwnd cwnd cwnd SCTP 1 5.4 SCTP API cwnd 38

5.5 cwnd 5.6 2 cwnd sack 39

RTT 5.7 (b) SCTP Mobile Node 5.7 (b) 5.7 (b) Mobile Node 5.7 (a) 2 5.8 5.8 (a) 40

5.7 5.8 (b) 5.8 (a) path1(2mbps, 30ms), path2(2mbps, 30ms) 3.64Mbps path1(4mbps, 30ms), path2(none) 3.78Mbps 4% 5.8 (b) path1(8mbps, 60ms), path2(2mbps, 30ms) 7.39Mbps path1(10mbps, 60ms), path2(none) 9.41Mbps 21% path1(8mbps, 60ms) 7.54Mbps 41

Amount of Data (MByte) 20 15 10 5 2M-Single 4M-Single 2M+2M-D ual Amount of Data (MByte) 20 15 10 5 2M-Single 8M-Single 10M-Single 8M+2M-D ual 0 0 5 10 15 20 25 30 35 40 Time (s) (a) ARMS Best Case (20MB) 0 0 5 10 15 20 25 Time (s) (b) ARMS W orst Case (20MB) 5.8 5.5 RTT RTT SCTP cwnd SCTP 1 cwnd RTT SCTP API srtt Dummynet srtt RTT RTT 42

6 ARMS CMT 43

6.1 5.1 Network 2, 3 RTT Dummynet 2, 4, 8 Mbps, RTT 30, 60ms 24 5 20MByte 200MByte 2 ARMS 20MByte 20MByte ARMS 5.8 5.8 20MByte (path1(2mbps, 30ms), path2(2mbps, 30ms)) (path1(8mbps, 60ms), path2(2mbps, 30ms)) 6.1 path1 path2 4 path1 path2 3.2 path1 1 20MByte 1 ARMS 200MByte 10 200MByte 50MByte 0, 50, 100, 150MByte 4 Dummynet RTT 6.2 6.2 44

path1 BW: 2Mbps BW: 4Mbps BW: 8Mbps path2 rtt : 30ms rtt : 60ms rtt : 30ms rtt : 60ms rtt : 30ms rtt : 60ms none 84.64 84.66 42.35 42.35 21.23 21.28 BW rtt : 30ms 44.07 43.98 30.67 29.97 18.65 21.65 2Mbps rtt : 60ms 43.94 44.21 30.60 29.67 18.58 20.31 BW rtt : 30ms 22.50 23.11 15.58 18.78 4Mbps rtt : 60ms 23.35 24.12 15.87 15.18 BW rtt : 30ms 12.38 13.78 8Mbps rtt : 60ms 13.24 13.02 6.1 ARMS 20MByte ( ) path1(2mbps, 30ms), path2(2mbps, 30ms) path1(8mbps, 60ms), path2(2mbps, 30ms) 6.2 path1(2mbps, 30ms), path2(2mbps, 30ms) 20MByte 6.3 3 2Mbps 3 4Mbps 3 4Mbps 4 3.2, 4.7, 4.1, 4.1 50MByte 4Mbps 45

Amount of Data (MByte) 20 15 10 5 2M-Single 4M-Single 2M+2M-D ual Amount of Data (MByte) 20 15 10 5 2M-Single 8M-Single 10M-Single 8M+2M-D ual 0 0 5 10 15 20 25 30 35 40 Time (s) (a) ARMS Best Case (20MB) 0 0 5 10 15 20 25 Time (s) (b) ARMS W orst Case (20MB) 6.1 ARMS 20MByte A m ount of D ata (M Byte) 200 150 100 50 2M-Single 4M-Single 2M+2M-D ual A m ount of D ata (M Byte) 200 150 100 50 2M-Single 8M-Single 10M-Single 8M+2M-D ual 0 0 50 100 150 200 250 300 350 400 450 Tim e (s) (a) ARMS Best Case (200MB) 0 0 50 100 150 200 Tim e (s) (b) ARMS Worst Case (200MB) 6.2 ARMS 200MByte 8Mbps 46

path1 BW: 2Mbps BW: 4Mbps BW: 8Mbps path2 rtt : 30ms rtt : 60ms rtt : 30ms rtt : 60ms rtt : 30ms rtt : 60ms none 846.57 846.63 423.31 423.42 211.75 211.87 BW rtt : 30ms 430.47 433.30 293.62 289.27 176.03 185.22 2Mbps rtt : 60ms 432.67 430.97 289.43 291.38 177.96 184.23 BW rtt : 30ms 217.29 224.39 149.32 157.43 4Mbps rtt : 60ms 224.04 232.25 154.79 157.92 BW rtt : 30ms 113.72 121.73 8Mbps rtt : 60ms 125.64 127.98 6.2 ARMS 200MByte ( ) 6.2 SCTP CMT 5.1 Dummynet 6.3 6.3 2 Dummynet 3 8Mbps 2 ARMS, CMT 6.3 Mbps 6.3 ARMS CMT 1Mbps Mobile Node 2 CMT ARMS CMT ARMS path1(8mbps, 60ms), path2(4mbps, 60ms) ARMS path1(8mbps, 60ms), path2(2mbps, 30ms) path1(8mbps, 60ms), path2(4mbps, 30ms) 47

A m ount of D ata (byte) 5000 4500 4000 3500 3000 2500 2000 1500 1000 500 2M-Single 4M-Single 2M+2M-D ual 0 0 2 4 6 8 10 Tim e (s) ARMS Best Case (200MB) 6.3 ARMS ARMS CMT CMT Dummynet path1(10mbps, 30ms), path2(2mbps, 30ms) ARMS CMT 200MByte 6.4 CMT 10Mbps ARMS 4 10Mbps 48

path status (Bandwidth - RTT) ARMS CMT primary status secondary status 8Mbps - 30ms 2Mbps - 30ms 9.41 9.09 9.09 8Mbps - 60ms 2Mbps - 30ms 9.41 8.65 7.37 8Mbps - 30ms 2Mbps - 60ms 9.41 8.99 8.94 8Mbps - 30ms 4Mbps - 30ms 11.27 10.72 11.20 8Mbps - 60ms 4Mbps - 30ms 11.27 10.17 11.20 8Mbps - 30ms 4Mbps - 60ms 11.27 10.31 7.17 8Mbps - 30ms 8Mbps - 30ms 14.79 14.05 14.29 8Mbps - 60ms 8Mbps - 30ms 14.79 13.14 12.61 8Mbps - 30ms 8Mbps - 60ms 14.79 12.77 13.67 6.3 ARMS CMT (Mbps) 6.3 1 Dummynet 49

A m ount of D ata (M Byte) 200 150 100 50 10M-Single 12M-Single A RMS:10M+2M-D ual CMT:10M+2M-D ual 0 0 20 40 60 80 100 120 140 160 180 Tim e (s) ARMS vs CMT (200MB, 10M+2M) 6.4 CMT ARMS CMT 5 CMT ARMS FreeBSD Linux, Mac OS Windows SCTP Windows ISP Firewall 4 SCTP NTT Docomo, b-mobile, Emobile, UQ WiMAX 50

7 51

7.1 ARMS ARMS ARMS SCTP API SCTP SCTP ARMS SCTP API sctp sendmsg() ARMS 2 6.2 (a) 6.1 (b) CMT CMT SCTP CMT ARMS CMT ARMS CMT 52

ARMS 7.2 Mobile Node 2 2 IP 7.3 SCTP An Application-level Multipath Transfer Mechanism for Fast and Reliable Communication (ARMS) ARMS 1.97 53

[1] 6 4 6 Kagers Walkin Walkin Walkin move! [2] 5 2011 2 14 54

[1] Hide Tokuda Lab. http://ht.sfc.keio.ac.jp/. [2] move! Project. http://www.ht.sfc.keio.ac.jp/move/. [3] Ls-sctp: a bandwidth aggregation technique for stream control transmission protocol. Computer Communications, Vol. 27, pp. 1012 1024, June. 2004. [4] A. Argyriou and V. Madisetti. Bandwidth aggregation with sctp. Global Telecommunications Conference, 2003. GLOBECOM 03. IEEE, Vol. 7, pp. 3716 3721 vol.7, Dec. 2003. [5] T. Hacker, B. Athey, and B. Noble. The end-to-end performance effects of parallel tcp sockets on a lossy wide-area network, 2002. [6] Huaizhong Han, Srinivas Shakkottai, C. V. Hollot, R. Srikant, and Don Towsley. Multipath tcp: a joint congestion control and routing scheme to exploit path diversity in the internet. IEEE/ACM Trans. Netw., Vol. 14, No. 6, pp. 1260 1271, 2006. [7] Hiroshi Sakakibara and Masato Saito and Hideyuki Tokuda. Design and implementation of a socket-level bandwidth aggregation mechanism for wireless networks. In WICON 06: Proceedings of the 2nd annual international conference on Wireless internet, p. 11, New York, NY, USA, 2006. ACM. [8] Hung-Yun Hsieh and Raghupathy Sivakumar. A transport layer approach for achieving aggregate bandwidths on multi-homed mobile hosts. MobiCom 02: Proceedings of the 8th annual international conference on Mobile computing and networking, pp. 83 94, 2002. [9] Janardhan R. Iyengar, Paul D. Amer, and Randall Stewart. Concurrent multipath transfer using sctp multihoming over independent end-to-end paths. IEEE/ACM Trans. Netw., 55

Vol. 14, No. 5, pp. 951 964, 2006. [10] Frank Kelly and Thomas Voice. Stability of end-to-end algorithms for joint routing and rate control. SIGCOMM Comput. Commun. Rev., Vol. 35, No. 2, pp. 5 12, 2005. [11] Kevin Lai and Mary Baker. Nettimer: A tool for measuring bottleneck link bandwidth. In In Proceedings of the 3rd USENIX Symposium on Internet Technologies and Systems, pp. 123 134, 2001. [12] LuizMagalhaes and RobinKravets. Transport level mechanisms for bandwidth aggregation on mobile hosts. In ICNP 01: Proceedings of the Ninth International Conference on Network Protocols, p. 165, Washington, DC, USA, 2001. IEEE Computer Society. [13] M. Allman, V. Paxson and W. Stevens. TCP Congestion Control. RFC 2581, Oct. 1999. [14] Junwen Lai Ming Zhang and et al. A transport layer approach for improving end-to-end performance and robustness using redundant paths. USENIX 2004 Annual Technical Conference, pp. 99 112, 2004. [15] R. Stewart. Stream Control Transmission Protocol. RFC 4960, Sep. 2007. [16] R. Stewart, Q. Xie and et al. Sockets API Extensions for Stream Control Transmission Protocol (SCTP). Internet Draft, Jul. 2008. [17] R. Stewart, Q. Xie, M. Tuexen, S. Maruyama, M. Kozuka. Stream Control Transmission Protocol (SCTP) Dynamic Address Reconfiguration. RFC 5061, Sep. 2007. [18] Shunsuke Saito, Yasuyuki Tanaka, Mitsunobu Kunishi, Yoshifumi Nishida and Fumio Teraoka. AMS: An Adaptive TCP Bandwidth Aggregation Mechanism for Multi-homed Mobile Hosts. IEICE Transactions on Information and Systems, Vol. 89, pp. 2838 2847, 2006. 56

[19] H. Sivakumar, S. Bailey, and R. L. Grossman. Psockets: The case for application-level network striping for data intensive applications using high speed wide area networks. In Supercomputing 00: Proceedings of the 2000 ACM/IEEE conference on Supercomputing (CDROM), p. 38, Washington, DC, USA, 2000. IEEE Computer Society. 57