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
- PicOS - A SDN OS for white box switches Layer-2/3 feature set with support for OpenFlow, OVSDB, and other protocols.
- 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.
- 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.
- OcNOS - Extensive switching and routing protocol support with advanced capabilities such as MPLS and SDN
- FlexSwitch - The first open source network protocol suite offering complete layer2/layer3 functionality for accelerating development and deployment of whitebox networking gear
- beluganos - Beluganos is a new network OS designed for white-box switches (OF-DPA), which can apply large-scale networks.
- SONiC - Software for Open Networking in the Cloud SONiC
Install Environment
- ONIE - ONIE enables a bare metal network switch ecosystem where end users have a choice among different network operating systems.
Software Switch
- OpenvSwtich - Open vSwitch is a production quality, multilayer virtual switch.
- Indigo - Indigo is an open source project aimed at enabling support for OpenFlow on physical and hypervisor switches.
- CPqD- An OpenFlow 1.3 compatible user-space software switch implementation
- Lagopus - A high-performance software OpenFlow 1.3 switch.
- LINC-Switch - A pure OpenFlow software switch written in Erlang
- snabbswitch - An open source virtualized Ethernet networking stack.
- ZeroTier - ZeroTier is a software-based managed Ethernet switch for planet Earth.
- PISCES - A Programmable, Protocol-Independent Software Switch.
- BESS - Berkeley Extensible Software Switch, BESS is a modular framework for software switches.
- FD.IO - Relentlessly focused on data IO speed and efficiency for more flexible and scalable networks and storage
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
- OpenFlow - A communications protocol that gives access to the forwarding plane of a network switch or router over the network.
- OF-Config - OpenFlow Management and Configuration Protocol
- OVSDB - A communication protocol which used to manage the OpenvSwitch database.
- NETCONF
- OpFlex
- Path Computation Element Protocol, PCEP
- Extensible Messaging and Presence Protocol, XMPP
Controller
- NOX - An open source development platform for C++-based software-defined networking (SDN) control applications.
- POX - An open source development platform for Python-based software-defined networking (SDN) control applications.
- NodeFlow - An OpenFlow Controller Node Style.
- ONOS - Open Network Operating System.
- OpenDaylight - OpenDaylight Platform
- Ryu - A component-based software defined networking framework.
- Floodlight - A java-based OpenFlow controller.
- Vyatta - The first commercial Controller built directly from OpenDaylight.
- OpenContrail - A SDN project that utilizes SDN & NFV and provides all the necessary components for network virtualization.
- IRIS - A Resursive SDN Openflow Controller created by SDN Research Section, ETRI.
- Open MUL - A lightweight SDN/Openflow controller written almost entirely in C from scratch.
- OESS - The Open Exchange Software Suite to configure and control OpenFlow Enabled switches.
- Beehive Network Controller - A distributed SDN controller built on top of Beehive. It supports OpenFlow but can be easily extended for other southbound protocols.
- Ravel - A software-defined networking (SDN) controller that uses a standard SQL database to represent the network.
- Trema - A full-stack, easy-to-use framework for developing OpenFlow controllers in Ruby and C.
- 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
- Netrack - An OpenFlow controller framework in Go.
Simulator/Emulator
- Mininet - An Instant Virtual Network on your Laptop (or other PC)
- OpenNet - A simulator for software-defined wireless local area network
- EstiNet - A world-renowned software tool for network planning
- ns-3 - A discrete-event network simulator that supports OpenFlow environment.
- Containernet - Mininet fork that allows to use Docker containers as hosts in emulated networks
- Tinynet - A lightweight instant virtual network for rapid prototyping SDN
- 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.
Language
- 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
- Frenetic - The Frenetic Programming Language and Runtime System
- Pyretic - Pyretic is one member of the Frenetic family of SDN programming languages.
- NEMO - A domain specific language (DSL) based on abstraction of network models and conclusion of operation patterns.
Library
- loxigen - LoxiGen is a tool that generates OpenFlow protocol libraries for a number of languages.
- openfaucet - openfaucet is a pure Python implementation of the OpenFlow 1.0.0 protocol, based on Twisted.
- oflib-node - Oflib-node is an OpenFlow protocol library for Node. It converts between OpenFlow wire protocol messages and Javascript objects.
- OpenFlowJ - A Java implementation of low-level OpenFlow packet marshalling/unmarshalling and IO operations.
- nettle - A Haskell library for working with the OpenFlow protocol.
- OCaml OpenFlow - A serialization and protocol library for OpenFlow.
- Scapy - Scapy is a powerful interactive packet manipulation program.
Test
- oftest - OpenFlow Testing Framework
- STS - SDN Troubleshooting System, simulates network devices, allowing programmatically test cases generation.
- nice-of - A tool to test OpenFlow controller application for the NOX controller platform.
- OpenSDNCore - Virtualisation Testbed for NFV/SDN Environment.
- Cbenech - Benchmarking tool for controllers
NFV
- OPNFV - Accelerating NFV's evolution through an integrated, open platform.
Overlay Network
- VXLAN - Virtual Extensible LAN
- NVGRE - NVGRE-Network-Virtualization-using-Generic-Routing-Encapsulation
Router
- FreeRouter - Java-based vRouter
- Bird
- Quagga
- 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.
- BGPFeeder
- bgp4r
- gobgp
- yabgp
Misc
- Central Office Re-architected as a Datacenter, CORD - Reference Implementation of a Service Delivery Platform that Provides Cloud Economies and Agility.
- OPEN-Orchestrator Project, Open-O
- Open Source MANO Community, OSM
- Enhanced Controller Orchestration Management Policy, ECOMP - Operations management framework.
- Open Network Automation Platform, ONAP - Alignment of the two projects creates a harmonized and comprehensive framework for real-time, policy-driven software automation of virtual network functions that will enable software, network, IT and cloud providers and developers to rapidly create new services.
- Mininet Spear Narmox - A online web service provides a visualization of Mininet Topology
High Performance Network
- DPDK - DPDK is a set of libraries and drivers for fast packet processing. 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.
- 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.
- 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
Userspace Network Stack
- 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.
- 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.
- yanff - YANFF is a set of libraries for creating and deploying cloud-native Network Functions (NFs). It simplifies the creation of network functions without sacrificing performance.
Analytics
- 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.
- 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
Resources
Books
- SDN: Software Defined Networks: An Authoritative Review of Network Programmability Technologies
- 圖解OpenFlow
- 重构网络-SDN架构与实现
- 深度解析SDN: 利益、战略、技术、实践
- SDN核心技术剖析和实战指南
- 软件定义网络:SDN与OpenFlow解析
- Network Algorithmics:An Interdisciplinary Approach to Designing Fast Networked Devices
- Network Programmability and Automation Skills for the Next-Generation Network Engineer
- SDN网络指南(OpenSource Book in Chinese by Pengfei Ni)
- DevOps for Networking
Paper
- SDN A Comprehensive Survey
- A Guided Tour of Data-Center Networking
- High Performance Datacenter Networks: Architectures, Algorithms, and Opportunities
- Re-architecting datacenter networks and stacks for low latency and high performance