[Bridge] Unexpected bridge behavior (Bug? You decide.)

Stephen Hemminger shemminger at osdl.org
Mon Jan 24 12:04:40 PST 2005


On Sun, 23 Jan 2005 19:49:48 -0500
Daniel Risacher <magnus at alum.mit.edu> wrote:

> --===============12305829954888536==
> 
> 
> [resend; wrong address]
> 
> While using the linux bridge module in 2.6.10, the kernel seems to
> munge the source IP address of broadcast UDP packets if they come from
> "0.0.0.1", and sticks on an address of the linux host.

That seems real surprising.

> I humbly submit that re-writing the source address of packets is not
> proper behavior for a bridge, even if those source addresses are not
> traditionally valid.

Are you running bridging with filtering (ebtables) or just pure
bridging.  The bridge code itself never looks at IP portion of the packet
at all!

> Sure, 0.0.0.1 isn't a valid address, but it's used by the XBOX games
> for "System Link" play.  See http://caia.swin.edu.au/genius/020802A/
> for more details, but basically XBOXes talk to each other by sending
> UDP port 3074 packets with 0.0.0.1 as the source address.  When
> searching for other XBOX systems, these are broadcast packets
> addressed to 255.255.255.255/ff:ff:ff:ff:ff:ff.
> 
> So I was trying to get two XBOXes to talk to each other through a
> Linux machine configured as a bridge, (mostly so I could watch the
> traffic) and it didn't work.  Here's what tcpdump saw:
> 
> $ sudo brctl show br0
> bridge name     bridge id               STP enabled     interfaces
> br0             8000.00112f9de921       yes             eth0
>                                                         eth2
> 
> $ sudo tcpdump -n -e -i eth0 port 3074
> tcpdump: WARNING: eth0: no IPv4 address assigned
> tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
> listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
> 19:28:27.715755 00:50:f2:f1:fb:07 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 102: IP 0.0.0.1.3074 > 255.255.255.255.3074: UDP, length: 60
> ### line above appears to be xbox 1 broadcasting to find other hosts
> 19:28:28.772223 00:50:f2:ba:39:89 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 102: IP 66.92.162.116.3074 > 255.255.255.255.3074: UDP, length: 60
> ### line above is linux bridge forwarding packet from xbox 2, I think. Note IP address is of linux box, not 0.0.0.1
> 
> $ sudo tcpdump -n -e -i eth2 port 3074
> tcpdump: WARNING: eth2: no IPv4 address assigned
> tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
> listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes
> 19:28:27.715816 00:50:f2:f1:fb:07 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 102: IP 66.92.162.116.3074 > 255.255.255.255.3074: UDP, length: 60
> ### line above is linux bridge forwarding packet from xbox 1. Note IP address is of linux box, not 0.0.0.1
> 19:28:28.772135 00:50:f2:ba:39:89 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 102: IP 0.0.0.1.3074 > 255.255.255.255.3074: UDP, length: 60
> ### line above is xbox 2 broadcasting to find other hosts

What hardware is being used for eth0, eth2? Though I doubt the it is hardware dependant.
How are you setting up the bridge, what is the script?

What is the IP address of br0, eth0 and eth2? Perhaps something (DHCP?) is putting address on
eth0 and/or eth2.


-- 
Stephen Hemminger	<shemminger at osdl.org>



More information about the Bridge mailing list