ICMP(Internet Control Message Protocol)その4
目次
送信元抑制(Source Quench)
ICMPタイプ4は送信元抑制(Source Quench)メッセージです。コードは必ず0となります。
送信元抑制メッセージは、ネットワーク上を流れるデータを調節するフロー制御を行うために利用します。
たとえば、ルータがパケットを受け取るといったんメモリ上に格納してからルーティングなどの処理を行うことになります。でも、たくさんたくさんパケットがやってくると、メモリには限りがあるのでいっぱいになってしまうかもしれません。もしも、メモリがいっぱいになってしまうとそれ以上のパケットを受け付けることができなくなり、パケットを捨ててしまいます。パケットが捨てられると、またそのパケットを再送する・・・でも、やっぱりメモリがいっぱいなのでまた捨てる・・・また再送する・・・という悪循環でさらにネットワークが混雑してくる可能性があります。
そこで、「もう、メモリがいっぱいになるからちょっとデータを送るのをゆっくりにして!」ということを教えるためにタイプ4送信元抑制メッセージを送信しています。
フロー制御するかどうかは・・・
ただ、送信元抑制メッセージを受け取ったからといっても、必ず送るデータを少なくするとは限りません。メッセージを受け取ったコンピュータの判断になります。きちんとフロー制御するようなになっていればデータを送るのをゆっくりにしますが、もしフロー制御の設定などされていなければ、送信元抑制メッセージを受け取ったとしても何も処理しません。送信元抑制メッセージの役目はあくまでも、ネットワークの混雑や処理の過負荷を通知するだけです。
フロー制御の仕組みとして、TCPを使っているのならばウィンドウサイズを小さくして、徐々に元に戻していく方法があります。どのようにウィンドウサイズを小さくして、どのように元のサイズに戻していくかによって、「スロースタート」と「即時再転送」というものがあります。
「スロースタート」はウィンドウサイズを一気に1にします。その後、指数関数的にウィンドウサイズを増やしていきます。「即時再転送」では、ウィンドウサイズを半分に減らします。その後、ウィンドウサイズを1ずつ増やしていくきます。スロースタートを使うと、いきなり転送効率が下がってしまうので、即時再転送を利用することのほうが多いようです。