The amount of people who use computer services is constantly gets higher.
For popular services usually one server is not enough, every such service needs infrastructure containing a lot of servers.
For users it is easier to remember only one address for one service, that is why network load balancers are introduced which are high-speed networking devices.
It looks like one server from user side but the server function is distributed among many servers behind it.
For this job many solutions have been implemented.
One of the most simples is the DNS load-balancing; there are software based solutions like LVS and to serve the biggest projects hardware-based solutions are available on the market.
Because load-balancing is a need which came up after the spread of the Internet, it cannot be merged easily into a network protocol, standard or device so there are more, totally different solutions.
All of these has its advantages and drawbacks which predestinates each of them to a specific area.
So generic solution does not exist for load-balancing, there are many of them, and each one is solution for a particular problem.
Network switches are basic elements of computer networks, they have been constantly developing through the decades.
There are a couple of manufacturers on the market, each with their own switch controlling protocols.
To create a common protocol a couple of researchers from Stanford University founded the Open Networking Foundation in 2008 which publishes the OpenFlow standard.
OpenFlow quickly spread, the manufacturers has started to come up with their new products with OpenFlow capability.
This protocol is able to define and describe switching and routing rules.
It contains rules which can be extended to reach load-balancing functionality.
In this work I am going to extend a software OpenFlow switch with load-balancing capability while keeping conformity with the OpenFlow standard.
The switch I am about to work on uses Intel DPDK library, with it we can transform generic Intel hardware to high-speed network traffic processing platform.
I implemented a couple of load-balancing algorithms, the most simple is round-robin; the hash-based provides flow consistency; the most widespread is the associative array-based hash table; and there is a novel one which uses Bloom filters.
I am going to discuss them in detail in my work.
I test extensively my OpenFlow-based load-balancer on a proper hardware, there are both functional and performance tests executed.
The device is able to process 100000-500000 packets-per-second, depending on the algorithm chosen and can keep information up to millions of flows.
In the future this capability can be multipled with using threading.