Using P2P to Offload Tasks and Workloads Between Array of Network VMs

As a common type of distributed application that partitions workloads or tasks between peers, P2Ps are a network of interconnected nodes, or peers, that share resources amongst each other without the need for a centralized administrative system - typical of those seen implemented in grid computing. A benefit to P2P is its scalability, collective reliability, and improvability as more and more clients contribute resources to the network.

This project creates and simulates a P2P network composed of virtual machines. The reason for this project is to provide a solution that is more robust than centralized computing. Namely, from our project, I expect to find that the speed of computation for a decentralized network is much faster than for a centralized network - given that there are enough peers.

IMG_3924.jpg

What the servers look like:

Because I don’t want to have a bunch of different computers to run each node instance, I virtualized resources to simulate multiple computers. To separate the P2P from all of my other home devices, I created this P2P network on a different subnet as my regular home subnet - as the P2P network I created was able to get a successful connection response from my printer for some odd reason…

svv.png

Why P2P?

As more and more devices are being integrated into the domain of IoT, the higher the need for a more scalable solution than the traditional client-server architecture implemented by most network applications today.

In a traditional client-server architecture approach, during peak cycles, a particular server can get overworked while the other servers may not be utilized much or at all. Using P2P rather than a scheduler for offloading computation to other client servers is a more efficient framework for leveraging underutilized resources and has a far greater possibility of increasing the efficiency of resource usage as workload is typically balanced amongst peers. Additionally, there is no centralized server in P2P which means that whereas a typical server outage in a client-server environment which can completely disable connections for all clients.

peeps.PNG

Why P2P as a project?

What makes this project interesting is that the potential of P2P as an alternative to client-server or even grid computation is uncapped - due to its limitless nature with node additions. Big data can see the most benefit from this as the workload is distributed and each node asks not “what can the server do for the network, but rather what each node can do for the network” - A variation of John F Kennedy’s famous quote.

Technologies used in this project:

UNRAID, LXCs, QEMU, Python (Socket Programming), Linux, Windows 10, Agile, TCP/IP

Next
Next

Custom Terminal