06-RoutingI.ppt

advertisement
EECS 122:
Introduction to Computer Networks
Link State and Distance Vector Routing
Computer Science Division
Department of Electrical Engineering and Computer Sciences
University of California, Berkeley
Berkeley, CA 94720-1776
Katz, Stoica F04
Today’s Lecture: 7
2
17, 18, 19
6
10, 11
Transport
14,
15, 16
7, 8, 9
21, 22, 23
25
Application
Network (IP)
Link
Physical
Katz, Stoica F04
2
IP Header










Vers: IP versions
HL: Header length (in 32bits)
Type: Type of service
Length: size of datagram
(header + data; in bytes)
Identification: fragment ID
Fragment offset: offset of
current fragment (x 8 bytes)
TTL: number of network
hops
Protocol: protocol type (e.g.,
TCP, UDP)
Source IP addresses
Destination IP address
Katz, Stoica F04
3
What is Routing?
Routing is the core function of a network
It ensures that
•
•
•
•
•
information accepted for transfer
at a source node
is delivered to the correct
set of destination nodes,
at reasonable levels of performance.
Katz, Stoica F04
4
Internet Routing


Internet organized as a two level hierarchy
First level – autonomous systems (AS’s)
- AS – region of network under a single administrative
domain

AS’s run an intra-domain routing protocols
- Distance Vector, e.g., Routing Information Protocol (RIP)
- Link State, e.g., Open Shortest Path First (OSPF)

Between AS’s runs inter-domain routing protocols,
e.g., Border Gateway Routing (BGP)
- De facto standard today, BGP-4
Katz, Stoica F04
5
Example
Interior router
BGP router
AS-1
AS-3
AS-2
Katz, Stoica F04
6
Intra-domain Routing Protocols


Based on unreliable datagram delivery
Distance vector
- Routing Information Protocol (RIP), based on Bellman-Ford
- Each neighbor periodically exchange reachability information
to its neighbors
- Minimal communication overhead, but it takes long to
converge, i.e., in proportion to the maximum path length

Link state
- Open Shortest Path First (OSPF), based on Dijkstra
- Each network periodically floods immediate reachability
information to other routers
- Fast convergence, but high communication and computation
overhead
Katz, Stoica F04
7
Routing

Goal: determine a “good” path through the
network from source to destination
5
- Good means usually the shortest path

Network modeled as a graph
A
- Routers  nodes
1
- Link edges
• Edge cost: delay, congestion level,…
2
B
2
D
3
C
3
1
5
F
1
E
Katz, Stoica F04
2
8
Outline


Link State
Distance Vector
Katz, Stoica F04
9
A Link State Routing Algorithm
Dijkstra’s algorithm



Net topology, link costs known
to all nodes
- Accomplished via “link state
flooding”
- All nodes have same info
Compute least cost paths from
one node (‘source”) to all other
nodes
Iterative: after k iterations,
know least cost paths to k
closest destinations
Notations
 c(i,j): link cost from node i
to j; cost infinite if not
direct neighbors

D(v): current value of cost
of path from source to
destination v

p(v): predecessor node
along path from source to
v, that is next to v

S: set of nodes whose
least cost path definitively
known
Katz, Stoica F04 10
Link State Flooding Example
5
7
4
8
6
11
2
1
10
3
13
12
Katz, Stoica F04
11
Link State Flooding Example
5
7
4
8
6
11
2
1
10
3
13
12
Katz, Stoica F04 12
Link State Flooding Example
5
7
4
8
6
11
2
1
10
3
13
12
Katz, Stoica F04 13
Link State Flooding Example
5
7
4
8
6
11
2
1
10
3
13
12
Katz, Stoica F04 14
Dijsktra’s Algorithm
1 Initialization:
2 S = {A};
3 for all nodes v
4
if v adjacent to A
5
then D(v) = c(A,v);
6
else D(v) = ;
7
8 Loop
9
find w not in S such that D(w) is a minimum;
10 add w to S;
11 update D(v) for all v adjacent to w and not in S:
12
D(v) = min( D(v), D(w) + c(w,v) );
// new cost to v is either old cost to v or known
// shortest path cost to w plus cost from w to v
13 until all nodes in S;
Katz, Stoica F04 15
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
start S
A
D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)


2,A
1,A
5,A
5
2
A
B
2
1
D
3
C
3
1
5
F
1
E
2
1 Initialization:
2 S = {A};
3 for all nodes v
4
if v adjacent to A
5
then D(v) = c(A,v);
6
else D(v) = ;
…
Katz, Stoica F04 16
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)


2,A
1,A
5,A

4,D
2,D
start S
A
AD
5
2
A
B
2
1
D
3
C
3
1
5
F
1
E
2
…
8 Loop
9
find w not in S s.t. D(w) is a minimum;
10 add w to S;
11 update D(v) for all v adjacent
to w and not in S:
12
D(v) = min( D(v), D(w) + c(w,v) );
13 until all nodes in S;
Katz, Stoica F04 17
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)


2,A
1,A
5,A

4,D
2,D
3,E
4,E
start S
A
AD
ADE
5
2
A
B
2
1
D
3
C
3
1
5
F
1
E
2
…
8 Loop
9
find w not in S s.t. D(w) is a minimum;
10 add w to S;
11 update D(v) for all v adjacent
to w and not in S:
12
D(v) = min( D(v), D(w) + c(w,v) );
13 until all nodes in S;
Katz, Stoica F04 18
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)


2,A
1,A
5,A

4,D
2,D
3,E
4,E
start S
A
AD
ADE
ADEB
5
2
A
B
2
1
D
3
C
3
1
5
F
1
E
2
…
8 Loop
9
find w not in S s.t. D(w) is a minimum;
10 add w to S;
11 update D(v) for all v adjacent
to w and not in S:
12
D(v) = min( D(v), D(w) + c(w,v) );
13 until all nodes in S;
Katz, Stoica F04 19
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)


2,A
1,A
5,A

4,D
2,D
3,E
4,E
start S
A
AD
ADE
ADEB
ADEBC
5
2
A
B
2
1
D
3
C
3
1
5
F
1
E
2
…
8 Loop
9
find w not in S s.t. D(w) is a minimum;
10 add w to S;
11 update D(v) for all v adjacent
to w and not in S:
12
D(v) = min( D(v), D(w) + c(w,v) );
13 until all nodes in S;
Katz, Stoica F04 20
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
D(B),p(B) D(C),p(C) D(D),p(D) D(E),p(E) D(F),p(F)


2,A
1,A
5,A

4,D
2,D
3,E
4,E
start S
A
AD
ADE
ADEB
ADEBC
ADEBCF
5
2
A
B
2
1
D
3
C
3
1
5
F
1
E
2
…
8 Loop
9
find w not in S s.t. D(w) is a minimum;
10 add w to S;
11 update D(v) for all v adjacent
to w and not in S:
12
D(v) = min( D(v), D(w) + c(w,v) );
13 until all nodes in S;
Katz, Stoica F04 21
Complexity

Assume a network consisting of n nodes
- Each iteration: need to check all nodes, w, not in S
- n*(n+1)/2 comparisons: O(n2)
- More efficient implementations possible: O(n*log(n))
Katz, Stoica F04 22
Oscillations

Assume link cost = amount of carried traffic
1
A
1+e
D 0 0 B
e
0
C
1
1
e
initially

2+e A
0
D 1+e 1 B
0
0
C
… recompute
routing
A
0
2+e
D
0 0 B
1
1+e
C
… recompute
2+e A
0
D 1+e 1 B
e
0
C
… recompute
How can you avoid oscillations?
Katz, Stoica F04 23
Outline


Link State
Distance Vector
Katz, Stoica F04 24
Distance Vector Routing Algorithm




Iterative: continues until no nodes exchange info
Asynchronous: nodes need not exchange info/iterate in lock
steps
Distributed: each node communicates only with directlyattached neighbors
Each router maintains
- Row for each possible destination
- Column for each directly-attached neighbor to node
- Entry in row Y and column Z of node X  best known distance from X
to Y, via Z as next hop (remember this !)

Note: for simplicity in this lecture examples we show only the
shortest distances to each destination
Katz, Stoica F04 25
Distance Vector Routing

Each local iteration caused by:
Each node:
- Local link cost change
wait for (change in local link
- Message from neighbor: its least cost
cost or msg from neighbor)
path change from neighbor to destination

Each node notifies neighbors only
when its least cost path to any
destination changes
- Neighbors then notify their neighbors if
necessary
recompute distance table
if least cost path to any dest
has changed, notify
neighbors
Katz, Stoica F04 26
Distance Vector Algorithm (cont’d)
1 Initialization:
2 for all neighbors V do
3
if V adjacent to A
4
D(A, V) = c(A,V);
5
else
•
D(A, V) = ∞;
•
loop:
8 wait (until A sees a link cost change to neighbor V
9
or until A receives update from neighbor V)
10 if (D(A,V) changes by d)
11
for all destinations Y through V do
12
D(A,Y) = D(A,Y) + d
13 else if (update D(V, Y) received from V)
/* shortest path from V to some Y has changed */
14 D(A,Y) = D(A,V) + D(V, Y);
15 if (there is a new minimum for destination Y)
16 send D(A, Y) to all neighbors
17 forever
Katz, Stoica F04 27
Example: Distance Vector Algorithm
Node A
Dest.
2
A
B
7
3
1
C
D
1
Node B
Cost NextHop
Cost NextHop
B
2
B
A
2
A
C
7
C
C
1
C
D
∞
-
D
3
D
Node C
1 Initialization:
2 for all neighbors V do
3
if V adjacent to A
4
D(A, V) = c(A,V);
5
else
6
D(A, V) = ∞;
…
Dest.
Dest.
Node D
Cost NextHop
Dest.
Cost NextHop
A
7
A
A
∞
-
B
1
B
B
3
B
D
1
D
C
1
C
Katz, Stoica F04 28
Example: 1st Iteration (C  A)
Node A
Dest.
2
A
B
7
3
1
C
D
1
Node B
Cost NextHop
Dest.
Cost NextHop
B
2
B
A
2
A
C
7
C
C
1
C
D
8
C
D
3
D
D(A, D) = D(A, C) + D(C,D) = 7 + 1 = 8
Node C
7
loop:
…
13 else if (update D(V, Y) received from V)
14 D(A,Y) = D(A,V) + D(V, Y);
15 if (there is a new min. for destination Y)
16 send D(A, Y) to all neighbors
17 forever
Dest.
(D(C,A), D(C,B), D(C,D))
Node D
Cost NextHop
Dest.
Cost NextHop
A
7
A
A
∞
-
B
1
B
B
3
B
D
1
D
C
1
C
Katz, Stoica F04 29
Example: 1st Iteration (BA, CA)
Node A
Dest.
2
A
B
7
3
1
C
D
1
Node B
Cost NextHop
2
B
A
2
A
C
3
B
C
1
C
D
5
B
D
3
D
D(A,C) = D(A,B) + D(B,C) = 2 + 1 = 3
Node C
loop:
…
13 else if (update D(V, Y) received from V)
14 D(A,Y) = min(D(A,V), D(A,V) + D(V, Y))
15 if (there is a new min. for destination Y)
16 send D(A, Y) to all neighbors
17 forever
Cost NextHop
B
D(A,D) = D(A,B) + D(B,D) = 2 + 3 = 5
7
Dest.
Dest.
Node D
Cost NextHop
Dest.
Cost NextHop
A
7
A
A
∞
-
B
1
B
B
3
B
D
1
D
C
1
C
Katz, Stoica F04 30
Example: End of 1st Iteration
Node A
Dest.
2
A
B
7
3
1
C
D
1
Node B
Cost NextHop
loop:
…
13 else if (update D(V, Y) received from V)
14 D(A,Y) = D(A,V) + D(V, Y);
15 if (there is a new min. for destination Y)
16 send D(A, Y) to all neighbors
17 forever
Cost NextHop
B
2
B
A
2
A
C
3
B
C
1
C
D
5
B
D
2
C
Node C
7
Dest.
Dest.
Node D
Cost NextHop
Dest.
Cost NextHop
A
3
B
A
5
B
B
1
B
B
2
C
D
1
D
C
1
C
Katz, Stoica F04 31
Example: End of 2nd Iteration
Node A
Dest.
2
A
B
7
3
1
C
D
1
Node B
Cost NextHop
loop:
…
13 else if (update D(V, Y) received from V)
14 D(A,Y) = D(A,V) + D(V, Y);
15 if (there is a new min. for destination Y)
16 send D(A, Y) to all neighbors
17 forever
Cost NextHop
B
2
B
A
2
A
C
3
B
C
1
C
D
4
B
D
2
C
Node C
7
Dest.
Dest.
Node D
Cost NextHop
Dest.
Cost NextHop
A
3
B
A
4
C
B
1
B
B
2
C
D
1
D
C
1
C
Katz, Stoica F04 32
Example: End of 3rd Iteration
Node A
Dest.
2
A
B
7
3
1
C
D
1
Node B
Cost NextHop
loop:
…
13 else if (update D(V, Y) received from V)
14 D(A,Y) = D(A,V) + D(V, Y);
15 if (there is a new min. for destination Y)
16 send D(A, Y) to all neighbors
17 forever
Cost NextHop
B
2
B
A
2
A
C
3
B
C
1
C
D
4
B
D
2
C
Node C
7
Dest.
Dest.
Node D
Cost NextHop
Dest.
Cost NextHop
A
3
B
A
4
C
B
1
B
B
2
C
D
1
D
C
1
C
Nothing changes  algorithm terminates
Katz, Stoica F04 33
Distance Vector: Link Cost Changes
7 loop:
8 wait (until A sees a link cost change to neighbor V
9
or until A receives update from neighbor V)
10 if (D(A,V) changes by d)
11
for all destinations Y through V do
12
D(A,Y) = D(A,Y) + d
13 else if (update D(V, Y) received from V)
14 D(A,Y) = D(A,V) + D(V, Y);
15 if (there is a new minimum for destination Y)
16 send D(A, Y) to all neighbors
17 forever
1
4
A
Node B D C N
A 4 A
D C N
D C N
D C N
A 1 A
A 1 A
A 1 A
C 1 B
C 1 B
C 1 B
C 1 B
Node C D C N
A 5 B
D C N
D C N
D C N
A 5 B
A 2 B
A 2 B
B 1 B
B 1 B
B 1 B
B 1 B
Link cost changes here
B
50
1
C
“good
news
travels
fast”
time
Algorithm terminatesKatz, Stoica F04
34
Distance Vector: Count to Infinity
Problem
7 loop:
8 wait (until A sees a link cost change to neighbor V
9
or until A receives update from neighbor V)
10 if (D(A,V) changes by d)
11
for all destinations Y through V do
12
D(A,Y) = D(A,Y) + d ;
13 else if (update D(V, Y) received from V)
14 D(A,Y) = D(A,V) + D(V, Y);
15 if (there is a new minimum for destination Y)
16 send D(A, Y) to all neighbors
17 forever
Node B D C N
A 4 A
D C N
D C N
D C N
A 6 C
A 6 C
A 8 C
C 1 B
C 1 B
C 1 B
C 1 B
Node C D C N
A 5 B
D C N
D C N
D C N
A 5 B
A 7 B
A 2 B
B 1 B
B 1 B
B 1 B
B 1 B
60
4
A
B
50
…
1
C
“bad
news
travels
slowly”
time
Link cost changes here; recall from slide 24 that B also maintains
shortest distance to A through C, which is 6. Thus D(B, A) becomes 6 Katz,
!
Stoica F04
35
Distance Vector: Poisoned Reverse

If C routes through B to get to A:
60
- C tells B its (C’s) distance to A is infinite
(so B won’t route to A via C)
- Will this completely solve count to
infinity problem?
A 60 A
A 51 C
A 51 C
C 1 B
C
C
1
B
C
1
B
C
1
B
C
N
D
C
N
D
C
N
B
D
C
N
C
50
A 60 A
1
N
1
D
N
C
A
B
Node B D C N
A 4 A
C
D
4
D
C
N
Node C D C N
A 5 B
D C N
D
A 5 B
A 50 A
A 50 A
A 50 A
B 1 B
B 1 B
B
B
B
1
B
1
Link cost changes here; B updates D(B, A) = 60 as
C has advertised D(C, A) = ∞
B
1
B
time
Algorithm terminates
Katz, Stoica F04 36
Link State vs. Distance Vector
Per node message complexity
 LS: O(n*e) messages; n –
number of nodes; e – number
of edges
 DV: O(d) messages; where d
is node’s degree
Complexity
 LS: O(n2) with O(n*e)
messages
 DV: convergence time varies
- may be routing loops
- count-to-infinity problem
Robustness: what happens if
router malfunctions?
 LS:
- node can advertise incorrect
link cost
- each node computes only its
own table

DV:
- node can advertise incorrect
path cost
- each node’s table used by
others; error propagate
through network
Katz, Stoica F04 37
Download