软件定义网络

Awesome SDN Awesome Build Status

关于软件定义网络(SDN)的出色列表

Introduction

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

Network Operating System

  • Beluganos -Beluganos是专为白盒交换机(OF-DPA)设计的新网络操作系统,可以应用大规模网络.
  • Cumulus Linux -Cumulus Linux是功能强大的开放网络操作系统,使您可以使用网络规模的原理(例如,世界上最大的数据中心)来进行自动化,自定义和扩展.
  • FlexSwitch -第一个开放源代码网络协议套件,提供完整的layer2 / layer3功能,以加速白盒网络设备的开发和部署
  • OcNOS -具有高级功能的广泛交换和路由协议支持,例如MPLS和SDN
  • Open Network Linux, ONL -用于“裸机”交换机的Linux发行版,即由商品组件构建的网络转发设备.
  • OpenSwitch -Dell EMC提供的linux网络操作系统.
  • OpenWrt -是针对嵌入式设备的Linux操作系统.
  • PicOS -用于白盒的SDN操作系统切换了第⅔层功能集,并支持OpenFlow,OVSDB和其他协议.
  • SONiC -用于云SONiC中的开放网络的软件
  • Stratum -用于软件定义网络的开源,独立于硅的交换机操作系统

Install Environment

  • ONIE -ONIE支持裸机网络交换机生态系统,最终用户可以在不同的网络操作系统之间进行选择.

Software Switch

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

Network Virtualization

  • FlowVisor -一个OpenFlow控制器,充当交换机和多个控制器之间的管理程序/代理. 可以并行分割多个交换机,有效地分割网络.
  • OpenVirtex - A network hypervisor that can create multiple virtual and programmable networks on top of a single physical infrastructure.

Protocol

Controller

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

Simulator/Emulator

  • Containernet -Mininet fork,允许将Docker容器用作仿真网络中的主机
  • EstiNet -享誉全球的网络规划软件工具
  • MaxiNet -MaxiNet扩展了著名的Mininet仿真环境,以跨多个物理机器进行仿真. 这样可以模拟非常大的软件定义网络.
  • Mininet -便携式计算机(或其他PC)上的即时虚拟网络
  • ns-3 -支持OpenFlow环境的离散事件网络模拟器.
  • OpenNet -用于软件定义的无线局域网的模拟器
  • Tinynet -用于快速制作SDN的轻量级即时虚拟网络

Language

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

Library

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

Test

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

NFV

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

Overlay Network

  • GENEVE -什么是GENEVE?
  • NVGRE -使用通用路由封装的NVGRE网络虚拟化
  • VXLAN -虚拟可扩展局域网

Router

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

Misc

High Performance Network

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

Userspace Network Stack

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

Analytics

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

Resources

Books

Paper

Awesome Posts