UFRGS - Low End Networks project repository.
In this document, we aim to explain what is the prototype we are developing; the tasks we already made and the ones that are to come.
The image above describes the structure of the prototype we are building.
A more detailed version of the prototype is depicted below:
The image shows the namespaces and the interfaces that are used for a functional communication.
To build the network described above, we have to develop 2 important parts:
- The communication through the BMV2 software switch using P4 on the P4Pi OS.
- The LoRa SX127x antennas communication using scapy and some LoRa base codes.
The idea is that the communication with the network will occur passing through the programmable switch, and then, through the LoRa Radio transmissions, giving us the power to communicate over long distances. The speed of the radio link will be slow (something along the line of 400bps to 50Kbps), however, it will be enough to demonstrate the idea and make some experiments.
We developed these parts separately, and so, now we have to merge these two technologies together.
-
configure GPIO pins for LoRa
-
configure SPI on Raspberry Pi
link to the issue - Comment by Mike Routen made on Dec 5, 2018
Enable SPI on Interface Options
sudo raspi-config
- "dtoverlay=spi0-cs,cs0_pin=25" at the end of
/boot/config.txt
- clone the repo pySX127x
- Follow installation process
- Change the values described on the github Issue in SX127x/board_config
- Add the respective lines found on the github Issue to SX127x/constants.py
- Add the respective lines found on the github Issue to SX127x/LoRa.py
- Try and run sudo ./lora_util.py
- Assertion Error: Try and reboot the raspberry
- "dtoverlay=spi0-cs,cs0_pin=25" at the end of
- Figure out best way to integrate LoRa Communication and P4Pi OS - DONE
- usage of dummy interfaces
- switch with 3 ports (one to communicate with clients, one to send to LoRa and one to receive from LoRa)
- Find a better transmission solution between the 2 raspberry pi to avoid packet loss (Julien) - DOING
- Test 3 ports approach
- Configure virtual network on startup (Julien) - DONE
- Rebuild sniffer script with scapy
- sniffer for DHCP packets as test
- Decode packets received on the middle p4pi - DONE
- Forward packets to the network - DONE
- Analyse throughput of LoRa Antenas - DOING
- Build filter for only client packets, ignoring other packets on the sniffers - DONE (basic version)
- Implement DHCP and NAT on local Pi network
- Build script to configure virtual network for switch with 3 ports
- Connect to wifi (Julien) - DONE
- ssh to p4pi (Julien) - DONE
- run the P4 code and check if it works (Marcelo) - DOING
- check internet connection (Marcelo) - DONE
- Run the LTP protocol P4 code on P4Pi
- Implement packets filter on P4