Tofino 相关学习

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字节,并将它们组合成单个字节向量

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

K_Haki

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

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

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

打赏作者

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

抵扣说明:

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

余额充值