Network programming 请介绍linux中的网络包遍历查询

Network programming 请介绍linux中的网络包遍历查询,network-programming,linux-kernel,linux-device-driver,kernel,Network Programming,Linux Kernel,Linux Device Driver,Kernel,我正在阅读理解linux网络内部书籍和链接上linux内核空间中的pdf网络数据包捕获 在主题9.2.2下的理解linux网络内部中,给出 负责输入帧的代码分为两部分:首先,驱动程序将帧复制到内核可访问的输入队列中,然后内核对其进行处理(通常将其传递给专用于相关协议(如IP)的处理程序)。第一部分在中断上下文中执行,可以抢占第二部分的执行 现在的问题是什么时候安排第二部分?谁安排的?调用是否在中断处理程序中给出?在Linux内核空间的网络数据包捕获中,数据包输入流描述为:- When worki

我正在阅读理解linux网络内部书籍和链接上linux内核空间中的pdf网络数据包捕获

在主题9.2.2下的理解linux网络内部中,给出

负责输入帧的代码分为两部分:首先,驱动程序将帧复制到内核可访问的输入队列中,然后内核对其进行处理(通常将其传递给专用于相关协议(如IP)的处理程序)。第一部分在中断上下文中执行,可以抢占第二部分的执行

现在的问题是什么时候安排第二部分?谁安排的?调用是否在中断处理程序中给出?在Linux内核空间的网络数据包捕获中,数据包输入流描述为:-

When working in interrupt driven model, the nic registers an
interrupt handler;
• This interrupt handler will be called when a frame is received;
• Typically in the handler, we allocate sk buff by calling

    dev alloc skb();

• Copies data from nic’s buffer to this struct just created;
• nic call generic reception routine `netif_rx();`
• `netif rx()` put frame in per cpu queue;
• if queue is full, drop!
• net rx action() decision based on skb->protocol;
• This function basically dequeues the frame and delivery a copy
for every protocol handler;
• ptype all and ptype base queues
我想知道netif rx()的时间;和net rx action()是否被调用?谁给他们打电话我是说谁安排他们


请指导。

此计划由
NAPI
结构完成。按所述方法计算。当存在“活锁”问题或数据包泛滥时,此softirq进入场景;这些是

数据包出口比数据包入口复杂得多,队列管理和QOS(甚至可能是数据包成形)正在实现。“队列Displines”用于实现用户可指定的


NAPI结构调度:

对于NAPI结构,如下所示:;它的司机

Linux使用ksoftirqd作为一般解决方案,通过将softirq置于调度器控制之下,来调度softirq在下一次中断之前运行。这也防止了连续的softirq独占CPU。在运行CPU密集型应用程序和网络时,需要考虑ksoftirq的优先级,以获得softirq/用户平衡的适当平衡。据报道,将ksoftirq优先级增加到0(最终更多)可以解决高CPU负载下网络性能低下的问题


还有一篇关于的研究论文。

谢谢你的回复……你能详细解释一下NAPI结构是如何维护调度的吗