Hi,
i want to implement the bridging feature on an arm (cpu intel ixp425), running busybox+linux kernel 2.6.11.
For this, I have recompiled the kernel to enable bridging and ebtables, and I have compiled and installed brctl utility for arm.

Here is my network setup:
[PC_A] eth0 10.0.0.10/24 ======== eth0 ----+----eth1  ========  [PC_B] eth0 10.10.0.1/24
                                           |                                           
                                          br0                                          
                                         [ARM]                                         


Here is how I setup my bridge on the ARM:
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl setfd br0 1
ifconfig eth0 promisc
ifconfig eth1 promisc
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
ifconfig eth0 up
ifconfig eth1 up
ifconfig br0 0.0.0.0
ifconfig br0 up
ip route add 0.0.0.0/0 dev br0


On PC_A, I ping PC_B. It does not work
[pc_a]# ping 10.0.0.10

Then, I verified with tcpdump on the arm platform where the problem could be:
[arm]# tcpdump -i br0
listening on br0, link-type EN10MB (Ethernet), capture size 68 bytes
arp who-has 10.10.0.1 tell 10.0.0.10                               

3 packets captured                                                 
3 packets received by filter                                       
0 packets dropped by kernel                                        


[arm]# tcpdump -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 68 bytes
arp who-has 10.10.0.1 tell 10.0.0.10                                
3 packets captured                                                  
3 packets received by filter                                        
0 packets dropped by kernel                                         


[arm]# tcpdump -i eth1                                              
listening on eth1, link-type EN10MB (Ethernet), capture size 68 bytes

0 packets captured                                                  
0 packets received by filter                                        
0 packets dropped by kernel                                         

The ICMP packet is not sent because the arp resolution is not completed.
Finally, the problem is: why does the bridge not forward the arp request from PC_A (10.0.0.10) to PC_B (10.10.0.1)
This is a broadcast packet, and it should be forwarded on the other interface of the bridge.

What I have done to find the problem:
  • I have verified that both eth0 and eth1 on the bridge are well working in promiscuous mode.
  • I have statically defined an arp entry for PC_A inside PC_B, and an arp entry for PC_B inside PC_A; the result is that the ICMP packet (ping) is well bridged through the two interfaces of the ARM platform. Thus the problem is related to the arp resolution.

If someone could help me, it would be great because I am completely locked. Replacing the ARM by a standard PC make the things working.

--L.Croisez.
_______________________________________________
Bridge mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/bridge

Reply via email to