我正在尝试了解 Linux 桥接。
假设我有一个带有两个 veth 接口和一个 vNic 的 Linux 网桥。
网桥:br0 接口:veth1、veth2 和 eth1
现在,如果我这样做brctl showmacs br0,它会向我显示端口号#s/ MAC 地址等列表。例如:
$ brctl showmacs br0
port no mac addr is local? ageing timer
1 00:50:56:8f:96:e5 yes 0.00
2 f2:2b:f5:fa:17:9c yes 0.00
3 0e:fd:9d:0a:2c:4f yes 0.00
问题1:上表是如何构造的?我假设它称为转发数据库?
帧桥接
现在,如果在 veth1 生成一个帧,目标 MAC 地址为 veth2。它只会转到网桥,网桥将查找其转发数据库,然后将其发送到网桥上的 veth2 端口。简单的。
问题 2:但是如果在 veth1 生成的帧的目标 MAC 地址不是桥接端口,那么桥接如何工作?我假设网桥用这个帧淹没了所有端口。但是然后呢?如果端口接受泛洪帧,它会通知网桥我有这个 MAC 地址吗?如果桥上没有端口是接收器,那么在没有桥端口是预期接收器的情况下,桥如何知道上行链路端口或应该将帧发送到的端口是什么?