Nowadays SDN (Software Defined Networking) solutions are quickly spreading thank to their flexibility and cost-efficiency. The main idea of this concept is separating data and control planes in network devices, thus we can manage the network from a central controller, realizing arbitrary logic. The communication protocol between the controller and the network devices is OpenFlow, which enables the overwriting of the behavior of the switches or routers. There are a variety of controller platform implementations (NOX, Beacon, POX etc.), so the programming language of our new application can be chosen almost freely (C/C++, Java, Python etc.).
The goal of our project is creating an SDN architecture, which provides the possibility of describing different types of services and even the relations between them, without knowing the network devices, their software and the details of the network topology. That is to say, it would be a higher level of abstraction for configuration, where we could define networking policies for the system to compile to low level rules.
Current SDN and OpenFlow solutions do not allow the input of such high level description, because they require a deep knowledge in hardware and software devices from the users. In the present, we have to deal with some serious problems implementing SDN services. For instance the interactions between concurrent modules, defining the priorities for overlapping rules and limited controller visibility to network traffic not processed by the switches.
There are recent research projects for resolving these problems, which we can use and extend to reach the goal of our project. The open source controller platform, developed on Princeton University, called Frenetic, provides a special SDN language for declaratively programming OpenFlow networks. Despite Frenetic is in early research state, it already solves some of the mentioned issues with network programming.
The goal of this paper is extending Frenetic with modules, which could support our project and allow the examination of Frenetic from the points of advantages, drawbacks, shortcomings and scalability. Another objective is suggesting the extension of Frenetic features with dynamism and run-time reconfiguration. For this we realize an algorithm for updating the controller state, and evaluate it in simulated network environment.