On this page
Architecture and Services
Locate the main services and learn where a routing decision crosses into forwarding orchestration.
- Distinguish a container from the processes it hosts.
- Assign clear roles to FRR, fpmsyncd, SWSS, and syncd.
- Explain why a healthy container is only one health signal.
A Linux host with cooperating services
A container packages a service environment; a daemon is a running process. They are related but not interchangeable. For example, a routing container commonly named bgp hosts several processes, not just BGP. The Linux host also supplies kernel interfaces, service supervision, and management tools.
Container boundaries help organize the system, but state crosses those boundaries through databases, sockets, and kernel interfaces. Restarting one service can affect its dependents. Container names, enabled services, and process placement vary with image, release, and single- versus multi-ASIC designs.
Read further: SONiC architecture · SWSS component overview.
Who does what?
| Component | Main responsibility here |
|---|---|
FRR / bgpd | Runs BGP sessions, applies BGP policy and path selection, and supplies routes to zebra. |
FRR / zebra | Manages routing information across protocol clients and forwarding updates; interfaces with the kernel and an FPM export path. |
fpmsyncd | Receives FPM forwarding updates and translates them into SONiC application route state on the conventional Redis path. |
SWSS / orchagent | Consumes relevant state, resolves object dependencies, and issues SAI operations. SWSS also includes other managers and synchronization daemons. |
SAI Redis / syncd | SAI Redis carries serialized operations across the process boundary. syncd invokes the vendor SAI implementation and handles related responses and notifications. |
| Platform and discovery services | Examples include pmon for hardware monitoring and LLDP services for neighbor discovery; these serve different jobs from route programming. |
Read further: FRR zebra documentation · FRR BGP documentation · fpmsyncd implementation · SAI Redis & syncd.
Follow responsibilities, not just containers
FRR is a routing suite. fpmsyncd is a SONiC integration process: it does not run BGP best-path selection. Likewise, syncd does not replace zebra. Its job is at the SAI/platform boundary.
Read further: RouteSync implementation · syncd implementation.
Inspect a service without confusing layers
docker ps --format 'table {{.Names}} {{.Status}}'
docker exec bgp vtysh -c 'show ip route'Illustrative inspection commands, not executed. Docker access needs suitable privileges. Replace bgp with the actual routing container; FRR commands and namespaces vary by image.
The first command asks whether containers are running. The second asks FRR about routing state. A running container does not prove every daemon inside it is healthy. A route displayed by FRR does not by itself prove successful ASIC programming or packet delivery.
Read further: SONiC user manual · fpmsyncd implementation.
Key takeaways
- A container is a service environment; it can contain several daemons.
- bgpd handles BGP while zebra coordinates routing and forwarding updates.
- fpmsyncd bridges FPM updates into SONiC route state on the common Redis path.
- orchagent and syncd operate at different sides of the orchestration/SAI boundary.
- Check process, routing, programming, and packet evidence separately.
Check your understanding
Six questions, four choices each. Check each answer for an explanation, then review your score and retry.
Official references
Reviewed 18 October 2026. Living upstream references describe several generations of SONiC; match operational details to the selected release. Implementation links support the examples, not a claim that every image runs current master.