eBPF实质上是一个内核注入技术

  • 用户态可以用C来写运行的代码,再通过一个Clang&LLVM的编译器将C代码编译成BPF目标码;
  • 用户态通过系统调用bpf()将BPF目标码注入到内核当中,并创建必要的eBPF-maps。eBPF具有用作socket filter,kprobe处理器,流量控制调度,流量控制操作,tracepoint处理,eXpress Data Path(XDP),性能监测,cgroup限制,轻量级tunnel的程序类型。
  • 将加载的程序attach到系统中。根据不同的程序类型attach到不同的内核系统中。程序运行的时候,启动状态并且开始过滤,分析或者捕获信

对于bpf系统调用内核实现可以参考:https://www.csdn.net/gather_2d/MtjaQg2sMzIwMy1ibG9n.html   kernel/bpf/syscall.c为bpf的系统调用

说正题:Netronome的Jakub Kicinski和Nic Viljoen发表了标题为“eBPF / XDP硬件卸载到SmartNIC”  

  • 什么是XDP

    • 即eXpress Data Path,它其实是位于网卡驱动程序里的一个快速处理数据包的HOOK点,最显而易见的是,可以在如此低的层驱动链路层面上把数据包丢弃或者直接处理掉。如果面临DDoS攻击,采用这种方式的话,数据包就没有必要上升到Netfilter层面再被丢弃了。也就是XDP允许数据包在进入Linux协议栈之前就能被处理,没必要到tcp ip 协议栈处理。
     
  • 怎样知道这个报文要丢弃还是直接处理完回复再或者是到tcpip协议栈处理呢?
    • 答案就是:eBPF!这相当于在网卡驱动层面运行了一个eBPF程序
     

是不是发现ebpf这个hook想干嘛就干嘛???简直是为所欲为!!!

https://lwn.net/Articles/800606/    目前gcc 还不支持ebpf不过很快应该就可以了。

先编写代码 编写完在上传,顺便 编写自己的网络事件库

等着。。。。。。。。。。。。。。。。

今天写了一部分。。

2020-04-25 记录

最新文章

  1. ASP.NET访问Excel 失败的解决方法(错误号:80070005,8000401a)
  2. iOS图片攻略之:有3x自动生成2x 1x图片
  3. VMware-workstation-full-10.0.3-1895310 CN
  4. NDK(9)Application.mk各属性介绍
  5. 修改SVN账户密码的方法
  6. tortoisesvn的安装与使用
  7. 基于JVM规范的并发编程解决方案
  8. struts开发步骤
  9. node.js之路由,中间件,ge请求和post请求的参数
  10. c#委托事件入门--第二讲:事件入门
  11. 【Unity技巧】统一管理回调函数——观察者模式
  12. jmeter(二十六)生成HTML性能测试报告
  13. openv
  14. 《生命》第三集:Mammals (哺乳动物)
  15. 【.net】“Newtonsoft.Json”已拥有为“Microsoft.CSharp”定义的依赖项。
  16. How to trigger a Kubernetes cronjob manually-手动触发一个cronjob
  17. css 解决父div与子div不在同一容器的问题
  18. CAS (1) —— Mac下配置CAS到Tomcat(服务端)
  19. 【51nod】1149 Pi的递推式
  20. MongoDB add sharding -- Just a note

热门文章

  1. 多测师讲解html _链接标签004_高级讲师肖sir
  2. vmware 安装tools
  3. 为什么大部分的程序员学编程,都会选择从C语言开始?
  4. 如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (三)
  5. 【git冲突解决】: Please commit your changes or stash them before you merge.
  6. [Vue音乐项目] 第一节 环境搭建
  7. Python基础知识点整理(详细)
  8. 浅谈ES6——ES6中let、const、var三者的区别
  9. 19. [链表][双指针]删除链表的倒数第N个节点
  10. GitHub如何删除项目库Repositories