Hello all,
I'm a long time lurker, first time poster. I've usually found what I need with searches but I'm in a situation that is still defying me so I've come to ask the forum for help.
My background is more in the board support, drivers, bring up, etc. I have done layer 2 content filtering, vlans, access control, etc. I'm a jack of all trades and master of almost none.
Here is background on the problem I'm having.
Linux kernel is 2.6.34.8. The processor is a Freescale imx287 ARM. I have configured and built the kernel with 802.d Bridging enabled. I have downloaded, cross-compiled and installed brctl.
The hardware configuration is two processor boards, one a carrier board and one a daughter board. Both boards are running the same kernel on the same kind of processor. In this stack configuration, both processors' eth1 are connected together.
Due to a design error in one application the daughter board has no connection to the network. So my task is to create a bridge across eth0 and eth1 of the carrier and allow the daughter board to access the internet. The carrier eth0 is the network path. You know, the old "we'll fix it with software".
Here is my bridge configuration on the carrier processor:
ifconfig eth0 down
ifconfig eth1 down
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl stp br0 off
ifconfig eth0 0.0.0.0 up
ifconfig eth1 0.0.0.0 up
echo 1 > /proc/sys/net/ipv4/ip_forward
udhcpc -i br0
Then, on the daughter board I just bring up eth1:
udhcpc -i eth1
The bridge works as it should for the daughter board. I can telnet or ssh into it from the network and these sessions have stayed up and active over 24 hours.
The problem I have is that ssh or telnet will not connect to the carrier processor where the bridge is configured unless I ping the gateway from both the daughter and carrier. If the pings work I can then establish a ssh session to carrier eth0, but it gets dropped quickly and no longer works. Even if I ping around again.
I did find a thread that is almost exactly this same issue. In that thread the solution was to add the following to the route table
ip route add default via 172.20.213.1 dev br0
In my configuration this returned ip: RTNETLINK answers: File exists because when I did the dhcp it installed the default gateway route.
Here is the output of route:
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.20.213.0 * 255.255.255.0 U 0 0 0 br0
default 172.20.213.1 0.0.0.0 UG 0 0 0 br0
I have also check aging and learning by watching brctl showmacs br0. The two Ethernet ports on the carrier each have a static mac entry. I can see the mac from the daughter board's eth1 age out and get re-learned.
I don't know what else to check/configure. I would be most appreciative for any help people can offer.