请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
尊敬的 Gunter:
将 Siddharth 的响应放在此处的邮件线程中。
首先,它看起来似乎驱动程序不支持 CBS、tc-CBS 的普通 Linux 接口,并且有自己的配置方式。 这是有原因的
不使用标准接口?
=>
如 tc-CBS 手册页面所述
、网址为:man7.org/.../tc-cbs.8.html、
"CBS 是要安装在另一个 qdisc 下,它将数据包流映射到流量类别,一个
示例为 mqprio。" 当 tc 命令用于 mqprio 时、驱动程序支持 HW 卸载
参数设置为1。 该驱动程序支持卸载特定参数:min_rate 和 max_rate
使用 CIR (提交信息速率)和 EIR (过量信息速率)将数据发送到 CPSW 硬件
寄存器中、将 CIR 寄存器配置为 MIN_RATE、将 EMX_RATE 配置为 MIN_RATE。
软件支持包括 CBS 在内的所有 tc 命令。 中使用的具体示例
包含 MIN_RATE 和 max_RATE 的文档是可卸载到 CPSW 的 tc 命令的子集
与 PC 通信
。
它似乎使用了 sysfs 接口和 mqprio qdisc 的"min_rate"和"max_rate"参数的组合。 尚不清楚这些参数与802.1Qav 整形器参数的确切映射情况?
=>
sysfs 接口用于主机端口 DMA 通道速率限制、控制速率 AT
将流量从主机端口通过 DMA 通道发送到 CPSW 硬件。 Min_Rate 和 Max_Rate
属于 tc mqprio 命令一部分的参数可卸载至 HW。 中的 tc-CBS 命令
软件可以按原样使用、并使用 mqprio min_rate 和 max_rate 参数来强制执行
接收器速率限制。 802.1Qav 旨在根据分配到的速率来塑造流量
每个优先级。 根据、可以使用 MIN_RATE 和 max_RATE 参数以及来实现相同的设置
优先级、能够将其卸载到转发路径上的 CPSW 硬件、以及 DMA
通道速率限制用于控制发送到 CPSW 硬件的主机端口流量。
官方界面 tc-cbs 拥有直接对应于预期参数的参数,但根本不清楚如何通过现有接口实现这些参数。
=>
带有 min_rate 和 max_rate 参数的 tc mqprio 命令未被映射到 tc CBS
组件。 它们都可以固定使用、并且在软件中受支持。 唯一的区别是
带有 min_rate 和 max_rate 参数的 tc mqprio 命令可用于速率限制
每个优先级的流量、并可将其卸载到 CPSW 硬件以处理转发中的速率限制流量
路径以及外部端口出口路径。
在"3.2.3.6.3.3.4.1.1节中增加了内容。 主机端口入口速率限制卸载、"设置了/sys/class/net/eth0/queues/tx-7/tx_maxrate sysfs 值、但该部分被描述为"入口速率限制"。 这意味着它作为策略器来限制接收速率、但参数名称为"TX_maxRate"、这意味着出口速率限制。 这是入口速率限制还是出口速率限制? 实验中、它似乎是出口限制。
=>
此处的"入口"一词必须与"主机端口"一词结合理解
放在前面。 主机端口对应于 CPSW 中面向软件/DMA 的端口、其中显示
主机生成的通信映射到 CPSW 硬件。 因此、主机端口入口速率较高
限制卸载对应于限制从主机发送到 CPSW 主机端口的流量的速率
间接地意味着 DMA 通道速率限制。
下一节,"3.2.3.6.4.3.3.2.3.1.2. 交换机出口、以太网端口传输速率限制卸载"、建议它配置出口限制并通过 sysfs 接口和"mqprio"接口设置值。 这些值之间有什么关系?
=>
sysfs 命令用于配置与相对应的 CPSW 主机端口入口速率
DMA 通道速率限制。
mqprio 命令可在软件和硬件中使用。 文档中的、其为
参数"HW"设置为1、将最小速率和最大速率限制卸载到 CPSW 硬件上。
这样、将针对从主机发送和移出外部的所有流量
端口、或者正在转发并移出外部端口的流量、可以是速率
在 CPSW 硬件本身中受到限制。
本文档将"min_rate"描述为 CIR、将"max_rate"描述为 EIR。 在该示例中、MIN_RATE 与 TX_maxRATE 匹配、传输速率被限制为 MIN_RATE。 如果在带宽允许的情况下不允许发送器超过 MIN_RATE、max_rate 会做什么?
=>
CIR 对应于 MIN_RATE、而 EIR 对应于超额速率、即 MAX_RATE - MIN_RATE。
MIN_RATE 和 max_RATE 对应的流量应允许的最小速率
最高优先级的函数。 例如、该命令可以为指定 MIN_RATE
优先级0、1和2。 如果优先级为2的流量足够、则可以预期会有
满足 MIN_RATE 要求。 另一方面、如果没有优先级为2的流量、且只有的流量
此时、优先级1恰好是最高优先级的流量、那么它是可以预期的
如果优先级为1的流量足够、则满足 MIN_RATE 标准。 此外
MIN_RATE 参数允许间歇性地切换到其他优先级流量、同时确保这一点
已满足最高优先级流量的 MIN_RATE 要求。 MAX_RATE 可确保相应优先级的流量不会超过允许的值
由 max_rate 参数配置。
有哪些约束条件、因为输入无效配置很容易、但没有关于约束条件实际值的反馈?
=>
MIN_RATE 和 max_RATE 的值是正整数、单位为 Mbps。 最小值
对于 MIN_RATE 为1、而允许的最大值取决于链路带宽。 同样、
MAX_RATE 必须至少为2、因为它应大于 MIN_RATE。 的总和
优先级中的所有 max_rate 值都不能超过链路带宽。
最后、使用这些设置来执行数据包捕获、VLAN 标头在捕获的数据包中始终将优先级代码点(PCP)设置为零。 这是 TC0的预期结果、但在示例中并非 TC6和 TC7的预期结果。 是否可以对硬件进行配置、以将 PCP 设置为正确的值? 这是一个问题、因为如果没有正确的值、开关就无法提供有保证的资源。
=>
如果源接口为 VLAN 接口、则使用 skbedit 命令来编辑 PCP 值
中的一个、用于映射 VLAN 出口的 ip 命令如下所示:
IP link set eth0.100 type VLAN outlet 0:0 1:1 2:2 3 4:4 5:5 6:6 7:7
然后、VLAN 标头将具有相应的优先级标签、对应于中添加的 PCP 值
使用 VLAN 接口发送的数据包 skbedit。
此致、
Tanmy.