la réception de la multidiffusion sur un serveur avec de multiples interfaces (linux)
Pour recevoir un signal de multidiffusion sur mes pas par défaut NIC (dvb) je ne les suivants:
- ouvrir un socket (AF_INET, SOCK_DGRAM)
- joindre à l'adresse de multidiffusion avec IP_ADD_MEMBERSHIP sur le dvb interface
- lier l'adresse de multidiffusion (à noter qu'une erreur courante consiste à lier "0.0.0.0" et recevoir sur ce socket même de multidiffusion ne vous intéressent pas) et le port
à ce stade, la seule façon de recevoir le besoin des paquets de multidiffusion est à ajouter dans la table de routage d'une règle pour atteindre le réseau où l'expéditeur est (un autre réseau) à travers le dvb, comme si le dvb doit répondre à la multidiffusion de l'expéditeur; disons une sorte de source de l'expéditeur mode multicast. Quelqu'un sait ce qui se passe? Le problème, c'est gênant pour moi car en principe, je ne connais pas l'ip de l'expéditeur.
OriginalL'auteur Gaetano Mendola | 2011-03-30
Vous devez vous connecter pour publier un commentaire.
Vous semblent être piqué par
rp_filter
reverse-path de filtrage. Cela tombe paquets si ils arrivent sur une interface qui n'a pas de route pour l'adresse source.Vous pouvez le désactiver sur une fonction de l'interface avec le sysctl
/proc/sys/net/ipv4/conf/<if>/rp_filter
.Cela a fonctionné, mais nous avons dû désactiver le rp_filter pas sur l'interface de la réception de la multidiffusion, mais sur l'interface utilisée dans la table de routage par défaut.
Malheureusement, @thrantir du lien n'est plus valide.
OriginalL'auteur caf
Qui est absolument faux. Vous devez lier à une adresse IP réelle d'une véritable carte, ou 0.0.0.0.
Ce n'est pas une erreur. C'est exact, sauf si vous souhaitez uniquement écouter une adresse IP.
Je ne sais pas ce que cela signifie.
L'adresse IP de l'expéditeur de tout datagramme UDP est disponible via l'API sockets.
Mendola: je l'ai lu il y a 13 ans merci. Il ne fonctionne pas sur Windows et ça n'a pas de sens.w.r.t. la définition acceptée de "liaison".
Le fait ne fonctionne pas sur Windows ne veut pas dire que c'est faux. Windows pile IP n'est pas réputée pour être la norme, note aussi que j'ai mis sur ma question: linux. Puis, de nouveau, sur notre middleware nous sommes conscients de cela et au cas où WIN32 est défini nous lier l'adresse IP de l'interface, mais encore une fois c'est mal de faire si vous avez un "bon" de la pile IP.
Il ne fonctionne pas sur un système Solaris, AIX, BSD, FreeBSD, AIX, HP-UX, ... soit. C'est un Linux-ism. Linux != le monde.
OriginalL'auteur user207421