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之间
- 单个解析器单元可以处理大约100 Gb/s的数据包,因此可连接到以下任何一个:
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字节,并将它们组合成单个字节向量
内容实在太多啦!!之后继续看再继续补充