Linux 网络协议栈开发—— 二层桥实现原理

本文详细介绍了Linux系统中网桥的工作原理,包括网桥的实现、报文接收和发送处理,以及不同情况下的报文流向。网桥在Linux内核的net/bridge目录下实现,涉及多个核心文件和数据结构。网桥处理报文时,会进行动态MAC地址学习,同时支持通过ebtables进行链路层过滤。在报文发送时,已知单播报文按MAC地址转发,而广播/组播/未知单播报文则洪泛到所有桥端口。
摘要由CSDN通过智能技术生成

网桥原理:

网桥工作在链路层,所以它是二层的东西,对于以太网来说网桥和二层网络设备交换机的工作方式几乎是一样的,每个交换机包含一系列以太网接口,交换机通过其内部的硬件交换芯片实现对这些以太网接口出入报文的二层接收转发及过滤等二层qos功能,网桥在功能上和交换机几乎是一样的,只不过它是由软件实现这些功能。

下图是交换机和网桥的内部实现原理简图:

二层交换机内部实现简图

网桥内部实现简图

如上图,可以把网桥本身看做一个二层交换机,该交换机下面有eth0、usb1、vlan2、wlan3共4个接口,每个网桥下可以有很多个接口,不考虑STP生成树协议的话,可以认为网桥下接口是由用户配置的,普遍用brctl应用程序工具生成网桥,并在每个网桥下增加和删除接口,brctl使用举例如下:

初始情况下,没有网桥,由命令“brctl addbr br0”创建一个网桥br0,然后可以观察到创建了网桥br0,此时它底下还没有接口,然后由命令“brctl addif br0 XXX”在网桥br0下加入接口eth1、eth2,然后可以观察到网桥br0底下有这两个接口;同时网桥br0的MAC地址表还加入了两个静态的MAC地址,分别是接口eth1和eth2的MAC地址,这时如果从eth1接口进入属于网桥br0的报文,并且该报文的目的MAC地址与eth2接口的MAC地址相同,那么报文将被从eth2接口转发出去,并且会记录该报文的源MAC地址和进入接口eth1的对应关系作为网桥br0的一个动态MAC地址条目。

再如,我们的网关设备做测试时,如需测试二层业务流性能,经常把wan接口和vlan1接口做桥接,然后即可打双向二层业务流,同样是通过网桥学习两个接口进入报文的源MAC地址和进入接口的对应关系,实现网桥的两个接口对打二层业务流,由此可见,这和二层交换机的MAC地址学习和转发的道理是一样的。

【文章福利】小编推荐自己的Linux内核技术交流群: 【977878001】整理一些个人觉得比较好得学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!前100进群领取,额外赠送一份 价值699的内核资料包(含视频教程、电子书、实战项目及代码)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值