RCO2-lab4

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Objetivos

  • Criar redes locais com enlaces redundantes
  • Usar o protocolo STP para que a rede opere com redundância

Introdução

A interligação de segmentos de uma LAN pode conter enlaces redundantes para prover tolerância a falhas: caso um enlace falhe, o que isolaria uma parte da rede, outro enlace pode ser usado para manter a conectividade. No entanto a existência de enlaces redundantes cria loops (“circuitos fechados”) na rede, e isto causa sérios problemas:

  1. Os switches não conseguem localizar corretamente as estações, pois a repetição de quadros para estações ainda desconhecidas, ou quadros em broadcast, faz com que a estação de origem apareça a cada repetição em um segmento diferente da rede.
  2. Quadros em broadcast ficam presos eternamente nos loops, consumindo parte da capacidade da rede. À medida que mais quadros em broadcast forem transmitidos, a capacidade disponível se reduz, até que em algum momento chegue a um colapso.


Stp-exemplo.png


A solução para esse problema é eliminar os loops desabilitando alguns enlaces, de forma que sempre exista apenas um caminho entre cada par de estações na rede. Isto se faz com um algoritmo chamado de Spanning Tree, e que é implementado pelo protocolo STP (Spanning Tree Protocol), definido na norma IEEE 802.1d. Esse protocolo identifica um switch como sendo o nó raiz da rede, e faz com que cada outro switch tenha apenas um enlace em direção à raiz. A seleção do nó raiz depende dos identificadores dos switches, chamados de Bridge ID, e a escolha dos enlaces a serem mantidos depende do custo do caminho até a raiz. O protocolo funciona com o envio periódico de mensagens de configuração, chamadas de BPDU (Bridge PDU), por todos os switches da rede.

Roteiro

O estudo sobre STP usará como conceito uma rede local em que três switchs formam um anel. Essa rede possui uma estrutura típica para uma pequena empresa, como se pode ver na figura abaixo.

LAN-anel-stp.png

Configuração para o Netkit
sw1[type]=switch
sw2[type]=switch
sw3[type]=switch
pc1[type]=generic
pc2[type]=generic
pc3[type]=generic

# Ativação do STP nos switches
#sw1[stp]=on
#sw2[stp]=on
#sw3[stp]=on

sw1[eth0]=sw1-sw2
sw1[eth1]=sw1-port1
sw1[eth2]=sw1-sw3

sw2[eth0]=sw1-sw2
sw2[eth1]=sw2-port1
sw2[eth2]=sw2-sw3

sw3[eth0]=sw1-sw3
sw3[eth1]=sw3-port1
sw3[eth2]=sw2-sw3

pc1[eth0]=sw1-port1:ip=192.168.0.1/24
pc2[eth0]=sw2-port1:ip=192.168.0.2/24
pc3[eth0]=sw3-port1:ip=192.168.0.3/24
  1. Crie o experimento do Netkit correspondente à rede da ilustração 1, interligando o switches e definindo os endereços IP dos computadores.
  2. Inicie o experimento. Quando todas as máquinas virtuais estiverem rodando, desative a interface no switch1 que o interliga ao switch 3; assumindo que seja a interface eth0, você deve executar este comando:
    ifconfig eth0 down
    
    Em seguida tente fazer um ping de alguma máquina virtual para outra. Esse ping funcionou normalmente ?
  3. Reative a interface do switch1 (com ifconfig eth0 up), e repita o ping porém tendo como alvo algum outro computador. Há algum efeito no funcionamento da rede ? O que aconteceu depois disso ?
  4. Execute o tcpdump no computador que é alvo do ping, e colete o tráfego que chega em sua interface eth0. Você precisará usar este comando:
    tcpdump -i eth0 -ln
    
    O que você conclui quanto ao tráfego na rede ? Descreva exatamente o que está acontecendo e qual a causa.
  5. Mantendo o tcpdump em execução desative novamente a interface do switch1 que o liga ao switch3. O que aconteceu no padrão de tráfego mostrado pelo tcpdump ? E como ficou o desempenho da rede ? Como você relaciona isso com o que foi concluído no ítem 4 ?
  6. Ative o protocolo STP em todos os switches usando este comando:
    brctl vlan1 stp on
    
    ... e então repita os passos de 3 e 4. A rede funcionou normalmente desta vez ?
  7. Execute o ping a partir de um computador que está conectado ao switch1 para algum computador conectado ao switch3. Enquanto isto, desative a interface do switch1 que o conecta ao switch3. O ping continuou a funcionar ? Houve alguma interrupção, mesmo que temporária ?
  8. Reative a interface do switch1. Como se comportou o ping enquanto isso ?
  9. O que você conclui sobre o papel do protocolo STP em redes locais em que há ligações alternativas (i.e: a topologia física da rede apresenta laços ou ciclos) ?
  10. Entre os passos 6 e 9 a rede mudou seu funcionamento devido ao uso do STP. Para investigar em detalhes o que esse protocolo fez nos switches, vamos repetir o experimento porém a cada etapa consultando as informações sobre o STP em cada switch. Assim, a cada modificação feita na rede (ativação ou desativação de interfaces), vamos executar os seguintes comandos em cada switch:
    brctl showstp vlan1
    brctl showmacs vlan1
    
    Além disso, vamos também executar o tcpdump na interface do switch1 que o conecta ao switch3:
    tcpdump -i eth0 -ln ether proto stp
    
  11. O protocolo STP se baseia em prioridades dos switches (ou bridges na terminologia do protocolo) e de suas portas, além de custos de enlaces. A partir dessas informações o protocolo desativa seletivamente algumas interfaces de rede de alguns switches, de forma que a rede não apresente caminhos fechados (ou loops). As prioridades de switch e de porta podem ser modificadas para que o gerente de rede tenha algum controle sobre as topologia de rede que o STP pode gerar (isto é, sobre os enlaces da rede que o STP deixará ativados). Verifique na sua rede qual dos switches é o switch raiz (root bridge). Em seguida escolha um dos outros dois switches e execute este comando:
    brctl setbridgeprio vlan1 1000
    
    Qual dos switches é agora o switch raiz ?
  12. Como comentado no passo 11, o STP usa também os custos dos enlaces para decidir quais interfaces de rede desativar. Em redes reais o custo do enlace é definido pela tecnologia da interface de rede, segundo esta tabela (obtida da norma IEEE 802.1d):

    Stp-custos.png

    No entanto, em nossos experimentos com Netkit esse custo deve ser definido manualmente, já que as interfaces ethernet das máquinas virtuais são emuladas. Modifique os custos dos enlaces da sua rede da seguinte forma:

    - Entre switch1 e switch2: 100 Mbps
    - Entre switch1 e switch2: 10 Mbps
    - Entre switch2 e switch3: 1 Gbps

    Isso pode ser feito com o comando:
    brctl setpathcost vlan1 ethN custo
    
    ... sendo que ethN é a interface ethernet (ex: eth0) e custo é um dos valores mostrados na tabela acima.

    Após essas modificações, verifique como estão as informações do STP em cada switch.
  13. O experimento de hoje finaliza com a reprodução em uma rede real do que foi visto com o Netkit. Para isso devem ser usados os switches do laboratório, que devem ser interligados em anel. A condução será feita pelo professor, que mostrará no projetor o comportamento da rede com enlaces redundantes, e o efeito de se ativar o STP nos switches.