最小のMTUサイズとは?

IPv6では最小MTUサイズが1280と規定されているけれど,IPv4の最小MTUサイズは? そもそもIPv4の最小MTUサイズは規定されているの?
5
Ogata Yasuhiko @yogata

RFC1812にIPv4の最小MTUが576と書いているって見たんだけれど、そうじゃないような。MTUを576にしてパケットフラグメントを防ぐテクニックがあるよ、とは書いているけれど、最小MTUサイズは576バイトと明示してはいないなぁ。

2011-05-26 17:51:14
@sugentelevision

@yogata 古い話だしもう解決しましたかね。IPv4ni

2011-06-06 19:47:01
@sugentelevision

@yogata おっと、途中で... 失礼しますた。IPv4に最小MTUはないですね。

2011-06-06 19:47:53
Ogata Yasuhiko @yogata

@SugenTeleVision IPv4の最小MTUは定義されていまでんが、そもそも、MTUの最小値を576以上にすることが、受信ではMUST、送信ではSHOULDですね(RFC1122)

2011-06-06 19:54:56
@sugentelevision

@yogata それはパケットの送信ホストの制約で、リンクMTUの最小値の制限はないので、「最小MTU」が「フラグメントされない最大データグラムサイズ」とすると「IPv4では最小MTUの定義はない」ということかな、と私は解釈しています。

2011-06-06 20:08:42
Ogata Yasuhiko @yogata

@SugenTeleVision 最小MTU値の制約は,ホストにはあるがリンクにはない,というのはそのとおりだと思います.パケットを送るホストに制約がある点を受けて,(ipv4を含む)最小MTU値がある,という意図です.

2011-06-06 20:23:45
Ogata Yasuhiko @yogata

@SugenTeleVision すみません,私は発言はおかしいですね.最大MTUサイズがリンクにひもづいているのに,最小MTUサイズはホストにひもづいていると言っている.

2011-06-06 20:26:39
@sugentelevision

@yogata えぇ、そこに違和感があったので。最小MTUはあくまでリンクの属性で、IPv4no

2011-06-06 20:27:53
@sugentelevision

@yogata ぐぅ、たびたび途中ですんません。IPv4のそれはあくまでEMTU_Sという最小MTUとよくにた違うものかなーと感じたり。

2011-06-06 20:29:37
Ogata Yasuhiko @yogata

@SugenTeleVision ホストが送信するフレームサイズは,最大値がリンクによって制限され,最小値はEMTU_Sによって制限される,要は全く関連のない2つの値で制限される,と理解しました.

2011-06-06 20:33:39
@sugentelevision

@yogata はい。そして最小MTUは前者であるリンクMTUの最小値。ということですね。

2011-06-06 20:47:31
Ogata Yasuhiko @yogata

@SugenTeleVision 最小MTUサイズとホストが送る最小フレームサイズが混乱していました.最小MTUサイズはリンクMTUの最小値ですね.MTUサイズがとる範囲はリンクで決まる.一方で送信するフレームサイズの範囲はRFC1122の576バイトとリンクMTUで決まる.

2011-06-06 20:56:37
Ogata Yasuhiko @yogata

@SugenTeleVision 例えばイーサネットだと最小MTUサイズは46ですが,RFC1122によるホスト側の制約により,実効的な最小MTUサイズは576バイトになる.

2011-06-06 20:58:08
@sugentelevision

@yogata あれ? "the IP layer SHOULD use EMTU_S <= 576" なので、PMTUがわからない場合は576以下にしなさいと言っているだけで、576固定ではないですよね。

2011-06-06 21:11:41
@sugentelevision

@yogata 接続リンクのMTUが1500でも、宛先ホストまでずっと1500以上であることがわかんないなら576にする。そして接続リンクMTUが46であればEMTU_Sも46になるのではないかと思ってました。

2011-06-06 21:13:18
Ogata Yasuhiko @yogata

@SugenTeleVision 接続リンクMTUとは独立して576以下であれば何でもOKぐらいに思ってましたが,指摘の通りの方法で決めるほうが素直ですよね.

2011-06-06 21:15:12
@sugentelevision

@yogata フラグメントはそもそも送信ホストでのフラグメント(RFCのlocal fragmentation)と中継ノードでのフラグメント(RFCのfragmentation in any gateway along the path)がありますが、(cont'd.)

2011-06-06 21:24:16
@sugentelevision

@yogata 3.3.3の5,6段落を好意的に解釈するとローカルフラグメントを避けたければ、リンクMTU以下かつ576以下にすることになるんでしょうね。そうでなければ、リンクMTUが46でも576で出しても厳密には違反ではない気がします。パケット作った瞬間に分割されるだけで。

2011-06-06 21:31:21
Ogata Yasuhiko @yogata

@SugenTeleVision 読みなおしてみて思ったのは,指摘のとおり「パケット作った瞬間に分割」ということだと思います.MTUがいくつだろうと,結局のところ,ホストに設定されているEMTU_Sの大きさへとパケットを作った瞬間に分割されてしまう,ということだと思います.

2011-06-06 21:36:48
@sugentelevision

@yogata 逆では。EMTU_SはL3の話で、MTUはL2の話なので、EMTU_Sに従って作成したL3データグラムが、必要に応じてMTUに従って分割されてL2に出ていくんじゃないかと。

2011-06-06 21:39:25
@sugentelevision

@yogata 嘘つきました。おっしゃる通り。

2011-06-06 21:40:43
@sugentelevision

@yogata EMTU_S must be less than or equal to the MTU of the network interface corresponding to the source address of the datagram.を見落としてました。

2011-06-06 21:41:53
@sugentelevision

@yogata なので、EMTU_Sに分割されたデータグラムが、MTUで分割されることはあり得ないですね。

2011-06-06 21:42:21
@sugentelevision

@yogata つまり、特に好意的な解釈をしなくとも、(EMTU_S <= 576) && (EMTU_S <= MTU) ですね。

2011-06-06 21:48:32
@sugentelevision

@yogata そしてローカルフラグメントを避ける話はL4以上の話で、ローカルフラグメントできないホストはちゃんと上位層がMSS_S読んでEMTU_S以下になるようにパケットつくれと。できるなら別にいいけど、(L4以上が)作ったそばから(L3で)EMTU_Sに分割されると。

2011-06-06 21:50:39