Sei sulla pagina 1di 12

Aula 28/03/2011

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

Comunicao por Sockets

FIAP Faculdade de Informtica e Administrao Paulista Graduao em Sistemas de Informao Disciplina: Sistemas Distribudos 2011

Prof. Fabian Martins, M.Sc

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.

Prof. Fabian Martins, M.Sc

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

Endereamento IP para multicast

IPv4

Para comunicaes multicast estamos interessados nos endereos da Classe D.

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.

Todos os comunicantes devero juntar-se ao grupo (join).


Prof. Fabian Martins, M.Sc Sockets Multicast

5/12

Endereamento IP para multicast

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

Prof. Fabian Martins, M.Sc

Sockets Multicast

7/12

Passos na criao da aplicao


1. Criar o socket multicast
MulticastSocket socket = new MulticastSocket(<porta>);

2. Juntar-se ao grupo
InetAddress group = InetAddress.getByName(<endereo>); socket.joingroup(group);

ou, quando desconectado da rede (loopback)


InetSocketAddress loopbackgroup = new InetSocketAddress(<endereo>, <porta>); socket.joingroup(loopbackgroup,NetworkInterface.getByName(lo));

3. Enviar mensagens ao grupo


socket.send(packet);

4. Receber mensagens do grupo


socket.receive(packet);

5.Abandonar o grupo
socket.leaveGroup(<group>); ou socket.leaveGroup(<loopbackgroup>,<networkInteface>);

Prof. Fabian Martins, M.Sc

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.

TTL 0 1 <= 32 <= 64 <= 128 128 a 255

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 }

Prof. Fabian Martins, M.Sc

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:

sendPacket = new DatagramPacket(buffer, buffer.length, groupAddress, porta);


InetAddress

Em loopback:

sendPacket = new DatagramPacket(buffer, buffer.length, loopbackGroupAddress);


SocketAddress
Prof. Fabian Martins, M.Sc Sockets Multicast

11/12

Exerccio

Em grupos, construir dois aplicativos que operem com sockets multicast:

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).

Prof. Fabian Martins, M.Sc

Sockets Multicast

12/12

Potrebbero piacerti anche