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