各イーサネット ポートの最大帯域幅を設定できるようにする必要があるサーバー上で実行するアプリケーションを作成しています (最大 6 つのポートがあります)。
明らかに、アプリケーションが使用する帯域幅を調整できますが、コンピューターの実際のイーサネット ポート帯域幅の調整に関する情報はまだ見つかりません。
これは、すべてのポートを監視するためのドライバーを作成することによって行う必要がありますか? 誰かが私を正しい方向に向けることができますか?
各イーサネット ポートの最大帯域幅を設定できるようにする必要があるサーバー上で実行するアプリケーションを作成しています (最大 6 つのポートがあります)。
明らかに、アプリケーションが使用する帯域幅を調整できますが、コンピューターの実際のイーサネット ポート帯域幅の調整に関する情報はまだ見つかりません。
これは、すべてのポートを監視するためのドライバーを作成することによって行う必要がありますか? 誰かが私を正しい方向に向けることができますか?
Linuxボックスにアクセスできる場合は、そのようなことを簡単に行うことができます. 実際、あらゆる種類のネットワーク障害を追加して、興味深いものにすることができます.
2 つのネットワーク カードをインストールし、netem をセットアップしてトラフィックを仲介するだけです。(つまり、ワイヤのネットブリップ、遅延、ジッター、帯域幅レートなどの障害の合計)
これは、Linux ボックスを介して Android トラフィックを渡すことにより、Android オーディオ ストリーミング アプリのパフォーマンスをテストするために使用するスクリプトです (インターフェイスの 1 つに Wi-Fi AP が接続されています)。
追加: アプリのパフォーマンスをテストするということは、アプリが運転中に 4G ネットワークでどのように動作するか (つまり、多くのジッター) を意味します。または、Wi-Fi を備えた家庭での使用例。家庭内の全員が同時に HD ビデオをストリーミングすることを決定した場合 (つまり、帯域幅の競合、大量のパケット損失)。
#!/bin/bash
ORIGINAL_PATH=$PATH
#echo $ORIGINAL_PATH
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/game"
#echo $PATH
CTOSINTERFACE=eth1 # EGRESS interface on Bridge, facing the SERVER
STOCINTERFACE=eth0 # EGGRES interface on Bridge, facing the CLIENT
# Client To Server
CDELAY=$1
CJITTER=$2
CLOSS=$3
CDUPLICATE=$4
CCORRUPT=$5
CREORDER=$6
# Server to Client
SDELAY=$7
SJITTER=$8
SLOSS=$9
SDUPLICATE=$10
SCORRUPT=$11
SREORDER=$12
# Clear Latency/Loss/Jitter
/sbin/tc qdisc del root dev $CTOSINTERFACE 2>/dev/null
/sbin/tc qdisc del root dev $STOCINTERFACE 2>/dev/null
# Client to Server Impairments (on Bridge)
qdisc add dev $CTOSINTERFACE root netem delay ${CDELAY}ms ${CJITTER}ms loss $CLOSS% duplicate ${CDUPLICATE}% corrupt ${CCORRUPT} reorder ${CREORDER}% limit 10000000 2>&1 >/dev/null
qdisc add dev $STOCINTERFACE root netem delay ${SDELAY}ms ${SJITTER}ms loss $SLOSS% duplicate ${SDUPLICATE}% corrupt ${SCORRUPT} reorder ${SREORDER}% limit 10000000 2>&1 >/dev/null
#$PATH=$ORIGINAL_PATH
export PATH=$ORIGINAL_PATH
#echo $PATH
スクリプトを次のように呼び出します
#sudo impare_network.sh 100 20 30 0 0 0 0 0 0 0 0 0 0
これにより、アップリンク (クライアントからサーバーへ) で 100 ミリ秒の遅延、20% のジッター (正規分布を使用)、30% のパケット損失が追加されます。
Windows では、通常、OS レベルでソフトウェアを追加せずにそれを行うことはできません。ユースケースは、あまり重要ではなく、真剣に考えられているだけです。これはまったく正しいことです。ネットワークの制限が必要な場合は、スイッチで強制できます。
唯一の例外は Hyper-V で、最新バージョン (2012 R2) で送信帯域幅を制限できます。
一般に、Windows ではサード パーティ製のソフトウェアでそれを行う必要がありますが、ユース ケースは非常にエッジの効いたものです。
最も簡単な方法は、イーサネットポートをいじるのではなく、出力自体を調整する実際の送信者で構成できる出力デバイスを作成することだと思います。