linux网桥实现读后感

首先是大蓝图
linux


而后是心得:网络

  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。而后按传统流程处理就好了..net

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

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

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

  7. 最小生成树能够参考这个文章http://my.oschina.net/u/572632/blog/284010。回调函数

    linux-3.6
     面码io

相关文章
相关标签/搜索