使用AF_XDP Socket更高效的网络传输 (colobu.com)

【简介】

Linux 网络栈并不缺乏功能,它的表现也很好 足以满足大多数用途。但是,在高速网络下,传统网络编程的额外开销占比太大了。在前一篇关于syscall.Socket的文章中,我们介绍了AF_PACKET类型的socket,它的性能着实一般,所有的数据都得在用户态和内核态之间做转换,而且在高并发的情况下还有大量的中断。使用eBPF XDP可以完美解决高性能的问题,我们在更早的文章中介绍了XDP的技术,Björn Töpel在Linux 4.18版本中为Socket增加了一个协议族 AF_XDP,可以利用Socket接口和XDP技术实现高性能的网络读写。

点击查看原文 >>

@技术头条 2023-07-04 23:28 / 原作者微博:@colobu / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
WSL运行时遇到未知异常错误无法使用 (lisenhui.cn)
遇到 WSL 提示“发生未知错误”无法启动的问题?可能是系统更新、配置冲突或文件损坏导致。可通过重启服务、检查日志、重装 WSL 或升级内核来排查解决。保持系统与 WSL 的版本更新至关重要!
by @技术头条 2024-11-23 21:49 查看详情
AWS运维部署实践--使用sigma自建镜像仓库代替ECR (wiki.eryajf.net)
本文介绍了如何使用 `sigma` 替代 AWS 的 ECR 作为轻量级的镜像仓库解决方案。通过配置 `s3` 存储、端口监听等设置,实现了低资源占用下的高效镜像管理。文章详细提供了 `config.yaml` 文件的配置方案,以及 `sigma` 部署的具体步骤,适合在自建环境中替代 ECR 进行镜像管理。
by @技术头条 2024-11-02 17:03 查看详情
Linux 安全 Auditd 审计工具使用说明 (dusays.com)
本文介绍了 Linux 的 Auditd 审计工具,用于监控和记录安全相关事件。内容涵盖工具安装、审计规则配置、日志管理和规则持久化。审计规则包括文件、系统调用的监控,适合检测敏感操作。通过 `auditctl`、`ausearch` 和 `aureport` 等工具,管理员可以分析日志并生成报告,提升系统的安全性和合规性。
by @技术头条 2024-11-02 16:54 查看详情
AWS运维部署实践--网络环境规划 (wiki.eryajf.net)
本文详述了 AWS 网络环境的规划,包括 VPC、子网、路由表的创建和管理。通过对公有、私有和内部子网的划分,以及 NAT 网关和 IGW 的配置,实现了不同网络的隔离与访问控制。同时,文章介绍了使用中转网关进行跨账号 VPC 打通的方法,为多账号和复杂网络环境提供了便捷的连接方案。这些规划为 AWS 运维部署打下了基础,有助于提升环境的安全性与可扩展性。
by @技术头条 2024-11-02 16:49 查看详情
使用结构化数据管理 SSH 配置:SSH Config Tool (soulteary.com)
本文介绍了使用 SSH Config Tool 管理 SSH 配置的最佳实践。工具将复杂的 SSH 配置简化为 YAML 格式,实现模块化和自动化管理,适用于设备多、配置庞杂的场景。通过 YAML 文件生成精简的 SSH Config,可提高可读性,减少冗余。工具支持 Docker 运行和 Linux 管道,提供灵活的跨平台应用方式。
by @技术头条 2024-11-02 16:27 查看详情
如何使用纯CSS鉴别是不是Safari浏览器 (www.zhangxinxu.com)
如何通过纯 CSS 来判断是否为 Safari 浏览器?本文介绍了多种实用技巧和 @supports 规则的使用,帮助开发者轻松检测并处理 Safari 特有的样式兼容性问题。无论是桌面还是 iOS Safari,本文都有详细的解决方案!
by @技术头条 2024-09-09 23:40 查看详情
Android|使用阿里云推流 SDK 实现双路推流不同画面 (mazhuang.org)
想知道如何在 Android 中通过阿里云 SDK 实现双路推流不同画面?本文介绍了一个巧妙的解决方案,虽然阿里云 SDK 不支持原生多路推流,但通过跨进程调用,实现了同时推送不同区域的画面,适用于直播和录播场景的分离展示。开发者不容错过的实战分享,赶快阅读!
by @技术头条 2024-09-08 23:26 查看详情
使用 OpenRewrite 优化代码 (www.diguage.com)
本文介绍了如何使用OpenRewrite工具优化Java代码。OpenRewrite可以通过自动化脚本进行代码重构,减少技术债务,提升代码质量。作者详细讲解了如何配置Maven插件,并使用多种重构“处方”,例如排序import语句、升级到Java 21、替换Base64实现,以及迁移到Spring Boot 3.2和JUnit 5。通过这些工具和方法,开发者可以简化代码维护和升级流程。
by @技术头条 2024-08-06 08:04 查看详情
使用eBPF编写系统调用跟踪器 (colobu.com)
本文总结了如何使用eBPF编写一个名为BeeTracer的系统调用跟踪器。文章介绍了eBPF的基本概念及其优势,并详细描述了在Rust中实现该工具的步骤。通过利用eBPF的tracepoints和maps功能,BeeTracer可以高效地捕获并记录Linux系统调用的细节。作者还提供了代码示例,展示了如何在内核空间进行实时跟踪。
by @技术头条 2024-08-06 07:57 查看详情
使用Rust捕获和解析网络包 (colobu.com)
这篇文章介绍了如何使用Rust编程语言捕获和解析网络包,以提取TCP时间戳并计算网络延迟。作者利用pcap库捕获网络包,并使用pdu库解析TCP选项中的时间戳信息,结合哈希映射存储五元组信息以计算往返时间。文中提供了代码示例,展示了在Mac系统上实现这一过程的步骤。
by @技术头条 2024-08-06 07:53 查看详情