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.

[参考译文] DRA821U:在本机以太网基础上(交换机模式)、L3数据包(ICMP)无法正常工作。

Guru**** 2457760 points
Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1464423/dra821u-on-native-ethernet-basis-switch-mode-l3-packet-icmp-does-not-work-properly

器件型号:DRA821U
主题中讨论的其他器件:DRA821TDA4VM

工具与软件:

你(们)好

我们将检查本机以太网行为。

SDK 版本是10.01。

我在本机以太网配置中设置了交换机模式。

我已使用网桥配置 L2泛洪域(VLAN 100)。

要启用 L3通信、我为 VLAN 100接口分配了一个 IP 地址、如下所示:

ip link add name br0 type bridge vlan_filtering 1
bridge vlan add dev br0 vid 100 self
bridge vlan del dev br0 vid 1 self
ip link set dev br0 type bridge ageing_time 1000

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

bridge vlan add dev eth1 vid 100 pvid untagged
bridge vlan add dev eth2 vid 100 pvid untagged
bridge vlan add dev eth3 vid 100 pvid untagged
bridge vlan add dev eth4 vid 100 pvid untagged
bridge vlan del dev eth1 vid 1
bridge vlan del dev eth2 vid 1
bridge vlan del dev eth3 vid 1
bridge vlan del dev eth4 vid 1

ip link set dev eth1 up
ip link set dev eth2 up
ip link set dev eth3 up
ip link set dev eth4 up
ip link set dev br0 up


ip link add link br0 name br0.100 type vlan id 100
ip addr add 192.168.200.1/24 dev br0.100
ip link set br0.100 up

- L2交换工作正常。
- L3通信(ICMP)工作正常。

但是、要为 L2数据包启用硬件转发、我应用了以下设置:

"DevLink 开发参数设置 platform/c000000.ethernet 名称 switch_mode 值 true cmode runtime"

- L2切换继续正常工作。
- L3通信(ICMP)不再工作。

在为 L2数据包使用硬件转发时、我应该如何确保 L3 (ICMP)数据包正常工作?

此致。

Dohyeon.Kim

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

    您好!

    将以太网接口添加到桥接器时、您是否可以 对所有四个端口使用"桥接 VLAN add dev eth1 vid 100 PVID unsigned master "。 您提供的脚本中缺少"master"。

    此致、
    Tanmay

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

    您好!

    我将其更改为"网桥 VLAN add dev eth1 vid 100 PVID unsigned master "、但症状相同。

    - L2切换继续正常工作。
    - L3通信(ICMP)不再工作。

    此致、

    Dohyeon.Kim

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

    您好、Tanmay

    非常感谢您的大力支持。  

    这一问题对他们至关重要、因为它已经搁置了两周。

    似乎硬件交换机通常处理硬件中的 L2转发(例如 VLAN、桥接)。 但是 L3转发(例如 ICMP)通常由 CPU 处理、除非硬件支持 L3卸载。 是这样吗?

    您能否检查 DRA821开关是否能够支持 L3卸载、这意味着启用 SWITCH_MODE 可能会禁用 L3功能、因为硬件无法处理 L3数据包。

    如果不支持 L3卸载、它们可能需要确保 L3数据包由 CPU 处理。 这可以通过禁用 L3流量的硬件转发、同时保持 L2流量的硬件转发来实现。   

    他们可以尝试为 L3流量禁用 SWITCH_MODE:

    $ devlink dev param set platform/c000000.ethernet name switch_mode value 错误 cmode runtime

    或者、配置系统以确保 L3数据包通过 CPU 路由。 这可能涉及设置适当的路由或防火墙规则来绕过 L3通信的硬件转发。

    如果 L2需要硬件转发、但 L3不需要、您可以使用硬件和软件桥接的组合。 例如:

    -使用硬件转发进行 L2交换( VLAN、桥接)。

    -对 L3流量使用基于软件的路由(例如 ICMP、IP 路由)。

    总之、 如果您需要对其进行设置、以便 L2流量由硬件处理、L3流量由 CPU 处理、您可以采取什么措施来实现这一点?

    1.将 L3通信转发到 CPU
    启用 SWITCH_MODE 后、检查路由设置以确保 L3流量转发到 CPU。

    例如、确保 CPU 通过分配给 VLAN 接口(br0.100)的 IP 地址(192.168.200.1/24)处理 L3流量。

    $ IP 路由通过192.168.200.1 dev br0.100添加默认值

    2.为 L3流量禁用 SWITCH_MODE
    仅针对 L3流量禁用 SWITCH_MODE、允许由 CPU 处理。

    此设置确保 L2通信由硬件处理、L3通信由软件处理。

    $ devlink dev param set platform/c000000.ethernet name switch_mode value 错误 cmode runtime

    3、软件桥接与硬件转发的结合
    让我们来设置 L2流量由硬件交换机处理、L3流量由软件桥接处理。

    为此、我们使用 VLAN 接口(br0.100)将 L3流量转发到 CPU。

    ip link add link br0 name br0.100 type vlan id 100
    ip addr add 192.168.200.1/224 dev br0.100
    IP 链路设置 br0.100启动

    换言之、
    L2流量由硬件交换机处理、L3流量由 CPU 处理。

    在启用 SWITCH_MODE 的情况下、配置路由或 VLAN 接口以将 L3流量转发到 CPU。

    如果硬件交换机不支持 L3卸载、则必须在软件中处理 L3通信。

    这些设置允许您同时使用 L2硬件转发和 L3软件处理。

    请告诉我以上方向是否值得尝试。

    谢谢。

    此致、  

    插孔

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

    您好!

    您能否检查 DRA821交换机是否能够支持 L3卸载?这意味着启用 switch_mode 可能会禁用 L3功能、因为硬件无法处理 L3数据包。

    事实并非如此。 L3转发仅由软件处理。 硬件不会执行这种操作。 硬件在交换机模式下的功能是根据 L2单播地址进行转发。 如果在此处使用多路广播转发、软件也会将其设为默认值。

    您是否可以尝试在添加桥接接口之前更改为开关模式。

    我在设置中看不到使用桥接器处理 L3流量的软件出现问题。

    此致、
    Tanmay

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

    您好!

    请分享您测试的设置、包括测试结果日志。
    我会在 EVM 上检查它们。

    此致、

    Dohyeon.Kim

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

    您好!

    测试结果是否尚未准备就绪?

    此致、

    Dohyeon.Kim

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

    您好!

    很抱歉耽误你的时间。

    所以我的测试设置如下所示:

    TDA4VM <=> DRA821 <=> PC

    DRA821将拥有桥。

    我运行的命令如下:

    ip link set dev eth1 down
    ip link set dev eth2 down
    ip link set dev eth3 down
    ip link set dev eth4 down
    
    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 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 untagged self
    
    ip link set dev br0 address `ip link show dev eth2 | tail -1 | awk '{print $2}'` #this is for something else I was testing and is not mandatory
    ifconfig br0 192.168.1.240
    ifconfig eth2 0.0.0.0
    

    要在 TDA4VM 上创建值界面、 我使用

    ip link add link eth1 name eth1.100 type vlan id 100
    ifconfig eth1.100 192.168.5.10

    要在 DRA821上创建 VLAN 接口、我使用

    ip link add link br0 name br0.100 type vlan id 100
    ifconfig br0.100 192.168.5.240

    在 PC 上、还要创建一个 VLAN 接口、并在同一子网"192.168.5.xxx"中为其分配 IP addr。

    然后、您应该能够将 ICMP 数据包从 TDA4VM 发送到 PC

    请注意,在我刚才的解释中有一个轻微的误解。 只要数据包是单播的、交换就会在硬件本身进行。 即使来自 L3数据包也是如此。 在这种情况下、您根本无法在桥接接口上捕获数据包。 因此、从 TDA4VM 发送的任何带有 PC 目标 MAC 地址的数据包都不会在 A72 DRA821上被捕获。 这就是任何典型开关的工作原理。 您可以松散地根据 DRA821上的统计计数来跟踪回退集、但您将无法使用 A72来修改数据包。

    严格来说、对于转发、单播数据包应该没有任何问题。

    现在、除非为其它端口设置了 mdb 条目、否则默认情况下、多路广播包都将转发到主机端口。

    这里的用例到底是什么?

    此致、
    Tanmay

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

    你(们)好

    正如您告诉我的、我按下图所示配置了测试。

    PC1 <->PC2:L3 (ICMP) 工作。
    PC1 <->EVM:L3 (ICMP)不工作。
    PC2 <->EVM:L3 (ICMP)不工作。

    从 EVM ping PC1后、PC1上的 tcpdump 检查无 packet RX。

    我们希望从 EVM ping PC1和 PC2时工作正常。

    如上所述、当您设置本机以太网模式和 SWITCH_MODE 时、网桥接口参考 L3 (ICMP)是否正常运行?

    此致、

    Doyeon

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

    您好!

    当您说"无法正常工作"时、您是否只是在尝试对接口执行 ping 操作? 或者您是否正在运行其他测试?

    此致、
    Tanmay

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

    您好!

    "不工作"表示我尝试了 Ping (ICMP)。
    如您所知、Ping (ICMP)的运行需要 ARP 分辨率。
    ARP 分辨率也不起作用。

    此致、

    Doyeon

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

    您好!

    您可以使用"ethtool -S $if_name"获取以太网统计信息

    在 ping 操作之前和之后、您能否获得 eth1和 eth4的统计数据并进行比较。

    此致、
    Tanmay

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

    您好!

    您测试的配置 TDA4VM <-> DRA821 (本机以太网和交换机模式)
    从 DRA821 ping 到 TDA4VM 时、回复是否正常?
    请分享您的测试结果。

    此致、

    Doyeon

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

    尊敬的 Dohyeon:

    从 DRA821 ping 到 TDA4VM 时、回复是否正常?

    ARP 解析和 ping 响应均无问题。

    我目前没有器件、我将在有机会在我的设置中再次运行这个后分享。

    在您的案例中、我想知道的是数据包、ARP 或 ICMP 请求是否到达 Linux。

    在 ping 之前和之后、您能否获得 eth1和 eth4的统计数据并进行比较。

    您能提供这一点吗?

    此致、
    Tanmay