September 14, 2019

412 words 2 mins read



OpenFlow Controller written in Go

repo name superkkt/cherry
repo link
language Go
size (curr.) 2043 kB
stars (curr.) 70
created 2015-06-20
license GNU General Public License v2.0


Cherry is an OpenFlow controller written in Go that supports OpenFlow 1.0 and 1.3 protocols. This project is not designed for general purpose, and it instead focuses on SDN (Software-Defined Networking) for an IT service provider.


  • Supports OpenFlow 1.0 and 1.3 protocols
  • Focuses on compatibility with commercial OpenFlow-enabled switches
  • Supports network topology that has loops in it
  • Provides several northbound applications: ProxyARP, L2Switch, Floating-IP, etc.
  • Provides simple plugin system for northbound applications
  • RESTful API to manage the controller itself

Supported OpenFlow Switches (Fully Tested)

  • Dell Force10 S4810
  • Dell Force10 S3048-ON
  • Dell Force10 S3148
  • Open vSwitch

Tested OpenFlow Switches

  • HP 2920G
  • Pica8 P-3295
  • Quanta T1048-LB9


  • MySQL (or MariaDB) database server

Quick Start

You can install Cherry on Docker or natively from source based on your preference.

Installing on Docker

$ git clone

  • Copy the template configuration:

$ sudo cp cherry/cherry.yaml /usr/local/etc

  • Edit the configuration file /usr/local/etc/cherry.yaml as you want.

  • Build Docker image as root:

# cd cherry; docker build -t cherry .

  • Run as root:

# docker run -d -p 6633:6633 -v /dev/log:/dev/log -v /your/config/cherry.yaml:/usr/local/etc/cherry.yaml cherry

The bind mount of /dev/log is to collect syslog messages from the container and then write to the host’s syslog daemon.

  • That’s it! Cherry will be started in L2 switch mode.

Installing from source

$ go get

  • Copy the compiled binary and template configuration:

$ sudo cp $GOPATH/bin/cherry /usr/local/bin

$ sudo cp $GOPATH/src/ /usr/local/etc

  • Edit the configuration file /usr/local/etc/cherry.yaml as you want.

  • Run:

$ /usr/local/bin/cherry &

  • That’s it! Cherry will be started in L2 switch mode.
Copyright (C) 2015 Samjung Data Service, Inc. All rights reserved.
Kitae Kim <>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.
comments powered by Disqus