Skip to content

SharpLu/Scalable-Weakly-consistent-Infection-style-Process-Group-Membership-Protocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SWIM assumes that there is direct connection between any two peers in the system. Some studies have shown that up to 80% of the peers in the peer-to- peer overlays on the Internet are behind NATs and firewalls. Network Address Translation (NAT) gateways enable many machines to share a small number of public IP addresses, but at the cost of preventing external hosts from directly connecting to hosts behind the NAT.

In the rest of the document open peers refers to peers that have public IP and they are accessible by any peer in the system. A natted peer is behind a NAT device and it is not directly visible to the peers on the Internet. Your next task is to run SWIM on the Open Internet where some peers are behind NAT devices. Two popular mechanisms to overcome this problem are Hole Punching and Message Relaying. These mechanisms will be discussed in detail in the following lectures. Due to time limitations you will not implement hole punching mechanisms and rely solely on message relaying to communicate with the natted peers.

Up till now all the peers in the system were open i.e. all the peers could com- municate with each other. In the remaining tasks you will start the system with both open and natted peers. You have been provided a simple NatTraverser layer that hides the complexities of the communicating with natted peers. When a natted peer is started it selects a random open peer as its relay server. When any node wants to send a message to a natted peer the NatTraverser layer for- wards the message to the relay server for the natted peer, and the relay server forwards the message to the natted peer.


The problem with the current implementation is that the when an open peer dies then all the natted peers that were using the open peer as a relay are disconnected. In this task you will fix this problem by adding the support for multiple relay servers. You will implement the following
3 Connect and Start Croupier component. Croupier [2] is a peer sampling service that provides random samples of open and natted peers in they system.
The N atT raverser layer periodically send heart beats to the relay servers. When it detects that a relay server is dead then it selects a new open peer provided by Croupier as the relay server. The information about the new relay server needs to be disseminated to all the peers in the system.
The NatTraverser layer notifies the SWIM layer about the changes in the list of relay servers. The SWIM component injects the new updated address information in the system.

About

Scalable-Weakly-consistent-Infection-style-Process-Group-Membership-Protocol

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages