Skip to content
/ Ripcom Public

A network simulator for Rovers on Mars that need to communicate with each other, fast and reliably.

Notifications You must be signed in to change notification settings

a3y3/Ripcom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What is Ripcom?

  • Ripcom is an implementation of the Routing Information Protocol (RIP v2), written from scratch in Java.
  • The overarching idea is to simulate the movement of Rovers on Mars - if Rover C is connected to A and B directly, it can go out of range from A but not B - in this case, it should still be able to communicate with A through B. RIP helps us do exactly that.
  • src/Rover.java represents a Rover on Mars. This Rover:
    1. Has a built in router (to handle communication to and from other Rovers)
    2. Has a private IP (to simulate the idea that the Rover can have multiple components, each with their own private IP)
    3. Uses RIP to find the shortest path between itself and other Rovers.
  • Ripcom is also a reliable protocol that works like TCP and can transfer a file correctly between Rovers even through a lossy network.

Demonstration

^ For this Topology (simulated using Docker containers and iptables rules), Ripcom produces the following output:

If some Rovers go out of range (simulated by shutting down that particular Rover process), the other Rovers will automatically adjust the shortest path using RIP.

How to build:

  • Compile Rover and dependencies using javac *.java

  • Start a Rover using java Rover -r <ID>. ID should be an 8 bit number (can't exceed 127).

  • There are several other optional flags you can use to fine tune the simulation. See the full list using java Rover --help or java Rover -h.

Example:

java Rover -r 2 -i 233.31.31.31 -d 10.0.3.0 -f bible -v 1 will start a new Rover with:

Field Value
roverID 2
Multicast IP of the network 233.31.31.31
Destination IP 10.0.3.0
File name to send bible
Verbose Level 1

Note that the only field that is not optional is -r.

Now that a Rover is running, you can run other Rovers on other computers (or VMs, or Docker containers!) and see the Rovers calculate the shortest path to each other.

Author

Soham Dongargaonkar

About

A network simulator for Rovers on Mars that need to communicate with each other, fast and reliably.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages