RCO3-2012-1-ERALDO
Professor
Nome do Professor: Eraldo Silveira e Silva
email: eraldo@ifsc.edu.br
Material de Referência
Aulas
AULA DE 1/03/2012
Objetivos da Aula
-Apresentação do Plano de Ensino
-Revisão de conceitos em redes de pacotes e da estrutura da Internet
-Caracterizar as funcionalidades da camada de rede
-Compreender a necessidade de algoritmos de roteamento para construção dinâmica de tabelas de roteamento;
Media:Aula1-CamadaRede-EstadoEnlace.pdf
AULA DE 8/03/2011
Objetivos da Aula
- Revisar o algoritmo de estado de enlace;
- Repassar um exercício para os alunos implementar;
- Implementar o laboratório
- Conferir resultados com o exercício
- Implementar o desafio
- Verificação dos resultados em sala.
15/03/2012
Objetivos
-Apresentar o algoritmo vetor de distância;
-Discutir problema de contagem infinita e uma solução: reverso envenenado;
-Apresentar um java applet para calcular rotas com algoritmos SP e VD;
Tarefa:
Fazer os exercícios da nota de aula;
22/03/2012
OBJETIVOS DA AULA
-Instalar o NETKIT
-Aprender a utilizar o NETKIT
-Realizar o experimento de Rota Estática dos Labs do NETKIT
-Implementar o lab desafio
Instalação do NETKIT
1.Baixar os seguintes arquivos para este diretorio:
- http://www.sj.ifsc.edu.br/~eraldo/RCO3/netkit-2.8.tar.bz2]
- http://www.sj.ifsc.edu.br/~eraldo/RCO3/netkit-filesystem-i386-F5.2.tar.bz2]
- http://www.sj.ifsc.edu.br/~eraldo/RCO3/netkit-kernel-i386-K2.8.tar.bz2]
2.Descompactá-los usando:
tar xvfj netkit-2.8.tar.bz2 tar xvfj netkit-filesystem-i386-F5.2.tar.bz2 tar xvfj netkit-kernel-i386-K2.8.tar.bz2
3.Editar ~/.bashrc ou ~/.profile e inserir as variáveis
export NETKIT_HOME=~/netkit export PATH=$PATH:$NETKIT_HOME/bin export MANPATH=:$MANPATH:$NETKIT_HOME/man
4,Testar a instalação
. ~/.profile cd $NETKIT_HOME ./check_configuration.sh
Aprendendo a utilizar o NETKIT
Laboratório de Rota Estática do NETKIT
Baixar o laboratório daqui e descompactá-lo:
Para executar o laboratório, basta entrar no diretório e fazer:
lstart
Para parar o laboratório:
lhalt
Desafio
Seja a rede abaixo com os seguintes prefixos:
- SN1 : 200.10.1.0/24
- SN2 : 200.10.2.0/24
- SN3 : 200.10.3.0/24
- SN4 : 200.10.4.0/24
- SN5 : 200.10.5.0/24
- SN6 : 200.10.6.0/24
- SN7 : 200.10.7.0/24
- SN8 : 200.10.8.0/24
- Configure estaticamente os roteadores, usando o Netkit, de forma que a rota entre H1 e H2 passe pelas subnets SN2,SN5 e SN6 na transmissão de pacotes de H1 para H2 e passe por SN6 e SN3 para transmissão de pacotes de H2 para H1. Teste a configuração com um ping de H1 para H2. Capture pacotes com o tcpdump em R3 e R4 de forma a demondtrar a passagem de pacotes ICMP do ping por estas rotas.
- Monte um pequeno relatório mostrando as capturas da tela da execução do tcpdump e explicando o sucesso dos resultados. Coloque também as tabelas de roteamento dos roteadores envolvidos (use route -n) e explique cada uma das linhas das tabelas de roteamento.
- Na configuração anterior, acrescente um hospedeiro H3 na rede SN1, mas com endereçamento da rede SN8. Faça este hospedeiro ser "pingável" a partir de H2. A rota de H2 para H3 deve passar por SN4.
- Refaça o relatório demonstrando que H3 é alcançado. Para isto use o tcpdump e as tabelas de roteamento de interesse.
Referências
29/03/2012
OBJETIVOS DA AULA
- Exercícios de preparação para avaliação
Lista de Exercícios
- Fazer em duplas;
- Entregar até o final da aula: será usado para melhorar o conceito da avaliação.
5/04/2012 - Aula dos dois primeiros tempos
AVALIAÇÂO I
5/04/2012 - Aula dos dois últimos tempos
OBJETIVOS DA AULA
- Apresentar o software Quagga;
- Explorar a forma como a atabela de roteamento é atualizada no Linux;
- Realizar gerenciamento de interfaces e roteamento estático com o Quagga usando o Netkit;
O Pacote Quagga
O pacote Quagga fornece um conjunto de processos (daemons) com facilidades para a construção da tabela de roteamento de um sistema. O projeto Quagga é derivado do conhecido pacote Zebra. O esquema abaixo mostra a estrutura do Quagga.
Acima do kernel se executam processos especializados para a configuração da tabela de roteamento. Note que a tabela de roteamento é mantida pelo kernel do Sistema Operacional Linux/Unix e qualquer modificação será realizada a partir da API (Application Programming Interface) do sistema. O processo Zebra centraliza todo o gerenciamento da tabela recebendo e repassando informações para outros processos que executam um determinado protocolo de roteamento. Por exemplo, no esquema mostrado existem 3 processos responsáveis pela execução dos protocolos BGP, RIP e OSPF. Como será visto posteriormente, é possível executar vários protocolos de roteamento dinâmico simultaneamente.
Nota: Configurações estáticas também deverão ser realizadas pelo QUAGGA!
Cada processo do Quagga possui o seu próprio arquivo de configuração e um terminal para receber comandos (um processo shell chamado vtysh). Cada terminal se comunica com seu deamon por uma porta específica. No arquivo do Zebra deverão constar as configurações estáticas.
Os deamons do sistema são chamados pelos seguintes nomes:
- zebra (acesso pela porta 2601 no vty);
- ripd (acesso pela porta 2602 no vty);
- ripngd (acesso pela porta 2603 no vty);
- ospfd (acesso pela porta 2604 no vty);
- ospf6d (acesso pela porta 2606 no vty);
- bgpd (acesso pela porta 2605 no vty);
Os deamons possuem arquivos de configuração por default localizados normalmente no diretório /etc/quagga e possuindo a terminação conf: por exemplo: zebra.conf para o processo zebra. Entretanto será comum usarmos arquivos de configuração fornecidos na linha de comando:
#zebra -d -f zebra\_custom.conf.
Nos arquivos de configuração podemos colocar informações tais como senhas para o terminal vty, configurações de depuração, de roteamento e de log. O que segue aos pontos de exclamação (vale também \#) são comentários.
Através do Zebra (e seu arquivo de configuração) é possível ligar/desligar interfaces e atribuir endereços as mesmas. Também pode-se acrescentar rotas:
Exemplo de arquivo de configuração para o deamon zebra:
! ! Zebra configuration file ! hostname Router %password zebra %enable password zebra ! Wired interface interface eth0 ip address 10.10.10.3/24 ! Wired interface interface eth1 ip address 10.10.30.1/24 ip route 10.10.20.0/24 10.10.30.2 ! log stdout !poderia ser, por exemplo, log file /var/log/quagga/zebra.log !
Confira aqui o item 4 do manual do Quagga
Confira aqui com amis detalhes como o zebra trabalha com o Linux e as diferenças entre os termos RIB e FIB:
Olhando o tutorial acima observa-se que a tabela de roteamento (encaminhamento) pode ser modificada manualmente (via route e ifconfig), via protocolos de roteamento (através do Zebra) ou ainda via redireções ICMP. Este último caso pode ser verificado aqui:
O ROTEIRO DO EXPERIMENTO
ETAPA 1 - Construindo rotas estáticas usando o QUAGGA
OBS: Esta etapa já está implementada no laboratório a ser baixado!
Para fins de ilustração segue os passos de montagem do laboratório. Conforme comentado anteriormente, quando o QUAGGA for utilizado para roteamento dinâmico, as rotas estáticas e possíveis manipulações nas interfaces devem ser realizadas pelo próprio \textit{zebra}. Neste sentido vamos trabalhar como colocar rotas e ativar/desativar interfaces pelo Zebra.
- Construir, usando o netkit, um cenário conforme a figura abaixo:
Para tanto faça o seguinte:
- Criar um diretório chamado LabQuaggaRotaEstatica. Todas as operações
deverão ser realizadas a partir deste diretório;
- Criar o lab.conf com a configuração desejada;
- Criar os subdiretórios para cada roteador e hospedeiro;
- Construir normalmente os arquivos de configuração para os
hospedeiros: H1.startup etc. Coloque os comandos para a configuração das interfaces e do roteador default. O zebra não se executará nos hospedeiros;
- Cada roteador deverá executar o deamon zebra da forma:
zebra -d -f /hostlab/R1/zebra.conf
Para tanto, configure os arquivos de startup dos roteadores para que executem o zebra desta forma;
- Dentro de cada subdiretório de roteador (no diretório do laboratório)
coloque o arquivo de configuração do zebra.conf; Lembre-se que este diretório estará mapeado em /hostlab das máquinas virtuais;
- No arquivo zebra.conf deverão ser configuradas as interfaces do
roteador usando os comandos de interface conforme colocado acima;
- Ainda no arquivo de configuração do zebra, deve-se estabelecer as rotas
estáticas. Baseando-se nas configurações mostradas como exemplo, configure devidamente cada roteador;
- Coloque o cenário em execução e teste a conectividade dos hospedeiros;
ETAPA 2 - Observando o estado do sistema
Usando o vtysh (ou o telnet) podemos logar no zebra. A patir desta sessão podemos visualizar o estado do sistema e alterar configurações previamente estabelecidas. Vamos ao procedimento:
- Solicitar uma sessão com o vtysh na porta 2602 (do zebrad);
- Verifique o estado das interfaces usando o comando:
show interface
- Verifique se o roteador está habilitado para roteamento:
show ip forwarding
- Verifique o estado da tabela de roteamento usando o comando:
show ip route
- Verifique a configuração atual do roteador:
show run
- Sair do vtysh com quit
#exit #quit
NOTA: O termo FIB é associado a tabela de encaminhamento de um sistema sendo que na listagem mostrada as rotas marcadas com \* foram instaladas na FIB do kernel do linux. A FIB possui uma entrada para cada rede de destino. O Zebra mantém a RIB que pode conter várias rotas para um mesmo destino. É a partir da RIB que é montada a FIB.}
As rotas indicadas foram ``aprendidas a partir de redes diretamente
conectadas (C) ou instaladas estaticamente (S). As rotas poderiam ainda ter
sido apreendidas por protocolos de roteamento dinâmico ou ainda rotas
estabelecidas pelo próprio kernel.
ETAPA 3 - Modificando a configuração do terminal
Quando logamos no zebra entramos em um modo que permite apenas observar o estado do sistema. Para modificar a configuração temos que entrar em um modo
- Entrar em H1 e deixar o terminal pingando em H3:
ping 200.10.20.1
- Entrar no zebra em R1 com vtysh
vtysh 2061
- Entrar com o comando para alterar configuração do terminal:
conf t
- Entrar com a interface a ser operada:
interface eth0
- Desative a interface
shutdown
- Verifique o ping em H1;
Restaure a interface: no shutdown
- Sair do modo configuração
quit
- Sair do modo enable
quit
- Listar novamente a tabela de roteamento e verificar se retornou a
normalidade:
show ip route
Desafio
Considere a rede abaixo com os seguintes prefixos:
- SN1 : 200.10.1.0/24
- SN2 : 200.10.2.0/24
- SN3 : 200.10.3.0/24
- SN4 : 200.10.4.0/24
- SN5 : 200.10.5.0/24
- SN6 : 200.10.6.0/24
- SN7 : 200.10.7.0/24
- SN8 : 200.10.8.0/24
Configure estaticamente os roteadores, usando o zebra, de forma que a rota de H1 para H2 passe pelas subnets 1,4 e 8, e o retorno, pelas subnets 8,6,5,2 e 1.
12/04/2012 - Aula de Introdução ao Protocolo RIP
OBJETIVOS DA AULA
- Apresentar as características básicas do protocolo RIP;
- Configurar uma rede simples com o Protocolo RIP.
Características do Protocolo RIP
- Protocolo de vetor de distâncias: uma evolução do Gateway Information Protocol da Xerox;
- No começo da década de 80 os sistemas UNIX o incluiram em servidores para que estes atuassem como roteadores;
- Descrito nas RFCs 1058 (RIPv1) e RFCs 1388, 1723, e 2453 (RIPv2);
- O RIP é baseado no algoritmo de vetor de distância e utiliza como métrica o número de hops ou saltos entre roteadores. Uma rede diretamente conectada tem hop 0. Uma rede ligada diretamente a um roteador vizinho tem contador 1. Um destino com contador de hop 16 é considerado inalcançável;
- O RIPv1 é um protocolo de roteamento classfull (redes classe A,B,C);
- O RIPv2 possui as seguintes características adicionais:
- Suporte para máscaras de tamanho variável (VLSM);
- As mensagens de atualização de rota (updates) são realizadas via multicast no endereço 224.0.0.9;
- As atualizações de rota podem ser autenticadas com senhas criptografadas;
- Suporta anuncio de rotas por roteadores sem RIP: campo next-hop router na mensagem;
- Se utiliza da porta UDP 520 para toda a troca de pacotes;
- O protocolo RIP é interessante para uso em pequenas redes;
Funcionamento Básico do RIP
Um roteador RIP envia, a cada 30s, toda a sua tabela de roteamento para todos os roteadores diretamente conectados a ele, mesmo que não exista nenhuma mudança nesta tabela! Desperdício de banda...
O RIP classifica os roteadores em ativos e passivos. Os roteadores ativos enviam normalmente suas tabelas de roteamento para seus vizinhos enquanto os passivos somente escutam e atualizam suas rotas.
A operação típica do RIP usa dois pacotes: requisição e resposta. Ao ser iniciado, um roteador envia pacotes de requisição por todas as suas interfaces (a versão 1 usa endereço broadcast 255.255.255.255 e a versão usa multicast no endereço 224.0.0.9). Pacotes de requisição serão sempre respondidos por pacotes de resposta. Um pacote de resposta pode conter até 25 rotas. Estes pacotes nunca serão encaminhados por outros roteadores, ou seja, um roteador sempre aprende através de seus vizinhos}.
O roteador agrupa a informação das várias tabelas de roteamento recebidas para construir a sua própria tabela, escolhendo os caminhos com menor distância ou hops. Uma rota que não é atualizada durante 3 min é removida ou colocada com custo infinito (poisened reverse).
Um roteador, analisando um pacote de resposta, deve incluir eventuais novas redes a sua tabela de roteamento ou trocar rotas de redes existentes se as rotas recebidas possuem menores métricas