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.

[参考译文] DRA829J:CPSW9G 运行方式类似于集线器

Guru**** 2585275 points
Other Parts Discussed in Thread: TDA4VH-Q1

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1547942/dra829j-cpsw9g-behaving-like-a-hub

器件型号:DRA829J
Thread 中讨论的其他器件:TDA4VH-Q1TDA4VH

工具/软件:

您好、

我们在本机以太网配置和 SDK 11 中运行 CPSW9G。

两个(或更多)外部交换机端口属于同一 VLAN。 在 A72 上、我们还使用此 VLAN 接收/发送数据包。

当通过一个交换机端口从外部系统向 A72 发送单播数据包时、我们会看到这些数据包在其他交换机端口上重复。 使交换机的 行为就像集线器。 从 A72 对外部系统的回复不会重复。

我们在开关模式和 Mac 模式下会看到这种行为。

开关:

10: switch: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether fe:d2:b8:9a:b6:12 brd ff:ff:ff:ff:ff:ff promiscuity 1  allmulti 0 minmtu 68 maxmtu 65535
    bridge forward_delay 1500 
    hello_time 200 
    max_age 2000 
    ageing_time 100000 
    stp_state 0 
    priority 32768 
    vlan_filtering 1 
    vlan_protocol 802.1Q 
    bridge_id 8000.fe:d2:b8:9a:b6:12 
    designated_root 8000.fe:d2:b8:9a:b6:12 
    root_port 0 
    root_path_cost 0 
    topology_change 0 
    topology_change_detected 0 
    hello_timer    0.00 
    tcn_timer    0.00 
    topology_change_timer    0.00 
    gc_timer  160.16 
    vlan_default_pvid 0 
    vlan_stats_enabled 0 
    vlan_stats_per_port 0 
    group_fwd_mask 0 
    group_address 01:80:c2:00:00:00 
    mcast_snooping 1 
    no_linklocal_learn 0 
    0 mcast_router 1 
    mcast_query_use_ifaddr 0 
    mcast_querier 0 
    mcast_hash_elasticity 16 
    mcast_hash_max 4096 
    mcast_last_member_count 2 
    mcast_startup_query_count 2 
    mcast_last_member_interval 100 
    mcast_membership_interval 26000 
    mcast_querier_interval 25500 
    mcast_query_interval 12500 
    mcast_query_response_interval 1000 
    mcast_startup_query_interval 3124 
    mcast_stats_enabled 0 
    mcast_igmp_version 2 
    mcast_mld_version 1 
    nf_call_iptables 0 
    nf_call_ip6tables 0 
    nf_call_arptables 0 
    addrgenmode none 
    numtxqueues 1 
    numrxqueues 1 
    gso_max_size 65536 
    gso_max_segs 65535 
    tso_max_size 65536 
    tso_max_segs 65535 
    gro_max_size 65536

交换机端口:

7: xf2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mqprio master switch state UP mode DEFAULT group default qlen 1000
    link/ether 00:60:c8:63:07:95 brd ff:ff:ff:ff:ff:ff permaddr 02:60:c8:00:00:04 promiscuity 1  allmulti 1 minmtu 64 maxmtu 2002
    bridge_slave state forwarding 
    priority 32 
    cost 5 
    hairpin off 
    guard off 
    root_block off 
    fastleave off 
    learning on 
    flood on 
    port_id 0x8002 
    port_no 0x2 
    designated_port 32770 
    designated_cost 0 
    designated_bridge 8000.fe:d2:b8:9a:b6:12 
    designated_root 8000.fe:d2:b8:9a:b6:12 
    hold_timer    0.00 
    message_age_timer    0.00 
    forward_delay_timer    0.00 
    topology_change_ack 0 
    config_pending 0 
    proxy_arp off 
    proxy_arp_wifi off 
    mcast_router 1 
    mcast_fast_leave off 
    mcast_flood on 
    bcast_flood on 
    mcast_to_unicast off 
    neigh_suppress off 
    group_fwd_mask 0 
    group_fwd_mask_str 0x0 
    vlan_tunnel off 
    isolated off 
    locked off 
    addrgenmode none 
    numtxqueues 8 
    numrxqueues 8 
    gso_max_size 65536 
    gso_max_segs 65535 
    tso_max_size 65536 
    tso_max_segs 65535 
    gro_max_size 65536 
    portname p5 
    switchid 000000000c000000 
    parentbus platform 
    parentdev c000000.ethernet

8: xf4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mqprio master switch state UP mode DEFAULT group default qlen 1000
    link/ether 00:60:c8:63:07:94 brd ff:ff:ff:ff:ff:ff permaddr 02:60:c8:00:00:05 promiscuity 1  allmulti 1 minmtu 64 maxmtu 2002
    bridge_slave state forwarding 
    priority 32 
    cost 5 
    hairpin off 
    guard off 
    root_block off 
    fastleave off 
    learning on 
    flood on 
    port_id 0x8001 
    port_no 0x1 
    designated_port 32769 
    designated_cost 0 
    designated_bridge 8000.fe:d2:b8:9a:b6:12 
    designated_root 8000.fe:d2:b8:9a:b6:12 
    hold_timer    0.00 
    message_age_timer    0.00 
    forward_delay_timer    0.00 
    topology_change_ack 0 
    config_pending 0 
    proxy_arp off 
    proxy_arp_wifi off 
    mcast_router 1 
    mcast_fast_leave off 
    mcast_flood on 
    bcast_flood on 
    mcast_to_unicast off 
    neigh_suppress off 
    group_fwd_mask 0 
    group_fwd_mask_str 0x0 
    vlan_tunnel off 
    isolated off 
    locked off 
    addrgenmode none 
    numtxqueues 8 
    numrxqueues 8 
    gso_max_size 65536 
    gso_max_segs 65535 
    tso_max_size 65536 
    tso_max_segs 65535 
    gro_max_size 65536 
    portname p6 
    switchid 000000000c000000 
    parentbus platform 
    parentdev c000000.ethernet

我们已经测试了或多或少的每个可用设置。 你知道我们缺少什么吗?

此致、

Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我刚意识到。 实际器件型号为“TDA4VH-Q1"。“。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthias、

    我假设您已创建一个桥接器接口并添加了所有必需的接口作为其子接口。 这是在 TDA4VH 中启用开关模式的重要一步。

    有关交换机模式的更多详细信息、请参见此处: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-j784s4/11_00_00_08/exports/docs/linux/Foundational_Components cpswng/Kernel/Network/CPSWng-Native-Ethernet.html#cpswng-native Kernel_Drivers-ethernet

    如果这样做、您能否在 Linux 上共享“ip -A“的输出。

    我怀疑网桥是用自己的单独 MAC 地址注册的、而不是使用子接口的组成 MAC 地址。

    如果 eth1 是 br0 的一部分、是否可以尝试运行以下命令并查看它是否解决了问题:

    ip link set dev br0 address `ip link show dev eth2 | tail -1 | awk '{print $2}'`

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    您的假设正确。 我们将交换机端口连接到一个网桥接口、并相应地配置了所有内容(VLAN 等)。 桥接器也有自己的 MAC 地址。

    使用其中一个交换机端口的 MAC 地址未能解决我们的问题。 但是、使用其中一个 VLAN 接口的 MAC 似乎可以修复它(即添加了“IP link add link br0 name if2 type VLAN id 2“的接口的 MAC)。

    感谢您为我们指明正确的方向。

    此致、

    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这似乎没有解决问题。 不知何故、它只是暂时的。 我还在研究它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    将交换机的 MAC 地址设置为 VLAN 接口的 MAC 地址后、复制停止约一分钟。 之后,重复又回来了。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthias、

    VLAN 接口不应从交换机接口继承 MAC 地址。 他们的 MAC 地址应该是相同的。

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthias、

    这很奇怪。 我在 ALE 条目中看不到任何可以解释这一点的东西。 我们能否调用进一步调试该问题。

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    没问题。 我有时间明天打电话。 我想您可以看到我的电子邮件地址并向我发送邀请吗?

    此致、

    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    我发现重复工作的停顿来源。

    为了检查复制、我使用了另一个 Jacinto 板与 CPSW9G。 更改 MAC 地址后、接收板的 rx_port_mask_drop 计数器会增加。 因此、复制仍在发生、我只能用 tcpdump 看到它。

    我现在使用另一台机器、重复数据仍然存在。

    此致、

    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthias、

    我找到了重复暂停的原因。

    但为什么会为此暂停呢? 它们是在您更改 MAC 地址时出现的吗?

    关于这个电话,我想我们将能够明天下午 3 点 IST。 我想你在欧洲时区。 这 对您来说也是可行的。 让我通过电子邮件向您发送邀请。

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    是的、更改 MAC 地址时会暂停。 但我也有每 4 分钟暂停一次。 我真的不明白这是什么原因造成的。 由于这是网络数据包的接收部分、而这些数据包并未发送到该板上、因此我目前并不担心。

    我能够进一步调试我们的问题。

    在 MAC 模式下:

    -当我将桥接器接口的 MAC 地址更改为 VLAN 接口 (KLI) 使用的 MAC 地址时,复制将停止。

    在开关模式下:

    -更改网桥接口的 MAC 地址不会停止复制。

    但是,如果网桥接口的 MAC 地址与 VLAN 接口的 MAC 地址不同,我会看到每个重复的数据包两次。 可能来自交换机硬件和 Linux 设置。 将网桥 MAC 改回与 VLAN 接口相同的 MAC、会导致第二次复制断开。

    我到目前为止的结论是,你的第一个怀疑是正确的。 不同的 MAC 地址会导致重复。 在软件中、我可以通过设置相同的 MAC 地址来禁用该功能。 但以某种方式、这不适用于开关模式下的硬件。 重复现象持续存在。

    此致、

    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    我们使用 SDK 11.0.0.21 (pdk_j784s4_11_00_00_21)

    这是调用中的脚本。

    #!/bin/bash

    ip link del dev 交换机

    ip link add name 交换机类型桥接器
    IP LINK SET DEV 交换机类型网桥 AGE_TIME 1000

    IP 链路设置 DEV xf2 断开
    IP 链路设置 DEV xf4 关闭

    DevLink 开发参数集 platform/c000000.ethernet name switch_mode value true cmode 运行时

    ip link set dev xf2 主交换机
    ip link set dev xf4 主交换机

    IP 链路设置设备交换机类型网桥 VLAN_FILTERING 1.
    桥接 VLAN 添加开发交换机 vid 1
    网桥 VLAN 添加开发交换机 vid 1 PVID 1 未标记的自身


    IP 链路设置 DEV 开关打开
    IP 链路设置 dev xf2 up
    IP link set dev xf4 up

    ip a 添加“192.168.0.1/24" dev“ dev 交换机

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    我能够创建一个功能配置。

    (我不知道为什么,但我不能再插入代码块了。 因此,我必须直接发布我的脚本)

    >>>>

    #!/bin/bash
    IP 链路设置 DEV xf2 断开
    IP 链路设置 DEV xf4 关闭

    DevLink 开发参数集 platform/c000000.ethernet name switch_mode value true cmode 运行时

    ip link add name 交换机类型桥接器
    IP LINK SET DEV 交换机类型网桥 AGE_TIME 1000
    IP 链路设置 dev xf2 up
    IP link set dev xf4 up
    ip link set dev xf2 主交换机
    ip link set dev xf4 主交换机

    IP 链路设置设备交换机类型网桥 VLAN_FILTERING 1.

    网桥 VLAN 添加 dev xf2 vid 2 PVID 未标记的主设备
    网桥 VLAN 添加 dev xf4 vid 2 PVID 未标记的主设备
    桥接 VLAN 添加开发交换机 vid 2 自身
    网桥 VLAN 添加开发交换机 vid 2 PVID 标记为自我

    桥接 VLAN 添加设备交换机 vid 1 self #<----添加 VLAN 作为桥接条目
    桥接 VLAN 添加开发交换机 vid 1 PVID 未标记的 self #<--将 CPU 端口添加到 VLAN 1

    IP 链路设置 DEV 开关打开
    IP 链路设置 dev xf2 up
    IP link set dev xf4 up


    ip link 添加链接交换机名称 Koni 键入 vlan id 2
    IP link set dev Koni up
    ip addr add “172.30.0.1/16" dev“ dev Koni

    >>>>

    这将创建一个与其中一个交换机端口的 MAC 的桥接接口和一个与同一 MAC 的 VLAN 接口。 遗憾的是、这并未涵盖我们的用例。 我们需要交换机端口“xf2"和“和“xf4"与“与 VLAN 接口“Koni"具有“具有单独的 MAC。 一旦我将 MAC 地址从“Koni"更“更改为非交换机端口 1、我们就会得到复制。

    我也有点困惑的文档,以添加另一个 VLAN (3.2.10.3.2.3.1.CPSWng 本机以太网 — 适用于 TDA4VM 的 Processor SDK Linux 文档)-它指出必须执行这两个命令:

    >>>>

    桥接 VLAN 添加设备 br0 vid 100 self <--添加 VLAN 作为桥
    接入口桥接 VLAN 添加设备 br0 vid 100 pvid 未标记 self <--将 CPU 端口添加到 VLAN100> 

    >>>>

    对我来说、它们都会更改相同的值。 这也可以通过“桥接 VLAN 显示“来观察。 但根据评论和文件,他们做了两个不同的事情,都是必要的。

    1.是否有方法可以在不复制的情况下为交换机端口和 VLAN 接口访问不同的 MAC 地址?

    2. 两个相似的外观命令之间有什么区别?

    此致、

    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthias、

    我们需要交换机端口“xf2"和“和“xf4",“,以便、以便拥有独立于 VLAN 接口“Koni"
    的“的 MAC。

    为什么需要此功能? 通常、网桥将采用一个子接口的硬件地址并进行处理。 桥接器不需要有单独的 MAC 地址。 它不是一个单独的硬件设备。

    实际上、一旦您拥有桥接器、其他硬件接口的 MAC 地址就不会用于任何 L3+。

    目前对于 CPSW 驱动程序、没有回拨来设置网桥的 MAC 地址。 因此、对于路由表、它是一个未知地址、所以它将重复。

    您可以手动将网桥的新 MAC 地址添加到路由表中、这样可以解决该问题。

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    我们使用 CPSW9G 作为 Profinet 开关。 这 要求 VLAN 接口具有与交换机端口不同的 MAC 地址。 桥接器本身的 MAC 地址并不重要。

    你还能对我的第二个问题发表评论吗? 这两个命令之间有什么区别?

    桥接 VLAN 添加设备 br0 vid 100 self <--添加 VLAN 作为桥
    接入口桥接 VLAN 添加设备 br0 vid 100 pvid 未标记 self <--将 CPU 端口添加到 VLAN100> 

    它们似乎设置了相同的值。

    此致、  
    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthias、

    您是否也可以对我的第二个问题发表评论? 这两个命令之间有什么区别?

    因此、第一个命令会将 vid 100 作为 br0(主机)端口的注册 vid 添加到交换机中。

    然后、第二个命令将执行以下两项操作:

    1. 它会将 VLAN id 100 设置为 PVID。 即、来自任何端口的所有流量都将获得 VLAN 标记 100。 它不需要有 PVID 标签。 用户可以将 PVID 保持为 1、这样便可以在之前的命令中完成此操作。
    2. 它将使所有具有 vid 100 出口的数据包成为未标记的数据包。 即、它将删除其用于出口的 VLAN 标记。 这取决于您使用 VLAN 的方式。 如果它用于整个网络、则您希望将其标记、如果它与交换机内部功能有关、则您可以将其标记为未标记。

    希望这澄清了事情。

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    感谢您的答复。  

    这些确实是两个单独的命令? 我确实需要添加不带任何标志的 VID、如“PVID"和“和“Tagged/Untagged",“,然后、然后我必须使用第二个命令更改设置?

    如果我理解正确,我可以省略 PVID。 我可以保持为 1、添加 VID 100 时不必设置。 我也可以根据我的用例使用“已标记/未标记“。

    这些都是有效且必要的命令? 我必须同时运行这两个开关才能正常工作?

    桥接 VLAN 添加 dev br0 vid 100 self bridge vlan
    添加 dev br0 vid 100 标记的 self 

    我在第二条命令中专门使用了已标记/未标记这一事实使 TI 的交换机在应用配置时的行为有所不同?

    我总是认为、省略“untagged"标志“标志会默认将其设置为“tagged"。“。

    此致、
    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mattias:

    如果我理解正确、我可以提交 PVID。 我可以保持为 1、添加 VID 100 时不必设置。 我也可以根据我的用例使用“已标记/未标记“。

    没错。 您可以根据需要定制桥接器接口。

    [引述 userid=“597676" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1547942/dra829j-cpsw9g-behaving-like-a-hub/5990237

    这些都是有效且必要的命令? 我必须同时运行这两个开关才能正常工作?

    [/报价]

    是的。 情况就是这样。

    ]我在第二个命令中专门使用了已标记/未标记这一事实使 TI 的交换机在应用配置时的行为有所不同?

    我需要检查默认行为是什么、但标记与未标记将使交换机的行为不同。

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我需要检查默认行为是什么

    默认值为已标记。 但指定这一点没有什么坏处。

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    我们仍然遇到这方面的问题。 您能否向我提供您的工作配置、以便我可以在我的系统上对其进行测试?

    不知何故、我们遗漏了一些东西、无法将其固定下来。

    此致、

    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthias、

    对不起、当我们谈论另一条关于桥接命令的线程时、我想这个问题已经解决了。 对这种疏忽表示歉意。

    以下是我使用 Linux 内核 6.6.32 测试的确切脚本

    ip link set dev eth1 down
    ip link set dev eth2 down
    ip link set dev eth3 down
    ip link set dev eth4 down
    sleep 1
    
    devlink dev param set platform/c000000.ethernet \
    name switch_mode value true cmode runtime
    
    ethtool -L eth1 tx 8
    ethtool -L eth2 tx 8
    ethtool -L eth3 tx 8
    ethtool -L eth4 tx 8
    sleep 1
    
    ip link add name br0 type bridge
    ip link set dev br0 type bridge ageing_time 1000
    ip link set dev eth1 up
    ip link set dev eth2 up
    ip link set dev eth3 up
    ip link set dev eth4 up
    sleep 5
    ip link set dev eth1 master br0
    ip link set dev eth2 master br0
    ip link set dev eth3 master br0
    ip link set dev eth4 master br0
    
    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 1 untagged self
    sleep 1
    ifconfig eth1 0.0.0.0
    ifconfig eth2 0.0.0.0
    ifconfig eth3 0.0.0.0
    ifconfig eth4 0.0.0.0
    ip link set dev br0 address `ip link show dev eth2 | tail -1 | awk '{print $2}'`
    ifconfig br0 up
    ifconfig br0 192.168.1.240
    

    它就是这个。

    您能检查一下是否只有这个脚本适合您吗? 之后我们可以进一步讨论 MAC 地址管理。

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、 Tanmay

    您是否还可以使用 SDK 11.0 (Linux 内核 6.12.17) 进行测试? 这就是我们在这里运行的操作。

    此致

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daniel:

    [报价 userid=“567658" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1547942/dra829j-cpsw9g-behaving-like-a-hub/6012446

    您是否还可以使用 SDK 11.0 (Linux 内核 6.12.17) 进行测试? 这就是我们在这里运行的操作。

    [/报价]

    当然、我会这么做。 不过、我需要一些时间才能做到这一点。 请期待星期三下周的答复。 同时、如果您在使用此脚本时也遇到问题、请告知我。

    此致、
    Tanmay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    感谢您的配置。 我将在我们的系统上对其进行测试。

    您是否还能为 eth1/eth2 和 eth3/eth4 提供两个单独 VLAN 的有效配置。 由于这更接近我们的用例和器件、我们基本上遇到了所有问题。 很遗憾、对我来说、相关文档对于如何实现此用例的正确开关配置而言不够清晰。

    即:

    - eth1 和 eth2 使用 VID 2 并使用 VID 2 连接到虚拟 VLAN 接口 ife1。 eth1/eth2 上的出口未标记、PVID 为 2。

    - eth3 和 eth4 使用 VID 3 并 通过 VID 3 连接到虚拟 VLAN 接口 ife2。 已标记 eth3/eth4 上的出口、且没有 PVID。

    - br0 没有 IP、并且 iface1 和 iface2 位于两个单独的子网中

    以下是描述我们的场景的图片:

    此致、

    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    开始配置。  

    请尝试实现我描述的用例。

    此致、

    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    我设法进一步调试了我们的问题。

    我扩展了您的设置并添加了一个 VLAN 接口。

    我们在设备树中设置交换机端口的 MAC 地址。 我没有专门设置 br0 或 ife1 的 MAC 地址、因此它们会自动获取其中一个交换机端口的 MAC 地址。
    在此设置中、我们不会在其他交换机端口上进行任何复制。

    遗憾的是、这不能满足 Profinet 的用例。 对于 Profinet、我们将交换机端口 MAC 地址从用户空间更改为其他地址。
    这意味着交换机端口有一个新的 MAC、然后将其自动分配给 br0 和 ife1。 (从技术上讲,这也不能满足我们的 Profinet 用例。 它只是更清楚地指出错误)。
    在这种情况下、我们仅在使用 VID 1 时不会出现重复。 任何其它 VID 都会在其它交换机端口上创建复制。

    在这种情况下、如果我们将内核中的 FDB 条目与交换机上的 ALE 条目进行比较、我们会看到 FDB 中有一个具有新 MAC 地址和新 VID 的条目、但 ALE 中缺少该条目。

    对于 VID 1、FDB 条目显示在 ALE 中。 但对于任何其他 VID、它们都丢失了。

    具有新 MAC 的 FDB 条目:

    00:60:c8:05:fd:04 dev eth1 vlan 2 master br0 permanent
    00:60:c8:05:fd:04 dev eth1 vlan 1 master br0 permanent
    00:60:c8:05:fd:04 dev eth1 master br0 permanent

    只有新 MAC 的 ALE 条目适用于 VID 1:

    6: Type: Unicast
            VID = 1, Address = 00:60:c8:05:fd:04, Unicast_type = Persistent, port_num = 0x0, Secure = 1, Blocked = 1, Touch = 0, Agable = 0

    因此、似乎 FDB 和 ALE 之间的 LEARNING_SYNC 无法正常工作。 TI 的开关驱动器不会应用与 br0 相关的新 FDB 条目。

    您能否确认我在您的设置中的观察结果?

    此致、
    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好!

    • 让我检查并验证桥接器接口对 FDB 的支持程度。
    • 我还将检查我们是否可以使用桥接命令控制每个端口 PVID。
    • 还将检查每个端口出口的未标记掩码。

    星期二将在这些问题上回复您。

    此致、
    Tamnay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tanmay、

    有新消息吗?

    此致、

    Matthias

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthias、

    在接口上添加 VLAN 时、可以添加适当的命令来添加第 2 点和第 3 点。

    例如: bridge vlan add dev eth1 vid 2 pvid 2 untagged self

    要将网桥的 MAC 地址添加到 ALE、您可以尝试使用以下修补程序:

    diff --git a/drivers/net/ethernet/ti/am65-cpsw-switchdev.c b/drivers/net/ethernet/ti/am65-cpsw-switchdev.c
    index d4c56da98a6a..ef8e18691a1a 100644
    --- a/drivers/net/ethernet/ti/am65-cpsw-switchdev.c
    +++ b/drivers/net/ethernet/ti/am65-cpsw-switchdev.c
    @@ -180,9 +180,12 @@ static int am65_cpsw_port_vlan_add(struct am65_cpsw_port *port, bool untag, bool
                    return ret;
            }
    
    -       if (cpu_port)
    +       if (cpu_port) {
                    cpsw_ale_add_ucast(cpsw->ale, port->slave.mac_addr,
                                       HOST_PORT_NUM, ALE_VLAN | ALE_SECURE, vid);
    +               cpsw_ale_add_ucast(cpsw->ale, orig_dev->dev_addr,
    +                                  HOST_PORT_NUM, ALE_VLAN | ALE_SECURE, vid);
    +               }
            if (!pvid)
                    return ret;
    

    这将处理第一点。

    此致、
    Tanmay