I've recently upgraded my Linksys WRT1900ACS from OpenWrt 19.07 to 21.02.3. I've had to rewrite my /etc/config/network to work with the new DSA configuration and I've got most of what I need working, except for IPTV.
My ISP requires that internet traffic be sent over 802.1q VLAN 10 priority 0, and that IPTV is over VLAN 20, priority 4. The IPTV set-top box is plugged into lan1.
In OpenWrt 19.07, I've accomplished this by:
- Defining eth1.21, connected to swconfig port 3 (DSA = lan1)
- Defining eth0.20, connected to swconfig port 4 (DSA = wan)
- Defining a bridge for eth0.20 and 1.21
ip link set link eth0.20 dev eth0 type vlan egress-qos-map 0:4 1:4 2:4 3:4 4:4 5:4 6:4 7:4as a hotplug.d/iface script that runs on
The idea is to take the traffic from the set-top box, add the 802.1q header (VLAN 20, priority 4), and send the packet onwards to the ISP. This set up works well. Internet works correctly, and IPTV works correctly as well.
In OpenWrt 21.02, after porting the equivalent configuration (internet configuration omitted for brevity):
config device option name 'br-lan' option type 'bridge' list ports 'lan1' list ports 'lan2' list ports 'lan3' list ports 'lan4' config bridge-vlan option device 'br-lan' option vlan '21' list ports 'lan1' config device option name 'br-iptv' option type 'bridge' list ports 'wan.20' list ports 'br-lan.21'
and using the same
ip link set link wan.20 dev wan type vlan egress-qos-map 0:4 1:4 2:4 3:4 4:4 5:4 6:4 7:4 command, I notice several things:
- When I try to perform a DHCP configuration of br-iptv, the configuration as described does not receive any DHCP responses. According to tcpdump, capturing
wanand filtering by
vlan 20shows the correct 802.1q field: priority 4 and VLAN 20. However, the priority field doesn't seem to be properly set when the ethernet frame is sent over the wire (which can explain why I don't get any DHCP response). I get a DHCP response immediately when I configure:
config device option name 'wan.20' option type '8021q' option vid '20' option ifname 'wan' list egress_qos_mapping '0:4'
in place of using
ip link. However, this now causes my normal internet access to break (presumably because it is now set to VLAN 10, priority 4 for the internet-facing VLAN 10). No other internet traffic is then possible, all packets are dropped on my ISP side.
Regardless which way I set the egress_qos_mapping, the VLAN configuration seems correct:
# cat /proc/net/vlan/wan.10 /proc/net/vlan/wan.20 wan.10 VID: 10 REORDER_HDR: 1 dev->priv_flags: 1121 total frames received 7368 total bytes received 7803993 Broadcast/Multicast Rcvd 0 total frames transmitted 3856 total bytes transmitted 628469 Device: wan INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 EGRESS priority mappings: wan.20 VID: 20 REORDER_HDR: 1 dev->priv_flags: 1221 total frames received 3 total bytes received 706 Broadcast/Multicast Rcvd 1 total frames transmitted 10 total bytes transmitted 1520 Device: wan INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 EGRESS priority mappings: 0:4
Does setting the
egress_qos_mapping apply to all VLANs in the hardware switch? This doesn't seem to be the behaviour from 19.07.
wan.20at the same time when powering on the IPTV set-top box shows the correct DHCP configuration packets being sent by the set-top box, and it shows up in the br-iptv dump. However wan.20 never sees the packet. I can confirm this by temporary breaking my internet access (in point 1) and rebooting the set-top box, but it still does not obtain any IP address from my ISP.
Am I misconfiguring something, or has DSA fundamentally changed what is possible in terms of the network setup? Any guidance would be much appreciated.