Instalação e configuração de túneis multicast com FreeBSD Eduardo Schneider: eduardo@exatas.unisinos.br Maiko de Andrade: maiko@exatas.unisinos.br PRAV Pesquisa em Redes de Alta Velocidade Unisinos Centro 6/6 RESUMO O objetivo do trabalho foi o de tornar o multicast disponível em subredes que não possuem roteadores com suporte multicast. Para tanto, se configurou túneis unicast entre mrouters localizados nestas subredes. A principal motivação para isso foi o de disponibilizar em multicast a transmissão da TV Unisinos em diversos centros, sem onerar demasiadamente a rede. 1 Introdução A falta de suporte multicast nos roteadores nos levou a utilizar túneis unicast como solução para a transmitir o sinal na rede. Os túneis são feitos através de mrouters, que encapsulam os pacotes e os enviam para outro mrouter. Estes, por sua vez, desencapsulam os pacotes e transmitem o sinal em multicast na subrede. Foi decidido utilizar o sistema operacional FreeBSD pois na época em que os testes começaram a implementação do mrouted estava mais estável no FreeBSD. 2 Instalação do FreeBSD A máquina mínima para a instalação é um 486 DX2 66 (máquina mais fraca com a qual testamos), mas é recomendado um Pentium com 16Mb de ram e placa de rede que suporte multicast. 2.1 Instalação do FreeBSD Para instalar o FreeBSD é necessário possuir o CD de instalação ou possuir acesso à Internet (para que possa ser instalado a partir da rede). No caso do CD de instalação, pode-se gerar o disquete de boot pelo CD caso você não consiga dar boot pelo CD. Já na instalação por rede é necessário que tenha-se os disquetes de boot. No fim, tanto um como outro são instalados com as mesmas configurações, e a única opção que irá diferenciar os dois meios de instalação é o modo de instalação, se por CD ou FTP. 2.2 Como Gerar o Disco de Boot Primeiramente serão necessários um disquete formatado e os seguintes arquivos:
boot.flp ( disponível no CD-ROM ou em ftp://ftp.br.freebsd.org/pub/freebsd/ 2.2.6-RELEASE/floppies/boot.flp ). rawrite.exe (disponível no CD-ROM ou em ftp://ftp.br.freebsd.org/pub/freebsd/tools/ rawrite.exe ). Copie os dois arquivos para um diretório, por exemplo C:\TEMP. Em seguida execute o seguinte comando no prompt do DOS: rawrite boot.flp a: 2.3 Inicio da instalação Convém lembrar que esta instalação será baseada em computadores que rodarão somente um sistema operacional e um único disco rígido e a descrição a seguir esta relacionada com a instalação do FreeBSD 4.0, sendo que se você utilizar este tutorial para instalar outras versões a descrição a seguir torna-se inútil. Se o seu computador possui a opção de boot pelo CD, insira-o na unidade de CD- Rom e reinicie seu computador. Caso contrário após a criação do disco de boot, coloque o disco driver a e reinicie o computador. Após alguns minutos aparecerá a uma mensagem como esta: Use? for file list or press Enter for default Boot. Pressione a tecla enter e aparecerá um menu com três opções. Entre na opção que diz Skip kernel configuration and continue with installation. Na próxima tela que aparecer selecione a opção Standard como modo de instalação. Na próxima tela se a máquina possuir mais de um HD escolha em qual será instalado o sistema operacional. O próximo passo será a criação das partições para o FreeBSD, isto ocorre após a escolha da opção de instalação. Aparecerá a tela do FDISK conforme a figura. Se não existir outra partição no HD crie uma teclando a letra a, esta opção permitirá que todo o HD faça parte do FreeBSD, após esta etapa tecle a letra q e será finalizado o FDISK. A próxima tela será a da escolha do gerenciador de boot. Escolha a opção Standard, sem gerenciador de boot, através das setas e do espaço. E pressione a tecla enter. Após isto aparecerá uma mensagem leia-a e tecle enter. figura 1 Tela do FDISK
A tela seguinte será a do DiskLabel, nele vai ser dividida a partição criada anteriormente, pressione a tecla A no qual aceitará a configuração automática e após pressione a tecla Q. A seguir é mostrada uma tela onde você fará a escolha da distribuição, no nosso caso será instalada Kernel - Developer, para isto marque a opção e aperte a tecla enter. Responda no as próximas três perguntas que o programa de instalação fará e apenas tecle enter na próxima tela. 2.4 Escolhendo o meio de instalação Nesta fase será escolhido o meio que será instalado, os dois meios mais comuns para a instalação são por CD-ROM ou FTP, existe outros modos de instalação que são poucos usados e não vale a explicação, escolha o meio de instalação e siga as instruções logo abaixo para cada tipo de instalação. 2.5 Instalação com CD-ROM Se a escolha for por CD-ROM será necessário que no boot o sistema operacional tenha detectado o driver do CD-ROM e o CD de instalação do FreeBSD já esteja no driver. Na tela sequinte confirme respondendo yes a pergunta, para que o FreeBSD comece a ser instalado. 2.6 Instalação por FTP A instalação por FTP requer algumas informações como o host, domínio, gateway, nome do servidor, endereço IP e a mascara. É aconselhável que já possua estas informações antes da instalação, bem como o endereço de onde está o FreeBSD de instalação, isto tudo se for escolhida a interface de rede ed1. Coloque os dados necessários de acordo com o campo. Após colocar todos os campos pressione OK, para terminar. Após uma tela aparecerá onde constará uma lista de site onde contém o FreeBSD, se escolher a opção URL, terá que especificar a URL que conterá a imagem do FreeBSD para instalação. 2.7 Finalizando a Instalação Após a instalação aparecerá uma tela perguntando se você quer configurar a rede, responda que sim e escolha xl0 e tecle enter ele irá perguntar então se você quer utilizar DHCP responda no pois a máquina deve ter um IP fixo. Configure então a sua rede. Após corretamente configurada dê ok. Então o programa irá lhe perguntar se você quer tornar a interface up, responda no Após isto responda yes a próxima pergunta que habilitara os usuários desta máquina aptos a utilizar o serviço de ftp. Responda no as próximas 2 perguntas pois não utilizaremos nfs, responda também no a seguinte pois não configuraremos opções do console. Configure o relógio respondendo yes as próximas perguntas, então escolha a região do mundo onde você está. Responda no as próximas duas perguntas. A próxima pergunta é se você quer instalar algum pacote adicional responda no, responda yes a próxima pergunta para adicionar um usuário selecione a opção User tecle enter e configure a conta do novo usuário, vá adiante e configure o password do root. Após isto responda
no a próxima pergunta e o FreeBSD estará instalado. Remova o CD-ROM da unidade e reinicie o sistema. Espere carregar o FreeBSD e entre com um login e senha para continuar com a instalação do mrouted. 2.8 Obtendo mais Informações sobre o FreeBSD Existe alguns sites na Internet que contém explicações sobre o FreeBSD e até download do sistema operacional. Um desses sites, que inclusive esta em português é o Br FreeBSD Home Page (www.br.freebsd.org ). Lá é possível obter ajudas e links para outras páginas. 2.9 Modificações necessárias no kernel Para utilizar a máquina como mrouter é necessária uma modificação no kernel, para habilitar a transmissão. Para fazer esta modificação você deve ser o root da máquina, então basta entrar no diretório onde fica o kernel que é: /usr/src/sys/i386/conf/, através do comando: cd /usr/src/sys/i386/conf/ e editar o arquivo GENERIC que contém as configurações do kernel. Para isto utilisa se o vi que é um editor de textos do linux, o comando é bastante simples vi GENERIC então o arquivo estará aberto para que as alterações sejam feitas, então com as setas do teclado navegue no documento até a última linha que contenha options seguido de alguma opção, então pressione a tecla o do seu teclado que irá abrir uma nova linha no modo de inserção, então basta acrescentar a seguinte linha options MROUTING, apartir daí salve o arquivo e saia do editor através dos seguintes passos: tecle ESC digite :wq que irá salvar e sair do programa. Editado o arquivo é só dar os comandos para compilação do kernel que são os seguintes: config GENERIC, após este comando vá para o diretório que no qual se encontrarão os arquivos para o novo kernel cd /../../kernel/generic, apartir daí é só compilar digite make depend, make e make install após ele completar as operação basta reiniciar a máquina e você terá uma máquina apta a fazer túneis multicast. 3 Configuração dos túneis Multicast 3.1.1 Configuração do MROUTED e criação dos túneis Inicialmente deve-se editar o arquivo /etc/defaults/rc.conf, lá conterá uma linha que inicia com mrouted_enabled, este é o comando para habilitar a máquina a executar o mrouted na inicialização. Para isto coloque a palavra YES no lugar de NO. O arquivo /etc/mrouted.conf contém as informações a serem usados pelo mrouted. O Formato deste arquivo é livre, espaços brancos e caracter de linha nova não tem significado. Para criar túneis é necessária a seguinte linha: tunnel local_addr remote_addr [metric m][threshold t] [rate_limit b]
O comando tunnel é usado para estabelecer túnel um link entre o IP local (local_addr) e um IP remoto (remote_addr), existe algumas opções do comando tunnel além de especificar os endereços das ligações dos túneis existe opções como o rate_limit que indica o tamanho da banda em Kbps. O valor default é de 500, usando o valor 0 a largura da banda passará a ser largura de banda máxima da rede. Existe também o comando metric que especifica o custo associado com o envio do datagrama em uma determinada interface ou túnel. Esta opção pode ser usado para influenciar na escolha das rotas. A opção threshold especifica o mínimo TTL (Time to Live) requerido para o multicast datagrama ser transmitido em uma determinada interface ou túnel. Esta opção controla o escopo do multicast datagrama. (O TTL da transferência de pacotes é comparado somente com o threshold, isto não é decrementado pelo threshold.) Em geral, todos os mrouted conectados para uma sub-rede particular ou túnel deverá usar mesma métrica e threshold para esta sub-rede ou túnel. 3.2 Algumas dicas Como você provavelmente irá acessar o mrouter por remotamente será necessário que você tenha criado uma conta de usuário, pois não é possível logar na máquina como root, para que você possa acessar a máquina remotamente basta editar com o vi o arquivo /etc/group e na linha que contém wheel:*:0:root coloque uma vírgula e o nome do usuário que terá direito de virar root, ficando assim wheel:*:0:root,prav no nosso caso o usuário é o prav. Quando o computador for ligado e o sistema operacional for carregado, o deamon do mrouted não irá iniciar a não ser que você coloque no arquivo /etc/rc.local a sequinte linha /usr/sbin/mrouted. É como um autoexec.bat do FreeBSD por exemplo. 3.3 O programa mrinfo O programa mrinfo é responsável por coletar informações dos mrouters e exibi-las na tela. O programa envia uma mensagem IGMP perguntando quem está cadastrado no grupo multicast e se os outros mrouters tem dados mais atualizados. Se tiverem, ele pede os dados e exibe-os na tela. 3.4 Problemas encontrados O FreeBSD possui uma versão do Mrouted que é a 3.9. Nos testes tivemos que usar a versão 3.8, pois o roteador Intel 550 (utilizado no PRAV) não deixa passar os pacotes do Mrouted 3.9, por algum motivo ainda desconhecido. Se não existir roteador Intel 550, a versão 3.9 deve funcionar. A versão 3.8 do mrouter está disponível em http://prav.unisinos.br. Outro problema também relacionado com o roteador Intel 550 é que se o mrouter estiver ligado direto no roteador ele acaba perdendo pacotes. Um caso isolado, mas que também acontece, é o fato de um de nossos mrouters parava de responder e não sabíamos bem por quê. Finalmente descobrimos que as
pessoas que trabalhavam na mesma sala onde ficava o mrouter desligavam o mesmo para ligar a cafeteira. 3.5 Programa de gerência dos túneis Uma dificuldade que encontramos foi gerenciar os túneis, pois algumas vezes eles saíam do ar por determinado motivo e, para saber, tinha que se entrar no mrouter principal e executar o mrinfo, ou até mesmo ligar pra alguém que esteja na subrede, para saber se está recebendo o sinal multicast. Para solucionar isto foi desenvolvido um programa CGI em Perl, que recebe a saída do programa mrinfo e devolve uma página html que contém uma tabela na qual estão os números IP dos mrouter e uma informação se o link está UP (cor verde) ou DOWN (cor vermelha), como pode ser visto na figura 2. Figura 2 Aqui está o código fonte do programa CGI em linguagem perl: #!/usr/bin/perl open(mrinfo, "/usr/sbin/mrinfo -n "); <MRINFO>; print "Content-type: text/html\n\n"; print "<html><head><title>status dos Tuneis</title><meta http-equiv=refresh content=15><meta http-equiv=pragma content=no-cache></head><body bgcolor=#ffffff>\n"; print "<center><h2>status dos Tuneis</h2></center>\n"; print "<p><center><table border cols=2 cellspacing=0 width=40\%>\n"; print "<tr><td><center><b>tunnel</b></center></td><td><center><b>status</b></center> </td></tr>\n"; while (<MRINFO>) {
chop; $line = $_; ($c1,$c2,$c3,$c4,$dest) = split / /, $_; print "<tr><td>".$dest."</td>"; if ($line =~ /down/) { print "<td bgcolor=#ff0000><center><b>down</b></center></td>"; } else { print "<td bgcolor=#33ff33><center><b>up</b></center></td>"; } } print "</td>\n"; print "</table></center></body></html>\n"; close MRINFO; 4 Conclusão Atualmente existem 8 subredes dentro da Unisinos e uma na rede do Rmav-RS, que estão recebendo sinal multicast através de mrouters. A solução do problema das subredes que não possuem roteadores com suporte multicast, utilizando mrouters atingiu seu objetivo, mostrando funcionalidade, escalabilidade e praticidade desde sua instalação e configuração até sua manutenção. Esta solução acaba por ser praticamente sem custo pois utiliza uma máquina de baixo poder de processamento conforme já foi citado e software free desde o sistema operacional até o deamon do mrouted.