Factors affecting transport protocol design

  ! "# ! "#

  # +--!!!& &! & -.#/#

  ' +

  1

  ' ' '

  # / # / ' 0 !

  &

  !+ ! *

  # !2 # !2 '

  # !2 ' # !2 '

  , / & &% '

  3

  3

  • ' 4 ! 5 %

  # # # # ! *

  &

  6 - ' % & &% % 7# %

  8

  ' # ' ! * !

  /etc/services 16 31

  3 # * SrcPort DstPort Checksum Length Data 16 31

  3

  3' ' !

  5

  ! Application process Write bytes TCP Send buffer Application process Read bytes TCP Receive buffer Send buffer

  Segment Segment Segment Transmit segments Receive buffer ■ ■ ■

  • ' & , *

  ) ! * #

  # &

  ! * # '

  ' # ' #

  ! *

  ' ' *

  #

  &

  • ' =
  • 1 ' ! #

  9 < ; + # ' ! ' # ' SrcPort DstPort SequenceNum Acknowledgment

  4

  10

  16

  31 Options (variable) Checksum HdrLen Flags

  UrgPtr AdvertisedWindow Acknowledgment

  # & &% ! # #

  &

  ! # ? + #

  (SrcPort, SrcIPAddr, DsrPort, DstIPAddr)

  ! ! : !

  SequenceNum, acknowledgment, AdvertisedWinow Data (SequenceNum) Receiver

  Sender Acknowledgment + AdvertisedWindow

  SYN, FIN, RESET, ACK, URG (for urgent data), PUSH

  # Active participant (client)

  Passive participant (server) Three-way handshake: to setup and terminate a bidirectional connection

  event {/action} Passive open Close CLOSED Close Active open /SYN LISTEN SYN/SYN + ACK SYN/SYN + ACK Send Send /SYN /SYN

  4 9 <+ SYN_RCVD ACK SYN + ACK/ACK SYN/SYN + ACK SYN_SENT # @ # @ ) ;6 (); Open a connection ! AB & ESTABLISHED

  ' ,3 Close a connection Close /FIN % # & #

  • # ! ' FIN_WAIT_1 Close /FIN FIN/ACK CLOSE_WAIT # #

  ) C

  ( ! '

  3 D '

  % ' 0 !

  6 D # * ! !

  !# ' # # '

  • / # ! ! E

  ' + # * ! ! # Sending application LastByteWritten TCP Receiving application LastByteRead TCP !

  LastByteAcked LastByteWritten '

  ! LastByteRead LastByteRcvd LastByteSent LastByteAcked LastByteRcvd NextByteExpected (a) (b)

  ' 3 ) #

  6 SampleRTT # -) C

  ) C % # #

  ! # '

  EstimteRTT F α x EstimteRTT : G

  α x SampleRTT !# α ! H&I H&J

  ! # #

  • )

  ; % # # ) C

  # #

  

Sender Receiver Sender Receiver

Origina

  Origina l transm l transm ission ission

  ACK Retran smissio n

  Retran smissio n

  ACK

  • C ) #

  !#

#

'

  • ) )

  1 ' ' ! !

  • 1 *
    • !
    • # E # '
    K -C ) #

  # '

  Diff F SampleRTT EstRTT EstimateRTT = (1 - δ) x EstimateRTT + δ δδ δ δ x SampleRTT δδ Dev = (1 - δ ) x Dev + δ δδ δ δ x |Diff| δδ

  !# δ ! H G

  ' ' !# !# ' '

  TimeOut F µ x EstRTT : φ x Dev

  !# % % F G F ? µ φ

  4

  # ' # # ' ! ! # # # #

  0 !

  • + * ' '

    !2

  4 +

  0 ! &

  • '

  ) ' ( !

  LastByteRcvd LastByteRead

  7 F MaxRcvBuffer AdvertisedWindow

  F MaxRcvBuffer NextByteExpected NextByteRead LastByteSent LastByteAcked

  7F AdvertisedWindow EffectiveWindow

  F AdvertisedWindow LastByteSent LastByteAcked

  =+ # ! # * ! # ) ' ( ! H ' H / ) ' ( !2

  0 ! &

  ; % ' ! ) C ' ) C ' ) C '

  • * # 9 - ' < % #

    ! # G '

    ' ) C

  # ! M

  !

  # &

  • '

  #

  #

  #

  #

  9 ' * <

  # 9 ! ! <

  ( ! (#

  ' ! ! & &% ' /

  2

  # # & &% ! '

  Sender Receiver

  ' ) ' / ! !% !

  1 /

  6

  • !

  9 ' <

  # + # ! !

  2

  # + 4 > ) #

  !

  2

  • # '
  • # ! * /
    • ' & +

  (# (#

  ! ! # *> ) C '

  ) ( )

  OA

  1 4 % GP ) ' ( !

  4 ! # # ! ! #

  # +

  6 & , 6 , % & &% GAH 6 & , 6 , % & &% GAH # % ! * # 1 ! ! # 6 , =+ !# # # # ;

  2 OA

1 !

5 ! #

  ( ) G G&L 6 P&? # # GH 6 LQ O ?L 6 GO

  ; GHH 6 P O GLL 6 ? GA PAA 6 LL A? G&A R AI

C #

  ) ' ( ! # # * # =+ # GP ) ' ( ! # >

  ! *2 ! *2

  1 ! ! / GHH 5 ! #

  5 ! # G G&L 6 GIC5 # GH 6 GAAC5 O ?L 6 O ?L 6 L?JC5 L?JC5

  ; GHH 6 G&A65

O GLL 6 G&I65

GA PAA 6 Q&?65

A? G&A R G?&I65

  ; # # #

  1

  

% *! #

  #

  • # # ) C

  1 ! # OA ! 1 )( ! %

  43

  ) ' #

  • )H+ 4 ,;)5,

  !# D !# D #

  ) ' # & )G+ !# !

  2

  !

  1 /

  E # E # ! # ' /

  1 & &%

  ) ' # & )A+ !#

  ! 2

  # # ' D #

  1 ! # ! ! # !

  !

  ! ! * ! * ' & &% ! *

  ) ' # & )O+ !#

  !

  2

  • # ! # # * ! !

  2 ! !

  2 ( ! ' & !

  2

  ' # 1 & &%

  ) ' # &

  • )?+ (# 9 1 <2
  • 1

  ! ! # % E ! E !

  ! # ' #

  M !

  • 1

  3

  Client Server Blocked Request

  Blocked Computing

  Reply Blocked

  (# #

  2 # # ' # & &% ! ! # #

  ' '

  • 1

  # Caller (client) Client RPC stub protocol Return value Arguments Reply Request Callee (server) Server stub RPC protocol Return value Arguments Reply Request

  ( 9 * <

  5,)

  5 * 5,)

  M ) 6 )), ;

  • )), ; % '

  

# !# *

Sender Receiver Fragm ent 1

  Fragm ent 2 Fragm ent 3 Fragm en

  Fragm ent 4

# !# *

# #

  • ' ' '
    • !

  5 GHHS

  Fragm ent 5 Fragm ent 6

  Fragm ent 3 Fragm ent 5 SRR

  5,)

  %

  34 ' ' 1 %

  34

  34 34 % E

  R ' #

  5,) &

  ' + # %

  1

  !# # ' % ,) T0 )R

  ,) T0 )R !# ' ' !

  !# !# % %

  • # ' %

  U ,) T0 )R

  U

  5,)

  16

  31

  6; + ; !

  ProtNum MID

  U F ) )

  Length NumFrags NumFrags Type Type

  4 4 0 + 0 +

  FragMask

  #

  Data

  • 0 6 #

  F ) )%

  • #

  5,)

  % ' '

  • 4 ! ! ! ! !

  3 ' 9 < # E !

  4 ' %

  1 - )4

  R '

  # / ! # '

  ; 1 - # ! ' # # )4 )

  ' ' #

  ; ) * Client Server

  Reque st ACK Client Server Reque Repl st 1 y 1

  )4 , 1 % % ) C

  )4 6; 6; #

  6 6 # # # #

  5; # ! '

  9 ' < % ' 9;> ' <

  )4

  16

  

31

Type CID # ;

  MID 5 ;

  BID BID Length ProtNum Data

  )4 )

  # , # # Caller (client) SELECT call call Callee (server) SELECT upcall upcall ;

  • 1 # CHAN CHAN deliver send
  • deliver send

  #

  • SELECT

    CHAN

    BLAST

  

IP

  > 4 ! * 0

  40

  • E ; ;

  ; 5,) 1 '

  SunRPC '

  UDP

  )4 1 '

  & &%

  IP

  : , 1 '

  31 31 V; XID XID )4> 6; (a) RPCVersion = 2 (b) Status = ACCEPTED MsgType = CALL MsgType = REPLY Program Data ' Version V; V; ' ' Credentials (variable) Procedure

  Verifier (variable) Data 1 !#

  • % !# # ! #

  ; # # '

  ; ' # 3 5)

  3 D 1 5 * ) #

  36R %

  ! '

  # + ' - %

  #

  # Client Server

  • 5,) !# # ' %

  1

  / /

  ' & &% P?C

  ' ! ! / !

  

! # ' M

Client Server * ' 21 20

  19 23

  22 25 24 24 26 Type = Fack

  • ' Fack WindowSize = 10 5 + 20 FragmentNum = 20 3 + 20 6 + 20
  • 24 22

      21 SelAck[1] = 0x36 SelAckLen = 1 110100

      =+ # !

      2

      5 # # ' ' - ' *% ! %

      3

    • / ' % ' % & ! # GJIG

      (# 2 (#

      2

    • %

      D

    • D + ' # #

      # / & &% M '

      1 & &% !- & # # ' E

    • ' # #
    • '

      ) , '

      ' # # “ ” “ ”

    • # ! # #
    • # ! # ! # #

      G * +

    • # /

      ) *” 1 +

    • W

      : # / : 1 -

      1 ! *

      ' GHHS ' & !

      ! "# % ) # ) % U # % 6 # R % 5 ' ( 4 ! * ) 6 6 >HL

      #

      ; ;% % 0 QJO% & GJIG

      )& 5 % 5& 4 % %

      ;

      ) 6 % 0 & GJI?

      ) X # L Y?

      # L+ A% J % GA% OJ% ?P