simulate linkstate algorithm for routing

Overview

link-state simulation in go

for final project of computer-network course in SBU university (spring 2021) we implemented a Link-state simulation in go.

you can read full description in todo.pdf

brief description

  • there is just one manager with all data's (in yaml files)
  • it launch some router processes and the connect to them with tcp
  • router processes transfer their connectivity table so all of them get whole network information
  • manager command routers to transfer packets, so the routing will be tested.

run

  • in order to run, you should run manager executable
  • but before that, router should be compiled
  • there is a shell script responsible for compiling and running both

configs

  • manager read configs from Yaml files. there are exists in manager folder. fill free to change them
  • there should be just one connection component (all routers should connect to each other indirectly)
  • packets will send in order.

logs

  • manager will print its own logs to stderr

  • routers write logs to separate log files (with name of their indices)

  • if a router fail before initializing the log file, it will send that failing log to manager (manager is watching router processes stderr files)

  • run.sh will print all log files in order with one line between them, so you don't need to do anything in order to see logs.

You might also like...
 📡 mock is a simple, cross-platform, cli app to simulate HTTP-based APIs.
📡 mock is a simple, cross-platform, cli app to simulate HTTP-based APIs.

mock 📡 mock is a simple, cross-platform, cli app to simulate HTTP-based APIs. About mock Mock allows you to spin up a local http server based of a .m

Toxiproxy - A TCP proxy to simulate network and system conditions for chaos and resiliency testing
Toxiproxy - A TCP proxy to simulate network and system conditions for chaos and resiliency testing

Toxiproxy is a framework for simulating network conditions. It's made specifically to work in testing, CI and development environments, supp

An API to simulate banking transactions in Golang

BASIC BANKING TRANSACTION IN GO This project is an API to simulate banking transactions in Golang. Functionalities POST /accounts = Create a new acco

Simple gc using integer vectors to simulate

gcint Simple gc using integer vectors to simulate Iterate primarily over what should be the shorter vector (readers) removing unused references in fro

A command line util created to simulate an alien invasion described in the task
A command line util created to simulate an alien invasion described in the task

Alien Invasion Simulation A command line util created to simulate an alien invasion described in the task. Requirements Go 1.17 Graphviz (optional) Us

Simulate which EC2 instances applied reserved instance.

Go - Reserved Instance Simulator (gori-simulator) Usage $ env AWS_PROFILE=YOUR_PROFILE ./gori-simulator Notices Convertible only (not Standard) Regio

This is a comprehensive system that simulate multiple servers’ consensus behavior at local machine using multi-process deployment.

Raft simulator with Golang This project is a simulator for the Raft consensus protocol. It uses HTTP for inter-server communication, and a job schedul

Loc2Midi - This project uses realtime location data to control audio effects plugins in order to simulate movement throughout a virtual soundscape
Touch Simulation in Golang - Simulate Touch Points using UInput

Touch Simulation Touch Simulation is program made in Golang to simulate Touch Input in android devices using Virtual Display with UInput interface of

HARAQA - High Availability Routing And Queueing Application
HARAQA - High Availability Routing And Queueing Application

haraqa is designed to be a developer friendly, scalable message queue for data persistence and real-time data streaming between microservices. Haraqa provides high-throughput, low-latency, fault-tolerant pipelines for architectures of any size.

SplitVPN - Split Internet and VPN routing

SplitVPN - Split Internet and VPN routing

Pigiron is a MIDI routing utility with an extensive OSC interface.

Pigiron README (c) 2021 Steven Jones Pigiron is a fully configurable MIDI routing utility written in Go. It includes a MIDI file player and has a comp

Blue is a lightweight cloud-native gateway solution to handle millions of routing endpoints with a large number of connections.
Blue is a lightweight cloud-native gateway solution to handle millions of routing endpoints with a large number of connections.

Blue is a lightweight cloud-native gateway solution to handle millions of routing endpoints with a large number of connections.

Envoy file based dynamic routing using kubernetes config map

Envoy File Based Dynamic Routing Config mapを使用してEnvoy File Based Dynamic Routingを実現します。 概要 アーキテクチャとしては、 +----------+ +--------------+ +-----------

LNC is a lightning network capital management tool built for routing nodes.

LNC is a lightning network capital management tool built for routing nodes.

Vehicle Routing Problem Solver in Go

VehicleRoutingProblem Vehicle routing problem heuristic in Go Tests To run the test simply go with go test -v ./... Compile go build Run without compi

Auth Middleware for session & white-listed routing

Auth Middleware for session & white-listed routing

An HTTP request routing benchmark suite for Go.

Go HTTP Request Routing Benchmark An HTTP request routing benchmark suite for Go. Results goos: linux goarch: amd64 pkg: github.com/aofei/go-http-requ

The Consul API Gateway is a dedicated ingress solution for intelligently routing traffic to applications running on a Consul Service Mesh.

The Consul API Gateway is a dedicated ingress solution for intelligently routing traffic to applications running on a Consul Service Mesh.

Owner
Roozbeh Sharifnasab
someone who wants to learn
Roozbeh Sharifnasab
An HTTP request routing benchmark suite for Go.

Go HTTP Request Routing Benchmark An HTTP request routing benchmark suite for Go. Results goos: linux goarch: amd64 pkg: github.com/aofei/go-http-requ

Aofei Sheng 5 Dec 14, 2021
A minimalist HTTP request routing helper for Go.

R2 A minimalist HTTP request routing helper for Go. The name "R2" stands for "Request Routing". That's all, R2 is just a capable little helper for HTT

Aofei Sheng 34 Sep 7, 2022
A minimalist HTTP request routing helper for Go.

A minimalist HTTP request routing helper for Go.

Aofei Sheng 34 Sep 7, 2022
Eunomia is a distributed application framework that support Gossip protocol, QuorumNWR algorithm, PBFT algorithm, PoW algorithm, and ZAB protocol and so on.

Introduction Eunomia is a distributed application framework that facilitates developers to quickly develop distributed applications and supports distr

Cong 2 Sep 28, 2021
Go-enum-algorithm - Implement an enumeration algorithm in GO

go-enum-algorithm implement an enumeration algorithm in GO run the code go run m

Leon 1 Feb 15, 2022
Simulate network link speed

linkio linkio provides an io.Reader and io.Writer that simulate a network connection of a certain speed, e.g. to simulate a mobile connection. Quick s

Ian Kent 53 Sep 27, 2022
:alarm_clock: :fire: A TCP proxy to simulate network and system conditions for chaos and resiliency testing

Toxiproxy Toxiproxy is a framework for simulating network conditions. It's made specifically to work in testing, CI and development environments, supp

Shopify 8.8k Jan 7, 2023
godesim Simulate complex systems with a simple API.

godesim Simulate complex systems with a simple API. Wrangle non-linear differential equations while writing maintainable, simple code. Why Godesim?

Patricio Whittingslow 21 Jan 5, 2023
Go package to simulate bandwidth, latency and packet loss for net.PacketConn and net.Conn interfaces

lossy Go package to simulate bandwidth, latency and packet loss for net.PacketConn and net.Conn interfaces. Its main usage is to test robustness of ap

Cevat Barış Yılmaz 313 Oct 14, 2022
edotool: simulate keyboard input and mouse activity

edotool Simulate keystrokes. Like xdotool (well, kind of), with support for both X11 and Wayland. edotool Screengrab Using edotool keystrokes can be s

null 13 Oct 27, 2022