Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sockets Multicast
Prof. Fabian Martins da Silva, M.Sc.
fabian.martins@ymail.com (assuntos acadmicos) fabian.martins@gmail.com (demais assuntos) fabianmartins.blogspot.com linkedin.com/fabianmartinssilva
FIAP Faculdade de Informtica e Administrao Paulista Graduao em Sistemas de Informao Disciplina: Sistemas Distribudos 2011
Sockets Multicast
Conceito
A comunicao ponto-a-ponto (um-para-um) denominada Unicast. A comunicao um-para-muitos denominada broadcast. A tcnica que permite esta comunicao chamada multicast. Multicast a tcnica de se definir grupos de ns e enviar pacotes quele grupo ao invs de enviar somente a um n. Portanto, a comunicao multicast restrita quele grupo de ns. Os socket multicast (java.net.MulticastSocket) permitem a implementao dessa comunicao. No o mesmo que enviar um pacote para cada mquina. Na comunicao MultiCast, quem cuida da duplicao dos pacotes so os roteadores.
Prof. Fabian Martins, M.Sc Sockets Multicast
2/12
Comunicao multicast
Utlizando sockets UDP-padro, um socket tem que ser enviado a cada um dos clientes interessados, sobrecarregando a rede desnecessariamente.
Utlizando sockets Multicast,o comunicante envia apenas um pacote, que multiplicado pelo elemento roteador para todas os ns envolvidos na rede. Com isso, o trfego reduzido e direcionado somente aos computadores interessados.
Sockets Multicast
3/12
Aplicaes
As comunicaes multicast so voltadas econhecidas para udio e vdeo, mas outras possibilidades incluem MMO(RP)G (massive multimedia online (role-playing) games), sistemas de arquivos distribuidos, computao massivamente paralela, conferncia multipessoas, replicao de banco de dados, comunicaes do tipo newsletter/newsfeed intra-corporao e outras aplicaes mais que caracterizam um grande fluxo um-para-muitos.
Prof. Fabian Martins, M.Sc Sockets Multicast
4/12
IPv4
Um grupo de comunicao consiste em um endereo da classe D e uma porta. Ou seja, os programas devero referenciar sempre o mesmo endereo e porta definido para o grupo.
5/12
Existem alguns grupos de multicast especiais que no devem ser utilizados pois esto reservados para uso especfico: 224.0.0.1 o grupo all-hosts (todos os hosts). Se fo realizado um ping neste grupo, todos os hosts capazes de atender em multicast devero responder pois por default todos aqueles capazes deste tipo de comunicao se juntam a este grupo quando so inicializados. 224.0.0.2 is the all-routers (todos os roteadores). Da mesma forma, todos os roteadores com capacidade multicast se juntaro a este grupo. 224.0.0.4 est reservado para roteadores DVMRP, 224.0.0.5 para roteadores OSPF, 224.0.0.13 para PIM routers, existindo outros endereos para roteadores (fora do nosso escopo agora). Assim, a faixa de 224.0.0.0 a 224.0.0.255 reservada para propsitos locais (administrativos) e portanto os pacotes enviados a eles no so tratados pelos roteadores multicast. A faixa 239.0.0.0 at 239.255.255.255 tambm est reservada para propsitos administrativos.
Prof. Fabian Martins, M.Sc Sockets Multicast
6/12
Problemas na rota
Problemas no roteamento podem disparar uma mensagem do tipo java.io.IOException: Network is unreachable. Isto acontece com frequncia em comunicaes em loopback (desconectado da rede) em mquinas Linux. Neste caso, uma rota precisa ser adicionada interface local (lo) para habilitar o range de multicast. No linux:
route add -net 224.0.0.0 netmask 240.0.0.0 dev lo
Sockets Multicast
7/12
2. Juntar-se ao grupo
InetAddress group = InetAddress.getByName(<endereo>); socket.joingroup(group);
5.Abandonar o grupo
socket.leaveGroup(<group>); ou socket.leaveGroup(<loopbackgroup>,<networkInteface>);
Sockets Multicast
8/12
TTL
O Time-To-Live (TTL) um nmero que define o alcance dos pacotes. Este valor decrementado (geralmente em 1) a cada roteador que passa, deixando de ser roteado quando o valor 0 alcanado.No possui valores pr-definidos de alcance. A tabela abaixo uma referncia, que pode variar de autor para autor.
Escopo Restrito interface de loopback Mesma subnet. No vai ser roteado. Restrito mesma organziao Restrito mesma regio Restrito ao mesmo continente Irrestrito (Global)
Ex: socket.setTimeToLive(1);
Prof. Fabian Martins, M.Sc Sockets Multicast
9/12
Juntando-se a um grupo
MulticastSocket socket; InetAddress groupAddress; SocketAddress loopbackGroupAddress; try { groupAddress = InetAddress.getByName(235.1.1.1); socket = new MulticastSocket(9009); Criando o socket try { socket.joinGroup(groupAddress); Juntar-se ao grupo } catch (SocketException e) { // Se a interface de rede no estiver ativa, conectar no loopback // "lo" o nome da interface para loopback (localhost) loopbackGroupAddress = new InetSocketAddress( Juntar-se 235.1.1.1, 9009); ao grupo socket.joinGroup(loopbackGroupAddress, NetworkInterface (loopback) .getByName("lo")); } } catch (IOException e) { // algum erro mais srio aconteceu }
Sockets Multicast
10/12
Enviando pacotes
A construo do pacote pode variar, dependendo se estamos utilizando uma interface de loopback ou se estamos conectados rede: Conectado rede:
Em loopback:
11/12
Exerccio
Aplicativo 1 provedor de mensagens: Aplicativo que define o grupo de multicast e envia mensagens. As mensagens so escritas pelo usurio; Aplicativo 2 sniffer de mensagens: Aplicativo que se junto ao grupo de multicast definido pelo aplicativo 1 e ouve as mensagens enviadas por ele. Os diversos grupos de alunos devem testar os aplicativos entre si (um grupo dispara o Aplicativo 1 e o outro dispara o sniffer, e vice-versa, utilizando portas diferentes).
Sockets Multicast
12/12