p4_testbed/README.md
Tuan-Dat Tran 6e8ff47cb2 Initial commit
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
2024-11-28 13:07:48 +01:00

3.6 KiB

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 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