您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

比较 Linux 网络技术:tc、eBPF 和 XDP、eBPF 的差异

时间:2023-09-04 10:04:34  来源:  作者:小老头哦

BPF是一种内核技术,可以实现以下功能:将eBPF程序附加到指定的内核代码路径中,当执行该代码路径时,会执行对应的eBPF程序。由于eBPF的起源,它特别适合于编写网络程序,将该网络程序附加到网络socket中,进行流量过滤、流量分类以及执行网络分类器的动作。eBPF程序甚至可以修改一个已建链的网络socket的配置。

XDP项目在网络栈的底层运行eBPF程序,高效地处理接收到的报文。BPF对网络的处理可以分为tc/BPF和XDP/BPF,它们的主要区别在于钩子的位置和上下文。XDP的钩子要早于tc,因此性能更高。tc钩子使用sk_buff结构体作为参数,而XDP使用xdp_md结构体作为参数。sk_buff中的数据要远多于xdp_md,这会对性能产生一定影响,且报文需要上送到tc钩子才会触发处理程序。由于XDP钩子位于网络栈之前,因此XDP使用的xdp_buff无法访问sk_buff元数据。data指向page中的数据包的其实位置,data_end指向数据包的结尾。由于XDP允许headroom(见下文),data_hard_start指向page中headroom的起始位置,即,当对报文进行封装时,data会通过bpf_xdp_adjust_head()向data_hard_start移动。

相同的BPF辅助函数也可以用于解封装,此时data会远离data_hard_start。data_meta一开始指向与data相同的位置,但bpf_xdp_adjust_meta()能够将其朝着data_hard_start移动,进而给用户元数据提供空间,这部分空间对内核网络栈是不可见的,但可以被tcBPF程序读取(tc需要将它从XDP转移到skb)。

反之,可以通过相同的BPF程序将data_meta远离data_hard_start来移除或减少用户元数据大小。data_meta还可以单纯地用于在尾调用间传递状态,与tcBPF程序访问的skb->cb[]控制块类似。对于structxdp_buff中的报文指针,有如下关系:data_hard_start<= data_meta <= data <data_end。rxq字段指向在ring启动期间填充的额外的与每个接受队列相关的元数据。BPF程序可以检索queue_index,以及网络设备上的其他数据(如ifindex等)。

tc能够更好地管理报文。tc的BPF输入上下文是一个sk_buff,不同于XDP使用的xdp_buff,二者各有利弊。当内核的网络栈在XDP层之后接收到一个报文时,会分配一个buffer,解析并保存报文的元数据,这些元数据即sk_buff。该结构体会暴露给BPF的输入上下文,这样tcingress层的tcBPF程序就能够使用网络栈从报文解析到的元数据。使用sk_buff,tc可以更直接地使用这些元数据,因此附加到tcBPF钩子的BPF程序可以读取或写入skb的mark,pkt_type,protocol, priority,queue_mApping, napi_id, cb[] array, hash, tc_classid或tc_index,vlanmetadata等,而XDP能够传输用户的元数据以及其他信息。tcBPF使用的struct__sk_buff定义在linux/bpf.h头文件中。xdp_buff的弊端在于,其无法使用sk_buff中的数据,XDP只能使用原始的报文数据,并传输用户元数据。

XDP能够更快地修改报文。sk_buff包含很多协议相关的信息(如GSO阶段的信息),因此其很难通过简单地修改报文数据达到切换协议的目的,原因是网络栈对报文的处理主要基于报文的元数据,而非每次访问数据包内容的开销。因此,BPF辅助函数需要正确处理内部sk_buff的转换。而xdp_buff则不会有这种问题,因为XDP的处理时间早于内核分配sk_buff的时间,因此可以简单地实现对任何报文的修改(但管理起来要更加困难)。

tc/eBPF和XDP/eBPF可以互补。如果用户需要修改报文,同时对数据进行比较复杂的管理,那么,可以通过运行两种类型的程序来弥补每种程序类型的局限性。XDP程序位于ingress,可以修改完整的报文,并将用户元数据从XDPBPF传递给tcBPF,然后tc可以使用XDP的元数据和sk_buff字段管理报文。

tc/eBPF可以作用于ingress和egress,但XDP只能作用于ingress。与XDP相比,tcBPF程序可以在ingress和egress的网络数据路径上触发,而XDP只能作用于ingress。tc/BPF不需要改变硬件驱动,而XDP通常会使用native驱动模式来获得更高的性能。但tcBPF程序的处理仍作用于早期的内核网络数据路径上(GRO处理之后,协议处理和传统的iptables防火墙的处理之前,如iptablesPREROUTING或NFTablesingress钩子等)。而在egress上,tcBPF程序在将报文传递给驱动之前进行处理,即在传统的iptables防火墙(如iptablesPOSTROUTING)之后,但在内核的GSO引擎之前进行处理。一个特殊情况是,如果使用了offloaded的tcBPF程序(通常通过SmartNIC提供),此时Offloadedtc/eBPF接近于OffloadedXDP的性能



Tags:   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
AI是万灵药?Meta要把大模型塞进AR眼镜里
寻找下一块“屏幕”,这无疑是最近几年科技行业的一个热门赛道。随着个人计算机点燃了互联网,智能手机让移动互联网无处不在之后,这前后两次造富神话的出现,也让所有人都在期待下...【详细内容】
2024-04-09  Search:   点击:(2)  评论:(0)  加入收藏
考研调剂第一次失败后,考生还能继续调剂吗
考研调剂失败后,考生仍然有机会继续调剂。如果考生在第一次调剂过程中没有收到复试通知,可以在时间允许的情况下继续申请其他院校的调剂,并参加复试。考生需要密切关注各高校的...【详细内容】
2024-04-09  Search:   点击:(2)  评论:(0)  加入收藏
高职单招是什么意思?
高职单招是什么意思?2024高考:高职单招和高考的区别在哪里?...【详细内容】
2024-04-09  Search:   点击:(2)  评论:(0)  加入收藏
在饭局上喝酒,要学会3句“万能开场白”,让大家对你刮目相看
在饭局上喝酒,是一个社交场合的重要环节。作为一个有见识的人,学会几句“万能开场白”不仅能活跃气氛,还能让人们对你刮目相看。以下就是三个可以用于各种场合的万能开场白,希望...【详细内容】
2024-04-09  Search:   点击:(2)  评论:(0)  加入收藏
汽车不停能开多少公里?老司机:别超过极限,否则伤车又伤人!
在如今这个汽车普及的时代,私家车已经成为了不少家庭的必备品。它不仅代表着一种出行的便利,更是生活品质的提升。然而,正如一枚硬币的两面,私家车的广泛使用也带来了一系列问题...【详细内容】
2024-04-09  Search:   点击:(2)  评论:(0)  加入收藏
三证齐全,中国“飞的”不远了?
【环球时报记者 丁雅栀 李炫旻 环球时报驻英国、德国特约记者 纪双城 青木】4月7日,中国民用航空局在广州为亿航智能EH216-S无人驾驶载人航空器系统颁发生产许可证,加上去年取...【详细内容】
2024-04-09  Search:   点击:(2)  评论:(0)  加入收藏
小米SU7被大卸八块,雷军回应了
4月8日晚国内有一场汽车发布会,然后出现了令人不可思议的一幕。他们把小米SU7当为标杆进行对比,但却把小米SU7的参数给标错了。随后小米官方连发三条信息进行强硬回应,最后的结...【详细内容】
2024-04-09  Search:   点击:(2)  评论:(0)  加入收藏
视频号,从抖音挖来一个“一姐”?
文|王亚琪编辑|斯问“你说你要尊严,一个月5000块钱的合同工资,能体现你的尊严吗?”“我那么多的人脉和资源,你如果够聪明的话,你踩着我肩膀往上爬不是更快吗?你拿着我每个月收来的房...【详细内容】
2024-04-09  Search:   点击:(2)  评论:(0)  加入收藏
0首付、0利息!多家车企跟进“车贷新政”,但背后还有“隐性”要求
“您是全款购车,还是贷款购车。”4月7日,《每日经济新闻》记者进入北京某吉利银河4S店后被销售人员如此询问。“如果您选择贷款购车,现在很划算,可以有多种分期方案可选。比如,至...【详细内容】
2024-04-09  Search:   点击:(2)  评论:(0)  加入收藏
真正0首付、0利息来了!“车贷新政”后,多家车企放大招,甚至出现高达3万元金融贴息
每经记者:段思瑶 每经编辑:王月龙,裴健如“您是全款购车,还是贷款购车。”4月7日,《每日经济新闻》记者进入北京某吉利银河4S店后被销售人员如此询问。“如果您选择贷款购车,现在...【详细内容】
2024-04-09  Search:   点击:(1)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(11)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(31)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(35)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(37)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(69)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(59)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(40)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(144)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(48)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(76)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条