Redes de Computadores Laboratório 2 Estabelecimento de enlaces ponto-a-ponto Objetivos: i) Criar enlace ponto-a-ponto entre computadores com protocolo PPP ii) Investigar o enquadramento no protocolo PPP Introdução Enlaces ponto-a-ponto, como o próprio nome informa, são enlaces realizados por meios de transmissão dedicados e entre apenas dois equipamentos de rede. Para esta finalidade se usam protocolos ponto-a-ponto, que fazem o envio de dados entre os equipamentos. Ilustração 1: Um enlace ponto a ponto entre duas redes Os dados são transportados dentro de PDUs (Protocol Data Unit, ou Unidade de Dados do Protocolo), que no caso da camada de enlace costumam ser chamadas de quadros (ou frames). Além dos dados, cada PDU contém informações de controle próprias do protocolo de enlace utilizado. Essas informações adicionais fazem parte dos mecanismos implementados pelo protocolo para atender os requisitos de comunicação suportados. Ilustração 2: Quadro PPP O protocolo PPP (Point-to-Point Protocol, definido na RFC 1661, de 1994, mas proposto originalmente em 1989) é um protocolo padrão da Internet para enlaces ponto-a-ponto. Seu formato de quadro , mostrado na ilustração 1, se baseia no quadro do largamente utilizado protocolo HDLC (proposto em 1979), que atualmente está caindo em desuso. Dentre os requisitos da camada de enlace, o PPP implementa o enquadramento (ou sincronização de quadros) usando uma técnica de flag delimitadora, a detecção de erro usando CRC-16 ou CRC-32, e o gerenciamento de enlace usando protocolos auxiliares. Assim, o PPP não faz controle de erros (i.e: não efetua retransmissões e portanto não garante que todo quadro seja entregue no destino) nem controle de fluxo. Esse projeto mais simplificado, se comparado com o HDLC, se deve a melhoria das tecnologias de transmissão em meio metálico, que além de mais velozes se tornam cada vez menos sujeitas a erros. Roteiro Para fazer os experimentos, deve-se criar um enlace PPP entre computadores. O enlace se faz usando-se as interfaces seriais RS-232, conforme mostrado na figura abaixo. Para fazer o enlace com o protocolo PPP, será usado o programa pppd. A rede do experimento será criada usando-se o Netkit, um software que emula redes de computadores. 1. Crie um arquivo de configuração do Netkit com o seguinte conteúdo: pc1[type]=generic pc2[type]=generic r1[type]=gateway r2[type]=gateway pc1[eth0]=rede0:ip=192.168.0.1/26 r1[eth0]=rede0:ip=192.168.0.62/26 r1[ppp0]=serial:rate=115200 pc2[eth0]=rede1:ip=192.168.1.1/24 r2[eth0]=rede0:ip=192.168.1.254/24 r2[ppp0]=serial:rate=115200 pc1[default_gateway]=192.168.0.62 pc2[default_gateway]=192.168.1.254 Salve-o com o nome Lab.conf . 2. Execute o Netkit com o seguinte comando: labstart -p lab1 3. Cada computador da rede será executado em uma máquina virtual e apresentado como um pequeno console. Assim, você deve visualizar quatro consoles na sua tela. 4. Faça o download do arquivo http://www.sj.ifsc.edu.br/~msobral/RCO2/ppp-lab1.tgz, e descompacte-o dentro do diretório lab1/shared. Nas máquinas virtuais r1 e r2 copie o arquivo /hostlab/shared/ppp/options para dentro de /etc/ppp. Observe abaixo como deve ficar o conteúdo desse arquivo em cada um dos computadores. 115200 10.0.0.1: local ipcp-accept-remote nocrtscts persist lcp-echo-failure 10 noauth nodetach debug record /hostlab/shared/r1.log r1 r2 115200 10.0.0.2: local ipcp-accept-remote nocrtscts persist lcp-echo-failure 10 noauth nodetach debug record /hostlab/shared/r2.log 5. Nos computadores r1 e r2 crie um enlace PPP pelas seriais conectadas, usando o programa pppd: pppd ttyS0 Observe as mensagens do PPP, que informam quando o enlace estiver ativado (ou se ocorrer algum erro). 6. Em ambos computadores verifique a interface PPP criada: ifconfig ppp0 7. Teste o enlace: No computador r1: No computador r2: ping 10.0.0.2 ping 10.0.0.1 8. Execute ping em um dos computadores, e simultaneamente visualize o tráfego pela interface PPP: tcpdump -i ppp0 -lne 9. Visualize o conteúdo de quadros PPP: tcpdump -i ppp0 -lnX -s 1520 10. Para observar o conteúdo completo dos quadros, use o programa pppdump: pppdump -h -p /hostlab/shared/r1.log Observe o caractere delimitador. Repare que pppdump não delimita os quadros … 11. Gere mensagens com conteúdo conhecido, tal como “AAAAAAAAAA”, e envie-as pelo enlace PPP. Você pode usar o utilitário ping, usando a opção “-p padrão” (veja o manual online). Observe-as tanto com tcpdump quanto com pppdump. Você consegue identificar os quadros mostrados pelo pppdump ? 12. Gere mensagens com conteúdo conhecido, e que contenham o byte especial 7E H, e as envie pelo enlace PPP. Observe-as tanto com tcpdump quanto com pppdump. O que aconteceu com esse byte ? Obs: para gerar mensagens com byte 7EH faça assim: ping -p 7e 10.0.0.2 13. Repita a experiência anterior, mas incluindo o byte 7DH. 14. Gere uma mensagem que corresponda ao tamanho máximo do campo de dados do quadro PPP, e preencha-a completamente com bytes especiais. Envie-a pelo enlace PPP, e observe-a com tcpdump e pppdump. Qual o tamanho do quadro de fato transmitido ? 15. O arquivo /hostlab/shared/ppp/quadro_errado contém um quadro PPP que foi intencionalmente modificado (i.e. alguns bits foram alterados para simular um erro de transmissão). Injete o conteúdo desse arquivo no enlace em um dos computadores, de forma a ser recebido pelo PPP do outro computador. Monitore seu recebimento com tcpdump. O que aconteceu ? Para injetá-los no enlace PPP, execute esse comando em um dos computadores: cat /hostlab/shared/ppp/quadro_errado > /dev/ttyS0 Para fins de comparação, você pode fazer esse teste usando o arquivo /hostlab/shared/ppp/quadro_correto, que possui o mesmo quadro PPP porém sem erros de transmissão.