################################################################################ Topic: Multipoint Frame-relay connections without inverse ARP Feel free to share these notes with other people. Justin G. Mitchell jgmitchell@gmail.com ################################################################################ Multipoint frame-relay without inverse ARP is very different from regular multipoint connections. When configuring these kinds of connections, we are required to disable inverse ARP so that it cannot be used to dynamically map IP addresses to DLCIs. To provide connectivity between devices, we need to statically map destination IPs to specific DLCIs. If we forget to configure the static maps or mistype something connectivity in our network will broken. Sample configuration disabling Inverse ARP: R1(config-if)#do sh run int s0/0 Building configuration... Current configuration : 142 bytes ! interface Serial0/0 ip address 172.172.123.1 255.255.255.0 encapsulation frame-relay clock rate 2000000 no frame-relay inverse-arp end ! Regardless of how long you wait, DLCIs will never get mapped. :-( R1(config-if)#do sh fram map R1(config-if)# To resolve the lack of DLCI mapping, we need to statically map our IPs and DLCIs R1(config-if)#fram map ip 172.172.123.3 103 R1(config-if)#fram map ip 172.172.123.2 102 R1(config-if)#do sh run int s0/0 Building configuration... Current configuration : 218 bytes ! interface Serial0/0 ip address 172.172.123.1 255.255.255.0 encapsulation frame-relay clock rate 2000000 frame-relay map ip 172.172.123.2 102 frame-relay map ip 172.172.123.3 103 no frame-relay inverse-arp end R1(config-if)#do sh fram map Serial0/0 (up): ip 172.172.123.2 dlci 102(0x66,0x1860), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.3 dlci 103(0x67,0x1870), static, CISCO, status defined, active R1(config-if)# At this point though, we have only configured one side of the links for connectivity. We must do this for each and every DLCI/IP address that needs to be mapped. R2(config-if)#do sh run int s0/0 Building configuration... Current configuration : 218 bytes ! interface Serial0/0 ip address 172.172.123.2 255.255.255.0 encapsulation frame-relay clock rate 2000000 frame-relay map ip 172.172.123.3 203 frame-relay map ip 172.172.123.1 201 no frame-relay inverse-arp end R2(config-if)#do sh fram map Serial0/0 (up): ip 172.172.123.1 dlci 201(0xC9,0x3090), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.3 dlci 203(0xCB,0x30B0), static, CISCO, status defined, active R2(config-if)# R3(config-if)#do sh run int s0/0 Building configuration... Current configuration : 218 bytes ! interface Serial0/0 ip address 172.172.123.3 255.255.255.0 encapsulation frame-relay clock rate 2000000 frame-relay map ip 172.172.123.2 302 frame-relay map ip 172.172.123.1 301 no frame-relay inverse-arp end R3(config-if)#do sh fram map Serial0/0 (up): ip 172.172.123.1 dlci 301(0x12D,0x48D0), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.2 dlci 302(0x12E,0x48E0), static, CISCO, status defined, active R3(config-if)# At this point we now have full connectivity directly between R1, R2 and R3. We can ping and "see" the other side of our frame-relay links. Time to improve the connections, because although there is full connectivity, we need to modify the DLCIs mappings to allow broadcasts across the links. To do this we add the keyword broadcast to the end of our frame-relay map ip statement. R1#sh run int s0/0 Building configuration... Current configuration : 228 bytes ! interface Serial0/0 ip address 172.172.123.1 255.255.255.0 encapsulation frame-relay clock rate 2000000 frame-relay map ip 172.172.123.2 102 broadcast frame-relay map ip 172.172.123.3 103 no frame-relay inverse-arp end The purpose is to allow broadcast packets across the links. Without this keyword, multicast packets and generic broadcasts fail, casuing things like our routing protocols to fail in turn… Not good. R1#debug fram packet Frame Relay packet debugging is on R1#ping 255.255.255.255 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 255.255.255.255, timeout is 2 seconds: *Mar 1 01:13:06.267: Serial0/0: broadcast search *Mar 1 01:13:06.271: Serial0/0:encaps failed on broadcast for link 7(IP). *Mar 1 01:13:08.267: Serial0/0: broadcast search *Mar 1 01:13:08.267: Serial0/0:encaps failed on broadcast for link 7(IP). *Mar 1 01:13:10.267: Serial0/0: broadcast search *Mar 1 01:13:10.267: Serial0/0:encaps failed on broadcast for link 7(IP). *Mar 1 01:13:12.267: Serial0/0: broadcast search *Mar 1 01:13:12.267: Serial0/0:encaps failed on broadcast for link 7(IP). *Mar 1 01:13:14.267: Serial0/0: broadcast search *Mar 1 01:13:14.267: Serial0/0:encaps failed on broadcast for link 7(IP). R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#int s0/0 ! ! Go in and add the keyword ! R1(config-if)#fram map ip 172.172.123.2 102 broad R1(config-if)#end R1#conf t *Mar 1 01:13:40.727: %SYS-5-CONFIG_I: Configured from console by console R1#ping 255.255.255.255 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 255.255.255.255, timeout is 2 seconds: *Mar 1 01:13:43.731: Serial0/0: broadcast search *Mar 1 01:13:43.735: Serial0/0(o): dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:13:43.751: broadcast dequeue *Mar 1 01:13:43.751: Serial0/0(o):Pkt sent on dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:13:43.787: Serial0/0(i): dlci 102(0x1861), pkt type 0x800, datagramsize 104 Reply to request 0 from 172.172.123.2, 56 ms *Mar 1 01:13:45.731: Serial0/0: broadcast search *Mar 1 01:13:45.731: Serial0/0(o): dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:13:45.755: broadcast dequeue *Mar 1 01:13:45.755: Serial0/0(o):Pkt sent on dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:13:45.771: Serial0/0(i): dlci 102(0x1861), pkt type 0x800, datagramsize 104 Reply to request 1 from 172.172.123.2, 40 ms *Mar 1 01:13:47.731: Serial0/0: broadcast search *Mar 1 01:13:47.731: Serial0/0(o): dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:13:47.755: broadcast dequeue *Mar 1 01:13:47.755: Serial0/0(o):Pkt sent on dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:13:47.767: Serial0/0(i): dlci 102(0x1861), pkt type 0x800, datagramsize 104 Reply to request 2 from 172.172.123.2, 36 ms *Mar 1 01:13:49.731: Serial0/0: broadcast search *Mar 1 01:13:49.731: Serial0/0(o): dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:13:49.755: broadcast dequeue *Mar 1 01:13:49.755: Serial0/0(o):Pkt sent on dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:13:49.759: Serial0/0(i): dlci 102(0x1861), pkt type 0x800, datagramsize 104 Reply to request 3 from 172.172.123.2, 28 ms *Mar 1 01:13:51.731: Serial0/0: broadcast search *Mar 1 01:13:51.731: Serial0/0(o): dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:13:51.755: broadcast dequeue *Mar 1 01:13:51.755: Serial0/0(o):Pkt sent on dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:13:51.763: Serial0/0(i): dlci 102(0x1861), pkt type 0x800, datagramsize 104 Reply to request 4 from 172.172.123.2, 32 ms R1# *Mar 1 01:14:27.663: Serial0/0(i): dlci 102(0x1861), pkt type 0x800, datagramsize 104 *Mar 1 01:14:27.663: Serial0/0(o): dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:14:27.671: Serial0/0(i): dlci 102(0x1861), pkt type 0x800, datagramsize 104 *Mar 1 01:14:27.679: Serial0/0(o): dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:14:27.683: Serial0/0(i): dlci 102(0x1861), pkt type 0x800, datagramsize 104 *Mar 1 01:14:27.687: Serial0/0(o): dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:14:27.695: Serial0/0(i): dlci 102(0x1861), pkt type 0x800, datagramsize 104 R1# *Mar 1 01:14:27.699: Serial0/0(o): dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 *Mar 1 01:14:27.723: Serial0/0(i): dlci 102(0x1861), pkt type 0x800, datagramsize 104 *Mar 1 01:14:27.727: Serial0/0(o): dlci 102(0x1861), pkt type 0x800(IP), datagramsize 104 ! Remove broadcast keyword and configure RIP for testing... R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#int s0/0 R1(config-if)#no frame-relay map ip 172.172.123.2 102 broadcast R1(config-if)#frame-relay map ip 172.172.123.2 102 R1(config-if)#end R1#sh *Mar 1 01:20:06.479: %SYS-5-CONFIG_I: Configured from console by console R1#sh fram map Serial0/0 (up): ip 172.172.123.2 dlci 102(0x66,0x1860), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.3 dlci 103(0x67,0x1870), static, CISCO, status defined, active R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#router rip R1(config-router)#net 172.172.123.0 R1(config-router)# *Mar 1 01:20:29.591: Serial0/0: broadcast search *Mar 1 01:20:29.595: Serial0/0:encaps failed on broadcast for link 7(IP) R1(config-router)# *Mar 1 01:20:31.595: Serial0/0: broadcast search *Mar 1 01:20:31.595: Serial0/0:encaps failed on broadcast for link 7(IP) R1(config-router)# Frame-relay Hub & Spoke configuration -------------------------------------------------------------------------------- In this situation, a single router is chosen to be the center of our network and all traffic will flow through it. Spoke sites do not communicate directly with each other. ! Spoke site R1#sh run int s0/0 Building configuration... Current configuration : 283 bytes ! interface Serial0/0 ip address 172.172.123.1 255.255.255.0 encapsulation frame-relay clock rate 2000000 frame-relay map ip 172.172.123.4 103 frame-relay map ip 172.172.123.2 103 frame-relay map ip 172.172.123.3 103 no frame-relay inverse-arp end R1#sh fram map Serial0/0 (up): ip 172.172.123.4 dlci 103(0x67,0x1870), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.2 dlci 103(0x67,0x1870), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.3 dlci 103(0x67,0x1870), static, CISCO, status defined, active ! Spoke site R2#sh run int s0/0 Building configuration... Current configuration : 283 bytes ! interface Serial0/0 ip address 172.172.123.2 255.255.255.0 encapsulation frame-relay clock rate 2000000 frame-relay map ip 172.172.123.4 203 frame-relay map ip 172.172.123.1 203 frame-relay map ip 172.172.123.3 203 no frame-relay inverse-arp end R2#sh fram map Serial0/0 (up): ip 172.172.123.4 dlci 203(0xCB,0x30B0), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.1 dlci 203(0xCB,0x30B0), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.3 dlci 203(0xCB,0x30B0), static, CISCO, status defined, active ! Main Hub site which all traffic flows through R3#sh run int s0/0 Building configuration... Current configuration : 256 bytes ! interface Serial0/0 ip address 172.172.123.3 255.255.255.0 encapsulation frame-relay clock rate 2000000 frame-relay map ip 172.172.123.4 304 frame-relay map ip 172.172.123.2 302 frame-relay map ip 172.172.123.1 301 no frame-relay inverse-arp end R3#sh fram map Serial0/0 (up): ip 172.172.123.1 dlci 301(0x12D,0x48D0), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.2 dlci 302(0x12E,0x48E0), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.4 dlci 304(0x130,0x4C00), static, CISCO, status defined, active ! Spoke site R4#sh run int s0/0 Building configuration... Current configuration : 256 bytes ! interface Serial0/0 ip address 172.172.123.4 255.255.255.0 encapsulation frame-relay clock rate 2000000 frame-relay map ip 172.172.123.3 403 frame-relay map ip 172.172.123.2 403 frame-relay map ip 172.172.123.1 403 no frame-relay inverse-arp end R4#sh fram map Serial0/0 (up): ip 172.172.123.3 dlci 403(0x193,0x6430), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.2 dlci 403(0x193,0x6430), static, CISCO, status defined, active Serial0/0 (up): ip 172.172.123.1 dlci 403(0x193,0x6430), static, CISCO, status defined, active