SONiC is an open source network operating system based on Linux that runs on switches from multiple vendors and ASICs. SONiC offers a full suite of network functionality, like BGP and RDMA, that has been production-hardened in the data centers of some of the largest cloud service providers. It offers teams the flexibility to create the network solutions they need while leveraging the collective strength of a large ecosystem and community.
Note: For more details, see https://azure.github.io/SONiC/
SONiC manages configuration in a single source of truth – a redisDB instance that we refer to as ConfigDB. Applications subscribe to ConfigDB and generate their running configuration correspondingly.
SONiC supports two methods:
In the current version of SONiC, ConfigDB is implemented as database 4 of local Redis. When the system boots, configurations will be loaded from /etc/sonic/config_db.json file into Redis. Please note that ConfigDB content won’t be written back into /etc/sonic/config_db.json file automatically. In order to do that, a config save command needs to be manually executed from CLI. Similarly, config load will trigger a force load of json file into DB. Generally, content in /etc/sonic/config_db.json can be considered as starting config, and content in redisDB running-config.
SONiC system’s architecture comprises of various modules that interact among each other through a centralized and scalable infrastructure. This infrastructure relies on the use of a redis-database engine: a key-value database to provide a language independent interface, a method for data persistence, replication and multi-process communication among all SONiC subsystems.
Note: For more details, see https://github.com/Azure/SONiC/wiki/Architecture