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.