The first generation of Indigo was 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.
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 First Generation firmware 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.