Pour info j'ai indentifié mon erreur d'assignation de priorité VLAN = 6 et DSCP = CS6 avec debian.
Du coup, pas besoin de "mangle" la "meta-class" de tout le traffic.
J'assignais le mapping egress VLAN trop tard, après les handshake ARP/DHCP/NDP, en utilisant la stanza up comme ceci:
# WAN vlan 832 internet
auto enp1s0.832
iface enp1s0.832 inet dhcp
up ip link set enp1s0.832 type vlan egress 0:0 1:0 2:0 3:0 4:0 5:0 6:6 7:0
iface enp1s0.832 inet6 dhcp
up ip link set enp1s0.832 type vlan egress 0:0 1:0 2:0 3:0 4:0 5:0 6:6 7:0
request_prefix 1
accept_ra 2
C'est corrigé avec la stanza pre-up, qui est exécutée avant les handshakes:
# WAN vlan 832 internet
auto enp1s0.832
iface enp1s0.832 inet dhcp
pre-up ip link set enp1s0.832 type vlan egress 0:0 1:0 2:0 3:0 4:0 5:0 6:6 7:0
iface enp1s0.832 inet6 dhcp
pre-up ip link set enp1s0.832 type vlan egress 0:0 1:0 2:0 3:0 4:0 5:0 6:6 7:0
request_prefix 1
accept_ra 2
Pour info, la config nftables qui va avec, pour l'assignation des bons DSCP et prio uniquement pour les paquets concernés:
table inet fltr46 {
chain assign-orange-prio {
ip version 4 udp sport { bootpc, bootps } ip dscp set cs6 meta priority set 6 counter comment "handled by isc-dhclient LPF socket, hence unfiltered"
ip6 nexthdr icmpv6 icmpv6 type { nd-router-solicit, nd-neighbor-solicit } ip6 dscp set cs6 meta priority set 6 counter comment "rule hit, but priority not set"
ip6 nexthdr udp udp sport { dhcpv6-server, dhcpv6-client } ip6 dscp set cs6 meta priority set 6 counter comment "dhcp6 packets, sent by isc-dhclient"
}
chain postrouting {
type filter hook postrouting priority 0; policy accept;
oifname vmap { $if_wan : goto assign-orange-prio }
}
chain output {
type filter hook output priority 0; policy accept;
oifname vmap { $if_wan : goto assign-orange-prio }
}
}
table arp arp4 {
chain output {
type filter hook output priority 0; policy accept;
oifname $if_wan meta priority set 6 counter comment "rule hit, but priority not applied to arp packets, why?"
}
}