This is a write up article of the program of my undergraduate thesis with the title “Multipath Routing with Load Balancing with OpenFlow Software-Defined Networking”, using this source code in Github.
Multipath routing is a routing method which finds multiple routes to a destination in a network topology. By providing multiple routes to a destination, it is possible for network traffic to be distributed fairly through multiple paths in the network, or a mechanism known as load-balancing, thus increasing the efficiency of network utility.
Basically what we want is this:
Source: Dario Banfi
- Network Utility: means a more balanced network.
- Bandwidth: possibly an increased bandwidth through parallel transport.
- Security: harder to sniff packets.
This specific topic has been researched for quite awhile, a simple Wikipedia search results in the earliest research being in 2001.
With the rise of Software-Defined Networks recently through the OpenFlow protocol, Multipath Routing has been made simpler, with a more programmable approach to computer networks. Since version 1.1, the OpenFlow protocol supported Group Tables, which basically allows us to define or apply multiple actions to a specific flow. Atlassian, for the Floodlight controller, has a comprehensive explanation of this specific feature, but basically there are 4 types of Group Tables, and the OpenFlow Specification has quite a lazy but effective explanation of these:
– All – used for multicast and flooding
– Select – used for multipath
– Indirect – simple indirection
– Fast Failover – use first live port
So here I implemented using that specific feature of OpenFlow to create a simple Multipath Routing app/module with the Ryu OpenFlow controller. To put it simply, what I needed to achieve this was identify:
- A multiple path finding algorithm: DFS.
- Path cost calculation.
- How to use the OpenFlow Protocol.