Relatório do Laboratório de Redes 5 Professor Valter Roesler Diogo Costa 180188 Lucas Magrini Rigo 161064 1) Instalar o software Polycom PVX e estabelecer uma chamada em duplas. Medir o atraso ida e volta da transmissão com câmera (não é com captura de tela). Disparar o “xnote stopwatch” na máquina A. A máquina A filma (com a webcam) a tela da máquina A, transmitindo essa imagem para a máquina B. A máquina B filma a tela. Na máquina A é recebida a imagem transmitida, do seu próprio cronômetro. Captura-se a tela e obtém-se o atraso. Fizemos 2 amostragens. Segue as figuras: No primeiro temos uma diferença de 28-9 = 19 centésimos de segundo. No segundo temos uma diferença de 40 - 21 = 19 centésimo de segundo. Fazendo uma média aritmética dessas duas amostragem verificamos que o atraso médio é de 190 ms. 2) Instalar o sniffer de redes Wireshark e fazer uma comunicação em duplas via PVX. Sugestão: usar filtros: ip.src==… ou RTCP ou RTP ou … a) Identificar cabeçalhos RTP e RTCP (mostrar uma imagem com RTP e outra com RTCP no wireshark). Qual a diferença de direção e quantidade de pacotes de cada um? Observa-se muito mais pacotes RTP, pois é através desse protocolo que os dados de áudio e vídeo são transmitidos em “tempo real”. Na imagem, aparecem pacotes RTP sendo enviados e recebidos, pois na comunicação do Polycom o PC 1 tanto enviava como recebia áudio e vídeo para o PC 2. Já o RTCP é um pacote de controle para qualidade da transmissão, não necessitando ser enviado muitas vezes, por isso seu baixo número de pacotes. É enviado um “Sender”, do emissor para o receptor, e este envia um “Receiver” para o emissor. b) Para o RTP, identificar e justificar os campos “versão”, “Payload Type”, “Sequence Number”, “timestamp” Versão: é a versão do RTP utilizada, a atual é a 2. Payload Type: identifica o tipo de payload (áudio, vídeo, etc.). Sequence Number: é a ordem do pacote ao longo da transmissão de áudio/vídeos. Timestamp: é a posição dos dados na sequência a ser exibida. c. Descobrir quais pacotes são de áudio e quais são de vídeo. Justificar, utilizando como base a diferença entre tamanho e quantidade dos pacotes de cada fluxo. Utilize como apoio o timestamp dos pacotes. Sugere-se fortemente filtrar por fluxo. Os pacotes com payload type 126 são os de vídeo e os de 127 são os de áudio. É fácil observar os pacotes de vídeo (126) pela grande quantidade necessária para montar um frame (Mark), sendo 0 a diferença de timestamp entre esses pacotes. Já os pacotes de áudio (127) possuem uma diferença de timestamp bem maior que 0, pois não precisam mais de um pacote para ser criado um “frame de áudio”. 3) Para a codificação de áudio utilizada e características do laboratório, calcule: a) Tempo médio de inserção Tempo de inserção = L/T (L=tamanho do quadro em bits; T=taxa em bits/s). Analisando os quadros RTP da questão anterior, vimos que um quadro de áudio tem tamanho 294 bytes ou 2352 bits. Como a rede local tem uma taxa de 100Mbits/s temos: L = 2352 T = 100’000’000 Tempo de inserção = 2352/100’000’000 Tempo de inserção = 23,52 x 10^-6 = 23,52 us b) Atraso no meio físico, supondo 40m a distância entre sua máquina e o switch do INF. Assumindo que Velocidade da Luz (C) = 300.000.000 m/s, Atraso no meio físico = distância / velocidade = 2*40m / (2/3)C m/s = 400ns 4) Leia o help do ping (ping /?) e efetue os seguintes testes: a) Fazer um ping com 8 requisições de echo, tamanho do pacote de 200 bytes, TTL de 80. Mostre o comando utilizado e prove que funcionou através de uma imagem. b) Fazer um ping forçando a não fragmentação do pacote (-f) e tamanho do pacote de 1600 bytes. Verificar qual o máximo tamanho do pacote que funciona. Explique. Com um tamanho de 1600 bytes sem fragmentação é impossível enviar pacotes. Ao enviar pacotes menores que 1600 bytes encontramos, na força bruta, que o tamanho máximo é 1472 bytes. Um quadro Ethernet possui tamanho máximo de 1500 bytes, mas como o protocolo ICMP utiliza 8 bytes de cabeçalho e o IP mais 20 bytes, sobram os 1472 bytes de dados obtidos no envio do ping. c) Qual a mensagem (pacote de dados) enviados num comando de ping? Sugestão: analise o pacote ICMP. É enviado uma sequência de caracteres a-w, repetidamente. 5. Utilizar um sniffer de redes para analisar o funcionamento do ping. Capturar o ping de sua máquina para um vizinho, preencha na tabela linha a linha a seqüência de comandos de um ping, explicando cada linha (mostrando o endereço nível 2 e nível 3 envolvido em cada linha). Também deve ser considerado o protocolo ARP, além do ICMP. Pode-se utilizar a simbologia MAC_A (MAC da máquina A), MAC_B (MAC da máquina B) e MAC-R (MAC do roteador), por exemplo. Da mesma forma, pode-se utilizar IP_A, IP_B, etc. Quando não existir pacotes no nível, basta colocar “Não tem” na tabela. Protocolo End. Nível 2 End. Nível 3 Descrição Ex: arq request Ex: Mac_x -> … Ex: icmp request Ex: Mac_x -> Mac_y Ex: IPx->IPy Protocolo End. Nível 2 End. Nível 3 Descrição ARP Request MAC_A -> broadcast - A máquina A envia um broadcast para obter o endereço MAC da máquina B ARP Reply MAC_B -> MAC_A IP_B A máquina B blá responde seu endereço MAC para a máquina A ICMP Request MAC_A -> MAC_B IP_A, IP_B A máquina A envia o ping para a máquina B ICMP Reply MAC_B -> MAC_A IP_B, IP_A A máquina B responde o ping da máquina A Conforme a figura abaixo (ping apr-icmp 5.PNG): -MAC_A → 00:24:1d:f1:05:35 -MAC_B → 00:24:1d:f1:06:b9 -broadcast → ff:ff:ff:ff:ff:ff -IP_A → 10.67.105.3 -IP_B → 10.67.105.2 6. Repetir a tabela acima, porém fazendo ping para uma subrede diferente. Qual a principal diferença? Como já se conhece o endereço MAC tanto da máquina A para o gateway quanto do gateway para a máquina A, só precisa fazer o ping. O ping é transmitido até o gateway, que encaminha para a máquina da subrede diferente. Esta máquina responde para o gateway, que repassa para a máquina A. A tabela e figura a seguir exemplificam. Protocolo End. Nivel 2 End. Nivel 3 Descrição ICMP Request MAC_A -> mac_router ip de A, IP de B pedido de ping ICMP Reply mac_router -> mac_A ip de B, IP de A resposta de ping 7. SOBRE O ARP: a. Explicar o funcionamento do protocolo ARP baseado nos seus campos de cabeçalho. Para isso, pode-se olhar na especificação do protocolo (buscar na RFC) ou analisar no sniffer, pois o mesmo provê todos os campos do protocolo. Explique o motivo do ARP request não conter o endereço MAC do destino (campo zerado), e o motivo que o ARP reply contém todos os campos preenchidos. O protocolo ARP tem como objetivo obter o endereço de máquina de uma interface com a qual a máquina que envia quer se comunicar. Para isto, ela faz um broadcast da requisição. No cabeçalho ARP estão especificados: • Tipo de hardware (do nível de enlace, ethernet) • Tipo de protocolo (do nível de rede, IP) • Tamanho do endereço de hardware (6) • Tamanho do endereço de protocolo (4) • Opcode (algumas opções) • Endereço MAC da origem (00:24:id:f1:04:db) • Endereço IP da origem (10.67.105.3) • Endereço MAC do alvo (00:00:00:00:00:00) • Endereço IP do alvo (10.67.105.254) O MAC destino está zerado justamente porque a máquina que fez a requisição quer saber este campo. O MAC da origem é necessário para que a resposta possa ser retornada à origem da requisição. Os endereços IP servem para as máquinas saberem quem está solicitando e quem deve responder. b. Explicar o motivo pelo qual o ARP acontece somente na primeira vez que é feito o ping para uma determinada máquina. Dica: utilizar "arp /?" e "arp -a". Quanto tempo dura essa informação? A requisição ARP ocorre apenas na primeira vez, porque a máquina guarda uma tabela de resolução de MAC que armazena os endereços tanto quanto solicitando, quanto solicitado. Essa tabela é atualizada a cada intervalo de minutos, para não causar uma sobrecarga na rede. Através do comando “arp -a” é possível verificar o estado atual da tabela. O tamanho mínimo do pacote ethernet é 64 bytes e, no caso das mensagens do protocolo ARP, existe um trailer inserido pelo protocolo ethernet para que a mensagem chegue ao valor mínimo especificado. A seguir é apresentado o campo Trailer no nivel de Ethernet. 8. SOBRE O TRACEROUTE a. Utilizar o traceroute (ou tracert) para descobrir o número de hops e os roteadores por onde os pacotes estão trafegando até: i. www.ufrgs.br ii. http://www.nhk.or.jp b. Para que serve o traceroute? Qual sua relação com o TTL? Para que serve o TTL? O traceroute serve para estimar o caminho (roteadores) entre duas máquinas, através de mensagens ICMP sucessivas. O Time to Leave (TTL) é um contador que é decrementado cada vez que passa por um roteador. Ele serve para indicar o número máximo de hops que um pacote realizará até ser descartado. A cada vez que o TTL chega a 0, a estação atual retorna uma mensagem ao emissor informando-o. Portanto é possivel descobrir os roteadores presentes no caminho da conexão iniciando mensagens com TTL 1 e ir incrementando até chegar no destino final. c. Não precisa comentar no relatório, mas assista os seguintes vídeos: i. http://www.youtube.com/watch?v=SXmv8quf_xM ii. http://www.youtube.com/watch?v=6WHu1EM8CgY&feature=related 9. Obtenha um histograma do valor médio do tamanho dos pacotes que trafegaram pela rede durante o período considerado. Ver opção “statistics+packet lengths”. Faça a análise duas vezes: a) iniciando a captura e navegando na web (perfil navegação web); b) iniciando a captura e fazendo um download de arquivo de tamanho razoavelmente grande (acima de 10 Mbytes). Compare os resultados em relação ao tamanho do pacote. Explique. A seguir são apresentados dois histogramas. O primeiro é referente à navegação web, enquanto o segundo representa um download. O primeiro histograma tem cerca de 32% dos pacotes de tamanho 40-79 bytes e cerca 35% de tamanho 1280-2559 bytes. Como uma página web possui muita variação no tamanho dos elementos, por exemplo código fonte html, texto com poucos bytes versus imagem grande, muitos pixels, há uma distribuição dos pacotes em vários tamanhos. Já o segundo histograma tem cerca de 29% dos pacotes de tamanho 40-79 bytes e cerca de 71% de tamanho 1280-2559 bytes. Como o arquivo é uma stream de bytes, o ideal é sempre ocupar o máximo de um pacote e é o que acontece no download desse arquivo. Em ambos casos, há cerca de 30% mensagens pequenas, que dizem respeito a ACKs em ambos sentidos. 10. Faça uma análise completa de um quadro MAC que contenha encapsulado um pacote IP e TCP (sugestão: faça um download qualquer). Liste todos os valores dos diversos campos encontrados no cabeçalho do quadro MAC e nos cabeçalhos do pacote IP e do segmento TCP encapsulado. Explique os valores encontrados e suas unidades quando for o caso. A figura abaixo mostra um pacote TCP/IP. Os campos do MAC são: ● destino (00:0b:db:8f:2c:56) ● fonte (00:1f:d0:e8:9c:f6) ● tipo: IP (0x0800) Os campos do IP são: ● versão do IP (4) ● tamanho do cabeçalho IP (20 bytes) ● prioridade: (0x00) ● tamanho total do payload (40 bytes) ● identificação (0x6c54) ● flags: não fragmentar (0x04) ● offset do fragmento: 0 (sem fragmentos) ● TTL (128 hops) ● protocolo usado :TCP (0x06) ● checksum do cabeçalho (0x80ef) [correto] ● origem (10.67.105.3) ● destino (143.54.11.16) Os campos do TCP são: ● porta origem: casp (1130) ● porta destino: http (80) ● número de sequência: (1) ● número de ACK, próximo byte a ser enviado (984177º byte) ● tamanho do cabeçalho (20 bytes) ● flags: ACK (0x10) ● tamanho de janela (65535 bytes) ● checksum do segmento (0x0da7) ● análises de SEQ/ACK 11. Utilizar o software Iperf (iperf –h para help), que deve ser disparado em duas máquinas, uma sendo servidor “iperf –s” e outra cliente. Tem que disparar o servidor de forma diferente para teste em UDP ou TCP. “iperf –s –u” para UDP ou “iperf –s” para TCP. EXEMPLO DE CLIENTE COM UDP: iperf –f m –i 1 –c “ipservidor” –t 30 –p 2000 – u –b 10M –l 1400 (formato em Mbit/s, informa banda enviada a cada segundo, tempo de 30s, porta 2000, banda máxima de 10Mbit/s, tamanho de pacote 1400 bytes). No relatório devem constar o resultado dos três seguintes objetivos: a. Mostrar linhas de comando utilizadas e gerar gráfico udp para 3 bandas diferentes (ex: 1Mbit/s, 10Mbit/s e 30Mbit/s). Mostrar e explicar o gráfico gerado. 1mb: 10mb: 30mb: O protocolo UDP usa a máxima banda disponivel, nesse caso a informada pelo parâmetro. b. Mostrar linhas de comando utilizadas e gerar gráfico TCP da estação incrementando o número de conexões para uma máquina servidora. Pode-se fazer de duas formas: a) aumentando o número de clientes gradativamente, com 1, 2 e 3 clientes, utilizando máquinas diferentes para clientes; b) utilizando o resultado do próprio iperf (opção “-i 1”), que mostra a média a cada segundo, e depois gerando o gráfico com outra ferramenta. Nesse caso, bastam duas máquinas com 3 janelas cliente e 3 servidoras. O objetivo é ver a adaptação do TCP (tcp-friendly). OBS: não esquecer que definição de banda só faz sentido com o UDP. No TCP, não se deve utilizar flags de controle de taxa, pois o controle é feito em nível 4. Com esses três prints claramente se ve a divisão igualtária entre os clientes, a cada cliente que é adicionado a banda se adapta a esses clientes(podemos ver que com 2 clientes a banda é dividida entre 2, bem como quando há 3 clientes a banda é dividida em 3), o mesmo vale quando se remove algum cliente. 12. Utilizando a ferramenta Wireshark, obtenha a curva de variação da carga da rede local da sua máquina. Explique, sucintamente, como foi obtida e comente os resultados obtidos. Para esta tarefa considere uma estatística de 1 a 5 minutos. Ver opção “statistics+io-graph”. Altere o uso da rede (através do iperf ou outro método) e explique as variações na rede. Gere gráficos de TCP e UDP e compare os resultados. Nessa imagem obtida no Wireshark fica fácil perceber a diferença de pacotes UDP e TCP. Esse gráfico foi obtido durante 5 minutos de navegação WEB e downloads aleatórios de tamanho maior que 100mb. Deve-se a isso o fato de haver muito mais pacotes TCP, pois essas aplicações(download e navegação) precisam de uma conexão segura(TCP).