sarthakpranesh / Mininet-Load-Balancing

Mininet SDN based experiments on load balancing and improving server response times
MIT License
25 stars 9 forks source link

Load Balancing on Containernet #1

Open rohansuri1996 opened 2 years ago

rohansuri1996 commented 2 years ago

Hi Sarthak,

I really like your simple approach.

I have few questions which I hope you can answer?

  1. How are you doing the telemetry? How do you get to know that this switch has more load so the traffic needs to go from another node?
  2. How can run your script with containernet instead of mininet? (https://github.com/containernet/containernet)
sarthakpranesh commented 2 years ago

Hey @rohansuri1996 👋🏽 , I really don't remember much of this project, but here is what I am able to recall

  1. I didn't implement load balancing natively on the switch, what I showcased was server load distribution. For doing this I ran three kind of tests: One client - One server no-load, Many clients - One server under load, and Many clients - Many server load balanced. All three clients send requests simultaneously and continuously. I logged the time for the request to get resolved from any one server for three cases and plotted them on the graph here. For load and load balancing cases, to avoid complexity (Mininet was challenging to understand) I just used an extra host node attached to the switch to compute and redirect requests simulating load balancing. This host node points the request to a single server in the case of load testing and to multiple servers in load balancing case ( this py script)
  2. I can't say if my scripts will work with containernet or not, never tried it. But as containernet is a fork of mininet I feel the scripts will work if the Mininet API does not change. The host command and its usage may be different though as containernet uses docker for host. Try running the project in One client - One server no-load mode, then you should be able to refactor the scripts to run in other modes too. Clone the project inside your containernet env and run the starTopo.py script from project base.

Best of luck 🍀