Auteur Sujet: OpenWRT x86 v24.10 - Net, TV, replays (et plus de téléphone avec la Bbox)  (Lu 6474 fois)

0 Membres et 1 Invité sur ce sujet

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 670
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #12 le: 17 mai 2025 à 12:06:59 »
@mirtouf:

oifname "eth1.100" counter meta priority set 0:1
oifname "eth1.100" ip protocol icmp counter meta priority set 0:5
oifname "eth1.100" ip protocol igmp counter meta priority set 0:5
oifname "eth1.100" udp dport 67 counter meta priority set 0:6
oifname "eth1.100" udp dport 547 counter meta priority set 0:6
oifname "eth1.100" udp dport 5060 counter meta priority set 0:5
oifname "eth1.100" ip protocol icmpv6 counter meta priority set 0:5

oifname "eth1.100" udp dport 67 counter meta priority set 0:6
oifname "eth1.100" udp dport 547 counter meta priority set 0:6

On peut faire mieux que de tout retranscrire en priorité 1 pour sélectionner les « raw sockets » lesquels persistent avec leur priorité 0.
On peut appliquer un correctif au client udhcpc (pas accessible aux débutants) et définir la valeur du paramètre skpriority pour odhcp6c.

Depuis la très récente version 1.3 de nftables, il est possible spécifier la valeur du champ PCP dans la table netdev.

table netdev filter
flush table netdev filter

table netdev filter {
    chain set_isp_qos {
        udp dport 547 vlan pcp set 6 ip6 dscp set cs6 counter
        udp dport 67 vlan pcp set 6 ip dscp set cs6 counter
    }

   chain egress {
       type filter hook egress device eth1 priority filter; policy accept;
       vlan id 100 jump set_isp_qos
   }
}

Je n'ai pas pu tester sur mon routeur (car Hors-Service).

# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2015 OpenWrt.org
#

include $(TOPDIR)/rules.mk

PKG_NAME:=nftables
PKG_VERSION:=1.1.1
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
PKG_HASH:=6358830f3a64f31e39b0ad421d7dadcd240b72343ded48d8ef13b8faf204865a

La version la plus récente disponible est numérotée 1.1.1. Mais mettre à niveau ne semble pas compliqué. Le hic est qu'il faut réussir à construire
son image à partir des sources et il y a un risque de « briquer » le routeur. Ce n'est pas accessible aux débutants.

mbooma

  • Abonné Bbox fibre
  • *
  • Messages: 17
  • Issy-les-Moulineaux (92)
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #13 le: 17 mai 2025 à 12:09:33 »
Bonjour,

Merci a vous deux, quelqu'un arrive à faire marcher la TV sur la version 24.10 ?

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 670
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #14 le: 17 mai 2025 à 12:21:29 »
nft add rule inet fw4 mangle_output oifname eth1 ether type ip ip protocol igmp vlan id 100 counter vlan pcp set 5
Je ne suis pas certain que cela fonctionne.

Pourquoi avoir deux règles pour appliquer la « même » modif ?

nft add rule inet fw4 raw_output ip protocol igmp counter meta priority set 6
On peut modifier ces règles via le fichier de configuration de firewall4 (fw4).

tahitib0b07

  • Abonné Bbox fibre
  • *
  • Messages: 4
  • Privas 07
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #15 le: 17 mai 2025 à 22:51:14 »
la commande est valide.

la premiere n'appliquait pas la PRIO (PCP) sur mes paquets envoyés vers 232.x.x.x

Les deux commandes ne sont pas identiques, l'une tapes mangle_output et ajoutes une priorité (DSCP) sur la couche 3 (tcp/ip), l'autre raw_output et appliques la priorité (PCP) sur la couche 2 (802.1q).

Je veux bien ta conf fw4 stp. D'après mes tests, le champ DCSP n'appliques pas une priorité sur un paquet, mais filtre le paquet selon la priorité.












basilix

  • Abonné Orange Fibre
  • *
  • Messages: 670
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #16 le: 18 mai 2025 à 07:28:18 »
@tahitib0b07:

Tu dois confondre.

La déclaration meta priority set change la priorité interne Linux des paquets correspondant à l'expression qui précède dans la règle.

La première règle ne correspond qu'aux paquets IGMP du VLAN 100 tandis que la seconde correspond à tous les paquets IGMP. Les
règles sont appliquées dans un ordre donné en fonction de la priorité de leur chaîne. Mais j'ai la flemme de vérifier si raw_output est
plus prioritaire que mangle_output (ou de vérifier si ces deux chaînes font vraiment partie de la configuration d'origine de fw4).

Cette priorité interne telle qu'elle est définie dans ce fil de discussion sert à modifier le champ PCP de trames Ethernet (802.1q). Le
champ DSCP n'est jamais défini par ces règles. La règle mangle_output modifierait éventuellement la valeur du champ PCP.

Je ne vais pas filer ma configuration. Premièrement, je ne suis pas abonné chez Bouygues. Deuxièmement, mon routeur est hors-service.
Troisièmement, je veux bien fournir un exemple de configuration ou un extrait de configuration, mais pas ma véritable configuration.

Un moyen « simple » pour vérifier que tes règles nftables sont correctement appliquées est d'effectuer une capture réseau sur l'interface
« WAN ». Tu pourrais ainsi observer la valeur des champs DSCP ou PCP des paquets envoyés.

tahitib0b07

  • Abonné Bbox fibre
  • *
  • Messages: 4
  • Privas 07
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #17 le: 18 mai 2025 à 10:27:14 »

C'est justement avec wireshark que j'ai pu constater que:
 - la 1ere règle permettait d'encapsuler mes paquets IGMP
 - la PRIO 5 était appliqués au traffic mutlicast UDP
 - la PRO 5 n'était pas appliqué aux paquets IGMP construits par igmpproxy.

D'ou l'utilisation de la 2eme règle pour:
 -  appliquer une CS6
 - appliquer le "EGRESS priority mapping" pour translater ma CS6 en PCP 5. (j'aurais pu mettre une autre valeur sur DSCP, peu importe).

tu confirmes donc ce que je dis, les deux règles sont disctinctes.


basilix

  • Abonné Orange Fibre
  • *
  • Messages: 670
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #18 le: 18 mai 2025 à 12:55:45 »
Non, c'est faux ! Tu confonds plusieurs concepts : priorité Linux interne des paquets, champ DSCP et champ PCP.

Informations générées par l'intelligence artificielle ChatGPT4.1

Voici une explication des deux règles nftables que tu as fournies :

1. Première règle :

nft add rule inet fw4 mangle_output oifname eth1 ether type ip ip protocol igmp vlan id 100 counter vlan pcp set 5
- Table et chaîne : dans la table `fw4`, la chaîne `mangle_output` (probablement utilisée pour modifier ou marquer les paquets en sortie).
- Condition : cette règle s'applique aux paquets sortants (`mangle_output`) qui ont pour interface de sortie (`oifname`) `eth1`, de type Ethernet, avec un protocole IP, et plus précisément un protocole IGMP.
- Filtre VLAN : si le paquet appartient à un VLAN avec l'ID 100.
- Action :
  - Incrémente le compteur pour suivre le nombre de paquets correspondant.
  - Modifie le champ VLAN Priority Code Point (PCP) en le réglant à 5 (`vlan pcp set 5`).

En résumé : cette règle intervient sur les paquets IGMP sortant via l’interface `eth1` qui sont dans le VLAN 100, et elle ajuste la priorité VLAN du paquet à 5 tout en comptabilisant le tout.



2. Deuxième règle :

nft add rule inet fw4 raw_output ip protocol igmp counter meta priority set 6

- Table et chaîne : dans la même table `fw4`, la chaîne `raw_output`.
- Condition : cette règle concerne tous les paquets IP sortants (`raw_output`) dont le protocole est IGMP.
- Action :
  - Incrémente le compteur.
  - Modifie la méta-donnée `priority` du paquet en la réglant à 6.

En résumé : cette règle modifie la priorité des paquets IGMP sortants en leur assignant une priorité de 6, tout en comptabilisant ces paquets.



Note générale :
- La première règle se concentre sur le traitement des paquets IGMP sortant via une interface spécifique et dans un VLAN précis, en modifiant la priorité VLAN.
- La seconde règle s'applique à tous les paquets IGMP sortants, en leur assignant une priorité globale.

Si tu souhaites une explication plus détaillée ou des précisions sur un point particulier, n'hésite pas !

tahitib0b07

  • Abonné Bbox fibre
  • *
  • Messages: 4
  • Privas 07
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #19 le: 19 mai 2025 à 09:58:53 »
Ok, noté. Merci pour le temps consacré.

Quand j'aurais un peu de temps libre, je reprendrai ma conf de 0.

Dans tous les cas, le post original était  dédié à ceux qui galèrent avec leur iptv:

Il faut capturer le trafic wan avec wireshark et vérifier que les échanges sur le protocole IGMP et les flux multicast UDP soient tous encapsulés dans le VLAN100 avec une PRIO à 5.




basilix

  • Abonné Orange Fibre
  • *
  • Messages: 670
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #20 le: 19 mai 2025 à 11:09:05 »
@tahitib0b07 :

Il aurait fallu ajouter les lignes dans la conf réseau dans la section "device" (eth1.100). Cela remplace le script défini par @mirtouf.
Je montre ci-dessous la section de configuration et ci-après la commande uci correspondante pour éditer le fichier de configuration.

config device
option name 'eth1.100'
option type '8021q'
option ifname 'eth1'
option vid '100'
option igmpversion '2'
option macaddr '50:6F:0C:1A:2B:34'
        list egress_qos_mapping '1:0'
        list egress_qos_mapping '0:6'
        list egress_qos_mapping '6:6'

Le nombre négatif entre crochet désigne la section. Un nombre négatif permet de compter dans l'ordre inverse : -1 représente la dernière section, -2 l'avant-dernière, 0 la première (c.f. UCI).

uci -q batch <<-EOF
add_list network.@device[-2].egress_qos_mapping='1:0'
add_list network.@device[-2].egress_qos_mapping='0:6'
add_list network.@device[-2].egress_qos_mapping='6:6'
EOF

Créer le fichier /etc/nftables.d/nft-prio6-rules.include

oifname "eth1.100" counter meta priority set 0:1
oifname "eth1.100" ip protocol icmp counter meta priority set 0:5
oifname "eth1.100" ip protocol igmp counter meta priority set 0:5
oifname "eth1.100" udp dport 67 counter meta priority set 0:6
oifname "eth1.100" udp dport 547 counter meta priority set 0:6
oifname "eth1.100" udp dport 5060 counter meta priority set 0:5
oifname "eth1.100" ip protocol icmpv6 counter meta priority set 0:5

Dans le fichier ci-dessus, il me semble qu'il faut ajouter un caractère fin de ligne (newline) en dernière ligne. Certains éditeurs de texte le font automatiquement.

Lancer dans le Shell Unix du routeur la commande uci batch ci-dessous.

uci -q batch <<-EOF
firewall.bytel_rules='include'
firewall.bytel_rules.enabled='1'
firewall.bytel_rules.path='/etc/nftables.d/nft-prio6-rules.include'
firewall.bytel_rules.position='chain_append'
firewall.bytel_rules.chain='mangle_postrouting'
EOF

mirtouf

  • Abonné Bbox fibre
  • *
  • Messages: 1 368
  • Chelles (77)
    • L'antre de la bête
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #21 le: 19 mai 2025 à 15:00:37 »
Bonjour,

Merci a vous deux, quelqu'un arrive à faire marcher la TV sur la version 24.10 ?
Nope, c'est mort pour le moment. A priori, ce serait dû à la réorganisation des paquets UDP ce qui casse les flux dès que le débit dépasse les 8 mbits/s.

mirtouf

  • Abonné Bbox fibre
  • *
  • Messages: 1 368
  • Chelles (77)
    • L'antre de la bête
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #22 le: 19 mai 2025 à 15:01:39 »
@tahitib0b07 :

Il aurait fallu ajouter les lignes dans la conf réseau dans la section "device" (eth1.100). Cela remplace le script défini par @mirtouf.
Je montre ci-dessous la section de configuration et ci-après la commande uci correspondante pour éditer le fichier de configuration.

config device
option name 'eth1.100'
option type '8021q'
option ifname 'eth1'
option vid '100'
option igmpversion '2'
option macaddr '50:6F:0C:1A:2B:34'
        list egress_qos_mapping '1:0'
        list egress_qos_mapping '0:6'
        list egress_qos_mapping '6:6'

Le nombre négatif entre crochet désigne la section. Un nombre négatif permet de compter dans l'ordre inverse : -1 représente la dernière section, -2 l'avant-dernière, 0 la première (c.f. UCI).

uci -q batch <<-EOF
add_list network.@device[-2].egress_qos_mapping='1:0'
add_list network.@device[-2].egress_qos_mapping='0:6'
add_list network.@device[-2].egress_qos_mapping='6:6'
EOF

Créer le fichier /etc/nftables.d/nft-prio6-rules.include

oifname "eth1.100" counter meta priority set 0:1
oifname "eth1.100" ip protocol icmp counter meta priority set 0:5
oifname "eth1.100" ip protocol igmp counter meta priority set 0:5
oifname "eth1.100" udp dport 67 counter meta priority set 0:6
oifname "eth1.100" udp dport 547 counter meta priority set 0:6
oifname "eth1.100" udp dport 5060 counter meta priority set 0:5
oifname "eth1.100" ip protocol icmpv6 counter meta priority set 0:5

Dans le fichier ci-dessus, il me semble qu'il faut ajouter un caractère fin de ligne (newline) en dernière ligne. Certains éditeurs de texte le font automatiquement.

Lancer dans le Shell Unix du routeur la commande uci batch ci-dessous.

uci -q batch <<-EOF
firewall.bytel_rules='include'
firewall.bytel_rules.enabled='1'
firewall.bytel_rules.path='/etc/nftables.d/nft-prio6-rules.include'
firewall.bytel_rules.position='chain_append'
firewall.bytel_rules.chain='mangle_postrouting'
EOF
Merci pour la mise à jour, cela remplacera très bien ce script un peu q&d. ;)

gg40530

  • Abonné Sosh fibre
  • *
  • Messages: 235
  • Labenne 40
OpenWRT x86 v22.03 - Net, TV, replays (et téléphone avec la Bbox)
« Réponse #23 le: 19 mai 2025 à 17:55:39 »
La téléphonie fonctionne avec la box derrière le routeur ?