In traditional networks, each device makes its own forwarding decisions. Every router and switch contains both the control plane (decision-making) and data plane (packet forwarding) in one box.
How it works:
Each device runs routing protocols independently
Devices exchange information with neighbors
Each device builds its own forwarding table
Configuration happens device-by-device via CLI
Problems: Configuration drift, manual changes are slow, no global view, vendor lock-in, testing requires touching production.