Skip to content

GSoC 2014 Project Ideas

Marco Canini edited this page Feb 25, 2014 · 13 revisions

Common background readings:

OpenStack Integration

OpenStack is a cloud computing platform that orchestrates compute, storage, and network resources in public/private cloud environments. The OpenStack Networking API component exposes a networking-as-a-service model via a REST API. As part of the GSoC, a student could consider implementing the Networking REST API for Frenetic to allow it to work as a backend for OpenStack.

OpenFlow 1.3/1.4 Support

The current Frenetic implementation has partial support for OpenFlow 1.3 and has no support for OpenFlow 1.4. As part of the GSoC, a student could consider implementing complete support for these two versions of the protocol. This will require going through the protocol specs, creating the corresponding OCaml types and implementing the necessary message serializers and deserializers, as well as pretty printing functions. Moreover, to simplify the interface upstream, one might consider designing an abstraction layer that hides the differences between these versions of OpenFlow and allows switches speaking different versions to interoperate in the same network.

  • Mentor: Marco Canini or Arjun Guha
  • Difficulty: medium
  • Programming languages: OCaml and C
  • Recommended reading:
  • OpenFlow specs

Network Virtualization

The current Frenetic implementation does not allow a developer to write policies for a virtual network that are mapped down to underlying topology. As part of the GSoC, a student could consider porting the virtual network abstractions provided in other controller platforms to Frenetic.

  • Mentor: Marco Canini
  • Difficulty: medium
  • Programming languages: OCaml and Python
  • Recommended reading:

Compiler Optimizations

Frenetic allows developers to describe the intended behavior of the network in a high-level language. The Frenetic compiler and run-time system generate the low-level code needed to execute programs efficiently in hardware switches. The compiler performance of the current implementation could be improved. As part of the GSoC, a student could consider studying the existing compiler and implementing performance optimizations to reduce the number of rules.

  • Mentor: Spiros Eliopoulos
  • Difficulty: hard
  • Programming languages: OCaml and Python
  • Recommended reading:

Language Bindings

To write network programs for Frenetic, developers must currently use either the custom syntax exposed by the Frenetic binary, or an OCaml API. As part of the GSoC, a student could consider implementing new language bindings to integrate the power of Frenetic to other languages. A special type of > language bindings < proposal could also look into integrating Frenetic as the backend for a BGP implementation (e.g., bird).

  • Mentor: Spiros Eliopoulos
  • Difficulty: easy
  • Programming languages: OCaml and another language for the bindings (e.g., Python, Ruby, etc.)
  • Recommended reading: