Skip to content

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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages