博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux网桥实现读后感
阅读量:6430 次
发布时间:2019-06-23

本文共 674 字,大约阅读时间需要 2 分钟。

hot3.png

首先是大蓝图

101149_uypO_572632.jpg

然后是心得:

  1. linux每个真实设备在报文来时可由硬件中断触发netif_rx,然后由上半段软件中断触发下半段的net_rx_action处理上半段收到的报文,这时会调用设备对应的rx_handler回调函数. 重点来了,因为这个硬件设备被绑定在虚拟的网桥设备中,所以他的接受处理函数被换掉了.于是调用rx_handler实际是调用br_handle_frame.

  2. br_handle_frame中就会使用报文信息进行网桥相关的处理了,最重要的网桥学习和生成树协议都会在这里处理。

  3. 网桥相关的处理完成后会将该报文的入口设备换成虚拟网桥的设备,然后主动调用netif_recive_skb。看吧,现在对外表现就像虚拟网桥收到一个报文一样了并且网桥设备的rx_handler是网络设备默认的入口函数netdev_frame_hook。然后按传统流程处理就行了.

  4. 综上,网桥在原有报文接收处理流程上追加了一个环路。

  5. 与网桥关联的报文的发送和接收类似,会在原有的发送流程上追加一个环路,当在环路中完成网桥相关处理后会将报文绑定为合适的真实设备.

  6. 最后,网桥的学习可以看做两类,主动和被动。被动型是根据传输过的报文的源mac来构建后续报文的传输路径,而主动型则是最小生成树协议,这个主要是解决路由环路的问题。

  7. 最小生成树可以参考这个文章http://my.oschina.net/u/572632/blog/284010。

    linux-3.6

     面码

转载于:https://my.oschina.net/u/572632/blog/356950

你可能感兴趣的文章
linux 挂载光驱
查看>>
ASP.NET MVC Area操作
查看>>
CSS颜色代码大全
查看>>
LINQ之路10:LINQ to SQL 和 Entity Framework(下)
查看>>
circle area
查看>>
怎么改变按钮的图标
查看>>
当输入流和输出流同时作用一个文件
查看>>
MySQL关于表碎片整理OPTIMIZE TABLE操作
查看>>
FortiGate 0458版本bug
查看>>
后台post注入爆密码
查看>>
Java --- 多线程 面试题
查看>>
OA项目如何成功实施!
查看>>
FindMaxConsecutive.java
查看>>
作业:图书管理
查看>>
面试官问:ZooKeeper 一致性协议 ZAB 原理
查看>>
DNS实现域名正解与反解
查看>>
反向教学系列之——Django入门(一)【不需知道web框架】
查看>>
Linux学习-标准输入输出
查看>>
CentOS 7 配置IP
查看>>
文本处理工具grep及正则表达式
查看>>