内核阅读之浅析Linux2.6.34内核桥接数据转发(二)

来源:互联网 发布:大数据舆情开源 编辑:程序博客网 时间:2024/06/04 11:01

按照内核阅读之浅析Linux2.6.34内核桥接数据转发(一)中的总体框架,依次浅析各个主要关键函数,看看里面具体实现了什么。

首先是int netif_receive_skb()函数,所有从硬件那边上来的数据包都首先要经过这个函数,当然也有例外,目前绝大多数网络芯片厂商都会有硬件加速模块,纯CPU已经无法迎合市场需求了。但是不管怎么说,任何网络数据的第一个包都是要经过netif_receive_skb()函数的。

该函数在Linux2.6.34\net\core\Dev.c



netif_receive_skb()是介于L2和L3之间的函数,将网卡驱动读取到的数据进行接收,并且分发给需要此数据包的协议。主要是遍历两条链表、桥接数据转发和MACVLAN数据组播转发,这里我主要关心的是桥接数据转发过程。数据包是由handle_bridge()函数来引入桥接控制的。而上面遍历的两条链表,这某些应用场景还是大有作为的。

本人初涉Linux内核网络数据模块部分,以上内容如有错误之处,欢迎指正学习。
0 0
原创粉丝点击