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.
Download

i) Criar enlace ponto-a