Depending on how it was compiled and on its version number, tc tool does not always handle the same list of queueing disciplines, filters, policing actions and so on.

I am looking for a way to get a list of those different elements. I tried tc -V of course, which displays the version but nothing about the supported algorithms. Likewise, tc help or tc qdisc help or tc qdisc add help does not print an exhaustive list of the queueing disciplines I can use.

I had a look at /etc/iproute2/ directory which seems to contain some data related to ip tool, but I did not find anything about traffic control.

I could probably get most of the list from the manual pages or from source code, but that would not tell me what will be enabled after compiling. Furthermore I intend to process those lists and would really like to get them either from command line if possible, or from a system file that would be more reliable / parsable than a man page.

Would anyone know how I could get the list of algorithms supported by my tc version, or whether it is possible at all to obtain it?

  • It mostly depends which of them are actually enabled in the kernel... there is not that much development in the Linux QoS world so outdated tc is usually not the problem. So I'd turn to /proc/config.gz for the list but it may not be the answer you're looking for... Mar 20, 2016 at 22:00
  • @frostschutz Could be an idea. I can maybe extract a “complete list” from the man/sources, and then filter the results depending on what modules exist on the system to get what is actually supported. I would have to look deeper into it. (Note for readers: the config file may be under /boot/ on some distros, e.g. Ubuntu.)
    – Qeole
    Mar 20, 2016 at 22:32

1 Answer 1


You can see the list of kernel modules (Net Schedulers) compiled in you kernel with:

grep '^CONFIG_NET_SCH_' /boot/config-$(uname -r)
  • Thanks. Yeah, that was the suggestion we discussed in the comments above. Although if we want both qdiscs and filters, we'd better grep on '^CONFIG_NET_\(SCH_\|CLS\)', and then there's some filtering to do with lsmod output to see which are actually loaded. But it does not tell me if the tc utility supports them on user side, though :/.
    – Qeole
    Sep 5, 2019 at 10:29
  • =y means compiled in, =m means built as a module. Your distribution may require installing a separate package (e.g. kernel-modules-extra) to get the sch_netem module Oct 5, 2023 at 18:27

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .