[OpenWrt-Devel] [PATCHv2] Allow VLAN filtering if needed.

Daniel Golle daniel at makrotopia.org
Thu Nov 15 13:58:07 EST 2018


Hi Jonathan,

On Thu, Nov 15, 2018 at 11:12:54AM -0500, Jonathan Thibault wrote:
> Greetings,
> 
> I would like to propose enabling CONFIG_BRIDGE_VLAN_FILTERING on OpenWRT
> releases.

I've suggested that already about a year ago. Now that a significant
amount of targets uses DSA this is even more needed and I think we
should enable it now before the 2019 release is coming up.

> 
> This allows us to use the bridge as a managed switch and gracefully handle
> mixed tagged and untagged frames. Prior to this, the only alternative was
> creating one bridge per vlan which quickly becomes a nightmare and still
> won't let you mix both tagged and untagged frames on the physical port
> without some complex ebtables magic.
> 
> This is in line with the notion that OpenWRT is the network go-to swiss army
> knife when you need a nice set-and-forget, low maintenance box to handle a
> specific task.
> 
> Current builds of the ip-bridge package already fully support this feature
> so the only requirement is enabling the kernel config.
> 
> This is disabled by default so existing bridge configurations will not be
> affected.  This patch only gives the ability to turn it on with an 'ip link'
> command.  If there is interest, I could look into making the feature
> accessible via uci configuration.
> 
> It causes about 3.1% hit on raw bridging speed, which is relatively trivial
> considering that I had to use 300 byte packets to strain the CPU enough to
> notice a slowdown at all.  The ER8 would chug along at wire speed otherwise,
> and that's using only one core.  Since the typical bridge use case on
> OpenWRT is wireless, I doubt it would be noticeable at all.
> 
> With BRIDGE_VLAN_FILTERING
> 
> iperf -u -c 192.168.1.105 -b 1G -l 300
> ------------------------------------------------------------
> Client connecting to 192.168.1.105, UDP port 5001
> Sending 300 byte datagrams, IPG target: 2.24 us (kalman adjust)
> UDP buffer size:  208 KByte (default)
> ------------------------------------------------------------
> [  3] local 192.168.1.12 port 58045 connected with 192.168.1.105 port 5001
> [ ID] Interval       Transfer     Bandwidth
> [  3]  0.0-10.0 sec   977 MBytes   820 Mbits/sec
> [  3] Sent 3414986 datagrams
> [  3] Server Report:
> [  3]  0.0-10.0 sec   811 MBytes   680 Mbits/sec   0.000 ms 581210/3414986
> (0%)
> 
> Without BRIDGE_VLAN_FILTERING
> 
> iperf -u -c 192.168.1.105 -b 1G -l 300
> ------------------------------------------------------------
> Client connecting to 192.168.1.105, UDP port 5001
> Sending 300 byte datagrams, IPG target: 2.24 us (kalman adjust)
> UDP buffer size:  208 KByte (default)
> ------------------------------------------------------------
> [  3] local 192.168.1.12 port 36645 connected with 192.168.1.105 port 5001
> [ ID] Interval       Transfer     Bandwidth
> [  3]  0.0-10.0 sec   977 MBytes   820 Mbits/sec
> [  3] Sent 3414990 datagrams
> [  3] Server Report:
> [  3]  0.0-10.0 sec   836 MBytes   701 Mbits/sec   0.000 ms 493950/3414990
> (0%)
> 
> In terms of kernel size, it uses 16KB (6753K vs 6737K on ER8) so a 0.002%
> hit.  The exact 16KB is probably just due to how the kernel is compressed.
> 
> ---
> 
> v2: Enable the right CONFIG_ on 4.14.  Thanks Felix for pointing out my
> silliness :)
> 
> diff --git a/target/linux/generic/config-4.14
> b/target/linux/generic/config-4.14
> index 97207cf2eb..7d4750f461 100644
> --- a/target/linux/generic/config-4.14
> +++ b/target/linux/generic/config-4.14
> @@ -627,7 +627,7 @@ CONFIG_BRIDGE=y
>  CONFIG_BRIDGE_IGMP_SNOOPING=y
>  # CONFIG_BRIDGE_NETFILTER is not set
>  # CONFIG_BRIDGE_NF_EBTABLES is not set
> -# CONFIG_BRIDGE_VLAN_FILTERING is not set
> +CONFIG_BRIDGE_VLAN_FILTERING=y
>  # CONFIG_BROADCOM_PHY is not set
>  CONFIG_BROKEN_ON_SMP=y
>  # CONFIG_BSD_DISKLABEL is not set
> diff --git a/target/linux/generic/config-4.9
> b/target/linux/generic/config-4.9
> index 979028f04a..860b39b428 100644
> --- a/target/linux/generic/config-4.9
> +++ b/target/linux/generic/config-4.9
> @@ -598,7 +598,7 @@ CONFIG_BRIDGE=y
>  CONFIG_BRIDGE_IGMP_SNOOPING=y
>  # CONFIG_BRIDGE_NETFILTER is not set
>  # CONFIG_BRIDGE_NF_EBTABLES is not set
> -# CONFIG_BRIDGE_VLAN_FILTERING is not set
> +CONFIG_BRIDGE_VLAN_FILTERING=y
>  # CONFIG_BROADCOM_PHY is not set
>  CONFIG_BROKEN_ON_SMP=y
>  # CONFIG_BSD_DISKLABEL is not set
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list