Login
Immutable PageDiscussionInfoAttachments

Please use a more selective search term instead of ""

Clear message
ytoku/daily-record/2011-02-09

MMA

MTU

二段重ねのトンネル(IPv4 over IPv6 over IPv4)のMTUが両方とも1280になっていてフラグメントが発生する件についての調査を行った。

IPv6の部分のMTUを1480に引き上げればいいのではないかと考えたが、 VPS側のFreeBSDの6to4トンネルインターフェイスであるstfがどうやら1280にしか対応していない事が判明した。 (学内はMTU1480でも通信できているように見える)

仕方ないのでIPv4 over IPv6の方でMTUを1280よりも小さく設定する事を考えたのだが、 MTUを設定しようとするとinvalid valueを言われてしまう。

$ sudo ifconfig gif1 mtu 1200
ifconfig: ioctl (set mtu): Invalid argument

gif(4)によれば

     If the outer protocol is IPv6, path MTU discovery for encapsulated pack-
     ets may affect communication over the interface.  The first bigger-than-
     pmtu packet may be lost.  To avoid the problem, you may want to set the
     interface MTU for gif to 1240 or smaller, when the outer header is IPv6
     and the inner header is IPv4.

とあり、MTUを1240以下に設定できるように思わせる記述があるのだがどうなっているのだろう。 また、gif1からIPv6アドレスを削除することも試みたが効果がなかった。 IPv6 gif(4) MTU: manpage vs src inconsistency? という話もありソースを読んでみる必要がありそうだ。

場合によってはカーネルにパッチかねぇ