RCO3-2014-1-CST Redes de Computadores 3 - CST

De MediaWiki do Campus São José
Revisão de 21h32min de 27 de fevereiro de 2014 por Eraldo (discussão | contribs) (→‎Avaliação)
Ir para navegação Ir para pesquisar

Avaliação

  • 1 prova escrita - 1 conceito
  • 10 desafios de laboratório - 1 conceito
  • 1 projeto final - 1 conceito
  • 1 recuperação - recuperação das avaliações acima - prova escrita

Planejamento das Aulas 2014-1

Aula Data Horas Conteúdo Recursos
1 2 Revisão de conceitos em redes. Plano de Ensino. Experimento de Rota Estática dos Labs do NETKIT. Lab. Redes 2
2 2 Caracterizar as funcionalidades da camada de rede. Protocolos de Roteamento. Protocolo de Estado de Enlace Lab. Redes 2
3 2 Continuação experimento de rota estática - desafio. Lab. Redes 2
4 2 Laboratório de Estado de Enlace. Lab. Redes 2
5 2 Protocolo de Vetor de Distância. Lab. Redes 2
6 2 Roteamento em Redes Adhoc Lab. Redes 2
7 2 Revisão para a avaliação. Lab. Redes 2
8 2 Avaliação I Lab. Redes 2
9 2 Experimento de Rota Estática com Quagga Lab. Redes 2
10 2 Introdução ao Protocolo RIP. Laboratótio Básico Lab. Redes 2
11 2 Protocolo RIP. Laboratório Avançado. Lab. Redes 2
12 2 Introdução ao Protocolo OSPF. Laboratório Básico Lab. Redes 2
13 2 LAboratório de Estado de Enlace. Lab. Redes 2
14 2 Laboratório de Àreas no OSPF Lab. Redes 2
15 2 Desafio OSPF Lab. Redes 2
16 2 Introdução ao Protocolo BGP. Roteamento na Internet. Lab. Redes 2
17 2 Laboratório 1 de BGP Lab. Redes 2
18 2 Laboratório 2 de BGP Lab. Redes 2
19 2 Roteamento Multicast Lab. Redes 2
20 2 Roteamento Multicast Lab. Redes 2
21 2 Mobilidade IP Lab. Redes 2
22 2 Mobilidade IP Lab. Redes 2
23 2 Apresentação Projeto Final Lab. Redes 2
24 2 Desenvolvimento Projeto Lab. Redes 2
25 2 Desenvolvimento Projeto Lab. Redes 2
26 2 Desenvolvimento Projeto Lab. Redes 2
27 2 Apresentação Projeto Final Lab. Redes 2
28 2 Recuperação Lab. Redes 2
TOTAL 56

Aula 1 - 14/2/2014

OBJETIVOS DA AULA

  • Apresentar o plano de Ensino;
  • Rever conceitos de rede;
  • Instalar o NETKIT;
  • Aprender a utilizar o NETKIT;
  • Realizar o experimento de Rota Estática dos Labs do NETKIT;
  • Implementar o laboratório desafio despertando para o problema de loops em roteamento.

Plano de Ensino

Apresentação do cronograma. Avaliações: Avaliação I e II (escritas), Desafios (enviados por email), Projeto Final e Recuperação (prova escrita).

Conceitos em rede

Discussão informal com os alunos.

Instalação do NETKIT

O NETKIT deve estar instalado no lab de redes II. O procedimento a seguir é para quem quiser instalar em casa.

1.Baixar os seguintes arquivos para este diretorio:

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
NOTA: para iniciar as máquinas em paralelo use lstart -p
    • Para parar o laboratório:
lhalt
Note que este comando não remove as imagens dos discos das 
máquinas (.disk). Para remover use lcrash


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

ExercicioConfEstaticaZebra.png

  1. 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 demonstrar a passagem de pacotes ICMP do ping por estas rotas.
  2. 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.
  3. 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.
  4. Adicione os resultados ao relatório demonstrando que H3 é alcançado. Para isto use o tcpdump e as tabelas de roteamento de interesse.
  5. Prepare um exemplo de roteamento mostrando a formação de um loop quando H1 transmite para H2. Para testar use um ping que gere um TIME TO LIVE de tamanho 10.

PROBLEMAS COMUNS:

  • Esquecer de rota reversa. O ping REPLY não voltará;
  • Usar como IP de um gateway de encaminhamento, o próprio endereço do roteador;
  • Usar como IP de um gateway de encaminhamento um endereço IP não pingável;
  • Interfaces não estão configuradas com endereço IP ou não estão UP (ativas);
  • Netkit não funciona porque o diretório do netkit não está em ~/netkit. Ajustar o caminho nas variáveis;
  • As interfaces do roteador ou host não aparecem ou não estão com IP configurados: problema no lab.conf. O nome da máquina no lab.conf é o mesmo do .startup? O arquivo .startup configura corretamente a interface?
  • Você está em dúvida se uma máquina linux está configurada para ser roteador? Faça:
 cat /proc/sys/net/ipv4/ip_forward

Se resultar em 1 está configurada. Se quiser configurar, fazer:

 echo 1 > /proc/sys/net/ipv4/ip_forward
NOTA: as máquinas UML do netkit já estão configuradas para roteador.

Referências

Aula 2 - 19/2/2014

OBJETIVOS DA AULA

  • Finalizar apresentações da aula anterior;
  • Caracterizar as funcionalidades da camada de rede;
  • Compreender a necessidade de algoritmos de roteamento para construção dinâmica de tabelas de roteamento.
  • Compreender o funcionamento de um algoritmo de estado de enlace;
  • Construir a tabela de custos manualmente de um algoritmo de estado de enalce.

Media:Aula1-CamadaRede-EstadoEnlace.pdf

Aula 3 - 21/2/2014

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.


Programa C do livro do Tanenbaum com o algoritmo link-state:

#include <stdio.h>             //  Network from Tanenbaum text
#define MAX_NODES 6            //  Distance from i to j node
#define INFINITY 1000000000    //  0 if i=j or not connected

int n;
int dist[MAX_NODES][MAX_NODES] =    
{ //     A  B  C  D  E  F  
	{0, 2, 5, 1, 0, 0 }, 
	{2, 0, 3, 2, 0, 0 },
	{5, 3, 0, 3, 1, 1 },
	{1, 2, 3, 0, 1, 0 },
	{0, 0, 1, 1, 0, 2 },
	{0, 0, 1, 0, 2, 0 }};

typedef enum {permanent, tentative} labelID;


int num_perm=1;
struct state {
	int predecessor;
        int length;
        labelID label;
} state[MAX_NODES];

void shortest_path(int s){
 int i, k, min;
 n = MAX_NODES;
 for(i=0; i<n; i++) {
        if (dist[s][i]!=0) {
                state[i].predecessor = s;
                state[i].length = dist[s][i];
        }else {
                state[i].predecessor = -1;
                state[i].length = INFINITY;
        } 
        state[i].label = tentative;
 }
 state[s].length = 0;
 state[s].label=permanent;       
 do {
        min = INFINITY;
        for (i=0; i<n; i++) {
                if( state[i].label == tentative && state[i].length < min) {
                        min=state[i].length;
                        k=i;
                }
        }
        state[k].label = permanent; // No de menor custo se torna permanente
        num_perm++;
        for(i=0; i<n; i++) {
                if(dist[k][i] != 0 && state[i].label == tentative) 
                        if(state[k].length+dist[k][i] < state[i].length) {
                                state[i].predecessor = k;
                                state[i].length = state[k].length+dist[k][i];
                        }
        }
 } while(num_perm!=MAX_NODES);
}

main()
{
  int i,dest;
  printf("entre com o destino => ");
  scanf("%d", &dest);
  shortest_path(0);
  i=dest;
  printf("CAMINHO REVERSO\n");
  do {
     printf("\n%d ",state[i].predecessor);
     i=state[i].predecessor;
  } while (state[i].predecessor!=-1);
  printf("\nFIM\n");
}