Changes between Initial Version and Version 1 of Internal/OpenFlow/Controllers/MultiCtl/FLInternals


Ignore:
Timestamp:
Sep 7, 2012, 6:03:24 AM (12 years ago)
Author:
akoshibe
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Internal/OpenFlow/Controllers/MultiCtl/FLInternals

    v1 v1  
     1= Floodlight Controller Internals. =
     2This is a quick recap/overview of the internal workings of !OpenFlowHub's Floodlight !OpenFlow controller. There is a good amount of official documentation at openflowhub.org; these are just side-notes written down based on some code reading done in 2012, and may contain errors.     
     3
     4As a convention, classes and interfaces are shown in `terminal type`, and the methods in ''italics''.
     5
     6== Loading and Initialization ==
     7Refs: http://www.openflowhub.org/display/floodlightcontroller/Module+loading+system
     8
     9=== Loading ===
     10The startup process of Floodlight begins with the reading in of configuration files and loading of necessary functional components (modules).
     11
     12There are two main configuration files:
     13 1. net.floodlightcontroller.core.module.IFloodlightModule: the list of all available modules
     14 1. floodlightdefault.properties: a list of service-providing modules and their configurations
     15 
     16The files are read by the module loading system to find and properly load all of the modules. Module interdependencies are found with a DFS search for dependencies of each module beginning with the service-providing ones listed in the second file. A module is anything that implements the `IFloodlightModule` interface, and this interface provides a method, ''getModuleDependencies()'', which facilitates the building of this dependency tree. the methods in the module loader that are responsible for this task are ''loadModulesFromContig()'' and ''loadModulesFromList()''. The procedure produces the smallest collection of modules to be loaded. Once the list is complete each module is activated by calling its ''startUp()'' method.   
     17
     18=== Initialization ===
     19The first module to always be activated (by the virtue of being first in floodlightdefault.properties) is the `FloodlightProvider`, which provides the key service that implements Floodlight's controller functions. The actual implementation at the heart of the controller service is the class `Controller`, implementing the `IFloodlightProviderService` interface. When people mention `IFloodlightProvider`, they are referring to a collection of methods that are part of this interface.   
     20
     21The module loader calls each module's ''startUp()'' method to register them with the controller service, typically either as an `IOFMessageListener` or an `IOFSwitchListener`.