Warp is an OpenFlow driver consisting of two main parts:
The main requirement for developing this 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 ((https://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 (https://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.