| 1 | [[PageOutline]] |
| 2 | |
| 3 | = Adopt-a-GENI Project Status Report = |
| 4 | |
| 5 | Period: Second Year |
| 6 | |
| 7 | == I. Major accomplishments == |
| 8 | |
| 9 | The following highlights our accomplishments during the second year of the project. |
| 10 | |
| 11 | === A. Milestones achieved === |
| 12 | |
| 13 | * Integrate the AAG path selection function with the GENI Desktop. |
| 14 | |
| 15 | * Incorporate SDN resource allocation functions with Jacks, including whatever compute resources are available through Jacks. |
| 16 | |
| 17 | * Develop monitoring capability to verify correct connectivity and functioning of user-defined SDN-controlled path. |
| 18 | |
| 19 | * Develop an approach for plugging a user-specified controller module into the AAG controller for controlling traffic flowing within an SDN-controlled slice. |
| 20 | |
| 21 | * Demonstrate the implemented functions at GEC21, GEC22 and GEC23. Prepare and present |
| 22 | the Aodopt-A-GENI tutorial at the summer camp 2015 held at University of Connecticut. |
| 23 | |
| 24 | === B. Deliverables made === |
| 25 | |
| 26 | * We developed a module in the GENI Desktop for integrating the AAG path selection function into the GENI Desktop. |
| 27 | |
| 28 | * We integrated Jacks with the GENI Desktop so that users can allocate OVS nodes, together with other |
| 29 | compute resources through the GENI Desktop. |
| 30 | |
| 31 | * We developed a flow monitoring module in the GENI Desktop that can monitor the user-defined path to |
| 32 | verify its correctness. |
| 33 | |
| 34 | * We developed a sample module for port forwarding and demonstrated the approach |
| 35 | of plugging the module into the AAG controller. |
| 36 | |
| 37 | == II. Description of work performed during the reporting period == |
| 38 | |
| 39 | The following provides a description of the progress made during the last reporting period. |
| 40 | |
| 41 | === A. Activities and findings === |
| 42 | |
| 43 | Our activities and findings can be described in the following five aspects. |
| 44 | |
| 45 | ==== 1. developing a module for integrating the AAG path selection function into the GENI Desktop. ==== |
| 46 | |
| 47 | The GENI Desktop was designed to be extensible in the sense that new |
| 48 | modules can be written to include new functionalities. We took advantage |
| 49 | of this property of the GENI Desktop and write a module for the AAG function. |
| 50 | While creating a module is straightforward, the major task is to modify |
| 51 | the exiting AAG code to handle the interactions between the GENI Desktop |
| 52 | and the AAG module. There are two aspects. |
| 53 | |
| 54 | One aspect is how to get the information about a slice. In order to |
| 55 | verify and set up the user-selected path, the AAG module needs information |
| 56 | about the slice, such as the topology, IP addresses, MAC addresses, etc. |
| 57 | The original AAG code obtained this information from the manifest, which |
| 58 | was provided as a textual file in XML format. As a part of the GENI Desktop, |
| 59 | the AAG module get the slice information from the parser of the GENI Desktop. |
| 60 | The parser obtains the slice information from aggregates and provides the |
| 61 | manifest as a JSON object. The AAG code was modified to accommodate this change. |
| 62 | |
| 63 | The other aspect is how the user selects the path. The GENI Desktop provides |
| 64 | a graphical user interface (GUI) showing the topology of the slice. |
| 65 | Instead of providing a list of desired nodes, the user can pick the nodes |
| 66 | via the GUI of the GENI Desktop. There is a mechanism in the GENI Desktop |
| 67 | to pass this information from GUI to an associated module. The AAG module |
| 68 | processes this information and installs the flows to the switches. |
| 69 | |
| 70 | [[Image(aag_gec21_demo.png, 600)]] |
| 71 | |
| 72 | ==== 2. Integrating Jacks with the GENI Desktop for allocating SDN resource. ==== |
| 73 | |
| 74 | Jacks provided the function to allocate both OVS nodes and other compute |
| 75 | resources. As a joint effort with the GENI Desktop project, we integrated |
| 76 | Jacks with the GENI Desktop. We customized Jacks to create special icons, |
| 77 | including the AAG controller node and the AAG OVS node. Users can drag |
| 78 | the AAG controller into the experiment. The AAG OVS node includes the AAG |
| 79 | initialization script and related code. It can initialize and configure |
| 80 | the OVS node and point the OVS node to the AAG controller. |
| 81 | |
| 82 | Currently we are developing code to automate the initialization step. |
| 83 | The AAG controller can be added automatically to the user experiment and |
| 84 | the script on the OVS nodes will be run by the GENI desktop to specify |
| 85 | the information about the AAG controller. |
| 86 | |
| 87 | ==== 3. Developing monitoring capability for SDN-controlled paths. ==== |
| 88 | |
| 89 | We designed a Flow Monitoring Module (FMM) in the GENI Desktop to verify that |
| 90 | a flow is correctly installed and monitor |
| 91 | the traffic that is part of the flow. |
| 92 | We can get the statistics about the number of packets (bytes) |
| 93 | matching a flow entry from the controller. However, they |
| 94 | are the cumulative counts since the flow entry is installed. |
| 95 | Therefore, it does not show the changes or trends of the |
| 96 | interested flow. It will be hard and time-consuming for an |
| 97 | experimenter to figure out the changes manually. |
| 98 | |
| 99 | The FMM |
| 100 | provides a live monitoring functionality by periodically querying |
| 101 | the controller to get these statistics over a period of time. |
| 102 | Luckily, the controller does not restrict the frequency with |
| 103 | which we can query statistics from it. The FMM transforms the |
| 104 | collected data into a dynamic time series plot that depicts the |
| 105 | flow’s performance over time since the data collection began. |
| 106 | The plot is updated in real time as more data are collected from |
| 107 | the controller. Therefore, it provides a live monitoring of the |
| 108 | behavior of the flow. |
| 109 | |
| 110 | The following figure shows an example output where |
| 111 | peaks can be easily identified by the experimenter. |
| 112 | |
| 113 | [[Image(15mins.png, 600)]] |
| 114 | |
| 115 | ==== 4. Developing an approach for plugging a user-specified controller module. === |
| 116 | |
| 117 | The AAG controller is based on the OpenDaylight controller. To plug the user-specified |
| 118 | controller module to the AAG controller for controlling traffic flowing with a |
| 119 | AAG-controlled user slice, we can use the Web GUI or the OSGi console of the OpenDaylight |
| 120 | controller to install the user-specified module as a bundle. |
| 121 | |
| 122 | As the first step, the user needs to use tools like maven for compilation |
| 123 | and dependencies, java as programming language and (optionally) eclipse to |
| 124 | ease syntax completion. Once the module is written and successfully compiled, |
| 125 | a .jar file representing the bundle will be created. |
| 126 | The final step is to use Web GUI or OSGi console to install the bundle and start |
| 127 | it. |
| 128 | |
| 129 | We developed a sample module for port forwarding and demonstrated the approach. |
| 130 | The module checks if the destination port is within the (user-defined) range 5000-6000. |
| 131 | If so, flow entries are installed that forward such traffic to port 5050 and handle packets sent back to the client. Otherwise, a "DROP" rule is installed preventing further connections to the target destination port. |
| 132 | |
| 133 | ==== 5. Demos and Tutorial ==== |
| 134 | |
| 135 | We demonstrated the AAG path selection funciton at GEC 21, the monitoring |
| 136 | of flow traffic at GEC 22, and user-specified sub-controller at GEC 23. |
| 137 | We also give a tutorial of the Adopt-A-GENI project at the 2015 summer |
| 138 | camp held in the University of Connecticut. |
| 139 | |
| 140 | === B. Project participants === |
| 141 | |
| 142 | The following individuals are involved with the project in one way or another: |
| 143 | * Zongming Fei - Project PI (Kentucky) |
| 144 | * Jim Griffioen - Project Co-PI (Kentucky) |
| 145 | * Kobus van der Merwe - Project Co-PI (Utah) |
| 146 | * Rob Ricci - Project Co-PI (Utah) |
| 147 | * Hussamuddin Nasir - Technician/Programmer (Kentucky) |
| 148 | * Charles Carpenter - Technician/Programmer (Kentucky) |
| 149 | * Jonathon Duerig - Research Associate (Utah) |
| 150 | * Sergio Rivera Polanco - Ph.D. Student (Kentucky) |
| 151 | |
| 152 | === C. Publications (individual and organizational) === |
| 153 | |
| 154 | * 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. |
| 155 | |
| 156 | === D. Outreach activities === |
| 157 | |
| 158 | * We gave demos at GEC 21, GEC 22, and GEC 23. We also gave |
| 159 | a tutorial at the GENI summer camp. |
| 160 | |
| 161 | === E. Collaborations === |
| 162 | |
| 163 | * Most of our collaborations have been between the Kentucky team and the |
| 164 | Utah team. We continued our discussion on what functions need to be |
| 165 | provided in Jacks for the AAG project and how to better integrate Jacks |
| 166 | with the GENI Desktop. |
| 167 | |
| 168 | === F. Other Contributions === |