Software-defined networking (SDN) is an approach which decouples the control logic from the underlying infrastructure which is responsible only for the efficient traffic forwarding. The overall behaviour of an SDN network is determined by several software components, such as complex controller programs, firmware/operating systems of network nodes, constructing a distributed software system. Like all other software, this framework will also have bugs. Network operators and controller developers have only a limited set of tools available, therefore significant effort is required to detect network faults and ensure the correctness of networks. Although the programmatic control of SDN provides the opportunity to reconsider how we can debug networks, bugs are likely to remain problematic because of increasing complexity of SDN software. Therefore, in addition to the spread of SDN technology, novel troubleshooting tools have appeared leveraging the architectural layering in SDN.
However, these recently developed tools can only be applicable to a specific problem or operate offline at timescales of minutes to hours. There is no universal solution with general functions which can be used for both controller development and network operation.
In my thesis, I aim to implement a troubleshooting tool that satisfies the requirements mentioned above. As a first step, I present OpenFlow, the currently de-facto SDN solution and classify the currently available troubleshooting tools proposed to OpenFlow networks. I discuss the requirements and elements of a general purpose tool and propose suitable functions which can be part of my system. After that I select some relevant functions to implement making use of an open-source, Java-based proxy controller, called FlowVisor. I also design and develop a load-balancer controller application in order to illustrate and validate the operation of my system.