Circuit switching, packet switching, and the virtual circuit compromise
A deeper look at the three ways to move data through a network, including the middle-ground idea most students forget: virtual circuits.
A quick recap, and one piece we skipped
Lesson 1 of this course introduced two ways to move data: circuit switching (a dedicated phone line, reserved start to finish) and packet switching (numbered postcards, sharing the mail truck with everyone else). There's actually a third approach that borrows ideas from both, and it shows up constantly in networking exams and real infrastructure: virtual circuit switching. This lesson lines up all three side by side.
Circuit switching: the reserved lane
Before any data flows, the network reserves a dedicated physical (or logical) path for the entire conversation, end to end. Every switch along the path sets aside capacity for you specifically, whether you're using it at that instant or not.
- Setup: required before any data flows (think: dialing a phone number and waiting for the call to connect).
- Path: fixed for the whole conversation.
- Guarantee: consistent, predictable capacity and delay, since nobody else can use your reserved slice.
- Waste: capacity sits idle during silent pauses, because it's reserved for you whether you're using it or not.
Packet switching: no reservation at all
Every packet is independently addressed and can, in principle, take a completely different path than the packet before or after it, hopping router to router (Module 4 covers exactly how routers make that per-packet decision).
- Setup: none — just start sending addressed packets.
- Path: can differ packet to packet.
- Guarantee: none by default — packets can arrive out of order, get delayed unpredictably, or even get dropped.
- Efficiency: excellent, since idle senders don't waste reserved capacity that others could be using.
Virtual circuits: reserve the decision, not the capacity
Virtual circuit switching sets up a path in advance, like circuit switching does, but — this is the key difference — it does not reserve dedicated capacity along that path. Instead, it sets up a shared understanding at every switch along the route: "packets carrying this specific label should go this specific way." Once that's set up, individual packets flow one at a time, sharing the links with everyone else's traffic, but always following the exact same pre-agreed path in the exact same order.
Think of it like a river tour guide who walks the whole route with you once, marking the path with small flags at every fork, and then leaves — after that, every boat carrying your specific flag color always takes the marked path, but the river itself is still shared by every other tour group's boats too.
How this actually works: labels, not full addresses
Instead of every packet carrying full source/destination addresses (as in plain packet switching), a virtual circuit assigns a short numeric label (often called a Virtual Circuit Identifier, VCI) during setup. Every switch along the path remembers a simple mapping: "packets arriving on this link carrying label 7 should go out this other link, relabeled as label 12." Because switches only need to match a short label instead of parsing a full address, forwarding decisions are extremely fast — this is the same core idea behind modern technologies like MPLS.
Comparing all three side by side
| Circuit switching | Virtual circuit switching | Packet switching | |
|---|---|---|---|
| Setup required | Yes | Yes | No |
| Path per packet | Fixed | Fixed (via label) | Can vary |
| Dedicated capacity reserved | Yes | No — shared | No — shared |
| Packet order preserved automatically | Yes (one continuous stream) | Yes (same path every time) | No — needs the receiver to reorder |
| Wastes idle capacity | Yes | No | No |
| Real-world example | Old telephone networks | ATM networks, MPLS | The modern Internet (IP) |
The math of setup cost versus per-packet savings
Every approach that requires setup (circuit switching, virtual circuits) pays a one-time cost — typically at least one round trip, similar to the TCP handshake cost you calculated in Module 5 — before any data flows. If you're sending a huge amount of data over a long-lived connection, that setup cost is trivial compared to the total transfer time. But for a tiny, one-off exchange, the fixed setup cost can dominate:
Say setup takes 50 ms (one RTT), and you're sending a message that takes only 5 ms to transmit once the path is ready:
Over 90% of the total time here is pure setup overhead — this is exactly why the plain, no-setup-needed packet switching approach dominates the modern Internet, which is overwhelmingly made up of short, bursty exchanges rather than long, sustained transfers.
Common mistakes
- Thinking virtual circuits reserve bandwidth like real circuits do. They only fix the path, via labels — the actual link capacity is still shared with everyone else's traffic.
- Assuming packet switching can never preserve order. It doesn't guarantee order on its own, but higher layers (like TCP's sequence numbers from Module 5) can reconstruct the correct order at the receiving end.
- Believing virtual circuits are purely historical. The label-based forwarding idea is alive and well in technologies like MPLS, which many large ISPs still use internally today.
Summary
Circuit switching reserves a full dedicated path for a conversation, guaranteeing consistent performance at the cost of wasted idle capacity. Packet switching reserves nothing, letting every packet share links independently and take its own path, trading guarantees for efficiency. Virtual circuit switching sits in between: it fixes a path in advance using short labels instead of full addresses, without reserving dedicated capacity — a compromise that keeps ordering simple while still letting packets share the underlying links.