-
Notifications
You must be signed in to change notification settings - Fork 17
Install and test Odin controller
The controller is to be run on a server that has IP reachability to all the APs in the system.
$: 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
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:
net.floodlightcontroller.odin.master.OdinMaster
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.
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
Another parameter you can set is idleLvapTimeout
(see the source code of OdinMaster.java
).
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
.
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.
$: 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