Thanks Stephen. Can i attach an interface with IP assigned to it already/statically to a bridge? So if i understand correctly from your response, i should run dhcpclient on br0 interface to assign IP for the same? and Lets say br0 gets an IP assigned by DHCP-Server as "12.0.0.1". Now my intention is to assign IP address to the Host(say host1) behind Router-1 using the DHCP-Server running on/behind Router-2 as shown below: Host1 <------> (eth2)[Router-1](eth1:100.1.1.1) <----------EoGRE Tunnel----->(eth0:100.1.1.254)[Router-2](DHCP-Server) So i thought Bridging eth2 to eth1 in Router-1 is the only way to achieve the same as i want the dhcp-broadcast packet from Host-1 to get tunneled over EogRE till Router-2. Is this assumption correct? or i am missing something here? Or i should not assign any IP to eth2 and instead do it in br0 in Router-1? Any guidance would be very helpful and greatly appreciated. Thanks, ...Balaji.J On Tue, Dec 13, 2016 at 11:11 PM, Stephen Hemminger < stephen at networkplumber.org> wrote:> On Tue, 13 Dec 2016 21:13:43 +0530 > Balaji J <ping2balaji at gmail.com> wrote: > > > Hi all, > > > > I am trying to setup a bridge with 2 interfaces attached to it in > Router-1. > > Interface-1: eth1 ==> EoGRE Tunnel interface(gretap) connecting to > another > > Router-2 where DHCP server is running. > > Interface-2: eth2 ==> Trying to use DHCP to assign IP for this eth2 > > interface from DHCP-Server running on Router-2. > > > > Basically the setup i am expecting is like: > > (eth2)[Router-1](eth1:100.1.1.1) <----------EoGRE > > Tunnel----->(eth0:100.1.1.254)[Router-2](DHCP-Server) > > > > Following are the setup i did to check the 1st stage to see if the > > dhcp-discover broadcast is going out of Router-1 over EoGRE tunnel or > not. > > But i am not able to achieve the same. > > > > Can anyone please let me know what is missing here? Thanks in advance. > > > > Router-1: > > 1) ip link add eogre type gretap local 100.1.1.1 remote 100.1.1.254 ==> > > created gretap with endpoints. > > 2) ip link set eogre up ==> brought the eogre interface up. > > [root at centos]# ifconfig > > eogre Link encap:Ethernet HWaddr 9E:25:FC:54:7F:F2 > > inet6 addr: fe80::9c25:fcff:fe54:7ff2/64 Scope:Link > > UP BROADCAST RUNNING MULTICAST MTU:1462 Metric:1 > > RX packets:0 errors:0 dropped:0 overruns:0 frame:0 > > TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 > > collisions:0 txqueuelen:1000 > > RX bytes:0 (0.0 b) TX bytes:492 (492.0 b) > > > > eth1 Link encap:Ethernet HWaddr 08:00:27:3C:FB:14 > > inet addr:100.1.1.1 Bcast:0.0.0.0 Mask:255.255.255.0 > > inet6 addr: fe80::a00:27ff:fe3c:fb14/64 Scope:Link > > UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 > > RX packets:13 errors:0 dropped:0 overruns:0 frame:0 > > TX packets:40 errors:0 dropped:0 overruns:0 carrier:0 > > collisions:0 txqueuelen:1000 > > RX bytes:1398 (1.3 KiB) TX bytes:4103 (4.0 KiB) > > > > eth2 Link encap:Ethernet HWaddr 08:00:27:5E:7F:83 > > BROADCAST MULTICAST MTU:1500 Metric:1 > > RX packets:0 errors:0 dropped:0 overruns:0 frame:0 > > TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 > > collisions:0 txqueuelen:1000 > > RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) > > 3) brctl addbr br0 ==> created bridge interface > > 4) brctl addif br0 eogre ==> attach eogre interface to bridge > > 5) brctl addif br0 eth2 ==> attach eth2 interface to bridge > > 6) sysctl -w net.ipv6.conf.eth2.disable_ipv6=1 ==> disable ipv6 in eth2 > > just to avoid unwanted ipv6 signalling messages from it. > > 7) ifconfig eth2 up ==> eth2 iface up with no IP in it yet. > > 8) ifconfig eogre up ==> eogre iface up > > 9) ifconfig br0 up ==> Bridge up. > > 10) brctl show ==> > > bridge name bridge id STP enabled interfaces > > br0 8000.0800275e7f83 no eogre > > > > eth2 > > > > 11) brctl showstp br0 > > > > [root at centos-dev ~]# brctl showstp br0 > > br0 > > bridge id 8000.0800275e7f83 > > designated root 8000.0800275e7f83 > > root port 0 path cost > 0 > > max age 19.99 bridge max age > > 19.99 > > hello time 1.99 bridge hello time > > 1.99 > > forward delay 14.99 bridge forward delay > > 14.99 > > ageing time 299.95 > > hello timer 0.50 tcn timer > > 0.00 > > topology change timer 0.00 gc timer > > 1.50 > > hash elasticity 4 hash max > 512 > > mc last member count 2 mc init query count > 2 > > mc router 1 mc snooping > 1 > > mc last member timer 0.99 mc membership timer > > 259.96 > > mc querier timer 254.96 mc query interval > > 124.98 > > mc response interval 9.99 mc init query interval > > 31.24 > > flags > > > > > > eogre (0) > > port id 0000 state > > forwarding > > designated root 8000.0800275e7f83 path cost > 100 > > designated bridge 8000.0800275e7f83 message age timer > > 0.00 > > designated port 8001 forward delay timer > > 0.00 > > designated cost 0 hold timer > > 0.00 > > mc router 1 > > flags > > > > eth2 (0) > > port id 0000 state > > forwarding > > designated root 8000.0800275e7f83 path cost > 4 > > designated bridge 8000.0800275e7f83 message age timer > > 0.00 > > designated port 8002 forward delay timer > > 0.00 > > designated cost 0 hold timer > > 0.00 > > mc router 1 > > flags > > > > 12) dhclient -i eth2 ==> This command triggers a DHCP-DISCOVER > > broadcast(both l2/l3 broadcast destination addressed) from eth2 and > > initiate ip allocation process. > > > > Now if i capture packets in wireshark in eth1+br0+eogre interface of > > Router-1, i don't see the dhcp-discover packet sent from eth2 interface > > going over EoGRE Tunnel to Router-2. > > But the same DHCP-Discover packet i can see if i capture in eth2 > > interface(obvious reason). > > > > Is it not like whatever packets coming in or originating from eth2 will > be > > bridged to eogre interface using bridge "br0"? > > I am using kernel 2.6 in CentOS > > > > Can someone please help here? > > > > Regards, > > ...Balaji > > You can't and shouldn't try to do anything that assigns an IP address > to a device that is a member of a bridge. In your case that is eth2. > > > The correct thing to do is run DHCP client on the bridge device. >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.linuxfoundation.org/pipermail/bridge/attachments/20161213/2c485952/attachment.html>
Stephen Hemminger
2016-Dec-13 19:16 UTC
[Bridge] Bridge interface not forwarding DHCP-Broadcast
On Tue, 13 Dec 2016 23:45:52 +0530 Balaji J <ping2balaji at gmail.com> wrote:> Thanks Stephen. > Can i attach an interface with IP assigned to it already/statically to a > bridge? > So if i understand correctly from your response, i should run dhcpclient on > br0 interface to assign IP for the same? and Lets say br0 gets an IP > assigned by DHCP-Server as "12.0.0.1". > > Now my intention is to assign IP address to the Host(say host1) behind > Router-1 using the DHCP-Server running on/behind Router-2 as shown below: > Host1 <------> (eth2)[Router-1](eth1:100.1.1.1) <----------EoGRE > Tunnel----->(eth0:100.1.1.254)[Router-2](DHCP-Server) > > So i thought Bridging eth2 to eth1 in Router-1 is the only way to achieve > the same as i want the dhcp-broadcast packet from Host-1 to get tunneled > over EogRE till Router-2. Is this assumption correct? or i am missing > something here? > > Or i should not assign any IP to eth2 and instead do it in br0 in Router-1? > > Any guidance would be very helpful and greatly appreciated. > > Thanks, > ...Balaji.JThe problem is that the IP address on an enslaved interface is not used by the IP stack and packets destined for that address tend to be blackholed. Packets being sent out get put on the enslaved interface and only sent out that interface not bridged.