【EIGRP】ユニキャストでのネイバー設定

EIGRP の Hello パケットは、通常はマルチキャストアドレス 224.0.0.10 宛てに送られます。neighbor コマンドでネイバーを指定すると、そのインタフェースでは Hello をユニキャストで、指定した相手にだけ送るようになります。この記事では、片側だけに設定したときと両側に設定したときの動きを、ログ・debug・パケットキャプチャで確かめます。

この記事でわかること
  1. 既定の状態で Hello がマルチキャストで送られていること
  2. 片側だけに neighbor を設定するとネイバーがダウンする理由
  3. 両側に設定してユニキャストでネイバーになったときの Hello の中身

neighbor コマンドを使う場面

neighbor コマンドで指定したネイバーは「スタティックネイバー」と呼ばれます。主に次のような場面で使います。

  • フレームリレーなど、マルチキャストを転送できない、または転送させたくない回線でネイバーを張るとき
  • 同じセグメントに複数のルータがいるが、決まった相手とだけネイバーになりたいとき

スタティックネイバーを設定したインタフェースでは、EIGRP はマルチキャストを使わなくなります。そのため、同じインタフェースの先にいる EIGRP ルータとは、すべて neighbor コマンドでネイバーを指定する必要があります。

① neighbor コマンドなし(既定)R2R3Hello → 224.0.0.10Hello → 224.0.0.10ネイバー確立 ② R2 だけに neighbor を設定R2R3Hello → 192.168.23.3(R3 は無視)Hello → 224.0.0.10(R2 は受け付けない)ダウン ③ R2・R3 の両方に neighbor を設定R2R3Hello → 192.168.23.3Hello → 192.168.23.2ネイバー確立
図1 neighbor コマンドの設定とネイバーの状態

検証構成

R2 と R3 が 192.168.23.0/24 でつながり、EIGRP AS 100 でネイバーになっています。基本設定は EIGRP の基本設定とネイバー・ルーティングテーブルの確認 を参照してください。

EIGRP AS 100 Lo02.2.2.2/32Lo03.3.3.3/32 R2R3 .2.3 192.168.23.0/24 Fa0/0.23 Fa0/0.23
図2 検証構成

R2

R2(config)# router eigrp 100 
R2(config-router)#  network 2.2.2.2 0.0.0.0
R2(config-router)#  network 192.168.23.0

R3

R3(config)# router eigrp 100
R3(config-router)#  network 3.3.3.3 0.0.0.0
R3(config-router)#  network 192.168.23.0

既定の Hello を確認する

この状態で R2 が送る Hello をキャプチャすると、宛先は 224.0.0.10 のマルチキャストです。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から見るポイントを抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

パケットキャプチャ(Wireshark):既定の Hello画面イメージ
1▸ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 224.0.0.10▾ Cisco EIGRP    Version: 2    Opcode: Hello (5)    Checksum: 0xef6e [correct]    [Checksum Status: Good]  ▸ Flags: 0x00000000    Sequence: 0    Acknowledge: 0    Virtual Router ID: 0 (Address-Family)    Autonomous System: 100  ▸ Parameters  ▸ Software Version: EIGRP=10.0, TLV=2.0
図3 既定の Hello(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1Dst: 224.0.0.10EIGRP のマルチキャストアドレス宛て。同じセグメントの EIGRP ルータすべてが受け取る

R2 だけに neighbor を設定する

R2 で、R3 のアドレスと、R3 につながるインタフェースを指定します。インタフェースの指定は省略できません。

R2

R2(config)# router eigrp 100
R2(config-router)# neighbor 192.168.23.3 fastEthernet 0/0.23

%DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 192.168.23.3 (FastEthernet0/0.23) 
is down: Static peer replaces multicast

設定した直後に、R3 とのネイバーがダウンします。理由の Static peer replaces multicast は、このインタフェースではマルチキャストのネイバーをやめて、スタティックネイバーに切り替えたことを示しています。

debug eigrp packets:R3 が受け取った Hello

R3 で debug eigrp packets を有効にすると、R2 から Hello は届いていますが、ユニキャストなので無視されています。

R3

R3# debug eigrp packets
    (UPDATE, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, 
SIAQUERY, SIAREPLY)
EIGRP Packet debugging is on
R3#
*Sep 22 06:38:19.527: EIGRP: Received HELLO on Fa0/0.23 - paklen 20 nbr 192.168.23.2
*Sep 22 06:38:19.527:   AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0
*Sep 22 06:38:19.527:   {type = 1, length = 12}
R3#
*Sep 22 06:38:19.527:   {vector = {
*Sep 22 06:38:19.527:             {01000100 0000000F}
*Sep 22 06:38:19.527:   }
*Sep 22 06:38:19.527:   {type = 4, length = 8}
*Sep 22 06:38:19.527:   {vector = {
*Sep 22 06:38:19.527:             {0A000200}
*Sep 22 06:38:19.527:   }
*Sep 22 06:38:19.527: EIGRP: Ignore unicast Hello from FastEthernet0/0.23 192.168.23.2
表示意味
Received HELLO … nbr 192.168.23.2R2 からの Hello を Fa0/0.23 で受け取った
{type = 1, length = 12}Parameters の TLV。値の 01000100 0000000F は K1〜K6(1、0、1、0、0、0)とホールドタイム 0x000F(15秒)
{type = 4, length = 8}Software Version の TLV。0A000200 は EIGRP 10.0、TLV 2.0
Ignore unicast HelloR3 には R2 がスタティックネイバーとして設定されていないので、ユニキャストの Hello を無視した

R2 は R3 にユニキャストでしか Hello を送らず、R3 からのマルチキャストの Hello も受け付けません。R3 は R2 からのユニキャストの Hello を無視します。お互いに相手の Hello を使えないため、ネイバーになれません(図1の②)。

R3 にも neighbor を設定する

R3 でも同じように、R2 のアドレスとインタフェースを指定します。

R3

R3(config)# router eigrp 100
R3(config-router)# neighbor 192.168.23.2 fastEthernet 0/0.23

%DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 192.168.23.2 (FastEthernet0/0.23) 
is up: new adjacency

両側がスタティックネイバーになり、ネイバーが確立しました。このとき R2 が送る Hello をキャプチャすると、宛先は R3 の 192.168.23.3 で、TTL は 1 になっています。

パケットキャプチャ(Wireshark):ユニキャストの Hello画面イメージ
1▾ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 192.168.23.3    0100 .... = Version: 4    .... 0101 = Header Length: 20 bytes (5)  ▸ Differentiated Services Field: 0xc0 (DSCP: CS6, ECN: Not-ECT)    Total Length: 60    Identification: 0x0000 (0)  ▸ Flags: 0x0000    Fragment offset: 02  ▸ Time to live: 13    Protocol: EIGRP (88)    Header checksum: 0x0955 [validation disabled]    [Header checksum status: Unverified]    Source: 192.168.23.2    Destination: 192.168.23.3▾ Cisco EIGRP    Version: 2    Opcode: Hello (5)    Checksum: 0xef6e [correct]    [Checksum Status: Good]  ▸ Flags: 0x00000000    Sequence: 0    Acknowledge: 0    Virtual Router ID: 0 (Address-Family)    Autonomous System: 100  ▸ Parameters  ▸ Software Version: EIGRP=10.0, TLV=2.0
図4 ユニキャストの Hello(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1Dst: 192.168.23.3宛先が R3 のユニキャストアドレスになった
2Time to live: 1TTL 1。隣のルータを越えて転送されない
3Protocol: EIGRP (88)EIGRP は TCP や UDP を使わず、IP の上で直接動く(プロトコル番号 88)

うまくいかないときの確認

状態よくある原因確認すること
neighbor を設定したらネイバーが落ちた相手側に neighbor を設定していない相手の debug eigrp packets に Ignore unicast Hello が出ていないか
同じセグメントの別のルータとネイバーが切れたそのインタフェースのマルチキャストが止まった同じインタフェースの先にいる EIGRP ルータすべてを neighbor で指定しているか
neighbor がエラーになるインタフェースの指定がない、またはアドレスがそのインタフェースのネットワークにないネイバーのアドレスと、指定したインタフェースのアドレスが同じネットワークか

まとめ

項目内容
コマンドneighbor <ネイバーのアドレス> <インタフェース>(router eigrp の中)
Hello の宛先既定は 224.0.0.10。neighbor を設定すると、指定した相手へのユニキャストになる
設定の範囲neighbor を設定したインタフェースでは、マルチキャストのネイバーは張れなくなる
必要な設定ネイバーになる両側に neighbor を設定する

コメント