Gratuitous ARP increasing mbufs
Gregor Dreijer
gd at bluecubesystems.com
Mon Jun 10 15:29:16 UTC 2013
Hi,
I am running a system on FreeBSD 9.1-RELEASE.
I have a device on the network which is sending gratuitous ARP messages
(used by a wireless mesh network for a "bridge-loop avoidance" protocol)
every 10 seconds. This causes the mbuf clusters to slowly increase on
FreeBSD, until the maximum is reached, which disables the networking. I
am running netstat -m to keep track of the mbuf run away / leak.
My understanding is that mbufs are allocated to hold these messages, but
since they are "replys" they are never used.
I am now using ipfw, to drop all ARP messages with the following rule:
ipfw add 999 deny layer2 mac-type arp MAC ff:ff:ff:ff:ff:ff
ac:86:74:02:8a:ff via vte0
It solves the problem. Luckily there are only offending gratuitous ARP
messages from this MAC address, so I don't loose any ARP messages that I
would need.
I believe this might be a bug in FreeBSD. Shouldn't these gratuitous ARP
packets be handled in a more elegant way? The increasing mbufs doesn't
seem right. A timeout on these mbufs or a maximum number of mbufs that
can be allocated for this type of packet might solve this problem.
I just wanted to bring this to the developers attention.
Thanks very much,
Greg
The details of the ARP message are as follows (from Wireshark):
No. Time Source Destination Protocol Length
Info
2450 4642.007546000 OpenMesh_02:8a:ff Broadcast ARP 60
Gratuitous ARP for 0.0.0.0 (Reply)
Frame 2450: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on
interface 0
Ethernet II, Src: OpenMesh_02:8a:ff (ac:86:74:02:8a:ff), Dst: Broadcast
(ff:ff:ff:ff:ff:ff)
Destination: Broadcast (ff:ff:ff:ff:ff:ff)
Address: Broadcast (ff:ff:ff:ff:ff:ff)
.... ..1. .... .... .... .... = LG bit: Locally administered
address (this is NOT the factory default)
.... ...1 .... .... .... .... = IG bit: Group address
(multicast/broadcast)
Source: OpenMesh_02:8a:ff (ac:86:74:02:8a:ff)
Address: OpenMesh_02:8a:ff (ac:86:74:02:8a:ff)
.... ..0. .... .... .... .... = LG bit: Globally unique address
(factory default)
.... ...0 .... .... .... .... = IG bit: Individual address
(unicast)
Type: ARP (0x0806)
Padding: 000000000000000000000000000000000000
Address Resolution Protocol (reply/gratuitous ARP)
Hardware type: Ethernet (1)
Protocol type: IP (0x0800)
Hardware size: 6
Protocol size: 4
Opcode: reply (2)
[Is gratuitous: True]
Sender MAC address: 43:05:43:05:00:00 (43:05:43:05:00:00)
Sender IP address: 0.0.0.0 (0.0.0.0)
Target MAC address: ff:43:05:02:a2:0c (ff:43:05:02:a2:0c)
Target IP address: 0.0.0.0 (0.0.0.0)
More information about the freebsd-net
mailing list