NXP MCU 技术论坛
直播中

李玉兰

7年用户 1460经验值
私信 关注
[问答]

流量在级联的SJA1105Q交换芯片之间变为广播是为什么?

我正在设置 2 个带 imx8mp 主板的级联 SJA1105Q 芯片。我们设法升级到 linux 内核 6.1.1 以获得更多 SJA1105Q DSA 驱动程序更新。现在我们可以让级联的DSA设置工作,但发现一个奇怪的现象,所有通过SJA1105的数据包都被转换为广播数据包。
    基本上,我们使用2个SJA1105芯片级联,swp0~swp2在第一个芯片上,swp3~swp6在第二个芯片上。您可以参考随附的 DTS 代码段以获取更多连接详细信息:
    swp0 是所谓的“上端口”,它连接到 PC,应该将镜像数据包发送到。我使用以下 TC 命令并尝试将所有数据包镜像到/从某个特定端口(在本例中为 swp3)到 swp0。

tc qdisc add dev swp3 clsact
tc filter add dev swp3 ingress matchall skip_sw action mirred egress mirror dev swp0
tc filter add dev swp3 egress matchall skip_sw action mirred egress mirror dev swp0
    配置如下。我在这些端口后面使用笔记本电脑相互 ping,然后在 swp0 上捕获数据包以验证结果。

ip link set eth0 up
ip link set swp0 up
ip link set swp1 up
ip link set swp2 up
ip link set swp3 up
ip link set swp4 up
ip link set swp5 up
ip link set swp6 up
ip link add name br0 type bridge
ip link set dev swp0 master br0
ip link set dev swp1 master br0
ip link set dev swp2 master br0
ip link set dev swp3 master br0
ip link set dev swp4 master br0
ip link set dev swp5 master br0
ip link set dev swp6 master br0

ip addr add 172.100.9.128/24 dev br0
ip link set dev br0 up
测试结果如下:


  • 如果被监视的端口在第一个芯片上,则端口镜像工作正常。
更详细地:

A。如果两端都在第一个芯片上(唯一的情况是:swp1 ping swp2,将swp1镜像到swp0),就可以了;

b. 如果通信的一端不在第一个芯片上(例如 swp1 ping swp3,镜像 swp1 到 swp0),我可以捕获 swp0 和 swp2 上的 ICMP 数据包,即使没有端口镜像配置 。(此行为可能暗示跨芯片数据包被广播?)



  • 如果被监控的端口不在第一个芯片上(例如 swp4 ping swp3,将 swp4 镜像到 swp0),端口镜像将无法工作
但在进一步的测试中,我发现如果我将目标更改为同一芯片上的端口(例如 swp4 ping swp3,镜像 swp4 到 swp5),端口镜像仍然可以正常工作。


     我想知道我是否使用了正确的配置,如果是这样,是否所有上述行为都是预期的?

     

更多回帖

发帖
×
20
完善资料,
赚取积分