Enabling L4S Across Different Operating Systems: A Comprehensive Guide



Introduction

This article serves as a comprehensive guide on enabling L4S (Low Latency, Low Loss, Scalable Throughput) on various platforms, including Linux, macOS, and iOS. To fully leverage the benefits of L4S within the ByteBlower ecosystem, it is crucial to ensure that you are using the following versions:

  • ByteBlower Server: 2.22.0 or higher
  • ByteBlower GUI: 2.22.0 or higher (accessible for download from http://setup.byteblower.com)
  • ByteBlower Endpoint: 2.22.0 or higher

As of February 2024. ByteBlower Endpoint only supports the following:

  • On Linux: Accurate ECN + TCP Prague 
  • On MacOS: Accurate ECN

Read on to discover step-by-step instructions on enabling L4S on compatible clients capable of installing the ByteBlower Endpoint.

Enabling L4S on macOS

To activate L4S support on macOS, follow these simple steps:

Open the Terminal app on your macOS device. Execute the following command to enable L4S support globally:

  1. defaults write -g network_enable_l4s -bool true

Next, execute the following command with sudo privileges to enable accurate ECN (Explicit Congestion Notification) for TCP:

  1. sudo sysctl -w net.inet.tcp.accurate_ecn=1

By following these steps, you'll successfully enable L4S support on your macOS device. You can also verify the configuration using the following commands:

  1. defaults read -g network_enable_l4s
  2. sysctl net.inet.tcp.accurate_ecn

When using the ByteBlower Endpoint, only accurate ECN is supported as of February 2024, at this point in time, macOS does not support TCP Prague!

Enabling L4S on Linux

For Linux users eager to leverage L4S capabilities, a custom kernel installation is required since L4S hasn't yet been integrated into the mainline Linux Kernel. Here's how you can install the custom kernel on Debian/Ubuntu systems:

  1. Ensure System Compatibility:
    • Verify that your Ubuntu version is at least 20.04 or higher to support the custom kernel.
  2. Download L4S Binaries:
# Download the binaries the L4S Team has prepared
  1. wget https://github.com/L4STeam/linux/releases/download/testing-build/l4s-testing.zip
  2. unzip l4s-testing.zip

   3. Install Debian Packages:

    • Install the Debian packages included in the downloaded archive:
  1. sudo dpkg --install debian_build/*

   4. Set Default Kernel (Optional):

    • Optionally, you can set the newly installed kernel as the default by editing the GRUB bootloader configuration file:
# editing /etc/default/grub (GRUB_DEFAULT=)
  1. nano /etc/default/grub
# Update the GRUB bootloader, so the new kernel can be selected at boot time.
  1. sudo update-grub   

    5. Verify Kernel Installation:

    • Once the system boots with the new kernel, confirm the loaded kernel version using:
  1. uname -r
# Additionally, verify that the sch_dualpi2 and tcp_prague modules are loaded by default using:
  1. lsmod

    6. Load Additional Modules (If Necessary):

  • If the sch_dualpi2 and tcp_prague modules are not loaded automatically, you can load them manually with the following commands:
  1. sudo modprobe sch_dualpi2
  2. sudo modprobe tcp_prague

By following these steps, you'll successfully install and configure the custom kernel, enabling L4S support on your Linux system.

Enabling L4S on iOS/iPadOS

This is how it should be enabled, but the current ByteBlower Endpoint application does not support L4S for iPhoneOS / iPadOS 

Enable the L4S feature in the Developer settings for the device. 


#L4S_on_MacOS #L4S_on_Linux #L4S #TCP #TCPPrague #Linux #Mac #MacOS #iOS