Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Jul 2003 00:18:43 -0700
From:      Wes Peters <wes@softweyr.com>
To:        Chuck Swiger <cswiger@mac.com>
Cc:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   Re: broadcast udp packets ...
Message-ID:  <200307170018.43157.wes@softweyr.com>
In-Reply-To: <3F149303.1010408@mac.com>
References:  <200307151709.h6FH9UOW055742@hole.shrew.net> <200307151548.48778.wes@softweyr.com> <3F149303.1010408@mac.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 15 July 2003 04:49 pm, Chuck Swiger wrote:
> Wes Peters wrote:
> [ ... ]
>
> > The idea is, we have listener on each ethernet interface listening
> > via a bpf.  The listener listens for an 'appliance discovery'
> > packet which is broadcast by the console application running on the
> > admin's workstation.  When we receive this discovery packet, we're
> > supposed to reply back with a broadcast packet that says 'here I
> > am' so the console can get our MAC address.  The console
> > application does some special h0h0 magic of it's own then sends us
> > back another broadcast message that has IP addresses for all 3
> > interfaces.
>
> Is "h0h0 magic" another term for ARP and RARP?  :-)  Have you seen
> RFC-903?

No, "h0h0 magic" is another term for having asked the user of the box a 
lot of questions about how he's going to use it and having gotten from 
him the IP addresses 1, 2, or all 3 of the physical interfaces will 
use.  It's a box that in various configurations can be a host, a 
bridge, a router, or a proxy, each with a possible private "management" 
interface, or maybe a DMZ port.

> > It's a wonderful idea but it doesn't work.  This seems in keeping
> > with the spirit of BOOTP, DHCP, et al, but is explicitly designed
> > to assign a permanent address to an appliance that cannot know it's
> > boot address when configured and cannot really predict which of the
> > 3 interfaces it might receive an address from.
>
> Yes, indeed.  Of course, there is the issue of how an IP-based reply
> should be addressed to an interface which is UP but does not have an
> IP address configured as yet?

See RFC 919.

> [ ... ]
>
> > So, in short, the IP address 255.255.255.255 is a special case that
> > isn't handled as a special case by the ip_output code.  I propose
> > to change the code so that a packet sent to destination address
> > 255.255.255.255 (aka INADDR_BROADCAST) be handled specially.   Any
> > such packet will be sent to destination address 255.255.255.255 on
> > each interface that is marked UP and BROADCAST, with the ip src
> > address set to the currently configured primary ip address of the
> > interface, even if this is 0.0.0.0.  This special case will not
> > call rtalloc or do any other route lookups.
>
> Agreed with regard to not performing any routing.  I don't think of
> sending to INADDR_BROADCAST as a special case, so much as a
> generalization of sending to the network broadcast address, only for
> all networks.  Or a single network with no routing and no subnet
> mask, which people using pure layer-2 switching instead of layer-3
> routing sometimes do.  [Such networks are wacky.  You tend to
> identify machines by MAC or via non-IP protocols... ]

Again, see RFC 919.

> One concern I have is thinking about too tricky special cases and not
> getting the basics correct.  For instance, let's say I only have one
> interface up, and it's point-to-point, not broadcast: if something
> sends IP traffic to 255.255.255.255, shouldn't a packet go out with
> the DST address of the PTP peer?

If it's not configured for BROADCASTing, it probably shouldn't get the 
packet at all.  This probably includes all point-to-point links, but 
the only ptp configuration I have right now is a VPN.  The VPN 
interface does not typically have the interface configured for 
BROADCAST.

> After all, the point of sending to 255.255.255.255 is that you are
> notationally trying to "send traffic to all hosts that localhost can
> reach" (and "are willing to hear").  The way to "send traffic to all
> hosts" on a subnetted network efficiently is via the network
> broadcast address, but that doesn't mean that there's nothing to talk
> to over a point-to-point link.

Please read RFC 919 and see if your interpretation agrees with mine.

-- 
         "Where am I, and what am I doing in this handbasket?"

Wes Peters                                                  Softweyr LLC
wes@softweyr.com                                    http://softweyr.com/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200307170018.43157.wes>