SSブログ

【Ubuntu 9.10】 MTUの調整方法とUbuntu 9.10での設定方法   [ubuntu]

つい先日、あるQ&Aサイトで「MTU」に関する質問がありました。

そこで、そういえば私もMTUは設定してないな~と思い始めて調整してみることに。

大体、MTUとは何かというと、レイヤ2において1個のフレームで送れるデータの最大値のことです。って・・・多分、通信関係を知らない人は、これで分かれば苦労しない。知ってる人は、この後の説明は読む必要は無いと思います。いきなり続きを読むに跳んでもらってよいと思います。

大抵のパソコンでに付いているLANカード(ボード)で通信をする場合、Ethernetフレームと呼ばれる中にIPパケットが乗っていきます。Ethernetがレイヤ2に相当するので、IPパケットの最大サイズということです。その中にさらにTCPパケット(又はUDPパケット)が乗っています。さらにTCPの中にメールとかホームページなどのアプリケーションのデータが乗っていくわけです。

なぜ、そんな構造になっているかというと、少なくとも相手先アドレスや送り元アドレスが分からないと送れないのと、送信がちゃんと出来たか調べたりする部分が必要だからです。で、その相手アドレスなどが入っている部分をヘッダーと呼びます。

で、おおざっばに書くと下記のようになります。最後の[F]はEthernetフレームの終わりの部分です。

[Ether ヘッダー][IP ヘッダー][TCP ヘッダー][ユーザーデータ] [F]

この中の青色の部分の最大の大きさがMTUになります。最近は通信するデータサイズが大きいのでEthernetの規格の最大値である1500バイトがいいのですが。。ADSLや光ファイバーを利用したりすると通信方式の都合などによって1500バイトでは大きすぎて、 通信網(NTTさんとか)を通過するときは1430~1460位でしか送れません。1500バイトで送ると、再送要求されて、分割して送るハメになります。ということは、通信が遅くなります。

なので、フレッツ光やADSLなどの回線を使用してメールやホームページを見る機会の多い人は(家庭でインターネットする人はほとんど当てはまると思います)、自分のパソコンのMTU値を自分が使用している回線業者のMTU値に合わせてしまった方が通信速度が早くなる可能性があります。それと、分割が行われないので再送回数が低くなることも期待できます。

それでは、具体的なやり方に興味ある方は「続きを読む」を押してください。

※ここからはUbuntu 9.10でのやり方と記述します。
※特に、MTUの設定の方はバージョンによって違う可能性がありますので、ご注意下さい。

<< 現在のMTU の調べ方 >>

端末から下記を入力してください。

ubuntu:~$ ifconfig

すると、下記の様に出るはずです。

eth0      Link encap:イーサネット  ハードウェアアドレス xx:xx:xx:xx:xx:xx 
          inetアドレス:ccc.ccc.ccc.ccc  ブロードキャスト:ccc.ccc.ccc.ccc  マスク:ccc.ccc.ccc.ccc
          inet6アドレス: xxxx::xxxx:xxxx:xxxx:xxxx/xx 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:590 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:619 エラー:0 損失:0 オーバラン:0 キャリア:3
                    ~以下略~

xxxxやcccで書いた部分は人によって違うと思います。(各アドレスなので・・・)
重要なのは赤字で書いたMTU:1500の部分です。ubuntu 9.10をデフォルトで使用しているとこの値となってるはずです。

<<適切なMTUの調べ方>>

端末からpingコマンドで調べます。ただ、pingはTCP(UDP)を使用せずICMPを使用します。

[IP ヘッダー][ICMPヘッダー][データ]

の形式になります。 pingコマンドで指定するデータの大きさはオレンジ色で記述した部分なので、IPヘッダーとICMPヘッダーを加算したものがEthernetで送るデータとなります。

IPヘッダーは20バイト、ICMPヘッダーは8バイトなので、合計28バイト。
従って、MTU=pingで指定したサイズ+28バイト となります。

上記を踏まえた上で、例えば自分のプロバイダのホームページなどに下記のようにpingを入力します。(今回はubuntuのリポジトリをターゲットにしました。)

ubuntu:~$ ping -c 1 -M do -s 1410 archive.ubuntulinux.jp

オプションの意味は、-cがパケットの数、-s がサイズ、-M doは断片化せずに送れという意味です。

結果は、

PING archive.ubuntulinux.jp (xxx.xxx.xxx.xxx) 1410(1438) bytes of data.
1418 bytes from ccccccccccc.cccc.cccc.cccc.ne.jp (xxx.xxx.xxx.xxx): icmp_seq=1 ttl=50 time=27.1 ms

--- archive.ubuntulinux.jp ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 27.115/27.115/27.115/0.000 ms 

赤字で書いたところから受け取ってくれていることがわかります。次に

ubuntu:~$ ping -c 1 -M do -s 1411 archive.ubuntulinux.jp

として、1つ値を大きくして入力すると、

PING archive.ubuntulinux.jp (xxx.xxx.xxx.xxx) 1411(1439) bytes of data.
From HOSTNAME (xxx.xxx.xxx.xxx) icmp_seq=1 Frag needed and DF set (mtu = 1438)

--- archive.ubuntulinux.jp ping statistics ---
0 packets transmitted, 0 received, +1 errors

赤字のところで受け取ってくれず、エラーだと分かります。さらに青字のところにmtu=1438と書いてあります。
計算でも、MTU=pingの指定サイズ+28なので、

MTU=1410+28=1438

となり MTU = 1438 が最適であるということが分かります。ちなみに、私はNTT西日本のフレッツ光プレミアムを使用しているのですが・・・

http://www.nttwest-fc.com/faq/faqdet.php?faq_code=1152

と、書いてありました。なので調べるまでもないのですが念のため・・・BフレッツやADSLは1454と書いてありますね。フレッツ光ネクストは1454みたいです。自分の使用している回線業者のホームページで確認してみて下さい、(なぜ、フレッツ光プレミアムだけ少し小さい・・・??)

他の回線使用しているなどでで分からない場合は、上記に示した失敗したコマンド例のように、一回だけ1500バイトのサイズでpingを打てば青色で書いたように表示されますので、それを用いればよいと思います。

 

<<Ubuntu 9.10での設定>>

実際に、Ubuntuに反映させるのですが、

ubuntu:~$ sudo ifconfig eth0 mtu 1438

と入力すれば、すぐに反映されます。ただこれでは再起動する度に入力しなくてはなりません。

それで調べてみたところ、バージョンやディストリビューションの違いで色々な方法が書いてあるのですが、Ubuntu 9.10の場合は、下記のサイトの方法が良いと思われます。

http://monespaceperso.org/blog-en/2009/02/26/how-to-change-the-default-mtu-of-a-network-card-on-ubuntu/

英語なので、肝心な部分を抜き出すと、

ubuntu:~$ sudo gedit /etc/network/if-up.d/mtu

として、mtuと言うファイルを /etc/network/if-up.d ディレクトリに作成すると同時に、mtuの中身に下記の2行を記述します。(エディタをお好きなのを) 当然、青文字のところは調べたMTUの適正値を入れます。

----

#!/bin/sh
ifconfig eth0 mtu 1438

-----

そしてセーブした後、実行permissionを立てるために、

ubuntu:~$ sudo chmod 755 /etc/network/if-up.d/mtu

とすれば設定終了です。再起動をしても、

ubuntu:~$ ifconfig

と入力してMTU値が自分が /etc/network/if-up.d/mtu に作成したMTU値になってるか確認してください。

以上です。

Rwinの方は??と聞かれたら・・・とりあえず(((((・_・;) 逃げます。
タグ:MTU LAN linux ubuntu
nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。