Robust Inter-Planetary Communication Network
This project implements a peer-to-peer (P2P) networking protocol designed to facilitate secure and efficient data exchange between various satellites orbiting Mars and Earth. The network comprises a diverse set of nodes representing different spacecraft:
List of Peers:
- Curiosity Rover
- Mars Rover
- Mars Lander
- Mars satellite
- Moon satellite
- Earth(system)
To establish the communication environment, execute the provided bash script run.sh to initialize the necessary configurations:
$ source run.sh
Verify the implementation of RSA encryption and decryption modules using the following scripts:
peer_receiver_landerModule_rsademo.py
peer_sender_marsRover_rsademo.py
Run peer_receiver_landerModule_rsademo.py on the desired listening device, preferably on the IP address of the Moon Satellite. Then, execute peer_sender_marsRover_rsademo.py to transmit the last 5 hours of data to the receiver, ensuring secure encryption and decryption.
Note: Ensure that the *.pem files and the data_test directory are located in the same directory as the scripts.
Data deletion from each peer occurs through broadcasting once successful verification of reception at Earth is confirmed.
To test the deletion of data from the broadcast channel:
a). Update the IP addresses in the scripts to reflect the actual network configuration (if not using Raspberry Pis). b). Initially, initiate listening on all devices using the provided scripts. c). From the Curiosity Rover, press enter to connect to the other peers. This can be automated in future versions. d). Keep the data_test directory in the same directory as the scripts.
Following are the broadcasting scripts to be deployed on every peer (in this case Raspberry Pi) to able to communicate with each other:
- peer_broadcast_curiosityRover.py
- peer_broadcast_marsRover.py
- peer_broadcast_landerModule.py
- peer_broadcast_marsSatellite.py
- peer_broadcast_moonSatellite.py
- peer_broadcast_earth.py
To simulate data generation and test sending and receiving data over the P2P channel:
a). Update the IP addresses in the scripts to match your network configuration (if not using Raspberry Pis). b). Keep the data_test directory in the same directory as the scripts.
Following are the scripts to be deployed on separate peers (in this case Raspberry Pi) to start the communication in the system:
- launcher_curiosityRover.py peer_receiver_curiosityRover.py peer_sender_curiosityRover.py
- launcher_marsRover.py peer_receiver_marsRover.py peer_sender_marsRover.py
- launcher_landerModule.py peer_receiver_landerModule.py peer_sender_landerModule.py
- launcher_marsSatellite.py peer_receiver_marsSatellite.py peer_sender_marsSatellite.py
- launcher_moonSatellite.py peer_receiver_moonSatellite.py peer_sender_moonSatellite.py
- peer_receiver_earth.py
The launcher_* scripts will generate dummy data, the peer_sender_* scripts will transmit the data, and the peer_receiver_* scripts will capture the data on all peers.