第9章 Error and Control Messages (ICMP)

第9章 Error and Control
Messages (ICMP)
ネットワークの制御情報を伝える手段
ICMP (1)

ルータで問題が生じたとき
– ルーティング表の異常,送出不可,輻輳

ホスト,ルータが制御(エラー)情報を通信する機構
– レポート(ルータ),到達可能性のテスト(ホスト)

ホスト,ルータ は自律分散的に動く.
– 正しい動作をしないマシンがあるかもしれない.
– 通信路,プロセッサの失敗,host がない.
– Ttl 時効,ルータの過負荷

どこが悪いかも分からない.テストもしたい.
ICMP (2)

internet control message protocol
ICMP
– 通常のデータグラムのデータ部分に乗って送
られる.
– 相手は応用プログラムではなくネットワークソ
フトウェアである.
– ホスト  ルータ, ホスト  ホスト
エラーの報告


誤りの回復を規定するものではない.
問題となるデータグラムの発信アドレスに
報告
– 途中のルータに届けるものではない.(不可
能)

誤りの除去はホストの管理者とネットワー
クの管理者
ICMP メッセージの配送

通常のユーザの通報と同じ方法で配送
– 物理ネットワーク間を経由して運ばれなくては
ならないので,データグラムを使用
– 特別な信頼性,優先度を持たない.

ICMPのエラーはICMP通報を出さない.
– ICMP自体が紛失したり誤りになりやすい.

高位のプロトコルではなく,IPの一部として
必須.
ICMP メッセージ Format

Type(8), code(8), checksum(16)
– 誤り報告には問題のIPデータグラムのチェック
サム

報告には問題のIPデータグラムの
– HDR + 64データビット
ICMP Type
Type Field
0
3
4
5
8
11
12
13
14
17
18
ICMP Message Type
Echo Reply
Destination Unreachable
Source Quenching
Redirect (change a route)
Echo Request
Time Exceeded for a Datagram
Parameter Problem on a Datagram
Timestamp Request
Timestamp Reply
Address Mask Request
Address Mask Reply
到達可能性検査

echo request/reply
– すべてのマシンが応じる


(/usr/etc/ping)
data はコピーして返す
reply の意味
– srcマシンはip datagram を正しい経路で送出
可能
– 途中のルータは正しく動作
– dstマシンはICMPとIPのソフトウェアは動作
– 戻り道の経路でルータが正常
到達できない (destination unreachable)

Best-effort→ルータは中継、配送のできな
いときは必ず報告(勝手に廃棄しない)
– ハードウェアの一時的な故障
– アドレスが実在しない
– ルータがルートを持たない

すべての不配達を通知するわけではない.
たとえば ethernet では ack がないので,相
手に受け取られたかどうかわからない.
Destination Unreachable
Code Value
0
1
2
3
4
5
6
7
8
9
10
11
12
Meaning
Network Unreachable
Host Unreachable
Protocol Unreachable
Port Unreachable
Fragmentation Needed and DF set
Source Route Failed
Destination network unknown
Destination host unknown
Source host isolated
Communication with destination network
administratively prohibited
Communication with destination host
administratively prohibited
Network Unreachable for type of service
Host unreachable for type of service
輻輳とデータグラムの流量制御

資源をあらかじめ予約できない.
– connectionless
– 輻輳 (congestion) → source quenching

捨てるたびに送る.

どのソースをquench するか
アルゴリズム
– すべての無視したデータグラムについて?
– もっともたくさん送ってくるマシンに?
– 捨てる前に quench ?
流量制御 (続き)

緩める quench はない.
– Quench を受けなくなるまで速度を下げる.
– 来なくなると徐々に上げる.
ICMP


経路変更要求 ルータの迂回要求
ループの検出 time exceeded
– ttl = 0
– fragment reassembly time over run
最初の fragment からの経過時間

timestamp ・・ 時刻の問い合わせ
– 発信元 →受信・返信→発信元
– roundtrip 遅延の推定
– 平均の操作が必要? (best-effort)

subnet mask の request/reply
キーポイント

ICMPは “どのように” 送るかよりも,“どの
タイミングで” 送るか,のほうが重要である.

文献
– RFC792 (ICMP), 896, 1016 (src quenching),
950 (subnetmask), 956-958 (clock
synchronize)