Вы находитесь на странице: 1из 13

OpenSwitch

Introduction to Architecture and Development


Diego Dompe,
Michael Zayats
Agenda
• OpenSwitch Project – motivation and goals

• Open Community Enablement

• Design Principles

• Architecture

• Status

• Getting your hands dirty


Motivation for a New NOS

• Open and community driven

• Support common network use-cases - HA, L2, L3, …

• Consistent configuration, monitoring, troubleshooting

• Declarative, programmatic interfaces and CLI / GUI

• Aligned to and an extension of OVS


Open Community Enablement
• Active mailing list with an average of 25 mails per day
• Weekly + frequent on-demand IRC chats
• All code/design reviews are public using Gerrit
• New code is mostly Apache 2.0, hosted on git.openswitch.net and mirrored
to GitHub
• Defined releases and schedules
• Yocto for image building and development environment
• Advanced virtual/physical test framework
Corporate Participants
Main Architectural Principles
• Aggressive modularization / high availability
• OVSDB for configuration, statistics, status and all inter-module communications
• No direct messaging between modules – pub/sub through the database only
• Isolated fault domains – modules wouldn’t know about other modules failures
• Portability
• Keep all hardware specific code separate and replaceable
• Extensibility
• Users and third-parties should be able to extend the system
• Good open source citizenship
• Reuse and contribute
• Minimize forking, stay on the edge
• Enable upstreaming by providing value to other projects – Linux, OCP, OVS, Quagga, etc.
Architectural View

Single OpenSwitch Instance

Mgmt Management daemons RFC 7047 protocol for integrations


systems CLI, Rest,Chef,…

Monitoring daemons ops-switchd


Collectors

OVSDB-server
pmacct, hsflowd,broadview…
Derivation of ovs-vswitchd Openflow
System daemons DB and Openflow layers controllers
sysd, intfd, vland,…
ASIC specific driver sFlow
L2/3 protocol daemons collectors
Legend bgpd, lldpd, lacpd,…
OPS
code HW Support Daemons ASIC user space SDK
tempd, fand, powerd, pmd, …
OPS
adapted
Virtual L2/3 I2C and other drivers
ASIC kernel SDK
External interfaces
code
Kernel
Current Status
• Almost all the basics are in place – vlans, lags, routing, ECMP, BGP, OSPF, sFlow, NTP, DHCP, SVI,
CLI, REST etc.
• ACLs, QoS, mirroring, MSTP and many others are coming in the next couple of months.
• Broadcom Trident II is supported (Accton 5712/6712), Tomahawk (Accton 7712) is on the way.
• Broadcom contributes Broadview monitoring support and develops OpenFlow support in its
plugin.
• Barefoot contributes P4 plugin and emulator which runs inside VM and Docker containers.
• Cavium enables OPS on XPliant platforms.
• Additional ASIC vendors are working to enable their platforms.
• Code is in Alpha quality - features are being rapidly added
• Most developers will switch from feature development to hardening by end of March, with the
goal of having operational system in June/July timeframe.
Development Tools and Processes
• Development environment
• Based on Yocto
• Provides the developer environment and build system
• Fast build times thanks to tight couple of infrastructure with build system
• Systemd based
• Full feature debug tools
• Component design enables porting to other Linux Distros
DEMO

• Building an image
• Deploying an image to hardware or virtual environment
• Modifying the code
Development Tools and Processes
• Development workflow
• Inspired on OpenStack development workflow
• Gerrit
• Jenkins

• Continuous Integration
• Virtual testing environment
Q&A
Thanks!
http://www.openswitch.net

Вам также может понравиться