Routing 1 Network Layer Network 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
27
Embed
Routing 1 Network Layer Network Layer goals: understand principles behind network layer services: routing (path selection) how a router works instantiation.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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
networkdata linkphysical
networkdata linkphysical
networkdata linkphysical
networkdata linkphysical
networkdata linkphysical
networkdata linkphysical
networkdata linkphysical
networkdata linkphysical
application
transportnetworkdata linkphysical
application
transportnetworkdata linkphysical
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
transportnetworkdata linkphysical
application
transportnetworkdata linkphysical
Each router has a forwarding table that
maps destination addresses to link
interfaces
Routing 4
Routing
Graph (undirected) Graph (undirected) abstraction for routing abstraction for routing algorithms: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
13
1
1
2
53
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
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 Z12
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 change12 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 V17 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 DVV(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
XX
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 distancetable
Routing 15
Distance Vector Algorithm: example
X Z12
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 Z12
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 Z14
50
Y1
algorithmterminates“good
news travelsfast”
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 Z14
50
Y60
algorithmcontinues
on!
Routing loop bet. Y & Z – will persist after 4444
iterations
Routing 19
Distance Vector: link cost changes
X Z14
50
Y60
algorithmcontinues
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 Z14
50
Y60
algorithmterminates
It does not. Loops with nodes >= 3 will not be detected!
Routing 21
Poisone Reverse AlgorithmExampleHow 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)
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: exampleStep
012345
N'u
uxuxy
uxyvuxyvw
uxyvwz
D(v),p(v)2,u2,u2,u
D(w),p(w)5,u4,x3,y3,y
D(x),p(x)1,u
D(y),p(y)∞
2,x
D(z),p(z)∞ ∞
4,y4,y4,y
u
yx
wv
z2
2
13
1
1
2
53
58 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:
vx
y
w
z
(u,v)(u,x)
(u,x)
(u,x)
(u,x)
destination link
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(n2)• more efficient implementations possible: O(nlogn)
Oscillations possible:• e.g., link cost = amount of carried traffic
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 routesCounter-clock-wise
routesClock-wise routes
Problem:Problem: Oscillations with congestion-sensitive routing Oscillations with congestion-sensitive routing