![]() |
is implemented as an overlay network composed of servers that
store triggers and forward packets.
To maintain this overlay network and to route packets in , we use
the Chord lookup protocol [25]. Chord assumes a circular
identifier space of integers
, where
follows
. Every
server has an identifier in this space, and all trigger
identifiers belong to the same identifier space. The
server with
identifier
is responsible for all identifiers in the interval
, where
is the identifier of the node preceding
on
the identifier circle. Figure 2(a) shows an
identifier circle for
. There are five
servers in the
system with identifiers 5, 16, 24, 36, and 50, respectively. All
identifiers in the range (5, 16] are mapped on server 16, identifiers
in (17, 24] are mapped on server 24, and so on.
When a trigger is inserted, it is stored at the
node
responsible for
. When a packet is sent to
, it is routed by
to the node responsible for its
; there it is matched against
(any) triggers for that
and forwarded (using IP) to all hosts
interested in packets sent to that identifier. Chord ensures that the
server responsible for an identifier is found after visiting at most
other
servers irrespective of the starting server (
represents the total number of servers in the system). To achieve
this, Chord requires each node to maintain only
routing
state. Chord allows servers to leave and join dynamically, and it is
highly robust against failures. For more details refer
to [25]. Figure 2(b) shows an
example in which trigger
is inserted at node 36 (i.e., the
node that maps
, and thus is responsible for identifier
30). Packet
is forwarded to server 30, matched against
trigger
, and then forwarded via IP to
.
Note that packets are not stored in ; they are only forwarded.
End hosts must periodically refresh their triggers in
.
Hosts need only know one
node to use the
infrastructure.
This can be done through a static configuration file, or by a DNS lookup
assuming
is associated with a DNS domain name. In
Figure 2(b), the sender knows only server 16, and
the receiver knows only server 5.