Cherry
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.
Features
- 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
Requirements
- 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 https://github.com/superkkt/cherry.git
- Copy the template configuration:
$ sudo cp cherry/cherry.yaml /usr/local/etc
# cd cherry; docker build -t cherry .
# 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 github.com/superkkt/cherry
- Copy the compiled binary and template configuration:
$ sudo cp $GOPATH/bin/cherry /usr/local/bin
$ sudo cp $GOPATH/src/github.com/superkkt/cherry/cherry.yaml /usr/local/etc
$ /usr/local/bin/cherry &
- That's it! Cherry will be started in L2 switch mode.
Copyright and License
Copyright (C) 2015 Samjung Data Service, Inc. All rights reserved.
Kitae Kim <superkkt@sds.co.kr>
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
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.