Indigo - Open Source OpenFlow Switches - First Generation
Indigo is an open source OpenFlow implementation that runs on physical switches and uses the hardware features of Ethernet switch ASICs to run OpenFlow at line rates. It is based on the OpenFlow Reference Implementation from Stanford and currently implements all required features of the OpenFlow 1.0 standard.
This site contains the First Generation implementation which is no longer supported. For the most recent supported version of Indigo, please go to the Indigo Page on Project Floodlight.
What is Indigo - First Generation?
Indigo is an open source project to support OpenFlow on a range of physical switches. By leveraging hardware features of Ethernet switch ASICs, Indigo supports high rates for high port counts, up to 48 10-gigabit ports. Multiple gigabit platforms with 10-gigabit uplinks are also supported. These exceed the limits of NetFPGA or pure-software OpenFlow implementations. Indigo firmware is actively used in many campus deployments (at Stanford and several other schools), in at least one OpenFlow startup, a 20-switch conference network deployment and a 32-switch data center deployment. The current release is based on the OpenFlow Reference Implementation from Stanford and currently implements all OpenFlow 1.0 features.
The Indigo software distribution is available in two ways:
- As pre-built firmware images (recommended for starting users)
- As a source distribution in a VM (recommended for advanced users)
Indigo supports multiple user interfaces including both a web-based configuration UI and a CLI accessible via telnet or ssh. These interfaces allow the configuration of the control interface (including behavior when the controller connection is lost) and monitoring of the ports and flow table.
More advanced users can download the Indigo Open Development System (IODS), a source release of the Indigo software. Users can modify the web server, command-line interface, some OpenFlow processing logic, and even add additional programs. IODS enables extensions in both C and Lua (a Python-like scripting language). The CLI and backend of the on-board web server are written in Lua and can be modified by the user.
Download Indigo
- Indigo Flashable Binary Image Downloads
- These are binary images built for specific platforms which can be transfered to switches and burned into flash.
- These are binary images built for specific platforms which can be transfered to switches and burned into flash.
- IODS Development VM and Toolchain Downloads
- VMWare Virtual Machine instances of the Indigo Open Development System allowing the customization and generation of binary images for OpenFlow platforms.
Latest Documentation
- If you are receiving a new Pronto 3290 or 3780, please see the forum post at: Install Indigo on new 3290s and 3780s
- Indigo 2012.09.07 Release Notes
- Indigo Initialization and Configuration
- Indigo CLI Reference
- Indigo 1.0 Overview
- Mount Indigo via NFS on BCM Reference Designs
- In-Band Management for Indigo
- Building IODS
- IODS VM Bringup
- Indigo CLI Internals
- Upgrading the Flash of the Netgear 73xx for OpenFlow
Supported Platforms
Indigo runs on a number of physical switches using Broadcom including:
- Pronto/Pica8 3290 - A 48x1Gb+4x10Gb system based on the BRCM 56534 Chip
- Pronto/Pica8 3780 - A 48x10Gb system based on the BRCM 56840 Chip
- Deprecated: Pronto 3240 - A 48x1Gb+4x10Gb system based on the BRCM 56514 Chip (EOL'd)
- Netgear GSM7328SO - A 24x1Gb + 4x10Gb/s switch
- Netgear GSM7352SO - A 48x1Gb + 4x10Gb/s switch
- Select Broadcom reference designs using XGS chipsets.
It has been successfully ported to other Broadcom based platforms.
Using Indigo
To use Indigo, you will need one of the above switches and the Indigo firmware. Reflashing the switches to use Indigo may require special hardware, please check out the detailed information for each switch before attempting to use them for OpenFlow. Here are some documents available on using Indigo.
- Up and Running on the 3290 or 3780: For getting started on the Pronto 3290.
- Using the Indigo Web Interface: The web interface on Pronto platforms.
- Serial Ports on Quanta and Pronto: If you need help connecting a serial port.
- Replacing VxWorks on the 3240: If you have a new LB4G/3240, you may need to replace VxWorks. If you see anything other than a u-boot message when you connect to the serial port and boot the system, you need to do this.
- Reflashing a Pronto Switch: If you're working with an LB4G and want to upgrade the firmware.
- Cluster Setup: If you have a cluster of Indigo switches and want to manage configuration centrally.
- Other references:
- Pronto/Quanta Switches: LB4G/3240 Quickstart Guide or the LB9A/3290 Quickstart Guide
- Documentation on Indigo Configuration. NOTE: This applies only through indigo-1.0-beta releases. It has not yet been updated for the indigo-2011.03.31 release.
Support
- Indigo Support Forums - Hosted on OpenFlow Hub
- Indigo Bugs & Issues - OpenFlow Hub's JIRA
Compiling Indigo from the Source
See the IODS documentation above for more information about the Indigo Open Development System.