shocking 发表于 2021-6-17 09:43:09

使用brctl建网桥时,当分别把2个端口加到2个网桥配成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-kernel\net\bridge下面的br_if.c里面的函数br_add_if里面的 err = netdev_master_upper_dev_link(dev, br->dev, NULL, NULL, extack);这句调用出错,这个函数在net\core\dev.c里面的        调用 ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,&changeupper_info.info); 这个函数返回-19
能问下这是什么问题导致的吗 ?怎么修改 ?谢谢


djh 发表于 2021-6-17 14:40:08

本帖最后由 djh 于 2021-6-17 14:41 编辑

我烧写的是我们的出厂镜像测试的,您是自己编译的镜像吗?
您的具体需求是什么啊?您能描述一下您的应用场景吗?
我在板子上测试了一下,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


shocking 发表于 2021-6-17 15:05:36

本帖最后由 shocking 于 2021-6-17 15:30 编辑

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

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

netdev_master_upper_dev_link这个函数在net\core\dev.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:accessswp2:accessswp3: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的命令是什么?





djh 发表于 2021-6-17 15:34:23

shocking 发表于 2021-6-17 15:05
您好,就是想把swp0-swp3这四个switch网口添加到不同的网桥当中,因为交换机假如有5个口,第1个口可以以acc ...

您好,这个问题已跟我们的研发反馈了,但不能确定什么时候能解决,
还有能问一下,您打算设计什么样的产品啊?实现什么功能?

shocking 发表于 2021-6-17 15:37:23

djh 发表于 2021-6-17 15:34
您好,这个问题已跟我们的研发反馈了,但不能确定什么时候能解决,
还有能问一下,您打算设计什么样的产 ...

就是普通的交换机vlan功能,麻烦能回答下我上面帖子请教的2,3问题吗那些个把网口以access加入vlan和以trunk加入vlan的命令 以及某个端口配置trunk native vlan的详细命令吗?谢谢啦

djh 发表于 2021-6-17 15:46:26

您好按照您的操作,测试结果如下,但没有出现您的那些报错信息,我烧写的是我们的出厂镜像,您是用的我们的出厂镜像吗?
反馈问题的话,我需要复现一下问题,您是这么做的吗?

shocking 发表于 2021-6-17 15:49:00

djh 发表于 2021-6-17 15:46
您好按照您的操作,测试结果如下,但没有出现您的那些报错信息,我烧写的是我们的出厂镜像,您是用的我们的 ...

是用的你们的镜像,只不过我在内核源码里面加了一些打印信息。 能请教下我在三楼问的那些命令吗 谢谢

djh 发表于 2021-6-17 16:01:20

shocking 发表于 2021-6-17 15:49
是用的你们的镜像,只不过我在内核源码里面加了一些打印信息。 能请教下我在三楼问的那些命令吗 谢谢

抱歉,这个我们这边没做过,对于这些命令的研究不深入,也不知道这个命令是什么,您可以在网上找找相关的资料吧

shocking 发表于 2021-6-17 16:24:58

djh 发表于 2021-6-17 16:01
抱歉,这个我们这边没做过,对于这些命令的研究不深入,也不知道这个命令是什么,您可以在网上找找相关的 ...

好吧,如果这个加桥报错的问题有啥进展 麻烦告知我下哈 谢谢~

djh 发表于 2021-6-19 09:55:02

shocking 发表于 2021-6-17 16:24
好吧,如果这个加桥报错的问题有啥进展 麻烦告知我下哈 谢谢~

好,如果您那边先有进展的话,希望您也能告诉我一下。
Thanks!

shocking 发表于 2021-6-25 10:04:42

您好 版主有啥更新吗?

djh 发表于 2021-6-25 11:58:20

shocking 发表于 2021-6-25 10:04
您好 版主有啥更新吗?

目前没有有效的进展;我这边还有其他平台的问题处理,进度会很慢,但找了一些参考资料,您也可以看看:
https://blog.csdn.net/shipinsky/article/details/114155959?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.base

shocking 发表于 2021-6-25 15:27:37

djh 发表于 2021-6-25 11:58
目前没有有效的进展;我这边还有其他平台的问题处理,进度会很慢,但找了一些参考资料,您也可以看看:
...

好的 谢谢~有消息通知下哈,等着米下锅呢:'(
页: [1]
查看完整版本: 使用brctl建网桥时,当分别把2个端口加到2个网桥配成access口报错