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(a)
Data.req(e)
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
Retransmission
timer expires
0 1 2 3
0 1 2 3
Sending window is full
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 ?
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
• Reliable tranAsmigsseionnda
• Building a network
• Datagram organisation
• Virtual circuit organisation
• Distance vector routing
• Link state routing
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 !
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 ?
• Reliable tranAsmigsseionnda
• 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
Computing forwarding
tables
•
• A B C
C
E
D E
Routing table
A : Local
D : South
B : East
C : East [via B]
E: East [via B]
Routing table
A : West
B : Local
C : East
D : South [via E]
E : South
Routing table
A : West [via B]
B : West
C : Local
D : West [via B]
E : South West
Routing table
A : North
B : North [via A]
C : East [via E]
D : Local
E : East
Routing table
A : North [via B]
B : North
C : North-East
D : West
E : Local
Cost=1
Cost=1 Cost=1
Cost=1
Cost=1
Cost=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
Routing table
B : 0 [Local] Routing table
C
D E
Routing table
A : 0 [ Local ]
A B C
D E
C : 0 [Local]
Routing table
E : 0 [Local]
Routing table
D : 0 [Local]
Distance vector
example (2)
C
Routing table
B : 0 [Local]
A : 1 [West]
D E
Routing table
A : 0 [ Local ]
A B C
D E
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
Routing table
B : 0 [Local]
A : 1 [West]
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
A B C
D E
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
Routing table
B : 0 [Local]
A : 1 [West]
C : 1 [East]
E=0;D=1;A=2;C=1
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
A B C
D E
Routing table
C : 0 [Local]
Routing table
E : 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
Distance vector
example (5)
C
Routing table
B : 0 [Local]
A : 1 [West]
C : 1 [East]
E : 1 [South]
D : 2 [South]
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
A B C
D E
Routing table
C : 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
Routing table
B : 0 [Local]
A : 1 [West]
C : 1 [East]
E : 1 [South]
D : 2 [South]
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B : 1 [East]
C : 2 [East]
E : 2 [East]
A B C
D E
Routing table
C : 0 [Local]
E : 1 [South-West]
D : 2 [South-West]
A : 2 [West]
B : 1 [West]
Routing table
E : 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
Routing table
B : 0 [Local]
A : 1 [West]
C : 1 [East]
E : 1 [South]
D : 2 [South]
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B : 1 [East]
C : 2 [East]
E : 2 [East]
A B C
D E
Routing table
C : 0 [Local]
E : 1 [South-West]
D : 2 [South-West]
A : 2 [West]
B : 1 [West]
Routing table
E : 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]
B : 2 [North]
• Reliable tranAsmigsseionnda
• 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
Link state packets
C
Links
A-B : 1
B-E : 1
B-C : 1
A B C
LSP : E [D:1];[B:1];[C:1] LSP : E [D:1];[B:1];[C:1]
D E
Links
A-B : 1
A-D : 1
D E
Links
B-C : 1
C-E : 1
Links
E-D : 1
E-B : 1
E-C : 1
Links
A-D : 1
D-E : 1
LSP : E [D:1];[B:1];[C:1]
• How to reliably send LSPs to all nodes ?
Flooding
• Naive approach
• Send received LSP to all neighbours
C
D E
Links
A-B : 1
A-D : 1
LSP : E [D:1];[B:1];[C:1]
A B C
D E
Links
B-C : 1
C-E : 1
B-E : 1
D-E : 1
Links
E-D : 1
E-B : 1
E-C : 1
Links
A-B : 1
B-E : 1
B-C : 1
E-D : 1
E-C : 1
Links
A-D : 1
D-E : 1
B-E : 1
E-C : 1
LSP : E [D:1];[B:1];[C:1]
LSP : E [D:1];[B:1];[C:1]
Flooding
LSPs LSPs
C
LSP : E-0 [D:1];[B:1];[C:1] LSP : E-0 [D:1];[B:1];[C:1]
D E
Links
A-B : 1
A-D : 1
A B C
D E
Links
B-C : 1
C-E : 1
Links
E-D : 1
E-B : 1
E-C : 1
LSPs
Links
A-D : 1
D-E : 1
Links
A-B : 1
B-E : 1
B-C : 1
LSP : E-0 [D:1];[B:1];[C:1]
LSPs
LSPs
E-0 [D:1];[B:1];[C:1]