L4S Gear: Technical Evaluations for Low Latency Networks

Build and test L4S-capable systems with Raspberry Pi for experimental, wired & wireless testing purposes.

Get Started

About L4S

L

Low Latency

L4S provides consistently low latency, even when the network is congested, making it ideal for real-time applications.

L

Low Loss

L4S minimizes packet loss through innovative congestion control algorithms and marking techniques.

S

Scalable Throughput

L4S achieves high throughput while maintaining low latency across varying network conditions and scales.

Disclaimer: This is not an endorsement of L4S but provides resources for technical evaluations. These devices are intended for experimental, wired & wireless testing purposes and not for production networks.

Diagram

Raspberry Pi 5 Network with Ethernet Bridge and L4S marking plane

Hardware Requirements

Required Hardware

  • Raspberry Pi 5 (bcm2712) or Pi 4B (bcm2711) - two or more, 8G RAM is suggested
  • Multiport power supply, e.g. min 5V 3A or 15W per port for RPi, 60W for laptop
  • USB A to C cords for RPi power, 1ft or so
  • 64G Micro SD card(s)
  • Micro HDMI cable(s)
  • HDMI monitor
  • USB keyboard and mouse
  • USB adapter (or equivalent) for micro SD card
  • Ethernet switch

Optional Hardware

  • USB 2.5G ethernet adapters (two for the forwarding plane)
  • NVME hat with SSD card
  • 8 port VLAN switch (e.g Netgear ProSAFE GS108E)
  • USB C cord with power switch
  • RPi 4B case
  • GPS hat for pulse per second (not documented here)
  • SD card holder/case

Software Requirements

Required Software

  • Linux dd (or Raspberry Pi Imager)
  • gzip & gunzip
  • Internet access to the RPi
  • Build tools (detailed in the build guide)

L4S Build Guide

1. System Setup

Create a full Debian Bullseye system with 64-bit support using a 64G micro SD card:

  1. Download the Bullseye image from our site or from Debian.
  2. Use Raspberry Pi Imager to write to a 64G card (this will destroy all existing data).
  3. Install the card into a Raspberry Pi 4 with wired ethernet attached.
  4. Boot card and follow initial setup including creating a user ID and system updates.
  5. Reboot, set root password with sudo passwd.
  6. Optionally install Firefox ESR: sudo apt-get install firefox-esr.
  7. Optionally enable SSH: systemctl start ssh & systemctl enable ssh.

2. Install Build Tools

sudo apt install raspberrypi-kernel-headers build-essential bc git wget bison flex libssl-dev make libncurses-dev
sudo apt install emacs automake

3. Build Kernel

Get the source code and build the kernel:

git clone https://github.com/minuscat/rpi-6.6.y.git
cd rpi-6.6.y/

Review the guide on building RPi kernels.

Set up the environment and build:

KERNEL=kernel_2712_l4s
make bcm2712_defconfig
make menuconfig  # Set Prague CCA & dual queue kernel flags
CONFIG_LOCALVERSION="-l4s-kernel"
make -j6 Image.gz modules dtbs
make -j6 modules_install

4. Build BBR

cd /usr/local/src
su
git clone https://github.com/google/bbr.git
cd bbr
git checkout l4s-testing-2023-02-23-v3

Download bcm2711_defconfig from this site and:

cp bcm2711_defconfig .config
cp bcm2711_defconfig arch/arm64/configs/bcm2711_defconfig  # optional
make menuconfig  # check platform as Broadcom BCM2835 family
                 # Verify Networking support > Networking options > TCP: advanced congestion control
make -j4 Image modules  # wait approximately 87 minutes
make modules_install
make install

Edit the boot configuration:

emacs /boot/config.txt
# Add: kernel=vmlinuz-5.15.72-v8+

Reboot and verify installation:

uname -r  # Should show 5.15.72-v8+
sudo sysctl -a | grep avail  # Should show prague in available congestion control

5. Configuration for Testing

Enabling Accurate ECN

sysctl net.ipv4.tcp_ecn=3

Enabling BBRv2 CC with Accurate ECN

sysctl net.ipv4.tcp_ecn=3 net.ipv4.tcp_congestion_control=bbr2

Enabling TCP Prague CC with Accurate ECN

sysctl net.ipv4.tcp_ecn=3 net.ipv4.tcp_congestion_control=prague

Enabling CUBIC CC with Accurate ECN

sysctl net.ipv4.tcp_ecn=3 net.ipv4.tcp_congestion_control=cubic

Enabling CUBIC CC without Accurate ECN

sysctl net.ipv4.tcp_ecn=0 net.ipv4.tcp_congestion_control=cubic

6. Install Testing Tools

Installing iPerf2

cd /usr/local/src
git clone https://git.code.sf.net/p/iperf2/code iperf2-code
cd iperf2-code
optionally: git checkout udp-l4s		  
./configure --enable-udp-l4s
make -j
make install

Installing Go for Network Quality Testing

wget https://go.dev/dl/go1.20.6.linux-arm64.tar.gz
tar -C /usr/local -xzf go1.20.6.linux-arm64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version  # Verify installation

Building Network Quality Tool

cd goresponsiveness/
go mod download
go build networkQuality.go

Network Configurations

Network Optimization Scripts

To help you get the most out of your L4S testing setup, we provide specialized scripts for network tuning and traffic shaping. These scripts can help you achieve optimal performance and accurate test results with your Raspberry Pi L4S testbed.

Network Tuner Script

Optimize your network settings for high throughput by adjusting system buffer sizes and configuring network interfaces for optimal performance.

  • Increases network buffer sizes
  • Configures traffic control with Fair Queuing
  • Disables problematic network offloading features
Download bash script for tuning

Traffic Shaper with Dual PI² Support

Shape network traffic with asymmetric rate support and optional dual PI² queuing for improved latency under load.

  • Independent download/upload rate limiting
  • Automatic burst size calculation
  • Support for dual PI² queuing discipline
Download bash script for CE marking

Script Usage

For detailed usage instructions and advanced configuration options for our network optimization scripts, visit our Network Scripts page. This resource includes:

  • Command line usage examples for different network scenarios
  • Parameter descriptions for fine-tuning performance
  • Technical details about buffer optimization and traffic shaping

Packet Inspections with ECN

Downloads

Contact Us

For questions, support, or to contribute to the L4S project, please reach out to us.

Email Us