Core Components Intro

We might think that a switch is a simple network device. However, in fact, there are many components in a switch. Furthermore, because SONiC decouples all components using Redis, Redis in SONiC, it is difficult to understand the relationships between services by simply tracing the code. This requires us to first establish a relatively abstract overall model, and then dive into the details of each component. Therefore, before diving into each individual parts, here we will introduce each component briefly to help establish a rough overall model.

Info

Before reading this chapter, there are two terms that will frequently appear in this chapter and in official documents of SONiC: ASIC (Application-Specific Integrated Circuit) and ASIC State. They refer to the state of the pipeline used for packet processing in the switch, such as ACL, etc. This is different from other hardware states of switches, such as port states (port speed, interface type), IP address, etc.

If you are interested in more details, please feel free to check out two relevant materials first: [SAI (Switch Abstraction Interface) API][SAIAPI] and a paper on RMT (Reprogrammable Match Table) called "[Forwarding Metamorphosis: Fast Programmable Match-Action Processing in Hardware for SDN][PISA]".

These will be very helpful for us to read SONiC documentation.

In addition, for our convenience of understanding and reading, we also put the SONiC architecture diagram at the beginning of this chapter as a reference.

(Source: SONiC Wiki - Architecture)

参考资料

  1. SONiC Architecture
  2. SAI API
  3. Forwarding Metamorphosis: Fast Programmable Match-Action Processing in Hardware for SDN