Routing
1
Network LayerNetwork Layer
goals:
understand principles
behind network layer
services:
routing (path
selection)
how a router works
instantiation and
implementation in
the Internet
Overview:
network layer services
routing principle: path
selection
hierarchical routing
IP
what’s inside a router?
Postal-service
mail carrier
Routing
2
Network layer functions
transport packet from sending to
receiving hosts
network layer protocols in every
host, router
Important functions:
Forwarding/switching:
per-router action of moving a
packet arriving at an input port to
the appropriate output port
Routing/Path determination:
calculation of the route that the
packet will take through the
network (from source to dest); this
is a network-wide process. Routing
algorithms
network
data link
physical
network
data link
physical
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
application
transport
network
data link
physical
HOST A
HOST B
Routing
3
DATAGRAM ROUTING (The internet model)
routers: no state about end-to-end connections
no network-level concept of 'connection'
packets are typically routed using destination host ID
packets between same source-destination pair may take
different paths
1. Send data
2. Receive data
application
transport
network
data link
physical
application
transport
network
data link
physical
Each router has a
forwarding table that
maps destination
addresses to link
interfaces
Routing
4
Routing
Graph (undirected) abstraction Graph (undirected) abstraction
for routing algorithms:for routing algorithms:
nodes represent routers
Lines/graph edges are
physical links
link cost: delay, cost of sending
a packet across link, or
congestion level
Goal: determine good path
(sequence of routers) through
network from source to
destination.
Routing protocol
A
ED
CB
F
2
2
1
3
1
1
2
5
3
5
'good' path:
typically means minimum
cost path
other definitions
possible
Physical distance, link
speed, monetary cost, etc.
Routing
5
ClassificationClassification of Routing Algorithms of Routing Algorithms
Global or decentralized Global or decentralized
information?information?
Global:
Least-cost path is computed using
complete, global knowledge of the
network:
topology, link cost info
Link State (LS) algorithms
Decentralized:
Least-cost path is calculated in an
iterative, distributed manner
router only knows physically-
connected neighbours, link costs
to neighbours
Involves an iterative process of
calculation & exchange of
distance vector information with
neighbours
Distance Vector (DV) algorithms
Static or dynamic?Static or dynamic?
Static:
routes change slowly over
time
Dynamic:
routes change more quickly
periodic update
in response to topology
or link cost changes
Routing
6
Distance Vector Routing AlgorithmDistance Vector Routing Algorithm
iterative:iterative:
continues until no nodes exchange
information anymore
self-terminating: no signal to stop
asynchronous:asynchronous:
nodes need not exchange info/iterate in
lock step!
distributed:distributed:
each node communicates only with
directly-attached neighbours
Routing
7
Distance Vector Algorithm Distance Vector Algorithm
Bellman-Ford Equation (dynamic programming)Bellman-Ford Equation (dynamic programming)
Define
d
x(y) := cost of least-cost path from x to y
Then
d
x(y) = min {c(x,v) + d
v(y) }
where min is taken over all neighbors v of x
v
Routing
8
Bellman-Ford example Bellman-Ford example
u
yx
wv
z
2
2
1
3
1
1
2
5
3
5 By inspection from the graph,
we can see that:
d
v
(z) = 5, d
x
(z) = 3, d
w
(z) = 3
d
u(z) = min { c(u,v) + d
v(z),
c(u,x) + d
x(z),
c(u,w) + d
w
(z) }
= min {2 + 5,
1 + 3,
5 + 3} = 4
The node that arrives with the minimum cost = the nextnext
hophop neighbour along the shortest path
➜
forwarding table
B-F equation says:
The least cost path from
node u to z is one of the
paths that passes through
node u’s neighbors
Routing
9
Distance Vector Routing AlgorithmDistance Vector Routing Algorithm
Distance Table data structure
row for each possible destination
column for each directly-
attached neighbor
Calculation of values
example: Node X, routing for
destination Y via directly
attached neighbor Z:
D (Y,Z)
X
distance from X to
Y, via Z as next hop
c(X,Z) + min {D (Y,w)}
Z
w
=
=
D ()
A
B
C
D
A
1
7
6
4
B
14
8
9
11
D
5
5
4
2
E
cost to destination via
d
e
s
t
in
a
t
io
n
Directly attached neighbors of E
A
E D
CB
7
8
1
2
1
2
Currently known minimum-cost
path from Z to Y
Routing
10
DISTANCE TABLE: Example
A
E D
CB
7
8
1
2
1
2
D ()
A
B
C
D
A
1
7
6
4
B
14
8
9
11
D
5
5
4
2
E
cost to destination via
d
e
s
t
in
a
t
io
n
D (C,D)
E
c(E,D) + min {D (C,w)}
D
w
=
=2+2 = 4
D (A,D)
E
c(E,D) + min {D (A,w)}
D
w
=
=2+3 = 5
D (A,B)
E
c(E,B) + min {D (A,w)}
B
w
=
=8+6 = 14
loop!
loop!
ENTRIES IN THE DATA TABLE for NODE E (after DV converges)
Node E to C via D
Node E to A via D
Node E to A via B
Direct link Any possible path from D to C
Routing
11
Distance table gives routing
table
D ()
A
B
C
D
A
1
7
6
4
B
14
8
9
11
D
5
5
4
2
E
cost to destination via
d
e
s
t
in
a
t
io
n
A
B
C
D
A,1
D,5
D,4
D,2
Outgoing link
to use, cost
d
e
s
t
in
a
t
io
n
Distance tableDistance table Routing tableRouting table
DD
EE
()()
A
E D
CB
7
8
1
2
1
2
Routing
12
Distance Vector Routing: Distance Vector Routing: (more details)
Iterative, asynchronous:Iterative, asynchronous:
Each local iteration (Distance
Table update) caused by:
Change of cost of an
attached link
Receipt of message update
from neighbour
Distributed:Distributed:
each node notifies neighbours
only when its least-cost pathleast-cost path
to any destination changes
wait for (change in local link
cost or msg from neighbor)
recompute distance table
if a least-costleast-cost path to any
destination has changed,
notify neighbors
Each node:Each node:
BELLMAN-FORD ALGORITHM – Internet RIP, BGP, IDRP, Novell IPX, ARPANet
Routing
13
Distance Vector Algorithm:Distance Vector Algorithm:
1 Initialization:
2 for all adjacent nodes v:
3 D (*,v) =infinite ( the * operator means "for all rows" )
4 D (v,v) = c(X,v)
5 for all destinations, y
6 send min D (y,w) to each neighbor (w over all X's neighbors )
X
X
X
w
At each node, X:
X Z
12
7
Y
Initially, set all link costs to all
destination nodes to infinite (∞)
Send a table of vectors to each
neighbor of X
Routing
14
Distance Vector Algorithm (cont.):
8 loop
9 wait (until I see a link cost change to neighbor V
10 or until I receive an update from neighbor V)
11 //link cost change//link cost change
12 if (c(X,V) changes by c(X,V) changes by dd)
13 /* change cost to all dest's via neighbor v by dd */
14 /* note: dd could be positive or negative */
15 for all destinations y: D (y,V) = D (y,V) + dd
16 //receipt of routing table from neighbor V//receipt of routing table from neighbor V
17 else if (update received from V wrt destination Yupdate received from V wrt destination Y)
18 /* shortest path from V to some Y has changed */
19 /* V has sent a new value new value for its min Dmin D
VV
(Y,w) (Y,w) */
20 /* call this received new value as newval */
21 for the single destination y: D (Y,V) = c(X,V) + newval newval
22 //new least-cost to any destination Y found //new least-cost to any destination Y found
23 if we have a new min D (Y,w) for any destination Ywe have a new min D (Y,w) for any destination Y
24 send new value of min D (Y,w) to all neighbors
25
26 forever
w
XX
X
X
X
w
w
Change in link cost;
therefore, update
Entire column in
distance table
Received one
update from
neighbor v;
therefore,
Calculate new
link cost in distance
table
Routing
15
Distance Vector Algorithm: example
X Z
12
7
Y
D (Y,Z)
X
c(X,Z) + min {D (Y,w)}
w
=
=7+1 = 8
Z
D (Z,Y)
X
c(X,Y) + min {D (Z,w)}
w
=
=2+1 = 3
Y
Let’s examine one sample
computation here
Routing
16
Distance Vector Algorithm: example
X Z
12
7
Y
Examine which
table finds a new
minimum cost
value after an
update
Routing
17
Distance Vector: link cost changes
Link cost changes:
node detects local link cost change
updates distance table (line 15)
if cost change in least cost path,
notify neighbours (lines 23,24)
X Z
14
50
Y
1
algorithm
terminates
“good
news
travels
fast”
Note: The illustrations limits the exchange of packets between nodes Y and Z only.
Routing
18
Distance Vector: link cost changes
Link cost changes:
good news travels fast
bad news travels slow -
'count to infinity' problem!
X Z
14
50
Y
60
algorithm
continues
on!
Routing loop bet. Y & Z –
will persist after 4444
iterations
Routing
19
Distance Vector: link cost changes
X Z
14
50
Y
60
algorithm
continues
on!
Link-cost change: the new link-cost to X changes from
4 to 60.
ROUTING LOOP! Node Y doesn’t know that Z would pass through Y itself to get to X (at
this point in time, Z is still using the old least-cost path (from Node Y to X is equal to 4)
Routing
Table for
Node Y
Routing
Table for
Node Z
Sometime after t0: Node Y calculates the new least-
cost path, and finds that passing through Z is more cost
effective to reach Node X
At time t1: Node Y broadcasts the new
least-cost path to Z (neighbor)
Sometime after t1: Node Z receives the new
least-cost to Node X from Y, then computes
a new least-cost to X
Node Z computes the new least-cost to X,
then updates its Routing Table
t2: Node Z informs y of its new least-cost to
X, since it has changed (increased)
And so on, and
so forth…
Routing
20
Distance Vector: poisoned reverse
If Z routes through Y to get to X :
Z tells Y its (Z's) distance to X is
infinite (so Y won’t route to X via Z)
will this completely solve count to
infinity problem?
X Z
14
50
Y
60
algorithm
terminates
It does not. Loops with nodes
>= 3 will not be detected!
Routing
21
Poisone Reverse Algorithm
Example
How to apply the Poisoned Reverse Algorithm?
A B C D
A 4 ∞∞ ∞∞ ∞∞
B ∞∞ 1 ∞∞ ∞∞
C ∞∞ 8 3 ∞∞
D ∞∞ ∞∞ 6 7
Eventually, the value 8 would become ∞∞
because it is not a direct link, and it is not
the least-cost path for destination C
If the link is NOT a direct link and if the link-cost is NOT equal to the minimum
cost for a given destination node, then set the link-cost = ∞ ∞ (infinite)
via
d
e
s
t
i
n
a
t
i
o
n
∞∞
Inspect each row,
22
Link-State Routing AlgorithmLink-State Routing Algorithm
Dijkstra’s algorithm
•net topology, link costs known
to all nodes
–accomplished via “link state
broadcast”
–all nodes have the same info
•computes least cost paths from
one node (‘source”) to all other
nodes
–gives forwarding table for
that node
•iterative: after k iterations,
know least cost path to k dest.’s
Notation:
•c(x,y): link cost from node
x to y; set equal to ∞ if
not direct neighbors
•D(v): current value of cost
of path from source to
dest. v
•p(v): predecessor node
along path from source to v
•N': set of nodes whose
least cost path definitively
known
23
Dijsktra’s Algorithm
1 Initialization:
2 N' = {u}
3 for all nodes v
4 if v adjacent to u
5 then D(v) = c(u,v)
6 else D(v) = ∞
7
8 Loop
9 find w not in N' such that D(w) is a minimum
10 add w to N'
11 update D(v) for all v adjacent to w and not in N' :
12 D(v) = min( D(v), D(w) + c(w,v) )
13 /* new cost to v is either old cost to v or known
14 shortest path cost to w plus cost from w to v */
15 until all nodes in N'
24
Dijkstra’s algorithm: example
Step
0
1
2
3
4
5
N'
u
ux
uxy
uxyv
uxyvw
uxyvwz
D(v),p(v)
2,u
2,u
2,u
D(w),p(w)
5,u
4,x
3,y
3,y
D(x),p(x)
1,u
D(y),p(y)
∞
2,x
D(z),p(z)
∞
∞
4,y
4,y
4,y
u
yx
wv
z
2
2
1
3
1
1
2
5
3
5
8 Loop
9 find w not in N' such that D(w) is a
minimum
10 add w to N'
11 update D(v) for all v adjacent to w
and not in N' :
12 D(v) = min( D(v), D(w) + c(w,v) )
13 /* new cost to v is either old cost
to v or known
14 shortest path cost to w plus cost
from w to v */
15 until all nodes in N'
1 Initialization:
2 N' = {u}
3 for all nodes v
4 if v adjacent to u
5 then D(v) = c(u,v)
6 else D(v) = ∞
25
Dijkstra’s algorithm: example (2)
u
yx
wv
z
Resulting shortest-path tree from u:
v
x
y
w
z
(u,v)
(u,x)
(u,x)
(u,x)
(u,x)
destinationlink
Resulting forwarding table in u:
Next hop router for node u
to take: (either v or x)
26
Algorithm complexity: n nodes
•each iteration: need to check all nodes, w, not in N
•n(n+1)/2 comparisons: O(n
2
)
•more efficient implementations possible: O(nlogn)
Oscillations possible:
•e.g., link cost = amount of carried traffic
A
D
C
B
1 1+e
e0
e
1
1
00
A
D
C
B
2+e 0
00
1+e1
A
D
C
B
0 2+e
1+e1
00
A
D
C
B
2+e 0
e0
1+e1
initially
… recompute
routing
… recompute … recompute
destinationdestination
sourcesource
Dijkstra’s algorithm, discussionDijkstra’s algorithm, discussion
27
Dijkstra’s algorithm, discussionDijkstra’s algorithm, discussion
A
D
C
B
1 1+e
e0
e
1
1
00
A
D
C
B
2+e 0
00
1+e1
A
D
C
B
0 2+e
1+e1
00
A
D
C
B
2+e 0
e0
1+e1
initially
… recompute
routing
… recompute … recompute
destinationdestination
sourcesource
Solution:Solution: Oscillations can be prevented by not
running the LS algorithm at the same time. Let
routers use randomised sending times for sending
the link advertisement.
Clock-wise routes
Counter-clock-wise
routes
Clock-wise routes
Problem:Problem: Oscillations with congestion-sensitive routing Oscillations with congestion-sensitive routing