ネットワークトラフィックを制限するためにtcを取得できません。

ネットワークトラフィックを制限するためにtcを取得できません。

このセクションに基づいてLinux高度なルーティングとトラフィック制御方法tc、マイコンピュータのネットワーク速度を制限することはできません。

ルータは、いくつかのルーティング機能とファイアウォールを備えたMotorola SurfBoardモデムです。トラフィックを制限するマシンは次のとおりです。192.168.0.5、スクリプトも実行中です。192.168.0.5

上記のリンクのコマンドを適用した内容は次のとおりです/etc/NetworkManager/dispatcher.d/

#!/bin/sh -eu

# clear any previous queuing disciplines (qdisc)
tc qdisc del dev wlan0 root 2>/dev/null ||:

# add a cbq qdisc; see `man tc-cbq' for details
if [ $2 = up ]; then
    # set to a 3mbit interface for more precise calculations
    tc qdisc add dev wlan0 root handle 1: cbq avpkt 1000  \
        bandwidth 3mbit

    # leave 30KB (240kbps) to other machines in the network
    tc class add dev wlan0 parent 1: classid 1:1 cbq      \
        rate 2832kbit allot 1500 prio 5 bounded isolated

    # redirect all traffic on 192.168.0.5 to the previous class
    tc filter add dev wlan0 parent 1: protocol ip prio 16 \
        u32 match ip dst 192.168.0.5 flowid 1:1

    # change the hashing algorithm every 10s to avoid collisions
    tc qdisc add dev wlan0 parent 1:1 sfq perturb 10
fi

問題は、私が設定しようとしたことです2832kbitテストするときは、非常に小さい値を使用してください(例:16kbit)、しかし、まだ高速でウェブを閲覧することができます。問題はNetworkManagerスクリプトを手動でテストしているためです。

編集する:dst 192.168.0.5に変更すると、アップロード速度が安定していることがわかりましたが、src 192.168.0.5私にとって最も重要なダウンロード速度をどのように機能させるかをまだ見つけることができませんでした。

ベストアンサー1

宛先マシンの着信トラフィックはすでに到着しているため、制限することはできません。

必要なタスクを正しく実行するには、tcゲートウェイに配置する必要があります。これはあなたには効果がないかもしれませんが、ここに方法があります。

着信トラフィックはレート制限を超えるパケットを破棄するため、ポリシーのみを適用できます。同じパケットを再受信するにはより多くの帯域幅が必要なので、これは非効率的です。これは、TCPがパケットが失われたときに速度を下げてトラフィックの損失を処理するように設計されているため、おおよそ機能しますが、TCPが拡大するにつれて、最近のコメントからわかるように、そのように経験しているように、継続的な速度低下と速度で終わります。

しかし、システムを独自のゲートウェイにする方法があります。「中間ファンクションブロック装置」ネットワークパスを入力してください。この内容を読んで、インバウンドの速度制限を試してみることをお勧めします。

これを見てINGRESS/EGRESS形成/規制に関する「理論的」議論Gentooのウェブサイトから。

おすすめ記事