-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathArchitecture_and_Implementation_Details.txt
More file actions
20 lines (13 loc) · 2.61 KB
/
Copy pathArchitecture_and_Implementation_Details.txt
File metadata and controls
20 lines (13 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Architecture and Implementation:
We introduce the OpenFlow driver which consists of two main parts:
(1) OpenFlow protocol driver which parses and encodes OpenFlow messages and
(2) OpenFlow controller driver which handles connections with OpenFlow datapath elements.
Our main requirement for developing a driver was rapid prototyping, implementation and be able to develop the same for various versions of OpenFlow protocols with greater ease. Our experience has helped us to provide effective feedback to Specifications with working code.
The OpenFlow protocol driver is built on modified Apache Avro ((http://avro.apache.org/docs/current/) and provides a clear API to parse OpenFlow messages. Apache Avro provides a JSON-based language for protocol description. Use of Avro to describe the protocol has made it easy to define, understand and modify the protocol. Avro makes it easier to implement future versions of OpenFlow. Also, Avro has the ability to parse protocols and update protocol description files in runtime, without code generation. We utilize the work done by the Avro and Hadoop community that has developed and tested Avro code. We have built upon it by updating Avro syntax to make it more suitable for describing OpenFlow protocol.
The OpenFlow Controller driver is based on Akka (http://akka.io/). Akka implements a simple and powerful message-driven actors model for low-latency multitask applications and is designed for high performance and scalability. We have used Akka to implement message-driven multitask driver, supporting multiple connections with different OpenFlow datapath elements. Our driver provides a clear message-driven API.
Currently the drivers are developed in Java for good portability. In addition, as Avro already has python and C++ implementations, we plan to port the OpenFlow protocol driver to these languages.
We have a test facility based on Mininet and LINC OpenFlow switch (https://github.com/FlowForwarding/LINC-Switch/blob/master/docs/mininet_integration.md).
---------------------------------------------------------------------------------------------------------------------------------
Strengths of the architecture and implementation:
We have aimed to achieve a scalable, high performance, modular and extensible architecture. The use of AKKA addresses the requirements of performance and scalability. The use of AVRO addresses the requirements of code clarity and protocol extensibility. The Java driver addresses portability requirements.
OpenFlow protocol and OpenFlow controller drivers are separate, so it is easy to use the OpenFlow protocol driver alone inside other OpenFlow controllers.