#3732 HIGH First D: arp and NDP timeouts on Linux are bizzarely short.

Zarro Boogs per Child bugtracker at laptop.org
Tue Oct 2 00:29:34 EDT 2007


#3732: arp and NDP timeouts on Linux are bizzarely short.
---------------------+------------------------------------------------------
  Reporter:  wad     |       Owner:  cjb                   
      Type:  defect  |      Status:  new                   
  Priority:  high    |   Milestone:  First Deployment, V1.0
 Component:  distro  |     Version:                        
Resolution:          |    Keywords:                        
  Verified:  0       |  
---------------------+------------------------------------------------------

Comment(by gnu):

 Jim, your assertion is incorrect that ipv6 Neighbor Discovery Protocol
 (NDP) is like ARP.  NDP and router advertisements use *multicast* packets,
 not broadcasts.  They are carefully tuned so that they should only wake up
 the nodes which they are addressed to.  (The IPv6 designers learned from
 the mistakes of IPv4.)

 See [http://www.ietf.org/rfc/rfc4861.txt NDP RFC 4861]'s use of the
 "solicited-node multicast address", section 7.2.2 (page 60).  This address
 is computed from the target IPv6 address via the algorithm in
 [http://www.ietf.org/rfc/rfc4291.txt IPv6 Address Architecture RFC 4291],
 page 15-16.  It uses a link-local multicast IPv6 address whose low 24 bits
 match the destination IPv6 address.  This is translated to a multicast
 Ethernet MAC address 0x3333nnnnnnnn whose low 32 bits match the multicast
 IPv6 address (see [http://www.ietf.org/rfc/rfc2464.txt IPv6-on-Ethernet
 RFC 2464], page 4.  As long as the chip implements any kind of half-assed
 or better multicast address matching, the only node that will see this
 multicast is the node the NDP packet is looking for.

 Therefore, the wireless chip *should* be set up to wake-on-multicast.  It
 should have its multicast address table or hashtable preloaded with the
 subset of multicasts of interest to this node.  All existing Ethernet
 drivers already preload these addresses, on every Ethernet chip that
 supports multicast.

 This would allow IPv6 Neighbor Discovery to wake the laptop when
 suspended, fixing this bug for IPv6.

 [As for IPv4:  I think that, though it's a layer violation, OLPC/Cozybit
 should implement a wake-on-wlan hack that passes the node's IPv4 address
 to the chip, and asks it to wake-on-arp-for-that-address.  It could be
 made arbitrarily simple:  pass a byte value and an offset within the
 packet, and only wake on broadcasts where that byte matches.  Pointing it
 at the low byte of the IP address in an ARP packet would only wake you for
 1/256th of random broadcast packets; and in real life they are seldom
 random, so you win bigger.  This would eliminate the need for unusual "arp
 and NDP timeouts" in every host or gateway that wants to initiate a
 connection to an OLPC laptop.]

-- 
Ticket URL: <https://dev.laptop.org/ticket/3732#comment:13>
One Laptop Per Child <https://dev.laptop.org>
OLPC bug tracking system



More information about the Bugs mailing list