Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Sep 2004 17:42:09 +0300
From:      "SharkTECH Maillists" <freebsd@sharktech.net>
To:        <freebsd-questions@freebsd.org>
Subject:   Interface Bonding & Bridging problem
Message-ID:  <049601c4980d$859444e0$dec2fea9@psyxakias>

next in thread | raw e-mail | index | archive | help
Hello,

I have been running a FreeBSD 4.10-STABLE server having 3 nics installed =
but
was using only 2 of them (1 for uplink and 1 for switch) to monitor, =
filter
and shape my network and had absolutely no problems at all.

However, in order to increase the ability of handling even more packets
(especially while filtering incoming DDoS), I decided to get a 2nd =
uplink
from backbone, connect it to em1, bond em0/em1 (uplinks) to ngeth0/fec0
(virtual interface) and bridge ngeth0/fec0 with em2 (switch link). In =
order
for this to work, etherchanneling is enabled between uplink1/uplink2 at =
the
backbone side.

The problem is although bonding seems to work fine as I can assign IPs =
at
fec0/ngeth0 and send/receive packet with both cards using the virtual
interface, I cannot get bridging to work at all between =
ngeth0/fec0(virtual)
and em2(switch). There are no errors in logs, it just doesn't seem to
bridge.

After doing a 2 days research in Google, FreeBSD maillists, web articles =
and
asking for help in freebsdhelp IRC channels, I ended up that someone in
FreeBSD maillists may be able to help me providing me a different
bonding/bridging way or even by applying a patch.

I was thinking that the solution may be to do both bonding & bridging =
using
netgraph, and not bridging using FreeBSD's kernel bridge. I'd be glad to =
try
this but unfortunately I haven't figured out how, even after reading =
several
articles. So if anyone can help me on this step-by-step, please do.

I will appreciate any replies after you take a look at the diagrams and
settings below, that are showing what exactly I have done until now.


Best Regards,

Angelos Pantazopoulos
freebsd@sharktech.net
SharkTECH Internet Services


=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
               S  E  T  T  I  N  G  S
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D

Using 1 uplink settings (works excellent)
-----------------------------------------
#bridging#
(options BRIDGE in kernel)
ifconfig em0 -arp
sysctl net.link.ether.bridge=3D1
sysctl net.link.ether.bridge_cfg=3Dem0,em1
sysctl net.link.ether.bridge_ipfw=3D1


Using 2 uplinks with ng_fec (bridging problem)
----------------------------------------------
#bonding#
kldload ng_ether
kldload ng_fec
ngctl mkpeer fec dummy fec
ngctl msg fec0: add_iface '"em0"'
ngctl msg fec0: add_iface '"em1"'
ngctl msg fec0: set_mode_inet
ifconfig em0 promisc
ifconfig em1 promisc
ifconfig fec0 promisc

#bridging#
(options BRIDGE in kernel)
sysctl net.link.ether.bridge=3D1
sysctl net.link.ether.bridge_cfg=3Dfec0,em2
sysctl net.link.ether.bridge_ipfw=3D1


Using 2 uplinks with ng_one2many (bridging problem)
---------------------------------------------------
#bonding#
kldload ng_ether
kldload ng_one2many
ifconfig em0 promisc -arp up
ifconfig em1 promisc -arp up
ngctl mkpeer . eiface hook ether
ngctl mkpeer ngeth0: one2many lower one
ngctl connect em0: ngeth0:lower lower many0
ngctl connect em1: ngeth0:lower lower many1
ifconfig ngeth0 -arp up

#bridging#
(options BRIDGE in kernel)
sysctl net.link.ether.bridge=3D1
sysctl net.link.ether.bridge_cfg=3Dngeth0,em2
sysctl net.link.ether.bridge_ipfw=3D1



=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
               D  I  A  G  R  A  M  S
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D


Using 1 uplink (works excellent):
----------------------
INTERNET UPLINK
----------------------
              |
              |
           em0
***************
FREEBSD BOX FOR   <<-- Bridging em0 and em2
IPFW FILTERING
***************
           em2
              |
              |
----------------------
      SWITCH
----------------------


Using 2 uplinks (bridging problem):
----------------------
INTERNET UPLINK
----------------------
         |        |
         |        |
      em0   em1
           \   /
            \ /
        (virtual)
***************
FREEBSD BOX FOR  <<-- Bonding em0/em1 and bridging with em2
IPFW FILTERING
***************
           em2
              |
              |
----------------------
      SWITCH
----------------------



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?049601c4980d$859444e0$dec2fea9>