Linux网桥工作原理与实现
_add_bridge() 函数主要完成以下几个工作:
从上面的代码可知,网桥 设备使用了 net_bridge 结构来描述,其定义如下: net_bridge 结构中,比较重要的字段为 port_list 和 hash:
网桥端口 使用结构体 net_bridge_port 来描述,其定义如下: 见,要将 网络接口设备 绑定到一个 网桥 上,需要使用 net_bridge_port 结构来关联的,下面我们来分析怎么将一个 网络接口设备 绑定到一个 网桥 中。 网桥是工作在 TCP/IP 协议栈的第二层,也就是说,网桥能够根据目标 MAC 地址对数据包进行广播或者单播。当目标 MAC 地址能够从网桥的 hash 表中找到对应的网桥端口,说明此数据包是单播的数据包,否则就是广播的数据包。 2. 将网络接口绑定到网桥 要将一个 网络接口设备 绑定到一个 网桥 上,可以使用以下命令: add_if() 函数主要完成以下工作:
也就是说,br_add_if() 函数主要建立 网络接口设备 与 网桥 的关系。 3. 网桥中的网络接口接收数据
当某个 网络接口 接收到数据包时,会判断这个 网络接口 是否绑定到某个 网桥 上,如果绑定了,那么就调用 handle_bridge() 函数处理这个数据包。handle_bridge() 函数实现如下: (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |