2024-11-28 13:07:48 +01:00
|
|
|
# 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
|
2024-12-23 16:45:18 +01:00
|
|
|
- Non static testbed - Make general first especially ARP/IP/Interface and go
|
|
|
|
from there
|
2024-11-28 13:07:48 +01:00
|
|
|
|
|
|
|
### Whats needed
|
|
|
|
|
|
|
|
TODO
|
|
|
|
|
|
|
|
## Plan Project
|
|
|
|
|
2024-12-23 16:45:18 +01:00
|
|
|
### Rough Sketch
|
|
|
|
|
|
|
|
I start by creating a rough sketch in [./sketch.md](./sketch.md).
|
|
|
|
|
2024-11-28 13:07:48 +01:00
|
|
|
## Implement MVP
|
|
|
|
|
|
|
|
## Refine
|
|
|
|
|
|
|
|
## Documentation
|