diff --git a/MP2/README.md b/MP2/README.md new file mode 100644 index 0000000..2aa51f6 --- /dev/null +++ b/MP2/README.md @@ -0,0 +1,63 @@ +# MP2 Distributed Group Membership + +## Files +- `peer.py` - membership daemon +- `scripts/cmd.sh` - start/kill/control VMs +- `scripts/view.sh` - tmux membership dashboard +- `scripts/pretty_membership.py` - dashboard formatter + +## Running a node +Set `MACHINE_INDEX` to the VM's index, then run: + +```bash +MACHINE_INDEX=1 python3 peer.py +``` + +## Starting the demo +Start the dashboard. `tmux` is required: + +```bash +./scripts/view.sh +``` + +From another terminal, start the VMs: + +```bash +./scripts/cmd.sh start 1 +./scripts/cmd.sh start 2 3 4 5 +./scripts/cmd.sh start 6 7 8 9 10 +``` + +## Commands +The following commands are available in the peer prompt: + +```text +list_mem +list_self +leave +display_suspects +switch suspect +switch nosuspect +display_protocol +set_drop_rate +``` + +## Demo/testing helpers +Run these from the `MP2` directory: + +```bash +./scripts/cmd.sh kill 4 8 +./scripts/cmd.sh start 4 8 +./scripts/cmd.sh cmd all "switch suspect" +./scripts/cmd.sh cmd all "set_drop_rate 10" +./scripts/cmd.sh status +./scripts/cmd.sh log +``` + +## Introducer +`VM1` / `172.22.156.3` + +## Notes +- Gossip is default mode. +- Artificial drops are applied at receivers. +- Rejoining processes receive a new timestamp in their node ID. \ No newline at end of file