Building FlowVisor on Centos 6 – quick and dirty

I had the need to build a FlowVisor instance under CentOS.  Since nearly all of the docs I could find were for debian, I threw this together.  I utilized this GENI doc and the github docs as a simple reference.  This is the quick and dirty method I used:

Install the prerequisites:

sudo yum -y install ant eclipse java-1.6.0-openjdk.x86_64 git
sudo yum -y groupinstall "Development Tools"

Create my standard directories:

mkdir /services
cd /services
git clone git://

Navigate, add user and install

cd flowvisor
adduser flowvisor
sudo make fvuser=flowvisor fvgroup=flowvisor install

Here is the relativde output I saw:

[[email protected] flowvisor]# sudo make fvuser=flowvisor fvgroup=flowvisor install
Buildfile: build.xml

[mkdir] Created dir: /services/flowvisor/build
[mkdir] Created dir: /services/flowvisor/build.tests

[javac] Compiling 239 source files to /services/flowvisor/build
[javac] Note: /services/flowvisor/src/org/flowvisor/config/ uses or overrides a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.

[mkdir] Created dir: /services/flowvisor/dist
[jar] Building jar: /services/flowvisor/dist/flowvisor.jar
[jar] Building jar: /services/flowvisor/dist/flowvisor.jar

Total time: 3 seconds
Using source dir: ./scripts/..
Installation prefix (/usr/local):
Install to different root directory ()
Installing FlowVisor into /usr/local with prefix=/usr/local as user/group flowvisor:flowvisor
Updating to fvctl-xml
Updating to fvconfig
Updating to flowvisor
Updating to envs
Creating directories
Creating /usr/local/bin
Creating /usr/local/sbin
Creating /usr/local/libexec/flowvisor
Creating /usr/local/share/man/man1
Creating /usr/local/share/man/man8
Creating /usr/local/share/doc/flowvisor
Creating /usr/local/share/db/flowvisor
Creating /etc/flowvisor (owned by user=flowvisor  group=flowvisor)
Installing scripts
Installing SYSV startup script (not enabled by default)
Installing jars
Installing flowvisor.jar
Installing manpages
Installing FlowVisorDB
Installing configs
Installing Logrotate config
Installing documentation
Linking fvctl to fvctl-json
ln: creating symbolic link `fvctl': File exists
Generating a default config FlowVisor config
Trying to generate SSL Server Key with passwd from scripts/
Generating cert with common name == flowvisor
keytool error: java.lang.Exception: Key pair not generated, alias <mykey> already exists
Enter password for account 'fvadmin' on the flowvisor:
Generating default config in db
Outputing config file /etc/flowvisor/config.json

Start the controller:

sudo /etc/init.d/flowvisor start

Output from controller starting:

Starting flowvisor with the configuration stored in DB
If DB unpopulated, load config using 'fvconfig load config.json'
[[email protected] flowvisor]#
Message from [email protected] at Jul  3 08:49:51 ...
1>Jul  3 08:49:51 flowvisor: ERROR none : log level enabled: CRIT

Message from [email protected] at Jul  3 08:49:51 ...
1>Jul  3 08:49:51 flowvisor: ERROR none : log level enabled: ALERT

Message from [email protected] at Jul  3 08:49:51 ...
1>Jul  3 08:49:51 flowvisor: WARN none : log level enabled: WARN
This yields a "working" flow visor.

Lock it down with a password:
yum -y install pwgen
test -f /etc/flowvisor.passwd || sudo sh -c 'pwgen -sB 24 > /etc/flowvisor.passwd'
service flowvisor restart


  1. # says:

    At the end of the nail with your hammer to avoid splitting
    the wood when you drive the nail. A door that would open for that spiritual
    renewal. Some steel Doors are the most preferred today.
    2 Perfect for every weather – Wooden or aluminum Doors are built to a standard
    1? Even though these are made of honeycombed-cardboard
    treated with a resinous strengthening agent.

  2. Sylar Shen says:

    Hi Nick,
    Have you ever used flowvisor to test with a physical openflow switch? like NEC PF5240?
    Because when I used flowvisor with ovs-based swithes, it worked fine.
    However, when the flowvisor operated with the NEC PF5240, the flowvisor cannot get the flowentry in the switch. But the rest of the functions(insert/delete flowentry) worked fine.
    This confused me a lot, hope you could help me with this.

  3. This post is about as far as I went went flowvisor. I found it unintuitive at the time so I moved on to other options.

© 2018 The Forwarding Plane. All rights reserved.

Copyright 2016 Nick Buraglio, ForwardingPlane, LLC

%d bloggers like this: