XDP学习笔记
XDP的使用与eBPF程序分不开,因此要了解学历XDP,须知道什么是eBPF、什么是XDP。
概念
eBPF
BPF(Berkeley 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有三种工作模式:
1)Native XDP,即运行在网络驱动实现的poll()函数中,需要网卡驱动的支持;
2)Generic XDP,如果网卡驱动不支持XDP,则可以运行在receive_skb()函数中
3)Offload 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, 丢弃这个包,主要用于报文过滤的安全场景。
2)XDP_PASS,将这个包“交给/还给内核”,继续走正常的内核处理流程。
3)XDP_TX,从收到包的网卡上再将这个包发送出去(即hairpin模式),主要用于负载均衡模式;
4)XDP_REDIRECT,和XDP_TX类似,但是通过另外一个网卡发送出去,除此之外,还可以实现将报文重定向到其他CPU处理,类似与XDP_PASS继续内核处理,当前CPU继续处理后续报文的接收。
5)XDP_ABORTED,表示程序产生异常,行为类似XDP_DROP,但是会通过一个tracepoint打印日志追踪。
参考连接
epbf和xdp基础知识
相关文章:
XDP学习笔记
XDP的使用与eBPF程序分不开,因此要了解学历XDP,须知道什么是eBPF、什么是XDP。 概念 eBPF BPF(Berkeley Packet Filter)是一种灵活且高效的数据包过滤技术,最初由 BSD Unix 中的网络子系统引入;BPF 允许用…...
JavaScript进阶:js的一些学习笔记-4
文章目录 1. 拷贝1. 浅拷贝2. 深拷贝 2. 异常处理 1. 拷贝 这里指的拷贝是指拷贝引用类型的数据(对象) 1. 浅拷贝 拷贝对象:Object.assign() 或者 {…obj} 展开运算符 const obj {name:liuze,age:23 } const o {...obj}; o.age 22; console.log(o); console.…...
【可能是全网最丝滑的LangChain教程】三、快速入门LLMChain
系列文章地址 【可能是全网最丝滑的LangChain教程】一、LangChain介绍 【可能是全网最丝滑的LangChain教程】二、LangChain安装 使用LangChain构建应用 LangChain支持构建应用程序,将外部数据源和计算源连接到LLM。我们将从一个简单的 LLM 链开始,它…...
Oracle Primavera Analytics 是什么,与P6的关系?
前言 Oracle Primavera P6 Analytics 是与P6有关的一个相对较新的模块,Primavera 用户社区在很大程度上尚未对其进行探索。 那么它到底有什么作用呢? 通过了解得知它旨在通过深入了解组织的项目组合绩效,帮助高级管理层对其项目组合做出更好…...
在 Amazon Bedrock 上使用 Anthropic Claude 系统 Prompt
系统 prompt 是定义生成式 AI 模型对用户输入的响应策略的一种好方法。这篇博文将介绍什么是系统 prompt,以及如何在基于 Anthropic Claude 2.x 和 3 的应用中使用系统 prompt。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例…...
【LeetCode】动态规划--题目练习
有关动态规划算法的整理:添加链接描述 1.爬楼梯 爬楼梯:LeetCode70 int climbStairs(int n) {//1.确定dp数组和意义 dp[n]表示第n阶的方法//2.确定递推关系式 dp[n] dp[n-1]dp[n-2];//3.初始化int dp[50] {0};dp[1] 1;dp[2] 2;for(int i 3;i<n;i){dp[i] …...
【LeetCode热题100】101. 对称二叉树(二叉树)
一.题目要求 给你一个二叉树的根节点 root , 检查它是否轴对称。 二.题目难度 简单 三.输入样例 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出&a…...
VLC抓取m3u8视频
前言 最近想看一些网络视频,但是很多时候网页上是m3u8推流的,如果在线看,速度又慢,所以就想下载下来,就想到了VLC的推流,转换能力,查阅资料,加上实践,总结心得。 设置中…...
聊聊Python都能做些什么
文章目录 一、Python简介二、Python都能做些什么1. Web开发2. 数据分析和人工智能3. 自动化运维和测试4. 网络爬虫5. 金融科技 三、Python开源库都有哪些1. Web开发2. 数据分析和科学计算3. 机器学习和深度学习4. 网络爬虫5. 自动化和测试6. 其他常用库 四、相关链接 一、Pytho…...
JavaWeb06-MVC和三层架构
目录 一、MVC模式 1.概述 2.好处 二、三层架构 1.概述 三、MVC与三层架构 四、练习 一、MVC模式 1.概述 MVC是一种分层开发的模式,其中 M:Model,业务模型,处理业务 V: View,视图,界面展…...
MySQL数据库实现增删改查基础操作
准备工作 安装mysql8.0 (安装时一定要记住用户名和密码)安装数据库可视化视图工具Navicat 请注意⚠️⚠️⚠️⚠️ a. 编程类所有软件不要安装在中文目录下 b. Navicat破解版下载安装教程:(由于文章审核提示版权问题,链接不方便给出ÿ…...
PCM和I2S区别
I2S和PCM接口都是数字音频接口,而所见的蓝牙到cpu以及codec的音频接口都是用PCM接口,是不是两个接口有各自不同的应用呢?先来看下概念。 PCM(PCM-clock、PCM-sync、PCM-in、PCM-out)脉冲编码调制,模拟语音信…...
大模型笔记:吴恩达 ChatGPT Prompt Engineering for Developers(1) prompt的基本原则和策略
1 intro 基础大模型 VS 用指令tune 过的大模型 基础大模型 只会对prompt的文本进行续写 所以当你向模型发问的时候,它往往会像复读机一样续写几个问题这是因为在它见过的语料库文本(通常大多来自互联网)中,通常会连续列举出N个问…...
设计模式 — — 单例模式
一、是什么 单例模式只会在全局作用域下创建一次实例对象,让所有需要调用的地方都共享这一单例对象 二、实现 // 单例构造函数 function CreateSingleton (name) {this.name name;this.getName(); };// 获取实例的名字 CreateSingleton.prototype.getName func…...
C++:菱形继承与虚继承
看下面这个示例代码 class A{ public: int num10; A(){cout<<"A构造"<<endl;} virtual void fun(){cout<<"A虚函数"<<endl;} };class B:public A{ public: B(){cout<<"B构造"<<endl;} void fun(){cout<…...
贡献法:USACO 2021 December Contest Bronze:孤独的照片
Farmer John 最近购入了 N 头新的奶牛,每头奶牛的品种是更赛牛(Guernsey)或荷斯坦牛(Holstein)之一。 奶牛目前排成一排,Farmer John 想要为每个连续不少于三头奶牛的序列拍摄一张照片。 然而,他…...
Java实现简单的通讯录
每日一言 泪眼问花花不语,乱红飞过秋千去。 —欧阳修- 简单的通讯录实现,跟写Java实现图书管理系统差不多,用到的知识也差不多,就当个小练习,练习一下写Java程序的手感。 Java实现图书管理系统 关于通讯录的代码都写…...
服务器数据恢复—raid5热备盘上线同步数据失败的如何恢复数据
服务器数据恢复环境&故障&分析: 一台存储上有一组由多块硬盘组建的raid5阵列,该raid5阵列中的一块硬盘掉线,热备盘自动上线同步数据的过程中,raid阵列中又有一块硬盘掉线,热备盘的数据同步被中断,r…...
探索C语言中的循环结构
循环结构是程序设计中一种重要的控制结构,它允许程序重复执行特定的代码块,直到满足某个条件为止。在C语言中,循环结构有多种形式,如for循环、while循环和do-while循环。本文将介绍C语言中的循环结构,并讨论它们的用法…...
数学建模-估计出租车的总数
文章目录 1、随机抽取的号码在总体的排序 1、随机抽取的号码在总体的排序 10个号码从小到大重新排列 [ x 0 , x ] [x_0, x] [x0,x] 区间内全部整数值 ~ 总体 x 1 , x 2 , … , x 10 总体的一个样本 x_1, x_2, … , x_{10} ~ 总体的一个样本 x1,x2,…,x10 总体的一个样…...
CMake 导言
为什么选择 CMake 在掌握 Linux 基础后,我们知道一个项目通常由多个源文件组成。想要构建这个项目,就需要按照一定的规则对源文件进行编译和链接,而这些规则通常需要在 Makefile 中定义。 但随着项目体量增大,手写 Makefile 会变得…...
LeetCode 热题100——3.无重复字符的最长子串
题目: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。注意 "bca" 和 "cab&qu…...
阿里云 ECS 部署 SpringBoot 项目完整教程(无坑可直接照着做)
需要购买阿里云服务器、学习服务器搭建的朋友看这里 👇阿里云超值折扣购买通道 :https://t.aliyun.com/U/L7DIVq 超详细服务器搭建教程:手把手教你阿里云服务器的购买及环境搭建 无论是新手入门、个人建站还是企业部署,都能一站…...
C++ 地址空间随机化(ASLR):探讨 C++ 动态链接库在内存布局上的安全特性
尊敬的各位同仁,各位对系统安全和C编程充满热情的开发者们,大家下午好!今天,我们齐聚一堂,共同探讨一个在现代软件安全领域至关重要的主题——地址空间布局随机化(ASLR),特别是它如何…...
VictoriaMetrics 集群版实战指南:架构解析与最佳实践
1. VictoriaMetrics集群版架构深度解析 第一次接触VictoriaMetrics集群版时,我被它简洁的组件划分惊艳到了。与常见的时序数据库不同,它的三大核心组件vmstorage、vminsert、vmselect各司其职,这种设计让横向扩展变得异常灵活。在实际部署中&…...
当相机位姿已知:利用COLMAP从稀疏到稠密重建的实战指南
1. 环境准备与数据格式转换 在开始COLMAP重建之前,我们需要确保环境配置正确,并完成相机位姿数据的格式转换。COLMAP支持Windows、Linux和macOS系统,但为了获得最佳性能,建议使用配备NVIDIA显卡的机器,并安装CUDA加速版…...
终极指南:如何用ImageToSTL将任何图片变成3D打印模型
终极指南:如何用ImageToSTL将任何图片变成3D打印模型 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. …...
Atmosphere:重新定义Nintendo Switch自制固件的革命性框架
Atmosphere:重新定义Nintendo Switch自制固件的革命性框架 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere 你是否曾想过&#x…...
GooglePlay多账号管理神器推荐:5款工具帮你轻松实现合规隔离(2025亲测有效)
GooglePlay多账号管理实战指南:2025年高效合规工具与策略 在移动应用生态中,Google Play作为全球最大的应用分发平台,其严格的账号管理政策让许多开发者感到头疼。特别是对于那些需要运营多个账号的开发者来说,如何在合规前提下实…...
BurpSuite导入P12证书遇到密码问题?3种无密码解决方案实测
BurpSuite导入P12证书遇到密码问题?3种无密码解决方案实测 在企业安全测试和渗透评估过程中,客户端证书认证是常见的防护机制。当BurpSuite提示需要P12证书密码而您又无法获取时,整个测试流程可能陷入僵局。本文将分享三种经过实战验证的解决…...
