ne:sdn:p4:tofino
Inhaltsverzeichnis
Intel Tofino
Ressources (SDK, etc.):
- https://github.com/barefootnetworks/Open-Tofino – Open-Tofino
- https://www.intel.com/content/www/us/en/developer/overview.html (P4 Studio, nach neuesten Filtern)
Use SDK P4studio
# select the desired version of Barefoot SDE (is already set in ~/.profile) source ~/tools/set_sde.bash # setup Virtual Ethernet (veth) interfaces # only necessary once, if Virtual interfaces not exist (check via ifconfig) sudo $SDE_INSTALL/bin/veth_setup.sh # 1. compile [1.Shell] ~/tools/p4_build.sh ~/labs/01-simple_l3/p4src/simple_l3.p4 # 2. run tofino-model [1. Shell] $SDE/run_tofino_model.sh -p simple_l3 # 3. run the driver (bf_switchd) [2. Shell] $SDE/run_switchd.sh -p simple_l3 # 4. bfshell-Access oder Python Script [3. Shell] $SDE/run_bfshell.sh #oder ein Python Skript starten ~/bf-sde-9.9.1/run_bfshell.sh -b ~/labs/lab_1112/02-simple_l3_acl/bfrt_python/basic_setup.py -i #scapy (run in separte terminal - 4. Shell) >>> sendp(Ether()/IP(dst='5.5.5.5')/UDP()/'abcdefg', iface="veth1") # sniff packets (numerically, Hex and ASCII output, veth0-Interface) sudo tcpdump -v -n -XX -i veth0
Install SDK
VM:
# decompress SDK in home directory of user tar -xzvf /home/p4/bf-sde-9.9.1.tgz cd bf-sde-9.9.1/p4studio/ # install p4studio (detailled instructions below), requires 4-8GB of RAM (otherwise build error) ./p4studio interactive #or if profile already exists: ./p4studio profile apply profiles/user-profile.yaml # decompress ica-tools in home directory of user tar -xvzf /home/p4/ica-tools.tgz
Switch (EdgeCore Wedge100bf):
#nicht klar, ob das notwendig ist - pfad zum *.tgz angeben im 'p4studio interactive' reicht eigentlich aus! tar -xzvf bf-reference-bsp-9.9.1.tgz export BSP=/home/user/bf-reference-bsp-9.9.1 cd $BSP ./extract_all.sh user@wedge100bf:~/bf-reference-bsp-9.9.1/bf-platforms-9.9.1/platforms/accton-bf$ ./install_pltfm_deps.sh export SDE=/home/user/bf-sde-9.9.1/
user@wedge100bf:~/bf-sde-9.9.1/p4studio$ ./p4studio interactive Do you want to install dependencies? [Y/n]: Y Do you want to build switch-p4-16? [y/N]: y Please provide the profile to build switch with (x1_tofino, x2_tofino, y1_tofino2, y2_tofino2, y3_tofino2, z2_tofino2, z2_tofino3, y2_tofino3) [x1_tofino]: Do you want to build bf-diags? [y/N]: y Do you want to build P4-14 examples? [y/N]: n Do you want to build P4-16 examples? [Y/n]: Please provide architecture for bf-diags and p4-examples (tofino, tofino2, tofino2m, tofino2h, tofino3, all) [tofino]: Do you want to build for HW? [y/N]: y Do you want to build BSP? [y/N]: y Please provide the path to BSP: /home/user/bf-reference-bsp-9.9.1 Do you want to use custom kernel headers? [y/N]: Do you want to enable P4Runtime? [y/N]: Created profile: global-options: asic: true features: bf-diags: {} bf-platforms: bsp-path: /home/user/bf-reference-bsp-9.9.1.tgz p4-examples: - p4-16-programs switch: profile: x1_tofino architectures: - tofino Do you want to write it to a file? [y/N]: y Please provide the profile filename - [Example:profiles/my-profile.yaml]: profiles/user-profile.yaml Do you want to continue building SDE? [y/N]: y Source packages to install: - bridge - libcli - thrift - grpc Configuration options: ✓ asic ✓ switch ✓ bf-diags ✓ tofino ✗ tofino2 ✗ tofino2m ✗ tofino2h ✗ tofino3 Targets to build: - p4-16-programs - x1_tofino
USB-Stick mounten
sudo mount -t vfat /dev/sdb1 /media/USB-Disk -o uid=1000,gid=1000,utf8,dmask=027,fmask=137
Variablen setzen
export SDE=/home/user/bf-sde-9.9.1/ cd bf-sde-9.9.1/; . ~/tools/set_sde.bash # oder source ~/tools/set_sde.bash sudo $SDE_INSTALL/bin/bf_kdrv_mod_load $SDE_INSTALL # lädt den User-Mode-Driver (ICA 1131)
Die Variablen werden derzeit über die .profile
-Datei beim Einloggen gesetzt (führt zu Fehlermeldung,
falls Kerneldriver bereits geladen)
P4 Programm starten
./run_switchd.sh -p diag # startet bf_shell, exit mit Ctrl-\: Ctrl-AltGr-ß / Ctrl-Alt-Umschalt-7 ./run_switchd.sh -p simple # startet simple.p4 bfshell> ucli qspf show pm show port-add 1/0 10G NONE port-add 1/1 10G NONE port-add 1/2 10G NONE port-add 1/3 10G NONE port-enb 1/-
EdgeCore AS 4610 (172.16.1.8)
Default Login für baseboxd
login: basebox
password: b-isdn
sudo client_drivshell port xe3 AN=on #Auto-negotion ausschalten (nur notwendig auf AS4610!) 0-Auto, 2-Disabled port-add 1/0 10G NONE port-add 1/1 10G NONE port-add 1/2 10G NONE port-add 1/3 10G NONE an-set 1/0 0 an-set 1/1 0 an-set 1/2 2 an-set 1/3 2 port-enb 1/- pm show port-dis 1/3 port-enb 1/3
AS4610 VLAN Konfig
#ip link show #brctl show bridge vlan show sudo systemctl restart systemd-networkd
agema-ag5648:
sudo client_drivshell port xe0-xe3 an=on btw, you can also use the port numbers, e.g. sudo client_drivshell port 1-4 an=on sudo client_drivshell port xe1 AN=on sudo client_drivshell port xe0 AN=on Enable=true sudo client_drivshell port xe1 AN=on #zuerst AN=off !!! sudo ip link set port1 up sudo client_drivshell port xe0 AN=off SP=10000 sudo client_drivshell port xe0 AN=on SP=10000 sudo client_drivshell port xe1 AN=on SP=10000 sudo client_drivshell port xe2 AN=on SP=10000 sudo client_drivshell port xe3 AN=on SP=10000 #dannach können alle ports aktiviert werden sudo client_drivshell port xe1 AN=on SP=10000 sudo ip link set port2 up
ne/sdn/p4/tofino.txt · Zuletzt geändert: 2023/08/10 18:14 von admin