2009-08-18 10 views
2

Nous utilisons la multidiffusion dans notre application pour diffuser efficacement les mises à jour des clients connectés aux niveaux intermédiaires. Je suis continuellement demandé par des ingénieurs de réseau sur "comment notre multidiffusion fonctionne" et quels protocoles de multidiffusion il prend en charge. Je suis intrigué par ce type de questions, en ce sens en ce qui me concerne, nos processus client rejoignent simplement un groupe de multidiffusion en exécutant les commandes suivantes:En tant que développeur, ai-je besoin de bien comprendre les protocoles de multidiffusion tels que IGMP, PIM-DM et PIM-SM?

m_sSocket = socket(PF_INET, SOCK_DGRAM, 0); 

if (m_sSocket == INVALID_SOCKET) 
{ 
    SocketError(); 
    return false; 
} 

sockaddr_in saServer; 
ZeroMemory(&saServer, sizeof(sockaddr_in)); 

saServer.sin_family = AF_INET; 
saServer.sin_addr.s_addr = htonl(INADDR_ANY); 
saServer.sin_port = htons(nMulticastPort); 

if (bind(m_sSocket, (sockaddr *)&saServer, sizeof(sockaddr_in)) == SOCKET_ERROR) 
{ 
    SocketError(); 
    return false; 
} 

m_ipMulticast.imr_multiaddr.s_addr = inet_addr(tostring(strMulticast).c_str()); 
m_ipMulticast.imr_interface.s_addr = htons(INADDR_ANY); 

// join the multicast group 
if (setsockopt(m_sSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP, 
       (LPCSTR)&m_ipMulticast, sizeof(ip_mreq)) == SOCKET_ERROR) 
{ 
    SocketError(); 
    return false; 
} 

Il n'y a pas de distinction là-dedans à ce protocole de multidiffusion, il devrait utiliser. Est-ce que quelqu'un a des suggestions utiles sur la façon dont je réponds à ce type de questions? Pour le moment, je fournis simplement l'adresse/le port sur lequel nous sommes en multidiffusion et je leur demande d'ouvrir cette adresse/port sur leurs routeurs réseau. Cependant cela ne semble pas être suffisant et ils ont besoin de plus d'informations (?)

Répondre

0

Il existe une librairie transplateforme ACE libre (http://www.cse.wustl.edu/~schmidt/ACE.html) qui contient l'implémentation de la multidiffusion dans TAO (l'Orb ACE). Désolé pour la référence croisée, mais je suis sûr que votre problème a été résolu là.

3

Très probablement vos ingénieurs réseau tentent de comprendre les choses comme:

1) Les souscriptions denses ou rares dans le réseau? Les commutateurs Cisco (et je suppose que d'autres) peuvent être configurés différemment selon le nombre d'abonnés que vous attendez sur chaque segment. Les paramètres affectent les performances du commutateur.

2) Vous prévoyez de traverser plusieurs réseaux locaux ou réseaux locaux virtuels? Votre TTL va-t-il être autre chose que 1? Certains paramètres contrôlent également les algorithmes utilisés pour router les paquets dans le commutateur. Les mauvais réglages peuvent faire que chaque paquet touche le CPU du commutateur. Pas une bonne chose.

Les réponses à ces questions affectent la conception du réseau, à savoir, quels paramètres pour configurer les routeurs et les commutateurs. Votre eng net peut être curieux au sujet des protocoles et du contenu et quoi non, mais ces problèmes de niveau supérieur est ce qui affectera leur travail. Je suppose qu'ils veulent comprendre ces problèmes, mais ne savent pas comment les poser.

+0

Ce ne sont pas des questions que Alan aurait besoin d'être impliqué, ce sont toutes les décisions d'architecture du réseau.Il n'a pas le choix entre dense et clairsemé (les ingénieurs du réseau choisiront cela en fonction des besoins de son application), de même pour l'aspect vlan. – avirtuos

2

J'ai eu le plaisir de travailler en étroite collaboration avec nos ingénieurs réseau dans le soutien et la construction de plusieurs applications compatibles multicast.

Voici ce qu'ils demandent (en supposant qu'ils comprennent à partir d'un niveau de réseau ce qui multicast 'est et comment il fonctionne).

  1. Est-ce que votre application joint/quitte des groupes fréquemment? (important pour le dépannage)
  2. Votre application quitte-t-elle les groupes pendant les heures creuses? (Permet au réseau une fenêtre pour reconstruire l'arbre multicast)
  3. Quelle est la nature de la communication sur les prises de multidiffusion et comment êtes-vous sensible à la perte de données (udp ne garuntee pas arrivée comme TCP/IP)?
  4. Combien de serveurs sont impliqués et où et où sont-ils? (les aide à comprendre les changements de réseau qui peuvent être nécessaires pour obtenir la multidiffusion de A à B)
  5. Qui sont les producteurs/consommateurs de la multidiffusion? (Va de pair aveC# 4)