White Box Switches: The Basics, Part 1
White Box Switches: Part Two, ICOS
A bit about OpenSwitch (OPS)
OPS And OPX, or a Bit of History
At first, OpenSwitch project and openswitch.net were governed by HP as they tried to ride the "open networking" wave. An open community, a lot of talk-based supports from several vendors, all as usual.
Efforts were made to create a set of protocols and an SAI connector to make adoption of new silicon easier.
After about 8 months, the project was handed to the Linux Foundation. A proper excuse was made - HPE said the move was a way to show the community that this wouldn’t be an effort controlled by one vendor.
We think that they simply realized that they are not making enough money out of this.
Four more months later, the project was overtaken by Dell. What a joke after an excuse from HPE about one vendor control.
What About OPS?
It didn’t die.
The code is still on GitHub https://github.com/biot/ops
and anyone can work with it.
That’s how Netberg made OpenSwitch 2.0 - by taking the OPS code and implementing new features and fixing bugs.
Now it is a fully-fledged NOS, suitable for many applications.
Layer 2 features
-
L2 MAC address table
-
Reserved MAC pass through
-
Link Aggregation
-
VLAN
-
Spanning Tree
-
Storm Control
-
Error Disable / Recovery
-
LLDP
-
UDLD
-
802.3x Flow control
-
Jumbo Frame
-
FEC
Layer 3 Features
-
L3 LAG
-
L3 loopback
-
L3 sub-interface
-
IP ARP
-
Proxy ARP / Local proxy ARP
-
Static route
-
48-way ECMP
-
BGP v4/v6
-
VRRP v2
-
OSPF v2
-
BFD
-
Source IP Configuration
-
Policy-based Routing (PBR)
-
IP Prefix List
-
IP Community List
-
Route map
-
64-bit ALPM routing mode support
Security
-
Ingress ACL
-
RADIUS
-
TACACS+
-
User authentication
QoS
-
8 cosq per port
-
DWRR and Strict scheduling
-
WRED-ECN
-
Traffic shape
Management
-
Industrial standard CLI
-
CLI filtering, pagination and interface range
-
Text-based configuration
-
SSH
-
SFTP/SCP
-
Dual Image
-
Incremental software update
-
SNMP v2c/v3
-
TFTP Server
-
DHCP Client/Server/Relay
-
Syslog
-
Event log
-
Audit Logs
-
Utility: Remote ping, traceroute
-
Diagnostic dump
-
Supportability
-
Core dump
-
NTP Client
-
sFlow
-
SPAN / ERSPAN
-
Zero Touch Provisioning
-
Ansible Support
-
Restful API
-
Fast/Warm reboot
Data Center & SDN
-
PFC
-
DCBX
-
VxLAN/HW-VTEP
-
OpenFlow 1.3.4
-
CORD ready
Lots of these items were not available/working in the original OPS code, so it’s a big improvement.
Release 2.0.4 has brought some advanced features.
New advanced features in 2.0.4
Algorithmic Longest Prefix Match (ALPM). ALPM is a way to extend the Unified Forwarding Table (UFT) to store Longest Prefix Match (LPM) routes instead of Host routes. LPM routes don’t have the full /32 prefix length.
Feature | Aurora 420 | Aurora 620 | Aurora 720 |
---|---|---|---|
MAC address table size |
32768 |
40960 |
40960 |
ALMP mode |
32768 |
8192 |
8192 |
ARP table size |
8192 |
8192 |
8192 |
ALMP mode |
16384 |
8192 |
8192 |
Route table size |
16384 |
16384 |
16384 |
ALMP mode |
384k |
128k |
128k |
CORD ready. It took efforts to implement, mostly fixes to OF-DPA and integration with OVS.
-
OpenFlow updates
-
Better design for Hybrid mode
-
OpenFlow experimenter Match/Action support
-
Weighted ECMP support
-
Modify src/dst IP, UDP/TCP port
-
Modify src/dst MAC address
-
Bugs fixing for CORD OFTest Conformance test
-
Support SSL connection to controller
-
Traditional management
OPS uses vtysh, an integrated shell for Quagga routing software. It is easy enough to handle and has a logical, clean structure.
Any advanced Linux user will feel here like at home. Hard to say anything new.
Linux management
Many things can be done using standard Linux shell in OPS.
It supports RESTful APIs, Python for the programming interface. Device provisioning and management via ZTP, CLI, and DevOps are not a problem.
NETCONF/YANG model support for transaction-safe configuration of devices.
Incremental software upgrade using the standard dpkg tool - simple do "dpkg -i package_2.0x.x_amd64.deb"
Integration with SDN
The OpenSwitch release 2.0.4 OF-DPA supports the OpenFlow v1.3.4 and the OF-DPA v2.01 specification.
The OF-DPA code version is based on the OF-DPA v3.0.4.0.

Supported OF-DPA Flow Tables
Table Name | Table ID |
---|---|
Ingress Port |
0 |
VLAN |
10 |
Termination MAC |
20 |
Unicast Routing |
30 |
Multicast Routing |
40 |
Bridging |
50 |
Policy ACL |
60 |
Supported OF-DPA Groups
Group Name | Group ID |
---|---|
L2 Interface |
0 |
L3 Unicast |
2 |
L2 Multicast |
3 |
L2 Flood |
4 |
L3 Interface |
5 |
L3 Multicast |
6 |
L3 ECMP |
7 |
OpenFlow CLI Commands
OpenFlow can be managed from the OPS CLI.
Command | Function |
---|---|
openflow |
Enter OpenFlow mode. |
controller A.B.C.D {port <1-65535> (tcp/ssl)} |
Configure the controller information. |
hybridmode |
Configure Normal Port to be used to OpenFlow. |
openflow-port |
Configure Normal Port to be an Openflow Port and dedicate for OpenFlow pipeline. |
show openflow |
Display the OpenFlow configurations. |
show openflow flows |
Display the flow information. |
show openflow groups |
Display the group information. |
show openflow meters |
Display the meter information. |
Even if some vendors claim that they are the only one to support OF hybrid mode, it’s not true. OPS can do it too.
switch(config-openflow)# hybridmode
switch(config-openflow)# do show openflow
OpenFlow Configuration:
---------------------------------------
OpenFlow Datapath Type : ofdpa
Number of OpenFlow Ports : 0
Hybrid Port Mode : enable
Controller IP Port Mode
---------------------------------------
192.168.1.100 6653 tcp
OpenFlow Port
---------------------------------------
switch(config-openflow)#
Linux commands
As OPS release 2.0.4 is fully integrated with OVS, it’s possible to manage OpenFlow by utilizing OVS tools.
Command | Description |
---|---|
ovs-vsctl |
Utility for querying and configuring ops-switchd |
ovs-ofctl |
Administer OpenFlow switches |
Like:
ovs-vsctl add-br bridge_ofdpa
ovs-vsctl set Bridge bridge_ofdpa datapath_type=ofdpa
ovs-vsctl add-port bridge_ofdpa 1
ovs-vsctl add-port bridge_ofdpa 2
ovs-vsctl add-port bridge_ofdpa 3
All you like in one place.