When I run this cmd:
tc qdisc add dev eth0 root red limit 51200000 min 128000 max 512000 avpkt 1024 burst 200 ecn probability 0.5
i get
<On my system your command autoloads the sch_red
module. The question is rather old so on a modern system the autoloading should work fine if you have the required module. Check if you miss the kernel module by running:
modprobe sch_red
If it prints nothing, then retry running tc
command and see if it helps.
If not, ensure you have CONFIG_NET_SCH_RED
(Random Early Detection) compiled in your kernel. More info at kernel documentation.
The error could be due to a lack of support for traffic control in Linux kernel.
Here is an excerpt from documentation that lists kernel compilation options needed for proper operation of traffic control functionality in Linux:
Source: Traffic Control HOWTO - Kernel requirements
# # QoS and/or fair queueing # 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
A kernel compiled with the above set of options will provide modular support for almost everything discussed in this documentation. The user may need to modprobe
module
before using a given feature.