软件定义网络

Awesome SDN Awesome Build Status

关于软件定义网络(SDN)的精彩列表

Introduction

软件定义网络(SDN)是一种计算机网络方法,允许网络管理员通过抽象更高级别的功能来管理网络服务. 维基: Software-Defined Networking

Network Operating System

  • PicOS - 用于白盒的SDN OS切换第2层/第3层功能集,支持OpenFlow,OVSDB和其他协议.
  • Open Network Linux, ONL - 用于“裸机”交换机的Linux发行版,即由商品组件构建的网络转发设备.
  • OpenSwitch - 来自Dell EMC的Linux网络操作系统.
  • Cumulus Linux - Cumulus Linux是一个功能强大的开放式网络操作系统,允许您使用世界上最大的数据中心等网络规模原则进行自动化,自定义和扩展.
  • OcNOS - 先进的广泛切换和路由协议支持 MPLS和SDN等功能
  • FlexSwitch - 第一个开源网络协议套件,提供完整的layer2 / layer3功能,用于加速白盒网络设备的开发和部署
  • beluganos - Beluganos是专为白盒交换机(OF-DPA)设计的新型网络操作系统,可应用大规模网络.
  • SONiC - 云中开放网络的软件 SONiC
  • Stratum - 用于软件定义网络的开源,独立于硅的交换机操作系统
  • OpenWrt - Is a Linux Operating System targeting embedded devices.

Install Environment

  • ONIE - ONIE实现了裸机网络交换机生态系统,终端用户可以在不同的网络操作系统中进行选择.

Software Switch

  • Open vSwitch - Open vSwitch是一款生产品质的多层虚拟交换机.
  • Indigo - Indigo是一个开源项目,旨在支持物理和虚拟机管理程序交换机上的OpenFlow.
  • CPqD- 与OpenFlow 1.3兼容的用户空间软件交换机实现
  • Lagopus - 高性能软件OpenFlow 1.3交换机.
  • LINC-Switch - 用Erlang编写的纯OpenFlow软件开关
  • snabbswitch - 开源虚拟化以太网网络堆栈.
  • ZeroTier - ZeroTier是一款基于软件的行星地球管理以太网交换机.
  • PISCES - 可编程,独立于协议的软件交换机.
  • BESS - Berkeley可扩展软件交换机,BESS是软件交换机的模块化框架.
  • FD.IO - 坚定不移地专注于数据IO速度和效率,以实现更灵活,可扩展的网络和存储
  • bmv2- P4软件开关,通常用作验证开发人员用P4语言描述的功能的工具.

Network Virtualization

  • FlowVisor - OpenFlow控制器,充当交换机和多个控制器之间的管理程序/代理. 可以并行切片多个交换机,有效切片网络.
  • OpenVirtex - 网络管理程序,可以在单个物理基础架构上创建多个虚拟和可编程网络.

Protocol

Controller

  • lighty.io core - lighty.io核心组件 - 用于构建基于Java的SDN控制器的开源开发框架.
  • NOX - 基于C ++的软件定义网络( SDN )控制应用程序的开源开发平台.
  • POX - An open source development platform for Python-based software-defined networking (SDN) control applications.
  • NodeFlow - OpenFlow控制器节点样式.
  • ONOS - 开放网络操作系统.
  • OpenDaylight - OpenDaylight平台
  • Ryu - 基于组件的软件定义网络框架.
  • Floodlight - 基于java的OpenFlow控制器.
  • Vyatta - 直接从OpenDaylight构建的第一个商业控制器.
  • OpenContrail - 利用SDN和NFV的SDN项目,为网络虚拟化提供所有必要的组件.
  • IRIS - 由ETRI的SDN研究部门创建的Resurive SDN Openflow Controller.
  • Open MUL - 从头开始​​几乎完全用C语言编写的轻量级SDN / Openflow控制器.
  • OESS - 用于配置和控制OpenFlow Enabled交换机的Open Exchange Software Suite.
  • Beehive Network Controller - 基于Beehive构建的分布式SDN控制器. 它支持OpenFlow,但可以轻松扩展到其他南向协议.
  • Ravel - 软件定义网络(SDN)控制器,使用标准SQL数据库来表示网络.
  • Trema - 用于在Ruby和C中开发OpenFlow控制器的全栈,易于使用的框架.
  • Open Security Controller - 软件定义的安全编排解决方案,可自动部署虚拟化网络安全功能,如下一代防火墙,入侵防御系统和应用数据控制器
  • Netrack - Go中的OpenFlow控制器框架.
  • OVN - OVN:为Open vSwitch打开虚拟网络

Simulator/Emulator

  • Mininet - 笔记本电脑(或其他PC)上的即时虚拟网络
  • OpenNet - 用于软件定义的无线局域网的模拟器
  • EstiNet - 世界知名的网络规划软件工具
  • ns-3 - 支持OpenFlow环境的离散事件网络模拟器.
  • Containernet - Mininet fork允许在模拟网络中使用Docker容器作为主机
  • Tinynet - 用于快速原型设计SDN的轻量级即时虚拟网络
  • MaxiNet - MaxiNet扩展了着名的Mininet仿真环境,以跨越多个物理机器的仿真. 这允许模拟非常大的软件定义网络.

Language

  • P4 - 一种声明性语言,用于表示如何通过网络转发元件(如交换机,NIC,路由器或网络功能设备)的管道处理数据包.
  • POF - 协议不经意转发
  • Frenetic - 狂热编程语言和运行时系统
  • Pyretic - Pyretic是Frenetic SDN编程语言系列的一员.
  • NEMO - 基于网络模型抽象和操作模式结论的领域特定语言(DSL).

Library

  • loxigen - LoxiGen是一种为多种语言生成OpenFlow协议库的工具.
  • openfaucet - openfaucet是OpenFlow 1.0.0的纯Python实现 协议,基于Twisted.
  • oflib-node - Oflib-node是Node的OpenFlow协议库. 它在OpenFlow有线协议消息和Javascript对象之间进行转换.
  • OpenFlowJ - 低级OpenFlow数据包编组/解组和IO操作的Java实现.
  • nettle - 用于处理OpenFlow协议的Haskell库.
  • OCaml OpenFlow - OpenFlow的序列化和协议库.
  • Scapy - Scapy是一个功能强大的交互式数据包操作程序.

Test

  • oftest - OpenFlow测试框架
  • STS - SDN故障排除系统,模拟网络设备,允许以编程方式生成测试用例.
  • nice-of - 用于测试NOX控制器平台的OpenFlow控制器应用程序的工具.
  • OpenSDNCore - NFV / SDN环境的虚拟化测试平台.
  • Cbenech - 控制器基准测试工具
  • ptf - 基于单元测试的基于python的数据平面测试框架.

NFV

  • OPNFV - 通过集成的开放平台加速NFV的发展.

Overlay Network

  • VXLAN - 虚拟可扩展LAN
  • NVGRE - NVGRE-Network-Virtualization-using-Generic-Routing-Encapsulation
  • GENEVE - 什么是GENEVE?

Router

  • FreeRouter - 基于Java的vRouter
  • Bird - BIRD项目旨在开发一个功能齐全的动态IP路由守护进程,主要针对(但不限于)Linux,FreeBSD和其他类UNIX系统,并在GNU通用公共许可证下分发.
  • Quagga - Quagga是一个路由软件套件,为Unix平台提供OSPFv2,OSPFv3,RIP v1和v2,RIPng和BGP-4的实现,特别是FreeBSD,Linux,Solaris和NetBSD. Quagga是由Kunihiro Ishiguro开发的GNU Zebra的分支.
  • FRRouting - 适用于Linux和Unix平台的IP路由协议套件,包括BGP4,BGP4 +,OSPFv2,OSPFv3,RIPv1,RIPv2,RIPng,PIM-SM / MSDP和LDP的协议守护程序,以及对IS-IS,EIGRP和IS-IS的早期支持. NHRP.
  • BGPFeeder
  • bgp4r - BGP4R是一个ruby库,可以创建和操作BGP消息. 在BGP4R中,所有众所周知的BGP构造都在类中定义.
  • gobgp - GoBGP是一个开源的BGP实现,从头开始设计用于现代环境,并用现代编程语言Go编程语言实现.
  • yabgp - YABGP是BGP协议的另一个Python实现. 它可用于与各种路由器(包括真实的Cisco / HuaWei / Juniper路由器和一些路由器模拟器,如GNS3)建立BGP连接,并接收/解析BGP消息以供将来分析.

Misc

High Performance Network

  • DPDK - DPDK是一组用于快速数据包处理的库和驱​​动程序. 它可以在任何处理器上运行. 第一个支持的CPU是Intel x86,现在扩展到IBM POWER和ARM.
  • RDMA - 远程直接内存访问(RDMA)是从一台计算机的内存到另一台计算机的内存的直接内存访问,不涉及任何一个操作系统. 这允许高吞吐量,低延迟的网络
  • XDP - 作为IO Visor项目的一部分,XDP或eXpress数据路径在Linux内核中提供高性能,可编程的网络数据路径.
  • ASAP2 - ASAP2加速器构建于eSwitch NIC硬件之上,允许将整个虚拟交换机或虚拟交换机或分布式虚拟路由器(DVR)操作的重要部分卸载到Mellanox NIC

Userspace Network Stack

  • mTCP - mTCP是用于多核系统的高度可扩展的用户级TCP堆栈. mTCP源代码在Modified BSD License下分发. 有关更多详细信息,请参阅许可证. io_engine驱动程序和移植应用程序的许可条款可能与mTCP不同.
  • net-next-nuse - 用户空间中的网络堆栈(NUSE)NUSE允许我们将Linux网络堆栈用作库,通过链接库,任何应用程序都可以使用该库. 每个应用程序都有自己的网络堆栈,因此它提供了除主机操作系统之外的即时虚拟化环境.
  • drv-netif-dpdk - drv-netif-dpdk是臀部内核的DPDK网络接口. 合并后的结果是通过DPDK进行数据包I / O的用户空间TCP / IP堆栈.
  • f-stack - F-Stack是一种用户空间网络开发套件,具有基于DPDK,FreeBSD TCP / IP协议栈和协程API的高性能.
  • nff-go - NFF-Go成为Linux Foundation下DPDK项目伞的一部分! Mirror repo可以在这里找到:http://dpdk.org/browse/apps/nff-go/. 我们也将通过DPDK邮件列表和标准DPDK贡献流程接受补丁.

Analytics

  • PNDA - 适用于网络和服务的可扩展的开源大数据分析平台.
  • SNAS - 流网络分析系统(项目SNAS)是一个实时收集,跟踪和访问数千万个路由对象(路由器,对等体,前缀)的框架.
  • Apache Spot - 社区驱动的网络安全项目,从头开始构建,在开放,可扩展的平台上为所有IT遥测数据提供高级分析

Resources

Books

Paper

Awesome Posts