使用eBPF&bcc提取内核网络流量信息(二)
使用eBPF&bcc提取内核网络流量信息(一)已经将流量信息提取出来,本文将通过分析内核源码,扩展此bcc,为其增加源地址、源端口、目的地址、目的端口等字段。
使用eBPF&bcc提取内核网络流量信息(一)已经将流量信息提取出来,本文将通过分析内核源码,扩展此bcc,为其增加源地址、源端口、目的地址、目的端口等字段。
在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息。Linux提供了多种方法可以用来完成这些任务。本文总结了各种常用的信息交换方法,并用简单的例子演示这些方法各自的特点及用法。其中有大家非常熟悉的方法,也有特殊条件下方可使用的手段。通过对比明确这些方法,可以加深我们对Linux内核的认识,更重要的是,可以让我们更熟练驾御linux内核级的应用开发技术。
A frequently asked question on the Linux Kernel Mailing List is how to apply a patch to the kernel or, more specifically, what base kernel a patch for one of the many trees/branches should be applied to. Hopefully this document will explain this to you.
Linux内核中的循环缓冲区(circular buffer)为解决某些特殊情况下的竞争问题提供了一种免锁的方法。这种特殊的情况就是当生产者和消费者都只有一个,而在其它情况下使用它也是必须要加锁的。
本文将介绍Linux使用内核模块添加系统调用(无需编译内核),思路就是修改映射在内存中的系统调用表,把一个空闲的系统调用表项指向自己写的模块中的函数,如果是已使用的表项,甚至可以实现系统调用劫持。
本文将分享从0开始编写自己的bcc程序用来提取内核网络流量信息。那么开始编写bcc之前,自己一定要明确,我们要用bcc提取什么数据。本文的实例将会提取的数据关键字段为进程的PID,进程的名字,进程的收包实时流量、发包实时流量,收包流量总和,发包流量总和,总的收发流量等。
话说kboject是驱动模型的核心对象,但在sysfs文件系统中似乎并没有对应的项,而这种看似“无”,实际上蕴藏着“有”。
Linux内核中大量使用了队列,这里仅列举它在进程调度中的几处应用。Linux内核中的队列是以双链表的形式连接起来的,include/linux/list.h中定义了队列并提供了一些接口,详细的介绍可以参考[1]中的附录。
Copyright (c), linuxkerneltravel, all rights reserved. 【 陕ICP备17020329号-1 】
模板来自 Bootstrapious. 移植到 Hugo 来自 DevCows.