67
Wrapping Up IP + The Transport Layer EE 122, Fall 2013 Sylvia Ratnasamy http://inst.eecs.berkeley.edu/~ee12 2 / Material thanks to Ion Stoica, Scott Shenker, Jennifer

Wrapping Up IP + The Transport Layer

  • Upload
    madison

  • View
    29

  • Download
    0

Embed Size (px)

DESCRIPTION

Wrapping Up IP + The Transport Layer. EE 122, Fall 2013 Sylvia Ratnasamy http://inst.eecs.berkeley.edu/~ee122 / Material thanks to Ion Stoica , Scott Shenker , Jennifer Rexford, Nick McKeown , and many other colleagues. Last Lecture: IP Routers. Route/Control Processor. - PowerPoint PPT Presentation

Citation preview

Page 1: Wrapping Up IP + The Transport Layer

Wrapping Up IP+

The Transport Layer

EE 122, Fall 2013Sylvia Ratnasamy

http://inst.eecs.berkeley.edu/~ee122/

Material thanks to Ion Stoica, Scott Shenker, Jennifer Rexford, Nick McKeown, and many other colleagues

Page 2: Wrapping Up IP + The Transport Layer

Last Lecture: IP Routers

1

2

N

1

2

N

Linecards (input)

InterconnectFabric

Route/Control Processor

Linecards (output)

Page 3: Wrapping Up IP + The Transport Layer

Shared Memory (1st Generation)RouteTableCPU

BufferMemory

LineInterface

MAC

LineInterface

MAC

LineInterface

MAC

Limited by rate of shared memory

Shared Backplane

Linecard

CPUMemory

(* Slide by Nick McKeown, Stanford Univ.)

Page 4: Wrapping Up IP + The Transport Layer

Shared Bus (2nd Generation)RouteTableCPU

LineCard

BufferMemory

LineCard

MAC

BufferMemory

LineCard

MAC

BufferMemory

FwdingCache

FwdingCache

FwdingCache

MAC

BufferMemory

Limited by shared bus

(* Slide by Nick McKeown)

Page 5: Wrapping Up IP + The Transport Layer

Point-to-Point Switch (3rd Generation)

LineCard

MAC

LocalBuffer

Memory

CPUCard

LineCard

MAC

LocalBuffer

Memory

Switched Backplane

Line Interface

CPU

Memory FwdingTable

RoutingTable

FwdingTable

(*Slide by Nick McKeown)

Page 6: Wrapping Up IP + The Transport Layer

© Nick McKeown 2006

NxR

3rd Gen. Router: Switched Interconnects

This is called an “output queued” switch

Page 7: Wrapping Up IP + The Transport Layer

© Nick McKeown 2006

3rd Gen. Router: Switched Interconnects

This is called an “input queued” switch

Page 8: Wrapping Up IP + The Transport Layer

Two challenges with input queuing

1) Need an internal fabric scheduler!

Page 9: Wrapping Up IP + The Transport Layer

© Nick McKeown 2006

Fabric Scheduler

3rd Gen. Router: Switched Interconnects

Page 10: Wrapping Up IP + The Transport Layer

Two challenges with input queuing

1) Need an internal fabric scheduler!2) Must avoid “head-of-line” blocking

Page 11: Wrapping Up IP + The Transport Layer

Head of Line Blocking

HoL blocking limits throughput to approximately

58% of capacity

Page 12: Wrapping Up IP + The Transport Layer

“Virtual Output Queues”

Page 13: Wrapping Up IP + The Transport Layer

© Nick McKeown 2006

1 x R

Fabric Scheduler

3rd Gen. Router: Switched Interconnects

Page 14: Wrapping Up IP + The Transport Layer

Reality is more complicated

Commercial (high-speed) routers use combination of input and output queuing complex multi-stage switching topologies (Clos, Benes) distributed, multi-stage schedulers (for scalability)

We’ll consider one simpler context de-facto architecture for a long time and still used in

lower-speed routers

Page 15: Wrapping Up IP + The Transport Layer

Context

Crossbar fabric Centralized scheduler

Input ports

Output ports

Page 16: Wrapping Up IP + The Transport Layer

Scheduling

Goal: run links at full capacity, fairness across inputs Scheduling formulated as finding a matching on a bipartite graph

Practical solutions look for a good maximal matching (fast)

Input ports

Outputports

Page 17: Wrapping Up IP + The Transport Layer

The Transport Layer

Page 18: Wrapping Up IP + The Transport Layer

From Lecture#3: Transport Layer

Layer at end-hosts, between the application and network layer

TransportNetworkDatalinkPhysical

TransportNetworkDatalinkPhysical

NetworkDatalinkPhysical

Application Application

Host A Host BRouter

Page 19: Wrapping Up IP + The Transport Layer

Why a transport layer?

IP packets are addressed to a host but end-to-end communication is between application processes at hosts Need a way to decide which packets go to which

applications (multiplexing/demultiplexing)

Page 20: Wrapping Up IP + The Transport Layer

Why a transport layer?

TransportNetworkDatalinkPhysical

TransportNetworkDatalinkPhysical

Application Application

Host A Host B

Page 21: Wrapping Up IP + The Transport Layer

Why a transport layer?

TransportNetworkDatalinkPhysical

Application

Host A Host B

DatalinkPhysical

browser

telnet

mm

ediaftp

browser

IP

many application processes

Drivers+NIC

Operating System

Page 22: Wrapping Up IP + The Transport Layer

Why a transport layer?

Host A Host B

DatalinkPhysical

browser

telnet

mm

ediaftp

browser

IP

many application processes

DatalinkPhysical

telnetftp

IP

HTTP

server

Transport Transport

Communication between hosts

(128.4.5.6 162.99.7.56)

Communication between processes

at hosts

Page 23: Wrapping Up IP + The Transport Layer

Why a transport layer?

IP packets are addressed to a host but end-to-end communication is between application processes at hosts Need a way to decide which packets go to which

applications (mux/demux) IP provides a weak service model (best-effort)

Packets can be corrupted, delayed, dropped, reordered, duplicated

No guidance on how much traffic to send and when Dealing with this is tedious for application developers

Page 24: Wrapping Up IP + The Transport Layer

Role of the Transport Layer

Communication between application processes Mux and demux from/to application processes Implemented using ports

Page 25: Wrapping Up IP + The Transport Layer

Role of the Transport Layer

Communication between application processes Provide common end-to-end services for app layer

[optional] Reliable, in-order data delivery Well-paced data delivery

too fast may overwhelm the network too slow is not efficient

Page 26: Wrapping Up IP + The Transport Layer

Role of the Transport Layer

Communication between processes Provide common end-to-end services for app layer

[optional] TCP and UDP are the common transport protocols

also SCTP, MTCP, SST, RDP, DCCP, …

Page 27: Wrapping Up IP + The Transport Layer

Role of the Transport Layer

Communication between processes Provide common end-to-end services for app layer

[optional] TCP and UDP are the common transport protocols UDP is a minimalist, no-frills transport protocol

only provides mux/demux capabilities

Page 28: Wrapping Up IP + The Transport Layer

Role of the Transport Layer

Communication between processes Provide common end-to-end services for app layer

[optional] TCP and UDP are the common transport protocols UDP is a minimalist, no-frills transport protocol TCP is the whole-hog protocol

offers apps a reliable, in-order, bytestream abstraction with congestion control but no performance guarantees (delay, bw, etc.)

Page 29: Wrapping Up IP + The Transport Layer

Role of the Transport Layer

Communication between processes mux/demux from and to application processes implemented using ports

Page 30: Wrapping Up IP + The Transport Layer

Context: Applications and Sockets

Socket: software abstraction by which an application process exchanges network messages with the (transport layer in the) operating system socketID = socket(…, socket.TYPE) socketID.sendto(message, …) socketID.recvfrom(…) will cover in detail after midterm

Two important types of sockets UDP socket: TYPE is SOCK_DGRAM TCP socket: TYPE is SOCK_STREAM

Page 31: Wrapping Up IP + The Transport Layer

Ports Problem: deciding which app (socket) gets which packets

Solution: port as a transport layer identifier 16 bit identifier OS stores mapping between sockets and ports a packet carries a source and destination port number in its

transport layer header

For UDP ports (SOCK_DGRAM) OS stores (local port, local IP address) socket

For TCP ports (SOCK_STREAM) OS stores (local port, local IP, remote port, remote IP) socket

Page 32: Wrapping Up IP + The Transport Layer

4-bitVersion

4-bitHeaderLength

8-bitType of Service

(TOS)16-bit Total Length (Bytes)

16-bit Identification3-bitFlags 13-bit Fragment Offset

8-bit Time to Live (TTL) 8-bit Protocol 16-bit Header Checksum

32-bit Source IP Address

32-bit Destination IP Address

Options (if any)

Payload

Page 33: Wrapping Up IP + The Transport Layer

4 5 8-bitType of Service

(TOS)16-bit Total Length (Bytes)

16-bit Identification3-bitFlags 13-bit Fragment Offset

8-bit Time to Live (TTL) 8-bit Protocol 16-bit Header Checksum

32-bit Source IP Address

32-bit Destination IP Address

Payload

Page 34: Wrapping Up IP + The Transport Layer

4 5 8-bitType of Service

(TOS)16-bit Total Length (Bytes)

16-bit Identification3-bitFlags 13-bit Fragment Offset

8-bit Time to Live (TTL)

6 = TCP17 = UDP 16-bit Header Checksum

32-bit Source IP Address

32-bit Destination IP Address

Payload

Page 35: Wrapping Up IP + The Transport Layer

4 5 8-bitType of Service

(TOS)16-bit Total Length (Bytes)

16-bit Identification3-bitFlags 13-bit Fragment Offset

8-bit Time to Live (TTL)

6 = TCP17 = UDP 16-bit Header Checksum

32-bit Source IP Address

32-bit Destination IP Address

Payload

16-bit Source Port 16-bit Destination Port

More transport header fields ….

Page 36: Wrapping Up IP + The Transport Layer

Recap: Multiplexing and Demultiplexing

Host receives IP packets Each IP header has source and destination IP address Each Transport Layer header has source and

destination port number

Host uses IP addresses and port numbers to direct the message to appropriate socket

Page 37: Wrapping Up IP + The Transport Layer

More on Ports

Separate 16-bit port address space for UDP and TCP

“Well known” ports (0-1023): everyone agrees which services run on these ports e.g., ssh:22, http:80 helps client know server’s port

Ephemeral ports (most 1024-65535): given to clients

Page 38: Wrapping Up IP + The Transport Layer

UDP: User Datagram Protocol

Lightweight communication between processes Avoid overhead and delays of ordered, reliable delivery

UDP described in RFC 768 – (1980!) Destination IP address and port to support demultiplexing Optional error checking on the packet contents

(checksum field = 0 means “don’t verify checksum”)

SRC port DST port

checksum

length

DATA

Page 39: Wrapping Up IP + The Transport Layer

Why a transport layer?

IP packets are addressed to a host but end-to-end communication is between application processes at hosts Need a way to decide which packets go to which

applications (mux/demux) IP provides a weak service model (best-effort)

Packets can be corrupted, delayed, dropped, reordered, duplicated

Page 40: Wrapping Up IP + The Transport Layer

Announcements

The next 2-3 weeks will be the hardest of this class Project#1 due; Project #2 out HW#2 out Midterm

If you’re struggling, ask for help early ! Attend TA’s extra office hours close to project deadlines

Page 41: Wrapping Up IP + The Transport Layer

Reliable Transport

@Sender send packets

@Receiver wait for packets

In a perfect world, reliable transport is easy

Page 42: Wrapping Up IP + The Transport Layer

Reliable Transport

In a perfect world, reliable transport is easy All the bad things best-effort can do

a packet is corrupted (bit errors) a packet is lost a packet is delayed (why?) packets are reordered (why?) a packet is duplicated (why?)

Page 43: Wrapping Up IP + The Transport Layer

Dealing with Packet Corruption

TimeSender Receiver

1

2

.

.

.2

ack

nack

Page 44: Wrapping Up IP + The Transport Layer

Dealing with Packet Corruption

TimeSender Receiver

1

1

ack(1)

ack(1)

What if the ACK/NACK is corrupted?

Packet #1 or #2?

2 P(2)

P(1)

P(1)

Data and ACK packets carry sequence numbers

Page 45: Wrapping Up IP + The Transport Layer

Dealing with Packet Loss

TimeSender Receiver

1

1

ack(1)

P(1)

P(1)

Timer-driven loss detectionSet timer when packet is sent; retransmit on timeout

Timeout

P(2)

Page 46: Wrapping Up IP + The Transport Layer

Dealing with Packet Loss

TimeSender Receiver

1

1

ack(1)

P(1)

P(1)Timeout

P(2)

duplicate!

Page 47: Wrapping Up IP + The Transport Layer

Dealing with Packet Loss

TimeSender Receiver

1

.

.

.

1

ack(1)

P(1)

P(1)

Timer-driven retx. can lead to duplicates

Timeout

P(2)

duplicate!

ack(1)

Page 48: Wrapping Up IP + The Transport Layer

Components of a solution (so far)

checksums (to detect bit errors) timers (to detect loss) acknowledgements (positive or negative) sequence numbers (to deal with duplicates)

Page 49: Wrapping Up IP + The Transport Layer

A Solution: “Stop and Wait”

We have a correct reliable transport protocol! Probably the world’s most inefficient one…

@Sender send packet(I); (re)set

timer; wait for ack If (ACK)

I++; repeat If (NACK or TIMEOUT)

repeat

@Receiver wait for packet if packet is OK, send ACK else, send NACK repeat

Page 50: Wrapping Up IP + The Transport Layer

50

Stop & Wait is Inefficient

ACK

DATA

Sender Receiver

RTT Inefficient ifTRANS << RTT

TRANS

Page 51: Wrapping Up IP + The Transport Layer

Sliding Window window = set of adjacent sequence numbers

The size of the set is the window size; assume window size is n

General idea: send up to n packets at a time Sender can send packets in its window Receiver can accept packets in its window Window of acceptable packets “slides” on successful

reception/acknowledgement

Page 52: Wrapping Up IP + The Transport Layer

Sliding Window Let A be the last ack’d packet of sender without gap; then window of

sender = {A+1, A+2, …, A+n}

Let B be the last received packet without gap by receiver, then window of receiver = {B+1,…, B+n}

nB

Received and ACK’dAcceptable but notyet received

Cannot be received

nA

Already ACK’d

Sent but not ACK’d

Cannot be sentsequence number

Page 53: Wrapping Up IP + The Transport Layer

Acknowledgements w/ Sliding Window

Two common options cumulative ACKs: ACK carries next in-order sequence

number that the receiver expects

Page 54: Wrapping Up IP + The Transport Layer

Cumulative Acknowledgements (1)

At receivern

BReceived and ACK’dAcceptable but notyet received

Cannot be received

After receiving B+1, B+2nBnew= B+2

Receiver sends ACK(Bnew+1)

Page 55: Wrapping Up IP + The Transport Layer

Cumulative Acknowledgements (2)

At receivern

BReceived and ACK’dAcceptable but notyet received

Cannot be received

After receiving B+4, B+5nB

Receiver sends ACK(B+1)

Page 56: Wrapping Up IP + The Transport Layer

Acknowledgements w/ Sliding Window

Two common options cumulative ACKs: ACK carries next in-order sequence

number the receiver expects selective ACKs: ACK individually acknowledges

correctly received packets

Selective ACKs offer more precise information but require more complicated book-keeping

Page 57: Wrapping Up IP + The Transport Layer

Sliding Window Protocols Two canonical approaches

Go-Back-N Selective Repeat

Many variants that differ in implementation details

Page 58: Wrapping Up IP + The Transport Layer

Go-Back-N (GBN) Sender transmits up to n unacknowledged packets

Receiver only accepts packets in order discards out-of-order packets (i.e., packets other than B+1)

Receiver uses cumulative acknowledgements i.e., sequence# in ACK = next expected in-order sequence#

Sender sets timer for 1st outstanding ack (A+1) If timeout, retransmit A+1, … , A+n

Page 59: Wrapping Up IP + The Transport Layer

Sliding Window with GBN Let A be the last ack’d packet of sender without gap; then window of

sender = {A+1, A+2, …, A+n}

Let B be the last received packet without gap by receiver, then window of receiver = {B+1,…, B+n}

nA

Already ACK’d

Sent but not ACK’d

Cannot be sent

nB

Received and ACK’dAcceptable but notyet received

Cannot be received

sequence number

Page 60: Wrapping Up IP + The Transport Layer

GBN Example w/o Errors

Time

Window size = 3 packets

Sender Receiver

1{1}2{1, 2}3{1, 2, 3}

4{2, 3, 4}5{3, 4, 5}

Sender Window Receiver Window

6{4, 5, 6}...

.

.

.

Page 61: Wrapping Up IP + The Transport Layer

GBN Example with ErrorsWindow size = 3 packets

Sender Receiver

123456Timeout

Packet 4

456

Page 62: Wrapping Up IP + The Transport Layer

Selective Repeat (SR)

Sender: transmit up to n unacknowledged packets

Assume packet k is lost, k+1 is not

Receiver: indicates packet k+1 correctly received

Sender: retransmit only packet k on timeout

Efficient in retransmissions but complex book-keeping need a timer per packet

Page 63: Wrapping Up IP + The Transport Layer

SR Example with Errors

Time

Sender Receiver

123

456

4

7

ACK=5

Window size = 3 packets{1}{1, 2}

{1, 2, 3}{2, 3, 4}{3, 4, 5}{4, 5, 6}

{4,5,6}

{7, 8, 9}

ACK=6

{4,5,6}

TimeoutPacket 4

ACK=4

Page 64: Wrapping Up IP + The Transport Layer

Observations With sliding windows, it is possible to fully

utilize a link, provided the window size is large enough. Throughput is ~ (n/RTT) Stop & Wait is like n = 1.

Sender has to buffer all unacknowledged packets, because they may require retransmission

Receiver may be able to accept out-of-order packets, but only up to its buffer limits

Implementation complexity depends on protocol details (GBN vs. SR)

Page 65: Wrapping Up IP + The Transport Layer

Recap: components of a solution

Checksums (for error detection) Timers (for loss detection) Acknowledgments

cumulative selective

Sequence numbers (duplicates, windows) Sliding Windows (for efficiency)

Reliability protocols use the above to decide when and what to retransmit or acknowledge

Page 66: Wrapping Up IP + The Transport Layer

What does TCP do?

Most of our previous tricks + a few differences Sequence numbers are byte offsets Sender and receiver maintain a sliding window Receiver sends cumulative acknowledgements (like GBN) Sender maintains a single retx. timer Receivers do not drop out-of-sequence packets (like SR) Introduces fast retransmit : optimization that uses duplicate

ACKs to trigger early retx (next time) Introduces timeout estimation algorithms (next time)

Page 67: Wrapping Up IP + The Transport Layer

Next Time

Wrap up reliability in TCP TCP congestion control