Awesome SDN

An awesome list about Software Defined Networks (SDN)
Introduction
Software-defined networking (SDN) is an approach to computer
networking that allows network administrators to manage network services
through abstraction of higher-level functionality. Wiki : Software-Defined
Networking
Network Operating System
- Beluganos -
Beluganos is a new network OS designed for white-box switches (OF-DPA),
which can apply large-scale networks.
- Cumulus Linux - Cumulus
Linux is a powerful open network operating system that allows you to
automate, customize and scale using web-scale principles like the
world’s largest data centers.
- FlexSwitch - The first open
source network protocol suite offering complete layer2/layer3
functionality for accelerating development and deployment of whitebox
networking gear
- Mion - A
switch OS based on ONLP API and Yocto project.
- OcNOS - Extensive
switching and routing protocol support with advanced capabilities such
as MPLS and SDN
- Open Network Linux, ONL - A
Linux distribution for “bare metal” switches, that is, network
forwarding devices built from commodity components.
- OpenSwitch - A linux network
operating system from Dell EMC.
- OpenWrt - Is a Linux Operating
System targeting embedded devices.
- PicOS - A SDN OS
for white box switches Layer-2/3 feature set with support for OpenFlow,
OVSDB, and other protocols.
- SONiC - Software for
Open Networking in the Cloud SONiC
- Stratum - An open source,
silicon-independent switch operating system for software-defined
networks
Install Environment
- ONIE - ONIE enables a bare metal
network switch ecosystem where end users have a choice among different
network operating systems.
Software Switch
- BESS - Berkeley
Extensible Software Switch, BESS is a modular framework for software
switches.
- bmv2- A P4
software switch which is usually used as a tool to verify the funtions
the developers describe in P4 language.
- CPqD- An
OpenFlow 1.3 compatible user-space software switch implementation
- FD.IO - Relentlessly focused on data IO
speed and efficiency for more flexible and scalable networks and
storage
- Indigo - Indigo
is an open source project aimed at enabling support for OpenFlow on
physical and hypervisor switches.
- Lagopus - A high-performance
software OpenFlow 1.3 switch.
- LINC-Switch - A
pure OpenFlow software switch written in Erlang
- Open vSwitch - Open vSwitch is
a production quality, multilayer virtual switch.
- PISCES
- A Programmable, Protocol-Independent Software Switch.
- snabbswitch -
An open source virtualized Ethernet networking stack.
- ZeroTier -
ZeroTier is a software-based managed Ethernet switch for planet
Earth.
Network Virtualization
- FlowVisor - An
OpenFlow controller that acts as a hypervisor/proxy between a switch and
multiple controllers. Can slice multiple switches in parallel,
effectively slicing a network.
- OpenVirtex -
A network hypervisor that can create multiple virtual and programmable
networks on top of a single physical infrastructure.
Protocol
Controller
- Beehive Network
Controller - A distributed SDN controller built on top of Beehive.
It supports OpenFlow but can be easily extended for other southbound
protocols.
- Floodlight -
A java-based OpenFlow controller.
- IRIS - A Resursive SDN
Openflow Controller created by SDN Research Section, ETRI.
- lighty.io
core - lighty.io core components - An open source development
framework for building Java-based SDN controllers.
- Netrack - An
OpenFlow controller framework in Go.
- NodeFlow - An
OpenFlow Controller Node Style.
- NOX - An open source
development platform for C++-based software-defined networking
(SDN) control applications.
- OESS - The Open
Exchange Software Suite to configure and control OpenFlow Enabled
switches.
- ONOS - Open Network Operating
System.
- Open
MUL - A lightweight SDN/Openflow controller written almost entirely
in C from scratch.
- Open Security
Controller - Software-defined security orchestration solution that
automates deployment of virtualized network security functions, like
next-generation firewall, intrusion prevention systems and application
data controllers
- OpenContrail
- A SDN project that utilizes SDN & NFV and provides all the
necessary components for network virtualization.
- OpenDaylight -
OpenDaylight Platform
- OVN
- OVN: Open Virtual Network for Open vSwitch
- POX - An open source
development platform for Python-based software-defined networking
(SDN) control applications.
- Ravel - A
software-defined networking (SDN) controller that uses a standard SQL
database to represent the network.
- Ryu - A component-based software
defined networking framework.
- Trema - A full-stack,
easy-to-use framework for developing OpenFlow controllers in Ruby and
C.
- Vyatta - The first
commercial Controller built directly from OpenDaylight.
Simulator/Emulator
- Containernet -
Mininet fork that allows to use Docker containers as hosts in emulated
networks
- EstiNet
- A world-renowned software tool for network planning
- MaxiNet - MaxiNet extends the
famous Mininet emulation environment to span the emulation across
several physical machines. This allows to emulate very large
software-defined networks.
- Mininet - An Instant Virtual
Network on your Laptop (or other PC)
- ns-3 - A discrete-event network
simulator that supports OpenFlow environment.
- OpenNet - A
simulator for software-defined wireless local area network
- Tinynet - A
lightweight instant virtual network for rapid prototyping SDN
Language
- Frenetic -
The Frenetic Programming Language and Runtime System
- NEMO
- A domain specific language (DSL) based on abstraction of network
models and conclusion of operation patterns.
- P4 - A declarative language for
expressing how packets are processed by the pipeline of a network
forwarding element such as a switch, NIC, router or network function
appliance.
- POF -
Protocol Oblivious Forwarding
- Pyretic -
Pyretic is one member of the Frenetic family of SDN programming
languages.
Library
- loxigen -
LoxiGen is a tool that generates OpenFlow protocol libraries for a
number of languages.
- nettle - A
Haskell library for working with the OpenFlow protocol.
- OCaml
OpenFlow - A serialization and protocol library for OpenFlow.
- oflib-node -
Oflib-node is an OpenFlow protocol library for Node. It converts between
OpenFlow wire protocol messages and Javascript objects.
- openfaucet -
openfaucet is a pure Python implementation of the OpenFlow 1.0.0
protocol, based on Twisted.
- OpenFlowJ -
A Java implementation of low-level OpenFlow packet
marshalling/unmarshalling and IO operations.
- Scapy - Scapy is
a powerful interactive packet manipulation program.
Test
- Cbenech
- Benchmarking tool for controllers
- nice-of - A
tool to test OpenFlow controller application for the NOX controller
platform.
- oftest - OpenFlow
Testing Framework
- OpenSDNCore -
Virtualisation Testbed for NFV/SDN Environment.
- ptf - A python based
dataplane test framework based on unittest.
- STS - SDN
Troubleshooting System, simulates network devices, allowing
programmatically test cases generation.
NFV
- OPNFV - Accelerating NFV’s
evolution through an integrated, open platform.
Overlay Network
- GENEVE -
What is GENEVE?
- NVGRE
- NVGRE-Network-Virtualization-using-Generic-Routing-Encapsulation
- VXLAN -
Virtual Extensible LAN
Router
- bgp4r - BGP4R is a
ruby library which enables the creation and manipulation of BGP
messages. In BGP4R, all well-known BGP constructs are defined in
classes.
- BGPFeeder
- Bird - The BIRD project aims
to develop a fully functional dynamic IP routing daemon primarily
targeted on (but not limited to) Linux, FreeBSD and other UNIX-like
systems and distributed under the GNU General Public License.
- FreeRouter - Java-based
vRouter
- FRRouting - An IP routing
protocol suite for Linux and Unix platforms which includes protocol
daemons for BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, RIPv2, RIPng,
PIM-SM/MSDP and LDP as well as very early support for IS-IS, EIGRP and
NHRP.
- gobgp - GoBGP is an open
source BGP implementation designed from scratch for modern environment
and implemented in a modern programming language, the Go Programming
Language.
- Quagga - Quagga is a routing
software suite, providing implementations of OSPFv2, OSPFv3, RIP v1 and
v2, RIPng and BGP-4 for Unix platforms, particularly FreeBSD, Linux,
Solaris and NetBSD. Quagga is a fork of GNU Zebra which was developed by
Kunihiro Ishiguro.
- yabgp - YABGP is a
yet another Python implementation for BGP Protocol. It can be used to
establish BGP connections with all kinds of routers (include real
Cisco/HuaWei/Juniper routers and some router simulators like GNS3) and
receive/parse BGP messages for future analysis.
Misc
- ASAP2
- The ASAP2 accelerator is built on top of eSwitch NIC hardware, and
allows either the entire virtual switch, or significant portions of
virtual switch or distributed virtual router (DVR) operations to be
offloaded to the Mellanox NIC
- DPDK - DPDK is a set of libraries and
drivers for fast packet processing.
- RDMA
- Remote direct memory access (RDMA) is a direct memory access from the
memory of one computer into that of another without involving either
one’s operating system. This permits high-throughput, low-latency
networking
- XDP - XDP or
eXpress Data Path provides a high performance, programmable network data
path in the Linux kernel as part of the IO Visor Project. It is designed
to run on any processors. The first supported CPU was Intel x86 and it
is now extended to IBM POWER and ARM.
Userspace Network Stack
- drv-netif-dpdk -
drv-netif-dpdk is a DPDK network interface for rump kernels. The
combined result is a userspace TCP/IP stack doing packet I/O via
DPDK.
- f-stack - F-Stack
is an user space network development kit with high performance based on
DPDK, FreeBSD TCP/IP stack and coroutine API.
- mTCP - mTCP is a
highly scalable user-level TCP stack for multicore systems. mTCP source
code is distributed under the Modified BSD License. For more detail,
please refer to the LICENSE. The license term of io_engine driver and
ported applications may differ from the mTCP’s.
- net-next-nuse -
Network Stack in Userspace (NUSE) NUSE allows us to use Linux network
stack as a library which any applications can directory use by linking
the library. Each application has its own network stack so, it provides
an instant virtualized environment apart from a host operating
system.
- nff-go - NFF-Go
becomes part of DPDK project umbrella under Linux Foundation! Mirror
repo can be found here: http://dpdk.org/browse/apps/nff-go/. We will
accept patches through DPDK mail-list and standard DPDK contribution
process too.
Analytics
- Apache Spot -
Community-driven cybersecurity project, built from the ground up, to
bring advanced analytics to all IT Telemetry data on an open, scalable
platform
- PNDA - The scalable, open source big
data analytics platform for networks and services.
- SNAS - Streaming Network Analytics
System (project SNAS) is a framework to collect, track and access tens
of millions of routing objects (routers, peers, prefixes) in real
time.
Resources
Books
Paper
Awesome Posts