I periodically write about network traffic, and how general / datacenter network traffic analysis is related to MPI / HPC.
In my last entry, I mentioned how network traffic has many characteristics in common with distributed computing. Routing decisions, for example, are made independently at each network switch.
Consider if you were looking down at a city from above. Look at all the cars driving around the city streets. It’s chaos: each car/truck/bus/etc. makes its own routing decisions. Each one is a different size. Each one potentially goes in a different direction. Each one continually merges and splits from other traffic.
Yet somehow it all works.
For example, when you browse to www.cisco.com, somehow the packets find their way from your computer to the servers behind www.cisco.com, and somehow the reply packets find their way back to your computer.
Let’s keep with the car/truck analogy of traffic:
- Each car, truck, bus, etc., has a basic vehicle, but also carries a payload (people, material, etc.).
- Vehicles that are broken may not reach their final destination with their payloads intact
- Each vehicle (effectively) makes independent routing decisions
- Each vehicle obeys a common set of basic rules
The last point is the key point today: the chaos of zillions of independent decisions works because all vehicles obey the same basic rules. They use turn signals to switch lanes and indicate changes in direction. They only cross traffic when there’s a break in the flow, or a stoplight allows their particular lane to go. Right-of-way conventions determine who goes first at a 4-way stop intersection.
And so on.
So network traffic is chaos — but it’s managed chaos.
I use the word “managed” quite loosely here. There’s obviously no central manager directing each individual vehicle. But we all effectively create this management by adhering to the same basic driving rules, despite the fact that each vehicle makes independent decisions.
…except for the cases where there are central (or pseudo-central) decisions.
In my next entry, I’ll talk about a few ways in which centralized decisions are made about traffic (and how all my ramblings here are connected to HPC / MPI).