This document assumes the reader has basic familiarity with several core areas of networking and Linux, but does not require prior experience with SONiC, Redis, or SAI. Any SONiC-specific concepts are introduced as they appear.
The reader is expected to understand:
- Layer-2 concepts: MAC addresses, switching, VLANs (tagged and untagged ports)
- Layer-3 concepts: IP addressing, routing, ARP/ND
- Basic forwarding pipeline ideas (ingress → lookup → egress)
Deep knowledge of ASIC pipelines is not required; relevant aspects of SAI and the hardware behavior are explained where needed.
The reader should be comfortable with:
- Running commands such as
ip link,bridge,ip addr,ip neigh - Understanding network interfaces, bridges, and system logs
- Basics of systemd, containers, and process supervision
- Reading / interpreting log messages
No kernel-level programming experience is required.
Appendix A provides a Linux netlink primer.
The reader is not required to know Redis. The following assumptions are made:
- Reader understands the idea of a database with keys and values
- Reader knows that multiple logical Redis databases can exist
- The document explains SONiC’s conventions:
- Table-name and key concatenation using
TABLE|KEY1|KEY2 - Tables stored as Redis hashes
- Basic commands like
HGETALL,HSET,KEYS,DEL
- Table-name and key concatenation using
Appendix B provides a practical Redis primer used throughout SONiC.
No prior SONiC experience is required. The document explains:
- Containers used by SONiC (database, swss, syncd, bgp, etc.)
- How processes communicate through Redis and netlink
- How orchagent and syncd operate
- How configuration flows top-down and how state flows bottom-up
The reader does not need:
- Routing protocol implementation knowledge
- FRR internals
- ASIC vendor SDK knowledge
- SAI expertise
- Prior work with netlink sockets
Everything necessary is introduced within the sections or appendices.