NHRPの概要
NHRPとは
NHRPは、NBMA(Non-Broadcast Multi-Access:ブロードキャストを行わないマルチアクセス)ネットワーク上で、あるノードが宛先ノードへ通信を行う際に、その宛先が属するネットワークへの「物理(NBMA)アドレス/論理トンネルアドレス」のマッピングを動的に解決するプロトコルです。
Cisco IOS XEドキュメントでは「The Next Hop Resolution Protocol (NHRP) is an Address Resolution Protocol (ARP)-like protocol that dynamically maps a Non-Broadcast Multi-Access (NBMA) network.」と説明されています。
この機能により、NBMAネットワークに接続されたシステム同士が、ハブを中継せずに 直接通信 を確立できるよう設計されています。
NHRPの役割と機能
NHRPの主な役割として、以下2点が挙げられます:
- 登録 (Registration):スポーク(Next Hop Client: NHC)がハブ(Next Hop Server: NHS)に自身の論理トンネルアドレス(例:トンネルインターフェースIP)と物理NBMAアドレスを登録することで、NHS側にマッピングテーブルを維持できます。
- 解決 (Resolution):あるスポークが別のスポークへ通信する際に、その宛先の論理トンネルアドレスから対応する物理NBMAアドレスをNHSに問い合わせ、NHSの登録情報を用いて直接トンネルを張るための物理アドレスを取得します。
これにより、従来すべての通信をハブ経由とする構成で起こりがちだったハブの帯域およびCPU負荷の増大を低減し、拠点間通信(Spoke→Spoke)を効率化できます。
DMVPNにおけるNHRPの位置づけ
Dynamic Multipoint VPN(DMVPN)構成において、NHRPは ハブ/スポーク構成およびスポーク間のメッシュ化通信を実現するためのキープロトコルです。Cisco公式では「Multipoint GREトンネル(mGRE)上で、NHRPがトンネル終端の物理アドレスを動的に解決する」ことを説明しています。
特にDMVPN Phase 2・Phase 3では、スポーク→スポーク(Spoke-to-Spoke)通信を確立するために、NHRPによるマッピングとハブの動的な関与(Redirect/Shortcut)が重要な役割を果たします。
NHRPの基本動作フロー
NHRPの処理は、概ね下記3つのフェーズで構成されます:
- Registration(登録):スポーク(NHC)がトンネルインターフェース上から、ハブ(NHS)へ自身のトンネルアドレスとNBMAアドレスを登録要求し、ハブはその情報を自身のデータベースへ登録します。
- Resolution(解決):スポークAがスポークBへ通信を開始する際、まずNHSにスポークBのトンネルアドレスを問い合わせ、NHSはスポークBのNBMAアドレスを返却します。スポークAは得られたNBMAアドレスへ直接トンネルを確立し、スポーク間通信を実現します。
- Purge(削除):登録された情報が古くなったり、スポークが切断されたりした際に、NHS側から対応する登録情報を削除し、スポークやNHSの状態整合性を維持します。
DMVPNとNHRPの関係
DMVPNとは(簡単な関連説明)
DMVPN(Dynamic Multipoint VPN)は、mGRE(Multipoint GRE)、NHRP、IPsec を組み合わせて構成されるダイナミックなVPN技術です。
ハブ&スポーク型の構成を基本としながらも、スポーク同士が直接トンネルを張ることで効率的な通信を実現します。
NHRPはこのDMVPNの中で「宛先スポークのアドレス解決」を担い、動的なトンネル確立の鍵となります。
NHRPが担う役割(Hub/Spoke間でのアドレス解決)
DMVPNにおいて、NHRPは「トンネル論理アドレスとNBMA物理アドレスの対応関係」を管理することで、動的な通信を成立させます。
各スポークは起動時に自身の情報をハブに登録し(Registration)、通信時に宛先スポークの物理アドレスをハブへ問い合わせ(Resolution)、
必要に応じてエントリ削除(Purge)を行います。これにより、ハブを常時経由せずにスポーク間で直接トンネルを張ることが可能になります。
NHRPメッセージの種類(Request / Reply / Registration など)
NHRPでは、動的アドレス解決のために複数のメッセージタイプが使用されます。
Cisco公式ドキュメントに基づき、代表的なものを以下に示します。
| メッセージ種別 | 方向 | 目的・説明 |
| Registration Request | Spoke → Hub | スポークが自身のトンネルIPとNBMAアドレスを登録する |
| Registration Reply | Hub → Spoke | Hubが登録を受け入れ、正常応答を返す |
| Resolution Request | Spoke → Hub | 宛先スポークのトンネルIPに対応する物理アドレスを問い合わせ |
| Resolution Reply | Hub → Spoke | HubがキャッシュからNBMAアドレスを応答 |
| Purge Request / Reply | 双方向 | 古い登録情報を削除してテーブルの整合性を保つ |
| Error Indication | 双方向 | ループや到達不能などの異常を通知 |