satoshi.sa.aoki
2023年8月30日 13時32分
お世話になっております。
Armadilloで通信の帯域を制限した状態下での動作検証を行うため、Armadilloにて低速の通信環境を再現しようと試みています。
その際、Armadilloログイン後にTeraTermで以下の tc コマンドによって帯域制限を行おうとしたところ、原因の特定できないエラーに遭遇しました。
具体的には以下のコマンドを入力すると、
sudo tc qdisc add dev wlan0 root handle 1:0 netem delay 100ms
下記のエラーメッセージのみが出力されます。
RTNETLINK answers: Operation not supported
こちらのwiki( https://wiki.debian.org/TrafficControl )を参考に、以下のコマンドを入力してパッケージをインストール後に再度実行してみましたが、全く同じエラーメッセージが出る結果となりました。
sudo apt-get install iproute2
`which tc` コマンドで確認したところ、tc コマンド自体は `usr/sbin/tc` に登録されており、コマンドの操作方法も以下のように確認できています。
tc -help Usage: tc [ OPTIONS ] OBJECT { COMMAND | help } tc [-force] -batch filename where OBJECT := { qdisc | class | filter | chain | action | monitor | exec } OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[aw] | -o[neline] | -j[son] | -p[retty] | -c[olor] -b[atch] [filename] | -n[etns] name | -nm | -nam[es] | { -cf | -conf } path }
ただし help 以外の操作は一律で上記のエラーメッセージが表示され、実行ができない状態となっています。`qdisc` の箇所を他のOBJECTに変えても同様でした。
こちらの事象の原因として、何かしらの心当たりはございますでしょうか。
また、 tc コマンドを正常に扱うことのできる条件等をもしご存じであればご教授いただけないでしょうか。
その他、tcコマンド以外での実現方法などノウハウがございましたら合わせてご教授いただけますと幸いです。
ご確認の程、よろしくお願いいたします。
コメント
satoshi.sa.aoki
お世話になっております。
ご回答ありがとうございます!
ATDE 環境にてご教授いただいた手順でカーネルの設定を変更し、その内容で生成した uImage と armadillo_iotg_g3_m1.dtb を使ってインストールディスクを作成し、 Armadillo へと適用しました。
しかしながら、上記を行っても `RTNETLINK answers: Operation not supported` が表示されてしまいました。
また、iproute2 を改めてインストールしてみましたが結果は変わりませんでした。
以下はその際に config ファイルに設定になります。
atmark@atde7:~/linux-4.9-x1-at30$ grep NET_SCH .config CONFIG_NET_SCHED=y # CONFIG_NET_SCH_CBQ is not set CONFIG_NET_SCH_HTB=y # CONFIG_NET_SCH_HFSC is not set # CONFIG_NET_SCH_PRIO is not set # CONFIG_NET_SCH_MULTIQ is not set # CONFIG_NET_SCH_RED is not set # CONFIG_NET_SCH_SFB is not set CONFIG_NET_SCH_SFQ=y # CONFIG_NET_SCH_TEQL is not set CONFIG_NET_SCH_TBF=y # CONFIG_NET_SCH_DSMARK is not set CONFIG_NET_SCH_NETEM=y # CONFIG_NET_SCH_DRR is not set # CONFIG_NET_SCH_MQPRIO is not set # CONFIG_NET_SCH_CHOKE is not set # CONFIG_NET_SCH_QFQ is not set # CONFIG_NET_SCH_CODEL is not set # CONFIG_NET_SCH_FQ_CODEL is not set # CONFIG_NET_SCH_FQ is not set # CONFIG_NET_SCH_HHF is not set # CONFIG_NET_SCH_PIE is not set # CONFIG_NET_SCH_PLUG is not set CONFIG_NET_SCH_FIFO=y
なおインストールディスク作成の際は、uImage と armadillo_iotg_g3_m1.dtb 以外は、前回問い合わせした際に利用していたビルドファイルと同一のものを使用しています。
この内容で不備があれば変更箇所をご教授いただけないでしょうか。
また、この内容に不備がない場合、tc コマンドが使用できない理由として何が考えられるでしょうか。
よろしくお願いいたします。
at_dominique.m…
satoshi.sa.aokiさん
> この内容で不備があれば変更箇所をご教授いただけないでしょうか。
> また、この内容に不備がない場合、tc コマンドが使用できない理由として何が考えられるでしょうか。
そうですね、この内容であっていると思います。
こちらもただいま同じ .config の変更を試して、tc を無事に使えることができました。
root@armadillo:~# zcat /proc/config.gz | grep NET_SCH CONFIG_NET_SCHED=y # CONFIG_NET_SCH_CBQ is not set CONFIG_NET_SCH_HTB=y # CONFIG_NET_SCH_HFSC is not set # CONFIG_NET_SCH_PRIO is not set # CONFIG_NET_SCH_MULTIQ is not set # CONFIG_NET_SCH_RED is not set # CONFIG_NET_SCH_SFB is not set CONFIG_NET_SCH_SFQ=y # CONFIG_NET_SCH_TEQL is not set CONFIG_NET_SCH_TBF=y # CONFIG_NET_SCH_GRED is not set # CONFIG_NET_SCH_DSMARK is not set CONFIG_NET_SCH_NETEM=y # CONFIG_NET_SCH_DRR is not set # CONFIG_NET_SCH_MQPRIO is not set # CONFIG_NET_SCH_CHOKE is not set # CONFIG_NET_SCH_QFQ is not set # CONFIG_NET_SCH_CODEL is not set # CONFIG_NET_SCH_FQ_CODEL is not set # CONFIG_NET_SCH_FQ is not set # CONFIG_NET_SCH_HHF is not set # CONFIG_NET_SCH_PIE is not set # CONFIG_NET_SCH_PLUG is not set CONFIG_NET_SCH_FIFO=y root@armadillo:~# tc qdisc add dev wlan0 root handle 1:0 netem delay 100ms root@armadillo:~# tc qdisc qdisc noqueue 0: dev lo root refcnt 2 qdisc mq 0: dev eth0 root qdisc pfifo_fast 0: dev eth0 parent :3 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev eth0 parent :2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc pfifo_fast 0: dev eth0 parent :1 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 qdisc netem 1: dev wlan0 root refcnt 5 limit 1000 delay 100.0ms
カーネルも同じ 4.9.133-at30 で試しています。
なので、疑っているわけではありませんがあらかじめカーネルの更新ができているかの確認をさせていただければ幸いです。
返事でビルドしたディレクトリの .config を grep して NET_SCHED などの設定を確認していましたが、今回は起動している Armadillo の /proc/config.gz で確認をお願いします:
root@armadillo:~# zcat /proc/config.gz | grep NET_SCH
そちらに設定がなければ違うイメージを起動している可能性がありますので、ご確認ください。
そちらも NET_SCHED 等が設定されている場合には別の設定が足りない可能性もありますので、同じ「tc qdisc add dev wlan0 root handle 1:0 netem delay 100ms」で発生していることに間違いなければもう少し確認します。
よろしくお願いします。
satoshi.sa.aoki
at_dominique.m…
2023年8月30日 14時08分
satoshi.sa.aokiさん
お世話になっています、
マルティネです。
tc を使うにはカーネルに CONFIG_NET_SCHED を有効する必要があります。
また、netem も別の CONFIG_NET_SCH_NETEM で制御されています。
https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_pro… を参考にして、「3. コンフィギュレーション」の x1_defconfig の設定の後は「
make ARCH=arm menuconfig
」でメニューを開いて、設定してください。そのメニューで「
/
」キーを使うと検索モードに入りますので、順番にNET_SCHED と NET_SCH_NETEM を検索して「y
」キーで有効にしてから、コンフィグを保存してください。コンフィグ変更ができたら、「grep NET_SCHED .config」などで設定の確認ができます。カーネルを入れ替えた後に tc を使えるようになると思いますが、最後まで確認してませんので何かあればまた聞いてください。
よろしくお願いします。