Após o fim do trabalho com o Napster, eu e o Fabrício passamos a estudar o Multicast e suas aplicações. No protocolo IP há três maneiras de se enviar um pacote:
Estudamos como os pacotes multicast são roteados, e os principais protocolos de roteamento, PIM e DVMRP. Não entrarei em detalhes sobre o funcionamento deles, o que pode ser visto aqui. Ambos os protocolos utilizam túneis IP para o transporte entre roteadores não multicast, isto é, quando o pacote chega em um roteador multicast ele descobre qual o próximo roteador multicast onde o pacote deve chegar, coloca um cabeçalho IP "ao redor" do pacote, com endereço destino sendo o IP do próximo roteador multicast, e o envia como se fosse um pacote IP normal. Quando o pacote chega no roteador multicast seguinte o processo se repete, até chegar ao destino.
Conhecido o funcionamento dos protocolos, começamos a pesquisar aplicações que utilizam o multicast. Sua principal aplicação é videoconferência, e era exatamente o uso que queríamos fazer do multicast. Os principais aplicativos são:
Existem outros aplicativos que podem ser utilizados em conjunto com o sdr, como o wb - Whiteboard Tool, um quadro branco onde pode-se fazer desenhos, mas que não foi testado por nós.
O passo seguinte foi a criação de uma página web com instruções de como instalar e configurar esses aplicativos nas diversas plataformas onde realizamos testes: Windows, Linux, FreeBSD e Solaris. Em todas elas o processo é bastante simples.
Também fizemos uma página informando
como instalar e configurar o mrouted, o roteador multicast.
Ele é um programa que roda em Unix, e utiliza o protocolo
DVMRP. Uma vez que ele esteja rodando em uma máquina, todas
as outras da mesma rede têm acesso ao multicast.
O mrouted é configurado criando-se os túneis com
outros roteadores, permitindo a conexão de várias redes
distintas.
Nos testes feitos, tentamos configurá-lo em Linux e em
FreeBSD. No FreeBSD não houve nenhum problema, visto que o
mrouted foi feito primeiramente para essa plataforma. Com o Linux,
tivemos diversos problemas de compilação, porque o
roteamento precisa ser ativado no kernel, não sendo padrão.
Conseguimos compilar, mas mesmo assim ele não rodava.
Alguns meses depois, tentamos novamente, utilizando agora o kernel
2.4 do linux. Continuamos tendo alguns problemas para compilar, mas
acabou funcionando, e agora temos uma máquina com linux rodando
o mrouted (mas o nosso roteador principal roda FreeBSD).