Giter VIP home page Giter VIP logo

sdn-load-balancer's Introduction

SDN-Load-Balancer

Software Defined Network based Stateless Load Balancer based on Open Flow protocol

Load Balancer: Server load-balancers (SLBs) are complex and expensive devices that perform load-balancing across servers based on several factors such as server capability, incoming requests, or round-robin fashion.

Software Defined Network (SDN):

SDN is a networking concept that aims to centralize networks and make network flows programmable, and NFV focusses on virtualized network functions. SDNFV can be used to manage networks better and reduce CapEx/ OpEx. SDN-based load-balancers use SDNFV functions and applications to create flexible, programmable, and virtual load-balancing that can be deployed, managed and manipulated with ease in the industry.

This is a stateless round robin load balancer designed to be executed on Control Plane of SDN. It uses Open Flow protocol. This is fully tested on Mininet VM. The Controller supported is Ryu controller (https://osrg.github.io/ryu/) which is a Python based SDN controller.

OpenFlow: OpenFlow® is the first standard communications interface defined between the control and forwarding layers of an SDN architecture. OpenFlow® allows direct access to and manipulation of the forwarding plane of network devices such as switches and routers, both physical and virtual (hypervisor-based). OpenFlow-based SDN technologies enable IT to address the high-bandwidth, dynamic nature of today's applications, adapt the network to ever-changing business needs, and significantly reduce operations and management complexity. For historical information about the origins of OpenFlow® at Stanford University prior to the creation of ONF, please see archive.openflow.org.

Ryu: Ryu is a component-based software defined networking framework. Ryu provides software components with well defined API that make it easy for developers to create new network management and control applications. Ryu supports various protocols for managing network devices, such as OpenFlow, Netconf, OF-config, etc. About OpenFlow, Ryu supports fully 1.0, 1.2, 1.3, 1.4, 1.5 and Nicira Extensions. All of the code is freely available under the Apache 2.0 license.

Mininet: Mininet creates a realistic virtual network, running real kernel, switch and application code, on a single machine (VM, cloud or native), in seconds, with a single command. Because you can easily interact with your network using the Mininet CLI (and API), customize it, share it with others, or deploy it on real hardware, Mininet is useful for development, teaching, and research. Mininet is also a great way to develop, share, and experiment with OpenFlow and Software-Defined Networking systems. Mininet is actively developed and supported, and is released under a permissive BSD Open Source license.

Topology: 3 Servers, 1 Data Plan Switch, 1+ Hosts Service IP address of the load-balancer as 10.0.0.100 and the IP addresses of the servers as 10.0.0.1 (s1), 10.0.0.2 (s2), and 10.0.0.3 (s3). Client IPs are your choice.

Testing using Mininet: On Mininet VM: sudo mn --controller=remote,ip=192.168.56.111 --mac --switch ovs,protocols=OpenFlow13 --topo single,7 --ipbase=10.0.0.1/24 –x

Run HTTP Server on host with the command inside mininet shell ‘h1 python –m SimpleHTTPServer 80 &’ Client Test: ‘h2 wget h1’

The code can be slightly modified to make it 'Stateful' Load Balancer using Host's unique parameters (Host IP, Host MAC, etc).

I encourage you to contribute code, bug reports/fixes, documentation, and anything else that can improve the system! For any queries, please email me at [email protected]

sdn-load-balancer's People

Contributors

pratiklotia avatar bayuagpr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.