GARP(Gratuitous ARP : RFC5227)の機能や仕組み 〜Linuxでの動作やciscoでの設定〜

GARPの機能

GARP(読み方:ジーアープ)またはGratuitous ARP(読み方:グラチュータスアープ)とは、ARPキャッシュの期限切れ以外のタイミングで、自発的にARPを送る機能です。GARPの送信タイミングは以下の2つです。

  • IPアドレス付与時にIPアドレス重複が無いかを確認する (RFC5227)
  • IPアドレス変更時やMACアドレス変更時に、周りの機器のMACアドレステーブルやARPテーブルを更新(アップデート)する

IPアドレス付与時にIPアドレス重複が無いかを確認する

端末に新しくIPを設定し有効化する直前のタイミングで「このIPアドレスを持つ端末のMACアドレスは何?」とARP要求を送出します。以下のようなARP要求になります。これに誰からか返信があれば、IPが重複しているということになります。

スポンサーリンク

なお、ARPの仕様として、ARP要求を受信した端末はそのARP要求の情報を元にARPキャッシュを更新するため、Sender IP Address のFieldに重複の確認をしたいIPアドレスを入れてBroadcastしてしまうと、周りの端末に使っていいか判明していないIPアドレスをARPキャッシュに入れてしまう可能性があるため、Sender IP AddressのFieldは「0.0.0.0」にしなければならない(MUST)とRFC5227で定められています。

一方、Target Hardware Addressは利用されない無視されるFieldなので、0000:0000:0000にすべき(Should)、と、MUSTよりは弱い表現で定められています。実際、このあたりはOSによって若干実装が異なるようです。

自身のIPアドレスもしくはMACアドレス変更時に、周りの機器へMACアドレステーブルやARPテーブルの更新を促進する

このケースではARP要求無しに、いきなりARP応答をBroadcastします。前者の時と違い、この変更は確定的に正しい情報であるため、ARP要求でも構いませんし、ARP応答でも構いません(ARP応答だけでなく、ARP要求を受信した機器もARPテーブルを更新する仕様)。

スポンサーリンク

LinuxではIPアドレス変更時には『アドレス重複確認用のGARP』の後に『MAC/ARPテーブルの更新を促進するGARP』がARP要求のものとARP応答のものの2種類が出るようです。

このタイプのGARPは例えば以下のケースで必要になります。

  1. VRRPやHSRPなどのActive機、Standby機が切り替わり、仮想MACアドレスの接続先ポートが変わったとき(VRRPやHSRPでは仮想IPも仮想MACも引き継ぐがMACアドレステーブルを更新する必要があるため、GARPを飛ばして更新させる)
  2. スタックを組んでいるL3スイッチのうち1台が故障し代表MACアドレスが変わり、それに付随してVLANインタフェースに紐づくMACアドレスが変わったとき
  3. IPアドレスが変更となったとき

1は、ARPテーブルの更新ではなく、MACアドレステーブルの更新のみが目的であることに注意して下さい。

スポンサーリンク

2はARPテーブルの更新、およびMACアドレステーブルの更新が目的です。

このように、MACアドレスの収容ポートが変わったり、自身の保有しているIPアドレスに紐づくMACアドレスが変更した場合は、GARPにより、MACアドレステーブルの更新やARPキャッシュテーブルの更新を促すべきです。

GARPのコマンド

本来、常に有効化されるべきですが、Ciscoでは一応、有効無効のコマンドを用意しています。

有効化コマンド

ip arp gratuitous

無効化コマンド

no ip arp gratuitous

またCiscoでは、スタックのマスターが壊れた際のMACアドレス変更時には、5分間数秒置きにGARPを出すような仕様になっています。これはコマンドでの変更は不可です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする