2 reliability-network

Post on 26-May-2015

529 views 1 download

Tags:

description

Second lesson of the computer networks course given at UCL on the basis of the 'Computer Networking : Principles and Practice' ebook

transcript

Week 2Reliable transmissionBuilding a network

Agenda

•Reliable transmission

•Checksums and hash functions

•Framing

•Go-back-n

•Selective repeat

•Building a network

Agenda

•Reliable transmission

•Checksums and hash functions

•Framing

•Go-back-n

•Selective repeat

•Building a network

Checksums

•How to verify that a transmission has not been affected by random errors

•Checksum

•CRC

•Should the Checksum/CRC also cover the header ?

Hash functions

•What is the role of hash functions like MD5 or SHA-1 ?

•Do they play the same role as CRCs and checksums ?

Agenda

•Reliable transmission

•Checksums and hash functions

•Framing

•Go-back-n

•Selective repeat

•Building a network

Bit stuffing

•How to combine bit stuffing and checksums ?

•Stuffing first and then compute checksum or

•Compute checksum and then stuffing

Character stuffing

•What are the advantages/drawbacks of character stuffing compared to bit stuffing ?

Agenda

•Reliable transmission

•Checksums and hash functions

•Framing

•Go-back-n

•Selective repeat

•Building a network

Go-back-n•What are the key principles behind go-back-n ?

•How does it deal with losses/errors ?

•How does it deal with losses of acknowledgements ?

•How to set the retransmission timer ?

Go-back-n : example

A B

0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3

0 1 2 3

Data.req(e)

Data.req(a)

Data.ind(a)

D(0,a)

Data.req(c)

D(2,c)

C(OK,0)

C(OK,0)

Sending window

Data.req(b)

D(1,b)

Lost

Not expected seq num,discarded

Retransmissiontimer expires

Sending window is full

0 1 2 3 0 1 2 3

D(1,b)

Data.ind(b)

Data.req(d)

D(3,d)Data.ind(d)

D(2,c)

Data.ind(c)

Maximum window

•What is the maximum window size that can be used with go-back-n ?

•Sequence numbers are encoded in N bits

Agenda

•Reliable transmission

•Checksums and hash functions

•Framing

•Go-back-n

•Selective repeat

•Building a network

Selective repeat•What are the key principles behind selective repeat ?

•How does it deal with losses/errors ?

•How does it deal with losses of acknowledgements ?

•How to inform about losses ?

•How to set the retransmission timer ?

Selective repeatA B

0 1 2 3 0 1 2 3 0 1 2 3

0 1 2 3

Data.ind(b)

Data.req(a)

Data.ind(a)

D(0,a)

0 1 2 3 Data.req(c)

D(2,c)

C(OK,0)

C(OK,0)

Sending window

Data.req(b)

D(1,b)

Lost segment

Segment stored

D(1,b)

Retransmissiontimer expires0 1 2 3

0 1 2 3 0 1 2 3

0 1 2 3

0 1 2 3

Data.ind(c)

Data.req(d)

D(3,d)

Data.ind(d)

0 1 2 3

0 1 2 3 C(OK,2)

C(OK,3)

Rec. window0 1 2 3

0 1 2 3

Maximum window

•What is the maximum window size that can be used with selective repeat ?

•Sequence numbers are encoded in N bits

Performance with losses

•What is the minimum window size required to achieve high throughput

•When there are no losses ?

•When a few frames are errored/lost ?

•Go-back-n

•Selective repeat

Take back lessons

•Usage of Checksums/CRCs

•Cumulative acknowledgements

•Maximum window size with gbn/sr

•Bandwidth x delay product

Agenda

•Reliable transmission

•Building a network

•Datagram organisation

•Virtual circuit organisation

•Distance vector routing

•Link state routing

Datagram organisation

•Principles

•Nodes

•Hosts

•Routers

•Packet

Forwarding table

•Contents of the forwarding table

•Destination, nexthop/outgoing if

•How to compute the forwarding table ?

Port-station table

•When a node boots, its forwarding table is empty, is it possible to learn automatically the forwarding table from the packets ?

•Tree-shaped networks only !

A network

B

A R1

R2

R3

Source routing•Basic idea

•Each node has a unique address

•Each node knows its direct neighbours

•How ?

•Each packet contains the list of the addresses of intermediate nodes

A network

B

A R1

R2

R3

How can A discover the paths towards B ?

Agenda

•Reliable transmission

•Building a network

•Datagram organisation

•Virtual circuit organisation

•Distance vector routing

•Link state routing

Virtual circuit•Basic idea

•Create circuits through the network to transfer data divided in packets

•Packet contains one label

•Simpler forwarding table

•incoming label, nexthop, outgoing label

Virtual circuit

B

A R1

R2

R3

Create one virtual circuit from A to B

C

Agenda

•Reliable transmission

•Building a network

•Datagram organisation

•Virtual circuit organisation

•Distance vector routing

•Link state routing

Computing forwarding tables•How to compute the forwarding

tables for all nodes in a network ?

C

E

A B C

D E

Computing forwarding tables

C

E

A B C

D E

Routing tableA : LocalD : SouthB : East

C : East [via B]

E: East [via B]

Routing tableA : WestB : LocalC : EastD : South [via E]

E : South

Routing tableA : West [via

B]B : WestC : Local

D : West [via B]

E : South West

Routing tableA : NorthB : North [via A]

C : East [via E]

D : LocalE : East

Routing tableA : North [via B]B : NorthC : North-

EastD : WestE : Local

Cost=1

Cost=1 Cost=1

Cost=1

Cost=1Cost=1

Distance vector routing

•Objectives of the routing protocol

•Compute forwarding tables so that all nodes can reach all nodes in the network

•Principle

•Each node regularly sends a summary of its forwarding table to its neighbours

Distance vector

C

D E

Routing tableA : 0 [ Local

]

A B C

D E

Routing tableB : 0 [Local] Routing table

C : 0 [Local]

Routing table

E : 0 [Local]

Routing tableD : 0 [Local]

Distance vector

example (2)

C

D E

Routing tableA : 0 [ Local

]

A B C

D E

Routing table

B : 0 [Local]A : 1 [West]

Routing table

C : 0 [Local]

Routing table

E : 0 [Local]

Routing table

D : 0 [Local]A : 1 [North]

D=0 ; A=1

D=0 ; A=1

Distance vector

example (3)

C

D E

Routing tableA : 0 [ Local

]D : 1 [South]

A B C

D E

Routing table

B : 0 [Local]A : 1 [West]

Routing table

C : 0 [Local]

Routing table

E : 0 [Local]D : 1 [West]A : 2 [West]

Routing table

D : 0 [Local]A : 1 [North]

C=0

C=0

Distance vector

example (4)

C

D E

Routing tableA : 0 [ Local

]D : 1 [South]

A B C

D E

Routing table

B : 0 [Local]A : 1 [West]C : 1 [East]

Routing table

C : 0 [Local]

Routing tableE : 0 [Local]D : 1 [West]A : 2 [West]C : 1 [North-

East]

Routing table

D : 0 [Local]A : 1 [North]

E=0;D=1;A=2;C=1

E=0;D=1;A=2;C=1

E=0;D=1;A=2;C=1

Distance vector

example (5)

C

D E

Routing tableA : 0 [ Local

]D : 1 [South]

A B C

D E

Routing tableB : 0 [Local]A : 1 [West]C : 1 [East]E : 1 [South]D : 2 [South]

Routing tableC : 0 [Local]E : 1 [South-

West]D : 2 [South-

West]A : 3 [South-

West]

Routing table

E : 0 [Local]D : 1 [West]A : 2 [West]C : 1 [North-

East]

Routing table

D : 0 [Local]A : 1 [North]E : 1 [East]C : 2 [East]

B=0;A=1;C=1;D=2;E=1

B=0;A=1;C=1;D=2;E=1

Distance vector

example (6)

C

D E

Routing tableA : 0 [ Local

]D : 1 [South]B : 1 [East]C : 2 [East]E : 2 [East]

A B C

D E

Routing tableB : 0 [Local]A : 1 [West]C : 1 [East]E : 1 [South]D : 2 [South]

Routing tableC : 0 [Local]E : 1 [South-

West]D : 2 [South-

West]A : 2 [West]B : 1 [West]

Routing tableE : 0 [Local]D : 1 [West]A : 2 [West]C : 1 [North-

East]B : 1 [North]

Routing table

D : 0 [Local]A : 1 [North]E : 1 [East]C : 2 [East]

A=0;B=1;C=2;D=1;E=2

Distance vector

example (7)

C

D E

Routing tableA : 0 [ Local

]D : 1 [South]B : 1 [East]C : 2 [East]E : 2 [East]

A B C

D E

Routing tableB : 0 [Local]A : 1 [West]C : 1 [East]E : 1 [South]D : 2 [South]

Routing tableC : 0 [Local]E : 1 [South-

West]D : 2 [South-

West]A : 2 [West]B : 1 [West]

Routing tableE : 0 [Local]D : 1 [West]A : 2 [West]C : 1 [North-

East]B : 1 [North]

Routing tableD : 0 [Local]A : 1 [North]E : 1 [East]C : 2 [East]B : 2 [North]

Agenda

•Reliable transmission

•Building a network

•Datagram organisation

•Virtual circuit organisation

•Distance vector routing

•Link state routing

Link state routing

•Objectives of the routing protocol

•Compute all forwarding tables

•Principle

•Each node detects its neighbours

•Each node regularly sends list of its neighbours to all nodes

Discovering neighbours

•Manually

•Automatically

E

A B

E

B:HELLO

A:HELLO

E:HELLO

Link state packets

•How to reliably send LSPs to all nodes ?

C

D E

LinksA-B : 1A-D : 1

A B C

D E

LinksB-C : 1C-E : 1

LinksE-D : 1E-B : 1E-C : 1

LinksA-D : 1D-E : 1

LinksA-B : 1B-E : 1B-C : 1

LinksA-D : 1D-E : 1

LSP : E [D:1];[B:1];[C:1]

LSP : E [D:1];[B:1];[C:1]

LSP : E [D:1];[B:1];[C:1]

Flooding•Naive approach

•Send received LSP to all neighbours

C

D E

LinksA-B : 1A-D : 1

A B C

D E

LinksB-C : 1C-E : 1B-E : 1D-E : 1

LinksE-D : 1E-B : 1E-C : 1

LinksA-B : 1B-E : 1B-C : 1E-D : 1E-C : 1

LinksA-D : 1D-E : 1B-E : 1E-C : 1

LSP : E [D:1];[B:1];[C:1]

LSP : E [D:1];[B:1];[C:1]

LSP : E [D:1];[B:1];[C:1]

Flooding

C

D E

LinksA-B : 1A-D : 1

A B C

D E

LinksB-C : 1C-E : 1

LinksE-D : 1E-B : 1E-C : 1

LinksA-D : 1D-E : 1

LinksA-B : 1B-E : 1B-C : 1

LinksA-D : 1D-E : 1

LSP : E-0 [D:1];[B:1];[C:1]

LSP : E-0 [D:1];[B:1];[C:1]

LSP : E-0 [D:1];[B:1];[C:1]

LSPs

LSPs

LSPsE-0 [D:1];[B:1];[C:1]

LSPsLSPs

Flooding

C

D E

LinksA-B : 1A-D : 1

A B C

D E

LinksB-C : 1C-E : 1B-E : 1D-E : 1

LinksE-D : 1E-B : 1E-C : 1

LinksA-B : 1B-E : 1B-C : 1E-D : 1E-C : 1

LinksA-D : 1D-E : 1B-E : 1E-C : 1

LSP : E-0 [D:1];[B:1];[C:1]

LSP : E-0 [D:1];[B:1];[C:1]

LSPsE-0 [D:1];[B:1];[C:1]

LSPsE-0 [D:1];[B:1];[C:1]

LSPsE-0 [D:1];[B:1];[C:1]

LSPsE-0 [D:1];[B:1];[C:1]

LSPs

LSP : E-0 [D:1];[B:1];[C:1]

After flooding•Each node knows full network topology

C

D E

A B C

D E

LinksA-B, B-A :

1B-E, E-B :

1B-C, C-B :

1E-D, D-E :

1E-C, C-E :

1A-D, D-A :

1

LSPsE-0 [D:1];[B:1];[C:1]

A-0 [D:1];[B:1]B-0 [A:1] [C:1]

[E:1]C-0 [B:1] [E:1]D-0 [A:1] [E:1]

LinksA-B, B-A :

1B-E, E-B :

1B-C, C-B :

1E-D, D-E :

1E-C, C-E :

1A-D, D-A :

1

LSPsE-0 [D:1];[B:1];[C:1]

A-0 [D:1];[B:1]B-0 [A:1] [C:1]

[E:1]C-0 [B:1] [E:1]D-0 [A:1] [E:1]

LinksA-B, B-A :

1B-E, E-B :

1B-C, C-B :

1E-D, D-E :

1E-C, C-E :

1A-D, D-A :

1

LSPsE-0 [D:1];[B:1];[C:1]

A-0 [D:1];[B:1]B-0 [A:1] [C:1]

[E:1]C-0 [B:1] [E:1]D-0 [A:1] [E:1]

LinksA-B, B-A :

1B-E, E-B :

1B-C, C-B :

1E-D, D-E :

1E-C, C-E :

1A-D, D-A :

1

LSPsE-0 [D:1];[B:1];[C:1]

A-0 [D:1];[B:1]B-0 [A:1] [C:1]

[E:1]C-0 [B:1] [E:1]D-0 [A:1] [E:1]

LinksA-B, B-A :

1B-E, E-B :

1B-C, C-B :

1E-D, D-E :

1E-C, C-E :

1A-D, D-A :

1

LSPsE-0 [D:1];[B:1];[C:1]

A-0 [D:1];[B:1]B-0 [A:1] [C:1]

[E:1]C-0 [B:1] [E:1]D-0 [A:1] [E:1]