2080 lines
48 KiB
HTML
2080 lines
48 KiB
HTML
<HTML
|
||
><HEAD
|
||
><TITLE
|
||
>A Practical Setup Example</TITLE
|
||
><META
|
||
NAME="GENERATOR"
|
||
CONTENT="Modular DocBook HTML Stylesheet Version 1.63
|
||
"><LINK
|
||
REL="HOME"
|
||
TITLE="Linux BRIDGE-STP-HOWTO"
|
||
HREF="index.html"><LINK
|
||
REL="PREVIOUS"
|
||
TITLE="Advanced Bridge Features"
|
||
HREF="advanced-bridge.html"><LINK
|
||
REL="NEXT"
|
||
TITLE="Network Interface Cards"
|
||
HREF="nic-info.html"></HEAD
|
||
><BODY
|
||
CLASS="SECT1"
|
||
BGCOLOR="#FFFFFF"
|
||
TEXT="#000000"
|
||
LINK="#0000FF"
|
||
VLINK="#840084"
|
||
ALINK="#0000FF"
|
||
><DIV
|
||
CLASS="NAVHEADER"
|
||
><TABLE
|
||
WIDTH="100%"
|
||
BORDER="0"
|
||
CELLPADDING="0"
|
||
CELLSPACING="0"
|
||
><TR
|
||
><TH
|
||
COLSPAN="3"
|
||
ALIGN="center"
|
||
>Linux BRIDGE-STP-HOWTO: About The Linux Modular Bridge And STP</TH
|
||
></TR
|
||
><TR
|
||
><TD
|
||
WIDTH="10%"
|
||
ALIGN="left"
|
||
VALIGN="bottom"
|
||
><A
|
||
HREF="advanced-bridge.html"
|
||
>Prev</A
|
||
></TD
|
||
><TD
|
||
WIDTH="80%"
|
||
ALIGN="center"
|
||
VALIGN="bottom"
|
||
></TD
|
||
><TD
|
||
WIDTH="10%"
|
||
ALIGN="right"
|
||
VALIGN="bottom"
|
||
><A
|
||
HREF="nic-info.html"
|
||
>Next</A
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
><HR
|
||
ALIGN="LEFT"
|
||
WIDTH="100%"></DIV
|
||
><DIV
|
||
CLASS="SECT1"
|
||
><H1
|
||
CLASS="SECT1"
|
||
><A
|
||
NAME="PRACTICAL-EXAMPLE"
|
||
>8. A Practical Setup Example</A
|
||
></H1
|
||
><BLOCKQUOTE
|
||
CLASS="ABSTRACT"
|
||
><DIV
|
||
CLASS="ABSTRACT"
|
||
><A
|
||
NAME="AEN564"
|
||
></A
|
||
><P
|
||
></P
|
||
><P
|
||
>This is a real-world example which is currently working
|
||
in our network.
|
||
Even if it's for sure not a very common situation it might be
|
||
useful.
|
||
</P
|
||
><P
|
||
></P
|
||
></DIV
|
||
></BLOCKQUOTE
|
||
><P
|
||
>I had to solve a small hardware incompatibility.
|
||
HP-VG (Voice Grade) 100Mbit network is not fast Ethernet
|
||
compatible.
|
||
Having neither the money nor the will to replace the
|
||
stuff and having the need to expand the system I had to find a
|
||
solution which was a) stable and b) cheap.
|
||
</P
|
||
><P
|
||
>For sure buying a HP modular switch was not meeting condition
|
||
b).
|
||
So I remembered I heard about Linux-bridging which automatically
|
||
fulfilled condition a) and b).
|
||
</P
|
||
><P
|
||
>So quite some time ago I successfully set up a bridge
|
||
between the two incompatible networks.
|
||
Its first hardware-layout is shown in
|
||
<A
|
||
HREF="practical-example.html#OLD-BRIDGE-HARDWARE-SETUP"
|
||
>Figure 1</A
|
||
>.
|
||
</P
|
||
><DIV
|
||
CLASS="FIGURE"
|
||
><A
|
||
NAME="OLD-BRIDGE-HARDWARE-SETUP"
|
||
></A
|
||
><P
|
||
><B
|
||
>Figure 1. Hardware setup Of The Old Bridge Scenario</B
|
||
></P
|
||
><DIV
|
||
CLASS="MEDIAOBJECT"
|
||
><P
|
||
><IMG
|
||
SRC="old-hardware-setup.png"
|
||
></IMG
|
||
><DIV
|
||
CLASS="CAPTION"
|
||
><P
|
||
>The old setup of my previous linux bridge
|
||
</P
|
||
></DIV
|
||
></P
|
||
></DIV
|
||
></DIV
|
||
><P
|
||
>It was configured as a transparent network component,
|
||
meaning it didn't take a part in the network, but only bridged
|
||
it.
|
||
Originally it was set up on kernel 2.0.35 from a SuSE 5.3 distribution.
|
||
</P
|
||
><P
|
||
>The next problem showed up at once. A single bridge
|
||
connecting the big segments might be c) a bottleneck and
|
||
d) a reason to kill the netadmin, if it blows up.
|
||
So I tried to find some solution for that problem.
|
||
</P
|
||
><P
|
||
>What happened next was that I discovered some hints that a
|
||
new maintainer took over the bridging code.
|
||
A few mails on the bridge-mailing list later as shown in
|
||
<A
|
||
HREF="advanced-bridge.html#STP"
|
||
>Section 7.1</A
|
||
> I was more clever.
|
||
The new modular bridging code fulfilled exactly what I was looking
|
||
for.
|
||
</P
|
||
><DIV
|
||
CLASS="FORMALPARA"
|
||
><P
|
||
><B
|
||
>The new maintainer: Lennert Buytenhek
|
||
. </B
|
||
>His project page can be found at
|
||
<A
|
||
HREF="http://www.math.leidenuniv.nl/~buytenh/bridge/"
|
||
TARGET="_top"
|
||
>http://www.math.leidenuniv.nl/~buytenh/bridge/</A
|
||
>
|
||
IMHO he's doing a great job. Thanks a lot.
|
||
</P
|
||
></DIV
|
||
><DIV
|
||
CLASS="SECT2"
|
||
><H2
|
||
CLASS="SECT2"
|
||
><A
|
||
NAME="AEN590"
|
||
>8.1. Hardware-setup</A
|
||
></H2
|
||
><P
|
||
>The ideas and hints I got from the mailing list discussion shown in
|
||
<A
|
||
HREF="advanced-bridge.html#STP"
|
||
>Section 7.1</A
|
||
> lead to a new hardware-setup shown in
|
||
<A
|
||
HREF="practical-example.html#MULTI-BRIDGE-HARDWARE-SETUP"
|
||
>Figure 2</A
|
||
>.
|
||
The setup is intended to provide a default machine
|
||
(guess which one).
|
||
The bridge has 3 HP cards of which each is connected to a HP VG15 hub.
|
||
The 3com card is connected to a 3com Superstack Fast Ethernet switch.
|
||
</P
|
||
><DIV
|
||
CLASS="FIGURE"
|
||
><A
|
||
NAME="MULTI-BRIDGE-HARDWARE-SETUP"
|
||
></A
|
||
><P
|
||
><B
|
||
>Figure 2. Hardware Setup Of The Multi bridge Scenario</B
|
||
></P
|
||
><DIV
|
||
CLASS="MEDIAOBJECT"
|
||
><P
|
||
><IMG
|
||
SRC="hardware-setup.png"
|
||
></IMG
|
||
><DIV
|
||
CLASS="CAPTION"
|
||
><P
|
||
>The practically working setup of my local linux Ethernet multi bridge
|
||
</P
|
||
></DIV
|
||
></P
|
||
></DIV
|
||
></DIV
|
||
><P
|
||
>This setup is not only fail proof to any one of the bridge's
|
||
interfaces being down, but also to complete blackout of one of the
|
||
bridges.
|
||
Additional advantage to the old-setup
|
||
<A
|
||
HREF="practical-example.html#OLD-BRIDGE-HARDWARE-SETUP"
|
||
>Figure 1</A
|
||
> that the single HUBS are
|
||
switched.
|
||
This means that a datagram being sent from one port on the VG15 HUB
|
||
blocks 30 ports by maximum and 15 ports by minimum, instead of
|
||
blocking all 45 ports.
|
||
Also, the breakdown of the HUB, to the old bridge was connected, would
|
||
have caused the whole HP-segment to break down.
|
||
With the new code only the machines connected to the broken HUB will
|
||
get no more data.
|
||
</P
|
||
></DIV
|
||
><DIV
|
||
CLASS="SECT2"
|
||
><H2
|
||
CLASS="SECT2"
|
||
><A
|
||
NAME="AEN609"
|
||
>8.2. Software-setup</A
|
||
></H2
|
||
><P
|
||
>For both bridges the setup is exactly the same (with the
|
||
exception of bridge priority which will be discussed later on).
|
||
The machine was setup by the SuSE 6.4 distribution with the original
|
||
unpatched kernel sources installed.
|
||
At this point only the minimal configuration and no additional
|
||
hardware or network setup.
|
||
</P
|
||
><P
|
||
>The basic setup is according the descriptions in the beginning of
|
||
this document.
|
||
The thing I did in addition was bringing up the unpatched 2.2.14
|
||
sources of the SuSE 6.4 distribution to version 2.2.15 as in
|
||
<A
|
||
HREF="practical-example.html#APPLY-KERNEL-PATCH"
|
||
>Example 11</A
|
||
>.
|
||
</P
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="APPLY-KERNEL-PATCH"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 11. Upgrading The Kernel From 2.2.14 To 2.2.15</B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>root@mbb-1:~ # cd /usr/src/linux-2.2.14
|
||
root@mbb-1:/usr/src/linux-2.2.14 # patch -p1 \
|
||
<TT
|
||
CLASS="USERINPUT"
|
||
><B
|
||
>/usr/local/download/kernel/patch-2.2.15</B
|
||
></TT
|
||
>
|
||
patching file ........................
|
||
patching file ...................
|
||
...
|
||
..
|
||
root@mbb-1:/usr/src/linux-2.2.14 # cd ..
|
||
root@mbb-1:/usr/src # mv linux-2.2.14 linux-2.2.15
|
||
root@mbb-1:/usr/src # rm linux
|
||
root@mbb-1:/usr/src # ln -s linux-2.2.15 linux
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
><P
|
||
>Next step was to apply the bridge-patch as shown in
|
||
<A
|
||
HREF="practical-example.html#APPLY-BRIDGE-PATCH"
|
||
>Example 12</A
|
||
>.
|
||
</P
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="APPLY-BRIDGE-PATCH"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 12. Applying The Kernel Patch</B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>root@mbb-1:/usr/src # cd /usr/src/linux-2.2.15
|
||
root@mbb-1:/usr/src/linux-2.2.15 # patch -p1 < \
|
||
<TT
|
||
CLASS="USERINPUT"
|
||
><B
|
||
>bridge-0.0.5-against-2.2.15.diff</B
|
||
></TT
|
||
>
|
||
patching file ........................
|
||
patching file ...................
|
||
...
|
||
..
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
><P
|
||
>After that I selected the bridging code to be compiled as a
|
||
module as shown in
|
||
<A
|
||
HREF="practical-example.html#MENUCONFIG-BRIDGE-MODULE-SELECTION"
|
||
>Example 13</A
|
||
>.
|
||
</P
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="MENUCONFIG-BRIDGE-MODULE-SELECTION"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 13. Configuring The Kernel</B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>root@mbb-1:/usr/src/linux-2.2.15 # make config
|
||
|
||
..
|
||
|
||
*
|
||
* Code maturity level options
|
||
*
|
||
Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL)
|
||
[N/y/?] Y
|
||
|
||
..
|
||
|
||
|
||
802.1d Ethernet Bridging (CONFIG_BRIDGE) [N/y/m/?] (NEW) m
|
||
|
||
..
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
><P
|
||
>By the way I also selected the drivers of my NIC's to be compiled
|
||
as modules which resulted to <TT
|
||
CLASS="FILENAME"
|
||
>3c95x.o</TT
|
||
> and
|
||
<TT
|
||
CLASS="FILENAME"
|
||
>hp100.o</TT
|
||
>.
|
||
</P
|
||
><DIV
|
||
CLASS="INFORMALEXAMPLE"
|
||
><A
|
||
NAME="AEN632"
|
||
></A
|
||
><P
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>root@mbb-1:/usr/src/linux-2.2.15 # make dep clean zImage \
|
||
modules modules_install zlilo
|
||
|
||
..
|
||
|
||
root@mbb-1:/usr/src/linux-2.2.15 # init 6
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
><P
|
||
></P
|
||
></DIV
|
||
><P
|
||
>After the reboot happening I started at runlevel 1 leaving all the
|
||
networking out of the running system.
|
||
That gave me the chance to check the setup step by step.
|
||
</P
|
||
><P
|
||
>The command <B
|
||
CLASS="COMMAND"
|
||
>modprobe -v bridge</B
|
||
> worked
|
||
without any warnings, so that one was OK.
|
||
Next I edited my <TT
|
||
CLASS="FILENAME"
|
||
>/etc/modules.conf</TT
|
||
> by aliasing
|
||
my network card drivers as shown in
|
||
<A
|
||
HREF="practical-example.html#MODULES-CONF-NIC-SAMPLE-MBB1"
|
||
>Example 14</A
|
||
> and
|
||
<A
|
||
HREF="practical-example.html#MODULES-CONF-NIC-SAMPLE-MBB2"
|
||
>Example 15</A
|
||
>.
|
||
I didn't need to make use of the options, all cards where realized
|
||
proper as I checked by <B
|
||
CLASS="COMMAND"
|
||
>cat /proc/modules</B
|
||
>,
|
||
<B
|
||
CLASS="COMMAND"
|
||
>cat /proc/interrupts</B
|
||
> and
|
||
<B
|
||
CLASS="COMMAND"
|
||
>cat /proc/ioports</B
|
||
>.
|
||
</P
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="MODULES-CONF-NIC-SAMPLE-MBB1"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 14. <TT
|
||
CLASS="FILENAME"
|
||
>/etc/modules.conf</TT
|
||
> of <EM
|
||
>mbb-1</EM
|
||
></B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
># Aliases - specify your hardware
|
||
alias eth0 3c59x
|
||
alias eth1 hp100
|
||
alias eth2 hp100
|
||
alias eth3 hp100
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="MODULES-CONF-NIC-SAMPLE-MBB2"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 15. <TT
|
||
CLASS="FILENAME"
|
||
>/etc/modules.conf</TT
|
||
> of <EM
|
||
>mbb-2</EM
|
||
></B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
># Aliases - specify your hardware
|
||
alias eth0 3c509
|
||
alias eth1 hp100
|
||
alias eth2 hp100
|
||
alias eth3 hp100
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
><P
|
||
>So next thing would have been a step by step setup of the bridge
|
||
and it's interfaces.
|
||
Because I'm lazy I just show the init script I prepared for the
|
||
setup.
|
||
|
||
<DIV
|
||
CLASS="IMPORTANT"
|
||
><BLOCKQUOTE
|
||
CLASS="IMPORTANT"
|
||
><P
|
||
><B
|
||
>Important: </B
|
||
>Of course you'll have do adapt the script to your system,
|
||
if you want to use it.
|
||
Please remember I'm writing this for the setup of a SuSE
|
||
distribution.
|
||
</P
|
||
></BLOCKQUOTE
|
||
></DIV
|
||
>
|
||
</P
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="BRIDGE-INIT-SCRIPT"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 16. Bridge Init Script</B
|
||
></P
|
||
><P
|
||
> <TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="PROGRAMLISTING"
|
||
>#! /bin/bash
|
||
# Copyright (c) 2000 Uwe B<>hme. All rights reserved.
|
||
#
|
||
# Author: Uwe B<>hme <uwe@bnhof.de>, 2000
|
||
#
|
||
#
|
||
# /sbin/init.d/bridge
|
||
#
|
||
|
||
. /etc/rc.config
|
||
|
||
return=$rc_done
|
||
case "$1" in
|
||
|
||
start)
|
||
echo "Starting service bridge mueb"
|
||
brctl addbr mueb || return=$rc_failed <A
|
||
NAME="CREATE-BRIDGE"
|
||
><IMG
|
||
SRC="../images/callouts/1.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(1)"></A
|
||
>
|
||
brctl setbridgeprio mueb 0 || return=$rc_failed <A
|
||
NAME="SET-ROOT-BRIDGE"
|
||
><IMG
|
||
SRC="../images/callouts/2.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(2)"></A
|
||
>
|
||
brctl addif mueb eth0 || return=$rc_failed <A
|
||
NAME="ADDIF-ETH0"
|
||
><IMG
|
||
SRC="../images/callouts/3.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(3)"></A
|
||
>
|
||
brctl addif mueb eth1 || return=$rc_failed <A
|
||
NAME="ADDIF-ETH1"
|
||
><IMG
|
||
SRC="../images/callouts/4.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(4)"></A
|
||
>
|
||
brctl addif mueb eth2 || return=$rc_failed <A
|
||
NAME="ADDIF-ETH2"
|
||
><IMG
|
||
SRC="../images/callouts/5.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(5)"></A
|
||
>
|
||
brctl addif mueb eth3 || return=$rc_failed <A
|
||
NAME="ADDIF-ETH3"
|
||
><IMG
|
||
SRC="../images/callouts/6.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(6)"></A
|
||
>
|
||
ifconfig eth0 0.0.0.0 || return=$rc_failed <A
|
||
NAME="UP-ETH0"
|
||
><IMG
|
||
SRC="../images/callouts/7.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(7)"></A
|
||
>
|
||
ifconfig eth1 0.0.0.0 || return=$rc_failed <A
|
||
NAME="UP-ETH1"
|
||
><IMG
|
||
SRC="../images/callouts/8.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(8)"></A
|
||
>
|
||
ifconfig eth2 0.0.0.0 || return=$rc_failed <A
|
||
NAME="UP-ETH2"
|
||
><IMG
|
||
SRC="../images/callouts/9.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(9)"></A
|
||
>
|
||
ifconfig eth3 0.0.0.0 || return=$rc_failed <A
|
||
NAME="UP-ETH3"
|
||
><IMG
|
||
SRC="../images/callouts/10.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(10)"></A
|
||
>
|
||
brctl sethello mueb 1 || return=$rc_failed <A
|
||
NAME="HELLO-1"
|
||
><B
|
||
>(11)</B
|
||
></A
|
||
>
|
||
brctl setmaxage mueb 4 || return=$rc_failed <A
|
||
NAME="MAXAGE-4"
|
||
><B
|
||
>(12)</B
|
||
></A
|
||
>
|
||
brctl setfd mueb 4 || return=$rc_failed <A
|
||
NAME="FORWARDDELAY-4"
|
||
><B
|
||
>(13)</B
|
||
></A
|
||
>
|
||
|
||
echo -e "$return"
|
||
;;
|
||
|
||
stop)
|
||
echo "Shutting down service bridge mueb"
|
||
brctl delif mueb eth3 || return=$rc_failed <A
|
||
NAME="DELIF-ETH3"
|
||
><B
|
||
>(14)</B
|
||
></A
|
||
>
|
||
brctl delif mueb eth2 || return=$rc_failed <A
|
||
NAME="DELIF-ETH2"
|
||
><B
|
||
>(15)</B
|
||
></A
|
||
>
|
||
brctl delif mueb eth1 || return=$rc_failed <A
|
||
NAME="DELIF-ETH1"
|
||
><B
|
||
>(16)</B
|
||
></A
|
||
>
|
||
brctl delif mueb eth0 || return=$rc_failed <A
|
||
NAME="DELIF-ETH0"
|
||
><B
|
||
>(17)</B
|
||
></A
|
||
>
|
||
brctl delbr mueb || return=$rc_failed <A
|
||
NAME="DESTROY-BRIDGE"
|
||
><B
|
||
>(18)</B
|
||
></A
|
||
>
|
||
rmmod bridge || return=$rc_failed <A
|
||
NAME="REMOVE-MODULE"
|
||
><B
|
||
>(19)</B
|
||
></A
|
||
>
|
||
|
||
echo -e "$return"
|
||
;;
|
||
|
||
status)
|
||
ifconfig mueb
|
||
brctl showbr mueb
|
||
;;
|
||
|
||
restart)
|
||
$0 stop && $0 start || return=$rc_failed
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: $0 {start|stop|status|restart}"
|
||
exit 1
|
||
esac
|
||
|
||
test "$return" = "$rc_done" || exit 1
|
||
exit 0
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
>
|
||
</P
|
||
></DIV
|
||
><DIV
|
||
CLASS="CALLOUTLIST"
|
||
><DL
|
||
COMPACT="COMPACT"
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#CREATE-BRIDGE"
|
||
><IMG
|
||
SRC="../images/callouts/1.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(1)"></A
|
||
></DT
|
||
><DD
|
||
>This command creates a new virtual interface (bridge instance)
|
||
with the name <TT
|
||
CLASS="USERINPUT"
|
||
><B
|
||
>mueb</B
|
||
></TT
|
||
> and also brings up the
|
||
bridge module.
|
||
<DIV
|
||
CLASS="NOTE"
|
||
><BLOCKQUOTE
|
||
CLASS="NOTE"
|
||
><P
|
||
><B
|
||
>Note: </B
|
||
>At least my system it does.
|
||
Maybe you have to enable the kernel module loader.
|
||
</P
|
||
></BLOCKQUOTE
|
||
></DIV
|
||
>
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#SET-ROOT-BRIDGE"
|
||
><IMG
|
||
SRC="../images/callouts/2.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(2)"></A
|
||
></DT
|
||
><DD
|
||
>Here the script sets the bridge's priority (relative to
|
||
other bridges in the net) to 0.
|
||
This is indicating that this bridge will become the root bridge
|
||
as long as there is no other bridge with a lower priority level
|
||
available.
|
||
</DD
|
||
><DIV
|
||
CLASS="IMPORTANT"
|
||
><BLOCKQUOTE
|
||
CLASS="IMPORTANT"
|
||
><P
|
||
><B
|
||
>Important: </B
|
||
>In the init script of the backup bridge this line in missing,
|
||
leaving it with the default priority of 100.
|
||
</P
|
||
></BLOCKQUOTE
|
||
></DIV
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#ADDIF-ETH0"
|
||
><IMG
|
||
SRC="../images/callouts/3.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(3)"></A
|
||
><A
|
||
HREF="practical-example.html#ADDIF-ETH1"
|
||
><IMG
|
||
SRC="../images/callouts/4.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(4)"></A
|
||
><A
|
||
HREF="practical-example.html#ADDIF-ETH2"
|
||
><IMG
|
||
SRC="../images/callouts/5.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(5)"></A
|
||
><A
|
||
HREF="practical-example.html#ADDIF-ETH3"
|
||
><IMG
|
||
SRC="../images/callouts/6.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(6)"></A
|
||
></DT
|
||
><DD
|
||
>Enslaves the Ethernet interface to become a port in the
|
||
bridge.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#UP-ETH0"
|
||
><IMG
|
||
SRC="../images/callouts/7.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(7)"></A
|
||
><A
|
||
HREF="practical-example.html#UP-ETH1"
|
||
><IMG
|
||
SRC="../images/callouts/8.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(8)"></A
|
||
><A
|
||
HREF="practical-example.html#UP-ETH2"
|
||
><IMG
|
||
SRC="../images/callouts/9.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(9)"></A
|
||
><A
|
||
HREF="practical-example.html#UP-ETH3"
|
||
><IMG
|
||
SRC="../images/callouts/10.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(10)"></A
|
||
></DT
|
||
><DD
|
||
>Takes away any possibly disturbing IP-address and brings the
|
||
interface up.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#HELLO-1"
|
||
><B
|
||
>(11)</B
|
||
></A
|
||
></DT
|
||
><DD
|
||
>Setting the hello time of the bridge to one second makes it
|
||
possible to reduce the maxage value of the bridges inside the
|
||
network.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#MAXAGE-4"
|
||
><B
|
||
>(12)</B
|
||
></A
|
||
></DT
|
||
><DD
|
||
>Setting the time the a bridge is waiting before starting the
|
||
takeover process to a shorter period.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#FORWARDDELAY-4"
|
||
><B
|
||
>(13)</B
|
||
></A
|
||
></DT
|
||
><DD
|
||
>Forcing the bridge to forward earlier than the default time.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#DELIF-ETH3"
|
||
><B
|
||
>(14)</B
|
||
></A
|
||
><A
|
||
HREF="practical-example.html#DELIF-ETH2"
|
||
><B
|
||
>(15)</B
|
||
></A
|
||
><A
|
||
HREF="practical-example.html#DELIF-ETH1"
|
||
><B
|
||
>(16)</B
|
||
></A
|
||
><A
|
||
HREF="practical-example.html#DELIF-ETH0"
|
||
><B
|
||
>(17)</B
|
||
></A
|
||
></DT
|
||
><DD
|
||
>Take the Ethernet out of the bridging instance.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#DESTROY-BRIDGE"
|
||
><B
|
||
>(18)</B
|
||
></A
|
||
></DT
|
||
><DD
|
||
>Destroy the bridge instance.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#REMOVE-MODULE"
|
||
><B
|
||
>(19)</B
|
||
></A
|
||
></DT
|
||
><DD
|
||
>Remove the bridge module.
|
||
</DD
|
||
></DL
|
||
></DIV
|
||
><P
|
||
>To polish your setup and to be able to reach the bridge from
|
||
remote you now can configure your bridge instance as if it would be
|
||
a physical existing network interface.
|
||
You can give it a nice IP with a suitable net-mask.
|
||
It doesn't matter from which segment in you net, you will reach the
|
||
bridge with this IP-address.
|
||
</P
|
||
></DIV
|
||
><DIV
|
||
CLASS="SECT2"
|
||
><H2
|
||
CLASS="SECT2"
|
||
><A
|
||
NAME="SEE-IT-WORK"
|
||
>8.3. See It Work</A
|
||
></H2
|
||
><P
|
||
>Here I want to show and explain about how the running bridge shows
|
||
up.
|
||
The output <A
|
||
HREF="practical-example.html#SAMPLE-BRIDGE-STATUS-MBB1"
|
||
>Example 17</A
|
||
> of
|
||
<EM
|
||
>bridge@mbb-1</EM
|
||
> is the output of the
|
||
primary bridge, while you see in
|
||
<A
|
||
HREF="practical-example.html#SAMPLE-BRIDGE-STATUS-MBB2"
|
||
>Example 18</A
|
||
> the output of the backup
|
||
bridge waiting to take over.
|
||
</P
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="SAMPLE-BRIDGE-STATUS-MBB1"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 17. Status Output Of mbb-1 Fully Up</B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>mueb
|
||
bridge id 0000.0800062815f6
|
||
designated root 0000.0800062815f6
|
||
root port 0 path cost 0
|
||
max age 4.00 bridge max age 4.00
|
||
hello time 1.00 bridge hello time 1.00
|
||
forward delay 4.00 bridge forward delay 4.00
|
||
ageing time 300.00 gc interval 4.00
|
||
hello timer 0.80 tcn timer 0.00
|
||
topology change timer 0.00 gc timer 3.80
|
||
flags
|
||
|
||
|
||
eth0 (1)
|
||
port id 8001 state forwarding
|
||
designated root 0000.0800062815f6 path cost 100
|
||
designated bridge 0000.0800062815f6 message age timer 0.00
|
||
designated port 8001 forward delay timer 0.00
|
||
designated cost 0 hold timer 0.80
|
||
flags
|
||
|
||
eth1 (2)
|
||
port id 8002 state forwarding
|
||
designated root 0000.0800062815f6 path cost 100
|
||
designated bridge 0000.0800062815f6 message age timer 0.00
|
||
designated port 8002 forward delay timer 0.00
|
||
designated cost 0 hold timer 0.80
|
||
flags
|
||
|
||
eth2 (3)
|
||
port id 8003 state forwarding
|
||
designated root 0000.0800062815f6 path cost 100
|
||
designated bridge 0000.0800062815f6 message age timer 0.00
|
||
designated port 8003 forward delay timer 0.00
|
||
designated cost 0 hold timer 0.80
|
||
flags
|
||
|
||
eth3 (4)
|
||
port id 8004 state forwarding
|
||
designated root 0000.0800062815f6 path cost 100
|
||
designated bridge 0000.0800062815f6 message age timer 0.00
|
||
designated port 8004 forward delay timer 0.00
|
||
designated cost 0 hold timer 0.80
|
||
flags
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="SAMPLE-BRIDGE-STATUS-MBB2"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 18. Status Output Of mbb-2 Fully Up</B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>mueb
|
||
bridge id 0064.00a024d04cd6
|
||
designated root 0000.0800062815f6
|
||
root port 1 path cost 100
|
||
max age 4.00 bridge max age 4.00
|
||
hello time 1.00 bridge hello time 1.00
|
||
forward delay 4.00 bridge forward delay 4.00
|
||
ageing time 300.00 gc interval 4.00
|
||
hello timer 0.00 tcn timer 0.00
|
||
topology change timer 0.00 gc timer 2.39
|
||
flags
|
||
|
||
|
||
eth0 (1)
|
||
port id 8001 state forwarding
|
||
designated root 0000.0800062815f6 path cost 100
|
||
designated bridge 0000.0800062815f6 message age timer 0.42
|
||
designated port 8001 forward delay timer 0.00
|
||
designated cost 0 hold timer 0.00
|
||
flags
|
||
|
||
eth1 (2)
|
||
port id 8002 state blocking
|
||
designated root 0000.0800062815f6 path cost 100
|
||
designated bridge 0000.0800062815f6 message age timer 0.42
|
||
designated port 8002 forward delay timer 0.00
|
||
designated cost 0 hold timer 0.00
|
||
flags
|
||
|
||
eth2 (3)
|
||
port id 8003 state blocking
|
||
designated root 0000.0800062815f6 path cost 100
|
||
designated bridge 0000.0800062815f6 message age timer 0.42
|
||
designated port 8003 forward delay timer 0.00
|
||
designated cost 0 hold timer 0.00
|
||
flags
|
||
|
||
eth3 (4)
|
||
port id 8004 state blocking
|
||
designated root 0000.0800062815f6 path cost 100
|
||
designated bridge 0000.0800062815f6 message age timer 0.42
|
||
designated port 8004 forward delay timer 0.00
|
||
designated cost 0 hold timer 0.00
|
||
flags
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
><P
|
||
>If you take a glance into
|
||
<TT
|
||
CLASS="FILENAME"
|
||
>/var/log/messages</TT
|
||
> as shown in
|
||
<A
|
||
HREF="practical-example.html#MESSAGES-FROM-INIT-2-AT-MBB-1"
|
||
>Example 19</A
|
||
> and in
|
||
<A
|
||
HREF="practical-example.html#MESSAGES-FROM-INIT-2-AT-MBB-2"
|
||
>Example 20</A
|
||
> you can see
|
||
how the bridges are coming up and deciding how to do their
|
||
duty.
|
||
<SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-1</SPAN
|
||
> has a lower value for bridge-priority
|
||
(see <A
|
||
HREF="set-up-the-bridge.html#BRCTL-SETBRIDGEPRIO"
|
||
><A
|
||
HREF="set-up-the-bridge.html#BRCTL-SETBRIDGEPRIO"
|
||
><IMG
|
||
SRC="../images/callouts/9.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(9)"></A
|
||
></A
|
||
>),
|
||
telling it to try to become the root bridge.
|
||
As you can see <SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-1</SPAN
|
||
> forwards all ports,
|
||
while <SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-2</SPAN
|
||
> blocks all ports with the exception
|
||
of eth0.
|
||
</P
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="MESSAGES-FROM-INIT-2-AT-MBB-1"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 19. <SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-1</SPAN
|
||
> Messages From
|
||
<B
|
||
CLASS="COMMAND"
|
||
>init 2</B
|
||
></B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>May 25 16:46:04 mbb-1 init: Switching to runlevel: 2
|
||
May 25 16:46:04 mbb-1 kernel: NET4: Ethernet Bridge 008 for NET4.0
|
||
May 25 16:46:04 mbb-1 kernel: device eth0 entered promiscuous mode
|
||
May 25 16:46:04 mbb-1 kernel: device eth1 entered promiscuous mode
|
||
May 25 16:46:04 mbb-1 kernel: device eth2 entered promiscuous mode
|
||
May 25 16:46:04 mbb-1 kernel: device eth3 entered promiscuous mode
|
||
May 25 16:46:04 mbb-1 kernel: mueb: port 4(eth3) entering listening state
|
||
May 25 16:46:04 mbb-1 kernel: mueb: port 3(eth2) entering listening state
|
||
May 25 16:46:04 mbb-1 kernel: mueb: port 2(eth1) entering listening state
|
||
May 25 16:46:04 mbb-1 kernel: mueb: port 1(eth0) entering listening state
|
||
May 25 16:46:08 mbb-1 kernel: mueb: port 4(eth3) entering learning state
|
||
May 25 16:46:08 mbb-1 kernel: mueb: port 3(eth2) entering learning state
|
||
May 25 16:46:08 mbb-1 kernel: mueb: port 2(eth1) entering learning state
|
||
May 25 16:46:08 mbb-1 kernel: mueb: port 1(eth0) entering learning state
|
||
May 25 16:46:12 mbb-1 kernel: mueb: port 4(eth3) entering forwarding state
|
||
May 25 16:46:12 mbb-1 kernel: mueb: topology change detected, propagating
|
||
May 25 16:46:12 mbb-1 kernel: mueb: port 3(eth2) entering forwarding state
|
||
May 25 16:46:12 mbb-1 kernel: mueb: topology change detected, propagating
|
||
May 25 16:46:12 mbb-1 kernel: mueb: port 2(eth1) entering forwarding state
|
||
May 25 16:46:12 mbb-1 kernel: mueb: topology change detected, propagating
|
||
May 25 16:46:12 mbb-1 kernel: mueb: port 1(eth0) entering forwarding state
|
||
May 25 16:46:12 mbb-1 kernel: mueb: topology change detected, propagating
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="MESSAGES-FROM-INIT-2-AT-MBB-2"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 20. <SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-2</SPAN
|
||
> Messages From
|
||
<B
|
||
CLASS="COMMAND"
|
||
>init 2</B
|
||
></B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>Jun 8 06:06:16 mbb-2 init: Switching to runlevel: 2
|
||
Jun 8 06:06:17 mbb-2 kernel: NET4: Ethernet Bridge 008 for NET4.0
|
||
Jun 8 06:06:17 mbb-2 kernel: device eth0 entered promiscuous mode
|
||
Jun 8 06:06:17 mbb-2 kernel: device eth1 entered promiscuous mode
|
||
Jun 8 06:06:17 mbb-2 kernel: device eth2 entered promiscuous mode
|
||
Jun 8 06:06:17 mbb-2 kernel: device eth3 entered promiscuous mode
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 4(eth3) entering listening state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 3(eth2) entering listening state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 2(eth1) entering listening state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 1(eth0) entering listening state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 2(eth1) entering blocking state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 3(eth2) entering blocking state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 4(eth3) entering blocking state
|
||
Jun 8 06:06:21 mbb-2 kernel: mueb: port 1(eth0) entering learning state
|
||
Jun 8 06:06:25 mbb-2 kernel: mueb: port 1(eth0) entering forwarding state
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
></DIV
|
||
><DIV
|
||
CLASS="SECT2"
|
||
><H2
|
||
CLASS="SECT2"
|
||
><A
|
||
NAME="BRIDGE-TESTS"
|
||
>8.4. Bridge Tests</A
|
||
></H2
|
||
><P
|
||
>To check if really all the promised features are working, I did
|
||
some crude test.
|
||
The message logs are shown here in.
|
||
</P
|
||
><DIV
|
||
CLASS="SECT3"
|
||
><H3
|
||
CLASS="SECT3"
|
||
><A
|
||
NAME="TEAR-THE-PATCH-WIRE-TEST"
|
||
>8.4.1. Tear The Patch Wire Test</A
|
||
></H3
|
||
><P
|
||
> I think just taking a patch wire out of a bridge port is a really good
|
||
real survival test.
|
||
So I pulled the plugs one by one out of the sockets and looked what
|
||
happened.
|
||
To give you not too much tension let me summarize first:
|
||
<EM
|
||
>It's really working</EM
|
||
>.
|
||
All the takeovers happened within less then 12 seconds.
|
||
</P
|
||
><P
|
||
>The really interesting messages you can find at
|
||
<SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-2</SPAN
|
||
>.
|
||
To see how everything comes up, I stopped network services first.
|
||
|
||
In <A
|
||
HREF="practical-example.html#MBB-2-MESSAGES-OF-BRIDGE-TEST"
|
||
>Example 21</A
|
||
> you will see
|
||
the messages caused by a <B
|
||
CLASS="COMMAND"
|
||
>init 2</B
|
||
> followed
|
||
by a <SPAN
|
||
CLASS="QUOTE"
|
||
>"take out the plug, wait what happens, then place it
|
||
back"</SPAN
|
||
> in the order eth3, eth2, eth1, eth0 .
|
||
</P
|
||
><DIV
|
||
CLASS="NOTE"
|
||
><BLOCKQUOTE
|
||
CLASS="NOTE"
|
||
><P
|
||
><B
|
||
>Note: </B
|
||
>The thing I did, was making the tests, and publishing the dump.
|
||
The one writing the nice explanations was Lennert again.
|
||
</P
|
||
></BLOCKQUOTE
|
||
></DIV
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="MBB-2-MESSAGES-OF-BRIDGE-TEST"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 21. <SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-2</SPAN
|
||
> Message Output Of Bridge Test</B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>Jun 8 06:06:16 mbb-2 init: Switching to runlevel: 2
|
||
Jun 8 06:06:17 mbb-2 kernel: NET4: Ethernet Bridge 008 for NET4.0
|
||
Jun 8 06:06:17 mbb-2 kernel: device eth0 entered promiscuous mode
|
||
Jun 8 06:06:17 mbb-2 kernel: device eth1 entered promiscuous mode
|
||
Jun 8 06:06:17 mbb-2 kernel: device eth2 entered promiscuous mode
|
||
Jun 8 06:06:17 mbb-2 kernel: device eth3 entered promiscuous mode
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 4(eth3) entering listening state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 3(eth2) entering listening state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 2(eth1) entering listening state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 1(eth0) entering listening state <A
|
||
NAME="SEE-OTHER-BRIDGE"
|
||
><IMG
|
||
SRC="../images/callouts/1.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(1)"></A
|
||
>
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 2(eth1) entering blocking state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 3(eth2) entering blocking state
|
||
Jun 8 06:06:17 mbb-2 kernel: mueb: port 4(eth3) entering blocking state
|
||
Jun 8 06:06:21 mbb-2 kernel: mueb: port 1(eth0) entering learning state
|
||
Jun 8 06:06:25 mbb-2 kernel: mueb: port 1(eth0) entering forwarding state <A
|
||
NAME="KEEP-ONE-INTERFACE"
|
||
><IMG
|
||
SRC="../images/callouts/2.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(2)"></A
|
||
>
|
||
Jun 8 06:07:15 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 4(eth3) <A
|
||
NAME="PULL-PLUG-ETH3"
|
||
><IMG
|
||
SRC="../images/callouts/3.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(3)"></A
|
||
>
|
||
Jun 8 06:07:15 mbb-2 kernel: mueb: port 4(eth3) entering listening state <A
|
||
NAME="ENTER-LISTEN-STATE"
|
||
><IMG
|
||
SRC="../images/callouts/4.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(4)"></A
|
||
>
|
||
Jun 8 06:07:19 mbb-2 kernel: mueb: port 4(eth3) entering learning state <A
|
||
NAME="ENTER-LEARN-STATE"
|
||
><IMG
|
||
SRC="../images/callouts/5.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(5)"></A
|
||
>
|
||
Jun 8 06:07:23 mbb-2 kernel: mueb: port 4(eth3) entering forwarding state <A
|
||
NAME="ENTER-FORWARD-STATE"
|
||
><IMG
|
||
SRC="../images/callouts/6.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(6)"></A
|
||
>
|
||
Jun 8 06:07:23 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu <A
|
||
NAME="TOPOLOGY-CHANGE-DETECT"
|
||
><IMG
|
||
SRC="../images/callouts/7.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(7)"></A
|
||
>
|
||
Jun 8 06:08:51 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu <A
|
||
NAME="TOPOLOGY-CHANGED-AGAIN"
|
||
><IMG
|
||
SRC="../images/callouts/8.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(8)"></A
|
||
>
|
||
Jun 8 06:08:51 mbb-2 kernel: mueb: port 4(eth3) entering blocking state <A
|
||
NAME="ROOT-IS-BACK"
|
||
><IMG
|
||
SRC="../images/callouts/9.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(9)"></A
|
||
>
|
||
Jun 8 06:09:22 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 3(eth2) <A
|
||
NAME="FROM-PULL-TO-BACK-ETH2"
|
||
><IMG
|
||
SRC="../images/callouts/10.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(10)"></A
|
||
>
|
||
Jun 8 06:09:22 mbb-2 kernel: mueb: port 3(eth2) entering listening state
|
||
Jun 8 06:09:26 mbb-2 kernel: mueb: port 3(eth2) entering learning state
|
||
Jun 8 06:09:30 mbb-2 kernel: mueb: port 3(eth2) entering forwarding state
|
||
Jun 8 06:09:30 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu
|
||
Jun 8 06:10:09 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu
|
||
Jun 8 06:10:09 mbb-2 kernel: mueb: port 3(eth2) entering blocking state
|
||
Jun 8 06:10:10 mbb-2 kernel: mueb: retransmitting tcn bpdu <A
|
||
NAME="RETRANSMIT-TCN-BPDU"
|
||
><B
|
||
>(11)</B
|
||
></A
|
||
>
|
||
Jun 8 06:10:41 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 2(eth1) <A
|
||
NAME="FROM-PULL-TO-BACK-ETH1"
|
||
><B
|
||
>(12)</B
|
||
></A
|
||
>
|
||
Jun 8 06:10:41 mbb-2 kernel: mueb: port 2(eth1) entering listening state
|
||
Jun 8 06:10:45 mbb-2 kernel: mueb: port 2(eth1) entering learning state
|
||
Jun 8 06:10:49 mbb-2 kernel: mueb: port 2(eth1) entering forwarding state
|
||
Jun 8 06:10:49 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu
|
||
Jun 8 06:11:06 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu
|
||
Jun 8 06:11:06 mbb-2 kernel: mueb: port 2(eth1) entering blocking state
|
||
Jun 8 06:11:33 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 1(eth0) <A
|
||
NAME="FROM-PULL-TO-BACK-ETH0"
|
||
><B
|
||
>(13)</B
|
||
></A
|
||
>
|
||
Jun 8 06:11:33 mbb-2 kernel: mueb: port 2(eth1) entering listening state
|
||
Jun 8 06:11:37 mbb-2 kernel: mueb: port 2(eth1) entering learning state
|
||
Jun 8 06:11:41 mbb-2 kernel: mueb: port 2(eth1) entering forwarding state
|
||
Jun 8 06:11:41 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu
|
||
Jun 8 06:14:18 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu
|
||
Jun 8 06:14:18 mbb-2 kernel: mueb: port 2(eth1) entering blocking state
|
||
Jun 8 06:14:19 mbb-2 kernel: mueb: retransmitting tcn bpdu
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
><DIV
|
||
CLASS="CALLOUTLIST"
|
||
><DL
|
||
COMPACT="COMPACT"
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#SEE-OTHER-BRIDGE"
|
||
><IMG
|
||
SRC="../images/callouts/1.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(1)"></A
|
||
></DT
|
||
><DD
|
||
>The kernel sees that there are already bridges (actually,
|
||
only one of them, but Hello packets are coming in on all 4 of
|
||
the ports) on eth[0123].
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#KEEP-ONE-INTERFACE"
|
||
><IMG
|
||
SRC="../images/callouts/2.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(2)"></A
|
||
></DT
|
||
><DD
|
||
>To maintain connectivity with the rest of the network, the
|
||
bridge decides to keep port 1 (eth0) active (i.e. in the
|
||
<SPAN
|
||
CLASS="QUOTE"
|
||
>"forwarding"</SPAN
|
||
> state), and to temporarily disable
|
||
ports 2-4.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#PULL-PLUG-ETH3"
|
||
><IMG
|
||
SRC="../images/callouts/3.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(3)"></A
|
||
></DT
|
||
><DD
|
||
>The plug on eth3 was pulled.
|
||
Here you can see that the message age timer expired
|
||
(<A
|
||
HREF="set-up-the-bridge.html#BRCTL-SETMAXAGE"
|
||
><A
|
||
HREF="set-up-the-bridge.html#BRCTL-SETMAXAGE"
|
||
><B
|
||
>(13)</B
|
||
></A
|
||
></A
|
||
>).
|
||
The last Hello packet was seen more than X seconds ago.
|
||
The bridge concludes that the connection to the bridge that
|
||
was there has died.
|
||
Therefore, it is going to try to enable this port, to provide
|
||
network connectivity to the now-cutoff segment.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#ENTER-LISTEN-STATE"
|
||
><IMG
|
||
SRC="../images/callouts/4.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(4)"></A
|
||
></DT
|
||
><DD
|
||
>It enters the listening state.
|
||
It waits to see whether the old bridge might come back, or
|
||
whether another bridge is going to claim takeover.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#ENTER-LEARN-STATE"
|
||
><IMG
|
||
SRC="../images/callouts/5.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(5)"></A
|
||
></DT
|
||
><DD
|
||
>Okay, no other bridge was seen.
|
||
We're going to try to provide network connectivity to this
|
||
segment ourselves.
|
||
Which means: we're going to try and become
|
||
<SPAN
|
||
CLASS="QUOTE"
|
||
>"designated bridge"</SPAN
|
||
> for this segment.
|
||
We now enter the learning state.
|
||
In this state, we only learn <SPAN
|
||
CLASS="ACRONYM"
|
||
>MAC</SPAN
|
||
> addresses and we do not
|
||
forward yet.
|
||
This is because if we see an unknown destination address, we
|
||
send the datagram to all ports, and this <SPAN
|
||
CLASS="QUOTE"
|
||
>"flooding"</SPAN
|
||
>
|
||
will happen unnecessarily often if we have a empty <SPAN
|
||
CLASS="ACRONYM"
|
||
>MAC</SPAN
|
||
> table.
|
||
Therefore, we're going to fill up our <SPAN
|
||
CLASS="ACRONYM"
|
||
>MAC</SPAN
|
||
> table with useful
|
||
entries first, and this is what happens during the learning
|
||
state.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#ENTER-FORWARD-STATE"
|
||
><IMG
|
||
SRC="../images/callouts/6.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(6)"></A
|
||
></DT
|
||
><DD
|
||
>Okay, here we go.
|
||
Pray for us.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#TOPOLOGY-CHANGE-DETECT"
|
||
><IMG
|
||
SRC="../images/callouts/7.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(7)"></A
|
||
></DT
|
||
><DD
|
||
>Because we took over for this segment, all communication
|
||
towards this segment now goes through this bridge.
|
||
This means that the topology has changed.
|
||
If the topology changes, we must let all bridges now, so that
|
||
they can time out stale <SPAN
|
||
CLASS="ACRONYM"
|
||
>MAC</SPAN
|
||
> address location data quickly.
|
||
This is why we send Topology Change Notification Bridge
|
||
Protocol Data Units (tcn bpdus).
|
||
</DD
|
||
><DD
|
||
><P
|
||
>Apparently the root bridge immediately acknowledges this
|
||
tcn bpdu in the next Hello message it sends (the protocol
|
||
requires for the root bridge to acknowledge it), because this
|
||
is the only such message we see.
|
||
<DIV
|
||
CLASS="NOTE"
|
||
><BLOCKQUOTE
|
||
CLASS="NOTE"
|
||
><P
|
||
><B
|
||
>Note: </B
|
||
>In situations where you see loads of these messages,
|
||
it means that the root bridge cannot acknowledge them,
|
||
which probably means your root bridge has a twisted STP
|
||
implementation.
|
||
</P
|
||
></BLOCKQUOTE
|
||
></DIV
|
||
>
|
||
</P
|
||
></DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#TOPOLOGY-CHANGED-AGAIN"
|
||
><IMG
|
||
SRC="../images/callouts/8.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(8)"></A
|
||
></DT
|
||
><DD
|
||
>Hey, something happened again!
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#ROOT-IS-BACK"
|
||
><IMG
|
||
SRC="../images/callouts/9.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(9)"></A
|
||
></DT
|
||
><DD
|
||
>Yup... eth3 came back online.
|
||
The root bridge will provide connectivity for this segment
|
||
again, so that we can disable this port.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#FROM-PULL-TO-BACK-ETH2"
|
||
><IMG
|
||
SRC="../images/callouts/10.gif"
|
||
HSPACE="0"
|
||
VSPACE="0"
|
||
BORDER="0"
|
||
ALT="(10)"></A
|
||
><A
|
||
HREF="practical-example.html#FROM-PULL-TO-BACK-ETH1"
|
||
><B
|
||
>(12)</B
|
||
></A
|
||
><A
|
||
HREF="practical-example.html#FROM-PULL-TO-BACK-ETH0"
|
||
><B
|
||
>(13)</B
|
||
></A
|
||
></DT
|
||
><DD
|
||
>Same story for eth2, eth1 and eth0.
|
||
</DD
|
||
><DT
|
||
><A
|
||
HREF="practical-example.html#RETRANSMIT-TCN-BPDU"
|
||
><B
|
||
>(11)</B
|
||
></A
|
||
></DT
|
||
><DD
|
||
>This means the tcn bpdu wasn't acknowledged quick enough.
|
||
That is why it is retransmitted.
|
||
</DD
|
||
></DL
|
||
></DIV
|
||
><P
|
||
>The root bridge <SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-1</SPAN
|
||
> was not so chatty.
|
||
It only reported some topology changes and propagated them as you can
|
||
see in <A
|
||
HREF="practical-example.html#MBB-1-MESSAGES-OF-BRIDGE-TEST"
|
||
>Example 22</A
|
||
>.
|
||
If somebody can offer a explanation why the root bridge is so quiet in
|
||
messaging please <A
|
||
HREF="mailto:uwe@bnhof"
|
||
TARGET="_top"
|
||
>tell me</A
|
||
>.
|
||
</P
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="MBB-1-MESSAGES-OF-BRIDGE-TEST"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 22. <SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-2</SPAN
|
||
> Message Output Of Bridge Test</B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>Jun 8 06:06:52 mbb-1 kernel: mueb: received tcn bpdu on port 1(eth0)
|
||
Jun 8 06:06:52 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 8 06:07:31 mbb-1 kernel: mueb: received tcn bpdu on port 1(eth0)
|
||
Jun 8 06:07:31 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 8 06:07:32 mbb-1 kernel: mueb: received tcn bpdu on port 1(eth0)
|
||
Jun 8 06:07:32 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 8 06:08:11 mbb-1 kernel: mueb: received tcn bpdu on port 1(eth0)
|
||
Jun 8 06:08:11 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 8 06:08:29 mbb-1 kernel: mueb: received tcn bpdu on port 1(eth0)
|
||
Jun 8 06:08:29 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 8 06:09:03 mbb-1 kernel: mueb: received tcn bpdu on port 2(eth1)
|
||
Jun 8 06:09:03 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 8 06:11:40 mbb-1 kernel: mueb: received tcn bpdu on port 1(eth0)
|
||
Jun 8 06:11:40 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 8 06:11:41 mbb-1 kernel: mueb: received tcn bpdu on port 1(eth0)
|
||
Jun 8 06:11:41 mbb-1 kernel: mueb: topology change detected, propagating
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
><P
|
||
>One of the other bridges tells us that the topology of the LAN
|
||
has changed (see <A
|
||
HREF="practical-example.html#MBB-2-MESSAGES-OF-BRIDGE-TEST"
|
||
>Example 21</A
|
||
>).
|
||
Well, okay.
|
||
We will set lower timeouts on our <SPAN
|
||
CLASS="ACRONYM"
|
||
>MAC</SPAN
|
||
>C table for a short period of
|
||
time, and we will propagate this topology change throughout the
|
||
network.
|
||
</P
|
||
></DIV
|
||
></DIV
|
||
><DIV
|
||
CLASS="SECT3"
|
||
><H3
|
||
CLASS="SECT3"
|
||
><A
|
||
NAME="KILL-THE-ROOT-BRIDGE-TEST"
|
||
>8.4.2. Kill The Root Bridge Test</A
|
||
></H3
|
||
><P
|
||
>The ultimate test is of course a total blocking, breakdown or
|
||
something similar to the root bridge.
|
||
I did this by shooting down the root bridge by
|
||
<B
|
||
CLASS="COMMAND"
|
||
>init 1</B
|
||
>.
|
||
Next I brought it up again with <B
|
||
CLASS="COMMAND"
|
||
>init 2</B
|
||
>.
|
||
Last I pulled all plugs out of the root bridge and waited for some
|
||
time before I placed them again.
|
||
In <A
|
||
HREF="practical-example.html#TEST-MESSAGES-OF-MASTER-BRIDGE"
|
||
>Example 23</A
|
||
> you will see
|
||
the messages from the master-bridge mbb-1, and in
|
||
<A
|
||
HREF="practical-example.html#TEST-MESSAGES-OF-BACKUP-BRIDGE"
|
||
>Example 24</A
|
||
> you see what
|
||
happened the same time at the backup-bridge mbb-2.
|
||
</P
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="TEST-MESSAGES-OF-MASTER-BRIDGE"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 23. Test Messages Of Master Bridge <SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-1</SPAN
|
||
></B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>Jun 12 13:35:15 mbb-1 init: Switching to runlevel: 1
|
||
Jun 12 13:35:20 mbb-1 kernel: mueb: port 4(eth3) entering disabled state
|
||
Jun 12 13:35:20 mbb-1 kernel: mueb: port 3(eth2) entering disabled state
|
||
Jun 12 13:35:20 mbb-1 kernel: mueb: port 2(eth1) entering disabled state
|
||
Jun 12 13:35:20 mbb-1 kernel: mueb: port 1(eth0) entering disabled state
|
||
Jun 12 13:35:20 mbb-1 kernel: mueb: port 2(eth1) entering disabled state
|
||
Jun 12 13:35:20 mbb-1 kernel: device eth1 left promiscuous mode
|
||
Jun 12 13:35:20 mbb-1 kernel: mueb: port 1(eth0) entering disabled state
|
||
Jun 12 13:35:20 mbb-1 kernel: device eth0 left promiscuous mode
|
||
Jun 12 13:35:20 mbb-1 kernel: mueb: port 4(eth3) entering disabled state
|
||
Jun 12 13:35:20 mbb-1 kernel: device eth3 left promiscuous mode
|
||
Jun 12 13:35:20 mbb-1 kernel: mueb: port 3(eth2) entering disabled state
|
||
Jun 12 13:35:20 mbb-1 kernel: device eth2 left promiscuous mode
|
||
Jun 12 13:35:50 mbb-1 init: Switching to runlevel: 2
|
||
Jun 12 13:35:50 mbb-1 kernel: NET4: Ethernet Bridge 008 for NET4.0
|
||
Jun 12 13:35:51 mbb-1 kernel: device eth0 entered promiscuous mode
|
||
Jun 12 13:35:51 mbb-1 kernel: device eth1 entered promiscuous mode
|
||
Jun 12 13:35:51 mbb-1 kernel: device eth2 entered promiscuous mode
|
||
Jun 12 13:35:51 mbb-1 kernel: device eth3 entered promiscuous mode
|
||
Jun 12 13:35:51 mbb-1 kernel: mueb: port 4(eth3) entering listening state
|
||
Jun 12 13:35:51 mbb-1 kernel: mueb: port 3(eth2) entering listening state
|
||
Jun 12 13:35:51 mbb-1 kernel: mueb: port 2(eth1) entering listening state
|
||
Jun 12 13:35:51 mbb-1 kernel: mueb: port 1(eth0) entering listening state
|
||
Jun 12 13:35:51 mbb-1 kernel: mueb: received tcn bpdu on port 2(eth1)
|
||
Jun 12 13:35:51 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:35:52 mbb-1 kernel: mueb: received tcn bpdu on port 1(eth0)
|
||
Jun 12 13:35:52 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:35:55 mbb-1 kernel: mueb: port 4(eth3) entering learning state
|
||
Jun 12 13:35:55 mbb-1 kernel: mueb: port 3(eth2) entering learning state
|
||
Jun 12 13:35:55 mbb-1 kernel: mueb: port 2(eth1) entering learning state
|
||
Jun 12 13:35:55 mbb-1 kernel: mueb: port 1(eth0) entering learning state
|
||
Jun 12 13:35:59 mbb-1 kernel: mueb: port 4(eth3) entering forwarding state
|
||
Jun 12 13:35:59 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:35:59 mbb-1 kernel: mueb: port 3(eth2) entering forwarding state
|
||
Jun 12 13:35:59 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:35:59 mbb-1 kernel: mueb: port 2(eth1) entering forwarding state
|
||
Jun 12 13:35:59 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:35:59 mbb-1 kernel: mueb: port 1(eth0) entering forwarding state
|
||
Jun 12 13:35:59 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:39:03 mbb-1 kernel: mueb: received tcn bpdu on port 1(eth0)
|
||
Jun 12 13:39:03 mbb-1 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:39:05 mbb-1 kernel: mueb: received tcn bpdu on port 1(eth0)
|
||
Jun 12 13:39:05 mbb-1 kernel: mueb: topology change detected, propagating
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
><P
|
||
></P
|
||
></DIV
|
||
><DIV
|
||
CLASS="EXAMPLE"
|
||
><A
|
||
NAME="TEST-MESSAGES-OF-BACKUP-BRIDGE"
|
||
></A
|
||
><P
|
||
><B
|
||
>Example 24. Test Messages Of Backup Bridge <SPAN
|
||
CLASS="ACRONYM"
|
||
>mbb-2</SPAN
|
||
></B
|
||
></P
|
||
><TABLE
|
||
BORDER="0"
|
||
BGCOLOR="#E0E0E0"
|
||
WIDTH="100%"
|
||
><TR
|
||
><TD
|
||
><PRE
|
||
CLASS="SCREEN"
|
||
>Jun 12 13:35:21 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 4(eth3)
|
||
Jun 12 13:35:21 mbb-2 kernel: mueb: port 4(eth3) entering listening state
|
||
Jun 12 13:35:21 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 3(eth2)
|
||
Jun 12 13:35:21 mbb-2 kernel: mueb: port 3(eth2) entering listening state
|
||
Jun 12 13:35:21 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 2(eth1)
|
||
Jun 12 13:35:21 mbb-2 kernel: mueb: port 2(eth1) entering listening state
|
||
Jun 12 13:35:21 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 1(eth0)
|
||
Jun 12 13:35:21 mbb-2 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:35:25 mbb-2 kernel: mueb: port 4(eth3) entering learning state
|
||
Jun 12 13:35:25 mbb-2 kernel: mueb: port 3(eth2) entering learning state
|
||
Jun 12 13:35:25 mbb-2 kernel: mueb: port 2(eth1) entering learning state
|
||
Jun 12 13:35:29 mbb-2 kernel: mueb: port 4(eth3) entering forwarding state
|
||
Jun 12 13:35:29 mbb-2 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:35:29 mbb-2 kernel: mueb: port 3(eth2) entering forwarding state
|
||
Jun 12 13:35:29 mbb-2 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:35:29 mbb-2 kernel: mueb: port 2(eth1) entering forwarding state
|
||
Jun 12 13:35:29 mbb-2 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:35:49 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu
|
||
Jun 12 13:35:49 mbb-2 kernel: mueb: port 3(eth2) entering blocking state
|
||
Jun 12 13:35:49 mbb-2 kernel: mueb: topology change detected, \
|
||
<6>mueb: port 4(eth3) entering blocking state
|
||
Jun 12 13:35:49 mbb-2 kernel: mueb: topology change detected, \
|
||
<6>mueb: port 2(eth1) entering blocking state
|
||
Jun 12 13:35:50 mbb-2 kernel: mueb: retransmitting tcn bpdu
|
||
Jun 12 13:38:26 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 2(eth1)
|
||
Jun 12 13:38:26 mbb-2 kernel: mueb: port 2(eth1) entering listening state
|
||
Jun 12 13:38:27 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 3(eth2)
|
||
Jun 12 13:38:27 mbb-2 kernel: mueb: port 3(eth2) entering listening state
|
||
Jun 12 13:38:28 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 4(eth3)
|
||
Jun 12 13:38:28 mbb-2 kernel: mueb: port 4(eth3) entering listening state
|
||
Jun 12 13:38:30 mbb-2 kernel: mueb: port 2(eth1) entering learning state
|
||
Jun 12 13:38:30 mbb-2 kernel: mueb: neighbour 0000.08:00:06:28:15:f6 lost on port 1(eth0)
|
||
Jun 12 13:38:30 mbb-2 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:38:31 mbb-2 kernel: mueb: port 3(eth2) entering learning state
|
||
Jun 12 13:38:32 mbb-2 kernel: mueb: port 4(eth3) entering learning state
|
||
Jun 12 13:38:34 mbb-2 kernel: mueb: port 2(eth1) entering forwarding state
|
||
Jun 12 13:38:34 mbb-2 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:38:35 mbb-2 kernel: mueb: port 3(eth2) entering forwarding state
|
||
Jun 12 13:38:35 mbb-2 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:38:36 mbb-2 kernel: mueb: port 4(eth3) entering forwarding state
|
||
Jun 12 13:38:36 mbb-2 kernel: mueb: topology change detected, propagating
|
||
Jun 12 13:39:01 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu
|
||
Jun 12 13:39:01 mbb-2 kernel: mueb: port 3(eth2) entering blocking state
|
||
Jun 12 13:39:01 mbb-2 kernel: mueb: topology change detected, \
|
||
<6>mueb: port 4(eth3) entering blocking state
|
||
Jun 12 13:39:02 mbb-2 kernel: mueb: topology change detected, sending tcn bpdu
|
||
Jun 12 13:39:02 mbb-2 kernel: mueb: port 2(eth1) entering blocking state
|
||
</PRE
|
||
></TD
|
||
></TR
|
||
></TABLE
|
||
><P
|
||
></P
|
||
></DIV
|
||
></DIV
|
||
></DIV
|
||
></DIV
|
||
><DIV
|
||
CLASS="NAVFOOTER"
|
||
><HR
|
||
ALIGN="LEFT"
|
||
WIDTH="100%"><TABLE
|
||
WIDTH="100%"
|
||
BORDER="0"
|
||
CELLPADDING="0"
|
||
CELLSPACING="0"
|
||
><TR
|
||
><TD
|
||
WIDTH="33%"
|
||
ALIGN="left"
|
||
VALIGN="top"
|
||
><A
|
||
HREF="advanced-bridge.html"
|
||
>Prev</A
|
||
></TD
|
||
><TD
|
||
WIDTH="34%"
|
||
ALIGN="center"
|
||
VALIGN="top"
|
||
><A
|
||
HREF="index.html"
|
||
>Home</A
|
||
></TD
|
||
><TD
|
||
WIDTH="33%"
|
||
ALIGN="right"
|
||
VALIGN="top"
|
||
><A
|
||
HREF="nic-info.html"
|
||
>Next</A
|
||
></TD
|
||
></TR
|
||
><TR
|
||
><TD
|
||
WIDTH="33%"
|
||
ALIGN="left"
|
||
VALIGN="top"
|
||
>Advanced Bridge Features</TD
|
||
><TD
|
||
WIDTH="34%"
|
||
ALIGN="center"
|
||
VALIGN="top"
|
||
> </TD
|
||
><TD
|
||
WIDTH="33%"
|
||
ALIGN="right"
|
||
VALIGN="top"
|
||
>Network Interface Cards</TD
|
||
></TR
|
||
></TABLE
|
||
></DIV
|
||
></BODY
|
||
></HTML
|
||
> |