Skip to content

Install and test Odin controller

Rubén edited this page Jul 7, 2017 · 16 revisions

The controller is to be run on a server that has IP reachability to all the APs in the system.

Clone and build the controller

  $: git clone https://github.com/Wi5/odin-wi5-controller

To build the Odin Controller (which is built as an application on top of Floodlight), do the following:

  $: cd odin-wi5-controller
  $: ant

Set the configuration parameters of the controller

Edit the floodlight configuration file floodlightdefault.properties

The controller expects the following configuration parameters to be set in the floodlight configuration file: ~/odin-wi5-controller/src/main/resources/floodlightdefault.properties

This is an example of the content of floodlightdefault.properties:

floodlight.modules = net.floodlightcontroller.storage.memory.MemoryStorageSource,\
net.floodlightcontroller.staticflowentry.StaticFlowEntryPusher,\
net.floodlightcontroller.learningswitch.LearningSwitch,\
net.floodlightcontroller.jython.JythonDebugInterface,\
net.floodlightcontroller.counter.CounterStore,\
net.floodlightcontroller.perfmon.PktInProcessingTime,\
net.floodlightcontroller.ui.web.StaticWebRoutable,\
net.floodlightcontroller.odin.master.OdinMaster
net.floodlightcontroller.restserver.RestApiServer.port = 8080
net.floodlightcontroller.core.FloodlightProvider.openflowport = 6633
net.floodlightcontroller.jython.JythonDebugInterface.port = 6655
net.floodlightcontroller.odin.master.OdinMaster.masterPort = 2819
net.floodlightcontroller.odin.master.OdinMaster.poolFile = poolfile
net.floodlightcontroller.odin.master.OdinMaster.clientList = odin_client_list

Note. The line net.floodlightcontroller.learningswitch.LearningSwitch,\ will not be necessary once the SDN features are fully integrated (we will update this later).

The meaning of some of the lines is:

Location of the odin Java module

net.floodlightcontroller.odin.master.OdinMaster

Location of the pool file

Tell Odin where the file poolfile is:

net.floodlightcontroller.odin.master.OdinMaster.poolFile = poolfile

This should point to a pool file (in ~/odin-wi5-controller/), which are essentially slices.

By default the poolfile should be in the ~/odin-wi5-controller/ directory. You can also place it in other way, but then you should provide the path.

Port for Odin messages

If you want to change the port used for the communication between Odin controller and Odin agents, you can add this line to the floodlightdefault.properties file:

net.floodlightcontroller.odin.master.OdinMaster.masterPort = 2819

Timeout for an idle LVAP

Another parameter you can set is idleLvapTimeout (see the source code of OdinMaster.java).

Edit poolfile

It is possible to add comments and blank lines between app declarations in poolfile.

Each pool is defined by a name, a list of IP addresses of physical APs (NODES), the list of SSIDs (here called NETWORKS) to be announced, and a list of applications that operate on that pool.

Each application has two lines, one declaring itself as active and the other one for its parameters. Each pack of parameters is storaged in a variable in OdinMaster, which can be delivered by a specific function to the application.

As an optional section, it is possible to define the detector IP address (DETECTION) used to implement flow detection.

An example of the poolfile content:

# Pool-1
NAME pool-1
NODES 192.168.1.14 192.168.1.15
NETWORKS wi5-demo

####### Now applications and its parameters are defined ######

####### FlowDetectionManager params
####### DETECTION IpAddressOfDetector
APPLICATION net.floodlightcontroller.odin.applications.FlowDetectionManager
DETECTION 192.168.1.200

APPLICATION net.floodlightcontroller.odin.applications.ShowStatistics

####### MobilityManager params
####### MOBILITY TimeToStart(sec) IdleClient(sec) Hysteresis(sec) SignalThreshold(dBm) ScanningTime(sec) NumberOfTriggers TimerResetTriggers(sec)
APPLICATION net.floodlightcontroller.odin.applications.MobilityManager
MOBILITY 30 180 15 -56 1 5 1

####### ShowScannedStationsStatistics params - Optional filename to save statistics
####### INTERFERENCES TimeToStart(sec) ReportingPeriod(sec) ScanningInterval(sec) AddedTime(sec)
APPLICATION net.floodlightcontroller.odin.applications.ShowScannedStationsStatistics
INTERFERENCES 30 30 5 1 ScannedStationsStatistics.txt

####### ShowMatrixOfDistancedBs params
####### MATRIX TimeToStart(sec) ReportingPeriod(sec) ScanningInterval(sec) AddedTime(sec) Channel
APPLICATION net.floodlightcontroller.odin.applications.ShowMatrixOfDistancedBs
MATRIX 30 30 5 1 6


# Pool-2
NAME pool-2
NODES 192.168.1.7 192.168.1.8 192.168.1.9
NETWORKS odin-guest-network
APPLICATION net.floodlightcontroller.odin.applications.SimpleLoadBalancer

Note. Use the control plane IP addresses of the agents (192.168.1.x in this case) in the poolfile.

Odin client list (only required when DHCP is not used)

If DHCP is not used, then the Odin controller is not able to hear the DHCP ACK packets, so it is not aware of the IPs of the clients.

Therefore, if you are not using DHCP, then:

  • assign a static IP to each STA. These IPs must be in the same subnet as the wireless interface of the AP.

  • you need to specify the STAs' details in a file pointed to by this property (ClientList). So add to the floodlightdefault.properties file the next line:

net.floodlightcontroller.odin.master.OdinMaster.clientList = odin_client_list

An example odin_client_list file looks as follows: (you can find it here: https://github.com/Wi5/odin-wi5-controller/blob/master/odin_client_list)

74:F0:6D:20:D4:74 192.168.1.11 00:1B:B3:67:6B:11 odin-unizar-1
20:68:3F:60:2A:F2 192.168.1.12 00:1B:B3:67:6B:12 odin-unizar-2
80:18:7C:EB:F0:2E 192.168.1.13 00:1B:B3:67:6B:13 odin-unizar-3

Each row represents a STA:

  • MAC address (the MAC of the physical interface)
  • Static IP address (the IP of the wireless interface of the STA)
  • its LVAP's BSSID. You can invent it
  • the SSID that its LVAP will announce

Note. If you add white lines in the end of this file, you will get an error from Odin.

Please note: If you add the MAC of a device in this file, then it will not obtain an IP address with DHCP, so you will have to set it manually.

Run the controller:

  $: java -jar floodlight.jar

If you want to specify the location of the configuration file, run:

  $: java -jar floodlight.jar -cf configfile

An example:

  ~/odin-controller# java -jar ./target/floodlight.jar -cf ./src/main/resources/floodlightdefault.properties
Clone this wiki locally