帯域幅管理スクリプトは tc 命令を呼び出します。

帯域幅管理スクリプトは tc 命令を呼び出します。

インターネット帯域幅を管理するためにLinuxにはいくつかのスクリプトがありますが、その機能を理解していません。

次のスクリプトの意味は何ですか?

tc qdisc add dev $IF root handle 1: htb default 256
tc class add dev $IF parent 1: classid 1:1 htb rate $max 
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:4001
echo 1 > /proc/sys/net/ipv4/ip_forward

そして:

tc class add dev $IF parent 1:1 classid 1:$(($n)) htb rate "$1"kbps ceil "$2"kbps 
tc filter add dev $IF protocol ip parent 1:0 prio 2 u32 match ip dst "$line"/32 flowid 1:$(($n))

#ack   
tc filter add dev $IF parent 1: protocol ip prio 1 u32 match ip dst "$line"/32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:$(($n))

そして:

tc class add dev $IF parent 1:1 classid 1:256 htb rate 60kbps

ベストアンサー1

HTBは保守的ではないqdiscです。出力速度を制限します。 HTBが制限に従ってキューから削除できるよりも多くのデータがインターフェイスキューにある場合、パケットは破棄されます。

スクリプトが不完全なので、どのような役割を果たしているのかは不明です。

このインターフェイスで待機しているトラフィックはクラスに割り当てる必要があります。 1:0はqdisc、1:1、1:2、... 1:256はこのqdiscに属するクラスです。各クラスは独自の構成を持つことができます。

tc filter特定のパケットを担当するクラスを決定します。見つからない場合、qdisc定義は1:256を基本クラスに設定します。これはあなたの場合は静的に構成されます。他のすべては「動的に」構成されます(ただし、これは表示されたコードの一部ではありません)。

すべて帯域幅が保証されたターゲットホスト(個々のIPアドレス)のリストがあるようです。パケットがこれらのホストのいずれかをターゲットにしている場合は、そのホストを担当するクラスに配置されます。ターゲットIPよりも条件が多いのですが、u8、u16フィルタは探していないと理解できません。これにより、TCPとUDP、対応するポート、TCPフラグ、パケットサイズなどをフィルタリングできます。

おすすめ記事