Modern computer systems have a recursive structure of processing and storage
elements that are interconnected to make larger elements:

Functional units connected to registers and
on-chip cache.

Multiple processors and caches connected to main
memories.

Computing nodes connected by a message-passing
local area network.

Local area networks bridged to form an extended
LAN.

Networks connected in a wide-area internet.

All the computers in the world exchanging
electronic mail.

Above the lowest level of transistors and gates, the essential character of
these connections changes surprisingly little over about nine orders of
magnitude in time and space. Connections are made up of nodes and links; their
important properties are bandwidth, latency, connectivity, availability, and
cost. Switching is the basic mechanism for connecting lots of things. There are
many ways to implement it, all based on multiplexing and demultiplexing. This
paper describes some of them and gives many examples. It also considers the
interactions among the different levels of complex systems.