simulate linkstate algorithm for routing

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.

Owner
Roozbeh Sharifnasab
someone who wants to learn
Roozbeh Sharifnasab
Similar Resources

📡 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

May 6, 2022

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

Nov 3, 2021

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

Nov 11, 2021

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

Nov 24, 2021

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

Nov 24, 2021

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

Dec 5, 2021

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

Jan 30, 2022

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

Jan 4, 2023

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.

Nov 1, 2022

SplitVPN - Split Internet and VPN routing

SplitVPN - Split Internet and VPN routing

Jul 15, 2022

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

Nov 24, 2022

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.

Jan 19, 2022

Envoy file based dynamic routing using kubernetes config map

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

Dec 30, 2022

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

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

Dec 21, 2021

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

Nov 8, 2021

Auth Middleware for session & white-listed routing

Auth Middleware for session & white-listed routing

Nov 4, 2021

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

Dec 14, 2021

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.

Dec 14, 2022
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

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

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

A minimalist HTTP request routing helper for Go.

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

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

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

Sep 27, 2022
:alarm_clock: :fire: A TCP proxy to simulate network and system conditions for chaos and resiliency testing
: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

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?

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

Oct 14, 2022
edotool: simulate keyboard input and mouse activity
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

Oct 27, 2022