3.7 KiB
3.7 KiB
Notes for "P4 Experiment Setup"
- Review
- Requirements
- Plan Project
- Implement MVP (Minimum Viable Product)
- Refine
- Documentation
Review
Patricks Code
Patrick Review Notes
Everything in dev branch.
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 scriptconfig: scripts to configure bfrt - automates interactions with bfshelltaildrop: Drop bqm control packets and if queue is full (INCOMPLETE EXPLANATION)test: Testing scripted setup of a network namespace on one hostclean_env.sh: Delete all network namespacessetup_env.sh: Setup NSexp_serverandexp_client, add interfaces/IP/ARP entriesstart_tshark_1.sh: Runstsharkin the network namespaceexp_serveroneno1np0test.py: Use scapy to send 20 UDP packets
test_switch: P4 Script and BFRT configuration for testingcopy_all.sh: Script to copy bqm and config to the Wedge
experiment-scripts:experiment_set_1: Experiment. Explanation inREADME.mdexperiment_set_2: Experiment. Explanation inREADME.mdexperiment_set_3: Experiment. Explanation inREADME.mdexperiment_set_4: Experiment. Explanation inREADME.mdexperiment_set_reno1: Experiment. Explanation inREADME.mdexperiment_set_reno2: Experiment. Explanation inREADME.mdexperiment_set_reno3: Experiment. Explanation inREADME.mdexperiment_set_reno4: Experiment. Explanation inREADME.mdresults: Results of prior experiments.cleanup_network.sh: Delete all namespaces on each test nodeconfigure_picoquic.sh: Compile picoquic on each test nodecreate_folders.sh: Create experiment folderscredentials: Git credentialsdiagrams.ipynb:old.ipynb:run_sudo.sh: Helper script to run sudo commands via sshset_arp_entries.sh: Set ARP entries of test setupsetup_log_locations.sh: Copy and executecreate_folders.sh-script on each test nodesetup_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 nodesync_time.sh: Set time on each nodeupdate_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.shon 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.