• 聊一聊sockmap 以及ebpf 实例演示


    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 记录

  • 相关阅读:
    HDU 2895 编辑距离
    AC自动机
    HDU 1707 简单模拟 Spring-outing Decision
    HDU 1710 二叉树的遍历 Binary Tree Traversals
    Codeforces Round #521 (Div. 3) E. Thematic Contests
    Codeforces Round #521 (Div. 3) D. Cutting Out
    Codeforces Round #515 (Div. 3) E. Binary Numbers AND Sum
    Codeforces Round #510 (Div. 2) B. Vitamins
    Codeforces Round #510 (Div. 2) D. Petya and Array(树状数组)
    Codeforces Round #506 (Div. 3) 题解
  • 原文地址:https://www.cnblogs.com/codestack/p/12733688.html
Copyright © 2020-2023  润新知