xdp专题

网络编程之XDP技术的基础eBPF

一、XDP和TC的技术支撑 在前面分析了XDP和TC技术,从它们的细节里可以看出,它们都在调用eBPF的钩子函数。那么eBPF是什么呢?在2021年曾经写过一篇《eBPF介绍》的初级文章,对eBPF做了一个入门级的普及。但是未曾在技术层面上进行展开。这次借着XDP分析的机会,将其一并进行一下分析。先看一下XDP、TC及eBPF它们的关系图: 从图上可以看出,XDP和TC通过Maps调用内核中

网络编程之XDP和TC

一、TC之于XDP 在前面分析过XDP,今天简单分析一下与其相关的TC,即traffic control,流量控制。在分析XDP时知道其只能用于ingress方向触发,而TC却可以在两个方向即ingress和egress方向触发。也可以简单理解成它可以同时钩住进出两个方向的数据。 同时,XDP位于网络栈的最底层,可以加载到驱动上进行运行。而TC是在数据链路层,最主要的功能就是流量控制,这种流量控

网络编程之XDP技术应用

一、AF_XDP介绍 在上文中介绍了XDP技术,XDP技术的基本原理已经明白,但有一个问题,一个技术如何落地,如何在实际中应用?这就需要有一个承载其的具体的形式。举一个例子,网络编程一般使用Socket方式,那么能不能够在这种方式里使用XDP技术呢?答案是肯定的。 Linux在内核中提供了AF_XDP套接字编程,这就意味着,大部分的编程方式仍然可以以原来的套接字编程为主。这样的好处显而易见,对开

xdp、dpdk、rdma能在同一网卡上同时使用吗?

文心一言 XDP、DPDK和RDMA是三种不同的技术,它们各自在Linux网络性能优化中扮演了不同的角色。关于它们能否在同一网卡上同时使用,我们需要考虑以下几个方面: XDP(eXpress Data Path): XDP是Linux内核提供的高性能、可编程的网络数据包处理框架。它直接接管网卡的RX方向数据包,通过在内核运行eBPF指令来快速处理报文并无缝对接内核协议栈。XDP不是内核旁路,而

XDP(eXpress Data Path)防御DDoS攻击

1.新的分层方法 很多人会把Linux协议栈的实现按照OSI模型或者TCP/IP模型分成对应的层次,比如什么链路层,IP层,TCP层。其实这根本不对,Linux协议栈实现从链路层通用处理到IP层路由,并没有经过什么显式的关卡一样的门,仅仅支持一些函数调用而已。记住,OSI模型也好,TCP/IP模型也罢,所谓的分层仅仅是逻辑视图上的分层,好在让人们便于理解以及便于界定软件设计的边界和分工,所以可以

XDP学习笔记

XDP的使用与eBPF程序分不开,因此要了解学历XDP,须知道什么是eBPF、什么是XDP。 概念 eBPF          BPF(Berkeley Packet Filter)是一种灵活且高效的数据包过滤技术,最初由 BSD Unix 中的网络子系统引入;BPF 允许用户编写简单的程序来过滤和处理网络数据包,以实现网络监控、安全策略、流量分析等功能         e

XDP入门--之eBPF sample内核示例代码的编译

Linux内核代码提供了很多eBPF的示例代码(以linux6.1版本内核代码为例),我们可以在/Linux/samples/bpf目录下找到示例代码。 1、查看Linux内核版本 本文不讨论交叉编译的情况,因为eBPF还在快速发展中,不同版本的Linux内核的支持情况不太一至。所以第一步,我们需要通过uname命令查看本机的Linux内核版本号,以便下面几个步骤的开展。 pi@raspbe

Knot Server XDP原理分析

目录 Knot Server XDP原理分析一、Kernel层代码分析1. kernel层源码的编译2. bpf-kenerl.c源码的分析 二、 User层代码分析 Knot Server XDP原理分析 xdp部分的代码分为Kernel层和User层两部分,Kernel层代码由User层代码调用linux bpf接口加载到网卡内核驱动,对进入的数据包进行拦截,对于Knot关