RTNETLINK answers: No such file or directory と言われます。
TC帯域を設定して、レイテンシーを設定した後、パケロスや遅延を設定する場合、だいたい、こうやるのですが、
sudo tc qdisc add dev eth0 root handle 1: tbf rate 10mbit burst 10kb latency 500ms
sudo tc qdisc add dev eth0 parent 1:1 handle 10: netem delay 10000ms loss 1%
RTNETLINK answers: No such file or directory と言われます。
Webで調べてみたところ、山のように、同じ"悲鳴"が飛んでいました。
で、解決方ですが、ChatGPTが、逆転の発想のやりかたを教えてくれました。
# 既存の設定を削除
sudo tc qdisc del dev eth0 root (何か表示されるが無視する)
# `netem` を root にして、まずパケットロスを設定
sudo tc qdisc add dev eth0 root handle 1: netem loss 1% delay 10000ms
# その上に `tbf` を適用
sudo tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 10mbit burst 10kb latency 500ms
つまるところ、ルールの親と子を引っくり返す、という手法です。
まあ、理由は不明ですが、これで動いているようです。