BRAS tuning
Recommendations for BRAS (Broadband Remote Access Server) performance.
Network tuning
Disable kernel mitigations to maximize performance
Edit file /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=0 processor.max_cstate=1 idle=poll quiet mitigations=off"
Additional GRUB CMD arguments:
ixgbe.allow_unsupported_sfp=1 - Allow to use not original Intel SFP+ modules
pcie_aspm=off - Disable Active-State Power Management
After saving, please update grub settings
$sudo update-grub
Warning! Enabling the idle loop (idle=poll
) parameter can cause 100% CPU utilization on your VM (if you’re using virtual enviroments like ProxMox, VMWare, etc.)
Disable NIC offloads
Disable hardware offloads,increase Tx/Rx buffers and queue length on your NICs to prevent speed problems. Please note, that GSO offload changed to tx-gso-partial in Linux kernels 4.15 and later.
Debian /etc/network/interfaces
:
allow-hotplug eth0
iface eth0 inet manual
up ethtool -K eth0 tso off gso off gro off rxvlan off txvlan off rx-vlan-filter off ntuple on &> /dev/null
up ethtool -K eth0 tx-gso-partial off &> /dev/null
up ethtool -G eth0 rx 4096 tx 4096 &> /dev/null
up ip link set eth0 txqueuelen 10000 &> /dev/null
Please determine your NIC queue and buffers limit before increase:
ethtool -g eth0
Fix Download speed problem (shaper)
Change shaper from htb to tbf
[shaper]
…
down-limiter=tbf
Default rate limits (shaper)
If radius-server Access-Accept answer has no compatible speed attributes - to prevent unlimited session speed you can add default rate-limits (in Kbps).
nano /etc/accel-ppp.conf
[shaper]
rate-limit=888/888
Change PPPoE MTU
You can adjust allowed PPPoE min/max MTU/MRU settings:
nano /etc/accel-ppp.conf
[ppp]
verbose=1
min-mtu=1280
mtu=1492
mru=1492
Hotplug optimization
To generate hotplug events on IPoE interfaces (Debian 10):
nano /lib/udev/ifupdown-hotplug
case "$ACTION" in
add)
# these interfaces generate hotplug events *after* they are brought up
case $INTERFACE in
ppp*|ippp*|isdn*|plip*|lo|irda*|ipsec*
just add |ipoe*
after |ipsec*
repeat with file /lib/udev/net.agent
SYSTEMD-UDEV optimizations
Delete
99-default.link
from/lib/systemd/network/
directory
rm /lib/systemd/network/99-default.link
Change
/lib/udev/rules.d/99-systemd.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo|ppp*|ipoe*", RUN+="/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name"
Add |ppp*|ipoe*
to KERNEL!="lo"
Change
/lib/udev/rules.d/80-ifupdown.rules
SUBSYSTEM=="net", ACTION=="add|remove", KERNEL!="ppp*|ipoe*", RUN+="ifupdown-hotplug"
Add KERNEL!="ppp*|ipoe*"