Linux + Cake SQM

Edit: Re-reading -- the article is about using an x86 box as a router. Plenty of articles about there here on the forum.

My suggestion is the ODROID H2 -- you can see its performance at Comparative Throughput Testing Including NAT, SQM, WireGuard, and OpenVPN as the Celeron J4105 device.

You'll need the patches for EFI boot, presently at https://github.com/openwrt/openwrt/pull/1968

https://github.com/openwrt/openwrt/pull/1968.patch will get you the patch.

After you clone the repo

git checkout -b my-name-for-my-branch
wget https://github.com/openwrt/openwrt/pull/1968.patch
git am 1968.patch


Wiki at https://openwrt.org/docs/guide-developer/build-system/install-buildsystem and following

From my notes:

I run "headless" over SSH, so I don't need a graphical user environment.

image

(There may be steps missing here that were "obvious" to me)

apt install sudo

usermod -a -G sudo jeff   # Use your "normal" user name here

Log out, and log in as your "normal" user

Update the install

sudo apt update
sudo apt upgrade

and get ready to build your first ROM!

sudo apt install build-essential git gitk libncurses5-dev gawk unzip wget curl ccache rsync zlib1g-dev

git clone https://git.openwrt.org/openwrt/openwrt.git

cd openwrt
git checkout master

./scripts/feeds update -a
./scripts/feeds install -a

make menuconfig

Select your device's target, subtarget, and specific board -- this selects "good" defaults, without LuCI (it should include PPP-related kernel modules automatically).

I select Developer Options, then the entries for
(Hint: The / key will let you search in make menuconfig)

CONFIG_BUILD_LOG=y
CONFIG_CCACHE=y

I use the nginx-based HTTP-S version of LuCI

CONFIG_PACKAGE_luci-ssl-nginx=y
CONFIG_PACKAGE_luci-app-sqm=y

The first build will need to build the toolchain. This takes a while. Figure around an hour for the first build.

make -j12 clean download toolchain/install world

Set the -j12 to the number of cores on your build box or VM, or perhaps one less if you want to do something else compute-intensive on the box (more than watching the output or running [h]top or the like) while it's building.

re-builds are much faster (5-10 min for me), and you generally can just do

make -j12 clean download world

Using ccache makes "clean" not really cost a lot of time, so I do it every time out of habit.

Important: With your own builds, best is to add packages to a new ROM, as the OpenWrt package repos won't be consistent with your build. I have added "simple" packages (no "kmods" needed) on occasion, when I needed something without taking down a device to flash it.

3 Likes