- PR -

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

投票結果総投票数:9
TCP 0 0.00%
IP 8 88.89%
LINUX 1 11.11%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
まえっち
会議室デビュー日: 2008/02/07
投稿数: 13
投稿日時: 2008-02-07 16:14
linuxと組み込みボード間でのTCP/IP通信時に、送信パケットがMTU(MSS)以下なのに
分割されてしまいます。
組み込みボード側のMTUは1500となっており、linux側も1500にしています。
Etherealでキャプチャすると、1024バイトで分割されてしまっています。
(1100バイトのデータを送信すると、1024バイトと76バイトに分割)

なぜ分割されてしまうのでしょうか?
Linuxのカーネル等の設定で分割されずに送信できるようになるのでしょうか?

ちなみに、
linux⇔Windows、組み込みボード⇔Windowsで確認したところ、分割されずに送信していました。

以上、ご教授お願い致します。
BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2008-02-07 21:41
詳細状況が判り難いです・・・。

引用:
まえっちさんの書き込み (2008-02-07 16:14) より:

linuxと組み込みボード間でのTCP/IP通信時に、送信パケットがMTU(MSS)以下なのに
分割されてしまいます。
組み込みボード側のMTUは1500となっており、linux側も1500にしています。

ちなみに、
linux⇔Windows、組み込みボード⇔Windowsで確認したところ、分割されずに送信していました。


Q1.「組み込みボード」と書かれているものは具体的には何ですか?
Q2.「linuxと組み込みボード間」とありますがこの間にはLANケーブル以外のノードが
  存在していますか?
Q3.linuxの種類とバージョンも提示願えませんか?

以上の3点について補足説明を願います。
まえっち
会議室デビュー日: 2008/02/07
投稿数: 13
投稿日時: 2008-02-08 23:40
返答ありがとうございます。
詳細状況を記載します。すみません。

Q1.「組み込みボード」と書かれているものは具体的には何ですか?
 ⇒具合的にはカーナビです。カーナビはFORMA網で接続しています。

Q2.「linuxと組み込みボード間」とありますがこの間にはLANケーブル以外のノードが
  存在していますか?
 ⇒Linux⇔ルータ⇔Forma網⇔カーナビです。

Q3.linuxの種類とバージョンも提示願えませんか?
 ⇒LinuxはRedhat Linux ES4 UPDATE4です。

以上、よろしくお願いいたします。
BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2008-02-09 11:51
補足説明ありがとう。

引用:
まえっちさんの書き込み (2008-02-07 16:14) より:

ちなみに、
linux⇔Windows、組み込みボード⇔Windowsで確認したところ、分割されずに送信していました。



引用:

まえっちさんの書き込み (2008-02-08 23:40) より:

Q2.「linuxと組み込みボード間」とありますがこの間にはLANケーブル以外のノードが
  存在していますか?
 ⇒Linux⇔ルータ⇔Forma網⇔カーナビです。


それぞれの状況が違うように思いますが、如何でしょうか?
→ 当初の「組み込みボード⇔Windows」の方は「Windows⇔ルータ⇔Forma網⇔カーナビ」
  でしょうか?
  これでパケット分割が行われないようなら、詳細調査する価値はあると思います。
  通信の起点(最初にセッション開設する側)はどちら(Linux or カーナビ)かに
  よって起点側の通信設定を詳細調査する必要があると思います。

当初はルートが異なっていて「経路MTU探索」の仕組みが働いたのかと思いましたが
勘違いかも知れません。

# Forma網はDoCoMoに確認するしかありませんが、ルータのMTUは確認済みですよね?
TAD
ベテラン
会議室デビュー日: 2007/03/20
投稿数: 52
お住まい・勤務地: 海のそば
投稿日時: 2008-02-09 18:05
MTUとは、"Maximum" Transmission Unit で、あくまで最大値だから設定値以下で
パケットが分割されることは無いとも言えない、というのはだめですか。

で、TCPレベルでパケットサイズに依存するような作りはまずいのでは、というような話が
最近あったなぁ...
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42762&forum=11&start=0
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2008-02-09 19:55
引用:

TADさんの書き込み (2008-02-09 18:05) より:
MTUとは、"Maximum" Transmission Unit で、あくまで最大値だから設定値以下で
パケットが分割されることは無いとも言えない、というのはだめですか。


ネットワーク管理者の視点で考えると、それで済ませるわけには行かないと思う。

パケットが分割して送信されれば、それだけデータ量が増えてネットワークの負荷も高まる。その分広い大域を持つ回線を用意する必要が出るし、データ量に応じて金額が変わるようなサービスだと運用コストに直結する由々しき問題。設定ミスでパケットが分割されているなら原因を特定して修正する必要があるし、あるいは網の都合でMTUを1024する必要があるならサーバの設定もそれに合わせたほうがネットワークの負担を減らすことが出来る。

私はDoCoMo網のMTUサイズを知らないので、分割されるべくして分割されているのか、設定上の問題があるのか私には分からないけどね。
まえっち
会議室デビュー日: 2008/02/07
投稿数: 13
投稿日時: 2008-02-12 10:58
皆さん、ご回答ありがとうございます。

BackDoorさん
 → 当初の「組み込みボード⇔Windows」の方は「Windows⇔ルータ⇔Forma網⇔カーナビ」
  ⇒説明不足ですみません。上記の通りルータ、Forma網を通しています。

# Forma網はDoCoMoに確認するしかありませんが、ルータのMTUは確認済みですよね?
 ⇒現在確認中です。確認次第、ルータのMTUの値と合わせてやってみます。


いろいろLinuxのカーネル設定を変更してみたのですが、全てダメでした。。。
Linuxの設定の問題ではないのでしょうか?

カーナビからのMTU(MSS)の値は1500(1460)で問題ないので、どこでパケット分割の最大値が決められているか分かりません。やはりルータの設定を疑うしかなくなるのですが。。。
まえっち
会議室デビュー日: 2008/02/07
投稿数: 13
投稿日時: 2008-02-14 14:54
未だに解決できません。。。

1点教えていただきたいのですが、
通信相手のウィンドウサイズが小さすぎるパケットは、1024バイトに丸め込まれる
ような事がありました。

まさしくこれだと思ったのですが、Linuxで上記の設定を変更する方法が分かりません。。。
UNIXだと、「TCP_ROUND_MSS」を「0」にすればいいらしいのですが。。。

どなたかご教授願います。

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