Switch Architecture – Control vs Data Plane

 

🧭 Switch Architecture – Control vs Data Plane

┌───────────────────────────────────────────────────────────┐ │ User Layer │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ CLI / REST / gNMI / SNMP / Ansible / gRPC Clients │ │ │ └─────────────────────────────────────────────────────┘ │ └───────────────────────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────────────────────────────────┐ │ Network OS (NOS) │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Routing, BGP, OSPF, EVPN, MPLS, QoS, ACL modules │ │ │ ├─────────────────────────────────────────────────────┤ │ │ │ Hardware Abstraction Layer (HAL / SAI) │ │ │ │ (translates generic NOS APIs → ASIC-specific SDK) │ │ │ └─────────────────────────────────────────────────────┘ │ └───────────────────────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────────────────────────────────┐ │ ASIC SDK / Driver Layer │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Vendor SDK APIs (Broadcom SDKLT / Marvell / Tofino) │ │ │ │ BDE kernel modules, libbcm.so, bcmcmd, etc. │ │ │ └─────────────────────────────────────────────────────┘ │ └───────────────────────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────────────────────────────────┐ │ ASIC Silicon │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Parser | Ingress Pipeline | Lookup Tables | Egress │ │ │ │ Buffers | Schedulers | SerDes / PHY Drivers │ │ │ └─────────────────────────────────────────────────────┘ │ └───────────────────────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────────────────────────────────┐ │ Physical Ports (Front Panel) │ │ ▷ Ethernet 1/1 ... Ethernet 1/32 │ └───────────────────────────────────────────────────────────┘

🧩 Explanation

LayerDescription
User LayerWhere operators or automation systems talk to the switch (via CLI, API, or Ansible).
NOS LayerImplements routing, switching, BGP EVPN, etc. (e.g., SONiC, RtBrick, FBOSS).
HAL / SAITranslates high-level NOS commands into SDK-specific calls.
SDKVendor-provided library that directly manipulates the ASIC registers.
ASICThe actual hardware forwarding engine that handles packets.
PortsPhysical 10G/25G/100G interfaces connected to the network.

⚙️ Example Flow — Enabling a Port

If you run:

config interface Ethernet1/1 up

This happens internally:

CLI → NOS → SAI/HAL → SDK API call (bcm_port_enable_set) → ASIC register → Link Up

The SDK abstracts all the hardware complexity (PHY lanes, SerDes config, internal bus writes).

Comments

Popular posts from this blog

gNMI_with_grafana on containerlabs

EVPN Route type-1 & type-4 in action

Network Automation with ROBOT Framework