正しく使えば非常に有益なターゲットだ。簡単に言えば、これを使用すると IPv4 ヘッダの ECN ビットをリセットできる。もう少し正確に言うと、少なくとも ECN ビットを 0 へとリセットすることができる。 ECN はネットの世界では比較的新しい規格であるため、問題を生じさせることがあるのだ。そのひとつは、 ECN が、旧来の TCP プロトコルの RFC では 0 になっていなければならないとされているふたつのビットを使用するという点。ルータやアプライアンスによっては、それらのビットが 1 になっているパケットを中継しないものがある。管理するネットワーク内で ECN 機構の何か一部分でも利用する場合、 ECN のせいで到達できないことが分かっているネットワークに対しては、そこへ向かうパケットの ECN ビットを 0 に戻す、といった使い方ができる。
ひとつのストリームの中で途中から ECN をオンにすることはできないということを憶えておいていただきたい。 RFC に反しているし、そもそもやろうとしても不可能だ。 ECN はコネクションの両端でネゴシエートされなければならない。 ECN をオンにしたとしても、もう一方のホストはその事実を知らないので、 ECN 通知に応えることはできないのだ。 |
Table 11-7. ECNターゲットオプション
オプション | --ecn-tcp-remove |
例 | iptables -t mangle -A FORWARD -p tcp --dport 80 -j ECN --ecn-tcp-remove |
説明 | ECN ターゲットの採る引数は --ecn-tcp-remove ひとつだけ。このオプションは TCP ヘッダ内の ECN ビットを取り除くよう ECN ターゲットに指示する。詳しくは上記。 |
Linux カーネル 2.5, 2.6 で機能する。 |