云计算网络之--linux bridge 详解

本文深入解析Linux Bridge的工作原理,包括其作为二层虚拟交换机的角色、关键组件如控制平面和转发平面的功能,以及MAC学习数据库的作用。同时,文章详细介绍了通过ioctl、sysfs和netlink实现网桥操作的方法,以及brctl命令的具体应用。

linux bridge 是什么?

通俗的说linux bridge可以比作一个简单的二层虚拟交换机,集成在linux里面。像普通交换机一样,其他端口可以连接bridge,终端虚拟设备通过接入bridge实现互相通信和外部设备的通信。
linux bridge主要包括四个部分,这也是简单二层物理交换机的必备部分,可以说是虚拟了物理交换机的基础业务。

1:网络端口(或接口)集:用于将终端交换机之间的流量转发到网络中的其他主机。

2:控制平面:用于运行生成树协议(STP),该协议计算最小生成树,以防止环路使网络崩溃。

3:转发平面:用于处理来自端口的输入帧,通过基于MAC学习数据库进行转发决策,将输入帧转发至网络端口。

4:MAC学习数据库:用于跟踪LAN中的主机位置,记录mac 地址端口等信息用于转发,如下所示

:~$ bridge -d fdb
33:33:00:00:00:01 dev eth2 self permanent
02:42:6c:25:91:03 dev br-4b26bd39c37a vlan 1 master br-4b26bd39c37a permanent
02:42:6c:25:91:03 dev br-4b26bd39c37a master br-4b26bd39c37a permanent
02:42:19:0d:0e:8e dev docker0 vlan 1 master docker0 permanent
02:42:19:0d:0e:8e dev docker0 master docker0 permanent

对于每一个单播mac地址,网桥根据维护的mac地址表中匹配的mac地址的端口进行转发,如果没有找到,它会包这个单播报文广播到除了接收端口外的所有端口。

linux bridge how to 实现?

有三个子系统可以实现bridges:

ioctl: 这个接口可以用来创建或者销毁网桥,把端口从网桥上添加或者删除。
sysfs: 管理网桥和端口的特殊参数
netlink: 使用AF_NETLINK地址族的基于异步队列的通信也可以用于与网桥进行交互。

这里我们重点介绍ioctl

创建一个网桥

可以通过ioctl命令SIOCBRADDBR来实现创建一个网桥,如下面使用bridge-utils 的brctl所示:

~$ sudo strace brctl addbr br1
execve("/sbin/brctl", ["brctl", "addbr", "br1"], [/* 16 vars */]) = 0
...
ioctl(3, SIOCBRADDBR, 0x7fff2eae9966)   = 0
...

注意,此时没有设备可以处理ioctl命令,因此ioct

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值