嵌入式爱好者

查看: 30668|回复: 9

[Ubuntu] MAC表刷新的问题

[复制链接]

2

主题

4

帖子

11

积分

扫一扫,手机访问本帖
发表于 2021-6-30 09:38:09 | 显示全部楼层 |阅读模式
你好,我在使用OK1028A板子时发现一个问题:
配置了一个bridge,把所有口(eno0,swp0-3)都加入这个网桥。
将PC先接到swp0上,bridge fdb show里面查到了两条mac表(一条在bridge上,一条在swp0上切类型为self):
root@forlinx:~# bridge fdb | grep 0a:35
00:e0:99:00:0a:35 dev swp0 vlan 100 master Bridge
00:e0:99:00:0a:35 dev swp0 vlan 100 self
root@forlinx:~#

然后拔掉PC的网线,还剩下一条mac表(self类型的那条),并且永远不老化:
root@forlinx:~# bridge fdb | grep 0a:35
00:e0:99:00:0a:35 dev swp0 vlan 100 self
root@forlinx:~#

然后PC接到eno0上,又生成了一条新的mac表,但是上面那条仍然存在,并没有刷新,这样就会导致流量转发出问题。
root@forlinx:~# bridge fdb | grep 0a:35
00:e0:99:00:0a:35 dev eno0 vlan 100 master Bridge
00:e0:99:00:0a:35 dev swp0 vlan 100 self

root@forlinx:~#

另外:如果PC只是在swp0~3之间切换,mac表可以正常刷新的。感觉就是swp口与eno0之间切换会出问题。请帮忙看看啥原因?
回复

使用道具 举报

0

主题

471

帖子

919

积分

发表于 2021-6-30 17:07:56 | 显示全部楼层
您能发一下您详细的操作指令吗?我这边复现一下
点评回复 支持 反对

使用道具 举报

2

主题

4

帖子

11

积分

 楼主| 发表于 2021-7-1 16:56:00 | 显示全部楼层
操作很简单,就是把eno0和swp0~3全部加入bridge中,然后按照上面的步骤操作一下,就能复现:
ip link set eno0 up
ip link set eno2 up
ip link set swp0 up
ip link set swp1 up
ip link set swp2 up
ip link set swp3 up
ip link add Bridge up type bridge vlan_filtering 1
ip link set eno0 master Bridge
ip link set swp0 master Bridge
ip link set swp1 master Bridge
ip link set swp2 master Bridge
ip link set swp3 master Bridge
bridge vlan add vid 100 dev Bridge self
bridge vlan add vid 100 dev eno0 master pvid untagged
bridge vlan add vid 100 dev swp0 master pvid untagged
bridge vlan add vid 100 dev swp1 master pvid untagged
bridge vlan add vid 100 dev swp2 master pvid untagged
bridge vlan add vid 100 dev swp3 master pvid untagged



root@forlinx:~# brctl show
bridge name     bridge id               STP enabled     inte**ces
Bridge          8000.1636ad6de5ed       no              eno0
                                                        swp0
                                                        swp1
                                                        swp2
                                                        swp3
docker0         8000.0242e37c4144       no
root@forlinx:~# bridge vlan
port    vlan ids
eno0     1 Egress Untagged
         100 PVID Egress Untagged

swp0     1 Egress Untagged
         100 PVID Egress Untagged

swp1     1 Egress Untagged
         100 PVID Egress Untagged

swp2     1 Egress Untagged
         100 PVID Egress Untagged

swp3     1 Egress Untagged
         100 PVID Egress Untagged

docker0  1 PVID Egress Untagged

Bridge   1 PVID Egress Untagged
         100

点评

djh
我在执行下列命令的过程中,出现了报错: root@forlinx:~# bridge vlan add vid 100 dev swp0 master pvid untagged [ 209.302944] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1 [ 209.309611]  详情 回复 发表于 2021-7-5 10:55
点评回复 支持 反对

使用道具 举报

0

主题

471

帖子

919

积分

发表于 2021-7-5 10:55:19 | 显示全部楼层
Jorvi 发表于 2021-7-1 16:56
操作很简单,就是把eno0和swp0~3全部加入bridge中,然后按照上面的步骤操作一下,就能复现:
ip link set  ...

我在执行下列命令的过程中,出现了报错:
root@forlinx:~# bridge vlan add vid 100 dev swp0 master pvid untagged
[  209.302944] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[  209.309611] mscc_felix 0000:00:00.5: Failed to add VLAN 100 to port 0: -16
[  209.317637] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[  209.324708] mscc_felix 0000:00:00.5: Failed to add VLAN 100 to port 4: -16
root@forlinx:~# bridge vlan add vid 100 dev swp1 master pvid untagged
[  265.085154] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[  265.091739] mscc_felix 0000:00:00.5: Failed to add VLAN 100 to port 1: -16
[  265.098665] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[  265.105224] mscc_felix 0000:00:00.5: Failed to add VLAN 100 to port 4: -16
root@forlinx:~# bridge vlan add vid 100 dev swp2 master pvid untagged
[  273.630731] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[  273.637311] mscc_felix 0000:00:00.5: Failed to add VLAN 100 to port 2: -16
[  273.644244] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[  273.650823] mscc_felix 0000:00:00.5: Failed to add VLAN 100 to port 4: -16
root@forlinx:~# bridge vlan add vid 100 dev swp3 master pvid untagged
[  278.387161] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[  278.393733] mscc_felix 0000:00:00.5: Failed to add VLAN 100 to port 3: -16
[  278.401709] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[  278.408752] mscc_felix 0000:00:00.5: Failed to add VLAN 100 to port 4: -16
点评回复 支持 反对

使用道具 举报

4

主题

19

帖子

44

积分

发表于 2021-7-6 13:28:00 | 显示全部楼层
这为啥会报错?貌似应该是BUG,实际上配置已经在端口上了 但是没生效

点评

djh
您那边进展怎么样啊?  详情 回复 发表于 2021-7-6 15:20
点评回复 支持 反对

使用道具 举报

0

主题

471

帖子

919

积分

发表于 2021-7-6 15:20:50 | 显示全部楼层
shocking 发表于 2021-7-6 13:28
这为啥会报错?貌似应该是BUG,实际上配置已经在端口上了 但是没生效

您那边进展怎么样啊?
点评回复 支持 反对

使用道具 举报

4

主题

19

帖子

44

积分

发表于 2021-7-6 19:12:06 | 显示全部楼层
每次配PVID时候都会报错
[  209.302944] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[  209.309611] mscc_felix 0000:00:00.5: Failed to add VLAN 100 to port 0: -16
[  209.317637] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[  209.324708] mscc_felix 0000:00:00.5: Failed to add VLAN 100 to port 4: -16

能请你们开发看看吗?

点评

djh
修改一下驱动: +++ b/drivers/net/ethernet/mscc/ocelot.c @@ -238,12 +238,12 @@ static int ocelot_port_set_native_vlan(struct ocelot *ocelot, int port, if (ocelot_port->vid != vid) {  详情 回复 发表于 2021-7-16 16:48
点评回复 支持 反对

使用道具 举报

0

主题

471

帖子

919

积分

发表于 2021-7-16 16:48:25 | 显示全部楼层
shocking 发表于 2021-7-6 19:12
每次配PVID时候都会报错
[  209.302944] mscc_felix 0000:00:00.5: Port already has a native VLAN: 1
[ ...

修改一下驱动:
+++ b/drivers/net/ethernet/mscc/ocelot.c
@@ -238,12 +238,12 @@ static int ocelot_port_set_native_vlan(struct ocelot *ocelot, int port,

        if (ocelot_port->vid != vid) {
                /* Always permit deleting the native VLAN (vid = 0) */
-               if (ocelot_port->vid && vid) {
+               /*if (ocelot_port->vid && vid) {
                        dev_err(ocelot->dev,
                                "Port already has a native VLAN: %d\n",
                                ocelot_port->vid);
                        return -EBUSY;
-               }
+               }*/
                ocelot_port->vid = vid;
        }

点评

好的谢谢您 我去试试  详情 回复 发表于 2021-7-17 09:05
点评回复 支持 反对

使用道具 举报

4

主题

19

帖子

44

积分

发表于 2021-7-17 09:05:44 | 显示全部楼层
djh 发表于 2021-7-16 16:48
修改一下驱动:
+++ b/drivers/net/ethernet/mscc/ocelot.c
@@ -238,12 +238,12 @@ static int ocelot_ ...

好的谢谢您
我去试试
点评回复 支持 反对

使用道具 举报

2

主题

4

帖子

11

积分

 楼主| 发表于 2021-7-17 14:36:17 | 显示全部楼层
谢谢!我们可以先试一下这个改动的影响。
但是MAC表刷新的问题,还没有解决哦。
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-24 23:15

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表