瑞芯微Rockchip开发者社区
直播中

王凯

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

所有的端口只能以access口加入到一个网桥里面吗

使用的OK1028-linux-fs源码,Linux version 5.4.3-svn42 (root@ubuntu) (gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)) #1 SMP PREEMPT Wed Jun 16 16:17:37 +08 2021
我想使用brctl建立2个网桥,然后把2个端口以access口分别加入这2个网桥,当加入第二个的时候报错,所有的端口只能以access口加入到一个网桥里面,能请教下吗?命令如下
vconfig add swp0 100
ifconfig swp0 up
brctl addbr br100
brctl addif br100 swp0
ifconfig br100 up

vconfig add swp1 200
ifconfig swp1 up
brctl addbr br200
brctl addif br200 swp1
ifconfig br200 up

出错信息如下:
root@forlinx:~# ifconfig swp1 up
root@forlinx:~# brctl addbr br200
root@forlinx:~# brctl addif br200 swp1
--ifindex:5,dev:[   56.114381] mscc_felix 0000:00:00.5 swp1: 1========br_add_if:
swp1
++ifindex:5,ENODEV:19,ifr.ifr_name:br200
[   56.125580] mscc_felix 0000:00:00.5 swp1: 2========br_add_if:
[   56.133000] mscc_felix 0000:00:00.5 swp1: 3========br_add_if:
[   56.139786] mscc_felix 0000:00:00.5 swp1: 4========br_add_if:
[   56.146351] mscc_felix 0000:00:00.5 swp1: 5========br_add_if:
[   56.152944] mscc_felix 0000:00:00.5 swp1: 6========br_add_if:
[   56.159491] mscc_felix 0000:00:00.5 swp1: 7========br_add_if:
[   56.165983] mscc_felix 0000:00:00.5 swp1: 8========br_add_if:
[   56.172437] 21====__netdev_upper_dev_link:1
[   56.177990] 22====__netdev_upper_dev_link:0
[   56.182434] 23====__netdev_upper_dev_link:0
[   56.186828] 24====__netdev_upper_dev_link:-19
[   56.191457] 27====__netdev_upper_dev_link:-19
[   56.195858] mscc_felix 0000:00:00.5 swp1: 9========err:-19
[   56.201467] mscc_felix 0000:00:00.5 swp1: 14========br_add_if:
--========br_soc[   56.207858] mscc_felix 0000:00:00.5 swp1: 1========br_add_if:
ket_fd:3,err:-1,[   56.215490] mscc_felix 0000:00:00.5 swp1: 2========br_add_if:
dev:swp1,errno:1[   56.222696] mscc_felix 0000:00:00.5 swp1: 3========br_add_if:
9
[   56.229943] mscc_felix 0000:00:00.5 swp1: 4========br_add_if:
[   56.236201] mscc_felix 0000:00:00.5 swp1: 5========br_add_if:
[   56.242492] mscc_felix 0000:00:00.5 swp1: 6========br_add_if:
[   56.248723] mscc_felix 0000:00:00.5 swp1: 7========br_add_if:
[   56.254935] mscc_felix 0000:00:00.5 swp1: 8========br_add_if:
[   56.261152] 21====__netdev_upper_dev_link:1
[   56.265439] 22====__netdev_upper_dev_link:0
[   56.269755] 23====__netdev_upper_dev_link:0
[   56.274117] 24====__netdev_upper_dev_link:-19
[   56.278595] 27====__netdev_upper_dev_link:-19
[   56.283074] mscc_felix 0000:00:00.5 swp1: 9========err:-19
[   56.289185] mscc_felix 0000:00:00.5 swp1: 14========br_add_if:
--++++br_socket_fd:3,err:-1,dev:swp1,errno:19
bridge br200 does not exist,ifname index:5,ifname:swp1,err is:19,brname index:12

通过追踪发现OK1028-linux-kernelnetbridge下面的br_if.c里面的函数br_add_if里面的 err = netdev_master_upper_dev_link(dev, br->dev, NULL, NULL, extack);这句调用出错,这个函数在netcoredev.c里面的        调用 ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,&changeupper_info.info); 这个函数返回-19
能问下这是什么问题导致的吗 ?怎么修改 ?谢谢













回帖(3)

王强

2021-12-31 11:31:28
我烧写的是我们的出厂镜像测试的,您是自己编译的镜像吗?
您的具体需求是什么啊?您能描述一下您的应用场景吗?
我在板子上测试了一下,swp0-swp3这四个switch网口只能添加一个到网桥中,具体原因现在还不清楚,这个switch 可能和其他独立的网口有区别;
但可以将eno0t添加到网桥br200中,不知这样能不能满足您的需求如下所示:
root@forlinx:~# vconfig add swp0 100
Added VLAN with VID == 100 to IF -:swp0:-
root@forlinx:~# ifconfig swp0 up
root@forlinx:~# brctl addbr br100
root@forlinx:~# brctl addif br100 swp0
root@forlinx:~# ifconfig br100 up
root@forlinx:~# vconfig add eno0 200
Added VLAN with VID == 200 to IF -:eno0:-
root@forlinx:~# ifconfig eno0 up
root@forlinx:~# brctl addbr br200
root@forlinx:~# brctl addif br200 eno0
root@forlinx:~# ifconfig br200 up
root@forlinx:~# brctl show
bridge name     bridge id               STP enabled     inte**ces
br100           8000.ae6af6a00920      no                  swp0
br200           8000.3221262b515c       no                eno0
docker0         8000.0242a53af8f9       no
举报

唐行轲

2021-12-31 11:32:02
您好,就是想把swp0-swp3这四个switch网口添加到不同的网桥当中,因为交换机假如有5个口,第1个口可以以access模式加到vlan100,2口可以以access模式加到vlan200,3口可以以access模式加到vlan300 这是很常见的需求吧
我试了在ubuntu系统里面把不同的网卡加到不同的网桥是可以的,不知道为啥板子里面swp0-swp3只能加到一个网桥

至于您说的swp0-swp3这四个switch网口只能添加一个到网桥中,具体原因现在还不清楚,我已经跟到OK1028-linux-kernel里面的代码了,原因如下:
通过追踪发现OK1028-linux-kernelnetbridge下面的br_if.c里面的函数br_add_if里面的 err = netdev_master_upper_dev_link(dev, br->dev, NULL, NULL, extack);这句调用出错,

netdev_master_upper_dev_link这个函数在netcoredev.c里面的        调用 ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,&changeupper_info.info); 这个函数返回-19

最终可能想实现这样的 :root@forlinx:~# brctl show
bridge name     bridge id               STP enabled     inte**ces
br100           8000.1636ad6de5ed       no              swp0
br200           8000.1636ad6de5ed       no              swp1
                                                                              swp2
                                                                              swp3.200
docker0         8000.0242dc4cb099       no
br100里面swp0:access
br200里面swp1:access  swp2:access  swp3:trunk


1.因为call_netdevice_notifiers_info这个函数出错导致的直接跳到异常处理代码 所以报错,能请你们开发看看原因吗? 怎么解决这个BUG
2.我们的需求就是swp0-swp3和eno0当作交换机的5个网口,每个口可以以access模式任意加到不同的vlan, 或者能请教下  怎么把网口以access或者trunk模式配置到vlan里面,能具体给出命令吗? 比如swp0:access 加到vlan100,     swp1:access swp2:trunk 加到vlan200, 能给出这2个需求的命令吗?

3.另外再请教个某个端口配置trunk native vlan的命令是什么?
举报

张瑞娟

2021-12-31 11:32:51

  • 您好按照您的操作,测试结果如下,但没有出现您的那些报错信息,我烧写的是我们的出厂镜像,您是用的我们的出厂镜像吗?
    反馈问题的话,我需要复现一下问题,您是这么做的吗?
    添加网桥.png (47.04 KB, 下载次数: 5)
    下载附件


举报

更多回帖

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