linux网桥实现读后感

首先是大蓝图

linux网桥实现读后感_第1张图片

然后是心得:

  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
     面码

你可能感兴趣的:(linux网桥实现读后感)