资讯动态

如何快速掌握 Zircon IP协议栈:1G~100G 线速 IPv4/IPv6/UDP 硬件卸载指南

发布时间:2026/10/23 4:31:13 来源:尧图企业网站定制
硬件开发网络嵌入式【免费下载链接】taxiAXI, AXI stream, Ethernet, and PCIe components in System Verilog项目地址https://gitcode.com/gh_mirrors/taxi7/taxi点击查看免费下载Taxi 是 FPGA Ninja 开源的 System Verilog 传输组件库其中的Zircon IP 协议栈实现了 IPv4、IPv6 与 UDP 的硬件卸载覆盖 1Gbps 到 100Gbps 线速场景它在硬件里完成报文头解析parse与重组deparse、VLAN 标签插拔、头部与载荷校验和计算/校验、接收报文规则匹配与哈希并在多个应用接口间复用传输。本文将带你拆解 Zircon 的 8 个核心模块、收发流水线设计以及如何用仓库自带的 Cocotb Verilator 仿真框架验证它。为什么需要硬件 IP 协议栈在高速网卡场景中CPU 逐包解析 IP 头、算校验和的软处理早已成为瓶颈。把协议处理下沉到 FPGA 硬件即硬件卸载可以线速处理报文以流水方式穿过解析器不依赖 CPU100G 端口也能零丢包低延迟报文头在硬件内被直接拆解应用逻辑只拿到需要的字段或纯载荷可复用基于 AXI4-Stream 标准接口接任何 MAC 都能用。Zircon 的定位正是轻量级线速 IP 栈它也是下一代开源网卡 Corundum 的重要组成模块源码位于 src/zircon/rtl/。Zircon 功能一览能力说明实现模块IPv4 / IPv6 解析提取地址、TTL、DSCP、协议号等字段zircon_ip_rx_parse.sv报文重组根据元数据重建以太网帧、插入 VLANzircon_ip_tx_deparse.sv长度与校验和硬件计算/校验 IP 头及 UDP 校验和zircon_ip_len_cksum.svVLAN 插拔收发方向均支持 VLAN 标签parse / deparseRSS 哈希接收方向对报文做流哈希可关rx_ingress多应用复用最多 4 路用户接口N_UI并发tx_ingress / rx_egress交付模式可配原始包、剥离 VLAN、简化头、仅载荷应用逻辑按需取用说明Zircon 仍处于活跃开发阶段TCP、RDMA 支持与 Corundum 集成是官方计划中的功能。整体架构8 个模块组成收发两条流水线Zircon 全部由 8 个 System Verilog 模块组成收RX发TX方向各 4 级级与级之间用 AXI4-Stream 接口串成流水线报文头流与元数据流并行传递RX: MAC ──▶ rx_ingress ──▶ rx_parse ──▶ (规则匹配/哈希) ──▶ rx_egress ──▶ 应用逻辑 │ └──▶ len_cksum长度/校验和旁路计算 TX: 应用逻辑 ──▶ tx_ingress ──▶ tx_buffer ──▶ tx_deparse ──▶ tx_egress ──▶ MAC各模块职责速览源码见 src/zircon/rtl/zircon_ip_rx_ingress接收 MAC 帧用异步 FIFO 跨时钟域并做异常帧坏帧、超长帧处理zircon_ip_rx_parse解析以太网/IP/L4 头部输出 16 个 64bit 块的结构化元数据zircon_ip_len_cksum逐字节并行归约计算报文长度与 16bit 校验和累加值zircon_ip_rx_egress把处理后的报文经异步 FIFO 送到应用侧时钟域zircon_ip_tx_ingress应用侧提交报文并返回完成cpl信号zircon_ip_tx_buffer共享片上 RAM默认 32KB缓冲报文保证乱序提交也能按序发送zircon_ip_tx_deparse按元数据重建完整报文头并插入 VLANzircon_ip_tx_egress拼装头/载荷、跨时钟域送 MAC 并回传发送完成。RX 流水线从 MAC 帧到结构化元数据1. rx_ingress跨时钟域的第一道闸门MAC 数据面通常运行在独立时钟域。zircon_ip_rx_ingress.sv 内部例化了 taxi_axis_async_fifo_adapter 完成跨域缓冲并提供两组关键参数MAC_RX_FIFO_DEPTH默认 32接收 FIFO 深度MAC_RX_FIFO_EB_MODE背压模式下不丢包而是标记满把丢包决策权交还上游。2. rx_parse一次扫出整张元数据表解析器 zircon_ip_rx_parse.sv 是本栈最精巧的模块。它把每个报文解析成一个固定的 16×64bit 元数据表字段布局在源码注释中写得很清楚块 00标志位/载荷长度、包校验和块 01RSS 哈希值、头/载荷偏移块 02/03/04VLAN 标签、以太目的地址、源地址EtherType块 07协议号、TTL/Hop Limit、DSCP、ECN、IP ID/流量类块 08~11IPv6 目的/源地址128bit块 12~14L4 端口、TCP flags、wnd/urg、seq/ack为后续 TCP 支持预留。这张元数据表在流水线中一路随行下游模块含 TX 方向的 deparse都直接复用它——这是 Zircon 做到低延迟的关键解析一次处处可用。3. len_cksum校验和硬件卸载zircon_ip_len_cksum.sv 用多级并行加法树LEVELS $clog2(BYTE_LANES)对整包做字节求和与报文并行流过管线在帧结束时产出长度与校验和结果供接收方向验证、发送方向填充。对新手而言这就是校验和卸载的最小硬件实现样本值得精读。TX 流水线元数据驱动的报文重组发送方向与接收方向形成镜像应用逻辑只需提交载荷 元数据硬件负责把完整报文拼回来。zircon_ip_tx_ingress.sv接收应用提交N_UI默认 4 路异步 FIFO 跨域并提供m_axis_ui_tx_cpl完成流zircon_ip_tx_buffer.svTX_RAM_SIZE默认 32768 字节片上 RAM 做包缓存先出长度元数据、后搬包数据保证重组时数据就绪zircon_ip_tx_deparse.sv按同一张 16 块元数据表重建以太头、IP 头支持IPV6_EN开/关与 VLAN 标签并自动做大端字节序转换zircon_ip_tx_egress.sv头/载荷合并、异步 FIFO 送 MAC 时钟域s_axis_mac_tx_cpl回传发送完成。这种元数据驱动的设计让重组完全流水化不需要整包驻留 SRAM 等待头生成从而支撑 100G 线速。关键参数速查如何配置 Zircon参数默认值位置作用IPV6_EN1parse / deparse / ingress / egress是否启用 IPv6 支持HASH_EN1rx_ingress / rx_parse是否计算 RSS 哈希N_UI4tx_ingress / rx_egress / tx_buffer用户应用接口数量MAC_RX_FIFO_DEPTH32rx_ingressMAC 接收跨域 FIFO 深度UI_RX_FIFO_DEPTH32rx_egress应用接收跨域 FIFO 深度UI_TX_FIFO_DEPTH32tx_ingress应用发送跨域 FIFO 深度TX_RAM_SIZE32768tx_buffer发送包缓存 RAM 大小字节START_OFFSET14len_cksum长度/校验和起始偏移跳过以太头所有模块均基于 Taxi 统一的 taxi_axis_if 接口数据位宽、KEEP 掩码、ID/DEST/USER 边带字段全参数化与仓库内其他 AXI Stream 组件即插即用。动手验证Cocotb Verilator 仿真框架Zircon 自带测试台每个被测模块一个目录含 Makefile、Cocotb 用例与 Verilog testbench 三件套见 src/zircon/tb/zircon_ip_rx_parse/解析器用例 test_zircon_ip_rx_parse.pyzircon_ip_tx_deparse/重组器用例 test_zircon_ip_tx_deparse.pyzircon_ip_len_cksum/校验和用例 test_zircon_ip_len_cksum.py。快速上手步骤需要已安装 Verilator 与 Cocotb把仓库克隆到本地git clone https://gitcode.com/gh_mirrors/taxi7/taxi进入目标测试目录例如src/zircon/tb/zircon_ip_rx_parse执行make即可编译并运行仿真日志会逐用例打印 PASS/FAIL。提示仓库根目录 tox.ini 定义了回归测试环境适合批量跑全部模块。适用场景与延伸阅读Zircon 适合以下场景在自研 FPGA 网卡的 MAC 之后插入标准 IP/UDP 处理层做线速转发、过滤与载荷提取结合 Corundum 网卡 实现带 RSS 哈希的多队列收发包学习高速流式协议处理解析表、校验和归约树、元数据驱动重组都是教科书级实现。延伸阅读仓库内相对路径项目总览README.md协议栈源码src/zircon/rtl/测试台src/zircon/tb/AXI Stream 接口定义taxi_axis_if.sv异步 FIFO跨域缓冲核心taxi_axis_async_fifo.sv掌握 Zircon 的元数据表 流水级设计思想后你也能在自己的 FPGA 项目里快速搭出一条 100G 线速的 IPv4/IPv6/UDP 处理通道。赞分享硬件开发网络嵌入式【免费下载链接】taxiAXI, AXI stream, Ethernet, and PCIe components in System Verilog项目地址https://gitcode.com/gh_mirrors/taxi7/taxi点击查看免费下载相关推荐Bt性能调优指南10个技巧提升下载速度与系统稳定性Bt性能调优指南10个技巧提升下载速度与系统稳定性 Bt是一款功能强大的BitTorrent库和客户端支持DHT、磁力链接、加密等多种特性。本文将分享10个告别手动缩进dart-vim-plugin 智能缩进配置与实战技巧告别手动缩进dart vim plugin 智能缩进配置与实战技巧 编写 Dart 与 Flutter 代码时最影响效率的细节莫过于缩进嵌套大括号、尾随逗如何快速实现IP地址精准定位免费离线IP数据库IPv4IPv6完整指南如何快速实现IP地址精准定位免费离线IP数据库IPv4IPv6完整指南 GitHub 加速计划 / ip / ip database 是一款功能强大的免数据库后端上一篇终极CoreCycler完全指南5步掌握CPU单核稳定性测试与精准调校下一篇三步革新在PowerPoint中高效使用LaTeX公式的创新解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑