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.

This was the moment of OPX birth. All previous efforts were set to zero, and a totally new system was born. Dominated by Dell, running only on Dell, and claiming the same set of goals - openness, disaggregation, modularity, etc.

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.

img/nos_arch_2.png
Figure 1. Yes, this picture again

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.

FeatureAurora 420Aurora 620Aurora 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.

OVS in OPS
Figure 2. It's all about OVS

Supported OF-DPA Flow Tables

Table NameTable 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 NameGroup 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.

CommandFunction

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.

CommandDescription

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.