1. Trang chủ
  2. » Công Nghệ Thông Tin

Lecture Computer networks 1: Chapter 3 - Phạm Trần Vũ

107 49 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 107
Dung lượng 1,86 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lectured Computer networks 1 - Chapter 3: Transport layer has contents: Transport-layer services, multiplexing and demultiplexing, principles of reliable data transfer, principles of congestion control,... and other contents.

Trang 1

Computer Networks 1 (Mạng Máy Tính 1)

Lectured by: Dr Phạm Trần Vũ

Trang 2

Chapter 3 Transport Layer

Computer Networking: A Top Down Approach ,

Trang 3

Chapter 3: Transport Layer

 UDP: connectionless transport

 TCP: connection-oriented transport

 TCP congestion control

Trang 4

 3.7 TCP congestion control

Trang 5

Transport services and protocols

 provide logical communication

between app processes

running on different hosts

 transport protocols run in

end systems

 send side: breaks app

messages into segments, passes to network layer

 rcv side: reassembles

segments into messages, passes to app layer

 more than one transport

protocol available to apps

 Internet: TCP and UDP

application

transport

network data link physical

application

transport

network data link physical

Trang 6

Transport vs network layer

 network layer: logical

 relies on, enhances,

network layer services

 network-layer protocol

= postal service

Trang 7

Internet transport-layer protocols

network data link physical

network data link physical

network data link physical

network data link physical

network data link physical

network data link physical

application

transport

network data link physical

Trang 8

 3.7 TCP congestion control

Trang 9

link physical

application transport network link physical

demultiplexing)

Multiplexing at send host:

Trang 10

How demultiplexing works

 host receives IP datagrams

 each datagram has source

IP address, destination IP

address

 each datagram carries 1

transport-layer segment

 each segment has source,

destination port number

 host uses IP addresses & port

numbers to direct segment to

appropriate socket

source port # dest port #

32 bits

applicationdata (message)other header fields

TCP/UDP segment format

Trang 11

(dest IP address, dest port number)

 When host receives UDP segment:

 checks destination port number in segment

 directs UDP segment to socket with that port number

 IP datagrams with different source IP addresses and/or source port numbers directed

to same socket

Trang 12

Connectionless demux (cont)

DatagramSocket serverSocket = new DatagramSocket(6428);

serverIP: C

SP: 6428 DP: 9157

SP: 9157 DP: 6428

SP: 6428 DP: 5775

SP: 5775 DP: 6428

SP provides “return address”

Trang 13

 dest port number

 recv host uses all four

 each socket identified by its own 4-tuple

 Web servers have different sockets for each connecting client

 non-persistent HTTP will have different socket for each request

Trang 14

serverIP: C

SP: 9157 DP: 80

SP: 9157 DP: 80

D-IP:C

S-IP: A D-IP:C

S-IP: B

SP: 5775 DP: 80 D-IP:C S-IP: B

Trang 15

serverIP: C

SP: 9157 DP: 80

SP: 9157 DP: 80

D-IP:C

S-IP: A D-IP:C

S-IP: B

SP: 5775 DP: 80 D-IP:C S-IP: B

Trang 16

 3.7 TCP congestion control

Trang 17

UDP: User Datagram Protocol [RFC 768]

 “no frills,” “bare bones”

Internet transport

protocol

 “best effort” service, UDP

segments may be:

UDP sender, receiver

 each UDP segment

handled independently

of others

Why is there a UDP?

 no connection establishment (which can add delay)

 simple: no connection state

at sender, receiver

 small segment header

 no congestion control: UDP can blast away as fast as desired

Trang 18

Length, in bytes of UDP

segment, including header

Trang 19

 sender puts checksum

value into UDP checksum

field

Receiver:

 compute checksum of received segment

 check if computed checksum equals checksum field value:

Trang 20

Internet Checksum Example

 Note

 When adding numbers, a carryout from the

most significant bit needs to be added to the result

 Example: add two 16-bit integers

Trang 21

 3.7 TCP congestion control

Trang 22

Principles of Reliable data transfer

 important in app., transport, link layers

 top-10 list of important networking topics!

 characteristics of unreliable channel will determine

complexity of reliable data transfer protocol (rdt)

Trang 23

Principles of Reliable data transfer

 important in app., transport, link layers

 top-10 list of important networking topics!

 characteristics of unreliable channel will determine

complexity of reliable data transfer protocol (rdt)

Trang 24

Principles of Reliable data transfer

 important in app., transport, link layers

 top-10 list of important networking topics!

 characteristics of unreliable channel will determine

complexity of reliable data transfer protocol (rdt)

Trang 25

Reliable data transfer: getting started

send

rdt_send(): called from above,

(e.g., by app.) Passed data to

deliver to receiver upper layer

udt_send(): called by rdt,

to transfer packet over

unreliable channel to receiver

rdt_rcv(): called when packet arrives on rcv-side of channel

deliver_data(): called by

rdt to deliver data to upper

Trang 26

Reliable data transfer: getting started

We‟ll:

 incrementally develop sender, receiver sides of

reliable data transfer protocol (rdt)

 consider only unidirectional data transfer

 but control info will flow on both directions!

 use finite state machines (FSM) to specify

“state” next state

uniquely determined

by next event

event actions

Trang 27

Rdt1.0: reliable transfer over a reliable channel

 underlying channel perfectly reliable

 no bit errors

 no loss of packets

 separate FSMs for sender, receiver:

 sender sends data into underlying channel

 receiver read data from underlying channel

Wait for call from below

rdt_rcv(packet)

Trang 28

Rdt2.0: channel with bit errors

 underlying channel may flip bits in packet

 checksum to detect bit errors

 the question: how to recover from errors:

that pkt received OK

tells sender that pkt had errors

 sender retransmits pkt on receipt of NAK

new mechanisms in rdt2.0 (beyond rdt1.0):

 error detection

 receiver feedback: control msgs (ACK,NAK) rcvr->sender

Trang 29

Wait for ACK or NAK

Wait for call from below

sender

receiver

rdt_send(data)

L

Trang 30

rdt2.0: operation with no errors

Wait for ACK or NAK

Wait for call from below rdt_send(data)

L

Trang 31

Wait for ACK or NAK

Wait for call from below rdt_send(data)

L

Trang 32

rdt2.0 has a fatal flaw!

stop and wait

Trang 33

rdt2.1: sender, handles garbled ACK/NAKs

Wait for call 0 from above

sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)

rdt_send(data)

Wait for ACK or NAK 0 udt_send(sndpkt)

Wait for ACK or NAK 1

L L

Trang 34

rdt2.1: receiver, handles garbled ACK/NAKs

Wait for

0 from below

sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt)

Wait for

1 from below

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

&& has_seq0(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)

rdt_rcv(rcvpkt) && (corrupt(rcvpkt)

sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)

Trang 35

 twice as many states

 state must “remember”

 note: receiver can not

know if its last ACK/NAK received OK

at sender

Trang 36

rdt2.2: a NAK-free protocol

 same functionality as rdt2.1, using ACKs only

 instead of NAK, receiver sends ACK for last pkt

received OK

 receiver must explicitly include seq # of pkt being ACKed

 duplicate ACK at sender results in same action as

NAK: retransmit current pkt

Trang 37

rdt2.2: sender, receiver fragments

Wait for call 0 from above

sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)

sender FSMfragment

Wait for

0 from below

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

&& has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data)

L

Trang 38

rdt3.0: channels with errors and loss

New assumption:

underlying channel can

also lose packets (data

or ACKs)

 checksum, seq #, ACKs,

retransmissions will be

of help, but not enough

Approach: sender waits

“reasonable” amount of time for ACK

 retransmits if no ACK received in this time

 if pkt (or ACK) just delayed (not lost):

 retransmission will be duplicate, but use of seq

#‟s already handles this

 receiver must specify seq

# of pkt being ACKed

 requires countdown timer

Trang 39

rdt3.0 sender

sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)

start_timer rdt_send(data)

Wait for ACK0

rdt_rcv(rcvpkt) &&

( corrupt(rcvpkt) ||

isACK(rcvpkt,1) )

Wait for call 1 from above

sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt)

start_timer rdt_send(data)

udt_send(sndpkt) start_timer

Wait for ACK1

L

rdt_rcv(rcvpkt)

L L

L

Trang 40

rdt3.0 in action

Trang 41

rdt3.0 in action

Trang 42

Performance of rdt3.0

 rdt3.0 works, but performance stinks

 ex: 1 Gbps link, 15 ms prop delay, 8000 bit packet:

30.008 = 0.00027 microsec

onds

L / R RTT + L / R =

 1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link

 network protocol limits use of physical resources!

ds microsecon

8 bps

dtrans

Trang 43

rdt3.0: stop-and-wait operation

first packet bit transmitted, t = 0

sender receiver

RTT

last packet bit transmitted, t = L / R

first packet bit arrives last packet bit arrives, send ACK

ACK arrives, send next packet, t = RTT + L / R

30.008 = 0.00027 microsec

onds

L / R RTT + L / R =

Trang 44

Pipelined protocols

Pipelining: sender allows multiple, “in-flight”,

yet-to-be-acknowledged pkts

 range of sequence numbers must be increased

 buffering at sender and/or receiver

 Two generic forms of pipelined protocols: go-Back-N, selective repeat

Trang 45

Pipelining: increased utilization

first packet bit transmitted, t = 0

sender receiver

RTT

last bit transmitted, t = L / R

first packet bit arrives last packet bit arrives, send ACK

ACK arrives, send next

Increase utilization

by a factor of 3!

Trang 46

Pipelining Protocols

Go-back-N: big picture:

 Sender can have up to

 Sender has timer for

oldest unacked packet

 If timer expires,

retransmit all unacked

packets

Selective Repeat: big pic

 Sender can have up to

N unacked packets in pipeline

 Rcvr acks individual packets

 Sender maintains timer for each unacked packet

 When timer expires, retransmit only unack packet

Trang 47

Selective repeat: big picture

 Sender can have up to N unacked packets

in pipeline

 Rcvr acks individual packets

 Sender maintains timer for each unacked

packet

 When timer expires, retransmit only unack

packet

Trang 48

Sender:

 k-bit seq # in pkt header

 “window” of up to N, consecutive unack‟ed pkts allowed

 ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK”

 may receive duplicate ACKs (see receiver)

 timer for each in-flight pkt

 timeout(n): retransmit pkt n and all higher seq # pkts in window

Trang 49

GBN: sender extended FSM

Wait start_timer

udt_send(sndpkt[base]) udt_send(sndpkt[base+1])

… udt_send(sndpkt[nextseqnum-1]) timeout

rdt_send(data)

if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum])

if (base == nextseqnum) start_timer

nextseqnum++

} else refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum) stop_timer

rdt_rcv(rcvpkt) &&

notcorrupt(rcvpkt)

base=1 nextseqnum=1

rdt_rcv(rcvpkt)

&& corrupt(rcvpkt)

L

Trang 50

GBN: receiver extended FSM

ACK-only: always send ACK for correctly-received pkt with highest in-order seq #

 may generate duplicate ACKs

need only remember expectedseqnum

 out-of-order pkt:

 discard (don‟t buffer) -> no receiver buffering!

 Re-ACK pkt with highest in-order seq #

deliver_data(data) sndpkt = make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpkt)

Trang 51

GBN in

action

Trang 53

Selective repeat: sender, receiver windows

Trang 54

Selective repeat

data from above :

 if next available seq # in

advance window base to

next unACKed seq #

Trang 55

Selective repeat in action

Trang 56

between seq # size

and window size?

Trang 57

 3.7 TCP congestion control

Trang 58

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

 full duplex data:

 bi-directional data flow

in same connection

 MSS: maximum segment size

 connection-oriented:

 handshaking (exchange

of control msgs) init‟s sender, receiver state before data exchange

 flow controlled:

 sender will not overwhelm receiver

 point-to-point:

 one sender, one receiver

 reliable, in-order byte

TCP receive buffer

socket door

application

writes data

application reads data

Trang 59

TCP segment structure

source port # dest port #

32 bits

applicationdata (variable length)

sequence numberacknowledgement number

Receive window Urg data pnter checksum

F S R P A U

head len usednot

Options (variable length)

URG: urgent data

(generally not used)

ACK: ACK #

valid PSH: push data now

(generally not used)

to accept

counting

by bytes

of data (not segments!)

Internet checksum (as in UDP)

Trang 60

TCP seq #‟s and ACKs

„C‟

host ACKs receipt

of echoed

„C‟

host ACKs receipt of

„C‟, echoes back „C‟

time simple telnet scenario

Trang 61

TCP Round Trip Time and Timeout

Trang 62

TCP Round Trip Time and Timeout

EstimatedRTT = (1-)*EstimatedRTT + *SampleRTT

 Exponential weighted moving average

 influence of past sample decreases exponentially fast

 typical value:  = 0.125

Trang 64

TCP Round Trip Time and Timeout

Setting the timeout

EstimtedRTT plus “safety margin”

large variation in EstimatedRTT -> larger safety margin

 first estimate of how much SampleRTT deviates from

Trang 65

 3.7 TCP congestion control

Trang 66

TCP reliable data transfer

 timeout events

 duplicate acks

 Initially consider simplified TCP sender:

 ignore duplicate acks

 ignore flow control, congestion control

Trang 67

TCP sender events:

data rcvd from app:

 Create segment with

seq #

 seq # is byte-stream

number of first data

byte in segment

 start timer if not

already running (think

of timer as for oldest

 restart timer

Ack rcvd:

 If acknowledges previously unacked segments

 update what is known to

be acked

 start timer if there are outstanding segments

Trang 68

TCP sender

create TCP segment with sequence number NextSeqNum

if (timer currently not running)

start timer pass segment to IP

NextSeqNum = NextSeqNum + length(data)

retransmit not-yet-acknowledged segment with

smallest sequence number start timer

if (y > SendBase) {

SendBase = y

if (there are currently not-yet-acknowledged segments)

start timer }

Comment:

• SendBase-1: last cumulatively

ack‟ed byte Example:

• SendBase-1 = 71; y= 73, so the rcvr wants 73+ ;

y > SendBase, so that new data is acked

Trang 69

= 100

Trang 70

TCP retransmission scenarios (more)

Trang 71

TCP ACK generation [RFC 1122, RFC 2581]

Event at Receiver

Arrival of in-order segment with

expected seq # All data up to

expected seq # already ACKed

Arrival of in-order segment with

expected seq # One other

segment has ACK pending

Arrival of out-of-order segment

higher-than-expect seq #

Gap detected

Arrival of segment that

partially or completely fills gap

TCP Receiver action

Delayed ACK Wait up to 500ms for next segment If no next segment, send ACK

Immediately send single cumulative ACK, ACKing both in-order segments

Immediately send duplicate ACK, indicating seq # of next expected byte

Immediate send ACK, provided that segment starts at lower end of gap

Trang 72

Fast Retransmit

 Time-out period often

relatively long:

 long delay before

resending lost packet

 Detect lost segments

via duplicate ACKs.

 Sender often sends

many segments

 fast retransmit: resend segment before timer expires

Trang 74

event: ACK received, with ACK field value of y

if (y > SendBase) { SendBase = y

if (there are currently not-yet-acknowledged segments) start timer

} else {

increment count of dup ACKs received for y

if (count of dup ACKs received for y = 3) { resend segment with sequence number y }

Fast retransmit algorithm:

a duplicate ACK for

Trang 75

 3.7 TCP congestion control

Trang 76

receiving app‟s drain rate

 app process may be

slow at reading from

buffer

sender won‟t overflowreceiver‟s buffer bytransmitting too much,

too fast

flow control

Ngày đăng: 11/01/2020, 00:05

TỪ KHÓA LIÊN QUAN