Routing table update messages that include both network-level and
link-level addresses of nodes of a computer network are exchanged among
the nodes of the computer network. Further, a routing table maintained by
a first one of the nodes of the computer network may be updated in
response to receiving one or more of the update messages. The routing
table is preferably updated by selecting a next node to a destination
node of the computer network only if every intermediate node in a path
from the next node to the destination node satisfies a set of nodal
conditions required by the first node for its path to the destination
node and the next node offers the shortest distance to the destination
node and to every intermediate node along the path from the next node to
the destination node. The shortest distance to the destination node may
be determined according to one or more link-state and/or node-state
metrics regarding communication links and nodes along the path to the
destination node. Also, the nodal characteristics of the nodes of the
computer system may be exchanged between neighbor nodes, prior to
updating the routing table. Preferred paths to one or more destination
nodes may be computed according to these nodal characteristics, for
example using a Dijkstra shortest-path algorithm.