第9章 Error and Control Messages (ICMP) ネットワークの制御情報を伝える手段
ICMP (1) ルータで問題が生じたとき ホスト,ルータが制御(エラー)情報を通信する機構 ホスト,ルータ は自律分散的に動く. ルーティング表の異常,送出不可,輻輳 ホスト,ルータが制御(エラー)情報を通信する機構 レポート(ルータ),到達可能性のテスト(ホスト) ホスト,ルータ は自律分散的に動く. 正しい動作をしないマシンがあるかもしれない. 通信路,プロセッサの失敗,host がない. Ttl 時効,ルータの過負荷 どこが悪いかも分からない.テストもしたい.
ICMP (2) internet control message protocol 通常のデータグラムのデータ部分に乗って送られる. 相手は応用プログラムではなくネットワークソフトウェアである. ホスト ルータ, ホスト ホスト
エラーの報告 誤りの回復を規定するものではない. 問題となるデータグラムの発信アドレスに報告 途中のルータに届けるものではない.(不可能) 誤りの除去はホストの管理者とネットワークの管理者
ICMP メッセージの配送 通常のユーザの通報と同じ方法で配送 ICMPのエラーはICMP通報を出さない. 物理ネットワーク間を経由して運ばれなくてはならないので,データグラムを使用 特別な信頼性,優先度を持たない. ICMPのエラーはICMP通報を出さない. ICMP自体が紛失したり誤りになりやすい. 高位のプロトコルではなく,IPの一部として必須.
ICMP メッセージ Format Type(8), code(8), checksum(16) 報告には問題のIPデータグラムの HDR + 64データビット
ICMP Type
到達可能性検査 echo request/reply data はコピーして返す reply の意味 すべてのマシンが応じる (/usr/etc/ping) data はコピーして返す reply の意味 srcマシンはip datagram を正しい経路で送出可能 途中のルータは正しく動作 dstマシンはICMPとIPのソフトウェアは動作 戻り道の経路でルータが正常
到達できない (destination unreachable) Best-effort→ルータは中継、配送のできないときは必ず報告(勝手に廃棄しない) ハードウェアの一時的な故障 アドレスが実在しない ルータがルートを持たない すべての不配達を通知するわけではない. たとえば ethernet では ack がないので,相手に受け取られたかどうかわからない.
Destination Unreachable
輻輳とデータグラムの流量制御 資源をあらかじめ予約できない. 捨てるたびに送る. どのソースをquench するか connectionless 輻輳 (congestion) → source quenching 捨てるたびに送る. どのソースをquench するか アルゴリズム すべての無視したデータグラムについて? もっともたくさん送ってくるマシンに? 捨てる前に quench ?
流量制御 (続き) 緩める quench はない. Quench を受けなくなるまで速度を下げる. 来なくなると徐々に上げる.
ICMP 経路変更要求 ルータの迂回要求 ループの検出 time exceeded timestamp ・・ 時刻の問い合わせ 経路変更要求 ルータの迂回要求 ループの検出 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)