Inverse ARPとはIPアドレスに対応する物理アドレス(DLCI)を解決する仕組みです。この仕組みを機能させる事によって、DLCIの明示的な設定をしなくても疎通可能な状態にする事ができます。
基本動作
動作環境
以下の環境で動作確認を行います。
+------+.1 +--------+ .2+------+ | R1 +--------+ FRSW +--------+ R2 | +------+s0/0 1+--------+2 s0/0+------+ 1:101 = 2:102 1:201 = 2:202 1:301 = 2:302 1:401 = 2:402 1:501 = 2:502 1:601 = 2:602
[R1] interface Serial0/0 ip address 192.168.0.1 255.255.255.0 encapsulation frame-relay [R2] interface Serial0/0 ip address 192.168.0.2 255.255.255.0 encapsulation frame-relay
LMI
LMI (Local Management Interface) はframe relayの状態を確認するためのプロトコルです。具体的には以下の機能を提供します。
機能 | 説明 |
---|---|
キープアライブ | VCが接続状態であることを確認できます |
マルチキャスト | フレームリレー網でマルチキャストを可能にします |
グローバルDLCI | DLCIをネットワーク全体で一意に使用します |
VCステータス | VCのステータスを確認できます |
LMIのフレームを観察すると以下の通りです。frame relay switchからPVCに関する情報を取得している事が読み取れます。
Frame 22 (44 bytes on wire, 44 bytes captured) Frame Relay Q.933 Protocol discriminator: Q.933 Call reference value length: 0 Message type: STATUS (0x7d) Locking shift to codeset 5: Information elements for national use Report type (ANSI) Information element: Report type (ANSI) Length: 1 Report type: Full Status (0) Keep Alive (ANSI) Information element: Keep Alive (ANSI) Length: 2 TX Sequence: 7 RX Sequence: 7 PVC Status (ANSI) Information element: PVC Status (ANSI) Length: 3 DLCI: 101 Status: Active PVC Status (ANSI) Information element: PVC Status (ANSI) Length: 3 DLCI: 102 Status: Active PVC Status (ANSI) Information element: PVC Status (ANSI) Length: 3 DLCI: 103 Status: Active <omitted>
LMIによって取得したPVC情報は以下のコマンドで確認する事ができます。
R1#show frame-relay pvc | include DLCI DLCI = 101, DLCI USAGE = UNUSED, PVC STATUS = INACTIVE, INTERFACE = Serial0/0 DLCI = 102, DLCI USAGE = UNUSED, PVC STATUS = INACTIVE, INTERFACE = Serial0/0 DLCI = 103, DLCI USAGE = UNUSED, PVC STATUS = INACTIVE, INTERFACE = Serial0/0 DLCI = 104, DLCI USAGE = UNUSED, PVC STATUS = INACTIVE, INTERFACE = Serial0/0 DLCI = 105, DLCI USAGE = UNUSED, PVC STATUS = INACTIVE, INTERFACE = Serial0/0 DLCI = 106, DLCI USAGE = UNUSED, PVC STATUS = INACTIVE, INTERFACE = Serial0/0 R1#
inverse arp
LMIによってPVCの情報が取得できると、ルータはactiveであると分かったDLCIに対応するIPアドレスの解決を試みます。
DLCI 101を例に挙げて説明します。R1はDLCI 101に対応するIPアドレスが分からないので、DLCIは101、送信元IPアドレスは192.168.0.1、宛先IPアドレスは0.0.0.0であるinverse arp requestと呼ばれるフレームを送信します。
このフレームをキャプチャした結果は以下の通りです。
Frame 23 (34 bytes on wire, 34 bytes captured) Frame Relay First address octet: 0x18 Second address octet: 0x51 DLCI: 101 Control field: U, func=UI (0x03) Padding NLPID: SNAP (0x80) Organization Code: Encapsulated Ethernet (0x000000) Type: ARP (0x0806) Address Resolution Protocol (inverse request) Hardware type: Frame Relay DLCI (0x000f) Protocol type: IP (0x0800) Hardware size: 2 Protocol size: 4 Opcode: inverse request (0x0008) [Is gratuitous: False] Sender hardware address: 0000 Sender IP address: 192.168.0.1 (192.168.0.1) Target hardware address: 1851 Target IP address: 0.0.0.0 (0.0.0.0)
inverse arp requestを受信したルータは、自身のIPアドレスをセットしたinverse arp responseを返信します。
Frame 26 (34 bytes on wire, 34 bytes captured) Frame Relay First address octet: 0x18 Second address octet: 0x51 DLCI: 101 Control field: U, func=UI (0x03) Padding NLPID: SNAP (0x80) Organization Code: Encapsulated Ethernet (0x000000) Type: ARP (0x0806) Address Resolution Protocol (inverse reply) Hardware type: Frame Relay DLCI (0x000f) Protocol type: IP (0x0800) Hardware size: 2 Protocol size: 4 Opcode: inverse reply (0x0009) [Is gratuitous: False] Sender hardware address: 0000 Sender IP address: 192.168.0.2 (192.168.0.2) Target hardware address: 1851 Target IP address: 192.168.0.1 (192.168.0.1)
inverse arpによってDLCIに対応したIPアドレスが解決できた場合は、以下のように表示されます。
R1#show frame-relay map Serial0/0 (up): ip 192.168.0.2 dlci 102(0x66,0x1860), dynamic, broadcast,, status defined, active R1#
対象となるDLCI
main interface
inverse arpの対象となるDLCIについて考察します。
“interface-dlci”などの設定が特にない場合は、LMIでactiveであると判断したPVC全てについてmain interfaceからinverse arpが送信されます。なお、以下のデバッグコマンドを使用すると、inverse arp requestについて確認する事ができます。
R1#debug frame-relay packet Frame Relay packet debugging is on R1#clear frame-relay inarp R1# R1# R1# *Mar 1 00:05:08.403: Serial0/0(o): dlci 101(0x1851), pkt encaps 0x0300 0x8000 0x0000 0x806 (ARP), datagramsize 34 *Mar 1 00:05:08.407: FR: Sending INARP Request on interface Serial0/0 dlci 101 for link 7(IP) *Mar 1 00:05:08.411: Serial0/0(o): dlci 106(0x18A1), pkt encaps 0x0300 0x8000 0x0000 0x806 (ARP), datagramsize 34 *Mar 1 00:05:08.415: FR: Sending INARP Request on interface Serial0/0 dlci 106 for link 7(IP) *Mar 1 00:05:08.415: Serial0/0(o): dlci 105(0x1891), pkt encaps 0x0300 0x8000 0x0000 0x806 (ARP), datagramsize 34 *Mar 1 00:05:08.419: FR: Sending INARP Request on interface Serial0/0 dlci 105 for link 7(IP) *Mar 1 00:05:08.423: Serial0/0(o): dlci 104(0x1881), pkt encaps 0x0300 0x8000 0x0000 0x806 (ARP), datagramsize 34 *Mar 1 00:05:08.427: FR: Sending INARP Request on interface Serial0/0 dlci 104 for link 7(IP) *Mar 1 00:05:08.427: Serial0/0(o): dlci 103(0x1871), pkt encaps 0x0300 0x8000 0x0000 0x806 (ARP), datagramsize 34 *Mar 1 00:05:08.431: FR: Sending INARP Request on interface Serial0/0 dlci 103 for link 7(IP) *Mar 1 00:05:08.447: broadcast dequeue R1#
point-to-point sub interface
point-to-point sub interfaceは1対1で接続されたinterfaceです。従って、DLCIに対応するIPアドレスを解決する必要がありません。
以下のようにsub interfaceに対してDLCI 102を割り当てると、main interfaceからDLCI 102のinverse arp requestが送信されなくなります。
[R1] interface Serial0/0 ip address 192.168.0.1 255.255.255.0 encapsulation frame-relay ! interface Serial0/0.1 point-to-point ip address 192.168.12.1 255.255.255.0 frame-relay interface-dlci 102 [R2] interface Serial0/0 ip address 192.168.0.2 255.255.255.0 encapsulation frame-relay
multipoint sub interface
以下のようにsub interfaceに対してDLCI 103を割り当てると、DLCI 103のinverse arp requestの送信元IPアドレスがmain interfaceではなくpoint-to-point sub interfaceに変わります。
[R1] interface Serial0/0 ip address 192.168.0.1 255.255.255.0 encapsulation frame-relay ! interface Serial0/0.1 point-to-point ip address 192.168.12.1 255.255.255.0 frame-relay interface-dlci 102 ! interface Serial0/0.2 multipoint ip address 192.168.21.1 255.255.255.0 frame-relay interface-dlci 103 [R2] interface Serial0/0 ip address 192.168.0.2 255.255.255.0 encapsulation frame-relay
この時のフレームを観察すると以下の通りです。送信元IPアドレスがmultipoint sub interfaceである192.168.21.1になっている事が読み取れます。
Frame 17 (34 bytes on wire, 34 bytes captured) Frame Relay First address octet: 0x18 Second address octet: 0x71 DLCI: 103 Control field: U, func=UI (0x03) Padding NLPID: SNAP (0x80) Organization Code: Encapsulated Ethernet (0x000000) Type: ARP (0x0806) Address Resolution Protocol (inverse request) Hardware type: Frame Relay DLCI (0x000f) Protocol type: IP (0x0800) Hardware size: 2 Protocol size: 4 Opcode: inverse request (0x0008) [Is gratuitous: False] Sender hardware address: 0000 Sender IP address: 192.168.21.1 (192.168.21.1) Target hardware address: 1871 Target IP address: 0.0.0.0 (0.0.0.0)
inverse arp 無効化
明示的な無効化
以下のコマンドでinverse arpを無効化する事ができます。DLCIを指定した場合は指定したDLCIのみinverse arpを無効にし、DLCIを省略した場合はmain interfaceから全くinverse arpを送信しなくなります。
Router(config-if)# no frame-relay inverse-arp [ ip >dlci< ]
設定例は以下の通りです。
[R1] interface Serial0/0 ip address 192.168.0.1 255.255.255.0 encapsulation frame-relay no frame-relay inverse-arp IP 104 ! interface Serial0/0.1 point-to-point ip address 192.168.12.1 255.255.255.0 frame-relay interface-dlci 102 ! interface Serial0/0.2 multipoint ip address 192.168.21.1 255.255.255.0 frame-relay interface-dlci 103 [R2] interface Serial0/0 ip address 192.168.0.2 255.255.255.0 encapsulation frame-relay
multipoint sub interfaceを利用した無効化
若干トリッキーな方法ですが、multipoint sub interfaceを利用したinverse arp無効化の方法もあります。IPアドレスを設定していないmultpoint sub interfaceにDLCIを割り当てる事で、inverse arpが送信されなくなります。設定例は以下の通りです。
[R1] interface Serial0/0 ip address 192.168.0.1 255.255.255.0 encapsulation frame-relay no frame-relay inverse-arp IP 104 ! interface Serial0/0.1 point-to-point ip address 192.168.12.1 255.255.255.0 frame-relay interface-dlci 102 ! interface Serial0/0.2 multipoint ip address 192.168.21.1 255.255.255.0 frame-relay interface-dlci 103 ! interface Serial0/0.999 multipoint frame-relay interface-dlci 105 frame-relay interface-dlci 106 [R2] interface Serial0/0 ip address 192.168.0.2 255.255.255.0 encapsulation frame-relay
inverse arp 確認方法
inverse arp 確認方法
inverse arp無効化を確認する方法はやや難しいです。DLCI 105に関するinverse arpが無効化されているかどうかの確認方法を例に挙げて説明します。
大量のデバッグメッセージから当該の部分を見つけるのは、非常に困難です。logging bufferなどログに貯め込み、”include”句で適宜絞り込む方法をお勧めします。
“DLCI 105からパケットが送信されているから、DLCI無効化の設定が働いていない”という判断は誤りです。以下のメッセージは、対向からのinverse arp requestに対するresponseです。
R1#show logging | include 105 *Mar 1 00:36:50.743: Serial0/0(i): dlci 105(0x1891), pkt encaps 0x0300 0x8000 0x0000 0x806 (ARP), datagramsize 34 *Mar 1 00:37:50.763: Serial0/0(i): dlci 105(0x1891), pkt encaps 0x0300 0x8000 0x0000 0x806 (ARP), datagramsize 34 R1#
inverse arpが送信されていないかどうかを確認するためには、“INARP Request”と表示されているメッセージに着目します。以下のような出力ならば、”DLCI 105のinverse arpは確かに無効化されている”と判断できます。
R1#show logging | include Request *Mar 1 00:36:08.407: FR: Sending INARP Request on interface Serial0/0 dlci 101 for link 7(IP) *Mar 1 00:37:08.407: FR: Sending INARP Request on interface Serial0/0 dlci 101 for link 7(IP) *Mar 1 00:38:08.403: FR: Sending INARP Request on interface Serial0/0 dlci 101 for link 7(IP) R1#