Quel est le plus efficace du protocole de multicast fiable?
Lorsqu'un expéditeur doit multidiffusion un assez grand volume de données (disons de plusieurs méga-octets par seconde), de manière fiable via Ethernet à un petit nombre de récepteurs (disons moins d'une dizaine) sur le même sous-réseau, ce qui est le plus efficace du protocole? Par fiable je veux dire que si un paquet est perdu, le protocole permet de s'assurer que ça se resent telle qu'il n'y a pas de perte de données dans n'importe quel récepteur. Le terme efficace est beaucoup plus difficile à définir, mais disons que nous voulons maximiser le débit et réduire la bande passante du réseau modeste de l'utilisation du PROCESSEUR sur les deux extrémités. Ce n'est pas encore une claire définition, mais c'est le mieux que je peut venir avec. Soit un flux ou d'un message de protocole orienté serait acceptable.
J'apprécierais des exemples du monde réel et je serai heureux d'accepter subjective des réponses, c'est à dire quelle est votre préférée protocole de multidiffusion, si vous pouvez expliquer ses avantages et ses inconvénients.
OriginalL'auteur JayMcClellan | 2009-04-19
Vous devez vous connecter pour publier un commentaire.
Exemple réel: TIBCO Rendezvous.
De données est envoyé via multicast avec un numéro de séquence. Un client qui détecte un manque de numéro de séquence envoie un messge sur le groupe de multidiffusion "hey, j'ai manqué un paquet 12345". Le serveur re-multidiffusion des données. Le serveur dispose d'un configurable quantité de données de la mémoire tampon dans le cas où un client le demande.
Le problème:
Imaginez avoir un seul client que les gouttes de la moitié de ses paquets, et 100 sain clients. Ce client envoie une demande de retransmission pour tous les autres paquets. Le serveur commence à causer suffisamment de charge sur celui de la santé des clients tels qu'il commence à tomber des paquets et en demandant des retransmissions. La charge supplémentaire à partir de ce entraîne un autre sain client de commencer à demander des retransmissions. Et ainsi de suite. Une congestion effondrement des résultats.
Tibco fournit une solution de contournement, de couper un abonné qui envoie trop de retransmission des demandes. Cela rend plus difficile pour un seul abonné à cause d'un effondrement de la congestion.
L'autre solution pour limiter les risques de congestion de l'effondrement est de limiter la quantité de données qu'un serveur est prêt à retransmettre.
Tibco devraient également fournir des heuristiques dans le client et le serveur pour savoir si la multidiffusion ou de monodiffusion la retransmission demande, et à la retransmission lui-même. Ils n'en ont pas. (Pour le serveur, vous pourriez unicast la retransmission si un seul client a demandé, dans une certaine fenêtre de temps, pour le client, vous pouvez unicast la retransmission demande si le serveur vous a dit - dans le retransmettre des paquets que vous êtes le seul à demander des retransmissions et merci de monodiffusion la demande dans le futur)
Fondamentalement, vous devez décider ce que vous voulez de garantir que les clients reçoivent les données contre les risques de congestion de l'effondrement. Vous aurez à faire des suppositions quant à l'endroit où un paquet a été abandonné et si la retransmission est plus efficace envoyé unicast ou multicast. Si le serveur comprend des données et peut décider de ne pas envoyer une retransmission si il est mis à jour, les données sont envoyées de toute façon (qui fait de la retransmission, peu importe), vous êtes dans une bien meilleure position que d'un cadre comme Tibco RV.
Parfois la compréhension des données peut conduire à de fausses hypothèses. Par exemple, des données de marché - il peut sembler au premier abord d'accord pour ne pas retransmettre un devis lorsqu'il y a une mise à jour du devis. Mais plus tard, vous pouvez constater qu'un abonné a été de garder une citation de l'histoire, pas juste essayer de garder une trace de la cotation actuelle. Peut-être vous peuvent avoir des exigences différentes en fonction de l'abonné, et certains clients préfèrent unicast TCP vs multidiffusion.
À un certain point, vous aurez besoin pour prendre des décisions arbitraires sur le serveur de la quantité de données de tampon en cas de retransmissions ou de ralentir les clients.
Oui Tibco fournit une faible latence. Un cas d'utilisation typique est de diffuser les valeurs financières sur plusieurs écrans dans une même salle, le même réseau local). En raison du risque de multicast storm (comme expliqué ci-dessus), nous avons, comme pour couper le réseau de multidiffusion distincts zones. Ce n'est pas un jeune produit, maintenant il y a d'autres solutions.
OriginalL'auteur chuck
La suite de TIBCO, le protocole PGM est un standard ouvert, fiable multidiffusion avec de nombreuses optimisations pour travailler le plus efficacement possible à de très grandes échelles avec un élément de réseau de l'accélération. PGM a été développé par TIBCO et CISCO et est un protocole facultatif dessous TIBCO rendez-vous, le protocole par défaut étant TRDP qui est très similaire dans sa conception.
Vous pouvez calculer théorique efficacité tels que listés ici pour des PGM,
http://code.google.com/p/openpgm/wiki/PgmPerformance
Malheureusement monde réel des éléments de réseau, les cartes réseau et le général architectures informatiques effectuer une beaucoup moins que le maximum théorique.
OriginalL'auteur Steve-o
BitTorrent!
Non, sérieusement. Vous pourriez lire.
UDP est utile pour la multidiffusion, mais il ne fournit pas les garanties que vous êtes à la recherche pour - BitTorrent vous demandera de transmettre plus d'un exemplaire complet de la source d'origine, mais il est encore assez efficace et fournit des garanties utiles, en particulier compte tenu de combien de somme de contrôle est réalisé sur chaque "morceau" de données transmis.
BitTorrent présente beaucoup d'idées intéressantes dans les protocoles de réseau et de conception du protocole.
Il a expressément demandé à un protocole efficace de la distribution des données sur un sous-réseau. Alors que BitTorrent est idéal pour le partage de fichiers volumineux avec de multiples pairs, il n'est pas efficace dans un paramètre de réseau.
Je suis désolé, où est votre meilleure alternative?
OriginalL'auteur clee
http://www.jgroups.org/
OriginalL'auteur Dave
Pourrais-je vous suggérer UFTP. Il utilise un NAK mécanisme de base pour déterminer les paquets à retransmettre et dispose d'une option pour soit fixe le taux de transmission ou de contrôle de congestion à l'aide de TFMCC.
Chaque fichier est envoyé dans les passes, où la première passe transmet l'ensemble du dossier, tandis que des passes suivantes uniquement envoyer des retransmissions. Chaque client garde la trace de paquets reçus et de ceux qu'il a manqué. En particulier, les points de contrôle (et à la fin d'un passage), si le récepteur manqué aucun des paquets depuis le dernier point de contrôle, il va envoyer un NAK liste les paquets qui ont été manqués. Ceci a l'avantage que la faible perte de récepteurs vont se terminer devant les hauts-de la perte des récepteurs. UFTP peut également être configuré pour déposer des récepteurs dont le pourcentage de NAKs dépasse un certain seuil.
En limitant NAKs seulement les récepteurs qui ont fait preuve d'une perte, il réduit les risques de congestion de l'effondrement, ce qui est l'expéditeur se dépassés par le récepteur de la rétroaction.
De divulgation: l'auteur de UFTP.
Je n'ai jamais utilisé IPoIB donc je ne peux pas dire pour sûr, mais j'imagine que ça doit fonctionner comme tout lien de propriété intellectuelle.
OriginalL'auteur dbush
Il s'agit d'une question de recherche; il y a des solutions commerciales disponibles, mais qui sont d'un coût prohibitif. Bonne chance.
OriginalL'auteur Mark P Neyer
Je pense que vous devriez peut-être jeter un oeil à Stream Control Transmission Protocol comme une alternative à UDP /multidiffusion si vous voulez vraiment fiable transmission simultanée de plusieurs clients.
SCTP, et unicast en général, n'est pas efficace pour ce que l'OP est en train de faire: le Transfert "de plusieurs méga-octets par seconde" à plusieurs récepteurs, et "afin de maximiser le débit et réduire la bande passante du réseau". La consommation de bande passante croît linéairement avec le nombre de récepteurs, et une de 1 gbe lien serait saturé à 10MB/s avec 12 récepteurs. À l'aide de multicast fiable, par exemple, PGM, la bande passante, dans des conditions idéales (pas de perte de paquets), est totalement indépendant du nombre de récepteurs, c'est à dire un 1GbE lien serait inférieure à 10% saturé quand on fait 10 MO/s.
Aussi, est SCTP mieux pour plusieurs clients que, par exemple, TCP? TCP est largement optimisé, même dans le matériel, c'est à dire les cartes réseau. Souvent traduit par une forte réduction de la consommation CPU (quelque chose que l'OP est également intéressés), à l'instar de Rx Coalescence, déchargement du total de contrôle, et ainsi de suite. Donc, en général, les nouveaux arrivants auront un moment difficile à battre. Cela dit, j'espère que SCTP et de ses concepts, particulièrement efficace multiplexage sur IP, seront trouve l'adoption qu'ils méritent.
OriginalL'auteur Alan