IGMP snooping - leave group qui quitte tous les flux - Réseaux - Systèmes & Réseaux Pro
Marsh Posté le 22-02-2016 à 18:41:00
Bonjour,
tu peux nous dire ce que tu utilises comme matos ? et préciser de manière un peu plus concise quelle est ta problematique de départ ? tu veux prioriser des flux par rapport à d'autres ? quoi comme flux ?
Marsh Posté le 22-02-2016 à 19:35:39
Bonsoir,
Merci pour cette réponse.
J'utilise 2 switchs différents qui me sont imposés, c'est donc une contrainte. Le switch principal est basé sur un composant broadcom BCM56333_B1, et est manageable par interface web et CLI ( syntaxe similaire à du cisco ). Le second switch est un netgear GS108tV2.
L'architecture est en gros composée de switchs primaires ( le broadcom ), et de secondaires ( le netgear ). Les switchs secondaires sont connectés aux switchs primaires, et les équipements émetteurs et récepteurs sont branchés sur les switchs secondaires.
Ma problématique est la suivante : j'ai N emetteurs qui diffusent en permanence un flux MPEG-TS multicast à environ 8Mbps. Si je n'active pas l'IGMP snooping, je sature très vite le réseau, d'autant plus que les players peuvent également faire de la VOD , ce qui charge d'autant plus le réseau.
Les récepteurs sont des écrans qui peuvent soit lire des flux VOD, soit se connecter à 1 parmi les N flux.
Je ne souhaite pas prioriser les flux, je n'ai d'ailleurs qu'un seul VLAN.
J'ai une piste, car d'autres personnes ont à priori des problèmes similaires. Je travaille pour l'instant sur le vlan par défaut ( VLAN 1 qui est aussi le VLAN de management des switchs ), et il est possible que certains protocoles marchent mal quand on est sur le VLAN1. Je vais tenter de changer de VLAN pour voir si le comportement est similaire ou si ca fonctionne mieux.
J'ai fait le test en faisant une maquette plus simple, avec l'un ou l'autre switch, j'ai le même problème. Je suppose donc que c'est un problème de configuration, ou parce que je suis sur le VLAN1.
Le test simple que j'ai fait est le suivant :
- sur le switch 1 , j'ai 2 écrans ( 2 players ) , et mon portable.
- sur le switch 2, j'ai 2 écrans ( 2 players ), et ma source émettrice ( un encodeur )
- les 2 switchs sont reliés entre eux.
J'ai connecté les 2 switchs entre eux.
Lorsque je connecte mes 4 écrans sur le flux de mon encodeur, je vois bien la vidéo, et je vois bien les paquets IGMP passer pour s'inscrire ( report ).
Lorsque je me connecte avec mon portable, avec VLC sur le flux, je vois bien le flux
Si je quitte le flux avec VLC, un paquet IGMP "leave group" est émis, et cela stoppe le flux sur mes 2 écrans qui sont sur le switch 1. Les 2 écrans sur le switch 2 ne sont pas stoppés.
Si je regarde l'état IGMP de mes switchs, j'ai le résultat suivant :
- port 1 , port 2 , port 3 , et port 8 sont en fwd sur le switch 1 ( port 1 = écran 1 , port 2 = écran 2 , port 3 = mon portable, port 8 = connecté au switch 2 )
- port 1 , port 2 , et port 8 sont en forward ( port 1 = écran 3 , port 2 = écran 4 , port 8 = connecté au switch 1 ). le port 3 est celui sur lequel j'ai ma source émettrice.
dès que je fais un leave group avec mon VLC qui est sur le port 3 du switch 1, j'ai le résultat suivant :
- port 1 , port 2 , et port 8 sont en fwd sur le switch 1 -> port 3 enlevé, normal j'ai fait un leave group
- port 1 , port 2 sont en forward -> port 1 et port 2 recoivent toujours le flux du port 3 , mais port 8 n'est plus en forward, le flux multicast n'arrive plus au switch 1 : pas normal.
Je ne comprends pas le comportement, tout me semble logique, je ne pense pas avoir fait d'erreur dans ma config de switch. Je posterai demain la config minimale pour donner une idée. La seule piste que j'ai est le fait que je sois sur le VLAN1. Si ce n'est pas ça, je n'y comprends plus rien.
Et désolé, je ne peux pas faire plus concis, difficile d'expliquer sans donner de détail.
Marsh Posté le 22-02-2016 à 20:22:46
Oui effectivement difficile de faire plus court mais c'est un peu plus clair. Je suis pas spécialiste de ce genre de technos (la diffusion, les switchs je connais ^^ ) mais ... tu pourrais pas simplement essayer en branchant ton second switch et ton pc sur d'autres ports pour voir ?
et si tu branches l'écran 1 sur le port 8 a la place du second switch, quand tu déconnectes ton pc, l'écran sur le port 8 se déconnecte ?
Marsh Posté le 22-02-2016 à 20:39:38
Je vais tenter de faire cela, mais je prédis le résultat
En fait le comportement est comme si le switch 2 considère qu'il n'y a qu'un groupe passant par le port 8 ( entre 8 et 8 donc ), et que dès qu'un leave arrive par ce port , il arrête la diffusion sur ce port sans se poser la question de savoir s'il y a d'autres client en train de lire.
Je suis sûr que si je branche un 3eme switch, mettons sur le port 7 , et que je lance 1 ou plusieurs clients sur ce 3eme switch , et que je quitte la lecture avec VLC ( sur le port 3 du switch 1 donc ), ca ne quitte que les 2 écrans du switch 1, car ca n'aura désactivé que le port 8 du switch 2, et non le port 1 et 2 ( mes écrans 3 et4 ), ni le port 7 ( mon 3eme switch avec d'autres clients ).
Je ferai le test également demain pour m'en assurer.
J'ai mis également des ports en mirroring, notamment le port 8 ( d'un coté ou de l'autre ), pour capturer le trafic IGMP entre switchs - car il ne redescend pas jusqu'aux machines finales - et j'ai constaté que le switch qui fait querier émet bien une trame "query all" toutes les minutes : normal, mes switchs sont configurés en querier ( donc élection d'un , celui qui a l'adresse IP la plus faible ) , et le timeout est bien de 60sec. Par contre, j'ai lu la RFC de l'IGMPv2 , et il est dit que quand une machine fait un leave group , le querier doit faire autant de"query group-specific" que de last_member_query_count
https://tools.ietf.org/html/rfc2236
Citation : |
Or, avec wireshark, je n'ai jamais vu passer de "query group-specific".
Bon, il faut que je relise la RFC car tout n'est pas clair ^^
Marsh Posté le 23-02-2016 à 16:21:45
J'ai un peu avancé sur le sujet. Le changement de vlan ne change rien, c'était une fausse piste.
Cependant, j'ai trouvé un moyen de faire fonctionner, il suffit de désactiver la fonction "fast leave admin mode".
J'ai à peu près compris pourquoi cela fonctionne maintenant : il semblerait que quand on désactive cette fonction, lorsqu'un "leave group" est émis, les switchs ne coupent pas tout de suite le flux sur le(s) port(s) concernés, mais attendant un timeout. Or, si d'autres players emprunte "même" chemin, il est maintenu car ces players émettent régulièrement des "report group" , et cela suffit pour que ca passe avant un timeout ( je dirais qu'un leave group force le querier à faire un query, ce qui force les clients à faire un report ).
Du coup, cela fonctionne, mais je ne vois pas l'intérêt de la fonction "fast leave admin mode" car elle me semble inutilisable. Ou alors je n'ai pas tout compris ...
Marsh Posté le 23-02-2016 à 18:41:16
Peut-être justement dans une conf "simple" ou tu aurais pas beaucoup d'écrans pour libérer le switch plus vite ? bon le principal est que tu aies trouvé
Marsh Posté le 22-02-2016 à 09:37:59
Bonjour,
Je cherche à activer la fonction IGMP snooping sur un réseau sur lequel je peux avoir jusque 20 flux multicast simultanés, avec potentiellement 30 à 50 clients qui peuvent choisir un flux parmi les 20 disponibles.
l'IGMP snooping apparait nécessaire car sinon les 20 flux ( qui sont à 10Mbps environ ) encombrerait le réseau, c'est d'ailleurs ce qu'il se passe.
Le problème est qu'après avoir activé l'IGMP snooping, j'ai un phénomène étrange :
- à priori cela fonctionne car tous les ports sont bloqués par défaut. C'est le comportement que je souhaite
- lorsqu'un client souhaite regarder un flux, j'ai bien des paquets "membership report group" à l'adresse du groupe multicast demandé ( au passage tous les clients sont en IGMPv2 )
-> phénomène étrange mais peut être normal, bien que la demande "membership report group" soit broadcastée , je ne la vois pas passer sur aucun port final ( port sur lequel je branche un wireshark pour espionner le trafic ). Il est en est de même pour les "leave group".
-> si je fais un port mirroring pour espionner le trafic entre 2 ports , là, je vois tous les "report group" ( et leave group ). C'est donc que les switchs limitent ce trafic entre switchs, je ne sais d'ailleurs pas quelle est la règle pour le switch de déterminer qu'un autre switch est connecté à lui : plusieurs macs sur le port ? avec le protocole LLDP ? autre ?
-> dans le protocole IGMP, c'est étrange que la demande "membership report group" se fasse sur l'adresse de groupe sur laquelle on s'inscrit ( du coup dans le paquet UDP, l'adresse apparait 2 fois ), alors que le leave group se fait sur l'adresse 224.0.0.2
- tant que je lis ce flux, je vois des "membership report group" régulier ( l'intervalle entre 2 est un peu aléatoire, entre 5 et 30 sec ).
- si je quitte ce flux, je vois bien passer un "leave group" et je vois bien que le flux n'arrive plus jusque la machine avec wireshark.
Jusque là, tout va bien.
Maintenant si je lis un flux à partir de N machines sur le réseau, tout va bien, jusqu'à ce que je quitte un flux avec l'une des machines , cela stoppe le flux chez tous les clients qui regardent ce flux, sauf dans 2 cas :
- si je stoppe le flux à partir d'un client qui n'est pas connecté sur le même switch que l'émetteur, cela stoppe tous les flux des clients qui lisent le même flux, sauf les clients qui sont sur le même switch que l'émetteur
- si je stoppe le flux à partir d'un client qui est connecté sur le même switch que l'émetteur, cela ne stoppe que moi même, les autres flux continuent de se lire correctement.
Je pressens 3 choses :
- soit je me suis planté dans la configuration de mes switchs ( je ne maîtrise pas du tout igmp )
- soit le switch est buggué et implémente mal la fonction.
- j'ai 2 switchs de techno différente , et ils cohabitent mal.
Sur mon réseau, malheureusement, je mélange 2 switchs différents , 1 netgear ( GS108tV2 ) et 1 dont je ne connais pas le modèle mais basé sur une puce broadcom BCM56333_B1. Les options de réglages semble relativement identiques entre les 2 mais vu que je ne maîtrise pas le protocole, je ne sais pas si je fais bien ou pas.
J'ai tenté de chercher un peu de littérature à ce sujet sur le net, mais rien qui ne m'apporte de réponse pour le moment ( je vais bien sur continuer à chercher ). Parmi les options sur le(s) switch(s) , il y en a que je ne comprends pas bien. Sur un des switchs ( le netgear ), pour lequel on ne peut le manager que par page web, j'ai :
- dans la page de configuration du IGMP pour chaque port, il y a un "admin mode" et "fast leave admin mode" ( que je retrouve sur les 2 switchs ). Je ne comprends pas bien à quoi servent ces options et quelle influence ça a de les activer ou non.
- ensuite j'ai une mage de configuration "IGMP snooping VLAN configuration", on me redemande "fast leave admin mode" ( je trouve ca redondant ), et "query mode" (kesako ? la doc du switch ne détaille pas )
- 2 autres notions apparaissent également :
* multicast router
* IGMP snooping querier
- dois-je activer les 2 ?
* pour le multicast router, je dois rendre enable des ports. Lesquels et pourquoi ? j'ai également une 2eme page nommée "multicast router VLAN configuration" où on me redemande d'activer multicast router sur chaque port , en précisant en plus le VLAN cette fois-ci. Encore une fois c'est redondant, pourquoi la page précédente ?
* pour IGMP querier, pareil 2 pages, où les informations sont redondantes. Les options sont :
+ querier admin mode
+ snooping querier address : alors ici, je me suis apercu que l'adresse saisie est l'adresse source. Etrange de devoir préciser cela, et effectivement avec wireshark, je vois passer des paquets "IGMP query" avec l'adresse source que j'ai précisée ( même si je mets une adresse bidon, ou la même adresse sur tous les switchs ?! ). Quel intérêt de préciser ? pourquoi le switch ne prend pas sa propre adresse ?
Bref, tout ça est un peu flou, j'ai essayé :
- juste en activant le igmp snooping ( j'ai mis enable partout ) -> ca ne marche pas les flux se quittent comme décrit
- en activant querier sur tous les switchs et en mettant l'adresse de chaque switch -> ca change rien
- en activant querier sur tous les switchs et en mettant la même adresse partout -> ca change rien
Je n'ai pas essayé "multicast router" car je ne sais pas du tout à quoi ça correspond, de ce que j'ai lu ( et compris ? ) sur le net, on utilise multicast router si on a un routeur multicast ( c'est quoi et ca sert à quoi ? ) sinon on doit utiliser igmp querier.
Si quelqu'un peut m'aiguiller, car je suis un peu perdu, je n'arrive pas à comprendre pourquoi un "leave group" ferait quitter tous les flux. Je ne vois pas l'intérêt d'un tel comportement dans une utilisation normale de diffusion de flux sur un réseau.
Merci d'avance