2016-05-19 13:32 GMT-03:00 Ivan Solonin <[email protected]>:
> Hello!
>
> I can observe this problem on armish hardware.
> Desc.: eigrpd and ladvd have their specific Cisco's packets. Both can send
> it, but cannot see such packets from other peer devices.
>
> I've tried to reproduce on Thecus N2100 with name rps1.ILAN1.rLAN and EIGRP
> address 66.8.0.69
>
> 1.How to reproduce:
> please start eigrpd with any config on armish platform.
> my config:
>
> # cat /etc/eigrpd40.conf
> # $OpenBSD: eigrpd.conf,v 1.2 2015/12/25 21:50:07 gsoares Exp $
>
> # global configuration
> router-id 66.8.0.69
> rdomain 40
> # fib-update yes
> # fib-priority-internal 28
> # fib-priority-external 52
>
> # IPv4
> address-family ipv4 {
>         autonomous-system 800 {
>                 maximum-paths 4
>                 variance 8
>
>                 default-metric 100000 10 255 1 1500
> #               redistribute connected
>
>                 interface vlan40 {
>                         hello-interval 3
>                         holdtime 10
>                         delay 20
>                         bandwidth 1000000
>                 }
>         }
> }
> #
>
> 2.logs
> log and eigrpctl from affected Thecus N2100:
>
> # cat /var/mfs/log/eigrpd
> May 19 21:02:32 rps1 eigrpd[21523]: startup
> May 19 21:02:32 rps1 eigrpd[14924]: eigrp_if_start: vlan40 as 800 family
> ipv4
> May 19 21:02:32 rps1 eigrpd[14924]: if_join_ipv4_group: interface vlan40
> addr 224.0.0.10
> May 19 21:02:32 rps1 eigrpd[1542]: rt_new: prefix 66.8.0.0/24
> May 19 21:02:32 rps1 eigrpd[1542]: route_new: prefix 66.8.0.0/24 via
> connected distance (7680/0)
> May 19 21:02:38 rps1 eigrpd[14924]: recv_packet: unknown neighbor
> May 19 21:03:12 rps1 last message repeated 16 times
> May 19 21:05:14 rps1 last message repeated 50 times
> May 19 21:15:18 rps1 last message repeated 367 times
> #
>
> # eigrpctl sh int
> AF   AS    Interface   Address            Linkstate  Uptime    nc
> ipv4 800   vlan40      66.8.0.69/24       active     00:06:57   0
>
> # eigrpctl sh nei
> AF   AS    Address            Iface       Holdtime     Uptime
>
> #
>
>
> log and eigrpctl from EIGRP i386 neighbour:
>
> May 19 21:05:42 rps0 eigrpd[5962]: startup
> May 19 21:05:42 rps0 eigrpd[214]: eigrp_if_start: vlan40 as 800 family ipv4
> May 19 21:05:42 rps0 eigrpd[214]: if_join_ipv4_group: interface vlan40 addr
> 224.0.0.10
> May 19 21:05:42 rps0 eigrpd[16904]: rt_new: prefix 66.8.0.0/24
> May 19 21:05:42 rps0 eigrpd[16904]: route_new: prefix 66.8.0.0/24 via
> connected distance (7680/0)
> May 19 21:05:43 rps0 eigrpd[214]: nbr_new: interface vlan40 addr 66.8.0.7 as
> 800
> May 19 21:05:43 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.7 AS 800 seq 1 ack 0
> May 19 21:05:44 rps0 eigrpd[214]: nbr_new: interface vlan40 addr 66.8.0.69
> as 800
> May 19 21:05:44 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.69 AS 800 seq 2 ack 0
> May 19 21:05:44 rps0 eigrpd[214]: nbr_new: interface vlan40 addr 66.8.0.1 as
> 800
> May 19 21:05:44 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.1 AS 800 seq 3 ack 0
> May 19 21:05:46 rps0 eigrpd[214]: rtp_process_ack: nbr 66.8.0.7 ack 1
> May 19 21:05:46 rps0 eigrpd[214]: recv_packet: type UPDATE nbr 66.8.0.7 AS
> 800 seq 209 ack 1
> May 19 21:05:46 rps0 eigrpd[214]: recv_update: INIT flag is set
> May 19 21:05:46 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.7 AS 800 seq 4 ack 209
> May 19 21:05:46 rps0 eigrpd[214]: rtp_process_ack: nbr 66.8.0.1 ack 3
> May 19 21:05:46 rps0 eigrpd[214]: recv_packet: type UPDATE nbr 66.8.0.1 AS
> 800 seq 285 ack 3
> May 19 21:05:46 rps0 eigrpd[214]: recv_update: INIT flag is set
> May 19 21:05:46 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.1 AS 800 seq 5 ack 285
> May 19 21:05:46 rps0 eigrpd[214]: rtp_process_ack: nbr 66.8.0.7 ack 4
> May 19 21:05:46 rps0 eigrpd[214]: rtp_process_ack: nbr 66.8.0.1 ack 5
> May 19 21:05:46 rps0 eigrpd[214]: recv_packet: type UPDATE nbr 66.8.0.7 AS
> 800 seq 210 ack 4
> May 19 21:05:46 rps0 eigrpd[214]: recv_packet: type UPDATE nbr 66.8.0.1 AS
> 800 seq 286 ack 5
> May 19 21:05:49 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.69 AS 800 seq 2 ack 0
> May 19 21:06:24 rps0 last message repeated 7 times
> May 19 21:06:59 rps0 last message repeated 7 times
> May 19 21:07:04 rps0 eigrpd[214]: rtp_retrans_timer: retry limit exceeded,
> nbr 66.8.0.69
> May 19 21:07:04 rps0 eigrpd[214]: nbr_del: addr 66.8.0.69
> May 19 21:07:04 rps0 eigrpd[16904]: rde_dispatch_imsg: cannot find rde
> neighbor
> May 19 21:07:05 rps0 eigrpd[214]: nbr_new: interface vlan40 addr 66.8.0.69
> as 800
> May 19 21:07:05 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.69 AS 800 seq 6 ack 0
> May 19 21:07:30 rps0 last message repeated 5 times
> May 19 21:08:21 rps0 last message repeated 10 times
> May 19 21:08:26 rps0 eigrpd[214]: rtp_retrans_timer: retry limit exceeded,
> nbr 66.8.0.69
> May 19 21:08:26 rps0 eigrpd[214]: nbr_del: addr 66.8.0.69
> May 19 21:08:26 rps0 eigrpd[16904]: rde_dispatch_imsg: cannot find rde
> neighbor
> May 19 21:08:27 rps0 eigrpd[214]: nbr_new: interface vlan40 addr 66.8.0.69
> as 800
> May 19 21:08:27 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.69 AS 800 seq 7 ack 0
> May 19 21:09:02 rps0 last message repeated 7 times
> May 19 21:09:42 rps0 last message repeated 8 times
> May 19 21:09:47 rps0 eigrpd[214]: rtp_retrans_timer: retry limit exceeded,
> nbr 66.8.0.69
> May 19 21:09:47 rps0 eigrpd[214]: nbr_del: addr 66.8.0.69
> May 19 21:09:47 rps0 eigrpd[16904]: rde_dispatch_imsg: cannot find rde
> neighbor
> May 19 21:09:48 rps0 eigrpd[214]: nbr_new: interface vlan40 addr 66.8.0.69
> as 800
> May 19 21:09:48 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.69 AS 800 seq 8 ack 0
> May 19 21:10:23 rps0 last message repeated 7 times
> May 19 21:11:03 rps0 last message repeated 8 times
> May 19 21:11:08 rps0 eigrpd[214]: rtp_retrans_timer: retry limit exceeded,
> nbr 66.8.0.69
> May 19 21:11:08 rps0 eigrpd[214]: nbr_del: addr 66.8.0.69
> May 19 21:11:08 rps0 eigrpd[16904]: rde_dispatch_imsg: cannot find rde
> neighbor
> May 19 21:11:09 rps0 eigrpd[214]: nbr_new: interface vlan40 addr 66.8.0.69
> as 800
> May 19 21:11:09 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.69 AS 800 seq 9 ack 0
> May 19 21:11:44 rps0 last message repeated 7 times
> May 19 21:12:24 rps0 last message repeated 8 times
> May 19 21:12:29 rps0 eigrpd[214]: rtp_retrans_timer: retry limit exceeded,
> nbr 66.8.0.69
> May 19 21:12:29 rps0 eigrpd[214]: nbr_del: addr 66.8.0.69
> May 19 21:12:29 rps0 eigrpd[16904]: rde_dispatch_imsg: cannot find rde
> neighbor
> May 19 21:12:31 rps0 eigrpd[214]: nbr_new: interface vlan40 addr 66.8.0.69
> as 800
> May 19 21:12:31 rps0 eigrpd[214]: send_packet: type UPDATE iface vlan40 nbr
> 66.8.0.69 AS 800 seq 10 ack 0
> May 19 21:13:01 rps0 last message repeated 6 times
>
> # eigrpctl sh int
> AF   AS    Interface   Address            Linkstate  Uptime    nc
> ipv4 800   vlan40      66.8.0.68/24       active     00:06:47   2
>
> # eigrpctl sh ne
> AF   AS    Address            Iface       Holdtime     Uptime
> ipv4 800   66.8.0.1           vlan40      15         00:06:45
> ipv4 800   66.8.0.7           vlan40      15         00:06:45
>
> #
>
>
> log, show and conig part from Cisco IOS 15.1(4)M9 neighbour:
>
> Log Buffer (65536 bytes):
>
> May 19 21:01:22.066: %OSPF-5-ADJCHG: Process 40, Nbr 0.8.0.69 on
> FastEthernet4.40 from INIT to DOWN, Neighbor Down: Dead timer expired
> May 19 21:02:38.228: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is up: new adjacency
> May 19 21:02:42.624: %OSPF-5-ADJCHG: Process 40, Nbr 0.8.0.69 on
> FastEthernet4.40 from LOADING to FULL, Loading Done
> May 19 21:03:57.762: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is down: retry limit exceeded
> May 19 21:03:59.462: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is up: new adjacency
> May 19 21:05:18.985: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is down: retry limit exceeded
> May 19 21:05:20.677: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is up: new adjacency
> May 19 21:05:44.736: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.68
> (FastEthernet4.40) is up: new adjacency
> May 19 21:05:52.385: %OSPF-5-ADJCHG: Process 40, Nbr 0.8.0.68 on
> FastEthernet4.40 from LOADING to FULL, Loading Done
> May 19 21:06:40.199: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is down: retry limit exceeded
> May 19 21:06:41.887: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is up: new adjacency
> May 19 21:08:01.410: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is down: retry limit exceeded
> May 19 21:08:03.162: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is up: new adjacency
> May 19 21:09:22.685: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is down: retry limit exceeded
> May 19 21:09:24.529: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is up: new adjacency
> May 19 21:10:44.063: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is down: retry limit exceeded
> May 19 21:10:45.743: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is up: new adjacency
> May 19 21:12:05.270: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is down: retry limit exceeded
> May 19 21:12:06.950: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is up: new adjacency
> May 19 21:13:26.472: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is down: retry limit exceeded
> May 19 21:13:28.197: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is up: new adjacency
> May 19 21:14:47.719: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is down: retry limit exceeded
> May 19 21:14:49.639: %DUAL-5-NBRCHANGE: EIGRP-IPv4 800: Neighbor 66.8.0.69
> (FastEthernet4.40) is up: new adjacency
> i0r1W#
>
>
> i0r1W#sh ip eigrp vrf pI int
> EIGRP-IPv4 VR(rLAN) Address-Family Interfaces for AS(800)
>            VRF(pI)
>                         Xmit Queue   Mean   Pacing Time   Multicast
> Pending
> Interface        Peers  Un/Reliable  SRTT   Un/Reliable   Flow Timer
> Routes
> Fa4.40             3        0/0       701       0/1            0           0
> i0r1W#sh ip eigrp vrf pI nei
> EIGRP-IPv4 VR(rLAN) Address-Family Neighbors for AS(800)
>            VRF(pI)
> H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
>                                             (sec)         (ms)       Cnt Num
> 1   66.8.0.69               Fa4.40             7 00:00:29    1  5000  1  0
> 2   66.8.0.68               Fa4.40             7 00:09:34  108   648  0  4
> 0   66.8.0.1                Fa4.40            13 2d16h    1996  5000  0  276
> i0r1W#
>
>
> router eigrp rLAN
>  !
>  address-family ipv4 unicast vrf pI autonomous-system 800
>   !
>   topology base
>   exit-af-topology
>   network 66.8.0.0 0.0.0.255
>  exit-address-family
>  !
> !
>
> 3.dmesg
>
> OpenBSD 5.9 (GENERIC) #2: Sun Feb 28 21:28:04 CET 2016
>     [email protected]:/usr/src/sys/arch/armish/compile/GENERIC
> real mem  = 536870912 (512MB)
> avail mem = 518807552 (494MB)
> warning: no entropy supplied by boot loader
> mainbus0 at root
> cpu0 at mainbus0: i80219 600MHz step A-0 (XScale core)
> cpu0: DC enabled IC enabled WB enabled LABT branch prediction enabled
> cpu0: 32KB(32b/l,32way) I-cache, 32KB(32b/l,32way) wr-back-lock D-cache
> iopxs0 at mainbus0: Thecus Nx100: i80321 I/O Processor
> iopiic0 at iopxs0: I2C controller
> iic0 at iopiic0
> ricohrtc0 at iic0 addr 0x32: RICOH RS5C372[AB] Real-time Clock
> pcaled0 at iic0 addr 0x60: PCA9532 LED controller
> gpio0 at pcaled0: 16 pins
> fintek0 at iic0 addr 0x2e: F75375 rev 1.5
> spdmem0 at iic0 addr 0x52: 512MB DDR SDRAM non-parity PC2700CL2.5
> pci0 at iopxs0
> re0 at pci0 dev 1 function 0 "Realtek 8169" rev 0x10: RTL8169/8110SB
> (0x1000), irq 27, address 00:14:fd:30:19:7e
> rgephy0 at re0 phy 7: RTL8169S/8110S/8211 PHY, rev. 3
> re1 at pci0 dev 2 function 0 "Realtek 8169" rev 0x10: RTL8169/8110SB
> (0x1000), irq 30, address 00:14:fd:30:19:7f
> rgephy1 at re1 phy 7: RTL8169S/8110S/8211 PHY, rev. 3
> pciide0 at pci0 dev 3 function 0 "CMD Technology SiI3512 SATA" rev 0x01: DMA
> pciide0: using irq 29 for native-PCI interrupt
> pciide0: port 0: 1.5Gb/s
> wd0 at pciide0 channel 0 drive 0: <Hitachi HTS541640J9SA00>
> wd0: 16-sector PIO, LBA48, 38154MB, 78140160 sectors
> wd0(pciide0:0:0): using BIOS timings, Ultra-DMA mode 5
> pciide0: port 1: 1.5Gb/s
> wd1 at pciide0 channel 1 drive 0: <EHSASMA008GB>
> wd1: 1-sector PIO, LBA, 7551MB, 15465744 sectors
> wd1(pciide0:1:0): using BIOS timings, Ultra-DMA mode 6
> uhci0 at pci0 dev 4 function 0 "VIA VT83C572 USB" rev 0x62: irq 27
> uhci1 at pci0 dev 4 function 1 "VIA VT83C572 USB" rev 0x62: irq 27
> ehci0 at pci0 dev 4 function 2 "VIA VT6202 USB" rev 0x65: irq 29
> usb0 at ehci0: USB revision 2.0
> uhub0 at usb0 "VIA EHCI root hub" rev 2.00/1.00 addr 1
> "Intel PRO/Wireless 2200BG" rev 0x05 at pci0 dev 5 function 0 not configured
> usb1 at uhci0: USB revision 1.0
> uhub1 at usb1 "VIA UHCI root hub" rev 1.00/1.00 addr 1
> usb2 at uhci1: USB revision 1.0
> uhub2 at usb2 "VIA UHCI root hub" rev 1.00/1.00 addr 1
> gpio at iopxs0 not configured
> obio0 at mainbus0
> com0 at obio0 addr 0xfe800000 intr 28: ns16550a, 16 byte fifo
> com0: console
> vscsi0 at root
> scsibus0 at vscsi0: 256 targets
> softraid0 at root
> scsibus1 at softraid0: 256 targets
> boot device: wd0
> root on wd0a (f9c62c5410eccb2d.a) swap on wd0b dump on wd0b
>
> 4. The same problem I can observe with ladvd-1.0.4p3 from packages tree.
> First time this problem with ladvd I've observed a long time ago in 5.1
> version of OpenBSD, but doesn't pay attention to it.
>
> view CDP devices from armish platform:
>
> # ladvdc
> Capability Codes:
>         r - Repeater, B - Bridge, H - Host, R - Router, S - Switch,
>         W - WLAN Access Point, C - DOCSIS Device, T - Telephone, O - Other
>
> Device ID            Local Intf    Proto   Hold-time    Capability    Port
> ID
> #
>
> this device from Cisco Catalyst 2960:
>
> i1sw0#sh cdp n
> Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
>                   S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,
>                   D - Remote, C - CVTA, M - Two-port Mac Relay
>
> Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
> i1s0.ILAN0.rLAN  Fas 0/12          167               H    OpenBSD 5 rl0
> rps1.ILAN1.rLAN  Fas 0/22          173               R    OpenBSD 5 re0
> rps0.ILAN1.rLAN  Fas 0/21          158               R    OpenBSD 5 re0
> i0sw0.rLAN       Fas 0/1           140              S I   WS-C2960- Fas 0/1
> i1sw0#sh cdp e rps1.ILAN1.rLAN
> -------------------------
> Device ID: rps1.ILAN1.rLAN
> Entry address(es):
>   IP address: 10.33.2.2
> Platform: OpenBSD 5.9 armish,  Capabilities: Router
> Interface: FastEthernet0/22,  Port ID (outgoing port): re0
> Holdtime : 160 sec
>
> Version :
> OpenBSD 5.9 N2100.5.9.conf#0 armish
>
> advertisement version: 2
> Duplex: full
> Power Available TLV:
>
>     Power request id: 0, Power management id: 0, Power available: 0, Power
> management level: 0
> Management address(es):
>
> i1sw0#
>
>
> PS: 66.8.0.0/24 vlan40 is my internal Internet emulation subnetwork
> (pseudoInternet).

Hi Ivan,

Pretty interesting. Does this bug happen only on armish? Is eigrpd
working fine in i386 for you?

The error that appeared multiple times in your log indicates one of
the following two problems:
* eigrpd is receiving non-hello packets from a non-existing neighbor;
* eigrpd is receiving hello packets with a non-zero ACK number from a
non-existing neighbor.

Right now I don't have a theory for why this is happening. We can
discard the possibility of corrupted data because these packets passed
the EIGRP checksum test. I'll investigate this later and let you know
if I find something.

> Could you add -s option to eigrpd like in ospfd in order to run
> multiple instances of eigrpd.

eigrpd(8) already supports multiple instances: http://man.openbsd.org/eigrpd.8

Cheers,
-- 
Renato Westphal

Reply via email to