Auteur Sujet: Fibre + Routeur Lede (ipv4 / ipv6 via DHCP)  (Lu 24835 fois)

0 Membres et 1 Invité sur ce sujet

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #36 le: 22 novembre 2016 à 17:04:43 »
hey bienvenu!

udhcpc et odhcp6c ont l’énorme avantage d'être "la base" dans OpenWrt et d'etre configurables par UCI et l'interface web luci. Pour les novices/débutants c'est bien mieux que devoir installer un package comme isc ou autre et de le configurer a la main.
D'ailleurs isc-dhcp-client n'est pas dispo tout le temps (avec "opkg" du moins).

Si on veut faciliter a plus de gens de remplacer leur livebox par un routeur compatible OpenWrt/Lede il faut:

- ajouter l'option -x a odhcp6c comme elle existe pour udhcpc
- ajouter cette option (sendopts) a uci et luci (ca manque pour udhcpc dans luci d'ailleurs)

Qu'on puisse le faire nous même c'est déja une chose mais faire en sorte que ce soit intégré directement dans OpenWrt/Lede ca serait encore mieux.

La config QoS est aussi un point important.
Pour odhcp6c on peut s'en sortir avec iptables car DHCPv6 n'utilise pas de raw sockets mais pour udhcpc c'est plus embetant. On n'a bien la solution de Zoc (voir ici) mais elle est couteuse en CPU (il faut changer le tag de priorité de tout le trafic sortant).

L’idéal serait une solution comme ils ont fait chez OpenBSD (llprio) mais je ne sais pas si c'est possible ou envisagé avec Linux (et faire accepter une modif dans Linux c'est déjà coton mais ensuite faut que ca propage aux distribs comme openwrt ,etc ce qui peut prendre des années parfois...)

Reste la modif "sauvage" directement dans udhcpc comme Zoc a fait pour dhclient (isc) et dibbler...pourquoi pas si on fait cela proprement avec une option ("-pri 6" par exemple) ca peut peut-etre etre accepté en upsteam...(encore que udhcpc c'est busybox et pas que OpenWrt/lede..donc pas sur).



moht

  • Abonné SFR fibre FttH
  • *
  • Messages: 7
  • Villeurbanne (69)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #37 le: 22 novembre 2016 à 17:24:31 »
Merci !

Tout à fait d'accord pour l'intégrer à odhcp6c (je suis en train de tester différentes  possibilités).

Pour uci, c'est assez simple par contre n'étant pas utilisateur de luci, je laisserai ce travail à un autre.

Je ne suis pas trop au fait de l'importance de la QoS. Quel est l'interêt de modifier la priorité des paquets ? C'est pour la téléphonie et la télévision ?

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #38 le: 22 novembre 2016 à 17:36:19 »
Je ne suis pas trop au fait de l'importance de la QoS. Quel est l'interêt de modifier la priorité des paquets ? C'est pour la téléphonie et la télévision ?

La QoS c'est critique: suivant ou tu es en France certains équipements d'Orange rejettent les requêtes DHCP (v4 et v6) si les paquets ne sont pas en priorité 6 (QoS niveau 2 donc 802.1p dans le vlan). Si ce n'est pas ton cas c'est que tu as de la chance...
Si tu captures les requetes DHCP qui sortent d'une livebox c'est flagrant:

Frame 23: 380 bytes on wire (3040 bits), 380 bytes captured (3040 bits) on interface 0
Ethernet II, Src: Sagemcom_xx:xx:xx (00:37:b7:xx:xx:xx), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
802.1Q Virtual LAN, PRI: 6, CFI: 0, ID: 832
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)


C'est la lotterie suivant l’équipement Orange qui est en face. Certains ne répondent pas au DHCP s'il n'y a pas PRI a 6.

Pas mal de gens ici ont ce souci. Divers solutions ont été testées, notamment mettre un switch avec QoS entre l'ONT et le routeur ou carrèment bidouiller les clients DHCP (comme a fait Zoc pour l'ERL par exemple).

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 283
  • Antibes (06) / Mercury (73)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #39 le: 23 novembre 2016 à 11:13:51 »
ou carrèment bidouiller les clients DHCP (comme a fait Zoc pour l'ERL par exemple).
A noter que ma solution met la bonne priorité sur les paquets indirectement, et qu'à elle seule elle ne suffit pas à avoir une priorité 802.1p correcte.

Je ne fais que modifier la priorité interne de la socket RAW dans le noyau Linux (option SO_PRIORITY qui modifie la priorité skb dans le noyau). Ensuite c'est le module VLAN qui mappe la priorité skb en priorité 802.1p, mapping qui doit être configuré à l'aide de la commande vconfig...


Sinon je confirme qu'à certains endroits elle est obligatoire. A Antibes, pas de PRIO 6 = pas de réponse à la requête DHCP.

moht

  • Abonné SFR fibre FttH
  • *
  • Messages: 7
  • Villeurbanne (69)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #40 le: 23 novembre 2016 à 15:49:38 »
Merci pour ces précisions, je comprends un peu mieux (mes connaissances réseaux sont bien maigres…).
Apparemment, j'ai de la chance puisque je n'ai pas besoin de modifier la priorité des paquets.
Avez-vous une idée de la raison pour laquelle certains ont besoin de le priorité à 6 et d'autres non ? C'est une histoire de nombre de routeurs traversés ?

J'ai quelques questions concernant ce problème (je vais sûrement dire des conneries, je préfère prévenir) :
  • Ne peut t'on pas mettre tous les paquets en priorité 6 ? (ça règle le problème du DHCP mais j'imagine que ça en pose d'autres)
  • Sinon, est-ce-que ça vaut le coup que je propose une modification de odhcp6c qui permette de modifier la priorité (skb, si je comprends bien) des paquets DHCPv6 ? (d'après ce que je comprends, il faudra toujours mapper skb->802.1q ?)
  • Quelle est la différence de configuration des priorités entre l'utilisation de la commande vconfig et de la commande ip (un exemple ici: https://stackoverflow.com/questions/36754323/netfilter-nftables-not-setting-skb-priority) ?
  • Y-a-t'il un mappage par défaut des priorité skb->802.1q lorsqu'un vlan est créé ?

PS : je n'ai pas de Livebox donc je ne peut pas analyser le traffic attendu, quelqu'un pourrait-il me fournir un pcap (anonymisé) des échanges DHCPv4 et DHCPv6 pour que je puisse comparer quand je debug ?

PacOrly

  • Abonné Free fibre
  • *
  • Messages: 1 231
  • FTTH 850/350 Orly (94)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #41 le: 23 novembre 2016 à 15:59:46 »
On n'a bien la solution de Zoc (voir ici) mais elle est couteuse en CPU (il faut changer le tag de priorité de tout le trafic sortant).

C'est vraiment tout le trafic, car j'avais compris (donc à priori mal compris) que ce n'était que les requêtes DHCP?

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 283
  • Antibes (06) / Mercury (73)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #42 le: 23 novembre 2016 à 16:27:37 »
C'est vraiment tout le trafic, car j'avais compris (donc à priori mal compris) que ce n'était que les requêtes DHCP?
Oui.

En pratique on ne peut pas intercepter le trafic DHCP avec iptables, à cause des sockets RAW (qui bypassent totalement netfilter), donc une des solutions (que j'ai proposée mais pas implèmentée car infaisable en pratique sur un ERL vu que ça va déactiver l'offload) consiste à configurer la priorité par défaut du VLAN à 6, ce qui va impacter tous les paquets, y compris les paquets DHCP, et ensuite, avec iptables, classifier tout le traffic (ce qui va exclure DHCP pour la raison évoquée plus haut) en priorité 0.

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 283
  • Antibes (06) / Mercury (73)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #43 le: 23 novembre 2016 à 16:29:23 »
Y-a-t'il un mappage par défaut des priorité skb->802.1q lorsqu'un vlan est créé ?
Par défaut toutes les priorités SKB sont mappées sur la priorité 802.1p 0 (zéro).

Sinon, oui, j'ai parlé de vconfig mais certains versions de la commande ip supportent également la configuration du mapping (en l'occurrence c'est cette solution qui est employée dans le firmware de l'ERL, vconfig n'est même pas installé). Par contre avec la commande ip la configuration doit se faire uniquement avec l'interface vlan "down", impossible de le faire en live sur un vlan up.


PacOrly

  • Abonné Free fibre
  • *
  • Messages: 1 231
  • FTTH 850/350 Orly (94)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #44 le: 23 novembre 2016 à 17:43:36 »
Merci zoc.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #45 le: 23 novembre 2016 à 20:27:33 »
Avez-vous une idée de la raison pour laquelle certains ont besoin de le priorité à 6 et d'autres non ? C'est une histoire de nombre de routeurs traversés ?
la raison seul Orange l'a connait... le nombre de routeurs traversés importent peu. Ils doivent filtrer par endroit peut-etre sur des liens encombrés/sous dimensionnés?

J'ai quelques questions concernant ce problème (je vais sûrement dire des conneries, je préfère prévenir) :
  • Ne peut t'on pas mettre tous les paquets en priorité 6 ? (ça règle le problème du DHCP mais j'imagine que ça en pose d'autres)
on peut mais apres Orange refuse ou limite le trafic normal s'il est en prio 6 sinon un petit malin pourrait être prioritaire sur tout les clients...Donc si les paquets émis ont tous la prio 6 le trafic upload est tres lent voir impossible. Donc non ce n'est pas une solution de tout mettre a 6.

  • Sinon, est-ce-que ça vaut le coup que je propose une modification de odhcp6c qui permette de modifier la priorité (skb, si je comprends bien) des paquets DHCPv6 ? (d'après ce que je comprends, il faudra toujours mapper skb->802.1q ?)
Pour IPv6 ca n'est pas forcement nécessaire car le trafic DHCPv6 n'utilise pas les raw sockets donc passe par netfilter. On peut donc faire une règle pour mettre 6 pour les paquets DHCPv6 sortants.
modifier odhcp6c pour cela serait un plus (pas de règles iptables à  faire) et permettrait d'être identique avec IPv4. Mais ca reste qu'un plus.

(oui il faudra toujours mapper. skb c'est du niveau L3 (couche réseau donc IP), Orange filtre sur du niveau L2 (couche liaison de donnée) c'est "vconfig" qui permet de faire le mappage L3 vers L2).

C'est pareil. Dans les 2 cas on modifie la table "egress-qos-map" qui map la pri skb (L3) vers la pri 802.1p (L2) en sortie (egress).
nb: la priorité L2 , dite 802.1p, n'existe et n'est possible que si y'a un VLAN. Sans VLAN y'a pas de champ dans la trame Ethernet pour indiquer une priorité.
"ip link" ou "vconfig" sont 2 facons de faire les memes choses. D'ailleurs vconfig c'est plus ancien et déprécié et on devrait plutot utiliser "ip link" mais c'est pas toujours dispo suivant l'OS qu'on utilise.

PS : je n'ai pas de Livebox donc je ne peut pas analyser le traffic attendu, quelqu'un pourrait-il me fournir un pcap (anonymisé) des échanges DHCPv4 et DHCPv6 pour que je puisse comparer quand je debug ?

pour les captures j'en ai posté en texte y'a quelque temps :

pour IPv6: https://lafibre.info/remplacer-livebox/remplacer-la-livebox-sans-pppoe/msg371163/#msg371163
pour IPv4: https://lafibre.info/remplacer-livebox/remplacer-la-livebox-sans-pppoe/msg320002/#msg320002

radim

  • Abonné Orange Fibre
  • *
  • Messages: 7
  • Montpellier (34)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #46 le: 23 novembre 2016 à 21:36:52 »
Plutôt que de modifier le client DHCP, on pourrait peut-être créer une sorte de DHCP relay pour changer la priorité des trames. Le client DHCP serait configuré pour envoyer ses requêtes à une interface virtuelle de type TAP. Le relais intercepterait la trame, modifierait la priorité et retransmettrait la trame modifiée sur l'interface WAN.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
Sosh Fibre + OpenWrt avec IP fixe ? (et IPv6)
« Réponse #47 le: 23 novembre 2016 à 22:04:18 »
Plutôt que de modifier le client DHCP, on pourrait peut-être créer une sorte de DHCP relay pour changer la priorité des trames. Le client DHCP serait configuré pour envoyer ses requêtes à une interface virtuelle de type TAP. Le relais intercepterait la trame, modifierait la priorité et retransmettrait la trame modifiée sur l'interface WAN.

C'est compliqué car il faut "coder le relai pour changer la prio" non? donc dans tout les cas faut coder quelque chose.
En plus comment tu fais "Le client DHCP serait configuré pour envoyer ses requêtes à une interface virtuelle de type TAP" ?

Je ne vois pas trop comment configurer ton idée même si je comprend le principe du relai (qui en général est sur une autre machine quand y'en a un).

Apres le but ici, surtout avec openwrt, est d'obtenir un truc facile a configurer pour les neophytes.
Les experts peuvent déjà se configurer d'eux-meme un remplacement de la livebox (linux, openbsd, erl, etc).

Donc l'idée est de faire modifier l'upstream d'OpenWrt pour supporter la config Orange.