Linux Bridge的工作原理

LinuxBridge是内核中实现的一种网络设备,它在数据链路层工作,类似于交换机功能,用于不同网络设备间的通信。Bridge通过绑定其他网络设备(如eth0,eth1),根据MAC信息处理和转发数据包,自动更新MAC端口映射。设备绑定到Bridge后,其IP设置失效,Bridge自身的IP用于上层通信并参与路由。
摘要由CSDN通过智能技术生成

1、原理介绍

1.1 Linux 网络设备

linux用户想要实现网络设备功能,不能直接通过操作硬件完成,而是需要直接或间接操作一个linux系统为我们抽象出来的通用linux网络设备来完成。

类似于系统中有一个硬件网卡,Linux会在系统中生成一个网络设备实例,如eth0,用户可以通过对eth0发送命令或配置来使用硬件。随着硬件的增加,虚拟的硬件也会带来更多的设备实例,使情况变得复杂。

1.2 Linux Bridge

Linux Bridge(网桥)是在linux上用来TCP/IP两层协议交换的设备,类似于交换机的功能。

Bridge可以绑定其它Linux网络设备作为从设备,并将这些设备虚拟化为端口,类似于交换机和一个终端用户通过网线连接。当有数据到达时,Bridge会根据报文中的MAC信息进行广播、转发、丢弃处理。

Bridge的功能只要在内核中实现,当一个从设备连接在Bridge上时,此时内核程序中,netdev_rx_handler_register()被调用,一个用于接收数据的回调函数被注册。之后每次从设备接收到数据时都会调用该函数将数据转发到Bridge上。在Bridge接收到该收据后,调用br_handle_frame()函数,对数据进行处理,包括:判断包的类别(广播/单播),查找内部MAC端口映射表,定位目标端口号,将数据转发到目标端口号或丢弃,自动更新内部MAC端口映射表以自我学习。

2. 图例

 

 3. 图解

由图可知,Bridge设备br0绑定了实际设备eth0和eth1.对于网络协议栈的上层来说,只看到了br0,因为桥接是在数据链路层实现的,上层协议栈不关心桥接的细节。当从设备接收到数据包时,会将数据转输给br0决定数据包的去向,br0会根据MAC地址和端口的映射关系进行转发eth0或eth1。反之亦然

由于Bridge工作在数据链路层,所以绑定的eth0,eth1,不再需要设置IP,对于上层来说,它们都位于同一个子网,因此只需为br0设置IP,比如10.0.1/24,因此eth0,eth1均通过br0出入10.0.1.0/24网段。

由于br0具有自己的IP,所以br0可以直接加入路由表,并通过它来发送数据,而实际的数据的发送过程是由某个设备来完成的。

如果eth0本身有自己的IP,那么在绑定br0后,它原来的IP就会失效,用户程序不能接受到发送到这个IP的地址,只有目的地址为br0的IP地址会被Linux接受得到。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值