kern/125920: Kernel Routing Table loses Ethernet LInk status for vlan, but not for alias

Chris Foote chris at inetd.com.au
Thu Jul 24 06:20:02 UTC 2008


>Number:         125920
>Category:       kern
>Synopsis:       Kernel Routing Table loses Ethernet LInk status for vlan, but not for alias
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jul 24 06:20:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Chris Foote
>Release:        RELENG_7
>Organization:
Inetd Pty Ltd
>Environment:
FreeBSD cat.inetd.com.au 7.0-STABLE FreeBSD 7.0-STABLE #0: Mon Jul 14 23:39:46 CST 2008     root at newcat.inetd.com.au:/usr/obj/usr/src/sys/GENERIC  i386
>Description:
Every 5 minutes, the kernel loses link status and arp for the main address of the vlan on an fxp ethernet interface, when the vlan interface has an alias.  5 minutes later the link status is ok and arp is available again.

[root at cat /usr/src/sys/netinet]# ifconfig vlan2
vlan2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:0f:ea:4e:1b:7c
        inet 210.10.97.14 netmask 0xfffffff0 broadcast 210.10.97.15
        inet 203.161.156.30 netmask 0xffffffe0 broadcast 203.161.156.31
        media: Ethernet 100baseTX
        status: active
        vlan: 4 parent interface: fxp3

when it's not working, I get:

kernel routing
--------------
[root at cat ~]# netstat -nr | grep "vlan2 "
203.161.156.0      ff:ff:ff:ff:ff:ff  UHLWb       1      115  vlan2 =>
203.161.156.1      00:16:36:e9:18:44  UHLW        1        1  vlan2   1161
203.161.156.11     00:16:36:e9:18:44  UHLW        1      178  vlan2    761
203.161.156.12     00:16:36:e9:18:44  UHLW        1  5219306  vlan2    590
203.161.156.23     00:16:36:61:53:a8  UHLW        1       13  vlan2   1161
203.161.156.25     00:1b:24:5c:12:f1  UHLW        1     9902  vlan2   1185
203.161.156.28     00:16:36:e9:18:44  UHLW        1   409551  vlan2   1105
203.161.156.29     00:16:36:61:53:a8  UHLW        1     2899  vlan2   1008
210.10.97.1        210.10.97.14       UGHW3       0       21  vlan2   3599
210.10.97.2        210.10.97.14       UGHW3       0       26  vlan2   3599
210.10.97.3        210.10.97.14       UGHW3       0        3  vlan2   3591
210.10.97.4        210.10.97.14       UGHW3       0       39  vlan2   3599
210.10.97.5        210.10.97.14       UGHW3       0       15  vlan2   3600
210.10.97.6        210.10.97.14       UGHW3       0      136  vlan2   3600
210.10.97.7        210.10.97.14       UGHW3       0        3  vlan2   3591
210.10.97.8        210.10.97.14       UGHW3       0        3  vlan2   3591
210.10.97.9        210.10.97.14       UGHW3       0        3  vlan2   3591
210.10.97.10       210.10.97.14       UGHW3       0        7  vlan2   3591
210.10.97.11       210.10.97.14       UGHW3       0       43  vlan2   3600
210.10.97.12       210.10.97.14       UGHW3       0        3  vlan2   3591
210.10.97.13       210.10.97.14       UGHW3       0        3  vlan2   3591
210.10.97.15       210.10.97.14       UGHW3b      0        3  vlan2   3591


arp table
---------
[root at cat /etc]# arp -an |grep "vlan2 "
? (203.161.156.0) at ff:ff:ff:ff:ff:ff on vlan2 permanent [vlan]
? (203.161.156.1) at 00:16:36:e9:18:44 on vlan2 [vlan]
? (203.161.156.11) at 00:16:36:e9:18:44 on vlan2 [vlan]
? (203.161.156.12) at 00:16:36:e9:18:44 on vlan2 [vlan]
? (203.161.156.23) at 00:16:36:61:53:a8 on vlan2 [vlan]
? (203.161.156.25) at 00:1b:24:5c:12:f1 on vlan2 [vlan]
? (203.161.156.28) at 00:16:36:e9:18:44 on vlan2 [vlan]
? (203.161.156.29) at 00:16:36:61:53:a8 on vlan2 [vlan]
? (203.161.156.31) at ff:ff:ff:ff:ff:ff on vlan2 permanent [vlan]

zebra
-----
cat.inetd.com.au# show ip route 210.10.97.0
Routing entry for 210.10.97.0/28
  Known via "connected", distance 0, metric 1
    directly connected, vlan2

and I get this in my syslog:

Jul 24 14:34:29 cat kernel: arpresolve: can't allocate route for
210.10.97.14
Jul 24 14:34:29 cat kernel: arplookup 210.10.97.14 failed: host is not on
local network

which is particularly interesting given that 210.10.97.14 is the main IP address
assigned to the vlan interface.

and I can't ping it when the network stops working:

[root at cat /etc]# ping -c 2 210.10.97.14
PING 210.10.97.14 (210.10.97.14): 56 data bytes
ping: sendto: Network is unreachable
ping: sendto: Network is unreachable
^C
--- 210.10.97.14 ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss


When it's working, I get:

kernel routing
--------------
[root at cat ~]# netstat -nr | grep "vlan2 "
203.161.156.0      ff:ff:ff:ff:ff:ff  UHLWb       1      115  vlan2 =>
203.161.156.11     00:16:36:e9:18:44  UHLW        1       67  vlan2   1024
203.161.156.12     00:16:36:e9:18:44  UHLW        1  5184446  vlan2    853
203.161.156.23     00:16:36:61:53:a8  UHLW        1       12  vlan2    225
203.161.156.25     00:1b:24:5c:12:f1  UHLW        1     9901  vlan2   1099
203.161.156.28     00:16:36:e9:18:44  UHLW        1   406555  vlan2    573
203.161.156.29     00:16:36:61:53:a8  UHLW        1     2890  vlan2   1129
210.10.97.0        ff:ff:ff:ff:ff:ff  UHLWb       1        3  vlan2 =>
210.10.97.1        00:02:44:47:8d:3f  UHLW        1     1219  vlan2   1140
210.10.97.2        00:16:36:e9:18:44  UHLW        1       57  vlan2   1139
210.10.97.3        00:00:21:ce:d9:4f  UHLW        1       27  vlan2   1136
210.10.97.4        00:1b:24:5c:12:f1  UHLW        1      201  vlan2   1139
210.10.97.5        00:16:36:61:53:a8  UHLW        1       17  vlan2   1164
210.10.97.6        00:16:36:61:53:a8  UHLW        1      422  vlan2   1134
210.10.97.8        00:0e:0c:77:53:4f  UHLW        1        1  vlan2   1166
210.10.97.10       00:16:36:e9:18:44  UHLW        1        6  vlan2   1181
210.10.97.11       00:16:36:61:53:a8  UHLW        1      100  vlan2   1134

arp table
---------
[root at cat /etc]# arp -an |grep "vlan2 "
? (203.161.156.0) at ff:ff:ff:ff:ff:ff on vlan2 permanent [vlan]
? (203.161.156.1) at 00:16:36:e9:18:44 on vlan2 [vlan]
? (203.161.156.11) at 00:16:36:e9:18:44 on vlan2 [vlan]
? (203.161.156.12) at 00:16:36:e9:18:44 on vlan2 [vlan]
? (203.161.156.23) at 00:16:36:61:53:a8 on vlan2 [vlan]
? (203.161.156.25) at 00:1b:24:5c:12:f1 on vlan2 [vlan]
? (203.161.156.28) at 00:16:36:e9:18:44 on vlan2 [vlan]
? (203.161.156.29) at 00:16:36:61:53:a8 on vlan2 [vlan]
? (203.161.156.31) at ff:ff:ff:ff:ff:ff on vlan2 permanent [vlan]
? (210.10.97.1) at 00:02:44:47:8d:3f on vlan2 [vlan]
? (210.10.97.2) at 00:16:36:e9:18:44 on vlan2 [vlan]
? (210.10.97.4) at 00:1b:24:5c:12:f1 on vlan2 [vlan]
? (210.10.97.6) at 00:16:36:61:53:a8 on vlan2 [vlan]
? (210.10.97.11) at 00:16:36:61:53:a8 on vlan2 [vlan]

zebra
-----
cat.inetd.com.au# show ip route 210.10.97.0
Routing entry for 210.10.97.0/28
  Known via "connected", distance 0, metric 1
    directly connected, vlan2

Environment
-----------
source synced via cvsup to RELENG_7 at 0:00 July 14 UTC.

dmesg:
Copyright (c) 1992-2008 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 7.0-STABLE #0: Mon Jul 14 23:39:46 CST 2008
    root at newcat.inetd.com.au:/usr/obj/usr/src/sys/GENERIC
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Pentium(R) D CPU 3.40GHz (3400.14-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0xf65  Stepping = 5
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,C
MOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0xe49d<SSE3,RSVD2,MON,DS_CPL,EST,CNXT-ID,CX16,xTPR,PDCM>
  AMD Features=0x20100000<NX,LM>
  AMD Features2=0x1<LAHF>
  Cores per package: 2
real memory  = 1040121856 (991 MB)
avail memory = 1004187648 (957 MB)
ACPI APIC Table: <GBT    AWRDACPI>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1
ioapic0: Changing APIC ID to 2
ioapic0 <Version 2.0> irqs 0-23 on motherboard
kbd1 at kbdmux0
ath_hal: 0.9.20.3 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
acpi0: <GBT AWRDACPI> on motherboard
acpi0: [ITHREAD]
acpi0: Power Button (fixed)
acpi0: reservation of 0, a0000 (3) failed
acpi0: reservation of 100000, 3def0000 (3) failed
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1008-0x100b on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff,0x1000-0x10bf on acpi0
pci0: <ACPI PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0xb000-0xb007 mem 0xe8000000-0xefffffff,0xf2100000-0xf217ffff irq 16 at device 2.0 on pci0
agp0: <Intel 82865G (865G GMCH) SVGA controller> on vgapci0
agp0: detected 32636k stolen memory
agp0: aperture size is 128M
uhci0: <Intel 82801EB (ICH5) USB controller USB-A> port 0xa000-0xa01f irq 16 at device 29.0 on pci0
uhci0: [GIANT-LOCKED]
uhci0: [ITHREAD]
usb0: <Intel 82801EB (ICH5) USB controller USB-A> on uhci0
usb0: USB revision 1.0
uhub0: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb0
uhub0: 2 ports with 2 removable, self powered
uhci1: <Intel 82801EB (ICH5) USB controller USB-B> port 0xa400-0xa41f irq 19 at device 29.1 on pci0
uhci1: [GIANT-LOCKED]
uhci1: [ITHREAD]
usb1: <Intel 82801EB (ICH5) USB controller USB-B> on uhci1
usb1: USB revision 1.0
uhub1: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb1
uhub1: 2 ports with 2 removable, self powered
uhci2: <Intel 82801EB (ICH5) USB controller USB-C> port 0xa800-0xa81f irq 18 at device 29.2 on pci0
uhci2: [GIANT-LOCKED]
uhci2: [ITHREAD]
usb2: <Intel 82801EB (ICH5) USB controller USB-C> on uhci2
usb2: USB revision 1.0
uhub2: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb2
uhub2: 2 ports with 2 removable, self powered
uhci3: <Intel 82801EB (ICH5) USB controller USB-D> port 0xac00-0xac1f irq 16 at device 29.3 on pci0
uhci3: [GIANT-LOCKED]
uhci3: [ITHREAD]
usb3: <Intel 82801EB (ICH5) USB controller USB-D> on uhci3
usb3: USB revision 1.0
uhub3: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb3
uhub3: 2 ports with 2 removable, self powered
ehci0: <Intel 82801EB/R (ICH5) USB 2.0 controller> mem 0xf2180000-0xf21803ff irq 23 at device 29.7 on pci0
ehci0: [GIANT-LOCKED]
ehci0: [ITHREAD]
usb4: EHCI version 1.0
usb4: companion controllers, 2 ports each: usb0 usb1 usb2 usb3
usb4: <Intel 82801EB/R (ICH5) USB 2.0 controller> on ehci0
usb4: USB revision 2.0
uhub4: <Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1> on usb4
uhub4: 8 ports with 8 removable, self powered
pcib1: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci1: <ACPI PCI bus> on pcib1
fxp0: <Intel 82550 Pro/100 Ethernet> port 0x9000-0x903f mem 0xf1220000-0xf1220fff,0xf1200000-0xf121ffff irq 21 at device 1.0 on pci1
miibus0: <MII bus> on fxp0
inphy0: <i82555 10/100 media interface> PHY 1 on miibus0
inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp0: Ethernet address: 00:02:b3:41:57:8a
fxp0: [ITHREAD]
fxp1: <Intel 82558 Pro/100 Ethernet> port 0x9400-0x941f mem 0xf2000000-0xf2000fff,0xf1000000-0xf10fffff irq 22 at device 2.0 on pci1
miibus1: <MII bus> on fxp1
inphy1: <i82555 10/100 media interface> PHY 1 on miibus1
inphy1:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp1: Ethernet address: 00:04:ac:a3:ba:7a
fxp1: [ITHREAD]
fxp2: <Intel 82558 Pro/100 Ethernet> port 0x9800-0x981f mem 0xf2001000-0xf2001fff,0xf1100000-0xf11fffff irq 18 at device 3.0 on pci1
miibus2: <MII bus> on fxp2
inphy2: <i82555 10/100 media interface> PHY 1 on miibus2
inphy2:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp2: Ethernet address: 00:04:ac:98:1c:b2
fxp2: [ITHREAD]
fxp3: <Intel 82562ET (ICH5/ICH5R) Pro/100 VE Ethernet> port 0x9c00-0x9c3f mem 0xf1221000-0xf1221fff irq 20 at device 8.0 on pci1
miibus3: <MII bus> on fxp3
ukphy0: <Generic IEEE 802.3u media interface> PHY 1 on miibus3
ukphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp3: Ethernet address: 00:0f:ea:4e:1b:7c
fxp3: [ITHREAD]
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel ICH5 UDMA100 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xf000-0xf00f at device 31.1 on pci0
ata0: <ATA channel 0> on atapci0
ata0: [ITHREAD]
ata1: <ATA channel 1> on atapci0
ata1: [ITHREAD]
pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
pci0: <multimedia, audio> at device 31.5 (no driver attached)
cpu0: <ACPI CPU> on acpi0
acpi_perf0: <ACPI CPU Frequency Control> on cpu0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
cpu1: <ACPI CPU> on acpi0
est1: <Enhanced SpeedStep Frequency Control> on cpu1
est: CPU supports Enhanced Speedstep, but is not recognized.
est: cpu_vendor GenuineIntel, msr 112200001122
device_attach: est1 attach returned 6
p4tcc1: <CPU Frequency Thermal Control> on cpu1
acpi_button0: <Power Button> on acpi0
acpi_tz0: <Thermal Zone> on acpi0
sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sio0: type 16550A
sio0: [FILTER]
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
atkbd0: [ITHREAD]
pmtimer0 on isa0
orm0: <ISA Option ROMs> at iomem 0xcc000-0xd3fff,0xd4000-0xd57ff,0xd6000-0xd67ff,0xd7000-0xd77ff pnpid ORM0000 on isa0
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: Generic chipset (NIBBLE-only) in COMPATIBLE mode
ppbus0: <Parallel port bus> on ppc0
ppbus0: [ITHREAD]
plip0: <PLIP network interface> on ppbus0
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
ppc0: [GIANT-LOCKED]
ppc0: [ITHREAD]
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio1: configured irq 3 not in bitmap of probed irqs 0
sio1: port may not be enabled
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
Timecounters tick every 1.000 msec
acd0: DVDR <LITE-ON DVDRW SHM-165P6S/MS0P> at ata0-master UDMA66
ad2: 76318MB <Seagate ST380011A 3.06> at ata1-master UDMA100
SMP: AP CPU #1 Launched!
Trying to mount root from ufs:/dev/ad2s1a
ipfw2 (+ipv6) initialized, divert loadable, nat loadable, rule-based forwarding disabled, default to deny, logging disabled
arplookup 210.10.97.14 failed: host is not on local network
arpresolve: can't allocate route for 210.10.97.14
arplookup 210.10.97.14 failed: host is not on local network
arpresolve: can't allocate route for 210.10.97.14
arplookup 210.10.97.14 failed: host is not on local network
arpresolve: can't allocate route for 210.10.97.14
arplookup 210.10.97.14 failed: host is not on local network
arpresolve: can't allocate route for 210.10.97.14
arplookup 210.10.97.14 failed: host is not on local network
arpresolve: can't allocate route for 210.10.97.14



>How-To-Repeat:
You should be able to repeat this problem (not tested) by configuring
an ethernet alias onto an existing vlan interface.  It may need traffic
on the secondary network in order for ARP timeouts to occur.

e.g.:
ifconfig fxp0 up
ifconfig vlan0 create inet 10.10.10.1 netmask 255.255.255.0 vlan 2 vlandev fxp0
ifconfig vlan0 inet 192.168.100.1 netmask 255.255.255.0 alias

ping the 10.10.10.1 and it should stop responding after 5 minutes, then start again after 5 minutes.  You should get this in /var/log/messages:
arplookup 10.10.10.1 failed: host is not on local network
arpresolve: can't allocate route for 10.10.10.1

>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list