Send: Each t seconds or when Tl changes, send Tl on each non-faulty outgoing
link.
Receive: Whenever a routing table Tr is received on link n:
for
all rows Rr
in Tr {
if
(Rr.link
| n) {
Rr.cost = Rr.cost
+ 1;
Rr.link = n;
if
(Rr.destination
is not in Tl)
add Rr
to Tl;
// add new destination to Tl
else
for all rows Rl
in Tl {
if
(Rr.destination
= Rl.destination and
(Rr.cost < Rl.cost
or Rl.link
= n)) Rl =
Rr;
// Rr.cost < Rl.cost : remote node
has better route
//
Rl.link = n :
remote node is more authoritative
}
}
}