Week 3
Building a network
Supporting applications
Agenda
• Building a network
• Network basics
• Distance Vector routing
• Link State routing
• Supporting applications
Addressing
• What are the advantages/drawbacks of
using flat addresses ?
Addressing
• What are the advantages/drawbacks of
using hierarchical addresses ?
Datagram mode
• Early work on this concept that lead to the
current Internet was done in France
• Cyclades project lead by Louis Pouzin
http://goo.gl/lwdlwS
Agenda
• Building a network
• Network basics
• Distance Vector routing
• Link State routing
• Supporting applications
What is the distance vector
sent by R5 after
convergence ?
R1
R2
R3 R4
R5
R6
4
4
1
0
9
Default link weight is 1
Question
• How does a router using distance vectors
detect the failure of a link ?
DV sent by R4 when link
fails ?
R1
R2
R3 R4
R5
R6
3
4
1
0
9
Default link weight is 1
How to react ?
All routes that use a failed link are advertised
with an infinite cost
C
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B :
C :
E :
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]
A=0;B= ;C= ;D=1;E=
Routing table
B : 0 [Local]
A :
C : 1 [East]
E : 1 [South]
D : 2 [South]
Student question
• What is the difference between a routing
table and a forwarding table ?
Question
• A distance vector router accepts a route
towards destination d on link l if any of three
conditions is met. What are these three
conditions ?
• d is not already in the routing table
• d is already in the routing table, but with a shorter path
• d is already in the routing table, but with a longer path
• the sequence number of the distance vector is larger than
the previous one
• d is already in the routing table, but the route was learned
from another link than l
• d is already in the routing table, and the route was learned
on link l
Reception of DV
Received(Vector V[],link l)
{ /* received vector from link l */
for each destination=d in V[]
{
if (d isin R[])
{ if ( ((V[d].cost+l.cost) < R[d].cost) OR
( R[d].link == l) )
{ /* better route or change to current route */
R[d].cost=V[d].cost+l.cost;
R[d].link=l;
}
}
else
{ /* new route */
R[d].cost=V[d].cost+l.cost;
R[d].link=l;
}
}
Example
D must remove all the routes learned from
North that are announced with an ∞ cost
Routing table
A : 0 [ Local ]
D : 1 [South]
B :
C :
E :
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]
A=0;B= ;C= ;D=1;E=
Routing table
B : 0 [Local]
A :
C : 1 [East]
E : 1 [South]
D : 2 [South]
Example
C
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B :
C :
E :
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 :
D=0;B= ;A=1;C=2;E=11
Routing table
B : 0 [Local]
A :
C : 1 [East]
E : 1 [South]
D : 2 [South]
Example
C
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B :
C : 3 [South]
E : 2 [South]
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 :
Routing table
B : 0 [Local]
A :
C : 1 [East]
E : 1 [South]
D : 2 [South]
B=0;A= ;C=1;E=1;D=2
B=0;A= ;C=1;E=1;D=2
Example
C
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B :
C : 3 [South]
E : 2 [South]
A B C
D E
Routing table
C : 0 [Local]
E : 1 [South-West]
D : 2 [South-West]
A :
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 :
Routing table
B : 0 [Local]
A :
C : 1 [East]
E : 1 [South]
D : 2 [South]
E=0;A=2;D=1;C=1;B=1
E=0;A=2;D=1;C=1;B=1
E=0;A=2;D=1;C=1;B=1
Example
C
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B :
C : 3 [South]
E : 2 [South]
A B C
D E
Routing table
C : 0 [Local]
E : 1 [South-West]
D : 2 [South-West]
A: 3 [South-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 [East]
Routing table
B : 0 [Local]
A : 3 [South]
C : 1 [East]
E : 1 [South]
D : 2 [South]
A=1;B=2;C=2;D=1;E=1
• Everything is ok ?
Another failure
C
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B : 3 [South]
C : 3 [South]
E : 2 [South]
A B C
D E
Routing table
C : 0 [Local]
E : 1 [South-West]
D : 2 [South-West]
A: 3 [South-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 [East]
Routing table
B : 0 [Local]
A : 3 [South]
C : 1 [East]
E : 1 [South]
D : 2 [South]
A=1;B= ;C= ;D=1;E=
Another failure
But A could also send its distance vector before
D
C
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B : 3 [South]
C : 3 [South]
E : 2 [South]
A B C
D E
Routing table
C : 0 [Local]
E : 1 [South-West]
D : 2 [South-West]
A: 3 [South-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 :
C :
B :
Routing table
B : 0 [Local]
A : 3 [South]
C : 1 [East]
E : 1 [South]
D : 2 [South]
A=0;D=1;B=3;C=3;E=2
Another failure
D updates its routing table
C
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B : 3 [South]
C : 3 [South]
E : 2 [South]
A B C
D E
Routing table
C : 0 [Local]
E : 1 [South-West]
D : 2 [South-West]
A: 3 [South-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 : 3 [North]
C : 4 [North]
B : 4 [North]
Routing table
B : 0 [Local]
A : 3 [South]
C : 1 [East]
E : 1 [South]
D : 2 [South]
D=0;A=1;E=3;C=4;B=4
Another failure
C
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B : 5 [South]
C : 5 [South]
E : 4 [South]
A B C
D E
Routing table
C : 0 [Local]
E : 1 [South-West]
D : 2 [South-West]
A: 3 [South-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 : 3 [North]
C : 4 [North]
B : 4 [North]
Routing table
B : 0 [Local]
A : 3 [South]
C : 1 [East]
E : 1 [South]
D : 2 [South]
A=0;D=1;B=5;C=5;E=4
Another failure
C
D E
Routing table
A : 0 [ Local ]
D : 1 [South]
B : 5 [South]
C : 5 [South]
E : 4 [South]
A B C
D E
Routing table
C : 0 [Local]
E : 1 [South-West]
D : 2 [South-West]
A: 3 [South-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 : 5[North]
C : 6 [North]
B : 6 [North]
Routing table
B : 0 [Local]
A : 3 [South]
C : 1 [East]
E : 1 [South]
D : 2 [South]
A=1;D=0;B=6;C=6;E=5
• This problem is called counting to infinity
• How can we prevent it ?
Another failure
• Split horizon
• Split horizon with poisoning
DV sent by R3 to R1 with
split horizon?
R1
R2
R3 R4
R5
R6
3
4
1
0
9
Default link weight is 1
Limitations of split
horizon with poisoning
C
E
Routing table
A : 0 [ Local ]
B :
C :
E :
A B C
E
Routing table
C : 0 [Local]
E : 1 [South-West]
A : 2 [West]
B : 1 [West]
Routing table
E : 0 [Local]
A : 2 [North]
C : 1 [North-East]
B : 1 [North]
Routing table
B : 0 [Local]
A : 1 [West]
C : 1 [East]
E : 1 [South]
A=2;B=1; C=0;E=
A= ;B=0; C=1;E=
A= ;B=0; C= E=1
Limitations
E will send its own distance vector
B will discover a new route towards A
via E and will advertise it to C
New count to infinity problem
C
E
Routing table
A : 0 [ Local ]
B :
C :
E :
A B C
E
Routing table
C : 0 [Local]
E : 1 [South-West]
A : 2 [West]
B : 1 [West]
Routing table after B’s vector
E : 0 [Local]
A :
C : 1 [North-East]
B : 1 [North]
Routing table after C’s vector
E : 0 [local]
A : 3 [North-East]
C : 1 [North-East]
B : 1 [North]
Routing table
B : 0 [Local]
A : 1 [West]
C : 1 [East]
E : 1 [South]
A= ;B=0; C=1;E=
A=2;B=1; C=0;E=
Operational issue
Operation
At each expiration of its 30-sec timer, each router
sends its own distance vector and restarts its
timer
Problem
After a power failure, all routers might restart at
same time and have synchronized timers
Each router will need to process bursts of DV
messages
Loop-free routing
• What guarantees the fact that packets
sent to destination d will eventually reach
destination d ?
Agenda
• Building a network
• Network basics
• Distance Vector routing
• Link State routing
• Supporting applications
How to set link costs ?
• By manual configuration
• Based on link bandwidth
• By measurements
• Only strictly positive link weights
Question
• Which of the following informations are
contained in a link state packet ?
• sequence number
• list of paths to reach known destinations
• list of pairs (known dest, cost)
• age of the link state packet
• clock time
• list of pairs (neighbor, cost to this
neighbor)
• CRC
Link state packet sent by R4
?
R1
R2
R3 R4
R5
R6
3
4
1
0
9
Default link weight is 1
Two way connectivity
check
C
D E
A B C
D E
Links
A-B, B-A : 1
B-E, E-B : 1
B-C, C-B : 1
E-D, D-E : 1
E-C, C-E : 1
A-D, D-A : 1
LSPs
E-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]
Links
A-B, B-A : 1
B-E, E-B : 1
B-C, C-B : 1
E-D, D-E : 1
E-C, C-E : 1
A-D, D-A : 1
LSPs
E-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]
Links
A-B, B-A : 1
B-E, E-B : 1
B-C, C-B : 1
E-D, D-E : 1
E-C, C-E : 1
A-D, D-A : 1
LSPs
E-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]
Links
A-B, B-A : 1
B-E, E-B : 1
B-C, C-B : 1
E-D, D-E : 1
E-C, C-E : 1
A-D, D-A : 1
LSPs
E-1 [D: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]
Links
A-B, B-A : 1
B-E, E-B : 1
B-C, C-B : 1
E-D, D-E : 1
E-C, C-E : 1
A-D, D-A : 1
LSPs
E-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]
LSP : E-1 [D:1];[C:1]
LSP : E-1 [D:1];[C:1]
• A link is only considered useable only if
both directions have been advertised
Transient problems
when a link fails
A B
C D
100
A's FIB
B : East
C : South
D : East
D's FIB
A : North
B : North
C : North
C's FIB
A : North
B : North
D : North
B's FIB
A : West
C : West
D : South
A and B are not yet
aware of failure
Packets will be lost
A detects the failure
A B
C D
100
A's FIB
B : East
C : South
D : East
D's FIB
A : North
B : North
C : North
C's FIB
A : North
B : North
D : North
B's FIB
A : West
C : West
D : South
B not yet aware of failure
A cannot reach B/D
Packets continue to be lost
A recomputes Dijkstra
and sends its LSP
A B
C D
100
A's FIB
B : South
C : South
D : South
D's FIB
A : North
B : North
C : North
C's FIB
A : North
B : North
D : North
B's FIB
A : West
C : West
D : South
B not yet aware of failure
A loops towards B/D
Packets continue to be lost
A:1 C=1
B detects the failure
A B
C D
100
A's FIB
B : South
C : South
D : South
D's FIB
A : North
B : North
C : North
C's FIB
A : North
B : North
D : North
B's FIB
A : West
C : West
D : South
B cannot reach A/C
A loops towards B/D
Packets continue to be lost
A:1 C=1
B recomputes Dijkstra
and sends its LSP
A B
C D
100
A's FIB
B : South
C : South
D : South
D's FIB
A : North
B : North
C : North
C's FIB
A : North
B : North
D : North
B's FIB
A : South
C : South
D : South
B cannot reach A/C
A loops towards B/D
Packets continue to be lost
B:1 D=1
C recomputes Dijkstra
A B
C D
100
A's FIB
B : South
C : South
D : South
D's FIB
A : North
B : North
C : North
C's FIB
A : North
B : East
D : East
B's FIB
A : South
C : South
D : South
B loops towards A/C
A can reach everyone
Packets continue to be lost
D recomputes Dijkstra
A B
C D
100
A's FIB
B : South
C : South
D : South
D's FIB
A : West
B : North
C : West
C's FIB
A : North
B : East
D : East
B's FIB
A : South
C : South
D : South
B can reach everyone
A can reach everyone
Network has been updated
Router failures
• Planned failures
• Router reboot to upgrade OS
• Sudden failure
• due to power outage, software or
hardware crash
Comparing routing
protocols
• Neighbour detection
• Detecting link failures
• Detecting router failures
• Link weights
• What information is distributed ?
• How often ?
• How are forwarding tables built ?
Agenda
• Building a network
• Supporting applications
• Transport services
• Reliable transport protocols
Question
• What are the characeristics of the network
service in the Internet ?
• packets can get lost
• packets can get duplicated
• transmission errors can affect packet
payload
• packets can be reordered
Connectionless
Source Provider Destination
DATA.request(S,D,"M")
DATA.indication(S,D,"M")
Time
Connection oriented
Source Network provider Destination
CONNECT.request
CONNECT.indication
CONNECT.confirm
Source considers
connection open
CONNECT.response
Destination considers
connection open
Data transfer
Message mode
Source Provider Destination
CONNECT.request
CONNECT.indication
CONNECT.confirm
CONNECT.response
DATA.request("A") DATA.ind("A")
DATA.request("BCD") DATA.ind("BCD")
DATA.request("EF") DATA.ind("EF")
Data transfer
Stream mode
Source Provider Destination
CONNECT.request
CONNECT.indication
CONNECT.confirm
CONNECT.response
DATA.ind("B")
DATA.ind("A")
DATA.request("AB")
DATA.request("CD")
DATA.ind("C")
DATA.request("EF")
DATA.ind("DEF")
Abrupt release
Source Provider Destination
DISCONNECT.req(abrupt)
DISCONNECT.indication
DATA.request("A")
DATA.request("B")
DATA.indication("A")
DATA.request("C")
Connection opened Connection opened
Graceful release
Source Provider Destination
DISCONNECT.req(graceful)
DISCONNECT.ind(graceful)
Connection opened Connection opened
DATA.request("A")
DATA.request("B")
DATA.indication("A")
DATA.indication("B")
DATA.request("C")
DATA.indication("C")
Source->Destination
connection closed
DATA.request("D")
DATA.indication("D")
DISCONNECT.req(graceful)
Connection closed
DISCONNECT.ind(graceful)
Connection closed
Transport services
useable on Internet
• TCP : Connection oriented, bytestream
• UDP : Connectionless
Agenda
• Building a network
• Supporting applications
• Transport services
• Reliable transport protocols
Reference model
Multiplexing
• How to multiplex data coming from
multiple applications ?
Multiplexing
Server
Client
Source port : 1234
Destination port: 5678
Request
Response
Source port : 5678
Destination port: 1234
Connection
establishment
• How to reliably open a connection ?
Connect.req
Connect.ind
CR
CA
Connection established
Connect.resp
Connect.conf
Connection established
Connections
A<->B : ...
Connections
A<->B : ...
Segment loss
Connect.req()
Connect.ind()
Connect.conf() CA
Connection established
Connection established
CR
CR
Retransmission
timer expires
Connect.resp()
Segments
delayed
Connect.ind()
CR
Connect.conf() CA
CR
Old previous CR
First connection established
How to detect duplicates ?
Connect.req()
D
CA
Connect.resp
First connection established
First connection stopped First connection stopped
Delayed segments
• How to deal with delayed segments ?
• Network level guarantee
• No packet will survive more than MSL
seconds inside the network
• Transport entities use on a local clock to
detect duplicated connection
establishment requests
Three way handshake
CR (seq=x)
CA (seq=y, ack=x)
CA (seq=x, ack=y)
Sequence number x read
from local transport clock
Local state :
Connection to B :
- Wait for ack for CR (x)
- Start retransmission timer
Sequence number y read from
local transport clock
CA sent to ack CR
Local state :
Connection to A :
- Wait for ack for CA(y)
Received CA acknowledges CR
Send CA to ack received CA
Local state :
Connection to B :
- established
- current_seq = x
The sequence numbers used
for the data segments will start
from x
The sequence numbers
used for the data segments
will start from y
D(x)
D(y)
Local state :
Connection to A :
- established
- current_seq=y
Connection established
Connection established
Host A Host B
Reliable transfert
• How to reliably transport data ?
• Selective repeat is a good starting point
• variable delays cause reordering
• be careful with duplications
• variable delays will influence timers
Closing a connection
• Two different approaches
• abrupt release
• send a segment that immediately closes the
connection –> may lead to losses
• graceful release
• send a marker that indicates the end of the date,
once the marker is acked, all data has been
received and connection is closed
• independent release of the two directions

Part 3 : building a network and supporting applications

  • 1.
    Week 3 Building anetwork Supporting applications
  • 2.
    Agenda • Building anetwork • Network basics • Distance Vector routing • Link State routing • Supporting applications
  • 3.
    Addressing • What arethe advantages/drawbacks of using flat addresses ?
  • 4.
    Addressing • What arethe advantages/drawbacks of using hierarchical addresses ?
  • 5.
    Datagram mode • Earlywork on this concept that lead to the current Internet was done in France • Cyclades project lead by Louis Pouzin http://goo.gl/lwdlwS
  • 6.
    Agenda • Building anetwork • Network basics • Distance Vector routing • Link State routing • Supporting applications
  • 7.
    What is thedistance vector sent by R5 after convergence ? R1 R2 R3 R4 R5 R6 4 4 1 0 9 Default link weight is 1
  • 8.
    Question • How doesa router using distance vectors detect the failure of a link ?
  • 9.
    DV sent byR4 when link fails ? R1 R2 R3 R4 R5 R6 3 4 1 0 9 Default link weight is 1
  • 10.
    How to react? All routes that use a failed link are advertised with an infinite cost C D E Routing table A : 0 [ Local ] D : 1 [South] B : C : E : 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] A=0;B= ;C= ;D=1;E= Routing table B : 0 [Local] A : C : 1 [East] E : 1 [South] D : 2 [South]
  • 11.
    Student question • Whatis the difference between a routing table and a forwarding table ?
  • 12.
    Question • A distancevector router accepts a route towards destination d on link l if any of three conditions is met. What are these three conditions ? • d is not already in the routing table • d is already in the routing table, but with a shorter path • d is already in the routing table, but with a longer path • the sequence number of the distance vector is larger than the previous one • d is already in the routing table, but the route was learned from another link than l • d is already in the routing table, and the route was learned on link l
  • 13.
    Reception of DV Received(VectorV[],link l) { /* received vector from link l */ for each destination=d in V[] { if (d isin R[]) { if ( ((V[d].cost+l.cost) < R[d].cost) OR ( R[d].link == l) ) { /* better route or change to current route */ R[d].cost=V[d].cost+l.cost; R[d].link=l; } } else { /* new route */ R[d].cost=V[d].cost+l.cost; R[d].link=l; } }
  • 14.
    Example D must removeall the routes learned from North that are announced with an ∞ cost Routing table A : 0 [ Local ] D : 1 [South] B : C : E : 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] A=0;B= ;C= ;D=1;E= Routing table B : 0 [Local] A : C : 1 [East] E : 1 [South] D : 2 [South]
  • 15.
    Example C D E Routing table A: 0 [ Local ] D : 1 [South] B : C : E : 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 : D=0;B= ;A=1;C=2;E=11 Routing table B : 0 [Local] A : C : 1 [East] E : 1 [South] D : 2 [South]
  • 16.
    Example C D E Routing table A: 0 [ Local ] D : 1 [South] B : C : 3 [South] E : 2 [South] 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 : Routing table B : 0 [Local] A : C : 1 [East] E : 1 [South] D : 2 [South] B=0;A= ;C=1;E=1;D=2 B=0;A= ;C=1;E=1;D=2
  • 17.
    Example C D E Routing table A: 0 [ Local ] D : 1 [South] B : C : 3 [South] E : 2 [South] A B C D E Routing table C : 0 [Local] E : 1 [South-West] D : 2 [South-West] A : 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 : Routing table B : 0 [Local] A : C : 1 [East] E : 1 [South] D : 2 [South] E=0;A=2;D=1;C=1;B=1 E=0;A=2;D=1;C=1;B=1 E=0;A=2;D=1;C=1;B=1
  • 18.
    Example C D E Routing table A: 0 [ Local ] D : 1 [South] B : C : 3 [South] E : 2 [South] A B C D E Routing table C : 0 [Local] E : 1 [South-West] D : 2 [South-West] A: 3 [South-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 [East] Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1 [South] D : 2 [South] A=1;B=2;C=2;D=1;E=1 • Everything is ok ?
  • 19.
    Another failure C D E Routingtable A : 0 [ Local ] D : 1 [South] B : 3 [South] C : 3 [South] E : 2 [South] A B C D E Routing table C : 0 [Local] E : 1 [South-West] D : 2 [South-West] A: 3 [South-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 [East] Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1 [South] D : 2 [South] A=1;B= ;C= ;D=1;E=
  • 20.
    Another failure But Acould also send its distance vector before D C D E Routing table A : 0 [ Local ] D : 1 [South] B : 3 [South] C : 3 [South] E : 2 [South] A B C D E Routing table C : 0 [Local] E : 1 [South-West] D : 2 [South-West] A: 3 [South-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 : C : B : Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1 [South] D : 2 [South] A=0;D=1;B=3;C=3;E=2
  • 21.
    Another failure D updatesits routing table C D E Routing table A : 0 [ Local ] D : 1 [South] B : 3 [South] C : 3 [South] E : 2 [South] A B C D E Routing table C : 0 [Local] E : 1 [South-West] D : 2 [South-West] A: 3 [South-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 : 3 [North] C : 4 [North] B : 4 [North] Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1 [South] D : 2 [South] D=0;A=1;E=3;C=4;B=4
  • 22.
    Another failure C D E Routingtable A : 0 [ Local ] D : 1 [South] B : 5 [South] C : 5 [South] E : 4 [South] A B C D E Routing table C : 0 [Local] E : 1 [South-West] D : 2 [South-West] A: 3 [South-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 : 3 [North] C : 4 [North] B : 4 [North] Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1 [South] D : 2 [South] A=0;D=1;B=5;C=5;E=4
  • 23.
    Another failure C D E Routingtable A : 0 [ Local ] D : 1 [South] B : 5 [South] C : 5 [South] E : 4 [South] A B C D E Routing table C : 0 [Local] E : 1 [South-West] D : 2 [South-West] A: 3 [South-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 : 5[North] C : 6 [North] B : 6 [North] Routing table B : 0 [Local] A : 3 [South] C : 1 [East] E : 1 [South] D : 2 [South] A=1;D=0;B=6;C=6;E=5 • This problem is called counting to infinity • How can we prevent it ?
  • 24.
    Another failure • Splithorizon • Split horizon with poisoning
  • 25.
    DV sent byR3 to R1 with split horizon? R1 R2 R3 R4 R5 R6 3 4 1 0 9 Default link weight is 1
  • 26.
    Limitations of split horizonwith poisoning C E Routing table A : 0 [ Local ] B : C : E : A B C E Routing table C : 0 [Local] E : 1 [South-West] A : 2 [West] B : 1 [West] Routing table E : 0 [Local] A : 2 [North] C : 1 [North-East] B : 1 [North] Routing table B : 0 [Local] A : 1 [West] C : 1 [East] E : 1 [South] A=2;B=1; C=0;E= A= ;B=0; C=1;E= A= ;B=0; C= E=1
  • 27.
    Limitations E will sendits own distance vector B will discover a new route towards A via E and will advertise it to C New count to infinity problem C E Routing table A : 0 [ Local ] B : C : E : A B C E Routing table C : 0 [Local] E : 1 [South-West] A : 2 [West] B : 1 [West] Routing table after B’s vector E : 0 [Local] A : C : 1 [North-East] B : 1 [North] Routing table after C’s vector E : 0 [local] A : 3 [North-East] C : 1 [North-East] B : 1 [North] Routing table B : 0 [Local] A : 1 [West] C : 1 [East] E : 1 [South] A= ;B=0; C=1;E= A=2;B=1; C=0;E=
  • 28.
    Operational issue Operation At eachexpiration of its 30-sec timer, each router sends its own distance vector and restarts its timer Problem After a power failure, all routers might restart at same time and have synchronized timers Each router will need to process bursts of DV messages
  • 29.
    Loop-free routing • Whatguarantees the fact that packets sent to destination d will eventually reach destination d ?
  • 30.
    Agenda • Building anetwork • Network basics • Distance Vector routing • Link State routing • Supporting applications
  • 31.
    How to setlink costs ? • By manual configuration • Based on link bandwidth • By measurements • Only strictly positive link weights
  • 32.
    Question • Which ofthe following informations are contained in a link state packet ? • sequence number • list of paths to reach known destinations • list of pairs (known dest, cost) • age of the link state packet • clock time • list of pairs (neighbor, cost to this neighbor) • CRC
  • 33.
    Link state packetsent by R4 ? R1 R2 R3 R4 R5 R6 3 4 1 0 9 Default link weight is 1
  • 34.
    Two way connectivity check C DE A B C D E Links A-B, B-A : 1 B-E, E-B : 1 B-C, C-B : 1 E-D, D-E : 1 E-C, C-E : 1 A-D, D-A : 1 LSPs E-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] Links A-B, B-A : 1 B-E, E-B : 1 B-C, C-B : 1 E-D, D-E : 1 E-C, C-E : 1 A-D, D-A : 1 LSPs E-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] Links A-B, B-A : 1 B-E, E-B : 1 B-C, C-B : 1 E-D, D-E : 1 E-C, C-E : 1 A-D, D-A : 1 LSPs E-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] Links A-B, B-A : 1 B-E, E-B : 1 B-C, C-B : 1 E-D, D-E : 1 E-C, C-E : 1 A-D, D-A : 1 LSPs E-1 [D: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] Links A-B, B-A : 1 B-E, E-B : 1 B-C, C-B : 1 E-D, D-E : 1 E-C, C-E : 1 A-D, D-A : 1 LSPs E-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] LSP : E-1 [D:1];[C:1] LSP : E-1 [D:1];[C:1] • A link is only considered useable only if both directions have been advertised
  • 35.
    Transient problems when alink fails A B C D 100 A's FIB B : East C : South D : East D's FIB A : North B : North C : North C's FIB A : North B : North D : North B's FIB A : West C : West D : South A and B are not yet aware of failure Packets will be lost
  • 36.
    A detects thefailure A B C D 100 A's FIB B : East C : South D : East D's FIB A : North B : North C : North C's FIB A : North B : North D : North B's FIB A : West C : West D : South B not yet aware of failure A cannot reach B/D Packets continue to be lost
  • 37.
    A recomputes Dijkstra andsends its LSP A B C D 100 A's FIB B : South C : South D : South D's FIB A : North B : North C : North C's FIB A : North B : North D : North B's FIB A : West C : West D : South B not yet aware of failure A loops towards B/D Packets continue to be lost A:1 C=1
  • 38.
    B detects thefailure A B C D 100 A's FIB B : South C : South D : South D's FIB A : North B : North C : North C's FIB A : North B : North D : North B's FIB A : West C : West D : South B cannot reach A/C A loops towards B/D Packets continue to be lost A:1 C=1
  • 39.
    B recomputes Dijkstra andsends its LSP A B C D 100 A's FIB B : South C : South D : South D's FIB A : North B : North C : North C's FIB A : North B : North D : North B's FIB A : South C : South D : South B cannot reach A/C A loops towards B/D Packets continue to be lost B:1 D=1
  • 40.
    C recomputes Dijkstra AB C D 100 A's FIB B : South C : South D : South D's FIB A : North B : North C : North C's FIB A : North B : East D : East B's FIB A : South C : South D : South B loops towards A/C A can reach everyone Packets continue to be lost
  • 41.
    D recomputes Dijkstra AB C D 100 A's FIB B : South C : South D : South D's FIB A : West B : North C : West C's FIB A : North B : East D : East B's FIB A : South C : South D : South B can reach everyone A can reach everyone Network has been updated
  • 42.
    Router failures • Plannedfailures • Router reboot to upgrade OS • Sudden failure • due to power outage, software or hardware crash
  • 43.
    Comparing routing protocols • Neighbourdetection • Detecting link failures • Detecting router failures • Link weights • What information is distributed ? • How often ? • How are forwarding tables built ?
  • 44.
    Agenda • Building anetwork • Supporting applications • Transport services • Reliable transport protocols
  • 45.
    Question • What arethe characeristics of the network service in the Internet ? • packets can get lost • packets can get duplicated • transmission errors can affect packet payload • packets can be reordered
  • 46.
  • 47.
    Connection oriented Source Networkprovider Destination CONNECT.request CONNECT.indication CONNECT.confirm Source considers connection open CONNECT.response Destination considers connection open
  • 48.
    Data transfer Message mode SourceProvider Destination CONNECT.request CONNECT.indication CONNECT.confirm CONNECT.response DATA.request("A") DATA.ind("A") DATA.request("BCD") DATA.ind("BCD") DATA.request("EF") DATA.ind("EF")
  • 49.
    Data transfer Stream mode SourceProvider Destination CONNECT.request CONNECT.indication CONNECT.confirm CONNECT.response DATA.ind("B") DATA.ind("A") DATA.request("AB") DATA.request("CD") DATA.ind("C") DATA.request("EF") DATA.ind("DEF")
  • 50.
    Abrupt release Source ProviderDestination DISCONNECT.req(abrupt) DISCONNECT.indication DATA.request("A") DATA.request("B") DATA.indication("A") DATA.request("C") Connection opened Connection opened
  • 51.
    Graceful release Source ProviderDestination DISCONNECT.req(graceful) DISCONNECT.ind(graceful) Connection opened Connection opened DATA.request("A") DATA.request("B") DATA.indication("A") DATA.indication("B") DATA.request("C") DATA.indication("C") Source->Destination connection closed DATA.request("D") DATA.indication("D") DISCONNECT.req(graceful) Connection closed DISCONNECT.ind(graceful) Connection closed
  • 52.
    Transport services useable onInternet • TCP : Connection oriented, bytestream • UDP : Connectionless
  • 53.
    Agenda • Building anetwork • Supporting applications • Transport services • Reliable transport protocols
  • 54.
  • 55.
    Multiplexing • How tomultiplex data coming from multiple applications ?
  • 56.
    Multiplexing Server Client Source port :1234 Destination port: 5678 Request Response Source port : 5678 Destination port: 1234
  • 57.
    Connection establishment • How toreliably open a connection ? Connect.req Connect.ind CR CA Connection established Connect.resp Connect.conf Connection established Connections A<->B : ... Connections A<->B : ...
  • 58.
    Segment loss Connect.req() Connect.ind() Connect.conf() CA Connectionestablished Connection established CR CR Retransmission timer expires Connect.resp()
  • 59.
    Segments delayed Connect.ind() CR Connect.conf() CA CR Old previousCR First connection established How to detect duplicates ? Connect.req() D CA Connect.resp First connection established First connection stopped First connection stopped
  • 60.
    Delayed segments • Howto deal with delayed segments ? • Network level guarantee • No packet will survive more than MSL seconds inside the network • Transport entities use on a local clock to detect duplicated connection establishment requests
  • 61.
    Three way handshake CR(seq=x) CA (seq=y, ack=x) CA (seq=x, ack=y) Sequence number x read from local transport clock Local state : Connection to B : - Wait for ack for CR (x) - Start retransmission timer Sequence number y read from local transport clock CA sent to ack CR Local state : Connection to A : - Wait for ack for CA(y) Received CA acknowledges CR Send CA to ack received CA Local state : Connection to B : - established - current_seq = x The sequence numbers used for the data segments will start from x The sequence numbers used for the data segments will start from y D(x) D(y) Local state : Connection to A : - established - current_seq=y Connection established Connection established Host A Host B
  • 62.
    Reliable transfert • Howto reliably transport data ? • Selective repeat is a good starting point • variable delays cause reordering • be careful with duplications • variable delays will influence timers
  • 63.
    Closing a connection •Two different approaches • abrupt release • send a segment that immediately closes the connection –> may lead to losses • graceful release • send a marker that indicates the end of the date, once the marker is acked, all data has been received and connection is closed • independent release of the two directions

Editor's Notes

  • #31 Pseudocode Every N seconds: for each link=l { /* one different vector for each link */ Vector=null; for each destination=d in R[] { if (R[d].link<>l) { Vector=Vector+Pair(d,R[d].cost); } } Send(Vector); }
  • #37  The Synchronization of Periodic Routing Messages , Floyd, S., and Jacobson, V. IEEE/ACM Transactions on Networking, V.2 N.2, p. 122-136, April 1994.
  • #70 In this example, the duplicate CR is likely to be a previous retransmission of the CR that was delayed in the network.