LinuxでNICの帯域幅を制限する方法はありますか?任意に遅い接続をシミュレートしたいと思います。
LinuxでNICの帯域幅を制限する方法はありますか?任意に遅い接続をシミュレートしたいと思います。
回答:
netemのiprouteによって制御されるカーネルモジュール。
Netemをカーネルでコンパイルする必要があります。
Networking -->
Networking Options -->
QoS and/or fair queuing -->
Network emulator
netemモジュールがロードされると、iprouteのtcで次のようなことができます。
tc qdisc add dev tap0 root netem delay 50ms loss 50%
(50%のパケット損失、50ミリ秒の追加遅延)
sch_netem
です。通常、手動でロードする必要はありません。必要に応じて自動的にロードされます。
rate
ますtc qdisc add dev lo root handle 1:0 netem delay 10ms rate 1mbit limit 1000
。lo
(localhostへのアクセス用)などの一部のデバイスでは、キューの長さも設定する必要があることに注意してくださいifconfig lo txqueuelen 1000
。参照してくださいserverfault.com/a/394949/76090
クライアント側ですか?
トリクルはあなたがしたいことをすべきです。Ubuntu(またはDebian、私は思う)を実行している場合は、でインストールしてsudo apt-get install trickle
から実行できます。trickle -s -d 10 -u 10 firefox
(または、しばらく使用していません)firefoxを実行し、ダウンロードとアップロードの速度を1秒あたり10キロバイトに制限します。
私は、ubuntuの「wondershaper」と呼ばれるツールを使用して、ネットワークで利用可能なすべての帯域幅を自分のボックスが消費しないようにする方法を見つけました。他のlinux destrosにも存在することを願っています。次のコマンドを使用して、LinuxホームPCが消費できる帯域幅を制限できます。
sudo wondershaper eth0 1000 200
これにより、ダウンロード制限が1000キロビットに制限され、アップロードが200キロビットに制限されます。詳細/オプションについては、wondershaperのmanページを参照してください。
wondershaper
はDebian のパッケージです。
sudo wondershaper clear eth0
NISTは、NistNetと呼ばれるネットワークシミュレータを作成します。
http://snad.ncsl.nist.gov/nistnet/(リンクは死んでいるようです)
http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/
NistNetを使用すると、選択した通信リンクをエミュレートするルーターを作成できます。
最も簡単な操作では、2つのネットワーク間に2つのNICがあるボックスにそれを配置します。
たとえば、衛星リンクで動作する必要があるアプリケーションがありました。
データは、BIGレイテンシで2 Mbpsリンクを経由する可能性があります。制御は、同じ遅延で128kbpsリンクを経由する必要がありました。
NistNetは、すべてを128kbpsで動作させるのに役立ちました。
NistNetを使用すると、帯域幅だけでなく遅延もシミュレートでき、ビジーまたは信頼性の低いリンクをシミュレートして、パケットをドロップすることもできます。
任意の接続をシミュレートする場合は、帯域幅を制限するだけでなく、待ち時間も増やします。
パケットを断片化することも忘れないでください。偽のリンクに素敵な小さなMTUを設定できます。
IIRCにパケットジッタを追加すると、異常なパケットに対処できるかどうかがわかります。
私は過去にwondershaperを個人的に使用しましたが、ADSL接続を最大限に活用するための反対のユースケースのために書かれています。
ただし、ここに記載されている他の方法を試してみます。
たとえば、低速リンクでWebページをテストするために、ローカルにインストールされたsquidプロキシを使用して帯域幅を制限できます。
ディストリビューションからsquidプロキシをインストールします—私のFedoraではのように簡単yum install squid
でした。
以下を追加します/etc/squid/squid.conf
。
delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 16000/16000
これにより、帯域幅が約128 kbps(16000 Bps)に制限されます。
squidを開始します。/etc/init.d/squid start
プロキシサーバーlocalhost
ポートを使用するようにブラウザーを構成します3128
。