Skip to content

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Table of Contents
  1. About The Project
  2. Folder Structure
  3. Usage
  4. Contact

About The Project

Pygossip is a pull model gossip protocol. This protocol periodically selects a random live member from its knowledge, and try to set up a TCP/IP connection to the selected node to attempt a gossip.

Pygossip key features:

  • Maintained the connected member table
  • Maintained blacklist blocking failure nodes
  • Supported adversarial gossiping feature
  • Gossip to a random selected member every 3 seconds

(back to top)

Folder Structure

├── README.md
├── communication
│   ├── __init__.py
│   ├── connection.py
│   ├── sender.py
│   └── server.py
├── controller
│   ├── __init__.py
│   ├── adversarial_controller.py
│   └── server_controller.py
├── gossip_main.py
└── util
    ├── __init__.py
    ├── constants.py
    └── gossip_msg.py

(back to top)

Usage

  1. Clone the repo
    git clone https://github.com/Zhaoyu-W/Pygossip
  2. Run the main script
    python3 gossip_main.py {ip_address} {tcp_port} {initial_state}
  3. Command input
     !: list all the connections in csv format
        e.g:
         128.84.213.13:5678,1630281124,1
         128.84.213.43:9876,1630282312,7
     ?: list all the connections in identifier --> state format
        e.g:
         128.84.213.13:5678 --> 1
         128.84.213.43:9876 --> 7
     +{ip_address}:{tcp_port}: connect to new node
     [0-9]: change the server state
     Y: turn on adversarial gossip
     N: turn off adversarial gossip

(back to top)

Contact

Zhaoyu Wang - @Zhaoyu_W - zhaoyu.wang1999@gmail.com Project Link: https://github.com/Zhaoyu-W/Pygossip

(back to top)

About

A distributed pull-model gossip protocol

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages