3-Routing in Packet Switched Networks
3-Routing in Packet Switched Networks
Networks
Routing in Packet Networks
Routing in Packet Networks
1 3
6
2 Node
5
(switch or router)
2
1 7 8
1 3 B
A 3
5 1 6 5
4
2
VCI
Host 4
3 5 Switch or router
2
C 5
6
2 D
Node 4
Incoming Outgoing
Node VCI Node VCI
Node 2 2 3 3 2
Node 5
3 4 5 5
Incoming Outgoing 3 2 2 3 Incoming Outgoing
Node VCI Node VCI 5 5 3 4 Node VCI Node VCI
C 6 4 3 4 5 D 2
4 3 C 6 D 2 4 5
Node 4
Destination Next node
1 1
2 2
Node 2 Node 5
3 3
Destination Next node Destination Next node
5 5
1 1 6 3 1 4
3 1 2 2
4 4 3 4
5 5 4 4
6 5 6 6
Non-Hierarchical Addresses and
Routing
0000 0001
0111 0100
1010 1 4 1011
1101 1110
3
R1 R2
2 5
0011 0011
0110 0000 1 0001 4 0101
1001 0111 1 0100 4 1000
1100 1010 1 1011 4 1111
… … … …
Approach
⚫ Send packet on all ports except one where it
arrived
⚫ Exponential growth in packet transmissions
1 3
6
2
5
2
5
2
5
⚫ Possible metrics
⚫ Hop count: rough measure of resources used
⚫ Reliability: link availability; BER
⚫ Delay: sum of delays along path; complex & dynamic
⚫ Bandwidth: “available capacity” in a path
⚫ Load: Link & router utilization along path
⚫ Cost: $$$
Shortest Path Approaches
Dj
Cij
j
i
Di If Di is the shortest distance to SJ from i
and if j is a neighbor on the shortest path,
then Di = Cij + Dj
But we don’t know the shortest
paths
San
2 Hops
1 Hop
From SJ
Jose
3 Hops From SJ
From SJ
Hop-1 nodes
calculate current
(next hop, dist), &
Accurate info about SJ send to neighbors
ripples across network,
Shortest Path Converges
Bellman-Ford Algorithm
⚫ Consider computations for one destination d
⚫ Initialization
⚫ Each node table has 1 row for destination d
⚫ Distance of node d to itself is zero: Dd=0
⚫ Distance of other node j to d is infinite: Dj=, for j d
⚫ Next hop node nj = -1 to indicate not yet defined for j d
⚫ Send Step
⚫ Send new distance vector to immediate neighbors across local link
⚫ Receive Step
⚫ At node j, find the next hop that gives the minimum distance to d,
⚫ Minj { Cij + Dj }
⚫ Replace old (nj, Dj(d)) by new (nj*, Dj*(d)) if new next node or distance
⚫ Go to send step
Bellman-Ford Algorithm
⚫ Now consider parallel computations for all destinations d
⚫ Initialization
⚫ Each node has 1 row for each destination d
⚫ Distance of node d to itself is zero: Dd(d)=0
⚫ Distance of other node j to d is infinite: Dj(d)= , for j d
⚫ Next node nj = -1 since not yet defined
⚫ Send Step
⚫ Send new distance vector to immediate neighbors across local link
⚫ Receive Step
⚫ For each destination d, find the next hop that gives the minimum
distance to d,
⚫ Minj { Cij+ Dj(d) }
⚫ Replace old (nj, Di(d)) by new (nj*, Dj*(d)) if new next node or distance
found
⚫ Go to send step
Iteration Node 1 Node 2 Node 3 Node 4 Node 5
4
Jose
3 1 3 6
2
2 5
4
Iteration Node 1 Node 2 Node 3 Node 4 Node 5
D3=D6+1
n3=6
D6=0
2 3 1
1 1
5 2
0
4 San
3 6
1 3
Jose
2 5 2
4
2
D5=D6+2 D6=0
n5=6
Iteration Node 1 Node 2 Node 3 Node 4 Node 5
3 1
2 3
1 1
5 2
3 0
4 San
3 6
1 3
Jose
2 2
5
4
6 2
Iteration Node 1 Node 2 Node 3 Node 4 Node 5
1
3 2 3
1 1
5 2
3 0
4 San
3 6
1 3
Jose
2
2 5
4
6 4 2
Iteration Node 1 Node 2 Node 3 Node 4 Node 5
1 5
3 2
3
1 1
5 2
3 0
4 San
3 6
1 3
Jose
2
2 5
4 4
2
Network disconnected; Loop created between nodes 3 and 4
Iteration Node 1 Node 2 Node 3 Node 4 Node 5
5
37 2
3
1 1
5 53 2
0
4 San
3 6
1 3
Jose
2
2 5
4
4 2
5 7
7 2 3
1 1
5 2
5 0
4 San
3 6
1 3
Jose
2 5 2
4
46 2
79 2 7
3
1 1
5 2
5 0
4 San
3 6
1 3
Jose
2
2 5
4
6 2
z
w
x
s z'
w"
x'
Dijkstra’s algorithm
⚫ N: set of nodes for which shortest path already found
⚫ Initialization: (Start with source node s)
⚫ N = {s}, Ds = 0, “s is distance zero from itself”
⚫ Dj=Csj for all j s, distances of directly-connected neighbors
⚫ Step A: (Find next closest node i)
⚫ Find i N such that
⚫ Di = min Dj for j N
⚫ Add i to N
⚫ If N contains all the nodes, stop
⚫ Step B: (update minimum costs)
⚫ For each node j N
Minimum distance from s to
⚫ Dj = min (Dj, Di+Cij)
j through node i in N
⚫ Go to Step A
Execution of Dijkstra’s algorithm
2 2 ✓
1 3 1 1 3 1
6 6 ✓
5 2 5 2
3 3
1 4 1 4✓ 2
2
3 3
2 2
✓ 4 5 4 5
Iteration N D2 D3 D4 D5 D6
Initial {1} 3 2✓ 5
1 {1,3} 3✓ 2 4 3
2 {1,2,3} 3 2 4 7 3 ✓
3 {1,2,3,6} 3 2 4 ✓ 5 3
4 {1,2,3,4,6} 3 2 4 5 ✓ 3
5 {1,2,3,4,5,6} 3 2 4 5 3
Shortest Paths in Dijkstra’s
Algorithm
2 3 1 2 3 1
1 1
6 6
5 2 5 2
3 3
1 4 2 1 4 2
3 3
2 2
4 5 4 5
2 3 1 2 3 1
1 1
6 6
5 2 5 2
3 3
1 4 2 1 4 2
3 3
2 2
4 5 4 5
2 3 1 2 3 1
1 1
6 6
5 2 5 2
3 3
1 4 2 1 4 2
3 3
2 2
4 5 4 5
Reaction to Failure
⚫ If a link fails,
⚫ Router sets link distance to infinity & floods the
network with an update packet
⚫ All routers immediately update their link database &
recalculate their shortest paths
⚫ Recovery very quick
⚫ But watch out for old update messages
⚫ Add time stamp or sequence # to each update
message
⚫ Check whether each received update message is new
⚫ If new, add it to database and broadcast
⚫ If older, send update message on arriving link
Source Routing
⚫ Source host selects path that is to be followed by a
packet
⚫ Strict: sequence of nodes in path inserted into header
⚫ Loose: subsequence of nodes in path specified
⚫ Intermediate switches read next-hop address and
remove address
⚫ Source host needs link state information or access
to a route server
⚫ Source routing allows the host to control the paths
that its information traverses in the network
⚫ Potentially the means for customers to select what
service providers they use
Example
3,6,B 6,B
1,3,6,B 1 3
B
6
A
4 B
Source host
2 Destination host
5
Multicasting
G1 G1
1
3 7 2
2 4
2 4 2 3
1 1
5 5 2
3
3 G1
2 4 1 8
S 1 1 3 4 G1
5 4
2
2
4
1 2
1
3 6 3
1
3 4 G2
3
G3
G3
192.168.0.10;x
128.100.10.15;y
Private Network
NAT Public Network
192.168.0.13;w
Device
128.100.10.15; z