Rover instances communicate with each other using Distance Vector Routing algorithm - RIPv2 Routing table updates through Multicast, applying Poison Reverse to updates. Successful file transfer from one rover to another with packets being dropped.
Communication occurs through binary, each node serializes and deserializes packet information. Each packet adheres to the RIP V2 protocol. Each node maintains a table of neighbours, the shortest steps it takes to reach them and the next node along that path.
Run each Rover.java program on a separate machine/vm/docker instance. Assign a fictitious ip address to each rover. If you wish to transfer a file to another instance, mention its fictitious ip address and the file you wish to transfer in the arguments.
java Rover fictitious_ip_address [destination_ip file_name]
To test this in Docker check out: https://github.com/ProfFryer/MulticastTestingEnvironment