broadcast oddity
Daniel Braniss
danny at cs.huji.ac.il
Wed Jul 20 09:34:41 UTC 2011
> Tue, Jul 19, 2011 at 10:40:11AM +0300, Daniel Braniss wrote:
> > > And that non-broadcast ethernet address is the MAC of your
> > > default router?
> > yes.
with dest_addr = INADDR_BROADCAST on the non diskless:
09:44:29.850576 00:0d:b9:00:72:a8 (oui Unknown) > 00:04:38:a0:c6:07 (oui
Unknown), ethertype IPv4 (0x0800), length 61: wrap-1.cs.huji.ac.il.53016 >
255.255.255.255.12345: UDP, length 19
and 00:04:38:a0:c6:07 belongs to the router:
wrap-1# arp -a | grep 00:04:38:a0:c6:07
router-80.cs.huji.ac.il (132.65.80.1) at 00:04:38:a0:c6:07 on sis0 expires in
1200 seconds [ethernet]
>
> Fine, that is more-or-less expected, since the network subsystem
> just routes 255.255.255.255 to the default gateway. The issue
> you're seeing were already seen before,
> http://lists.freebsd.org/pipermail/freebsd-net/2005-October/008626.html
> http://www.freebsd.org/cgi/query-pr.cgi?pr=3D72468
> http://lists.freebsd.org/pipermail/freebsd-net/2007-January/012874.html [=
> 1]
the more I read the more confused i get :-)
> and bms@ told me that in this case the default gateway routing is the
> correct historical behaviour of FreeBSD.
>
> [1] I finally remembered that I had seen this issue too ;))
>
> > > What's your routing table (netstat -rn) for the PXE-booted host?
> >
> > it's ok, same in both cases. it's picked up via DHCP, in the diskless
> > case by the boot/loader in the second via dhcpclient.
>
> Still, can you show both of them?
from the diskless:
els-01# ifconfig
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8280b<RXCSUM,TXCSUM,VLAN_MTU,WOL_UCAST,WOL_MAGIC,LINKSTATE>
ether 00:0d:b9:22:57:18
inet 132.65.91.1 netmask 0xfffff000 broadcast 132.65.95.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet 127.0.0.1 netmask 0xff000000
els-01# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 132.65.80.1 UG 0 16606 vr0
127.0.0.1 link#4 UH 0 36 lo0
132.65.80.0/20 link#1 U 0 86612 vr0
132.65.91.1 link#1 UHS 0 12 lo0
from the non-diskless:
wrap-1# ifconfig
sis0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu
1500
options=83808<VLAN_MTU,WOL_UCAST,WOL_MCAST,WOL_MAGIC,LINKSTATE>
ether 00:0d:b9:00:72:a8
inet 132.65.80.181 netmask 0xfffff000 broadcast 132.65.95.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
sis1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=83808<VLAN_MTU,WOL_UCAST,WOL_MCAST,WOL_MAGIC,LINKSTATE>
ether 00:0d:b9:00:72:a9
media: Ethernet autoselect (none)
status: no carrier
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet 127.0.0.1 netmask 0xff000000
wrap-1# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 132.65.80.1 UGS 0 16936 sis0
127.0.0.1 link#4 UH 0 76 lo0
132.65.80.0/20 link#1 U 0 67433 sis0
132.65.80.181 link#1 UHS 0 0 lo0
>
> > > You nailed it: you should send packets to the network's broadcast,
> > > not to the 0xffffffff.
> > >=20
> > but I'm at the user/ip level!, have no way to set mac/ethernet address.
>
> I meant the IP's network broadcast and by 0xffffffff I meant
> 255.255.255.255. Please, look at the posted code.
>
> > still, the question is why it works in one case, and failes in the other.
>
> Yes, it is. But ip_output.c has the following code,
> {{{
> if (rte->rt_flags & RTF_GATEWAY)
> dst =3D (struct sockaddr_in *)rte->rt_gateway;
> if (rte->rt_flags & RTF_HOST)
> isbroadcast =3D (rte->rt_flags & RTF_BROADCAST);
> else
> isbroadcast =3D in_broadcast(dst->sin_addr, ifp);
> }}}
>
> So, if the route that is selected is the gateway, then there will be
> no broadcast on the L2. At least in my understanding of the code.
> Thus, I am interested in the routing tables and route flags.
so it boils down to a problem in selecting the route?
cheers,
danny
More information about the freebsd-net
mailing list