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

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

3天内不再提示

AsterNOS-VPP 以 LDP 技术释放原生 Nginx 的极致吞吐力

星融元Asterfusion 2026-05-25 15:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

高性能与易用性的企业级抉择

在将 L7 代理能力(如 Nginx)集成到高性能用户态网络栈(如 VPP)时,架构师常面临一种权衡:若要充分发挥 VPP 的转发性能,往往需要对应用进行深度修改,这可能导致生态封闭和运维复杂度提升。然而,在处理现代大规模边缘流量的场景中,将 L7 处理卸载到用户态网络栈已成为一种常见需求。

为此,我们在将 Nginx 与 AsterNOS-VPP 集成时,基于 LD_PRELOAD 机制设计了一套实现方案,力求在保持较高吞吐量的同时,减少对原有应用代码的侵入,以便更好地适应标准的 DevOps 流程。

wKgZPGoT-yeAGysOAAFJIcP6PFk393.png

传统VPP集成Nginx的瓶颈:VCL“代码孤岛”的代价

路径A:追求跑分极限的VCL方案

在将 Nginx 集成到 VPP 用户态数据面时,传统的“路径A”通常指向 VCL(VPP Communication Library,VPP 通信库)方案 。VCL 方案要求在源码级别修改 Nginx 的核心网络逻辑,将标准的 POSIX socket 调用替换为 VCL API。为什么说VCL是企业网关的“运维噩梦”?
这种深度定制的设计旨在通过纯零拷贝技术压榨出绝对极限的性能,适用于对微秒级延迟有极端要求的封闭“设备”环境。然而,对于企业级网关而言,这种架构是一场运维噩梦。

  • 紧密耦合与封闭生态:它将 Nginx 与特定版本的 VPP 库紧密绑定,导致用户无法自由加载 Nginx 社区模块。
  • 高危漏洞修复缓慢:当面对 0 day 漏洞或高危 CVE 时,由于与开源生态切断了联系,用户只能陷入漫长的等待,直到设备厂商完成深度源码合并并发布新版固件。

AsterNOS-VPP 集成 LDP(LD_PRELOAD)技术的考量

企业边缘网关在追求高吞吐量的同时,也需要稳定处理多样化的L7工作负载(如WAF、GeoIP、Portal认证)。为此,在将Nginx集成到AsterNOS-VPP时,我们选择了基于 LD\_PRELOAD 机制的方案(简称LDP)。该方案允许在轻微性能开销下,换取更好的生态兼容性和运维灵活性。

什么是LDP(LD_PRELOAD)机制?

LDP的核心是利用Linux系统的 LD\_PRELOAD 环境变量。该技术能在程序启动时,优先加载一个预定义的共享库,从而在不修改Nginx原生二进制文件的情况下,在运行时将其部分网络系统调用“拦截”并重定向至用户态网络栈(如VPP)。
核心工程价值:100%原生二进制兼容与零窗口期修补

  • 100% 原生二进制兼容:系统直接运行标准的Nginx二进制文件,无需为其定制编译或使用特殊工具链。这有助于直接沿用已有的复杂配置,并降低与上游版本同步的复杂度。
  • 极速风险漏洞响应:由于 LDP 与原生二进制文件完全解耦,更新基础 Nginx 容器镜像无需任何自定义代码合并,直接更新基础二进制文件即可将漏洞窗口期缩短至零。

智能透明回退:错综复杂内网环境的“安全网”

在企业内网等复杂环境中,可能存在非标准或管理流量。LDP方案设计了回退机制:当流量不适用于VPP加速路径时,会自动交由原生的Linux内核网络栈处理,避免了对所有流量类型进行适配改造。

VCL与LDP架构深度对比:研发与DevOps维度的较量

为了更清晰地展示这两种技术在现实世界中的研发生态和 DevOps 差异,我们可以通过下表进行直观对比:

评估维度VPP + VCL (侵入式修改)AsterNOS-VPP (LDP机制)
核心设计目标封闭式设备;追求极限跑分指标开放式平台;追求生态兼容与敏捷性
模块扩展性极差(需要厂商为第三方模块适配源码)优秀(原生二进制模块100%即插即用)
CVE修补周期缓慢(依赖深度源码合并与重新编译)即时(直接更新基础二进制文件,无需改动源码)
非标准流量处理弱(缺乏对非标准流量的高效回退机制)强(透明回退至Linux内核进行安全处理)

技术揭密:LDP工作原理—系统调用拦截与旁路内核传输

LDP 的核心是在 Nginx 进程无感知的情况下,将其网络I/O路径从内核态转向用户态的 VPP。对 Nginx 而言,其 socket 相关调用看似仍与内核交互,但实际的数据传输已由 VPP 接管。

系统调用拦截

AsterNOS 利用 Linux 的 LD_PRELOAD机制。在 Nginx 工作进程启动时,系统会预先加载一个名为 libvcl_ldpreload.so的动态库。当 Nginx 调用如 socket(),accept(), read()等标准套接字函数时,该库会在 libc 层面拦截这些调用,并改变其执行路径。

wKgZO2oT_gOAcuvmAAF-uiS6rr0771.png通过LDP机制,将流量从内核转向VPP。

用户态高速数据传输技术

调用被拦截后,LDP 库将与 VPP 主进程建立的共享内存区域(Memory Bridge)进行通信。通过查询 VPP 的会话层(Session Layer)状态,到达的数据包可以直接从 VPP 的环形缓冲区(VPP Ring Buffer)映射到 Nginx 进程的用户态内存空间中。这种方法减少了在内核网络协议栈中的多次数据复制,提升了传输效率。

wKgZPGoT_iiAPzsTAAjHPWTVjeY618.png通过LDP机制,Nginx直接从 VPP获取数据。

内核旁路的效果

通过上述过程,数据平面的主要处理流程被转移到了 VPP 的用户态协议栈中完成,从而避免了在内核网络栈中处理所产生的上下文切换和数据复制开销。VPP 可以直接处理包括 TLS 加解密在内的一系列网络功能,实现了网络功能的用户态加速。

wKgZPGoT_k6AcM0tAAL-BJJgTSI270.pngNginx通过AsterNOS-VPP(LDP机制)绕过Linux内核加速网络通信

操作示例:通过 SONiC CLI 管理集成VPP的Nginx

在集成了LDP机制的AsterNOS-VPP中,用户无需手动配置LD_PRELOAD等底层环境变量。系统通过基于SONiC扩展的统一CLI,提供了集中的管理入口。以下为典型操作示例:

# 1. 全局初始化 Nginx 并分配专用 CPU 核心以保证性能 sonic# configure terminal sonic(config)# nginx start sonic(config)# cpu_core nginx_num 2 vpp_num auto # 2. 直接导入并复用现有的 Nginx Server 块配置 sonic(config)# nginx update server /home/admin/proxy.conf # 3. 毫秒级的热加载应用更改 sonic(config)# nginx reload

保持运维体验与开源生态兼容性

在工程实践中,架构的开放性与运维的敏捷性是需要重点考量的因素。本方案通过系统调用拦截技术实现网络加速,旨在减少对上游社区标准组件的修改,从而保持与开源生态的兼容性。用户可以使用未经修改的原生Nginx二进制文件,并沿用已有的配置、工具链与运维流程,以期在获得性能提升的同时,降低对现有DevOps实践的侵入性。

参考文献
[1] https://fd.io/technology/

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

    关注

    0

    文章

    8

    浏览量

    7761
  • nginx
    +关注

    关注

    0

    文章

    201

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32----释放您的创造

    STM32----释放您的创造,一定学好STM32!!!
    发表于 07-06 16:26

    STM32释放您的创造

    STM32释放您的创造
    发表于 08-03 08:22

    阿里云安全肖:云原生安全构筑下一代企业安全架构

    "数字经济的发展驱动越来越多的企业上云,每个企业都会基于云原生安全能力构筑下一代企业安全架构,完成从扁平到立体式架构的进化,届时云原生安全技术红利也将加速释放!”9月27日,阿里云智能
    发表于 09-29 15:15

    明白VPP关键技术有哪些

    随着人工智能技术的不断发展,越来越多的行业开始使用人工智能技术,这也使得智能虚拟代理技术得到了广泛的应用。为了能够深入了解智能虚拟代理技术,需要明白
    发表于 08-31 07:28

    性能提升1倍,成本直降50%!基于龙蜥指令加速的下一代云原生网关

    兼容原生 K8s Ingress 规范,且支持 Nginx Ingress 核心功能注解的无缝转换。(图 9/云原生网关技术架构 )客户案例分享上海费芮网络科技有限公司之前一直使用
    发表于 08-31 10:46

    Nginx 常见应用技术指南

    Nginx 常见应用技术指南
    发表于 09-07 14:42 6次下载
    <b class='flag-5'>Nginx</b> 常见应用<b class='flag-5'>技术</b>指南

    如何在VPP IPSec中使用异步crypto框架?

    VPP的crypto框架是VPP原生的一套数据加解密框架,其目的是为VPP框架中所有Graph node提供数据加密服务。VPP的Crypt
    的头像 发表于 04-02 17:57 5575次阅读
    如何在<b class='flag-5'>VPP</b> IPSec中使用异步crypto框架?

    openEuler Summit开发者峰会:中国移动磐基PssS平台释放原生价值

    openEuler Summit开发者峰会:中国移动磐基PssS平台释放原生价值,打造K8S云原生开发环境,满足云原生开发测试需求。
    的头像 发表于 11-10 11:35 2475次阅读
    openEuler Summit开发者峰会:中国移动磐基PssS平台<b class='flag-5'>释放</b>云<b class='flag-5'>原生</b>价值

    Nginx如何监控

    搭建了Nginx集群后,需要继续深入研究的就是日常Nginx监控。
    的头像 发表于 08-22 10:03 2198次阅读

    华为云数据库 GaussDB持续技术创新 , 助推企业释放数字生产

    华为云数据库 GaussDB持续技术创新 , 助推企业释放数字生产 近期,华为全联接大会2022在曼谷举办,华为云云原生数据库GaussDB携系列创新能力亮相大会,
    的头像 发表于 11-24 13:26 1202次阅读

    基础设施关键技术

    基础设施是算网络的核心,构建高效、灵活、敏捷的算基础设施为目标,积极引入云原生、无服务器计算、异构计算、算
    发表于 05-24 16:38 7次下载
    算<b class='flag-5'>力</b>基础设施关键<b class='flag-5'>技术</b>

    首批认证!拓维信息梧桐云原生平台获鲲鹏原生开发技术认证

    7月10日,拓维信息梧桐云原生平台V3.0获得华为鲲鹏原生开发技术首批认证。作为华为鲲鹏战略合作伙伴,拓维信息28年行业数字化经验和持续技术
    的头像 发表于 07-19 08:15 1350次阅读
    首批认证!拓维信息梧桐云<b class='flag-5'>原生</b>平台获鲲鹏<b class='flag-5'>原生</b>开发<b class='flag-5'>技术</b>认证

    原生环境里Nginx的故障排查思路

    本文聚焦于云原生环境下Nginx的故障排查思路。随着云原生技术的广泛应用,Nginx作为常用的高性能Web服务器和反向代理服务器,在容器化和
    的头像 发表于 06-17 13:53 1257次阅读
    云<b class='flag-5'>原生</b>环境里<b class='flag-5'>Nginx</b>的故障排查思路

    SONiC控制面 + VPP数据面:AsterNOS-VPP的高性能开放之路

    AsterNOS-VPP 是星融元继数据中心和园区网络场景后,面向边缘路由场景推出的开放网络操作系统,其融合了 SONiC 强大的控制面能力以及 VPP 的高性能数据转发能力,实现新一代企业级园区路由器和防火墙等功能,帮助用户构建高性能、灵活性和成本效益的网络环境。
    的头像 发表于 10-22 14:23 1350次阅读
    SONiC控制面 + <b class='flag-5'>VPP</b>数据面:<b class='flag-5'>AsterNOS-VPP</b>的高性能开放之路

    AsterNOS-VPP + ET系列智能平台:构建高性能、可自定义的开放网络流量调度底座

    AsterNOS-VPP针对云时代IP动态变化、复用导致的传统路由策略效能不足问题,提供基于Geo-Engine的流量调度方案。其通过提取TLS SNI等协议头部域名信息,实现
    的头像 发表于 01-13 11:09 1350次阅读
    <b class='flag-5'>AsterNOS-VPP</b> + ET系列智能平台:构建高性能、可自定义的开放网络流量调度底座