Benutzer-Werkzeuge

Webseiten-Werkzeuge


ne:sdn:p4:tofino

Intel Tofino

Ressources (SDK, etc.):

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
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
ne/sdn/p4/tofino.txt · Zuletzt geändert: 2023/08/10 18:14 von admin