Chapter 4: Distance Vector Problems, Link

Chapter 4
Distance Vector Problems, and
Link-State Routing
Professor Rick Han
University of Colorado at Boulder
[email protected]
Announcements
• Handing back HW #1, TA OH, solutions
online later today
• Homework #2 available on Web site, due
Feb. 26
• Last week’s lectures are now on Web site
• Midterm for the week of March 12
• Next, Distance vector problems, and linkstate routing, …
Prof. Rick Han, University of
Colorado at Boulder
Recap of Previous Lecture
• Distributed Bellman-Ford = Distance Vector
• Bellman-Ford Equation
•
D(i,j) = min {d(i,k) + D(k,j)} for all i<>j
k neighbors
• Bellman-Ford Algorithm [Ford & Fulkerson]
•
D(i,j)[h+1] = min {d(i,k) + D(k,j)[h]} for all i<>j, h=0,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
Prof. Rick Han, University of
Colorado at Boulder
RIP is simple
1. At each step, exchange distance vectors with
each neighbor
2. Update distance table with new distance vector,
adding one (all link costs are one)
3. Calculate minimum hop path to each destination
by looking at minimum in the row
Distance table at B
A a
A
B
Via Port/Link
B b
Dest A
B
C
C c
A
a++ --- a++
A a
C
B
B b
C Prof.
c Rick Han, University of C
Colorado at Boulder
b++ --c++ ---
b++
c++
Link Failure Causes
“Bouncing” Effect
dest
B
C
cost via
1
2
B
B
dest
1
X
A
A
C
B
1
25
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
2
1
B
B
cost via
1
1
A
C
B Notices A-B Link Failure
dest
B
C
B notices failure, resets cost via A to
infinity in distance table (not shown), &
knows cost via C is 26
cost via
1
2
B
B
dest
A
A
C
B
1
25
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
2
1
B
B
cost via
26
1
C
C
C Sends Dist. Vector to B
dest
B
C
cost via
1
2
B
B
dest
A
A
C
B
1
25
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
3
1
C sends routing
update to B
cost via
2
1
B
B
C
C
B Updates Distance to A
dest
B
C
cost via
1
2
B
B
dest
A
A
C
B
1
25
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
3
C
1
C
Packet sent from C
to A bounces
between C and B
cost via until TTL=0!
2
1
B
B
B Sends Dist. Vector to C
dest
B
C
cost via
1
2
B
B
dest
A
B
1
25
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
A
C
cost via
3
C
1
C
C adds one to B’s
advertised distance
to A. (Why does C
cost via override
4
B
its stored
1
B
distance of 2
to A with 4,
larger value?)
C Sends Dist. Vector to B
dest
B
C
cost via
1
2
B
B
dest
A
B
25
C
A
C
cost via
5
C
1
C
B adds one to C’s
1 advertised distance
to A. (overrides
its stored
dest cost via distance of 3
A
4
to A with 5,
B
B
1
B
larger value)
Prof. Rick Han, University of
Colorado at Boulder
Link Failure: Bad News Travels
Slowly
dest
B
C
cost via
26
25
C
C
dest
A
A
C
B
Assume A has advertised
C
its link cost of 25 to C
during B<->C exchanges.
C stores this cost in its distance
table (not shown)
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
25
C
1
C
After 20+ exchanges,
routing tables look
like this:
1
25
cost via
cost via
24
1
B
B
Bad News Travels Slowly (2)
dest
B
C
cost via
26
25
C
C
dest
A
A
C
B
25
C
cost via
25
C
1
C
C increments B’s
1 update by 1, and
chooses 25 via A
to A, instead of 26
dest cost via Via B to A
A
B
Prof. Rick Han, University of
Colorado at Boulder
25
A
1
B
Bad News Travels Slowly (3)
dest
B
C
cost via
26
25
C
C
dest
A
A
C
B
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
26
C
1
C
After 25 B-C
exchanges, finally
converge to
stable routing
1
25
cost via
cost via
25
A
1
B
Link Failure Causes
“Counting to Infinity” Effect
dest
B
C
cost via
1
2
B
B
dest
1
X
A
A
C
B
1
25
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
2
1
B
B
cost via
1
1
A
C
B Notices A-B Link Failure
B notices failure,
resets cost to 26
dest
B
C
cost via
1
2
B
B
dest
A
A
C
B
1
25
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
2
1
B
B
cost via
26
1
C
C
C Sends Dist. Vector to B
dest
B
C
cost via
1
2
B
B
dest
A
A
C
B
1
25
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
3
C
1
C
C sends
routing update to B
cost via
2
1
B
B
A-C Link Fails
dest
A
A
C
B
C detects link to A has failed,
but no change in C’s
routing table (why?)
1
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
2
1
B
B
cost via
3
C
1
C
Now, B and C Count to Infinity
dest
A
A
C
B
1
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
4
1
B
B
cost via
3
C
1
C
B and C Count to Infinity (2)
dest
A
A
C
B
1
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
4
1
B
B
cost via
5
C
1
C
Some “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
Prof. Rick Han, University of
Colorado at Boulder
B Notices A-B Link Failure
B notices failure,
resets cost to 26
dest
B
C
cost via
1
2
B
B
dest
A
A
C
B
1
25
C
dest
A
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
2
1
B
B
cost via
26
1
C
C
Split Horizon
dest
B
C
cost via
1
2
B
B
dest
A
B
1
25
dest
A
B
cost via
C
A
C
B
B
Prof. Rick Han, University of
Colorado at Boulder
26
C
1
C
C sends routing update
to B
dest
B
2
1
cost via
cost
1
No need to send dest
A via B, since B should
already know this
Split Horizon With Poisoned
Reverse
dest
B
C
cost via
1
2
B
B
dest
A
dest
A
B
A
C
B
1
25
cost via
2
1
C
B
B
Prof. Rick Han, University of
Colorado at Boulder
cost via
~
--
1
C
C sends routing
update to B
dest
A
B
cost
~
1
If lowest cost path is via
B, then when updating B
send infinite cost
Example Where Split
Horizon Fails
1
A
B
1
1
C
1
D
• 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 cost=3 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...
Prof. Rick Han, University of
Colorado at Boulder
Alternative 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)
A
6
1
3
4
C
2
1
B
9
Prof. Rick Han, University of
Colorado at Boulder
E
1
D
F
Dijkstra’s 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
A
• C(n) = cost of path from
6
1
3
S to node n
2
F
4
C
1
B
9
Prof. Rick Han, University of
Colorado at Boulder
E
1
D
Dijkstra’s Shortest Path
Algorithm (2)
• Initialize shortest path tree SPT = {S}
• For each n not in SPT, C(n) = l(s,n)
• While (SPT<>N)
•
•
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))
A
6
1
3
4
C
2
1
B
9
Prof. Rick Han, University of
Colorado at Boulder
E
1
D
F
Dijkstra’s 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}
A
1
3
4
C
6
2
1
B
9
Prof. Rick Han, University of
Colorado at Boulder
E
1
D
F
Dijkstra’s 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
4
C
A
6
1
3
2
1
B
9
Prof. Rick Han, University of
Colorado at Boulder
E
1
D
F
Dijkstra’s 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, 2+inf) = 2
B
C(F) = 3, C(C) = 4 4
C
A
6
1
3
2
1
9
Prof. Rick Han, University of
Colorado at Boulder
E
1
D
F
Dijkstra’s 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 node’s predecessor is stored)
• Each node has to store the entire topology, or
database of link costs
A
6
1
3
4
C
2
1
B
9
Prof. Rick Han, University of
Colorado at Boulder
E
1
D
F
Link-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
– Dijkstra’s shortest path tree (SPT) algorithm
Prof. Rick Han, University of
Colorado at Boulder
Link 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
Prof. Rick Han, University of
Colorado at Boulder
Reliable 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
Prof. Rick Han, University of
Colorado at Boulder
OSPF – 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
Prof. Rick Han, University of
Colorado at Boulder