TTLにつきまして
TTL (Time To Live) はIPパケットヘッダ内の重要なパラメータであり、TTL値により、現在IPレイヤのステータスを判断できます。
TTLは、ネットワーク上の滞在時間の長すぎるパケットをドロップすべきかどうかという指令をルータに伝えることができます。TTLが本来は時間範囲を定義するために設計され、その時間範囲を超えるとパケットがドロップされることになりますが、実際にはパケットがルータを経由した際に、TTL値から少なくとも1が差し引かれたため、通常の場合、TTL値はパケットがドロップされるまで経由したルータの数を意味しています。TTLは0になると、ルータはパケットをドロップし、パケットの送信元へICMPメッセージを送信します。
さまざまな原因により、特定の時間帯にパケットはデスティネーションへの送信は失敗になることがあります。たとえば、ルーティングテーブルの配置は間違いであれば、パケットエンドレスループが発生する可能性があります。解決策は時間を置いてからパケットをドロップし、送信元にメッセージを送信し、パケットを再送するかどうかということを決定させます。この状況が発生すると、パケットはルーティングテーブルに誤って設定されたルータにより再送されます。パケットはルータによってドロップされ、ネットワークに伝送エラーが発生する際に、再送される毎に、TTL値が0になるまで1が差し引かれます。
デフォルトTTL値は、オペレーティングシステムと伝送プロトコルの違いに応じて変化します。一般的なオペレーティングシステムにあるTCPとUDPのデフォルトTTL値はテーブル1にリストされています。
オペレーティングシステム |
TCP |
UDP |
AIX |
60 |
30 |
DEC Patchworks V5 |
30 |
30 |
FreeBSD 2.1 |
64 |
64 |
HP/UX 9.0x |
30 |
30 |
HP/UX 10.01 |
64 |
64 |
Irix 5.3 |
60 |
60 |
Irix 6.x |
60 |
60 |
UNIX |
255 |
255 |
Linux |
64 |
64 |
MacOS/MacTCP 2.0.x |
60 |
60 |
OS/2 TCP/IP 3.0 |
64 |
64 |
OSF/1 V3.2A |
60 |
30 |
Solaris 2.x |
255 |
255 |
SunOS 4.1.3/4.1.4 |
60 |
60 |
Ultrix V4.1/V4.2A |
60 |
30 |
VMS/Multinet |
64 |
64 |
VMS/TCPware |
60 |
64 |
VMS/Wollongong 1.1.1.1 |
128 |
30 |
VMS/UCX (latest rel.) |
128 |
128 |
MS Windows 95/98/NT 3.51 |
32 |
32 |
Windows NT 4.0/2000/XP/2003 Server |
128 |
128 |
テーブル1:各オペレーティングシステムのデフォルトTTL値
パケットのTTL値を参照して伝送エラーを解析する
伝送エラーがネットワークに発生した際に、我々はネットワークアナライザーでパケットのTTL値を参照し、ルータ配置の誤りまたは、上記テーブルに掲載されている他の可能な理由により、エラーをもたらすかどうか判断できます。
ここではColasoft CapsaでパケットのTTL値を確認してみましょう。
図1:Colasoft CapsaでパケットタブにあるTTL値を確認する
図1のとおり、TTL値は128です。上記リストのTTL値により、パケットは送信元からディスティネーションマシンまで経由したルータ数は255-128=127で、伝送状況は正常であることが判明できます。
注:
1.パケットが経由したルータ数を確認するために、ソースデバイスのデフォルトTTL値からキャプチャしたパケットのTTL値を差し引けばいいです。
2.ソースデバイスのデフォルトTTL値が知らない場合、パケットのTTL値より大きく、しかもパケットのTTL値に最も接近するデフォルトTTL値を使えばいいです。
3.TTLフィールドのサイズは1バイトであるため、TTLのピーク値は255です。
結論
キャプチャされたパケットのTTL値は小さすぎなら、ネットワークに伝送エラーが存在する可能性があることを表明します。TTL値をチェックすることで、ネットワークは正常であるかどうか判断できます。