it processes and forwards packets in an application-specific way. The
links that connect the overlay nodes are implemented as tunnels through
the underlying network. Multiple overlay networks can exist on top of
the same underlying network—each implementing its own applicationspecific
behavior—and overlays can be nested, one on top of another.
For example, all of the example overlay networks discussed in this section
treat today’s Internet as the underlying network.
We have already seen examples of tunneling, for example, to implement
virtual private networks (VPNs). As a brief refresher, the nodes on
either end of a tunnel treat the multi-hop path between them as a single
logical link, the nodes that are tunneled through forward packets based
on the outer header, never aware that the end nodes have attached an
inner header. Figure 9.20 shows three overlay nodes (A, B, and C) connected
by a pair of tunnels. In this example, overlay node B might make
a forwarding decision for packets from A to C based on the inner header
(IHdr), and then attach an outer header (OHdr) that identifies C as the destination
in the underlying network. Nodes A, B, and C are able to interpret
both the inner and outer header, whereas the intermediate routers understand
only the outer header. Similarly, A, B, and C have addresses in both
the overlay network and the underlying network, but they are not necessarily
the same; for example, their underlying address might be a 32-bit
IP address, while their overlay address might be an experimental 128-bit
address. In fact, the overlay need not use conventional addresses at all
but may route based on URLs, domain names, an XML query, or even the
content of the packet.