0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

崔鹏程:初识XDP

Linux阅码场 ? 来源:Linux内核之旅 ? 2020-08-03 15:59 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在计算机网络中,Hook钩子在操作系统中用于在调用前或执行过程中拦截网络数据包。Linux内核中暴露了多个钩子,BPF程序可以连接到这些钩子上,实现数据收集和自定义事件处理。

Linux内核中的钩子点很多,比如说网络子系统中存在两个钩子:XDP和TC。它们结合在一起,可以用来处理RX和TX上两个链路上靠近NIC的数据包,从而实现了许多网络应用的开发。今天我们简单介绍下XDP。

XDP全称为eXpress Data Path,是Linux内核网络栈的最底层。它只存在于RX路径上,允许在网络设备驱动内部网络堆栈中数据来源最早的地方进行数据包处理,在特定模式下可以在操作系统分配内存(skb)之前就已经完成处理。 XDP暴露了一个可以加载BPF程序的网络钩子。在这个钩子中,程序能够对传入的数据包进行任意修改和快速决策,避免了内核内部处理带来的额外开销。这使得XDP在性能速度方面成为最佳钩子,例如缓解DDoS攻击等 DPDK Intel DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。 DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。Linux内核将DPDK应用程序看作是一个普通的用户态进程,包括它的编译、连接和加载方式和普通程序没有什么两样。DPDK程序启动后只能有一个主线程,然后创建一些子线程并绑定到指定CPU核心上运行。

XDP 相对于DPDK,XDP具有以下优点:

无需第三方代码库和许可

同时支持轮询式和中断式网络

无需分配大页

无需专用的CPU

无需定义新的安全网络模型

XDP的使用场景包括:

DDoS防御

防火墙

基于XDP_TX的负载均衡

网络统计

复杂网络采样

高速交易平台

XDP输入参数XDP暴露的钩子具有特定的输入上下文,它是单一输入参数。它的类型为 struct xdp_md,在内核头文件bpf.h 中定义,具体字段如下所示:


程序执行时,data和data_end字段分别是数据包开始和结束的指针,它们是用来获取和解析传来的数据,第三个值是data_meta指针,初始阶段它是一个空闲的内存地址,供XDP程序与其他层交换数据包元数据时使用。最后两个字段分别是接收数据包的接口和对应的RX队列的索引。当访问这两个值时,BPF代码会在内核内部重写,以访问实际持有这些值的内核结构 struct xdp_rxq_info。

XDP输出参数在处理完一个数据包后,XDP程序会返回一个动作(Action)作为输出,它代表了程序退出后对数据包应该做什么样的最终裁决,也是在内核头文件bpf.h 定义了以下5种动作类型:

可以看出这个动作的本质是一个int值。前面4个动作是不需要参数的,最后一个动作需要额外指定一个NIC网络设备名称,作为转发这个数据包的目的地。

XDP的位置

最显而易见的是,竟然可以在如此低的层面上把数据包丢弃或者回弹回去,如果面临DDoS攻击,采用这种方式的话,数据包就没有必要上升到Netfilter层面再被丢弃了。说白了,XDP允许数据包在进入Linux协议栈之前就能受到判决。这相当于在网卡驱动层面运行了一个eBPF程序,该程序决定数据包何去何从。 而且,假设我们经过目标网络设备的Ingress流量被我们的XDP程序drop了,专业术语叫RX流向。那么Egress流量是否也会被drop掉呢? 答案是,不会。XDP hook不会作用到Egress流量,也就是TX流向。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1417

    浏览量

    41551
  • Linux
    +关注

    关注

    87

    文章

    11522

    浏览量

    214285
  • 网络设备
    +关注

    关注

    0

    文章

    327

    浏览量

    30463

原文标题:崔鹏程: 初识XDP

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一文初识瑞萨FSP固件库

    FSP全称为“Flexible Software Package”,中文译为“灵活配置软件包”。
    的头像 发表于 07-19 09:21 ?1302次阅读
    一文<b class='flag-5'>初识</b>瑞萨FSP固件库

    鹏程无限正在招募储能产业生态伙伴 聚焦电芯等产品联合开拓市场

    在新型储能向高质量发展进阶的关键期,鹏程无限作为储能电池领域的新兴力量,正加大科研投入,以性能卓越的储能专用电芯,助力储能系统实现全生命周期价值最大化。近日,鹏程无限正式宣布举办储能产业生态伙伴
    的头像 发表于 07-17 15:47 ?230次阅读
    <b class='flag-5'>鹏程</b>无限正在招募储能产业生态伙伴 聚焦电芯等产品联合开拓市场

    零死角玩转STM32——初级篇

    ,从裸奔到系统,让您零死角玩转 STM32。 目录内容: 1、如何编译和下载程序 2、JLINK 驱动安装与 MDK 环境搭建 3、如何新建工程模板 4、初识 STM32 库 5、流水
    发表于 05-21 13:48

    【米尔-全志T536开发板试用体验】 试用测评报-初识T536

    【米尔-全志T536开发板试用体验】 试用测评报-初识T536 从电子发烧友网申请到MYC-LT536核心板及开发板有一段时间了,因为工作中有用到全志V536开发方案,仔细的对比了这个新出的开发板
    发表于 04-23 11:35

    汇川技术与鹏程无限签署战略合作协议

    近日,苏州汇川技术有限公司(以下简称“汇川技术”)与深圳鹏程无限新能源有限公司(以下简称“鹏程无限”)在苏州正式签署战略合作协议。双方将围绕储能技术研发、市场协同及能源解决方案创新展开深度合作,共同
    的头像 发表于 04-17 16:33 ?545次阅读

    海辰储能推动中欧储能生态发展

    近日,西班牙首相桑切斯与中国企业家见面会在京举行。海辰储能联合创始人、总裁王鹏程作为储能企业代表受邀参加并发言。
    的头像 发表于 04-15 15:47 ?481次阅读

    英飞凌推出用于超高功率密度设计的全新E型XDP混合反激控制器IC

    :IFNNY)又推出E型混合反激控制器系列。专为高性能应用设计的全新XDP混合反激数字控制器系列,采用先进的不对称半桥(AHB)拓扑结构,将反激转换器的简易性和谐振转换器的效率相结合,从而实现高功率密度设计。因此,该控制器系列适用于各类AC/DC应用,包括二级市场和原厂充电器、
    的头像 发表于 03-28 16:42 ?448次阅读
    英飞凌推出用于超高功率密度设计的全新E型<b class='flag-5'>XDP</b>混合反激控制器IC

    汽车电路初识

    第一章 汽车电路分析基础第二章 汽车电路图识读第三章 典型汽车电器电路分析第四章 汽车电路检修第五章 汽车电子电路图识读
    发表于 03-10 18:04 ?7次下载

    TVP5146M2怎么设置才能实现四路视频同时采集?

    画面的不连续。TVP5146M2怎么设置才能实现四路视频同时采集,要CIF格式就行了,谢谢了,帮帮忙,这个设备的太急了 !
    发表于 02-06 08:04

    零基础开发小安派-Eyes-S1【进阶篇】——初识 LVGL 并搭建最小工程

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP摄像头接口,外置ES8388音频编解码芯片以及预留TF卡座,并且引出USB接口,可接入USB摄像头。 从零开始学习小安派: 1、零基础开发小安派-Eyes-S1【入门篇】——初识小安派
    的头像 发表于 01-06 16:14 ?921次阅读
    零基础开发小安派-Eyes-S1【进阶篇】——<b class='flag-5'>初识</b> LVGL 并搭建最小工程

    零基础开发小安派-Eyes-S1——初识LVGL并搭建最小工程

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP摄像头接口,外置ES8388音频编解码芯片以及预留TF卡座,并且引出USB接口,可接入USB摄像头。 从零开始学习小安派: 1、零基础开发小安派-Eyes-S1【入门篇】——初识小安派
    的头像 发表于 01-03 14:09 ?947次阅读

    东树:预计今年中国新能源乘用车销量1330万辆渗透率57%

    行业芯事行业资讯
    电子发烧友网官方
    发布于 :2025年01月02日 13:56:28

    初识光模块之光模块的分类

    高速先生成员--周伟 说到光模块,很多用过光模块的人肯定很清楚光模块有很多种,但还有很多人只是见过或者知道有光模块,但光模块具体怎么分类的,我相信很多人都和我们一开始接触光模块一样都是一知半解,甚至云里雾里的只知道都是光模块,但具体有什么不一样就有点摸不着头脑了。闲话少说,接下来我们就来给大家介绍一下我们今天的主人公吧。 光模块(optical module)由光电子器件、功能电路和光接口等组成,光电子器件包括发射和接收两部分。简单的说,光模块的作用就是发送端把电信号转换成光信号,通过光纤传送后,接收端再把光信号转换成电信号。常见的传输方式如下图所示。 从结构组成上看,绝大多数基础性光模块均采用了收发一体形式,其内部主要由光发射组件TOSA(Transmitting Optical Sub-Assembly)、光接收组件ROSA(Receiving Optical Sub-Assembly)、发射驱动电路(激光器芯片)、接收信号处理电路(探测器芯片)构成,另外还有一种将发射组件与接收组件合二为一的BOSA(Bi-Directional Optical Sub-Assembly)组件,形成的单纤双向光模块,BOSA可以看作是TOSA与ROSA的集成体,同时具有光发射与接收的功能。简单的光模块内部构成大致如下图所示。 在发射端,驱动芯片对原始电信号进行处理,然后驱动半导体激光器(LD)或发光二极管(LED)发射出调制光信号。在接收端,光信号进来之后,由光探测器芯片转换为电信号,经前置放大器后输出电信号。 为什么说光模块很难弄明白呢,主要是它的种类太多,同时可以按照不同的角度去进行分类,通俗来说就是本来同一个东西但有很多种不同的叫法,更BT的是有时同样的叫法可以有很多种不同的东西,所以就经常会被人搞混,云里雾里的。常用的可以按照单口最大传输速率(单口带宽)、接口封装类型、波长、传输模式、传输距离和调制格式等去进行分类,下面我们分别介绍几种常见的分类方式。 按照单口最大传输速率(单口最大传输带宽更合适些)来分: 1、按单口最大传输速率分类: 按照单口最大的传输带宽,也就是一个光口总的传输速率可以分为:3.2Tbps(3.2TE)光模块、1.6Tbps(1.6TE)光模块、800Gbps(800GE)光模块、400Gbps(400GE)光模块、200Gbps(200GE)光模块、100Gbps(100GE)光模块、40Gbps(40GE)光模块、25Gbps(25GE)光模块、10Gbps(10GE)光模块、1.25Gbps(1GE)光模块、FE光模块等。我们说的1.6T光模块,其实指的是这个光模块单口最大的传输速率是1.6Tbps。 2、按单对最大传输速率分类(这种分类一般用的少,主要是设计和仿真人员会关注) 按照光器件所能承载的单对无误码传输的最大电信号速率来进行分类,也就是我们设计和仿真时关心的单对差分信号的传输速率,可以分为:125Mbps、1.25Gbps、10.3125Gbps、25/28Gbps、50/56Gbps、100/112Gbps和200G/224Gbps等光模块。单对差分速率乘以发送或接收对数就决定了上面单口最大的速率,同时也决定了这个光模块每秒可以传输多少数据。如上面的1.6TE光模块一般就是由200G/224Gbps的单对差分速率乘以8对得到的,也就是说我们现在做的1.6TE光模块它的单对差分信号速率最高到了200/224Gbps,这么高速的传输速率在PCB板上传输,对PCB的设计和制板工艺考验巨大,这种情况下就需要在设计过程中通过精确的仿真来确保通道的性能,同时还需要有靠谱的加工才能保证最终产品的落地,哪一个环节都不能出现太大的偏差。 3、按接口封装类型分类(最常见的) 传输速率越高,结构越复杂,由此产生了不同的接口封装类型。常见的光模块封装类型有:SFP(1GE)光模块、SFP+(10GE)光模块、SFP28(25GE)光模块、QSFP+(40GE)光模块、CFP(40GE-100GE)光模块、CFP2 /CFP4(100GE-400GE)光模块、QSFP28(100GE)光模块、QSFP-DD(400GE-800GE)光模块、OSFP(800GE)光模块、OSFP-XD/OSFP224(1.6TE)光模块等。还有早期速率比较低的GBIC,就是Giga Bit-rate Interface Converter(千兆接口转换器)光模块在2000年之前,GBIC是最流行的光模块封装,也是应用最广泛的千兆模块形态。下面可以看看每种具体光模块的介绍。 SFP,全称Small Form Pluggable,即小型可热插拔光模块。它的小,就是相对GBIC封装来说的。SFP的体积比GBIC模块减少了一半,可以在相同的面板上配置多出一倍以上的端口数量。在功能上,两者差别不大,都支持热插拔。SFP支持最大带宽是4Gbps。 XFP,是10-Gigabit Small Form-factor Pluggable的简称,又叫万兆SFP。XFP采用一条XFI(10Gb串行接口)连接的全速单通道串行模块。 SFP+,它和XFP一样是10G的光模块。SFP+的尺寸和SFP一致,比XFP更紧凑(缩小了30%左右),功耗也更低(减少了一些信号控制功能)。此外,为了增加容量和空间,还会把多个SFP+口做成一个器件,延生出了zSFP+等。 QSFP,Quad Small Form-factor Pluggable的简称,也即四通道SFP接口,很多XFP中成熟的关键技术都应用到了该设计中。根据速度可将QSFP分为4x10GQSFP+、4x25GQSFP28、8x25GQSFP28-DD光模块等。以QSFP28为例,它适用于4x25GE接入端口。使用QSFP28可以不经过40G直接从25G升级到100G,大幅简化布线难度以及降低成本。和SFP+一样,为了容量和空间考虑,会把多个QSFP接口上下左右堆成多个接口作为一个整体,这样就衍生出了QSFP+、zQSFP+和microQSFP等接口,如下图所示。 QSFP-DD,DD指的是“Double Density(双倍密度)”。将QSFP的4通道增加了一排通道,变为了8通道。它可以与CDFP方案兼容,原先的QSFP28模块仍可以使用,只需再插入一个模块即可。QSFP-DD的电口金手指数量是QSFP28的2倍。QSFP-DD每路采用25Gbps NRZ或者50Gbps PAM4信号格式。采用PAM4,最高可以支持400Gbps速率。 OSFP,Octal Small Form Factor Pluggable的简称,“O”代表“八进制”,它被设计为使用8个电气通道来实现400GbE(8*56GbE,但56GbE的信号由25G的DML激光器在PAM4的调制下形成),尺寸略大于QSFP-DD,更高瓦数的光学引擎和收发器,散热性能稍好。 CFP,Centum gigabits Form Pluggable的简称,也叫密集波分光通信模块。传输速率可达100-400Gbps。CFP是在SFP接口基础上设计的,尺寸更大,支持100Gbps数据传输。CFP可以支持单个100G信号,一个或多个40G信号。 CFP、CFP2、CFP4、CFP8的区别在于体积。CFP2的体积是CFP的二分之一,CFP4是CFP的四分之一。CFP8是专门针对400G提出的封装形式,其尺寸与CFP2相当。支持25Gbps和50Gbps的通道速率,通过16x25G或8x50G电接口实现400Gbps模块速率。 在光口侧主要是使用8路53Gbps PAM4或者4路106Gbps PAM4实现400G的信号传输,在电口侧使用8路53Gbps PAM4电信号,采用OSFP或QSFP-DD的封装形式。 相比较来说,QSFP-DD封装尺寸更小(和传统100G光模块的QSFP28封装类似),更适合数据中心应用。 OSFP封装尺寸稍大一些,由于可以提供更多的功耗,所以更适合电信应用。 其他的几种不常见的分类方式: 按照传输距离分类,有100米、300米、550米、10千米、20千米、40千米、80千米、120千米和160千米等光模块; 按照传输波长分类,有850nm、1310nm、1490nm、1550nm等光模块; 按照传输模式分类,有单模(黄色)、多模(橘黄色、蓝绿色)等光模块; 本期问题:关于光模块更深层次的介绍,您还有哪些想知道的?我们会根据大家的回复来针对性的解答。
    发表于 12-10 08:59

    初识光模块之光模块的分类

    高速先生成员--周伟 说到光模块,很多用过光模块的人肯定很清楚光模块有很多种,但还有很多人只是见过或者知道有光模块,但光模块具体怎么分类的,我相信很多人都和我们一开始接触光模块一样都是一知半解,甚至云里雾里的只知道都是光模块,但具体有什么不一样就有点摸不着头脑了。闲话少说,接下来我们就来给大家介绍一下我们今天的主人公吧。 光模块(optical module)由光电子器件、功能电路和光接口等组成,光电子器件包括发射和接收两部
    的头像 发表于 12-10 08:58 ?1000次阅读
    <b class='flag-5'>初识</b>光模块之光模块的分类

    厦门市领导莅临海辰储能调研

    近日,厦门市委副书记、市长伍斌率队莅临海辰储能调研,深入了解企业发展现状与未来规划。海辰储能联合创始人、总裁王鹏程热情接待并陪同调研。
    的头像 发表于 10-24 11:03 ?1264次阅读