我不得不解决一个小的硬件不兼容问题。HP-VG(语音级)100Mbit 网络与快速以太网不兼容。由于既没有资金也没有意愿更换设备,并且需要扩展系统,我不得不找到一个解决方案,该方案必须是 a) 稳定的,并且 b) 廉价的。
当然,购买 HP 模块化交换机不符合条件 b)。所以我记起我听说过 Linux 网桥,它可以自动满足条件 a) 和 b)。
因此,在很久以前,我成功地在两个不兼容的网络之间设置了一个网桥。它的第一个硬件布局如图 1 所示。
它被配置为一个透明的网络组件,意味着它不参与网络,而只是桥接它。最初它是在 SuSE 5.3 发行版的 kernel 2.0.35 上设置的。
下一个问题立刻出现。连接大型网段的单个网桥可能是 c) 瓶颈,并且 d) 如果它崩溃,可能成为网络管理员被干掉的原因。所以我试图找到一些解决该问题的方法。
接下来发生的事情是,我发现了一些提示,表明一位新的维护者接管了网桥代码。稍后在网桥邮件列表上收到了一些邮件,如 第 7.1 节 所示,我变得更聪明了。新的模块化网桥代码完全满足了我的需求。
新维护者:Lennert Buytenhek。 他的项目页面可以在 http://www.math.leidenuniv.nl/~buytenh/bridge/ 找到。恕我直言,他做得非常出色。非常感谢。
我从邮件列表讨论中获得的思路和提示,如 第 7.1 节 所示,引导出了一个新的硬件设置,如图 2 所示。该设置旨在提供一台默认机器(猜猜是哪一台)。该网桥有 3 张 HP 网卡,每张卡都连接到一个 HP VG15 集线器。3com 网卡连接到一个 3com Superstack 快速以太网交换机。
此设置不仅可以防止任何一个网桥接口发生故障,还可以防止其中一个网桥完全瘫痪。相对于旧设置 图 1 的另一个优点是,单个集线器是交换式的。这意味着从 VG15 集线器上的一个端口发送的数据报最多阻塞 30 个端口,最少阻塞 15 个端口,而不是阻塞所有 45 个端口。此外,连接到旧网桥的集线器的故障会导致整个 HP 网段崩溃。使用新代码,只有连接到故障集线器的机器将无法再接收数据。
对于两个网桥,设置完全相同(除了稍后将讨论的网桥优先级)。该机器是通过 SuSE 6.4 发行版安装的,并安装了原始的未打补丁的内核源代码。此时只有最小的配置,没有额外的硬件或网络设置。
基本设置根据本文档开头的描述。我额外做的事情是将 SuSE 6.4 发行版的未打补丁的 2.2.14 源代码升级到 2.2.15 版本,如 示例 11 所示。
示例 11. 将内核从 2.2.14 升级到 2.2.15
root@mbb-1:~ # cd /usr/src/linux-2.2.14 root@mbb-1:/usr/src/linux-2.2.14 # patch -p1 \ /usr/local/download/kernel/patch-2.2.15 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 |
下一步是应用网桥补丁,如 示例 12 所示。
示例 12. 应用内核补丁
root@mbb-1:/usr/src # cd /usr/src/linux-2.2.15 root@mbb-1:/usr/src/linux-2.2.15 # patch -p1 < \ bridge-0.0.5-against-2.2.15.diff patching file ........................ patching file ................... ... .. |
之后,我选择了将网桥代码编译为模块,如 示例 13 所示。
示例 13. 配置内核
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 .. |
顺便说一句,我还选择了将我的网卡的驱动程序编译为模块,这导致了3c95x.o和hp100.o.
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 |
在重启之后,我从运行级别 1 开始,将所有网络都排除在运行系统之外。这让我有机会逐步检查设置。
命令 modprobe -v bridge 工作正常,没有任何警告,所以这部分没问题。接下来我编辑了我的/etc/modules.conf通过别名我的网卡驱动程序,如 示例 14 和 示例 15 所示。我不需要使用选项,所有卡都正确识别,正如我通过 cat /proc/modules、cat /proc/interrupts 和 cat /proc/ioports 检查的那样。
示例 14./etc/modules.confmbb-1 的
# Aliases - specify your hardware alias eth0 3c59x alias eth1 hp100 alias eth2 hp100 alias eth3 hp100 |
示例 15./etc/modules.confmbb-2 的
# Aliases - specify your hardware alias eth0 3c509 alias eth1 hp100 alias eth2 hp100 alias eth3 hp100 |
所以接下来应该是逐步设置网桥及其接口。因为我比较懒,所以我直接展示我为设置准备的 init 脚本。
重要提示: 当然,如果您想使用它,您需要根据您的系统调整脚本。请记住,我正在为 SuSE 发行版的设置编写此文档。
示例 16. 网桥 Init 脚本
#! /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 |
注意: 至少在我的系统中是这样。也许您需要启用内核模块加载器。
重要提示: 在备份网桥的 init 脚本中,缺少此行,使其保留默认优先级 100。
为了完善您的设置并能够从远程访问网桥,您现在可以将您的网桥实例配置为好像它是一个物理存在的网络接口。您可以为其分配一个合适的网络掩码的 IP 地址。从您网络中的哪个网段访问都无关紧要,您都可以使用此 IP 地址访问网桥。
在这里,我想展示和解释正在运行的网桥是如何显示的。示例 17 中 bridge@mbb-1 的输出是主网桥的输出,而在 示例 18 中您可以看到等待接管的备份网桥的输出。
示例 17. mbb-1 完全启动后的状态输出
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 |
示例 18. mbb-2 完全启动后的状态输出
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 |
如果您浏览一下/var/log/messages如 示例 19 和 示例 20 所示,您可以看到网桥是如何启动并决定如何履行其职责的。mbb-1 的网桥优先级值较低(参见 ),告诉它尝试成为根桥。正如您所看到的,mbb-1 转发所有端口,而 mbb-2 阻塞所有端口,除了 eth0。
示例 19. 来自 init 2 的 mbb-1 消息
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 |
示例 20. 来自 init 2 的 mbb-2 消息
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 |
为了检查所有承诺的功能是否真的在工作,我做了一些粗略的测试。消息日志在此处显示。
我认为从网桥端口拔出跳线是一个非常好的真实生存测试。所以我一个接一个地拔出插座上的插头,看看发生了什么。为了不让您太紧张,让我先总结一下:它真的在工作。所有接管都在不到 12 秒内发生。
真正有趣的消息可以在 mbb-2 中找到。为了了解一切是如何启动的,我首先停止了网络服务。在 示例 21 中,您将看到由 init 2 引起的以及 “拔出插头,等待发生什么,然后放回” 的消息,顺序为 eth3、eth2、eth1、eth0。
注意: 我所做的是进行测试,并发布转储。编写精彩解释的人又是 Lennert。
示例 21. 网桥测试的 mbb-2 消息输出
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 |
显然,根桥在它发送的下一个 Hello 消息中立即确认了这个 tcn bpdu(协议要求根桥确认它),因为这是我们看到的唯一这样的消息。
注意: 在您看到大量此类消息的情况下,这意味着根桥无法确认它们,这可能意味着您的根桥有一个扭曲的 STP 实现。
根桥 mbb-1 不是那么健谈。它只报告了一些拓扑变化并传播了它们,正如您在 示例 22 中看到的那样。如果有人可以解释为什么根桥在消息传递中如此安静,请 告诉我。
示例 22. 网桥测试的 mbb-2 消息输出
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 |
其中一个其他网桥告诉我们 LAN 的拓扑结构已更改(参见 示例 21)。好吧,好的。我们将在短时间内为我们的 MAC 表设置较低的超时时间,并且我们将把这个拓扑变更传播到整个网络。
最终的测试当然是对根桥进行完全阻塞、崩溃或类似操作。我通过 init 1 关闭根桥来做到这一点。接下来,我使用 init 2 再次启动它。最后,我拔出了根桥的所有插头,并等待了一段时间,然后再次插上它们。在 示例 23 中,您将看到来自主网桥 mbb-1 的消息,在 示例 24 中,您将看到同一时间在备份网桥 mbb-2 上发生的事情。
示例 23. 主网桥 mbb-1 的测试消息
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 |
示例 24. 备份网桥 mbb-2 的测试消息
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 |