SONiC: Software for Open Networking in the Cloud Lihua Yuan Microsoft Azure Network Team for the SONiC Community
SONiC Community @ OCP Mar 2018 Application & Management SONiC [Software For Open Networking in the Cloud] Switch Platform SAI [Switch Abstraction Interface] Silicon/ASIC
Microsoft Cloud Network - 15 Billion Dollar Bet
SONiC Is Powering Microsoft Cloud At Scale Tier 3 - Regional Spine T3-1 T3-2 T3-3 T3-4 … … … Tier 2 - Spine T2-1-1 T2-1-2 T2-1-8 T2-4-1 T2-4-2 T2-4-4 … … … Tier 1 – Row Leaf T1-1 T1-2 T1-7 T1-8 T1-1 T1-2 T1-7 T1-8 SONIC SONIC SONIC SONIC SONIC SONIC T1-1 T1-2 T1-7 T1-8 SONIC SONIC SONIC SONIC SONIC SONIC … … … Tier 0 - Rack T0-1 T0-2 T0-20 T0-1 T0-2 T0-20 T0-1 T0-2 T0-20 SONIC SONIC SONIC SONIC SONIC SONIC SONIC SONIC SONIC Servers Servers Servers
Goals of SONiC Faster Reduce Technology Operational Evolution Burden Disaggregation with SONiC Open & Choices of Vendors & Modular Platforms Software
SONiC: Software for Open Networking in the Cloud • Switch Abstraction Interface (SAI) • Cross-ASIC portability • Modular Design with Switch State Service (SwSS) • Decoupling software components • Consistent application development model • Containerization of SONiC • Serviceability • Cross-platform portability • SONiC Operational Scenarios • Hitless upgrade • Network emulation with CrystalNet
Switch Abstraction Interface (SAI) Simple, consistent, and Network Applications Network Applications Network Applications stable network application stack Hello Switch Abstraction Interface Helps consume the underlying complex, heterogeneous hardware easily and faster Hola नम Aloha 你好 Bonjour ابحرم सॎते
Switch Abstraction Interface • CRUD operation over extensible Entity/Attribute/Value data model • Reference data-plane behavior model supports various devices • Significant feature/partner growth since announcement in 2015 • https://github.com/opencomputeproject/SAI
SAI Function Calls & Pipelines in SONiC • Register SAI APIs to achieve specific functions and control logging separately • Construct the right order to execute SAI function calls • Refer to SAI Pipelines to create the right packet action flow create_next_hop create_router_interface create_router_interface get_switch_attribute get_switch_attribute create_route create_neighbor create_host_interface create_host_interface Next Port RIF Route Neigh RIF Port Hop
SONiC: Software for Open Networking in the Cloud • Switch Abstraction Interface (SAI) • Cross-ASIC portability • Modular Design with Switch State Service (SwSS) • Decoupling software components • Consistent application development model • Containerization of SONiC • Serviceability • Cross-platform portability • SONiC Operational Scenarios • Hitless upgrade • Network emulation with CrystalNet
SONiC High Level Architecture Network Applications Linux Object Library Switch State Service User Space SAI ASIC SDK Kernel PAL - sysfs netdev ASIC PCI driver HW Peripheral Network drivers device drivers Various OCP Switch Hardware Chassis Supplier Transceiver Fan/Power/LED ASIC ASIC Supplier Linux
Switch State Service (SwSS) Network SAI DB : persist SAI objects Applications App DB : persist App objects DB backend : redis with object library APP SyncD : sync SAI objects between software and DB Object Library w/ Redis Backend hardware Orchestration Agent Orchestration Agent : translation between apps and SAI objects, resolution of dependency and conflict SAI DB Key Goal: Evolve components independently SyncD SAI ASIC
How SAI Objects are Stored in SAI Database • APP DB: • Application oriented SAI DB • Human readable • SAI DB: • SAI oriented • Query-able and machine parse-able KEY SAI_OBJECT_TYPE:SAI_OBJECT_ID • Snapshot of the current SAI state SAI_OBJECT_ATTR VALUE • APIs: SAI_OBJECT_ATTR VALUE SAI DB SAI_OBJECT_ATTR VALUE • sai_create_api SAI_OBJECT_TYPE_NEXT_HOP:00000001 • sai_set_api SAI_NEXT_HOP_ATTR_IP 10.0.0.1 • sai_get_api* SAI_NEXT_HOP_ATTR_TYPE SAI_NEXT_HOP_IP • sai_remove_api *Used only when querying ASIC settings and configurations 13
How Routing Works in SONiC BGP BGPd Zebra fpmsyncd Neighbor APP DB Orchestration Agent SAI Redis SAI DB socket Host Intf SyncD netdev SAI Route ASIC Transceivers
How LAG Works in SONiC LACP teamD teamsyncd Neighbor APP DB Orchestration Agent socket teamD SAI Redis SAI DB netdev Host Intf netdev SyncD SAI lag ASIC Transceivers
SONiC Containerization • TEAMD LLDP SNMP BGP • LLDP • BGP: Quagga or FRR DHCP TEAMD • SNMP: Net-SNMP + SNMP subagent • DHCP Relay: isc dhcp Database SYNCD SWSS • Platform: sensors • SWSS: switch state service Utility Platform • DB: Redis • Syncd: sairedis + syncd agent SONiC Base Image
SONiC Containerization SONiC iC Benefit its Container Strength • Clean isolation • Serviceability • Easy deployment • Extensibility • Transactional • Development agility • Run universal • Cross-platform
SONiC Containerization • Components developed in Quagga different environments Routing LLDP SNMP FRR • Source code may not be available DHCP TEAMD GoBGP Databa SYNCD SWSS se • Enables choices on a per- Arista component basis BGP Utility Platform SONiC Base Image
Hitless Upgrade Through Docker • Cloud users demand zero-down time, but …… SPINE SPINE SPINE 1 2 1 • Security patches, bug 6 Server: LEAF SWARM SONiC fixes need to be rolled out in hours 1 2 1 6 …… • New features need to be TOR TOR TOR rolled out in days
Before they fly the space shuttle ….
They practice all activities and test all equipment extensively in a high-fidelity simulators
CrystalNet: A high-fidelity, cloud-scale network emulator SONiC Container Soft Switch 25
Open Invitation • Inviting contributions in all areas • New ideas on white/open network devices • New features, applications and tools • Download it, Test, Deploy! Website: https://azure.github.io/SONiC/ Mailing list: sonicproject@googlegroups.com GitHub: https://github.com/Azure/SONiC Wiki: https://github.com/Azure/SONiC/wiki/
Recommend
More recommend