GARPとは(Gratuitous-ARP 機能・動作と利用場面)

GARPとは(Gratuitous-ARP 機能・動作と利用場面)

GARP(Gratuitous-ARP/グラチューイタスアープ)について説明します。

通常のARPに関しての説明は、下記を参照してください。

目次

GARP(Gratuitous-ARP/グラチューイタスアープ)とは

概要

GARP(Gratuitous-ARP/グラチューイタスアープ)とは、IPアドレスの利用有無の確認や周辺機器のARPテーブル・キャッシュのクリアするために利用されます。ネットワーク機器では、冗長化された機器がIPアドレスを引き継ぐ際に利用されます。

「gratuitous」は、「余計な」や「無償の」という意味や「自発的に与えられる」という語源があります。

GARPの種類

GARPには目的別に以下のような種類があります。

種類利用目的の例利用機器の例
GARP冗長系切替時の周辺機器のARPテーブル・MACアドレステーブルの更新ネットワーク機器等
ARP Probe自機器に設定しようとしているIPアドレスの未利用確認Window端末等
ARP AnnouncementIPアドレスを利用する旨の通達
(周辺機器のARPテーブル・MACアドレステーブルの更新)
Window端末等

ProbeとAnnouncementについては、RFC5227(ACD – Address Conflict Detection)で議論されており、純粋なGARPではない可能性はあるのですが、ここでは”広義のGARP”として記載しています。

 “Shouldn’t ARP Announcements be performed using gratuitous ARP Reply packets?”
「無償のARP応答パケットを使用してARPアナウンスを実行すべきではないか?」

RFC 5227 – IPv4 Address Conflict Detection
RFC 5227 – IPv4 Address Conflict Detection 日本語訳

GARPの利用場面とパケット詳細

冗長系切替り時のARPテーブル・MACアドレステーブル更新

HSRPやVRRP等で、冗長系の切替りが発生した場合に、新しくActiveとなったルーターがGARPを送信します。これにより、周辺機器のARPテーブル・MACアドレステーブルを更新することで、通信経路の切り替えを行います。

HSRPの切替りやGARP送信タイミングの詳細は、下記を参照してください。

STEP
ネットワーク構成

下記のネットワーク構成を例に説明します。

・Router1とRouter2がHSRPで冗長化されています。
・Router1がHSRPのActiveルーターとなっています。
・HSRPのVIP(192.168.1.254)のMACアドレスは、「00:00:0c:07:ac:fe」です。
・SwitchのMACアドレステーブルでは、HSRPのVIPのMACアドレスは、「Gi0/1」と紐付いています。

STEP
HSRP切替り(Router1で障害発生)

Router1で障害が発生すると、HSRPのActiveルーターがRouter2に切り替わります。

STEP
GARP送信(Router2からブロードキャスト)

Router2からGARPをブロードキャストで送信します。※GARPパケットの詳細は後述します。

STEP
SwitchのMACアドレステーブルが更新され、経路切り替わり

GARPを受け取ったSwitchのMACアドレステーブルが更新され、通信経路が切り替わります。

GARPパケットの詳細

GARPパケットの中身を確認します。

1   00:00:0c:07:ac:fe → ff:ff:ff:ff:ff:ff ARP 60 Gratuitous ARP for 192.168.1.254 (Reply)

Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits)
Ethernet II, Src: 00:00:0c:07:ac:fe, Dst: ff:ff:ff:ff:ff:ff
    Destination: ff:ff:ff:ff:ff:ff
    Source: 00:00:0c:07:ac:fe
    Type: ARP (0x0806)
    Padding: 000000000000000000000000000000000000
Address Resolution Protocol (reply/gratuitous ARP)
    Hardware type: Ethernet (1)
    Protocol type: IPv4 (0x0800)
    Hardware size: 6
    Protocol size: 4
    Opcode: reply (2)
    [Is gratuitous: True]
    Sender MAC address: 00:00:0c:07:ac:fe
    Sender IP address: 192.168.1.254
    Target MAC address: ff:ff:ff:ff:ff:ff
    Target IP address: 192.168.1.254
イーサネットヘッダ
スクロールできます
項目表記説明
送信先MACアドレスDestinationGARPはブロードキャストのため、送信先は「ff:ff:ff:ff:ff:ff」
送信元MACアドレスSourceGARPを送信している機器のMACアドレス
イーサネットタイプTypeGARPのイーサネットタイプは「0806」※通常のARPと同じ
GARPのフォーマット
スクロールできます
項目表記説明
ハードウェアタイプHardware typeイーサネットの場合は「1」
プロトコルタイプProtocol typeIPv4の場合は「0800」
ハードウェアサイズHardware sizeイーサネットの場合はMACアドレスのサイズ「6Byte」
プロトコルサイズProtocol sizeIPv4の場合はIPアドレスのサイズ「4Byte」
オペレーションコードOpcodeGARPのコードは「2」※通常ARPのreplyと同じ
送信者MACアドレスSender MAC addressGARPを送信している機器のMACアドレス
送信者IPアドレスSender IP addressGARPを送信している機器のIPアドレス
対象MACアドレスTarget MAC addressGARPでは「ff:ff:ff:ff:ff:ff」
対象IPアドレスTarget IP addressGARPでARPテーブルやMACアドレスを更新したいIPアドレス

このGARPは、ARPテーブルやMACアドレステーブルの更新が目的で、ARP応答(reply)が必要ないため、オペレーションコードは「2(reply)」が利用されます。

IPアドレスの利用有無確認と利用通知

同一のネットワーク上では、IPアドレスは一意である必要があります。そのため、IPアドレスを設定する際は端末自身がGARPを送信して、IPアドレスの重複がないことを確認するという動作が行われています。これは、DHCPでIPアドレスが割り当てられる際にも同様です。

STEP
ネットワーク構成

下記のネットワーク構成を例に説明します。

・A〜Dの4台のホストが同一ネットワーク上に設置されています。
・ホストAは、まだIPアドレスが割り当てられていません。
・ホストB〜Dは、IPアドレスが割り当てられています。

STEP
DHCPにより、ホストAにIPアドレス割り当て

DHCPサーバーから「192.168.1.9」がホストAに割り当てられました。この時点では、まだホストAはIPアドレスを設定しません。

STEP
ホストAがGARP(ARP Probe)を送信

ホストAがGARP(ARP Probe)を送信し、「192.168.1.9」を利用しているホストが存在しないことを確認します。もし該当IPアドレスを利用しているホストが存在する場合、ARP応答(reply)が帰ってくるため、存在に気がつくことができます。

STEP
ホストAがIPアドレスを設定

ホストAは、割り当てられたIPアドレスが利用されていないことを確認し、IPアドレスを設定します。

STEP
ホストAがGARP(ARP Announcement)を送信

ホストAがGARP(ARP Announcement)を送信し、「192.168.1.9」を利用することをネットワーク内に通知します。

GARP(ARP Probe)パケットの詳細

GARP(ARP Probe)パケットの中身を確認します。

1   18:cf:5e:58:14:85 → ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.9? (ARP Probe)

Frame 1: 42 bytes on wire (336 bits), 42 bytes captured (336 bits)
Ethernet II, Src: 18:cf:5e:58:14:85, Dst: ff:ff:ff:ff:ff:ff
    Destination: ff:ff:ff:ff:ff:ff
    Source: 18:cf:5e:58:14:85
    Type: ARP (0x0806)
Address Resolution Protocol (ARP Probe)
    Hardware type: Ethernet (1)
    Protocol type: IPv4 (0x0800)
    Hardware size: 6
    Protocol size: 4
    Opcode: request (1)
    [Is probe: True]
    Sender MAC address: 18:cf:5e:58:14:85
    Sender IP address: 0.0.0.0
    Target MAC address: 00:00:00:00:00:00
    Target IP address: 192.168.1.9
イーサネットヘッダ
スクロールできます
項目表記説明
送信先MACアドレスDestinationGARP(ARP Probe)はブロードキャストのため、送信先は「ff:ff:ff:ff:ff:ff」
送信元MACアドレスSourceGARP(ARP Probe)を送信している機器のMACアドレス
イーサネットタイプTypeGARP(ARP Probe)のイーサネットタイプは「0806」※通常のARPと同じ
GARP(ARP Probe)のフォーマット
スクロールできます
項目表記説明
ハードウェアタイプHardware typeイーサネットの場合は「1」
プロトコルタイプProtocol typeIPv4の場合は「0800」
ハードウェアサイズHardware sizeイーサネットの場合はMACアドレスのサイズ「6Byte」
プロトコルサイズProtocol sizeIPv4の場合はIPアドレスのサイズ「4Byte」
オペレーションコードOpcodeGARP(ARP Probe)のコードは「1」※通常ARPのrequestと同じ
送信者MACアドレスSender MAC addressGARP(ARP Probe)を送信している機器のMACアドレス
送信者IPアドレスSender IP addressまだIPアドレスは設定していないため「0.0.0.0」
対象MACアドレスTarget MAC addressGARP(ARP Probe)では「00:00:00:00:00:00」
対象IPアドレスTarget IP addressGARP(ARP Probe)で未利用を確認したいIPアドレス

GARP(ARP Announcement)パケットの詳細

GARP(ARP Announcement)パケットの中身を確認します。

1   18:cf:5e:58:14:85 → ff:ff:ff:ff:ff:ff ARP 42 ARP Announcement for 192.168.1.9

Frame 1: 42 bytes on wire (336 bits), 42 bytes captured (336 bits)
Ethernet II, Src: 18:cf:5e:58:14:85, Dst: ff:ff:ff:ff:ff:ff
    Destination: ff:ff:ff:ff:ff:ff
    Source: 18:cf:5e:58:14:85
    Type: ARP (0x0806)
Address Resolution Protocol (ARP Announcement)
    Hardware type: Ethernet (1)
    Protocol type: IPv4 (0x0800)
    Hardware size: 6
    Protocol size: 4
    Opcode: request (1)
    [Is gratuitous: True]
    [Is announcement: True]
    Sender MAC address: 18:cf:5e:58:14:85
    Sender IP address: 192.168.1.9
    Target MAC address: 00:00:00:00:00:00
    Target IP address: 192.168.1.9
イーサネットヘッダ
スクロールできます
項目表記説明
送信先MACアドレスDestinationGARP(ARP Announcement)はブロードキャストのため、送信先は「ff:ff:ff:ff:ff:ff」
送信元MACアドレスSourceGARP(ARP Announcement)を送信している機器のMACアドレス
イーサネットタイプTypeGARP(ARP Announcement)のイーサネットタイプは「0806」※通常のARPと同じ
GARP(ARP Announcement)のフォーマット
スクロールできます
項目表記説明
ハードウェアタイプHardware typeイーサネットの場合は「1」
プロトコルタイプProtocol typeIPv4の場合は「0800」
ハードウェアサイズHardware sizeイーサネットの場合はMACアドレスのサイズ「6Byte」
プロトコルサイズProtocol sizeIPv4の場合はIPアドレスのサイズ「4Byte」
オペレーションコードOpcodeGARP(ARP Announcement)のコードは「1」※通常ARPのrequestと同じ
送信者MACアドレスSender MAC addressGARP(ARP Announcement)を送信している機器のMACアドレス
送信者IPアドレスSender IP address設定済みのIPアドレス
対象MACアドレスTarget MAC addressGARP(ARP Announcement)では「00:00:00:00:00:00」
対象IPアドレスTarget IP address設定済みのIPアドレス

なお、DHCP自体にもIPアドレスの重複を防ぐ仕組みは存在しており、何重もの仕組みでIPアドレスが重複しないように工夫されています。DHCPの詳細な動作については、下記を参照してください。

GARPパケットのまとめ

上述したGARPパケットのフォーマットをまとめると下記の通りです。

スクロールできます
表記GARPARP ProbeARP Announcement
Hardware type111
Protocol type080008000800
Hardware size6(Byte)6(Byte)6(Byte)
Protocol size4(Byte)4(Byte)4(Byte)
Opcode211
Sender MAC address送信元MAC送信元MAC送信元MAC
Sender IP address送信元IP0.0.0.0送信元IP
Target MAC addressff:ff:ff:ff:ff:ff00:00:00:00:00:0000:00:00:00:00:00
Target IP address送信元IP未利用確認IP送信元IP

以上で、GARPとは(Gratuitous-ARP 機能・動作と利用場面)の説明は完了です!

  • URLをコピーしました!
  • URLをコピーしました!
目次