ダイクストラコードを使用して、2つのホストH1とH2の間の最短経路を見つけようとしています。そのパス上のスイッチの1つに条件を設定します。条件は次のとおりです。パケットがH2に送信されると、パスが自動的に変更されます。
私はMininetを使用しています。スイッチに入力してH2に送信するパケットをフィルタリングすることにより、発信帯域幅を減らすためにtcを使用することを考えました。ダイクストラコードがパスを変更します。
質問したいのですが、(tc qdisc)を使用して、特定のリンクでの送信帯域幅の使用を制御できますか? tcは物理リンクまたはシミュレートされたリンクに影響しますか?
はい、tc
はこのために設計されています。 TCは、あらゆるタイプのインターフェース(物理およびソフトウェア)で機能します。最も単純なキュースケジューラはhtb
(階層トークンバケット)です。
典型的なシンプルな構成:
子クラスの要約帯域幅は、親クラスの帯域幅を超えてはなりません。そうしないと、スケジューラーは正確ではなくなります。
インターフェースの帯域幅は100Mbit/sだと思います。したがって、構成のコマンドは次のようになります。
tc qdisc add dev enp4s0f0 root handle 1: htb default 10
tc class add dev enp4s0f0 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit quantum 15000
tc class add dev enp4s0f0 parent 1:1 classid 1:10 htb rate 80Mbit ceil 100Mbit quantum 15000
tc class add dev enp4s0f0 parent 1:1 classid 1:11 htb rate 10Mbit ceil 10Mbit quantum 15000
tc class add dev enp4s0f0 parent 1:1 classid 1:12 htb rate 10Mbit ceil 100Mbit quantum 15000
tc qdisc add dev enp4s0f0 parent 1:10 handle 10: sfq
tc qdisc add dev enp4s0f0 parent 1:11 handle 11: sfq
tc qdisc add dev enp4s0f0 parent 1:12 handle 12: sfq
クラスの階層を構成したら、分類を構成する必要があります。さまざまな機能とさまざまなレベルのユーザーフレンドシップを備えた分類子には多くの種類があります。分類子は、設定された基準によってパケットをチェックします。パケットが一致した場合、クラスはパケットに割り当てられます。
tc filter add dev <iface> parent 1: prio 1 protocol ip 800::1 u32 match dst ip 192.168.10.2/32 classid 1:11
tc filter add dev <iface> parent 1: prio 1 protocol ip 800::2 u32 match dst ip 192.168.10.0/24 classid 1:12
この小さな例では、ホスト192.168.10.2
へのパケットはクラス1:11に渡され、その結果、10Mbit/sに制限されます。 192.168.10.0/24
サブネットから他のアドレスへのパケットは、クラス1:12に渡されます。他のすべてのパケットはデフォルトクラス(1:10)に渡されます。
これは、tc
ツールの使用のクイックスタートポイントです。
質問がある場合は質問してください。