网站开发方式有哪些,有系统源码可以做网站吗,模拟登录wordpress c,做app页面的网站XDP的使用与eBPF程序分不开#xff0c;因此要了解学历XDP#xff0c;须知道什么是eBPF、什么是XDP。
概念
eBPF BPF#xff08;Berkeley Packet Filter#xff09;是一种灵活且高效的数据包过滤技术#xff0c;最初由 BSD Unix 中的网络子系统引入#xff1b;BPF 允许用… XDP的使用与eBPF程序分不开因此要了解学历XDP须知道什么是eBPF、什么是XDP。
概念
eBPF BPFBerkeley Packet Filter是一种灵活且高效的数据包过滤技术最初由 BSD Unix 中的网络子系统引入BPF 允许用户编写简单的程序来过滤和处理网络数据包以实现网络监控、安全策略、流量分析等功能 eBPF是Berkeley Packet Filter(BPF)的扩展版本传统的BPF即cBPF。它是在Linux内核中运行的抽象虚拟机 (VM)就像Java虚拟机(JVM)可以在受控环境中运行应用程序一样。eBPF可以在内核的沙箱内执行用户自定义的程序它通常用在Linux中编写低级监控、跟踪或网络程序
XDP eXpress Data Path(XDP)是一个框架可以在BPF应用程序中执行高速数据包处理。为了更快地响应网络操作XDP会尽快运行BPF程序通常是在网络接口接收到数据包后立即运行。 XDP是一种允许开发人员将eBPF程序附加到低级钩子的技术是Linux内核中的网络设备驱动程序以及在设备驱动程序之后运行的通用钩子实现。 XDP可用于在eBPF架构中实现高性能数据包处理主要使用内核旁路技术。这大大减少了内核所需的开销因为它不需要处理上下文切换、网络层处理、中断等。网络接口卡(NIC)的控制被转移到eBPF程序。如果你需要更高的网络速度10 Gbps及以上工作这一点尤其重要。
XDP工作原理 XDP程序可以直接连接到网络接口每当在网络接口上收到一个新的数据包时XDP程序都会收到一个回调并且可以快速地对数据包执行操作。 AF_XDP 和 AF_INET 一样也是 address family 的一种AF_XDP 就相当于 socket 底层通讯方式的不同实现AF_INET 可以用于 IPv4 类型地址的通讯AF_XDP 则是一套基于 XDP 的通讯的实现。 XDP工作模式 XDP有三种工作模式 1Native XDP即运行在网络驱动实现的poll()函数中需要网卡驱动的支持 2Generic XDP如果网卡驱动不支持XDP则可以运行在receive_skb()函数中 3Offload XDP这种模式是指将XDP程序offload到网卡中这需要网卡硬件的支持编译器将BPF代码翻译成网络原生指令并在网卡上运行。
XDP程序案例 编写一个XDP程序的主要分为几个步骤 1) 安装必要的工具和软件包 sudo apt-get install clang llvm libelf-dev linux-headers-$(uname -r) gcc-multilib 2) 编写 XDP 代码并保存为 .c 文件例如 xdp_xx.c在编写xdp程序通常需要明确指定函数在哪个section如SEC(xx) 3)使用 Clang 编译 XDP 代码并生成 ELF 文件 4) 在需要应用 XDP 的网络接口上启用 XDP 程序
XDP程序返回码 XDP程序结束后会返回一个结果告诉调用者接下来如何处理这个包 1) XDP_DROP, 丢弃这个包主要用于报文过滤的安全场景。 2XDP_PASS,将这个包“交给/还给内核”继续走正常的内核处理流程。 3XDP_TX,从收到包的网卡上再将这个包发送出去即hairpin模式主要用于负载均衡模式 4XDP_REDIRECT和XDP_TX类似但是通过另外一个网卡发送出去除此之外还可以实现将报文重定向到其他CPU处理类似与XDP_PASS继续内核处理当前CPU继续处理后续报文的接收。 5XDP_ABORTED表示程序产生异常行为类似XDP_DROP,但是会通过一个tracepoint打印日志追踪。
参考连接
epbf和xdp基础知识