Indigo Virtual Switch (IVS) is a pure OpenFlow virtual switch designed for high performance and minimal administration. It is built on the Indigo platform, which provides a common core for many physical and virtual switches,
This README contains documentation to help you get started using IVS. For full documentation, see the IVS pages at Project Floodlight.
- Install required dependencies:
- Ubuntu 14.04:
sudo apt-get install libnl-3-dev libnl-genl-3-dev libnl-route-3-dev pkg-config python-tz libpcap-dev libcap2-dev
- CentOS 7:
sudo yum groupinstall 'Development Tools' && sudo yum install libnl3-devel libcap-devel
-
Clone the IVS repository:
git clone --recurse-submodules https://github.com/floodlight/ivs.git
- NOTE that if you did not use clone with the "--recursive-submodules" option, you can fix this by running
cd ivs && git submodule update --recursive --init
- NOTE that if you did not use clone with the "--recursive-submodules" option, you can fix this by running
-
cd ivs
-
Compile IVS:
make
-
The IVS daemon and ivs-ctl utility will be written to
targets/ivs/build/gcc-local/bin/ivs
andtargets/ivs-ctl/build/gcc-local/bin/ivs-ctl
respectively. They can be run directly from the build directory.
Packaging, including init scripts, is available for Debian-based
distributions in the debian
directory. If using git we recommend
git-buildpackage.
The script build/build-debian-packages.sh
uses Docker to build packages for
Ubuntu 14.04.
Packaging, including init scripts, is available for Red Hat-based
distributions in the rhel
directory.
The script build/build-rhel-packages.sh
uses Docker to build packages for
CentOS 7.
You'll need an OpenFlow controller to use IVS. We suggest Floodlight, which should work out of the box. Follow your controller's instructions to get it running and note down its IP address.
The openvswitch kernel module must be loaded: modprobe openvswitch
.
Now you just need to run the IVS daemon. You'll need to tell it the IP address of the controller (-c) and the initial set of network interfaces to connect (-i). Here's an example command line:
sudo ivs -c 192.168.1.10 -i eth1 -i eth2
IVS will immediately begin communicating with the controller and, depending on your controller's configuration, forwarding traffic between eth1 and eth2.
ivs-ctl add-port
and ivs-ctl del-port
can be used to add and remove ports
at runtime (for example, this is used by hypervisors when a VM is started). See
the ivs-ctl
man page for more details.
Please fork the repository on GitHub and open a pull request.
You might be interested in the INTERNALS.md document in this repository which describes the layout of the source code and includes other details relevant to developers.