Changes between Initial Version and Version 1 of AAG/aag_final_report


Ignore:
Timestamp:
01/18/17 16:22:24 (7 years ago)
Author:
fei@netlab.uky.edu
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AAG/aag_final_report

    v1 v1  
     1[[PageOutline]]
     2
     3= Adopt-a-GENI Project Final Report =
     4
     5
     6== I. Major accomplishments ==
     7
     8The following highlights our accomplishments for the project.
     9
     10=== A. Milestones achieved ===
     11
     12We achieved all the milestones defined for the project.
     13
     14 * Develop the Adopt-A-GENI AAG Controller to manage and install user-defined SDN-controlled paths.
     15
     16 * Integrate the AAG path selection function with the GENI Desktop.
     17
     18 * Incorporate SDN resource allocation functions with Jacks, including whatever compute resources are available through Jacks.
     19
     20 * Develop monitoring capability to verify correct connectivity and functioning of user-defined SDN-controlled path.
     21
     22 * Develop an approach for plugging a user-specified controller module into the AAG controller for controlling traffic flowing within an SDN-controlled slice.
     23
     24 * Demonstrate the implemented functions at GEC19, GEC20, GEC21, GEC22 and GEC23. Prepare and present the Adopt-A-GENI tutorial at the summer camp 2015 held at the University of Connecticut.
     25
     26=== B. Deliverables made ===
     27
     28 * We developed the AAG Controller to install user-defined SDN-controlled paths.
     29
     30 * We developed a module in the GENI Desktop for integrating the AAG path selection function into the GENI Desktop.
     31
     32 * We integrated Jacks with the GENI Desktop so that users can allocate OVS nodes, together with other compute resources through the GENI Desktop.
     33
     34 * We developed a flow monitoring module in the GENI Desktop that can monitor the user-defined path to verify its correctness.
     35
     36 * We developed a sample module for port forwarding and demonstrated the approach of plugging the module into the AAG controller.
     37
     38== II. Description of work performed during the reporting period ==
     39
     40The following provides a description of the progress made during the reporting period.
     41
     42=== A. Activities and findings ===
     43
     44Our activities and findings can be described in the following aspects.
     45
     46==== 1. Developing the Adopt-A-GENI AAG Controller to manage and install user-defined SDN-controlled paths. ====
     47
     48We developed the AAG Controller based on the  OpenDaylight controller. The main function of the AAG controller is to manage user-selected paths. As the first step, we implemented the fucntion of setting the default paths in the OVS nodes in the GENI experiments. First, we developed Java code that will initialize the OVS nodes for users. It will configure all interfaces and specify the AAG controller on their behalf. After that the OVS nodes will be able to communicate with the AAG controller in regards to processing of incoming packets. Then, the AAG controller will set up the default paths in all OVS nodes in the slice. The default paths are set based on the shortest path between any pair of source and destination nodes.
     49
     50After that, we developed the code for the AAG Controller to install user-defined paths in SDN networks. The user in SDN networks may prefer a different path for various reasons, such as traffic engineering, special treatment of certain flows, or bypassing a firewall. The user can simply specify the names of the nodes in the path from the source node to the destination node. All the details are then figured out by the AAG controller to install the appropriate rules on the OVS nodes along the path. The AAG controller first checks the legitimacy of the path itself. It needs to make sure that the path contains no loop and is from one end host (non-OVS node) to another end host (non-OVS node). It also checks that any two consecutive nodes specified in the parameter actually comprise an edge in the topology of the experiment.
     51
     52To create the flow rules that need to be installed, the AAG controller uses the Manifest RSpec to get the specific MAC addresses and corresponding output ports at each OVS node needed to form the user-defined path. Once the flows are formed, they are installed at the OVS nodes using the REST interface of the OpenDaylight controller.
     53
     54==== 2. Developing a module for integrating the AAG path selection function into the GENI Desktop. ====
     55
     56The GENI Desktop was designed to be extensible in the sense that new
     57modules can be written to include new functionalities. We took advantage
     58of this property of the GENI Desktop and wrote modules for the AAG functions.
     59While creating a module is straightforward, the major task is to modify
     60the exiting AAG code to handle the interactions between the GENI Desktop
     61and the AAG module. There are two aspects.
     62
     63One aspect is how to get the information about a slice. In order to
     64verify and set up the user-selected path, the AAG module needs information
     65about the slice, such as the topology, IP addresses, MAC addresses, etc.
     66The original AAG code obtained this information from the manifest, which
     67was provided as a textual file in XML format. As a part of the GENI Desktop,
     68the AAG module gets the slice information from the parser of the GENI Desktop.
     69The parser obtains the slice information from aggregates and provides the
     70manifest as a JSON object. The AAG code was modified to accommodate this change.
     71
     72The other aspect is how the user selects the path. The GENI Desktop provides
     73a graphical user interface (GUI) showing the topology of the slice.
     74Instead of providing a list of desired nodes, the user can pick the nodes
     75via the GUI of the GENI Desktop. We used the mechanism in the GENI Desktop
     76to pass this information from GUI to the AAG module, which
     77processes the information and installs the flows to the switches.
     78
     79[[Image(pathselected.png, 400)]]
     80
     81The above figure shows the AAG module developed. It provides three functions:
     82
     83 * Install a flow: A user can request a flow to be installed along its associated path so that all the packets belonging to the flow will be forwarded along that path. The user can specify the source and destination addresses, port numbers and the protocol for the flow. The flow can be installed in one direction or both directions of the path. The OpenFlow rules will be installed on all OpenFlow-enabled switches in the path(s) by the AAG module.
     84
     85 * List flows: A user can request all the flows to be listed. A flow can be installed in different ways, either through the the AAG module or directly installed via the OpenFlow controller.
     86
     87 * Delete a flow: A user can request that a flow be deleted. This requires that all the rules on the switches on the associated path of the flow be removed.
     88
     89==== 3. Integrating Jacks with the GENI Desktop for allocating SDN resource. ====
     90
     91Jacks provided the function to allocate both OVS nodes and other compute
     92resources. As a joint effort with the GENI Desktop project, we integrated
     93Jacks with the GENI Desktop. We customized Jacks to create special icons,
     94including the AAG controller node and the AAG OVS node. Users can drag
     95the AAG controller into the experiment. It is a custom image we created that
     96includes OpenDaylight code and runs the OpenDaylight controller once the node is up. 
     97The AAG OVS node contains a custom OVS image we created that includes the AAG
     98initialization script and related code. It can initialize and configure
     99the OVS node and point the OVS node to the AAG controller so that the controller
     100can issue OpenFlow commands to OVS nodes and control the behavior of the switches.
     101
     102Currently we are developing code to automate the initialization step.
     103The AAG controller can be added automatically to the user experiment and
     104the script on the OVS nodes will be run by the GENI desktop to specify
     105the information about the AAG controller.
     106
     107==== 4. Developing monitoring capability for SDN-controlled paths. ====
     108
     109We designed a Flow Monitoring Module (FMM) in the GENI Desktop to verify that
     110a flow is correctly installed and to monitor
     111the traffic that is part of the flow.
     112The user can pick a flow to monitor and determine at which node to collect the
     113traffic information about the flow.
     114
     115We can get the statistics about the number of packets (bytes)
     116matching a flow entry from the controller. However, they
     117are the cumulative counts since the flow entry was installed.
     118Therefore, it does not show the changes or trends of the flow of interest.
     119It is hard and time-consuming for an
     120experimenter to figure out the changes manually.
     121
     122The FMM
     123provides a live monitoring functionality by periodically querying
     124the controller to get these statistics over a period of time.
     125Luckily, the controller does not restrict the frequency with
     126which we can query statistics from it. The FMM transforms the
     127collected data into a dynamic time series plot that depicts the
     128flow’s performance over time since the data collection began.
     129The plot is updated in real time as more data are collected from
     130the controller. Therefore, it provides live monitoring of the
     131behavior of the flow.
     132
     133[[Image(15mins.png, 600)]]
     134
     135The figure shows an example output where
     136peaks can be easily identified by the experimenter.
     137The module allows the experimenter to decide the time interval covering the displayed data.
     138The user can either zoom in or
     139zoom out the chart for a more detailed or more general visualization of the flow performance.
     140
     141==== 5. Developing an approach for plugging a user-specified controller module. ====
     142
     143The AAG controller is based on the OpenDaylight controller. To plug the user-specified
     144controller module to the AAG controller for controlling traffic flowing with a
     145AAG-controlled user slice, we can use the Web GUI or the OSGi console of the OpenDaylight
     146controller to install the user-specified module as a bundle.
     147
     148As the first step, the user needs to write the module in Java and
     149use tools like maven for compilation and dependencies.
     150Several environments, such as eclipse, can be used for easy syntax completion.
     151Once the module is written and successfully compiled,
     152a .jar file representing the bundle is created.
     153The final step is to use the Web GUI or the OSGi console to install the bundle and start
     154it.
     155
     156We develop a sample module for port forwarding to demonstrate the approach.
     157The module checks if the destination port is within the (user-defined) range 5000-6000.
     158If so, flow entries are installed that forward such traffic to port 5050.
     159Otherwise, a "DROP" rule is installed preventing further connections to the target destination port.
     160The module also needs to handle packets sent back to the client.
     161We plugged this module into the AAG controller and demonstrated the function
     162at GEC 23.
     163
     164
     165==== 6. Extending the AAG controller to handle a variety of SDN controllers, including Floodlight, RYU, and HP-VAN. ====
     166
     167The original AAG controller was designed for the OpenDaylight (ODL)
     168controller, which meant that experimenters who wanted to use the AAG system
     169were required to use the ODL controller.  To address this limitation, we
     170developed a REST API translator (RAPTOR) that allows users to develop their
     171network control software independent of any particular SDN controller. RAPTOR
     172exposes a REST-based API to a controller-agnostic (i.e., generic) set of SDN
     173controller functions and data models.  RAPTOR translates the generic SDN
     174controller API calls into controller-specific (e.g., ODL, Floodlight, RYU, or
     175HP-VAN) API calls to the real controller's northbound interface.
     176
     177
     178==== 7. Developing a flow-entry installation module based on RAPTOR. It allows a user to install the same OpenFlow rule on multiple switches. ====
     179
     180In addition to the original set of AAG modules to install a path, list paths,
     181or delete a path, we developed a new module that leveraged Raptor to install
     182specific flow-entries.  When traffic needs to be handled in the same way at
     183every switch -- for instance, sending all ARP traffic to the controller or
     184dropping  all HTTP connections -- experimenters can now use our new
     185flow-entry installation module to install the rule on multiple switches. The
     186module was tested using RAPTOR-supported SDN controllers, including
     187Floodlight, RYU and HP-VAN. 
     188
     189
     190
     191=== B. Project participants ===
     192
     193The following individuals are involved with the project in one way or another:
     194 * Zongming Fei - Project PI (Kentucky)
     195 * Jim Griffioen - Project Co-PI (Kentucky)
     196 * Kobus van der Merwe - Project Co-PI (Utah)
     197 * Rob Ricci - Project Co-PI (Utah)
     198 * Hussamuddin Nasir - Technician/Programmer (Kentucky)
     199 * Charles Carpenter - Technician/Programmer (Kentucky)
     200 * Jonathon Duerig - Research Associate (Utah)
     201 * Sergio Rivera Polanco - Ph.D. Student (Kentucky)
     202 * Navjeet Sandhu - M.S. Student (Kentucky)
     203 * Amrita Jyotiprada - M.S. Student (Kentucky)
     204
     205=== C. Publications (individual and organizational) ===
     206
     207 * Sergio Rivera P., Zongming Fei, and James Griffioen, "Providing a High Level Abstraction for SDN Networks in GENI," in Proc. of the 2nd International Workshop on Computer and Networking Experimental Research Using Testbeds (CNERT 2015), Columbus, OH, June 29, 2015.
     208
     209 * Sergio Rivera P., Zongming Fei, James Griffioen, "RAPTOR: A REST API TranslaTOR for OpenFlow Controllers," Proceedings of the International Workshop on Computer and Network Experimental Research Using Testbeds (CNERT 2016), in Conjunction with IEEE INFOCOM, San Francisco, CA, April 10-15, 2016.
     210
     211=== D. Outreach activities ===
     212
     213 * We gave demos at GEC 19, GEC 20, GEC 21, GEC 22, and GEC 23. We also gave a tutorial at the GENI summer camp.
     214
     215=== E. Collaborations ===
     216
     217 * Most of our collaborations have been between the Kentucky team and the Utah team. We continued our discussion on what functions need to be provided in Jacks for the AAG project and how to better integrate Jacks with the GENI Desktop.
     218
     219=== F. Other Contributions ===