- PR -

TCP/IPのパケット分割について、パケットがMTU以下なのに分割される

投票結果総投票数:9
TCP 0 0.00%
IP 8 88.89%
LINUX 1 11.11%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
TAD
ベテラン
会議室デビュー日: 2007/03/20
投稿数: 52
お住まい・勤務地: 海のそば
投稿日時: 2008-02-14 16:17
なんだかよく似た事例を見つけました。

http://oshiete1.goo.ne.jp/qa3485247.html
まえっち
会議室デビュー日: 2008/02/07
投稿数: 13
投稿日時: 2008-02-14 16:56
引用:

TADさんの書き込み (2008-02-14 16:17) より:
なんだかよく似た事例を見つけました。

http://oshiete1.goo.ne.jp/qa3485247.html




ありがとうございます。
同じ現象ですね。

結論が出て欲しかったです。。。

以下、要点をまとめます。
1、Linux→ルータ→カーナビに1300バイトのデータを送信すると、
  1024バイトで分割が行われてしまう。
2、Linuxとカーナビの接続時のMSSは1460バイトで接続されている。(Ethrealで確認)
3、ウィンドウサイズは2048等1024より大きい値になっている(Ethrealで確認)

 ⇒Linuxの設定で分割されずに送信する方法がわからない。
  なぜ分割されるのかも分からない。

UNIXでは、通信相手のウィンドウサイズが小さい場合に、イーサネット・パケットサイズが1024に丸め込まれるらしい。
それは、TCP_ROUND_MSSのフラグをオフにすればOK

解決方法
 1、カーナビのウィンドウサイズを大きくする
   ⇒期間、規模、コスト的に無理
 2、Linuxの設定で分割されずに送信可能にする。
 3、上記のUnixの設定と同様にLinuxに設定する。

まとめてはみたものの、解決できなさそう。。。
blunder
ベテラン
会議室デビュー日: 2003/09/11
投稿数: 65
投稿日時: 2008-02-18 11:39
RFC 1191 Path MTU Discovery
には下記の記述があります。セグメントサイズを1024バイトにして、ウィンドウサイズをその
倍数にするようなやり方は過去には普通だったのでしょうかね(このRFCの日付は1990年)。
参考までにRFCから引用しておきます。
最近のOSの実装がどうなっているか気になりますね。

念のためですが、routeコマンドでMSSの設定、表示ができるのはご存知ですよね?

コード:
6.4. TCP layer actions
   ......

   TCP performance can be reduced if the sender's maximum window size is
   not an exact multiple of the segment size in use (this is not the
   congestion window size, which is always a multiple of the segment
   size).  In many system (such as those derived from 4.2BSD), the
   segment size is often set to 1024 octets, and the maximum window size
   (the "send space") is usually a multiple of 1024 octets, so the
   proper relationship holds by default.  If PMTU Discovery is used,
   however, the segment size may not be a submultiple of the send space,
   and it may change during a connection; this means that the TCP layer
   may need to change the transmission window size when PMTU Discovery
   changes the PMTU value.  The maximum window size should be set to the
   greatest multiple of the segment size (PMTU - 40) that is less than
   or equal to the sender's buffer space size.


スキルアップ/キャリアアップ(JOB@IT)