はじめに
本記事では、GARPとARPの違いについて解説します。
よく似ているので混同しがちですが、役割の違いを意識すれば理解しやすいと思いますのでご参考ください。
そもそもARPとは?
ARPはAddress Resolution Protocolの略で、
IPアドレスに対応したMACアドレスをネットワーク上のホストに対して問い合わせを行うプロトコルです。
ARPによって判明したMACアドレスはIPアドレスに関連付けられ、ARPテーブルにキャッシュされます。
GARPとARPの違い
GARPはGratuitous*1 ARPの略で、ARPの一つです。用いるパケットも同じです。
では、何が違うのでしょうか。
一言で言えば、
ARPは通信したい相手のIPに対して問い合わせを行うのに対して、
GARPは自分自身のIPに対して問い合わせを行います。
ARPの役割は分かりやすいです。IPアドレスは知っているものの、そのIPもMACアドレスが分からない。
よって、IPアドレスの持ち主を問い合わせ、持ち主からMACアドレスの返答を受ける。
ところが、GARPの役割は少し分かりにくいです。
なぜならGARPを出す機器は当然自分のMACアドレスを知っています。
意味のなさそうに見えるGARPの役割は大きく二つあります。
1. 同一ネットワーク内のIPアドレスの重複を判定
自分のIPアドレスでARPの問い合わせを行った際にネットワーク内から返信があれば、それはIPアドレスの重複として検知可能です。
2. 同一ネットワーク内のARPキャッシュを更新
ARPキャッシュの更新という難しい言い方をしていますが、要は自分のMACアドレスやIPアドレスが変更になった場合にそれを他のホストに通知することが可能です。
デバイスによっては数分間情報がキャッシュされることもあるため、GARPを送信して更新するという流れです。
具体例としては、冗長構成を取っているファイアウォールのプライマリ側が落ちた場合などに、セカンダリにIPアドレスを引き継いだとしても周りの機器はそのIPに対応するMACアドレスはプライマリ側と思っているのでそれを改める必要がある、といったケースです。
IPアドレスの持ち主であるセカンダリ側のファイアウォールが、自分のMACアドレスをブロードキャストで通知します。
それを受け取ったほかのデバイスは、そのIP宛の通信はセカンダリ側にパケットを転送することが可能になります。
以上、ご参考になれば幸いです。
*1:gratuitous:理由のない,不必要な