-
Notifications
You must be signed in to change notification settings - Fork 68
FlowVisor Project Ideas
This page summarizes various ideas for features and future functionality for FlowVisor. It may be used as source material for potential features for any FlowVisor developer (or motivated user!) to implement, as well as potential projects for Google Summer of Code or other mentoring programs or internships.
Mininet is an interesting and high-impact project which is also fun to work on, and we're excited to be applying to the Google Summer Of Code (GSOC) in the hope of attracting energetic and motivated developers.
Mentoring: A participant in GSOC would choose one or more projects and be advised by a project mentor, either one of the core FlowVisor developers or another contributor to the project.
Projects: We have identified a wide variety of potential GSOC projects for FlowVisor, and the current, detailed list is available at the Ideas page on the FlowVisor wiki at http://github.com/opennetworkinglab/FlowVisor/wiki/Ideas
Projects are grouped by complexity/difficulty as well as whether we have starter code. The project(s) will be selected by agreement between the potential mentor(s) and participant(s), based on participant interest, experience and knowledge, as well as project impact, project difficulty, and mentor availability and interest.
General Prerequisites: In general, working on FlowVisor requires knowledge of JAVAm, some Python and a sound understanding of computer networks, operating systems, and distributed systems (preferably at the undergraduate, masters or professional level.). And of course the main prerequisites are energy, enthusiasm, and the ability and desire to use your brain, to learn, and to teach yourself by doing background research (including reading documentation, reading code, trying out ideas, and finding and consulting on-line and off-line references). And writing code and using git/github of course.
Specific prerequisites for each project are listed as well - these are the requisite skills and knowledge that you will need (or need to acquire) to actually complete the tasks for the project.
Process: GSOC projects will follow the standard FlowVisor development process.
FlowVisor currently slices networks but unfortunately provides no mechanism to graphically visualise the slices. Visualising slices is not as trivial as it sounds because FlowVisor slices can be defined on any L1-L4 headers and such slices do not translate naturally to a visual representation. The idea here would be to use the existing API available in FlowVisor (and possibly add some more API) and develop a FlowVisor slice visualizer which will allow an administer and visualize their slices on a web UI.
Expected Results: At the very least the project will be considered successful if the end result is a web interface displaying the various slices configured at the FlowVisor. A nice to have feature would be if interface is interactive and allows users to control their Flowvisor.
Difficulty Level: Medium
Prerequisites: JAVA, Python, JavaScript (Knowledge of D3.js would be nice)
FlowVisor currently relies on a SQL database for storing and persisting it's configuration. This is quite complicated and requires a lot of extra code to handle all the database accesses. More importantly, handling updates to the database requires FlowVisor to update the database schema which can be limiting and error prone. Finally, the current backend requires that all request come from the same JVM and incurs a performance hit on the overall system.
The idea of this project is to replace this backend with a NoSQL storage to allow easier handling of the configuration and more flexibility in retrieving the configuration information.
Expected Results: The project will be considered successful if FlowVisor no longer depends on an SQL DB for its configuration.
Difficulty Level: Medium
Prerequisites: JAVA, SQL (preferably Derby DB)
FlowVisor creates slices by slicing the OpenFlow header space. Currently ports are implicitly included in the FlowSpace when creating a flowspace entry via the in_port field. The idea of this project is to specifically define ports as either ingress or egress ports on a per flowspace entry basis.
Expected Results: The ability to distinguish what is a valid input port versus a valid output port.
Difficulty Level: Hard
Prerequisites: JAVA
- System Requirements
- XML-RPC Deprecated
- Installation
- FlowVisor FAQ
- CLI User Guide
- Papers
-
Development
- Design Documents
-
Architecture
- IO Overview
- Actions
- Messages
- Configuration Parameters
- Processes
- RoadMap