WSL2 极大的提升了在Windows上的Linux的使用体验,tc 是Linux自带的流量控制器,能控制延迟、丢包、带宽等网络配置。但在当前 5.15 内核版本的WSL中缺少所需模块,需要手动编译内核开启tc。
编译内核
1
| git clone https://github.com/microsoft/WSL2-Linux-Kernel.git --depth=1 -b linux-msft-wsl-6.1.y
|
1
| sudo apt update && sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev
|
- 修改
Microsoft/config-wsl
配置文件,添加tc支持
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
CONFIG_NET_SCHED=y CONFIG_NET_SCH_CBQ=m CONFIG_NET_SCH_HTB=m CONFIG_NET_SCH_CSZ=m CONFIG_NET_SCH_PRIO=m CONFIG_NET_SCH_RED=m CONFIG_NET_SCH_SFQ=m CONFIG_NET_SCH_TEQL=m CONFIG_NET_SCH_TBF=m CONFIG_NET_SCH_GRED=m CONFIG_NET_SCH_DSMARK=m CONFIG_NET_SCH_INGRESS=m CONFIG_NET_QOS=y CONFIG_NET_ESTIMATOR=y CONFIG_NET_CLS=y CONFIG_NET_CLS_TCINDEX=m CONFIG_NET_CLS_ROUTE4=m CONFIG_NET_CLS_ROUTE=y CONFIG_NET_CLS_FW=m CONFIG_NET_CLS_U32=m CONFIG_NET_CLS_RSVP=m CONFIG_NET_CLS_RSVP6=m CONFIG_NET_CLS_POLICE=y
CONFIG_NET_SCH_NETEM=y
|
1
| make -j$(nproc) KCONFIG_CONFIG=Microsoft/config-wsl
|
1
| sudo make modules_install headers_installs
|
1
| sudo cp arch/x86/boot/bzImage /mnt/c/
|
启用内核
- 用户目录下创建或编辑WSL配置文件
%USERPROFILE%\.wslconfig
1 2
| [wsl2] kernel = C:\\bzImage
|
- 管理员运行PowerShell 终端窗口, 停止WSL
1 2 3 4
| uname -r
6.1.21.2-microsoft-standard-WSL2+
|
tc 使用
1
| sudo tc qdisc add dev eth0 root delay 100ms
|
1
| sudo tc qdisc show dev eth0
|
1
| sudo tc qdisc del dev eth0 root
|
1
| sudo tc qdisc add dev eth0 root netem loss 10%
|
1
| sudo tc qdisc add dev eth0 root tbf rate 100kbps burst 10kb limit 10kb
|
其他问题
参考