L'idéal serait de ré-analyser le trafic entre la Livebox et l'ONT pour faire un récap des champs TOS et éventuellement des CoS.
Quelqu'un saurait le faire ? Je n'ai pas le matos pour dans l'immédiat
Ou alors une autre idée ?
Merci !
Tout ce qui suit est basé sur une pcap de livebox à Puteaux dans le 92 qui date du 15/10/2018, en filtrant "vlan.priority != 0":
- ARP: vlan.priority = 7i|6e (pas IP, pas de DSCP)
- ICMPv6 (important pour NDP!): vlan.priority = 7i|6e, DSCP "CS6" 0xc0
- DHCP: vlan.priority = 7i|6e, DSCP = "CS6" 0xc0
Quand j'écris 7i/6e c'est:
- 7 ingress: prio des paquets ethernet vlan 802.1q reçus des équipements orange
- 6 egress: prio des paquets ethernet vlan 802.1q envoyés par la livebox
Remarque: il y a aussi des prio non nulles <= 7 assignées sur des paquets IGMP, DNS, SIP, etc
Avec linux debian, pour envoyer les paquets vlan 802.1q avec la bonne vlan.prio (et la bonne DHCP si IP):
1. egress map assigné avant que les "handshake ethernet/IP" n'aient lieu, quand le router linux reboot:
On ne map que la valeur 6 qui nous intéresse pour envoyer des paquets ARP, ICMPv6, DHCP
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
2. ARP / ICMPv6:
Désolé c'est du "nftables", mais c'est pareil avec iptables:
table arp arp4 {
chain output {
type filter hook output priority 0; policy accept;
oifname $if_wan meta priority set 6 counter
}
}
table ip6 fltr6 {
chain assign-orange-prio {
icmpv6 type { nd-neighbor-solicit, nd-router-solicit} ip6 dscp set cs6 meta priority set 0:6 counter packets 4 bytes 264
udp sport dhcpv6-client ip6 dscp set cs6 meta priority set 0:6 counter packets 11 bytes 3353
}
}
On change à la fois la valeur DSCP voulue (pour les paquets IP), et la meta priority voulue. La meta priority sera ensuite convertie correctement en priorité vlan 802.1q par la egress map définie au point 1. ci-dessus.
3. DHCP
est géré par des programmes genre ISC-DHCP client/server, ou autres, qui sont TOUS obligés d'utiliser des sockets "SO_PACKET" (appelés RAW par certains) pour forger des paquets IP/DHCP corrects.
Ces sockets "SO_PACKET" sont hookées en egress de telle sorte que netfilter ne puisse pas agir dessus (ni les filtrer, ni modifier les paquets).
Pour ceux qui utilisent ISC DHCP client, ce dernier NE PERMET PAS de configurer une meta priorité (skbuff priority).
Il faut donc modifier son code source pour envouyer les bons meta priorité et DSCP...
Ensuite, le map egress 802.1q fait le reste.