= The Big Switch Controller = This page describes the controller by Big Switch Networks. The controller uses a REST API that leverages HTTP control messages to let an admin manipulate flows. == !Installation/Setup == The controller may be reached from ofc, accessible as user `native`, password `native101` from orbit-lab.org. The controller is a KVM guest currently named bigswitchcontroller-110405. You can confirm this through `virsh` or `virt-manager`. The latter is a GUI, and more straight forward. The default user is `admin`. The controller will then ask you for a password and network configurations. The password has been set to `native101`, and the following used for the network setup: * IP address: 172.16.0.14 * netmask: 255.255.0.0 * gateway: 172.16.0.1 * nameserver: 172.16.0.9 * domain: orbit-lab.org once configured, you should be able to ssh to it from the outside. == BigOS CLI == This is the main interface to the Big Switch controller. From here, you can query for various information, such as controller state and the switches connected to it. === Logging in === From gw.orbit-lab.org, ssh to `kvm-big` as user `admin`, password ''native101''. You should see something like below: {{{ ~$ ssh kvm-big -l admin admin@kvm-big's password: Last login: Sat Feb 12 07:19:47 2011 from 10.50.0.12 BigShell (bigsh) v0.1 (c) by Big Switch Networks. default controller is: 127.0.0.1:8000 172.16.0.14> }}} The caret is the prompt for the CLI, which follows syntax similar to Cisco IOS. To see available commands, just type "?". For example, to see the list of !OpenFlow switches connected to the controller, type `show switch`: {{{ 172.16.0.14> show switch Switch DPID Active Last Connect Time IP Address Socket Address Max Packets Max Tables -----------------------|------|-------------------|------------|-------------------|-----------|---------- 00:00:00:00:00:00:00:01 True 2011-02-14 02:25:53 172.16.0.241 /172.16.0.241:52683 256 3 00:00:00:10:10:20:32:30 False 2011-02-09 07:36:59 172.16.0.253 /172.16.0.253:63202 256 2 00:00:00:10:10:22:32:32 True 2011-02-14 02:25:30 172.16.0.253 /172.16.0.253:62957 256 2 00:00:00:10:10:24:32:34 True 2011-02-10 15:56:57 172.16.0.4 /172.16.0.4:59345 256 2 }}} More information on each switch can be found by context switch to the DPID's of the switches: {{{ 172.16.0.14> show switch 00:00:00:10:10:22:32:32 desc Serial # Vendor Make Model SW Version --------|---------------|--------------------------|--------|---------- None NEC Corporation Reference Userspace Switch sw-sb-01 }}} Here, we have switched to the context of a switch whose DPID is 00:00:00:10:10:22:32:32, in order to look up general information about it. == The REST API == Flow manipulation is done by logging onto the controller, entering debug mode, and issuing HTTP control messages (e.g. PUT, GET, DELETE) using `curl`. Here we'll describe how to use the REST API through an example based on the REST documents (linked at the bottom of the page) and e-mail exchanges. === Some prep work === 1. ''Enter debug mode''. In order to use the REST API, you must be at the Linux shell. Type "debug bash" to switch out of the CLI. {{{ 172.16.0.14> debug bash ***** Warning: this is a debug command - use caution! ***** ***** Type "exit" or Ctrl-D to return to the BigOS CLI ***** bsn@bigswitchcontroller:~$ }}} 2. ''open port 8000''. Allow connections to port 8000 with the command `sudo ufw allow 8000`. You'll be using this port to talk to the controller using `curl`.