1. Getting started

1.1. Select and install a P4 data-plane target platform architecture

sudo add-apt-repository ppa:frederic-loui/p4lang-3rd-party 
sudo apt-get update

sudo add-apt-repository ppa:frederic-loui/p4lang-master-bionic-nightly
sudo apt-get update
sudo add-apt-repository ppa:frederic-loui/p4lang-3rd-party-focal 
sudo add-apt-repository ppa:frederic-loui/p4lang-master-focal-nightly 
sudo apt-get update
echo 'deb https://download.opensuse.org/repositories/home:/frederic-loui:/p4lang:/p4c/Debian_10/  ./" | sudo tee /etc/apt/source.list.d/p4lang.list
sudo apt-get update

Software for TOFINO NPU is subject to a Software License and Confidentiality Agreement (SLACA)

If you are an R&E organization please submit an application via INTEL/BAREFOOT FASTER portal

From there you'll be able to install INTEL/BAREFOOT P4Studio also call BAREFOOT Software Development Environment (SDE)

1.2. Install FreeRouter control-plane

sudo add-apt-repository ppa:frederic-loui/freerouter-nightly
sudo apt-get update
sudo apt-get install freerouter-native freerouter
echo 'deb https://download.opensuse.org/repositories/home:/frederic-loui:/freerouter/Debian_10/  ./" | sudo tee /etc/apt/source.list.d/p4lang.list
sudo apt-get update

1.3. Install RARE software

git clone https://github.com/frederic-loui/RARE.git

Before anything, you'll have to install BAREFOOT SDE following BAREFOOT instruction. TOFINO code can be found here: (From GÉANT Bitbucket RARE repository)

https://bitbucket.software.geant.org/projects/RARE/repos/rare/browse

git clone https://bitbucket.software.geant.org/scm/rare/rare.git

(in compliance with INTEL/BAREFOOT announcement that grant the publication of the P4 code)

1.4. Build & Run RARE software

cd 02-PE-labs/0001-vpn-over-bgp-isis-sr-operation
make

in order stop the whole setup:

cd 02-PE-labs/0001-vpn-over-bgp-isis-sr-operation
make clean

Compile P4 bf_router.p4 program

  • with MPLS profile
export RARE=/home/p4 
$SDE/tools/p4_build.sh -I$RARE/p4src/ -DHAVE_MPLS -DHAVE_BRIDGE $RARE/p4src/bf_router.p4
  • with SRv6 profile
export RARE=/home/p4 
$SDE/tools/p4_build.sh -I$RARE/p4src/ -DHAVE_SRV6 -DHAVE_BRIDGE -DHAVE_NAT $RARE/p4src/bf_router.p4

run TOFINO model

cd $SDE 
./run_tofino_model.sh -p bf_router .

run TOFINO bf_switchd

cd $SDE 
./run_switchd.sh -p bf_router

run Freerouter control plane

cd $RARE/02-PE-labs/0001-vpn-over-bgp-isis-sr-operation 
./make

in order to stop FreeRouter

cd $RARE/02-PE-labs/0001-vpn-over-bgp-isis-sr-operation 
./make clean

run bf_forwarder.py interface

cd $RARE/bfrt_python 
./bf_forwarder.py

Compile P4 bf_router.p4 program

  • with MPLS profile
export RARE_PATH=/home/p4 
$SDE/tools/p4_build.sh -I$RARE/p4src/  -DHAVE_MPLS -DHAVE_BRIDGE -D_WEDGE100BF32X_ $RARE/p4src/bf_router.p4
  • with SRv6 profile
export RARE=/home/p4 
$SDE/tools/p4_build.sh -I$RARE/p4src/ -DHAVE_SRV6 -DHAVE_BRIDGE -DHAVE_NAT -D_WEDGE100BF32X_ $RARE/p4src/bf_router.p4

run TOFINO bf_switchd

cd $SDE 
./run_switchd.sh -p bf_router

run Freerouter control plane.   

cd $RARE/100-WEDGE-100BF-32X/0001-vpn-over-bgp-isis-sr-operation 
./make

in order to stop FreeRouter

cd $RARE/100-WEDGE-100BF-32X/0001-vpn-over-bgp-isis-sr-operation 
./make clean

run bf_forwarder.py interface

cd $RARE/bfrt_python 
./bf_forwarder.py
  • No labels