Nowadays, network management can be a pain … Nowadays, network management can be a painful and tedious process, especially
when we consider large networks with hundreds of switches and routers. In traditional networks, it is necessary to configure each equipment, one by one, typically using a command line in an error-prone process. Software Defined Networking (SDN) [19, 27] is a new paradigm that aims to change this current undesirable state of affairs. The main idea of SDN consists in logically centralizing network control in a SDN controller (or a cluster of controllers), which controls and monitors the behavior of the network. The goal is to separate the control plane from the data plane. This separation is possible by means of an API between the switches and the controller such as OpenFlow . Networks thus become programmable, allowing the definition of the behavior of the entire network from a vantage point, the controller, thus facilitating the creation of advanced network policies, such as load balancing, routing and security. The main goal of this project is to develop and evaluate a load balancer using this new paradigm. Conventional load balancers are expensive specialized hardware equipment whereas our proposal is based on a software application running on top of the SDN controller. Additionally, our solution enables load balancing to be performed not only based on server choice, but also on the best path to the chosen server. To achieve our goal we used the Floodlight controller  implemented in Java. Using this controller we evaluated several combinations of algorithms for server and path selection. As particular algorithms are suitable for particular applications, we propose a Multi-Algorithm Load Balancer (MALOB), a load balancing application for SDNs that has the capability to adapt to the different types of requests, selecting the most appropriated algorithm accordingly with the type of request. One of the most relevant contributions
of this dissertation is its evaluation. We used GENI , a large-scale testbed that enables the possibility of performing a variety of experiments, such as, protocol design and evaluation, distributed service offerings, content management and in-network service deployment. GENI allows us to explore the potential of underlying technologies such as SDN. An experimental evaluation made with a real network such as GENI, enabled us to take more faithful conclusions about the impact of our work. conclusions about the impact of our work.