# Notes for "P4 Experiment Setup" 1. [ ] Review 2. [ ] Requirements 3. [ ] Plan Project 4. [ ] Implement MVP (Minimum Viable Product) 5. [ ] Refine 6. [ ] Documentation ## Review ### Patricks Code #### Patrick Review Notes Everything in `dev` branch. [picoquic](https://github.com/private-octopus/picoquic) is a minimalist QUIC implementation Patrick used to conduct his experiments with QUIC. The wedge is the P4 Switch Patrick used for testing on hardware. It is pre-configured to run P4 Code. Test nodes are: - ncs-node3-tailscale - ncs-node4-tailscale - ncs-node5-tailscale - ncs-node6-tailscale - ncs-node7-tailscale Three folders: - `bqm`: - `bqm`: Implementation of bqm along with a compilation script - `config`: scripts to configure bfrt - automates interactions with bfshell - `taildrop`: Drop bqm control packets and if queue is full (INCOMPLETE EXPLANATION) - `test`: Testing scripted setup of a network namespace on one host - `clean_env.sh`: Delete all network namespaces - `setup_env.sh`: Setup NS `exp_server` and `exp_client`, add interfaces/IP/ARP entries - `start_tshark_1.sh`: Runs `tshark` in the network namespace `exp_server` on `eno1np0` - `test.py`: Use scapy to send 20 UDP packets - `test_switch`: P4 Script and BFRT configuration for testing - `copy_all.sh`: Script to copy bqm and config to the Wedge - `experiment-scripts`: - `experiment_set_1`: Experiment. Explanation in `README.md` - `experiment_set_2`: Experiment. Explanation in `README.md` - `experiment_set_3`: Experiment. Explanation in `README.md` - `experiment_set_4`: Experiment. Explanation in `README.md` - `experiment_set_reno1`: Experiment. Explanation in `README.md` - `experiment_set_reno2`: Experiment. Explanation in `README.md` - `experiment_set_reno3`: Experiment. Explanation in `README.md` - `experiment_set_reno4`: Experiment. Explanation in `README.md` - `results`: Results of prior experiments. - `cleanup_network.sh`: Delete all namespaces on each test node - `configure_picoquic.sh`: Compile picoquic on each test node - `create_folders.sh`: Create experiment folders - `credentials`: Git credentials - `diagrams.ipynb`: - `old.ipynb`: - `run_sudo.sh`: Helper script to run sudo commands via ssh - `set_arp_entries.sh`: Set ARP entries of test setup - `setup_log_locations.sh`: Copy and execute `create_folders.sh`-script on each test node - `setup_network.sh`: Setup test network. Includes: - Namespaces - Interfaces/IPs - Routing - ARP Entries (with `set_arp_entries.sh`) - `setup_repositories.sh`: Setup git to get picoquic on each test node - `sync_time.sh`: Set time on each node - `update_repositories.sh`: Update picoquic on each test node - `picoquic-sync`: Local copy of the picoquic library ### RECN Code #### 04\_-_Projekte/14-run_rpecn_tests/codes/Big_Topo - `README.md`: - Explains the setup and prerequisite steps to run an experiment - Prerequisite Steps: - Setup ARP on each host - (When first time) Install required tools - Run switch program on wedge - Prepare Ports on wedge - Configure touting tables on wedge - Do Portshaping - Run experiment-script - Reset of setup can be done by executing `reset.sh` on each test node ## Requirements ### Notes - Testbed setup with alveo network cards to run on host and a switch - Pluggable network traffic generation at the experimentation stage - Xilinx FPGA Cards will be used - Non static testbed - Make general first especially ARP/IP/Interface and go from there ### Whats needed TODO ## Plan Project ### Rough Sketch I start by creating a rough sketch in [./sketch.md](./sketch.md). ## Implement MVP ## Refine ## Documentation