Since our system is a super-peer network and
the topology of the servers forms a general undirected graph, we
have to deal with the routing problem, because routing has no
trivial solution in a general graph. We present the network
functionality. Our chosen solution is to use shortest paths for
unicasting and minimum spanning trees for multicasting and
broadcasting in our network. Moreover, we present the way that
our system handles the problem of dynamic IP addresses and the
problem that a client might get disconnected while the system is
in operation. Then, we continue by discussing the
fault-tolerance problem and its solutions. We close this chapter
with a section about socket handling, where we describe why we
try to keep the socket connections open in many cases and how we
Let us now describe the functionality expected from our network.
Our goal is to support the general character of the system and
give the maximum flexibility to each node, so that it can
communicate with the rest of the nodes in various ways. Thus,
each super-peer must have the ability to perform the following
- Unicast, i.e., send a message only to one super-peer
(neighbor or not).
- Multicast, i.e., send a message to a subset of
super-peers (neighbors or not).
- Broadcast, i.e., send messages which will be received
by all other super-peers.
The goal of a routing protocol is to
establish appropriate routing paths and to use network resources
as efficiently as possible loading the network with the less
possible overhead. Routing in a network typically involves a
rather complex collection of algorithms, that work more or less
independently and yet support each other by exchanging
information. The complexity of the problem is due to a number of
Routing requires coordination between all
nodes of the network.
Routing must be able to cope with link or
To achieve high performance, routing
algorithms may need to modify the adopted routes, when parts of
the network become congested.
It is clear that routing depends on the
underlying topology of the super-peers. In the case an acyclic
topology the solution is trivial, because there are no
paths to choose from. Each node is connected to all others
through unique paths. On the other hand, the general
peer-to-peer interconnection topology of the super-peers
requires additional data structures, and rather complicated
protocols to achieve routing. In the next sections we will
present the techniques that we use for routing in the general
graph topology that the super-peers form in the P2P-DIET
network. The ideas we present have been known for a while in the
area of routing for data networks [Bertsekas and Gallager, 1987]. In our case we
apply these ideas to routing in the overlay network
formed by the P2P-DIET super-peers.
Bertsekas and Gallager, 1987 D. Bertsekas and R. Gallager Data Networks,
Prentice Hall, 1987.