Tofino 相关学习

Tofino芯片架构 如下图所示, Tofino采用的是一种匹配管道,首先传入的数据包是字节流,经过解析器的解析成为PHV,之后传递到匹配操作单元序列,在上面可以进行:从数据包上提取密钥并在匹配表中寻找对应的操作产生新的字段。Deparser是匹配操作管道中的最后一个单元。至于对表的匹配操作就是用P4来编写,先匹配最底层的协议接着一层层往上匹配,匹配仅需要数据包提供的标头值,这样的好处是可以同时进行匹配减少管道延迟,如下图所示。32个bit的字段被分为32个组,16个bit的字段被分为16个组,8个bit的字段被分为24个组。 阅读详情
AI摘要

本文详细介绍了Tofino网络交换芯片的整体架构,包括其独特的四个PISA架构匹配-动作管道设计,支持的端口流量与资源情况,以及解析器、PHV、MAU和Deparser等关键组件的组成和资源约束。

Tofino 相关学习


tofino的整体架构

请添加图片描述

  • 左侧部分为入口MAC端口( Ingress MAC )、PCle 接口
  • 右侧部分:
    • 一个TM( Traffic Management ):负责四个管道之间的流量调度和管理
    • 四个PISA架构的匹配-动作管道(Match-Action Pipeline),包括:
      • 入口匹配-操作管道
      • 公共包缓冲区
      • 出口匹配-操作管道

tofino支持的端口流量和整体资源情况(最大配置)

  • 端口:
    • 32个端口组:每个端口组分别支持1x400G、2x200G、4x100G或8x50G/25G/10G和4x40G以太网
    • 每个端口:支持1x100G,2x50G,4x40/25/10/5/2.5/1G以太网用于CPU
    • 四道的 PCIe Gen2.0/3.0 用于管理附加数据包传输(4 x 8Gb服务器)
    • 12个 I2C Masters 用于设备的外部控制(QSFP等)
    • 12个 MDC/MDIO 对 用于设备的外部控制
  • 管道:
    • 4个管道:每个包含20个阶段(stage)
    • 每个阶段:80页的1k个条目 x 128b RAMs 加上 24个块的512个条目 x 44b TCAMs
    • 每个管道:9组入口和出口解析器,以支持8个前面板端口组和第9个端口组,以支持PCIe、CPU eth端口和重定向/再循环
    • 每条管道有72个分组端口(MACs或PCIe或重定向/再循环)
    • 每条管道具有8 400/200/100/50/40/25/10 MAC(管道0支持CPU的附加包接口(1x100G、2x50G、4x25G、4x10G、1G MAC或32Gb/s PCIe端口)
  • 共享缓冲区内存
    • 64MB 片上数据包缓冲区
    • 512k 输入组播表
  • 数据包大小
    • 9k jumbo

Parser的组成及资源约束

  • 组成:
    • 输入移位寄存器( ISR:Input Shift Register)
    • 提取器(Match Field Extract):用于从ISR中提取最多32位的匹配字段
    • TCAM:接收来自提取器的 32 位匹配字段和 SRAM 的8位当前“状态”,并进行并行匹配
    • SRAM:提供8位当前“状态”;以及若TCAM中存在匹配项,则在SRAM读取相应的数据,包括:
      • 下一个状态值
      • 转换控制:指定要从ISR中丢弃(移位)的字节数。这对应于刚刚解析的包头中的字节数。
      • 8位计数器:可以加载和减少计数器,以支持可变长度的报头
      • 匹配字段的选择:指定在下一个报头的何处查找匹配字段
      • 可能存在层栈的 推入/弹出 操作
      • 提取数据的输出字段:指定构成当前包头的字段位置,以及指定这些字段将在PHV中放置的位置信息
  • 资源约束:
    • 单个解析器单元可以处理大约100 Gb/s的数据包,因此可连接到以下任何一个:
      • 4个10/25 Gb/s MAC
      • 2个40/50 Gb/s MAC
      • 以上两者的组合,最多4个通道/100 Gb/s MAC
    • 每个周期最多可以从注册的数据包将4个8位字段和4个32位字段的数据传输到PHV
    • TCAM为256×40位
    • 每个周期最多输出两个CLOT元组,其中单个数据包最多生成16个,每个CLOT的长度在1-64 B之间

PHV(数据包头矢量)的组成及资源约束

  • 解析器/重组器PHV

    • 一个PHV总共包含224个字:6个48位字段、9个6个16位字段和64个32位字段

    • 有些词用于存储数据包元数据,如进入端口号、计算出的出口端口,可能还有优先级

      请添加图片描述

  • MAU管道PHV

    • 在MAU的PHV处理过程中,不是所有的PHV字段都需要匹配每个阶段,也不是所有的PHV在每个阶段都需要VLIW ALU操作,所以引入了Dark PHV和Mocha PHV。
    • Dark PHV
      • 仅存在于MAU管道中,并且对于解析器/重组器接口不可见,无法匹配
    • Mocha PHV
      • 可供匹配
    • 以上两者都允许元数据在不同阶段之间移动而无需修改
    • 下游阶段可以将Dark PHV复制为正常 PHV或Mocha PHV,以供之后的使用(例如匹配)
  • 资源约束:

    • 由于解析器/重组器硬件的限制,PHV字段被分组在一起,并且必须将一个组完全分配到入口或出口
    • 8位和16位的字段的组大小为4,而32位的字段的组大小为2
    • 解析器/重组器对以下字段组具有可见性:
      • 32位字段:32组
      • 16位字段:16组
      • 8位字段:24组
    • Dark PHV 将每组16个PHV扩展到20个PHV(4 Dark PHVs,4 Mocha PHVs,12 Normal PHVs)
    • MAU管道内部共有280个PHV容器:
      • 80个32位PHV:16个Dark PHV,16个Mocha PHV和48Normal PHV
      • 80个8位PHV:16个Dark PHV,16个Mocha PHV和48Normal PHV
      • 120个16位PHV:24个Dark PHV,24个Mocha PHV和72Normal PHV

MAU(匹配操作单元)的组成及资源约束

将PHV作为输入,将转换后的PHV作为输出

  • 组成:
    • 网关表
    • 用于哈希查找和三元查找的键生成逻辑
    • SRAM和TCAM资源
    • 通过ALUs来实现以下操作:
      • PHV转换
      • 统计计数器
      • 计量器
      • 状态内存
      • 用于弹性哈希的端口选择逻辑
  • 资源约束:
    • 最前面16个网关表(每个网关表最多执行4个掩码条件检查):输入是两个 32位字段和一个12位字段
    • 一个给定的MAU阶段中的16个可能的逻辑表与16个网关表相关联
    • 虽然可能有16个逻辑表,但每个阶段最多可以有16个基于SRAM的表和8个基于TCAM的表
    • SRAM表的每个阶段可以有1k位哈希输入的聚合
    • TCAM:一次匹配的最大宽度为528位

Deparser的组成

请添加图片描述

  • 作用:
    • 构造了一个协议字段的有序列表
    • 提取与上述协议字段对应的PHV字节,并将它们组合成单个字节向量

内容实在太多啦!!之后继续看再继续补充

基于Tofino2的64X100GE高性能可编程交换机MX7636-64X 作为白牌交换机ODM制造商代表,早在2017年智邦科技就已推出基于Intel Tofino P4可编程网络处理芯片的交换机产品。如受到Facebook青睐的Wedge100系列,其搭载的第一代Tofino交换芯片开启了可编程开放网络。Tofino系列芯片支持的P4数据平面编程语言让数据中心交换机和服务器一样享有开放性和可编程性。 得益于早期在第一代Tofino芯片上积累的可编程交换机开发经验,智邦科技紧跟Tofino芯片的迭代步伐,陆续开发出基于Tofino2芯片的400GE数据中心交换机AS9516-3 阅读详情

相关推荐

P4+Tofino实战:自定义网络协议的设计与实现全记录

可编程数据平面通过P4语言将网络转发逻辑从固定硬件中解放出来,使开发者能够自定义协议解析、匹配与转发流程。作为最早商用的P4可编程交换芯片,Tofino提供了硬件级线速处理能力,结合控制平面动态下发表项,可灵活应对私有隧道、Overlay封装及特定流量识别等场景。从协议头定义到解析器编写,从匹配动作表到校验和更新,每一步都涉及资源约束与工程权衡。本文完整记录在Tofino上实现自定义网络协议的实战过程,解析关键环节的常见陷阱与调试方法,为准备使用P4构建数据平面功能的工程师提供可复用的参考。

weixin_42116058的博客 258

【无标题】tofino芯片的见解

从入口到出口的编辑,其中入口和出口有异曲同工之妙,主要应用的编程预语言是P4。tofino芯片是一种管道式编程芯片,具有一定的流水线型。

qq_51988205的博客 731

从OpenFlow到P4:手把手教你搭建可编程网络实验环境(附Tofino配置)

本文是一份从OpenFlow到P4的实战指南,手把手教你搭建可编程网络实验环境。文章深入剖析了P4语言如何突破OpenFlow在数据平面编程上的局限,并详细介绍了基于BMv2软件交换机的环境搭建、P4程序编写与调试,最后提供了迈向英特尔Tofino可编程交换硬件的入门配置指引,帮助网络工程师掌握下一代网络的核心技能。

weixin_29223603的博客 51

传统P4交换芯片停产后的技术支持与替代方案

P4是一种开源的、数据面的高级编程语言。P4和基于P4的芯片平台(Tofino)自诞生以来便引起了学术界与工业界的广泛关注。但就在今年8月,Intel宣布Tofino产品即将停产,最后停产的订单日期截止到10月30日,这将为Tofino产品的生命周期画上一个句号。

asterfusion的博客 1010

可编程交换机如何革新文件系统元数据缓存

在分布式存储系统中,元数据管理是影响性能的关键因素。传统客户端缓存方案面临一致性维护成本高、路径解析开销大等挑战。可编程交换机凭借其数据面处理能力和集中式缓存优势,为元数据管理带来革命性突破。Fletch框架创新性地实现了路径感知缓存管理和多级读写锁机制,在HDFS等场景中实现高达181.6%的吞吐量提升。这种基于交换机的元数据缓存方案特别适合AI云、大数据分析等元数据密集型应用,为分布式存储性能优化开辟了新思路。

weixin_30333885的博客 408

P4 可编程网络 — 数据面转发技术发展史

目录 文章目录目录第一代转发架构:集中转发、总线交换。第二代转发架构:集中+分布转发、接口模块化、总线交换第三代转发架构:分布转发、总线交换第四代转发架构:ASIC 分布转发,网络交换第四代转发架构:NP(网络协处理器)第五代转发架构:NP 分布转发、网络交换第六代转发架构:DPDK第七代转发架构:P4、SmartNIC 第一代转发架构:集中转发、总线交换。 最早期的路由器,就是由普通的计算机加多几张网卡构成的。当时流量小,所以主频很低、实时性很差的 CPU 也能够应付带宽需求。 第二代转发架构:集中+分

烟云的计算 5558

Tofino可编程交换机实现网络聚合的快速使用

使用Tofino可编程交换机实现网内聚合

Edwardshenbc的博客 8910

【信息科学与工程学】【运营科学】第二篇 C4信息与通信网络运营 (C4) ——数据中心网络运营01

这是运营的物理和逻辑对象。C4.11xx 传输资源:光纤、微波、卫星链路;频谱资源(Sub-6GHz, 毫米波)。C4.12xx 节点资源:核心路由器、交换机、基站(gNB)、数据中心服务器。C4.13xx 虚拟化资源:由NFV生成的虚拟网络功能(VNF)、容器、虚拟机和网络切片实例。这是实现智能、灵活运营的核心技术集。C4.21xx 软件定义与虚拟化:软件定义网络 (SDN):控制平面与数据平面分离,实现集中、可编程的网络控制。网络功能虚拟化 (NFV):将传统专用硬件设备的功能以软件形式运行在通用硬件上

weixin_49199313的博客 1450

可编程网卡芯片在京东云网络的应用实践【BGW边界网关篇】

边界网关(BGW,Border Gateway),是京东云用来承载VPC南北向流量的一种网关,主要作用是与其他外部网关或环境进行内网互通。在边界网关支持创建VPC接口功能前,边界网关一旦创建、即自动与同地域的所有VPC连通。随着边界网关的VPC接口功能上线,新建的边界网关默认不与任何VPC连通,用户需要创建"VPC接口”用于打通指定VPC和边界网关的互联;

阿拉斯加大闸蟹的博客 4964

PISA可编程交换芯片与Tofino P4开发:从编译到表项下发实战

在数据中心网络和可编程转发领域,协议无关交换架构(PISA)通过 P4 语言将转发逻辑与固定 ASIC 解耦,实现自定义解析、匹配与动作。其核心原理是将 P4 程序编译映射到多级 match-action 流水线,利用 SRAM/TCAM 表、计数器与镜像原语完成灵活流量处理。这一技术让带内遥测、确定性网络和精细流量工程摆脱厂商固化字段限制。以 Intel Tofino 为例,从 P4 编译、SDE 工具链到 bf_switchd 启动、bfrt_python 下发 dmac 表项,再到硬件计数器验证,形成

weixin_42609225的博客 208

CH340驱动安装全攻略:从Windows到MacOS的避坑指南(2025最新版)

本文提供2025年最新版CH340驱动安装全攻略,涵盖Windows、MacOS和Linux三大操作系统。详细解析了驱动安装的核心原理、标准流程,并针对Windows设备管理器报错、MacOS系统安全限制等常见“坑点”提供了深度排错与解决方案,旨在帮助开发者快速稳定地完成USB转串口通信配置。

earth的博客 426

DPU相关调研学习(1)

DPU相关调研学习(1) 本篇文章的内容多来自互联网上的内容,SDNLAB输出为主。 一、从P4到DSA,SDN终于回到硬件定义时代 未来发展主要迎来黄金时代: John Hennessy和David Patterson描绘了计算机架构新的黄金时代和领域特定架构的重要性。对于网络工程师而言,无论是核心网关还是边缘计算都需要考虑充分利用网络的可编程性。 从可编程交换机、智能网卡到服务器上的网络协议栈,在这个生态系统中,智能网卡占据得天独厚的位置。它既是服务器网络的延伸,也是DCN网络的终结;它既要面对网络的高

Ds的博客 562

vuecil3+版本下,兼容ie等不支持es6的低版本浏览器

*综上,完成兼容性涉及到的配置的文件有,对应在页面中查看代码,就不单独附代码了:main.js。

yhr0322的博客 832

Barefoot:可编程交换在5G中的潜力

更多精彩内容,请微信搜索“FPGAer俱乐部”关注我们        Barefoot Networks认为可编程交换技术将在5G网络发展中占据一席之地。Tofino可编程交换机的生产商也表示,该技术可以帮助运营商减少延迟并更好地监控其网络性能。“随着运营商从分组核心过渡到移动核心,网络运营商采用可编程交换技术的可能性将会逐步提高。”Barefoot产品与战略副总裁Ed Doe表示,“我们将交换机...

FPGAerClub的博客 3944

如何处理NC数据?(Python和IDL语言实现)

如何处理NC数据?(Python和IDL语言实现) NetCDF(network Common Data Form)网络通用数据格式是一种面向数组型并适于网络共享的数据的描述和编码标准。目前,NetCDF广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。用户可以借助多种方式方便地管理和操作 NetCDF 数据集。(参考自:https://zhuanlan.zhihu.com/p/129351199) 在我看来,nc和hdf有异曲同工之妙,我用的数据以hdf结构为主(HDF:层次文件格式,相当于

zhanglingfeng1的博客 4635

从零到一:uniPush2.0全链路集成与多厂商通道配置实战

本文提供了uniPush2.0从零开始的全链路集成与多厂商通道配置实战指南。详细讲解了DCloud平台配置、uniCloud云函数开发、客户端CID获取与消息监听,并重点攻克了华为、小米、OPPO、vivo等主流厂商推送通道的配置难点与避坑技巧,帮助UniApp开发者实现“一次集成,全端覆盖”的高效消息推送方案。

onion的博客 431

开源项目「SwitchML」快速入门指南及问题解决方案

开源项目「SwitchML」快速入门指南及问题解决方案 项目基础介绍 项目名称: SwitchML 主要编程语言: P4, Python, C/C++ (通过DPDK与RDMA) SwitchML是一款旨在加速分布式机器学习训练过程的开源项目。它特别优化了Allreduce通信操作,利用可编程交换机的数据平面进行网络内的计算,通过在网络中的多个工作节点间聚合向量(如模型更新)来减少数据交换量。此项...

gitblog_00320的博客 1089

【OpenCV3】cv::compare()使用详解

cv::compare()主要用于两个图像之间进行逐像素的比较,并输出比较的结果。具体用法如下: cv::compare() bool cv::compare( cv::InputArray src1, // 输入数组1 cv::InputArray src2, // 输入数组2 cv::OutputArray dst, // 输出数组 int cmpop // 比较操作子,见下表 ...

guduruyu的专栏 9759

P4 tutorials实验后补习理论知识

这是P4所提供的最简单易理解的编程结构,V1Model。从图上可以看出,数据包的处理过程像一条流水线一样,它由5个模块组成,分别是: Parser:解析器,对数据包根据预先定义好的格式进行解析,并提取头部的各个字段,在这里可能会根据不同的头部进行匹配。比如如果三层包头的协议字段是0x0800则是ip报文,如果是0x0806则是arp报文,则会进行不同的处理。 Ingress:Ingress流水线部分,数据处理逻辑的入口。 TM:Traffic Manager,在这里定义核心的处理逻辑,并且会对一些元数据进.

老网工的岁月独白 1944

什么是 SAP S/4HANA 的 Brown Field 迁移和 Green Field 迁移

Brown Field实施涉及升级现有的 SAP 环境并继续使用一些遗留组件。它类似于传统升级,因为它涉及软件更新、一些数据转换和一些业务流程的调整。它仍然具有破坏性,但比Green Field实施要少得多。如果你是风险厌恶者,倾向于逐步使用 S/4HANA 的功能,或担心 S/4HANA Green Field方法的成本,那么你可能更喜欢这种方法。混合方法结合了Brown Field和Green Field迁移的一些元素。它从公司的 SAP 系统的副本开始,包括配置设置和定制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1322

MATLAB 开发项目实例 1000 例专栏之第37例:基于Simulink的无人机飞行控制系统设计

通过上述项目实例,我们成功地使用Simulink设计和仿真了一个无人机的飞行控制系统。这个项目展示了从无人机建模、路径规划、控制器设计到仿真验证的完整流程。Simulink的可视化和模块化特性使得系统的建模和仿真更加直观和高效。

xiaoheshang_123的博客 163

探索未来网络:P4实现的开放源码项目库

探索未来网络:P4实现的开放源码项目库 去发现同类优质开源项目:https://gitcode.com/ 在这个快速发展的时代,网络技术不断创新,P4编程语言为网络数据平面提供了前所未有的灵活性和可编程性。这个名为Open source P4 implementations的仓库正是一个集大成者,汇集了一系列基于P4的研究项目,旨在推动网络处理的边界,并向开发者们开放这些前沿成果。 项目介绍 该仓...

gitblog_00039的博客 401

2026年3月GESP真题及题解(C++七级): 选择题和判断题(题解)

2026年3月GESP真题及题解(C++七级): 选择题和判断题(题解)

王老师青少年编程 984

编程实现路由算法_可编程交换登上Hotchips,只是C位不再!

被Intel收编的Barefoot除了前不久“被宣传”Tofino2已经领先业界尝鲜CPO硅光技术对于Tofino2交换芯片细节一直低调行事连带Intel再次收购P4资产也未见规模报道就在P4群龙无首Pensando来势汹涌之际光脚终于登上Hotchips舞台关于Tofino2的更多细节曝光只是每次都从万恶的传统芯片对比讲起实在是让人有些审美疲劳Tofino采用的是协议无关交换架构PI...

weixin_39884412的博客 325

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

走马观花: ACM SIGCOMM 2019的黑科技(含资料下载链接)

在互联网诞生50周年,中国全功能接入国际互联网25周年之际,由国际计算机学会ACM(Association for Computing Machinery)数据通信专业组SIGCOMM(Special Interest Group on Data Communication)主办、清华大学承办的全球网络通信领域顶级会议ACM SIGCOMM 2019于8月20日-25日在北京隆重举行。此次会议恰逢...

SDNLAB的专栏 2197

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

iSLIP算法:SDN交换机输入队列调度的二十年演进与实战

在高速网络交换中,输入队列调度是保障吞吐与公平性的核心技术。其原理基于迭代轮询匹配,通过请求、授予、接受三阶段仲裁,在硬件复杂度与性能间取得平衡。该技术价值在于以极低延迟逼近最大匹配吞吐,广泛应用于SDN交换机、FPGA网络加速及OpenFlow数据平面。从ATM到可编程流水线,iSLIP凭借O(log N)复杂度和99%吞吐,成为商用交换机调度基石。本文深入解析iSLIP的算法原理、硬件实现、多优先级与组播适配,并分享调试经验与参数优化策略。

weixin_33845881的博客 558

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: P4 程序设计语法学习
下一篇: Windows双版本Python2、Python3混用
K_Haki
博客等级 码龄5年 18粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K_Haki

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值