转自:http://sdnhub.cn/index.php/sdn_opensource_project/
SDN开源项目汇总
1 控制器(Controller)
OpenDaylight
OpenDaylight以开源社区为主导,使用Java语言实现的的开源框架,旨在推动创新实施以及软件定义网络透明化。面对SDN型网络,OpenDaylight作为项目核心,拥有一套模块化、可插拔且极为灵活的控制器,还包含一套模块合集,能够执行需要快速完成的网络任务。
相关网站:http://www.opendaylight.org/ONOS
ONOS是由ON.Lab使用Java及Apache实现发布的首款开源的SDN网络操作系统,主要面向服务提供商和企业骨干网。ONOS的设计宗旨是满足网络需求实现可靠性强、性能好、灵活度高。此外,ONOS的北向接口抽象层和API支持简单的应用开发,而通过南向接口抽象层和接口则可以管控OpenFlow或者传统设备。
相关网站:http://onosproject.org/Floodlight
Floodlight是由Big Switch Networks使用apache协议及Java语言开发的一款OpenFlow控制器,被用来与交换机、路由器、虚拟交换机及其他支持OpenFlow标准的设备一起工作。
相关网站:http://floodlight.openflowhub.org/RYU
RYU由日本NTT公司负责设计研发的一款开源SDN控制器,同POX一样,也是完全由Python语言实现,使用者可以在Python语言的基础上实现自己的应用,采用Apache License开源协议标准,目前支持协议OpenFlow1.0、1.2、1.3,同时支持在OpenStack上的部署应用。提供逻辑上的集中化管理,通过提供API使网络管理更加方便。
相关网站:http://www.osrg.net/ryu/POFController
POFController是由华为公司采用BSD/ Apache授权基于Java语言实现的OpenFlow控制器,提供了一个GUI管理界面,用于交换机的控制和配置。POF主要包含控制器和交换机两个原型文件,旨在提高OpenFlow的规范及支持无感知转发协议和数据包格式。
相关网站:http://www.poforwarding.org/MUL
MUL是一个用c语言实现多线程架构的OpenFlow控制器,用来连接app的多种北向接口,目前支持openFlow的1.0、1.3版本,主要为性能和可靠性设计,是一款轻量级高效的控制器。支持一键安装、CTL命令行管理和WEB GUI。
相关网站:http://sourceforge.net/projects/mul/POX
POX是由斯坦福使用Python语言开发的基于OpenFlow的一种控制器,是NOX的兄弟,它具有能将交换机送上来的协议包交给指定软件模块的功能。
相关网站:http://www.noxrepo.org/support/about-pox/NOX
NOX 是Nicira使用C语言开发的首个提供尽可能通用接口的 SDN 软件定义网络生态系统的控制器,也是用来构建网络控制应用的平台。
相关网站:http://www.noxrepo.org/nox/versions-downloads/IRIS
IRIS是由ETRI研究团队使用Java语言创建的一个Resursive SDN Openflow控制器。目标是创建一个具备水平扩展电信级网络、高可用性及透明故障恢复、基于OpenFlow递归网络抽象的多域支持等主要功能的SDN控制器。
相关网站:http://openiris.etri.re.kr/Jaxon
Jaxon是一款基于Java语言实现的OpenFlow实现的控制器,提供给NOX一个端口,用来桥接NOX控制器与Java应用。
相关网站:http://jaxon.onuos.org/Trema
Trema是由NEC公司使用Ruby和C语言实现的易用性极强的一款OpenFlow控制器框架。
相关网站:http://trema.github.com/trema/Beacon
Beacon是由斯坦福大学的David Erickson等人设计,基于Java语言开发实现的开源控制器,以高效性和稳定性应用在在多个科研项目及实验环境中,除此之外,具有很好的跨平台性,并支持多线程,可以通过UI界面进行访问控制、使用和部署。
相关网站:https://openflow.stanford.edu/display/Beacon/HomeMaestro
Maestro是莱斯大学论文中提出并用Java语言实现的一款基于LGPL V2.1开原协议标准的多线程控制器,主要应用于科研领域,具有很好的平台适应性,可以有效的在多种操作系统和体系结构上运行。
相关网站:http://code.google.com/p/maestro-platform/NodeFlow
NodeFlow是由Cisco Systems CTO Gary Berger牵头使用JavaScript开发的一个极度简化的OpenFlow控制器,用于Node.js(www.nodejs.org)。Node.js是一个服务器端的软件系统,用于编写可扩展的因特网应用。
相关网站:http://garyberger.net/?p=537Mc-Nettle
Mc-Nettle是耶鲁大学开发的一款新型OpenFlow控制器,它定位于超强的多核多服务器,能承担大型数据中心规模的负载流量(譬如每秒2千万个流请求,并可扩展至5000台交换机)。
相关网站:http://haskell.cs.yale.edu/nettle/mcnettle/Jaxon
Jaxon is a NOX-dependent Java-based OpenFlow Controller.
相关网站:http://jaxon.onuos.org/NDDI – OESS: OESS is an application to configure and control OpenFlow Enabled switches through a very simple and user friendly User Interface.
相关网站:http://code.google.com/p/nddi/wiki/READMEovs-controller (C) Trivial reference controller packaged with Open vSwitch.
相关网站:http://openvswitch.org/cgi-bin/ovsman.cgi?page=utilities%2Fovs-controller.8SNAC (C++)
SNAC is an OpenFlow controller builton NOX, which uses a web-based policy manager to manage the network.
相关网站:http://www.openflow.org/wp/snac/Resonance
Resonance is a Network Access Control application built using NOX and OpenFlow.
相关网站****:http://www.cc.gatech.edu/~sburnett/posts/2010-05-20-resonance-netkit.html
2 交换机与独立的OpenFlow栈
Open vSwitch
Open vSwitch是由Nicira公司使用C和Python语言开发实现的遵循开源Apache2.0许可的产品级质量的多层虚拟交换标准!它旨在通过编程扩展,使庞大的网络自动化(配置、管理、维护),同时还支持标准的管理接口和协议,OVS支持跨越多个物理服务器的分布式环境,类似于VMware的vNetwork distributed vswitch以及Cisco的 Nexus 1000V。
相关网站:http://http://openvswitch.org/POFSwitch
POFSwitch是由华为公司采用BSD许可基于Linux系统C语言实现的虚拟交换机,POFSwitch与POFController协同工作增强OpenFlow协议支持协议无感知转发。
相关网站:http://www.poforwarding.orgPica8
XORPlus是由Pica8公司提供硬件交换芯片为软件定义网络提供开放系统支持L2 / L3协议栈的Open vSwitch软件平台,在严格控制源码License下允许派生,允许object-form,但不可以在未经过Pica8同意的情况下公开XORPlus的源码,也可在Pica8官网上进行沟通交涉。
http://www.pica8.com/Indigo
Indigo是Big Switch Network根据斯坦福大学的OpenFlow参考方案使用C语言实现的一个开源OpenFlow实现方案,运行于物理交换机之上,能够利用以太网交换机专用ASIC芯片的硬件特性,以线速运行OpenFlow,支持多达48个高速率10G端口,并支持可扩展的网络虚拟化应用,以及是使用OpenFlow控制器的跨越多服务器的分布式结构,类似VMware的vNetwork、Cisco的Nexus、Open vSwitch。
相关网站:http://www.projectfloodlight.org/indigo/ONetSwitch
ONetSwitch是叠锶公司作为全球首款基于Zynq器件实现的OpenFlow Switch产品,作为理想的SDN教育科研平台,具备“软件可编程,逻辑可重构,硬件可扩展”能力,是面向SDN/OpenFlow的可编程交换机。
相关网站:http://www.meshsr.com/cn/product/onetswitchPantou(OpenWRT)
Pantou(OpenWRT)是基于BackFire OpenWrt软件版本(Linux 2.6.32)实现的把商用的无线路由器或无线接入点设备变为一个支持OpenFlow的交换机,把OpenFlow作为OpenWrt上面的一个应用来实现,Pantou支持的设备包括:普通的Broadcom接入点设备、部分型号的LinkSys设备、以及采用Broadcom和Atheros芯片组的TP-LINK的接入点设备。
相关网站:http://archive.openflow.org/wk/index.php/Pantou_:_OpenFlow_1.0_for_OpenWRTOf13softswitch
Of13softswitch是由巴西爱立信创新中心(Ericsson Innovation Center)提供支持基于TrafficLab 1.1版软交换产品实现的与OpenFlow 1.3版本规范兼容的用户空间的一个软件交换机方案。该软件交换机包括:交换机实现方案(ofdatapath)、用于连接交换机和控制器的安全信道(ofprotocol)、用于和OpenFlow 1.3之间进行转换的库(oflib)、以及一个配置工具(dpctl)。
相关网站:https://github.com/CPqD/ofsoftswitch13LINC
LINC是由FlowForwarding主导基于OpenFlow1.2和1.3.1版本遵循Apache 2许可的一个交换机开源实现项目,架构采用流行的商用x86硬件,可运行于多种平台上,如Linux、Solaris、Windows、MacOS,在Erlang运行环境的支持下,还可以运行于FreeBSD平台。
相关网站:https://github.com/FlowForwarding/LINC-SwitchSwitch Light交换机软件
Switch Light是由Big Switch基于开源技术Indigo实现的可在物理或者虚拟交换机上部署OpenFlow网络协议的交换机软件,可被用户自行搭建,实现集中式自动化管理和配置,用户目前可以注册下载Switch Light软件,与Big Switch的其他SDN产品例如Big Switch Controller、Big Virtual Switch以及Big Tap Monitoring一起使用。
相关网站:http://bigswitch.com/Nettle
(Haskell) OpenFlow library written in Haskell.
相关网站:http://hackage.haskell.org/package/nettle-openflow-0.2.0OpenFaucet:
OpenFaucet is a pure Python implementation of the OpenFlow 1.0.0 protocol, based on Twisted. OpenFaucet can be used to implement both switches and controllers in Python.
相关网站:https://github.com/midokura/openfaucetOpenFlowJ
使用Java语言开发的OpenFlow协议栈。
相关网站:https://bitbucket.org/openflowj/openflowjJOpenFlow
JOpenFlow is a Java implementation of low-level OpenFlow protocol datagram marshalling/unmarshalling and IO operations. This code base is based on a port of openflowj (http://bitbucket.org/openflowj/openflowj) to OpenFlow v1.3.3.
相关网站:https://bitbucket.org/sdnhub/jopenflowloxigen
LoxiGen is a tool that generates OpenFlow protocol libraries for a number of languages. It is composed of a frontend that parses wire protocol descriptions and a backend for each supported language (currently C, Python, and Java, with an auto-generated wireshark dissector in Lua on the way). LoxiGen currently supports OpenFlow Versions 1.0, 1.1, 1.2, and 1.3.1. Versions 1.0 and 1.3.1 are actively used in production. Support for versions 1.1 and 1.2 is considered experimental.
相关网站:https://github.com/floodlight/loxigenOflib-node:
Oflib-node is an OpenFlow protocol library for Node. It converts between OpenFlow wire protocol messages and Javascript objects.
相关网站:https://github.com/TrafficLab/oflib-nodeOpenFlow Reference:
The OpenFlow reference implementation(C语言) is a minimal OpenFlow stack that tracks the spec.
相关网站:http://www.openflow.org/wp/downloads/
3 网络虚拟化
Flowvisor
Flowvisor是使用Java语言编写的建立在OpenFlow之上的网络虚拟化平台,用来在交换机和多个控制器之间传输透明代理proxy ,可以将物理网络分成多个逻辑网络,从而实现开放软件定义网络(SDN),是一个特殊的OpenFlow控制器,已经被部署在很多生产环境中,如从2009年开始应用于斯坦福大学的校园网络。
相关网站:https://github.com/OPENNETWORKINGLAB/flowvisorOpenVirtualX
OpenVirteX是ON.Lab开发的一个网络虚拟化平台,可以实现多租户的网络虚拟化,可以用来创建和管理虚拟SDN网络(vSDNs),通过虚拟化的OF网络构建特定的网络拓扑、寻址等。同FlowVisor相似,OVX也处于Physical Network与Controller的中间层,担任相同的角色。两者区别在于对数据包头的处理粒度不同,FlowVisor会根据flowspace的信息(如端口、ip地址等)将不同主机进行划分,以此来组成不同的slice,而OVX则提供一个完整的虚拟网络。
相关网站:http://ovx.onlab.us/MidoNet
MidoNet是由日本的SDN公司Midkura实现的一种分布式的、分散的、多层次的软件,遵循Apache许可,主要作为OpenStack云编排系统中的默认网络构件,可以让虚拟网络解决方案,特别是专为网络基础设施设计的方案,为云平台如OpenStack服务,并且将其网络存贮栈虚拟化。
相关网站:http://www.midokura.com/midonet/RouteFlow
RouteFlow是基于OpenFlow实现的路由虚拟化开源项目,解决交换机的流表生成和下发的数据平面问题及控制平面路由协议及计算的问题。RouteFlow时由一个OpenFlow控制器应用程序、一个独立的RouteFlow服务器以及虚拟网络环境组成来重新实现物理网络的连通性以及运行IP路由工程(如,Quagga)。
相关网站:http://routeflow.github.io/RouteFlow/EstiNet
EstiNet8.1是由*SDN解决方案开发商EstiNet(思锐科技)实现的OpenFlow网络仿真器/模拟器,以及故障排除工具,能够模拟数千个OpenFlow 1.0和1.3交换机,而其提供的DR.SDN能够简化和提供可视化工具,对OpenFlow控制器发送的数据包经过多台支持OpenFlow交换机时出现的问题进行分析,并可以找出其中存在的问题。
相关网站:http://www.estinet.com/
4 工具类开源项目
Mininet
Mininet 是一个轻量级软件定义网络和测试平台;它采用轻量级的虚拟化技术使一个单一的系统看起来像一个完整的网络运行想过的内核系统和用户代码,也可简单理解为 SDN 网络系统中的一种基于进程虚拟化平台,它支持 OpenFlow、OpenvSwith 等各种协议,Mininet 也可以模拟一个完整的网络主机、链接和交换机在同一台计算机上且有助于互动开发、测试和演示,尤其是那些使用 OpenFlow 和 SDN 技术;同时也可将此进程虚拟化的平台下代码迁移到真实的环境中。
相关网站:http://mininet.org
https://github.com/mininet/mininetOFTest
OFTest是一个基于Python的测试OpenFlow规范的框架和测试套件,目前支持的OpenFlow 协议版本为1.0/1.2/1.3。在测试环境中OFTest相当于控制器用来测试OF交换机,它可以主动或者被动与交换机连接,控制交换机和获取交换机信息。
相关网站:https://github.com/floodlight/oftestCbench
Cbench(controller benchmarker)是一种用于测试OpenFlow控制器性能的工具,通过不断循环产生新的流(packet-in消息)来测试控制器的处理能力。Cbench模拟连接到控制器的一组交换机,发送packet-in消息并查看flow-mod消息的下发,记录相关统计信息来计算衡量控制器性能指标。
相关网站:https://github.com/trema/cbenchOflops
Oflops是作为各个方面交换机基准的一个独立的控制器,实现添加和运行实施无关测试的模块化架构,以量化交换机性能。
相关网站:http://www.openflow.org/wk/index.php/OflopsResonance
Resonance是一个采用NOX和OpenFlow内置网络访问的SDN网络管理框架,含有运营商定义的网络策略的有限状态机制(FSM)。
相关网站:http://www.cc.gatech.edu/~sburnett/posts/2010-05-20-resonance-netkit.htmlFlowScale
FlowScale是通过多个物理交换机端口使用TOR(Top of Rack)交换机的OpenFlow功能划分和分配流量,使用负载均衡功能。
相关网站:http://www.openflowhub.org/display/FlowScale/FlowScale+HomeWakame VDC
Wakame VDC是由Ruby语言编写的为网络部分使用OpenFlow协议的IaaS平台。
相关网站::http://wakame.jp/ENVI
ENVI是一个可扩展的平台,它可以提供许多有趣的OpenFlow的相关网络可视化的基础GUI框架。
相关网站:http://www.openflow.org/wp/gui/NS3
NS3是由C和Python语言编写的网络模拟器,支持OpenFlow创建来模拟一个OpenFlow的环境,也可用于实时模拟。
相关网站:http://www.nsnam.org/
http://www.nsnam.org/docs/release/3.13/models/html/openflow-switch.htmlIronflow
Ironflow is a IF-MAP client to map the offered data from an Openflow controller into the MAP-Infrastructure. In addition ironflow offers the possibility to react on request for Investigation requests with the blocking of network traffic for the hosts quoted in the request.
相关网站:https://github.com/trustathsh/ironflowSTS
SDN Troubleshooting Simulator
相关网站:http://ucb-sts.github.com/sts/NICE-OF
NICE is a tool to test OpenFlow controller application for the NOX controller platform.
相关网站:http://code.google.com/p/nice-of/Mirage
Mirage is an exokernel for constructing secure, high-performance network applications across a variety of cloud computing and mobile platforms. Apparently, it supports OpenFlow.
相关网站:http://www.openmirage.org/
http://www.openmirage.org/blog/announcing-mirage-openflowENVI
ENVI is a GUI framework that was designed as an extensible platform which can provide the foundation of many interesting OpenFlow-related networking visualizations.