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