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>
