私のインターネット接続は次のようになります:
インターネット<-128kbpsリンク-> Ciscoルーター(パブリックIP)<-LAN-> Linuxルーター/サーバー(パブリックIP)<-LAN->通常のPC(パブリックIP)
Ciscoルーター:
Linuxルーター
通常のPC(4台):
Linuxルーターでiptablesパケットロギングを有効にしたところ、次のことがわかりました。
では、次のような方法でトラフィックをシェーピングするようにLinuxルーターを構成するにはどうすればよいですか。
各PCの各発信パケットを(IPテーブル--set-xmarkオプションを使用して)すでにマークしています。
... 等々。
各着信パケットも、16から始まるこのスキームを使用してマークされます。
この長い質問をお詫びしますが、tcコマンドを使用してこれを設定することを諦めました。トラフィックシェーピングに関するドキュメントが少なすぎて、次にどこに行くべきかわかりません。
Eth0がCiscoルーターへの100メガビットイーサネット接続であると仮定すると、次のようになります(そうではありませんか?)。
tc qdisc add dev eth0 root handle 1: htb default 2
# 100 mbps
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
# To LAN traffic
tc class add dev eth0 parent 1:1 classid 1:2 htb rate 99000kbit ceil 100mbit
# IN traffic
tc class add dev eth0 parent 1:1 classid 1:3 htb rate 120kbit
# OUT traffic
tc class add dev eth0 parent 1:1 classid 1:4 htb rate 120kbit
# IN “bands” (one for each PC)
tc class add dev eth0 parent 1:3 classid 1:10 htb rate 24kbit ceil 120kbit
tc class add dev eth0 parent 1:3 classid 1:11 htb rate 24kbit ceil 120kbit
tc class add dev eth0 parent 1:3 classid 1:12 htb rate 24kbit ceil 120kbit
tc class add dev eth0 parent 1:3 classid 1:13 htb rate 24kbit ceil 120kbit
tc class add dev eth0 parent 1:3 classid 1:14 htb rate 24kbit ceil 120kbit
# OUT “bands” (one for each PC)
tc class add dev eth0 parent 1:4 classid 1:15 htb rate 24kbit ceil 120kbit
tc class add dev eth0 parent 1:4 classid 1:16 htb rate 24kbit ceil 120kbit
tc class add dev eth0 parent 1:4 classid 1:17 htb rate 24kbit ceil 120kbit
tc class add dev eth0 parent 1:4 classid 1:18 htb rate 24kbit ceil 120kbit
tc class add dev eth0 parent 1:4 classid 1:19 htb rate 24kbit ceil 120kbit
このようなものを私に得るでしょう:
+-----------------------------------------------------------+
| 100 mbits (1:1) |
+---------+------------------------+------------------------+
| 99mbits | 120 kbits In (1:3) | 120 kbits Out(1:4) |
+ (1:2) +----+----+----+----+----+----+----+----+----+----+
+---------+ PC1| PC2| PC3| PC4| PC5| PC1| PC2| PC3| PC4| PC5|
|1:10|1:11|1:12|1:13|1:14|1:15|1:16|1:17|1:18|1:19|
+----+----+----+----+----+----+----+----+----+----+
そして各バンドのために:
# PC1, IN
tc qdisc add dev eth0 parent 1:10 handle 20: prio
tc qdisc add dev eth0 parent 20:1 handle 22: sfq perturb 10
tc qdisc add dev eth0 parent 20:2 handle 23: sfq perturb 10
tc qdisc add dev eth0 parent 20:3 handle 24: sfq perturb 10
# PC1, OUT
tc qdisc add dev eth0 parent 1:15 handle 21: prio
tc qdisc add dev eth0 parent 21:1 handle 25: sfq perturb 10
tc qdisc add dev eth0 parent 21:2 handle 26: sfq perturb 10
tc qdisc add dev eth0 parent 21:3 handle 27: sfq perturb 10
+--------------------++--------------------+
| PC1 IN || PC1 OUT |
+--------------------++--------------------+
| PRIO (20:0) || PRIO (21:0) |
| | | || | | |
| Prio | Prio | Prio || Prio | Prio | Prio |
| 1 | 2 | 3 || 1 | 2 | 3 |
|(20:1)|(20:2)|(20:3)||(21:1)|(21:2)|(21:3)|
+------+------+------++------+------+------+
| SFQ | SFQ | SFQ || SFQ | SFQ | SFQ |
|(22:0)|(23:0)|(24:0)||(25:0)|(26:0)|(27:0)|
+------+------+------++------+------+------+
等々。
ルールは次のようになります
# PC1, OUT
tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 1 fw flowid 21:1
tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 2 fw flowid 21:2
tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 3 fw flowid 21:3
# PC1, IN
tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 16 fw flowid 20:1
tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 17 fw flowid 20:2
tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 18 fw flowid 20:3
等々。
提案、コメントなどはありますか? (私はその分野での経験がありません)