Title: Chapter 4 Distance Vector Problems, and Link-State Routing
1Chapter 4Distance Vector Problems,
andLink-State Routing
- Professor Rick Han
- University of Colorado at Boulder
- rhan_at_cs.colorado.edu
2Announcements
- Handing back HW 1, TA OH, solutions online later
today - Homework 2 available on Web site, due Feb. 26
- Last weeks lectures are now on Web site
- Midterm for the week of March 12
- Next, Distance vector problems, and link-state
routing,
3Recap of Previous Lecture
- Distributed Bellman-Ford Distance Vector
- Bellman-Ford Equation
- D(i,j) min d(i,k) D(k,j) for all iltgtj
- k neighbors
- Bellman-Ford Algorithm Ford Fulkerson
- D(i,j)h1 min d(i,k) D(k,j)h for all
iltgtj, h0,1, - k neighbors
- Distributed Bellman-Ford Algorithm
- Physically distribute the calculation of
D(i,j)h to router i only, and - Exchange the results of your D(i,j)h with
neighboring routers at each iteration h
4RIP is simple
- At each step, exchange distance vectors with each
neighbor - Update distance table with new distance vector,
adding one (all link costs are one) - Calculate minimum hop path to each destination by
looking at minimum in the row
Distance table at B
A a
B b
C c
A
B
Via Port/Link
Dest A B C
A a --- a
B b --- b
C c --- c
A a
B b
C c
C
5Link Failure Causes Bouncing Effect
dest
cost
dest
cost
via
via
1
X
A
B
B
A
1
1
B
A
C
2
C
1
B
C
1
25
C
dest
cost
via
A
2
B
B
1
B
6B Notices A-B Link Failure
dest
cost
dest
cost
via
via
A
B
B
A
26
1
B
C
C
2
C
1
B
C
1
25
C
dest
cost
via
A
2
B
B
1
B
7C Sends Dist. Vector to B
dest
cost
dest
cost
via
via
A
B
B
A
3
1
B
C
C
2
C
1
B
C
1
25
C
dest
cost
via
A
2
B
B
1
B
8B Updates Distance to A
dest
cost
dest
cost
via
via
A
B
B
A
3
C
1
B
C
2
C
1
B
C
Packet sent from C to A bounces between C and
B until TTL0!
1
25
C
dest
cost
via
A
2
B
B
1
B
9B Sends Dist. Vector to C
dest
cost
dest
cost
via
via
A
B
B
A
3
C
1
B
C
2
C
1
B
C
C adds one to Bs advertised distance to A. (Why
does C override its stored distance of 2 to A
with 4, larger value?)
1
25
C
dest
cost
via
A
4
B
B
1
B
10C Sends Dist. Vector to B
dest
cost
dest
cost
via
via
A
B
B
A
5
C
1
B
C
2
C
1
B
C
B adds one to Cs advertised distance to A.
(overrides its stored distance of 3 to A with
5, larger value)
1
25
C
dest
cost
via
A
4
B
B
1
B
11Link Failure Bad News Travels Slowly
dest
cost
dest
cost
via
via
A
B
B
A
25
C
26
C
C
25
C
1
C
C
After 20 exchanges, routing tables look like
this
1
25
Assume A has advertised its link cost of 25 to C
during Blt-gtC exchanges. C stores this cost in
its distance table (not shown)
C
dest
cost
via
A
24
B
B
1
B
12Bad News Travels Slowly (2)
dest
cost
dest
cost
via
via
A
B
B
A
25
C
26
C
C
25
C
1
C
C
C increments Bs update by 1, and chooses 25 via
A to A, instead of 26 Via B to A
1
25
C
dest
cost
via
A
25
A
B
1
B
13Bad News Travels Slowly (3)
dest
cost
dest
cost
via
via
A
B
B
A
26
C
26
C
C
25
C
1
C
C
After 25 B-C exchanges, finally converge
to stable routing
1
25
C
dest
cost
via
A
25
A
B
1
B
14Link Failure Causes Counting to Infinity Effect
dest
cost
dest
cost
via
via
1
X
A
B
B
A
1
1
B
A
C
2
C
1
B
C
1
25
C
dest
cost
via
A
2
B
B
1
B
15B Notices A-B Link Failure
dest
cost
dest
cost
via
via
A
B
B
A
26
1
B
C
C
2
C
1
B
C
1
25
C
dest
cost
via
A
2
B
B
1
B
16C Sends Dist. Vector to B
dest
cost
dest
cost
via
via
A
B
B
A
3
C
1
B
C
2
C
1
B
C
1
25
C
dest
cost
via
A
2
B
B
1
B
17A-C Link Fails
dest
cost
via
A
B
A
3
C
C
1
C
1
C detects link to A has failed, but no change in
Cs routing table (why?)
C
dest
cost
via
A
2
B
B
1
B
18Now, B and C Count to Infinity
dest
cost
via
A
B
A
3
C
C
1
C
1
C
dest
cost
via
A
4
B
B
1
B
19B and C Count to Infinity (2)
dest
cost
via
A
B
A
5
C
C
1
C
1
C
dest
cost
via
A
4
B
B
1
B
20Some Solutions
- Split horizon
- C does not advertise route to B when it sends its
distance vector - Poisoned reverse
- C advertises route to B with infinite distance in
its distance vector - Works for two node loops
- Does not work for loops with more nodes
21B Notices A-B Link Failure
dest
cost
dest
cost
via
via
A
B
B
A
26
1
B
C
C
2
C
1
B
C
1
25
C
dest
cost
via
A
2
B
B
1
B
22Split Horizon
dest
cost
dest
cost
via
via
A
B
B
A
26
C
1
B
C
2
C
1
B
C
1
25
dest
cost
C
dest
cost
via
B
1
A
2
B
B
1
B
No need to send dest A via B, since B
should already know this
23Split Horizon With Poisoned Reverse
dest
cost
dest
cost
via
via
A
B
B
A
--
1
B
C
2
C
1
B
C
1
25
dest
cost
C
dest
cost
via
A
A
2
B
B
1
B
1
B
If lowest cost path is via B, then when updating
B send infinite cost
24Example Where Split Horizon Fails
- When link breaks, C marks D as unreachable and
reports that to A and B - Suppose A learns it first
- A now thinks best path to D is through B
- A reports D unreachable to B and a route of
cost3 to C - C thinks D is reachable through A at cost 4 and
reports that to B - B reports a cost 5 to A who reports new cost to C
- etc...
1
A
B
1
1
C
X
1
D
25Alternative Shortest Path Calc.
- Compute a shortest path tree
- Observation
- shortest path to nodes further from the root must
go through a branch of the shortest path tree
closer to the root - Strategy expand outwards, calculating the
shortest path tree from the root (B)
26Dijkstras Shortest Path Algorithm
- Let N set of nodes in graph
- l(i,j) link cost between i,j ( infinity if not
neighbors) - SPT set of nodes in shortest path tree thus far
- S source node
- C(n) cost of path from
- S to node n
27Dijkstras Shortest Path Algorithm (2)
- Initialize shortest path tree SPT S
- For each n not in SPT, C(n) l(s,n)
- While (SPTltgtN)
- SPT SPT U w such that C(w) is minimum for all
w in (N-SPT) - For each n in (N-SPT)
- C(n) MIN (C(n), C(w) l(w,n))
28Dijkstras Shortest Path Algorithm (3)
- Initialize shortest path tree SPT B
- For each n not in SPT, C(n) l(s,n)
- C(E) 1, C(A) 3, C(C) 4, C(others)
infinity - Add closest node to the tree SPT SPT U E
since C(E) is minimum for all w not in SPT. - No shorter path to E can ever be found via some
other roundabout path.
- Shortest path tree SPT B, E
29Dijkstras Shortest Path Algorithm (4)
- Recalculate C(n) MIN (C(n), C(E) l(E,n)) for
all nodes n not yet in SPT - C(A) MIN( C(A)3, 1 1) MIN(3,2) 2
- C(D) MIN( infinity, 1 1) 2
- C(F) MIN( infinity, 1 2) 3
- C(C ) MIN( 4, 1 infinity) 4
- Each new node in tree, could create a lower cost
path, so redo costs
30Dijkstras Shortest Path Algorithm (5)
- Loop again, select node with the lowest cost
path - C(A) 2, C(D) 2, C(F) 3, C(C ) 4
- SPT SPT U A B, E, A
- No shorter path can be found from B to A,
regardless of any new nodes added to tree
- Recalc C(n) MIN (C(n), C(A) l(A,n)) for all
n not yet in SPT - C(D) MIN(2, 2inf) 2
- C(F) 3, C(C) 4
31Dijkstras Shortest Path Algorithm (6)
- Continue to loop, adding lowest cost node at each
step and updating costs - SPT crawls outward
- Remember to store the links in SPT as they are
added (each nodes predecessor is stored) - Each node has to store the entire topology, or
database of link costs
32Link-State Routing Reliable Flooding Dijkstra
SPT
- Start condition
- Each node assumed to know state of links to its
neighbors - Step 1
- Each node broadcasts its state to all other nodes
- Reliable flooding mechanism
- Step 2
- Each node locally computes shortest paths to all
other nodes from global state - Dijkstras shortest path tree (SPT) algorithm
33Link State Packets (LSPs)
- Periodically, each node creates a link state
packet containing - Node ID
- List of neighbors and link cost
- Sequence number
- Needed to avoid stale information from flood
- Time to live (TTL)
- Node outputs LSP on all its links
34Reliable Flooding of LSPs
- When node J receives LSP from node K
- If LSP is the most recent LSP from K that J has
seen so far, J saves it in database and forwards
a copy on all links except link LSP was received
on - Otherwise, discard LSP
- How to tell more recent
- Use sequence numbers
- Same method as sliding window protocols
35OSPF Open Shortest Path First
- A particular realization of link-state routing,
used for intra-domain routing in the Internet - Additional support for
- Authentication of routing updates
- Support for broadcast networks
- Different cost metrics
- Periodic and event-triggered flooding of LSP
routing updates, like RIP