Open Sourcing BISDN Linux

I am normally not writing longer posts. Different now, as I am proud (and a bit relieved) that we finally released BISDN Linux into the wild (read: github). We have been working a very long time on this, and learned that building software for elements of infrastructure is hard.

A switch is not something you can just restart when it doesn’t work, or reinstall to change configuration. The road from being able to forward packets in hardware to a switch that can be used in production is long and winding, and I shall not even claim we have reached the end of it. Still, this is an important step for us, and partnering with Stordis on the distribution makes it feel real. I’d like to thank our team and also those who have contributed a lot over the years, like Tobias Jungel. Jan Klare brought structure  into the project and introduced CI/CD and nightly tests, without this we would not be here. Andreas Köpsel wrote the first version of baseboxd… when was that, 2013?

On the software itself: For those not so familiar with whitebox switching, there are three things you need:

  1. a switch,
  2. an Operating System on the switch, and
  3. a controller that runs on top of the SDK of the ASIC manufacturer.

Sometimes you decide to create a higher abstraction of the SDK such as OF-DPA, or SAI, which makes the controller more portable across platforms.The notion of NOS (Network Operating System) means different things to different people. OpenNetworkLinux (ONL), for instance, is just number 2. of the above, and then you need to pick a candidate for 3. BISDN Linux is 2. and 3. However you have multiple options for the controller. As the switch is built on top of OF-DPA, it can be connected to external OF controllers like ONOS, RYU, or ODL. baseboxd is a fourth controller option, and it hides the underlying OpenFlow completely. It does so by translating Linux netlink commands to a mix of OpenFlow and direct (grpc) calls to the switch API. baseboxd taps into Linux netlink for information on how network interfaces are created or configured and translates it all down to the switch ASIC. This way it lets 3. virtually disappear, as all you see is a modern Linux on switch.

The ‘Linux on switch’ idea has a lot of advantages, like not having to learn a specific switch CLI. It however also limits the switch functionality to what is currently on the mainline Linux. For instance, MPLS Pseudowires are not (yet), although the switch and the OpenFlow abstraction actually support them. But for the vast majority of networking functions, Linux with iproute2 is just the perfect configuration surface.

So if you have a switch (AG7648, AG5648v1, AS4610, Celestica Questone2A) around, and some time to play, download the latest NOS from the repo or, even better, go and build it for yourself from github.

We will add some more platforms over the coming months, top of our list is a 32*100G Trident3-based one.

// Read the Open Source Announcement

// Read the Distribution Announcement