工具/软件:
eth0和 eth1是 cpsw 交换机模式下的网络端口、我想在以下配置网络端口:
(1) 两个网络端口之间没有速度限制
(2)但进入 MPU 的两个网络端口的速率限制为10Mbps?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、Zitong、
您能否首先 通过回答以下问题来帮助我了解您的问题?
1.您是在 TI AM64x EVM 上进行评估、还是在采用 AM6422的定制设计电路板上进行评估?
2.您使用的是哪种操作系统? 它是哪个 SDK 版本?
3.您的测试拓扑是什么? 换言之、您连接到 eth0和/或 eth1的是什么、您正在运行什么测试?
4、您能解释一下两个端口之间的"速度限制"是什么意思吗?
-道林
谢谢 Daolin、 很抱歉我没有清楚地描述我的问题。
1 μ A 我、采用 AM6422的定制设计电路板
2、我正在使用 Linux Debian OS、、它 基于 senux 平台构建、而不是直接与 TI SDK 构建
3、我将 eth0和 eth1连接到我的 PC、例如、eth0和 eth1桥接 IP 为192.168.1.xxx、我的 PC eth 端口有两个 IP 192.168.2.10和192.168.2.11、我可以在我的 PC 上运行 iperf 服务器和 iperf 客户端、以在 交换机内测试 Linux eth 数据传输速率
尊敬的 Zitong:
感谢您分享这些详细信息。
3、我将 eth0和 eth1连接到我的 PC、例如、eth0和 eth1桥接 IP 为192.168.1.xxx、我的 PC eth 端口有两个 IP 192.168.2.10和192.168.2.11、我可以 在 PC 上同时运行 iperf 服务器和 iperf 客户端以在 交换机内测试 Linux 数据传输速率您在定制电路板和主机 PC 上的 IP 地址配置使用什么网络掩码?
您的 PC 是否只有一个具有两个 IP 地址的 eth 端口? 还是它有两个 eth 端口、每个端口都有一个 IP 地址?
您能否分享您的自定义电路板到 PC 连接图并标记每个端口的 IP 地址?
-道林
[/quote]
您好、Zitong、
[引述 userid="642962" url="~/support/processors-group/processors/f/processors-forum/1482060/am6422-how-to-limit-the-eth-port-in-driver/5695985 #5695985"]我的 PC 和 Linux 主板上的网络掩码均为255.255.255.0
我的 PC 有两个 eth 端口、分别连接到我的 Linux 端口
[/报价]感谢您对此进行澄清。 但是、如果您还分享了您的联系图片、将会有所帮助。 现在、您似乎有如下所示的内容?
端口1 PC (192.168.2.10)<--> eth0 BR0 (DUT 192.168.1.xxx) eth1 <->端口2 PC (192.168.2.11)
-道林
我的交换机 IP 地址 肯定与 PC IP 位于不同的子网、它们无法通信。 但是、我只想测试交换机内部的传输速率。 因此、我在 PC 上运行 iperf 服务器和 iperf 客户端、Linux eth 只能传输数据包。 都可以正常工作。
我使用 devlink 命令将 CPSW 配置为开关
DevLink 开发参数集 platform/8000000.ethernet name switch_mode value true cmode 运行时
尊敬的 Zitong:
我使用 devlink 命令将 CPSW 配置为交换机
devlink 命令用于确保将 CPSW 配置为硬件交换机。 您还应确保运行以下操作以完全设置交换机。
devlink dev param set platform/c000000.ethernet name switch_mode value true cmode runtime ip link add name br0 type bridge ip link set dev br0 type bridge ageing_time 1000 ip link set dev eth0 up ip link set dev eth1 up ip link set dev eth0 master br0 ip link set dev eth1 master br0 ip link set dev br0 up ip link set dev br0 type bridge vlan_filtering 1 bridge vlan add dev br0 vid 1 self bridge vlan add dev br0 vid 1 pvid untagged self
仅出于测试目的、如果您的交换机 IP 地址位于同一子网上、您是否会看到类似的速率限制问题?
-道林
我只想将速率限制设置为以下值
(1)两个网络交换机端口内部没有速度限制
(2)但进入 MPU 的两个网络端口的速率限制为10Mbps?
为了澄清一下、您说的问题是在使用 iperf3进行测试时、吞吐量限制为10Mbps、还是您想将速率配置为10Mbps?
我目前不在办公室、暂时不会重现您的测试设置。
-道林
尊敬的 Schuyler:
(1) 10Mbps、是传输到 MCU 所需的速度。
(2) ethtool 结果如下
好的、让我们将所有器件保留在子网上、我将通过以下连接进行验证、首先我将在 PC 上运行 iperf 客户端和 iperf 服务器以验证 eth 交换机模式的功能、iperf 将运行100Mbps、我希望100Mbps 将没有限制。 其次、我将在 Linux 上运行 iperf 服务器、在 PC 上运行 iperf 客户端、我要验证 MCU 的速率限制、例如、我将运行该命令
谢谢
您好、
与开发人员讨论后、我们建议查看此链接文档:
为了限制速率,有一个功能使用基于信用的整形器已为 CBS 启用,以限制流量从发送者移动到接收者 的速率:此外,我们认为桥接器设置中没有任何类型的内部速率限制,它的工作方式类似于它对任何硬件交换机的工作方式,即基于 MAC 地址转发流量。
此致、
Schuyler
我们希望我们的设备在仅用作交换机时没有速率限制、但在我们的应用程序文件中、我们请求速率限制为10Mbps、实际上是 CPU 的速率限制。
嗨、Zitong
您希望限制哪个方向的交通速度?
对于 CPU 输出、可以使用此命令、此命令可将流量限制为90Mbps
tc qdisc 更换设备 eth1 根 tbf 限制120MB 速率90MB 突发5MB
您可以根据速度配置调整该参数
此致
Semon
您好、Zitong、
我们希望我们的设备在仅用作交换机时没有速率限制、但在我们的应用程序文件中、我们请求速率限制为10Mbps、实际上是 CPU 的速率限制。
如果入口和出口端口(交换机的 eth0和 eth1)都限制为10Mbps、则这将限制总体流量速率、即使交换机的流量为100Mbps、入口和出口端口的流量仍限制为10Mbps。 如果您仅限制交换机中两个端口的一个端口的10Mbps、则情况将有所不同。 您的要求是同时将两个端口限制为10Mbps、还是只要求其中一个端口?
此外、我不完全了解您对交换机中的速率限制的要求。 由于您已配置了硬件交换机、因此流量将从一个端口传输到另一个端口、因为硬件可以将流量从一个端口传输到另一个端口。 您是否能够在原始测试中验证开关是否以100Mbps 的速率传输、而无需在设备树中针对10Mbps 限制进行修改?
-道林
我们要限制 CPU 的路径输入和 CPU 的路径输出
嗨、Zitong
您可以尝试我提供的命令、它可以限制来自 CPU 的输出流量
让我们一起找到正确的命令来限制 CPU 的输入流量
此致
Semon
您好 Zekun、
感谢您的澄清和具体要求、分享了方框图。
我尝试了命令`tc qdisc replace dev eth0 root tbf 限制20MB 速率10Mbit 突发5MB`、它实际上将出站速率限制为10Mbps。
我假设 Semon 的建议解决了从 CPU 到外部端口速率限制的传输问题? 使用 tc qdisc 命令对入口流量进行速率限制似乎不是很简单、因为 Linux 似乎不支持入口流量整形。 我不是使用 tc qdisc 的专家、但一些资源表明、通过将入口流量重定向到虚拟以太网接口、然后调整该虚拟接口的出口、可能会限制入口流量: https://linux-man.org/2021/09/24/how-to-limit-ingress-bandwith-with-tc fmand-in-linux/
另一种选择是使用中断节奏来间接限制入口流量的速率: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/latest/exports/docs/linux/Foundational_Components /内核/Network/CPSW3g.html#interrupt-pacing Kernel_Drivers。 然而、这似乎不能让您完全控制入口流量的实际速率。
我需要在内部讨论我们可以采取哪些其他方法来限制入口流量。 如果我在星期五之前没有回复更新、请 Ping 此主题。
-道林
我假设 Semon 的建议解决了从 CPU 到外部端口速率限制的传输问题? 使用 tc qdisc 命令对入口流量进行速率限制似乎不是很简单、因为 Linux 似乎不支持入口流量整形。 我不是使用 tc qdisc 的专家、但一些资源表明、通过将入口流量重定向到虚拟以太网接口、然后调整该虚拟接口的出口、可能会限制入口流量: https://linux-man.org/2021/09/24/how-to-limit-ingress-bandwith-with-tc fmand-in-linux/
另一种选择是使用中断节奏来间接限制入口流量的速率: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/latest/exports/docs/linux/Foundational_Components /内核/Network/CPSW3g.html#interrupt-pacing Kernel_Drivers。 然而、这似乎不能让您完全控制入口流量的实际速率。
我需要在内部讨论我们可以采取哪些其他方法来限制入口流量。 如果我在星期五之前没有回复更新、请 Ping 此主题。
-道林
[/报价]您好、Daolin
有关如何限制 ingresss 流量的任何更新?
此致
Semon
为了将100Mbps 传入流量限制为10Mbps 到主机 CPSW 端口、预计会丢失/丢弃大量数据包(90Mbps 丢弃)以满足10Mbps 速率。 这是否是您对该用例的意图? 如果是、是否对丢弃哪种类型的数据包以及应将哪些数据包传递到主机 CPSW 端口有要求?
入口路径的速率限制看起来非常重要、因此我们需要更多时间来进行研究。
[/报价]您好、Daolin
速率限制用于保护 CPU 免受广播风暴的影响,因此任何类型的流量都可以被丢弃,唯一的要求是将 CPU 的流量限制为10Mbps
此致
Semon
尊敬的 Semon:
[引述 userid="35205" url="~/support/processors-group/processors/f/processors-forum/1482060/am6422-how-to-limit-the-eth-port-in-driver/5722533 #5722533"]为了限制速率,有一个功能使用基于信用的整形器已为 CBS 启用,以限制流量从发送者移动到接收者 的速率:此外,我们认为桥接器设置中没有任何类型的内部速率限制,它的工作方式类似于它对任何硬件交换机的工作方式,即基于 MAC 地址转发流量。
我已经阅读了您提供的链接。 但我认为这可能不是我们想要的。 该链接提供了一些 按端口限制速率的示例、例如5001和5002、 通过相应 端口进行的数据传输将限制为设置速率。
然而、我们希望通过 eth 或 eth1到 CPU 进行的所有数据包传输都将限制10Mbps
[/报价]我想回到 Schuyler 之前提出的基于信用的整形器建议。 https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/Foundational_Components CBS/Kernel/CBS/Network/cPSW-CBS.html#CBS-IN-SWITCH Kernel_Drivers 模式
首先、文档指出、为了限制入口时的速率、发送器设备需要在其连接到交换机设备入口的自己出口端口上配置速率限制。 对我来说、这表示线路上的速率也会受到限制、本质上执行的操作与您和 Zitong 所指示的使用"ethtool -s ethX speed 10 duplex full"时相同、这不是您的用例所需的操作。
另一个部分: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/的 Kernel_Drivers 入口速率(Foundational_Components)/Kernel/Network/cPSW-cBS.html#rate-limiting-host-port-negroent-on-am625-sk)可能是要尝试查看入口速率是否实际受到限制的地方。 但是、这涉及使用特定端口、需要通过该端口发送流量、以便应用速率限制。 根据我的理解、这是必要的、因为要使用 CBS、需要使用固定优先级模式、该模式要求将流量指定到特定的优先级、该优先级由流量通过的端口确定。
我们需要进一步研究的另一个选项与 eBPF 相关、但根据我的理解、我们的 CPSW 驱动程序可能目前不支持此 eBPF。
-道林
我想知道它是否有一个方法可以通过修改内核来达到速率限制? [/报价]您好、Zitong
我尝试了以下两条命令来限制入口流量、EVM 中会出错。
------------------------------------------------
方法1:
tc qdisc 添加 DEV eth0入口
tc 过滤器添加 DEV eth0父过滤器 FFFFff:协议 IP u32匹配 IP src 0.0.0.0/0 flowwid:1管制速率30.0mbit MTU 10000突发20k 滴
方法2:
tc qdisc add dev eth0句柄 FFff:入口
tc 过滤器添加 dev eth0父项 FFff:u32匹配 u32 0警察速率14mbit 突发20k
----------------------------------------
请在您的系统中尝试查看结果
此致
Semon
Unknown 说:]我想知道如何在方法1中更改参数以修改速率限制、我查找有关 tc 命令的一些信息、我认为最关键的参数是`rate 30.0mbit`、我认为30.0mbit 是平均速率、但 iperf 结果显示速率低于我预期。 如果我要将速率限制更改为40Mbps、我应该更改什么参数?
I test 在 EVM 中、上述设置下大约为10Mbps、您可以调整这3个参数、它不是很精确、需要进行测试