commit 6e8ff47cb2fa88150c74569adbee66824bd51074 Author: Tuan-Dat Tran Date: Thu Nov 28 13:07:48 2024 +0100 Initial commit Signed-off-by: Tuan-Dat Tran diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..47ab27b --- /dev/null +++ b/README.md @@ -0,0 +1,112 @@ +# 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 + +## Implement MVP + +## Refine + +## Documentation