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: