Skip to content

A Java-based distributed system implementing a logical network overlay over TCP.

Notifications You must be signed in to change notification settings

TrevorChartier/DistributedSystemsOverlay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Distributed Network Overlay with MST Routing

Project Overview

This project implements a distributed messaging system consisting of a centralized Registry and multiple Messaging Nodes. The system builds a logical overlay network over TCP, where nodes communicate by routing packets along a Minimum Spanning Tree (MST) computed from dynamic link weights.

The system ensures reliable, loop-free message delivery and provides detailed traffic summaries to verify data integrity across the entire distributed environment.

System Architecture

1. The Registry

Handles:

  • Node registration and de-registration.
  • Randomized link weight assignment (1-10).
  • Orchestrating the connection topology to prevent network partitions.
  • Aggregating global traffic statistics.

2. Messaging Nodes

Responsible for:

  • Establishing server sockets and managing concurrent TCP connections.
  • Computing the MST rooted at themselves to determine routing paths.
  • Relaying packets en route to their final destination.
  • Maintaining long-integer summations of payloads to verify data integrity.

Technical Specifications

  • Language: Java (Standard Edition)
  • Networking: TCP/IP (Sockets & ServerSockets)
  • Concurrency: Multi-threaded message handling and relaying.
  • Algorithms: Minimum Spanning Tree (MST), Breadth-First Search (BFS) for tree visualization.
  • Data Integrity: Validated via global summation of 32-bit random integer payloads.

How to Run

  1. Start the Registry:
    java csx55.overlay.transport.Registry [port]
  2. Start Messaging Nodes (on different terminals or machines):
    java csx55.overlay.transport.MessagingNode [registry-host] [registry-port]
  3. Setup the Network: In the Registry CLI, run:
    • setup-overlay 4 (Sets 4 connections per node)
    • send-overlay-link-weights
    • start 5000 (Initiates 5000 rounds of messaging)

About

A Java-based distributed system implementing a logical network overlay over TCP.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages