Mudanças entre as edições de "PJI3 20201"
(4 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 708: | Linha 708: | ||
##Pesquise o significado do endereço 224.0.0.9. | ##Pesquise o significado do endereço 224.0.0.9. | ||
#A partir do '''pc1''' deixe rodando o ping <code> ping 192.168.2.1</syntaxhighlight> | #A partir do '''pc1''' deixe rodando o ping <code> ping 192.168.2.1</syntaxhighlight> | ||
− | #Com o tcpdump rodando em '''r1''', desative um dos enlaces entre os roteadores e acompanhe a troca de mensagens no Wireshark (dê um ''reload''). Por questões de compatibilidade vamos desativar uma interface de um modo especial. Por exemplo, para "derrubar" o enlace r3-r1, execute no '''r3''': <code> | + | #Com o tcpdump rodando em '''r1''', desative um dos enlaces entre os roteadores e acompanhe a troca de mensagens no Wireshark (dê um ''reload''). Por questões de compatibilidade vamos desativar uma interface de um modo especial. Por exemplo, para "derrubar" o enlace r3-r1, execute no '''r3''':<code> |
− | configure t | + | * ''configure t'' - entra no mode de configuração |
− | interface eth1 | + | * ''interface eth1'' - entra na referida interface a ser operada |
− | shutdown | + | * ''shutdown'' - desativa a interface, se desejado </syntaxhighlight> |
#Permaneça monitorando o ping e o Wireshark (''reload'': <Ctrl+r>), a recuperação das rotas leva em torno de 1-3 min: | #Permaneça monitorando o ping e o Wireshark (''reload'': <Ctrl+r>), a recuperação das rotas leva em torno de 1-3 min: | ||
##Quais as mensagens trocadas pelo protocolo RIP observadas no WireShark? Observe o trecho de mensagens onde não houve respostas ao ping. | ##Quais as mensagens trocadas pelo protocolo RIP observadas no WireShark? Observe o trecho de mensagens onde não houve respostas ao ping. | ||
Linha 747: | Linha 747: | ||
</font> | </font> | ||
{{Collapse bottom | Aula 5}} | {{Collapse bottom | Aula 5}} | ||
+ | |||
+ | =02/03/2020: Endereçamento IPv6, roteamento estático e dinâmico= | ||
+ | {{Collapse top | Aula 6}} | ||
+ | Endereços IPv4 têm 32 bits e são capazes de endereçarem até pouco mais de 4 bilhões de hosts, e isso parecia mais do que suficiente quando o protocolo IP foi criado, nos primórdios da Internet. Mas desde os anos 1990, quando se massificou essa rede, constatou-se que os endereços IPv4 se esgotariam num horizonte próximo. Para evitar esse problema, e possibilitar que a Internet continuasse se expandindo (e também por outros motivos), foi criado o protocolo IPv6, cujos endereços têm 128 bits. Essa questão está bem descrita na introdução do livro [http://ipv6.br/lab/ Laboratório de IPv6]: | ||
+ | |||
+ | ''Considerando que a concepção da Internet data da década de 70 e que, de lá para cá, houve uma explosão inesperada do seu uso, o IPv4 mostrou-se inadequado para acompanhar esta evolução.Uma das deficiências mais apontadas do IPv4 foi o espaço de endereçamento baseado num valor inteiro de 32 bits, que é tipicamente representado por quatro octetos em decimal, sendo possível disponibilizar apenas 4.294.967.296 endereços IPV4 diferentes. Para contornar essa deficiência, inúmeras soluções paliativas foram propostas e adotadas, como por exemplo o NAT (Network Address Solution) e o CIDR (Classless InterDomain Routing). Contudo, à medida que novas tecnologias de redes surgiram e o IP continuava sendo um dos protocolos chaves para sua operação, outras deficiências começaram a ser detectadas, especialmente aquelas referentes à segurança e ao suporte a parâmetros de QoS (Quality of Service) e mobilidade. Como consequência, no inicio da década de 90 é publicada a proposta da nova geração do IP (IPng – IP next generation) ou IPv6. Este novo protocolo traz a solução para muitas das deficiências de seu predecessor, o IPv4, incluindo espaço de endereçamento de 128 bits gerando a possibilidade de 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços disponíveis, suporte a roteamento e segmentação de pacotes na estação origem, suporte a mobilidade e mecanismos de segurança.'' | ||
+ | |||
+ | |||
+ | [[imagem:Pji3-Number-of-internet-hosts-in-the-domain-name-system.jpg|600px]] | ||
+ | <br>''Número de hosts na Internet mundial registrados no DNS (a quantidade total deve ser bem maior !). As quantidades são expressadas em milhões de hosts. Obtido de: [https://www.statista.com/statistics/264473/number-of-internet-hosts-in-the-domain-name-system/ Statista]'' | ||
+ | |||
+ | = Endereço IPV6 = | ||
+ | |||
+ | Um endereço IPV6 possui 128 bits disponíveis para endereçar hosts, possibilitando 340 undecilhões de endereços possíveis. Para se ter uma ideia do que isto representa, se convertêssemos cada IPv6 possível em um cm2, poderíamos envolver toda a superfície do planeta Terra com 7 camadas de endereços.. | ||
+ | |||
+ | [[Arquivo:End1.png|600px]] | ||
+ | |||
+ | == Adoção no Brasil == | ||
+ | |||
+ | O Brasil está entre os 10 países com maior adoção de IPv6, segundo o Google: | ||
+ | * [https://www.convergenciadigital.com.br/cgi/cgilua.exe/sys/start.htm Brasil avança na adoção do IPv6 e fica no top 10 mundial do Google] | ||
+ | |||
+ | |||
+ | Endereços IPv6 estão sendo amplamente usados por [http://www.abranet.org.br/Noticias/Exigencias-da-Anatel-aceleram-adocao-de-IPv6-pelas-operadoras-de-telecom-397.html provedores de acesso], como se pode comprovar em serviços de dados do tipo ADSL e LTE: | ||
+ | |||
+ | |||
+ | [[imagem:Pji3-ipv6-movel.png|300px]] | ||
+ | <br>''Cópia de tela de um celular mostrando o uso de endereço IPv6 em seu link de dados'' | ||
+ | |||
+ | = Tipos de Endereços IPV6 = | ||
+ | |||
+ | * [https://community.cisco.com/t5/switching/ipv6-global-unicast-address-range/m-p/1510629/highlight/true#M148325 Faixas de endereços IPv6] | ||
+ | |||
+ | |||
+ | O IPV6 possui categorias de endereços, conforme a tabela a seguir: | ||
+ | |||
+ | [[Arquivo:Tipos_de_end_ipv6.png|600px]] | ||
+ | |||
+ | *Endereços '''Anycast''': Um endereço IPv6 anycast é utilizado para identificar um grupo de interfaces, porém, com a propriedade de que um pacote enviado a um endereço anycast é encaminhado apenas a interface do grupo mais próxima da origem do pacote. Os endereços anycast são atribuídos a partir da faixa de endereços unicast e não há diferenças sintáticas entre eles. | ||
+ | *Endereços '''Loopback''': Endereços aplicados as interfaces loopback dos host; (Verificar com ifconfig) | ||
+ | *Endereços '''Link local''': Podem ser utilizados apenas no enlace específico onde a interface está conectada, sendo assim não é roteável; | ||
+ | *Endereços '''Unique local address''' Endereço com grande probabilidade de ser globalmente único, utilizado apenas para comunicações locais, geralmente dentro de um mesmo enlace ou conjunto de enlaces. Um endereço ULA não deve ser roteável na Internet global; | ||
+ | *Endereços '''Multicast''': Endereços multicast são utilizados para identificar grupos de interfaces, sendo que cada interface pode pertencer a mais de um grupo. Os pacotes enviados para esses endereço são entregues a todos as interfaces que compõe o grupo; | ||
+ | *Endereços '''Global unicast''': Equivalente aos endereços públicos IPv4, o endereço global unicast é globalmente roteável e acessível na Internet IPv6. | ||
+ | |||
+ | == Endereços Unicast == | ||
+ | |||
+ | [[Arquivo:Lla.png|600px]] | ||
+ | |||
+ | Link Local pode ser usado apenas no enlace específico onde a interface está conectada, o endereço link local é atribuído automaticamente utilizando o prefixo FE80::/64. Os 64 bits reservados para a identificação da interface são configurados utilizando o formato IEEE EUI-64. Vale ressaltar que os roteadores não devem encaminhar para outros enlaces, pacotes que possuam como origem ou destino um endereço link-local. | ||
+ | |||
+ | |||
+ | [[Arquivo:Ula ipv6.png|600px]] | ||
+ | |||
+ | |||
+ | O endereço ULA é um endereço com grande probabilidade de ser globalmente único, utilizado apenas para comunicações locais, geralmente dentro de um mesmo enlace ou conjunto de enlaces. Um endereço ULA não deve ser roteável na Internet global. Um endereço ULA, criado utilizando um ID global e alocado pseudo-randomicamente, é composto das seguintes partes: '''Prefixo: FC00::/7'''; '''Flag Local (L)'''; se o valor for 1 (FD) o prefixo é atribuído localmente. Se o valor for 0 (FC), o prefixo deve ser atribuído por uma organização central (ainda a definir); '''identificador global''' identificador de 40 bits usado para criar um prefixo globalmente único. '''Identificador da Interface''' identificador da interface de 64 bits. | ||
+ | |||
+ | [[Arquivo:Global unicast.png|600px]] | ||
+ | |||
+ | Atualmente, está reservada para atribuição de endereços a faixa 2000::/3 (001), ou seja, 3 primeiros bits utilizados para registros da faixa 2000. Equivalente aos endereços públicos IPv4, o endereço global unicast é globalmente roteável e acessível na Internet IPv6. Ele é constituído por três partes: o prefixo de roteamento global, utilizado para identificar o tamanho do bloco atribuído a uma rede; a identificação da sub-rede, utilizada para identificar um enlace em uma rede; e a identificação da interface, que deve identificar de forma única uma interface dentro de um enlace.Sua estrutura foi projetada para utilizar os 64 bits mais a esquerda para identificação da rede e os 64 bits mais a direita para identificação da interface. | ||
+ | |||
+ | == Endereço Multicast == | ||
+ | |||
+ | [[Arquivo:Multcast.png|600px]] | ||
+ | |||
+ | O IPV6 não possui endereço broadcast, e sim multicast. Endereços multicast são utilizados para identificar grupos de interfaces, sendo que cada interface pode pertencer a mais de um grupo. Os pacotes enviados para esses endereço são entregues a todos as interfaces que compõe o grupo. Seu funcionamento é similar ao do broadcast, dado que um único pacote é enviado a vários hosts, diferenciando-se apenas pelo fato de que no broadcast o pacote é enviado a todos os hosts da rede, sem exceção, enquanto que no multicast apenas um grupo de hosts receberá esse pacote. | ||
+ | |||
+ | = Cabeçalho IPV6 = | ||
+ | |||
+ | [[Arquivo:Header_ipv6.png|600px]] | ||
+ | |||
+ | O cabeçalho IPv6 possui menos informações, quando comparado ao cabeçalho IPv4. Várias informações foram removidas do cabeçalho IPV6, como por exemplo o ''checksum'', considerado uma informação desnecessária uma vez que o controle de erro é atribuído às camadas inferiores. Os campos presentes no cabeçalho IPV6 são definidos a seguir: | ||
+ | |||
+ | *'''Class of traffic''': define a classe de serviço a que o pacote pertence, possibilitando associar diferentes prioridades a pacotes dependendo da exigência de cada aplicação. Com isso, podem-se dar subsídios ao controle da qualidade de serviço (QoS) na rede. | ||
+ | *'''Flow Label''': proposto para identificar datagramas que fazem parte de um mesmo fluxo, o que facilitaria, em tese, o tratamento dado a esses datagramas na rede. Atualmente esse cabeçalho não tem sido usado, e pode ser que em revisões futuras seja mudado seu propósito. | ||
+ | *'''Payload Length''': quantidade de bytes contidos na carga útil transportada pelo datagrama (''payload''). | ||
+ | *'''Next Header''': informa que há um cabeçalho opcional em seguida. | ||
+ | *'''Hop''': Número máximo de saltos (roteadores intermediários), da origem ao destino do datagrama, que podem ser percorridos antes do datagrama ser descartado. Em outras palavras, quantidade máxima de encaminhamentos permitidos para o datagrama. Tem papel similar ao campo TTL do IPv4. | ||
+ | |||
+ | [[Arquivo:Header_ipv4.png|600px]] | ||
+ | |||
+ | = Auto-configuração de endereços = | ||
+ | |||
+ | * [http://ipv6.br/post/funcionalidades-basicas/ Um resumo sobre ICMPv6 e seu papel na auto-configuração] | ||
+ | |||
+ | |||
+ | Em redes IPv4, a auto-configuração de ''hosts'' se faz com o [[PJI11103:_Endereçamento_IPv4#Configura.C3.A7.C3.A3o_din.C3.A2mica|serviço DHCP]]. Em redes IPv6 existem duas formas de auto-configurar ''hosts'': | ||
+ | * '''SLAAC (Auto-configuração ''stateless'')''': um host gera seu próprio endereço IPv6 a partir de informação anunciada periodicamente pelo gateway da rede. O gateway não sabe que host usa qual endereço IPv6. | ||
+ | * '''DHCPv6''': similar ao serviço DHCP para IPv4, um host obtém toda sua configuração de rede (incluindo seu endereço IPv6) de um servidor DHCPv6. Esse servidor mantém informações sobre que host usa qual endereço IPv6. | ||
+ | |||
+ | == SLAAC == | ||
+ | |||
+ | Com SLAAC, um host IPv6 tem a capacidade de auto-configurar seu endereço em uma subrede. Com isso, facilita-se a configuração de rede de um equipamento, pois torna-se desnecessário obter e definir manualmente seu endereço IPv6, além de outras informações tais como máscara de rede, gateway e servidores DNS. No entanto, isso depende de o gateway (ou algum outro equipamento) fornecer essas informações de configuração para os hosts em sua(s) subrede(s). Isso não é novidade, pois em redes IPv4 o serviço DHCP tem exatamente esse papel. Porém, com o surgimento de IPv6, a auto-configuração se tornou uma função do próprio protocolo de rede. Em redes IPv4, DHCP é um serviço que depende de softwares específicos tanto nos hosts (clientes) quanto no servidor. A auto-configuração IPv6 é muito mais simples, e não demanda nenhum software adicional nos hosts. | ||
+ | |||
+ | A autoconfiguração do IPV6, chamada ''stateless'', é o procedimento com que os ''hosts'' de uma subrede podem definir seus próprios endereços, baseados em informações locais (ex: endereço MAC de sua interfaces de rede Ethernet, Wifi, ou Bluetooth), e em informações recebidas de roteadores, denominadas mensagens ''Router Advertisement''. Sendo assim, o roteador é o responsável por fornecer informações sobre a SUBrede para que seja possível que ''hosts'' que nela residem se autoconfigurem. A autoconfiguração do IPV6 é chamada de ''stateless'' porque o roteador não mantém nenhum registro sobre a configuração de cada host. Isso é consequência da capacidade dos hosts se autoconfigurarem apenas sabendo a subrede a que pertencem. No entanto, para que seja possível a autoconfiguração em redes baseadas em IPV6, duas etapas de configuração devem ser aplicadas, sendo elas: | ||
+ | |||
+ | *'''Configuração do prefixo''' ou neste caso a identificação da subrede. Nesta etapa, os prefixos são coletados pelos hosts por meio de mensagens ICMPv6, chamadas de ''Router Advertisement'', as quais são transmitidas pelos roteadores. | ||
+ | |||
+ | *'''Configuração do sufixo do host''' identificação do host propriamente dito. Nesta etapa, o sufixo de host é automaticamente obtido a partir do endereço MAC de 48 bits obtido de sua próprio interface de rede Ethernet ou Wifi. Uma vez que um endereço MAC possui apenas 48 bits, porém os sufixos IPV6 possuem 64 bits, os 16 bits restantes para completar o endereço IPV6 são inseridos por uma função de expansão chamada de ''Extended Unique Identifier'' (''EUI''). A função ''EUI'' executa as seguintes etapas: | ||
+ | # Separa o endereço MAC em dois blocos de 24 bits | ||
+ | # Adiciona os algarismos hexadecimais FFFE entre os dois blocos | ||
+ | # Muda o sétimo bit do primeiro byte para 1 para sinalizar que o endereço é gerenciado localmente. | ||
+ | |||
+ | |||
+ | Este exemplo mostra a geração do sufixo de um endereço IPv6: | ||
+ | |||
+ | [[Arquivo:Sufix ipv62.jpg|600px]] | ||
+ | |||
+ | |||
+ | === Protocolo NDP (Neighbor Discovery Protocol) === | ||
+ | |||
+ | A auto-configuração IPv6 depende do protocolo NDP, implementado usando mensagens ICMPv6. De acordo com [http://ipv6.br/post/funcionalidades-basicas/ este tutorial do site IPv6.br], no caso da autoconfiguração de ''hosts'', o protocolo fornece suporte para a realização de três funcionalidades: | ||
+ | * '''Parameter Discovery''': atua na descoberta por um ''host'' de informações sobre o enlace (como MTU) e sobre a Internet (como limite de saltos). | ||
+ | * '''Address Autoconfiguration''': trabalha com a autoconfiguração stateless de endereços nas interfaces de um nó. | ||
+ | * '''Duplicate Address Detection''': utilizado para descobrir se o endereço que se deseja atribuir a uma interface já está sendo utilizado por um outro nó na rede. | ||
+ | |||
+ | |||
+ | Já no caso da transmissão de pacotes entre nós, o suporte é dado para a realização de seis funcionalidades: | ||
+ | * '''Router Discovery''': trabalha com a descoberta de roteadores pertencentes ao enlace. | ||
+ | * '''Prefix Discovery''': implementa a descoberta de prefixos de redes do enlace, cuja a finalidade é decidir para onde os pacotes serão direcionados numa comunicação (se é para um roteador especifico ou direto para um nó do enlace). | ||
+ | * '''Address Resolution''': descobre o endereço fisico através de um endereço lógico IPv6. | ||
+ | * '''Neighbor Unreachability Detection''': permite que os nós descubram se um vizinho é ou se continua alcançavel, uma vez que problemas podem acontecer tanto nos nós como na rede. | ||
+ | * '''Redirect''': permite ao roteador informar ao nó uma rota melhor ao ser utilizada para enviar pacotes a determinado destino. | ||
+ | * '''Next-Hop Determination''': algoritmo para mapear um endereço IP de destino em um endereço IP de um vizinho para onde o trafego deve ser enviado. | ||
+ | |||
+ | |||
+ | Tratando especificamente da auto-configuração IPv6, o protocolo NDP usa mensagens ICMPv6 do tipo RA (''Router Advertisement - Anúncio de Roteador'') para anunciar parâmetros da subrede. Essas mensagens são tipicamente enviadas periodicamente pelo gateway, e contêm estas informações: | ||
+ | * prefixo da subrede | ||
+ | * endereço do servidor DNS | ||
+ | * MTU | ||
+ | * rotas para subredes específicas | ||
+ | * domínios DNS | ||
+ | |||
+ | |||
+ | Em sistemas Linux, o envio de mensagens RA por um roteador são feitas pelo software [http://manpages.ubuntu.com/manpages/xenial/man8/radvd.8.html radvd]. | ||
+ | |||
+ | |||
+ | Ao receber uma mensagem RA, um host pode completar sua auto-configuração, e assim se comunicar na rede IPv6. A figura a seguir mostra mensagens RA enviadas por um roteador: | ||
+ | |||
+ | [[image:pji11103-Radv.jpg|800px]] | ||
+ | |||
+ | == DHCPv6 == | ||
+ | |||
+ | * [https://tools.ietf.org/html/rfc3315 RFC 3315: DHCPv6] | ||
+ | |||
+ | |||
+ | O protocolo DHCPv6 guarda semelhanças com DHCP usado em redes IPv4. Ele implementa um serviço de configuração dinâmica de endereços. Assim como DHCP, DHCPv6 pode fornecer muitas outras informações aos ''hosts'', tais como endereços de servidores WINS, proxy HTTP, programa de boot, [https://tools.ietf.org/html/rfc3315#section-22 entre outros]. | ||
+ | |||
+ | |||
+ | De acordo com o livro [http://ipv6.br/media/arquivo/ipv6/file/64/livro-lab-ipv6-nicbr.pdf Laboratório de IPv6], na página 51, ''basicamente, a comunicação entre o servidor DHCP e as máquinas cliente se dá com a troca de quatro mensagens:'' | ||
+ | * '''Solicit''': enviada pelo cliente ao grupo multicast all-dhcp-agents (ff02::1:2) com o intuito de localizar o servidor DHCP. | ||
+ | * '''Advertise''': enviada pelo servidor DHCP, diretamente ao endereço link-local do cliente, para indicar que ele pode fornecer as informações necessárias para a configuração. | ||
+ | * '''Request''': enviada pelo cliente diretamente ao grupo multicast all-dhcp-agents (ff02::1:2) para requisitar ao servidor DHCP os dados de configuração. | ||
+ | * '''Reply''': enviada pelo servidor DHCP ao endereço de link-local do cliente como resposta à mensagem Request. | ||
+ | |||
+ | |||
+ | O DHCPv6 possui dois modos de operação: | ||
+ | * '''Stateful''': o servidor DHCPv6 é responsável por informar aos clientes os endereços IPv6 que devem ser utilizados em suas interfaces de rede, mantendo o estado de qual endereço foi atribuído a determinado cliente. | ||
+ | * '''Stateless''': o servidor DHCPv6 informa apenas parâmetros de configuração como endereço dos servidores DNS ou servidores SIP da rede aos clientes, sem a necessidade de guardar qual informação individual de cada cliente. Nesse segundo caso, o cliente deverá obter o endereço IPv6 de sua interface de outra forma, seja manualmente ou SLAAC.'' | ||
+ | |||
+ | |||
+ | Para usar DHCPv6, é necessário um software específico a ser executado no servidor. Esse software responde a requisições de configuração de rede enviadas por clientes, fornecendo-lhes seus endereços IPv6 e demais configurações. Em sistemas Linux (e outros da família Unix), o software mais usado é o [https://www.isc.org/downloads/dhcp/ ISC DHCP server]. Como visto no caso de DHCP para redes IPv4, esse software deve ser copnfigurado a partir do arquivo [http://manpages.ubuntu.com/manpages/xenial/man5/dhcpd.conf.5.html /etc/dhcp/dhcpd6.conf]. O exemplo de configuração a seguir mostra a declaração de uma subrede IPv6 com a respectiva faixa de endereços a serem concedidos e o servidor DNS a ser informado: | ||
+ | |||
+ | <syntaxhighlight lang=text> | ||
+ | default-lease-time 600; | ||
+ | max-lease-time 7200; | ||
+ | |||
+ | subnet6 2001:db8::/64 { | ||
+ | range6 2001:db8::1234 2001:db8::abcd; | ||
+ | option dhcp6.name-servers 2001:db8::abc; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | Muitas opções para DHCPv6 podem ser usadas. Maiores detalhes podem ser encontrados na [http://manpages.ubuntu.com/manpages/xenial/man5/dhcp-options.5.html documentação sobre as opções]. | ||
+ | |||
+ | = Atividades = | ||
+ | |||
+ | Objetivos: | ||
+ | |||
+ | * Usar endereços IPv6 para endereçar hosts em uma rede | ||
+ | * Realizar comunicações usando IPv6 | ||
+ | * Usar ferramentas de diagnóstico para IPv6 | ||
+ | |||
+ | Para realizar estas atividades serão necessários alguns comandos: | ||
+ | * '''Teste com ping6''': deve-se especificar a interface de rede por onde as mensagens do ping6 serão transmitidas: <br><br>'''ping6 -I eth0''' ''endereço_IPv6_a_ser_pingado''<br><br> | ||
+ | * '''Tabela de rotas''':<br><br>''' route -A inet6'''<br><br> | ||
+ | * '''Configuração de interface de rede:''' usa-se o programa ifconfig desta forma:<br><br>'''ifconfig''' ''nome_interface'' '''inet6 add''' ''endereço_IPv6''<br><br> | ||
+ | * '''Criação de rota:''' uma rota IPv6 pode ser adiciona assim: <br><br>'''route -A inet6 add''' ''prefixo/máscara'' '''gw''' ''IPv6_do_próximo_roteador'' | ||
+ | |||
+ | * '''Teste com ping6''':<syntaxhighlight lang=bash> | ||
+ | ping6 endereço_IPv6_a_ser_pingado | ||
+ | </syntaxhighlight>''Obs:'' endereço IPv6 deve ser escopo global. Se for escopo link, deve-se informar a interface de rede por onde fazer o ping: <syntaxhighlight lang=bash> | ||
+ | ping6 -I nome_interface endereço_IPv6_a_ser_pingado | ||
+ | </syntaxhighlight> | ||
+ | * '''Listagem de rotas:''' a tabela de rotas IPv6 pode ser visualizada assim: <syntaxhighlight lang=bash> | ||
+ | route -A inet6 -n | ||
+ | </syntaxhighlight> | ||
+ | * '''Adicionar nova rota para:'''<syntaxhighlight lang=bash> | ||
+ | route -A inet6 add prefixo/mascara gw IPv6_gateway | ||
+ | </syntaxhighlight>''Obs:'' IPv6_gateway é um endereço IPv6 de escopo global. Se o endereço conhecido for de escopo link, o comando deve informar também a interface de saída para essa rota: <syntaxhighlight lang=bash> | ||
+ | route -A inet6 add prefixo/mascara gw IPv6_gateway dev nome_interface | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | = Roteiro 03: Endereçamento IPv6, roteamento estático e dinâmico = | ||
+ | |||
+ | == Parte 1: Endereços IPv6 == | ||
+ | |||
+ | # Verifique quais provedores de conteúdo já usam IPv6. Isso pode ser feito com consultas DNS como esta: <syntaxhighlight lang=bash> | ||
+ | host -t aaaa www.google.com | ||
+ | </syntaxhighlight>Algumas sugestões para procura: | ||
+ | #* IFSC | ||
+ | #* UFSC | ||
+ | #* UDesc | ||
+ | #* UOL | ||
+ | #* Epagri | ||
+ | #* Facebook | ||
+ | #* ... e outros ! | ||
+ | # Em seu computador use o programa ifconfig para identificar o endereço IPv6 associado a sua interface ethernet. | ||
+ | # Use o [http://manpages.ubuntu.com/manpages/trusty/man8/ping.8.html ping6] para testar a comunicação com IPv6 entre seu computador e o de um colega. Há alguma diferença no resultado, em relação ao ''ping'' baseado em IPv4 ? | ||
+ | # Com o ''ping6'' em execução ative a captura de pacotes com ''wireshark'' ou ''tcpdump''. Visualize os pacotes enviados e recebidos pelo ''ping6'' ... identifique os protocolos envolvidos. Qual a diferença em relação ao ''ping'' baseado em IPv4 ? | ||
+ | # Adicione outro endereço IPv6 ao seu computador. Escolha um endereço formado pelo prefixo ''AA:BB::/64'' e o endereço MAC da sua interface de rede. | ||
+ | # Teste novamente com ''ping6'' a comunicação com os computadores de seus colegas. | ||
+ | # Assim como no caso de IPv4, existe uma tabela de rotas IPv6 em cada ''host''. Visualize a tabela de rotas IPv6 em seu computador com este comando: <syntaxhighlight lang=bash> | ||
+ | route -A inet6 | ||
+ | </syntaxhighlight>... e procure identificar as subredes ali listadas. | ||
+ | |||
+ | |||
+ | == Parte 2: Experimento com uma rede IPv6 == | ||
+ | |||
+ | Estes experimentos devem ser realizados no [[Netkit2]], que deve ser executado na máquina real. | ||
+ | |||
+ | |||
+ | '''Para esquentar: uma rede mais simples:''' | ||
+ | # Transfira para seu computador [http://tele.sj.ifsc.edu.br/~msobral/pji3/lab3/rede0.conf o arquivo de configuração ''rede0.conf''] | ||
+ | # Execute o Netkit2, e no menu ''File->Load Only'' selecione o arquivo de configuração ''rede0.conf'' | ||
+ | # Use o menu ''File->Graph'' para visualizar a topologia da rede | ||
+ | # Use o menu ''Network->Start'' para iniciar a rede | ||
+ | # Sabendo que ''pc1'' está na subrede 2804:1454:1004:200::/64 e ''pc2'' está na subrede 3ABB:CCDD:EEFF::/64, faça o seguinte: | ||
+ | ## Configure os endereços IP de todas as interfaces dos ''hosts'' dessa rede | ||
+ | ## Crie rotas estáticas nos ''hosts'' para que ''pc1'' e ''pc2''consigam se comunicar | ||
+ | |||
+ | '''Praticamente a mesma rede, mas com um roteador a mais:''' | ||
+ | # Transfira para seu computador [http://tele.sj.ifsc.edu.br/~msobral/pji3/lab3/rede00.conf o arquivo de configuração ''rede00.conf''] | ||
+ | # Execute o Netkit2, e no menu ''File->Load Only'' selecione o arquivo de configuração ''rede00.conf'' | ||
+ | # Use o menu ''File->Graph'' para visualizar a topologia da rede | ||
+ | # Use o menu ''Network->Start'' para iniciar a rede | ||
+ | # Sabendo que ''pc1'' está na subrede 2010:1aba:4455::/64 e ''pc2'' está na subrede 3ABB:EEFF::/64, faça o seguinte: | ||
+ | ## Configure os endereços IP de todas as interfaces dos ''hosts'' dessa rede | ||
+ | ## Crie rotas estáticas nos ''hosts'' para que ''pc1'' e ''pc2'' consigam se comunicar | ||
+ | |||
+ | == Parte 3: SLAAC == | ||
+ | |||
+ | # Execute o ''netkit2'' | ||
+ | # Arraste este [http://tele.sj.ifsc.edu.br/~msobral/pji3/lab5/rede0.conf link para o arquivo de configuração ''rede0.conf''] e solte-o sobre a janela do ''netkit2'' | ||
+ | # Use o menu ''File->Graph'' para visualizar a topologia da rede | ||
+ | # Use o menu ''Network->Start'' para iniciar a rede | ||
+ | # Verifique os endereços IPv6 globais usado por ''pc1'' e ''pc2''. Compare-os com os endereços globais usados por ''r1''. | ||
+ | # Teste a comunicação entre ''pc1'' e ''pc2'' com ping6. | ||
+ | # Em ''r1'' crie o arquivo ''/etc/radvd.conf'' com este conteúdo: <syntaxhighlight lang=text> | ||
+ | interface eth1 { | ||
+ | AdvSendAdvert on; | ||
+ | MinRtrAdvInterval 3; | ||
+ | MaxRtrAdvInterval 10; | ||
+ | prefix ccdd:0:0:0:0:0:0:0/64 { | ||
+ | AdvOnLink on; | ||
+ | AdvAutonomous on; | ||
+ | }; | ||
+ | }; | ||
+ | interface eth0 { | ||
+ | AdvSendAdvert on; | ||
+ | MinRtrAdvInterval 3; | ||
+ | MaxRtrAdvInterval 10; | ||
+ | prefix aabb:0:0:0:0:0:0:0/64 { | ||
+ | AdvOnLink on; | ||
+ | AdvAutonomous on; | ||
+ | }; | ||
+ | }; | ||
+ | </syntaxhighlight> | ||
+ | # Em ''r1'' execute este comando: <syntaxhighlight lang=bash> | ||
+ | /etc/init.d/radvd start | ||
+ | </syntaxhighlight> | ||
+ | # Verifique os endereços IPv6 globais usado por ''pc1'' e ''pc2''. Compare-os com os endereços globais usados por ''r1''. | ||
+ | # Teste a comunicação entre ''pc1'' e ''pc2'' com ping6. | ||
+ | # Verifique a tabela de rotas IPv6 em ''pc1'' e ''pc2''. Compare o endereço do roteador default com o do gateway. | ||
+ | # Selecione o host ''pc1'' e, em seguida, o menu ''Wireshark->eth0''. | ||
+ | # Observe as mensagens de anúncio de roteador recebidas. Que informações elas contêm ? | ||
+ | # Agora experimente por [http://tele.sj.ifsc.edu.br/~msobral/pji3/lab5/rede1.conf esta rede] no ar usando SLAAC ! Talvez seja necessário algo mais ... | ||
+ | |||
+ | == Parte 4: DHCPv6 == | ||
+ | |||
+ | # Execute o ''netkit2'' | ||
+ | # Arraste este [http://tele.sj.ifsc.edu.br/~msobral/pji3/lab5/rede0.conf link para o arquivo de configuração ''rede0.conf''] e solte-o sobre a janela do ''netkit2'' | ||
+ | # Use o menu ''File->Graph'' para visualizar a topologia da rede | ||
+ | # Use o menu ''Network->Start'' para iniciar a rede | ||
+ | # Verifique os endereços IPv6 globais usado por ''pc1'' e ''pc2''. Compare-os com os endereços globais usados por ''r1''. | ||
+ | # Teste a comunicação entre ''pc1'' e ''pc2'' com ping6. | ||
+ | # Em ''r1'' crie o arquivo ''/etc/radvd.conf'' com este conteúdo: <syntaxhighlight lang=text> | ||
+ | interface eth1 { | ||
+ | AdvSendAdvert on; | ||
+ | MinRtrAdvInterval 3; | ||
+ | MaxRtrAdvInterval 10; | ||
+ | prefix ccdd:0:0:0:0:0:0:0/64 { | ||
+ | AdvOnLink on; | ||
+ | AdvAutonomous on; | ||
+ | }; | ||
+ | }; | ||
+ | interface eth0 { | ||
+ | AdvSendAdvert on; | ||
+ | MinRtrAdvInterval 3; | ||
+ | MaxRtrAdvInterval 10; | ||
+ | AdvManagedFlag on; | ||
+ | }; | ||
+ | </syntaxhighlight>Mesmo que se use DHCPv6 é necessário usar SLAAC para obter o endereço do gateway. Por isso em ''r1'' se ativou o serviço ''radvd'', porém indicando que o ''host'' deve usar configuração de endereço ''stateful'' (opção ''AdvManagedFlag''). | ||
+ | # Em ''r1'' crie o arquivo ''/etc/dhcp/dhcpd6.conf'' com este conteúdo: <syntaxhighlight lang=text> | ||
+ | default-lease-time 600; | ||
+ | max-lease-time 7200; | ||
+ | |||
+ | subnet6 aabb::/64 { | ||
+ | range6 aabb::10 aabb::a00; | ||
+ | option dhcp6.name-servers aabb::2; | ||
+ | } | ||
+ | |||
+ | subnet6 ccdd::/64 { | ||
+ | range6 ccdd::10 ccdd::a00; | ||
+ | option dhcp6.name-servers aabb::2; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | # Em ''r1'' execute este comando: <syntaxhighlight lang=bash> | ||
+ | /etc/init.d/radvd start | ||
+ | </syntaxhighlight> | ||
+ | # Verifique os endereços IPv6 globais usado por ''pc1'' e ''pc2''. Compare-os com os endereços globais usados por ''r1''. | ||
+ | # Teste a comunicação entre ''pc1'' e ''pc2'' com ping6. | ||
+ | # O host ''pc1'' não obteve seu endereço IPv6, pois ele deve fazê-lo via DHCPv6. Sendo assim, faça o seguinte: | ||
+ | #* Em ''r1'' ative o servidor DHCPv6 com este comando: <syntaxhighlight lang=bash> | ||
+ | touch /var/lib/dhcp/dhcpd6.leases | ||
+ | chown dhcpd.dhcpd /var/lib/dhcp/dhcpd6.leases | ||
+ | dhcpd -6 -cf /etc/dhcp/dhcpd6.conf | ||
+ | </syntaxhighlight> | ||
+ | #* Em ''pc1'' execute o cliente DHCPv6 com este comando: <syntaxhighlight lang=bash> | ||
+ | dhclient -6 eth0 | ||
+ | </syntaxhighlight> | ||
+ | # Verifique o endereços IPv6 global usado por ''pc1''. Compare-o com os endereços globais usados por ''r1''. | ||
+ | # Teste a comunicação entre ''pc1'' e ''pc2'' com ping6. | ||
+ | # Verifique a tabela de rotas IPv6 em ''pc1'' e ''pc2''. Compare o endereço do roteador default com o do gateway. | ||
+ | # Uma reflexão: qual benefício existe em usar DHCPv6, ao invés de somente SLAAC ? | ||
+ | |||
+ | == Parte 5: Roteamento dinâmico com IPV6 ('''com o RIPNG''')== | ||
+ | |||
+ | |||
+ | |||
+ | [[Arquivo:Rede ripng.jpg|400px]] | ||
+ | |||
+ | Baseado no diagrama da Figura, usaremos serviços para rodar os protocolos de roteamento RIP a partir do Quagga, de tal modo que as tabelas estáticas de roteamento não mais serão necessárias e o sistema se auto recuperará da queda de um único enlace (nesse caso). | ||
+ | #Reinicie o NetKit2 para limpar todas as configurações. | ||
+ | #Arraste o link [http://docente.ifsc.edu.br/andre.damato/IER2018-1/redeipv6.conf redeipv6.conf] para a janela do Netkit2. | ||
+ | O arquivo ''redeipv6.conf'' possui a configuração da rede a ser executada com o Netkit2. Observe que nessa configuração já está inserida a definição dos default gateway de cada pc. | ||
+ | # Use o menu ''File->Graph'' para visualizar a topologia da rede a ser executada (compare-a com a figura no início desta atividade). Por fim, inicie a execução da rede usando o menu ''Network->Start''. | ||
+ | |||
+ | #Para testar o ambiente criado no '''pc1''' execute um ping para o pc2: <code> ping6 aabb:ccdd:eeff::1 </syntaxhighlight> <span style="color: #FF2400;">O ping está funcionando? Por quê? | ||
+ | #Deixe o ping rodando! | ||
+ | #Agora em cada roteador, configure o serviço RIP IPV6 para que os testes da próxima etapa possam ser executados. No terminal de cada um dos roteadores, execute estes comandos:<syntaxhighlight lang=text> | ||
+ | configure t | ||
+ | router ripng | ||
+ | redistribute connected | ||
+ | redistribute static | ||
+ | network eth1 | ||
+ | network eth2 | ||
+ | end | ||
+ | </syntaxhighlight> | ||
+ | #<span style="color: #FF2400;">Olhe o terminal do pc1, o que ocorreu com o ping? Por quê? | ||
+ | #Observando o estado do sistema. Vamos usar comandos para verificar o estado dos roteadores. | ||
+ | ##Verifique o estado das interfaces usando o comando: <code> show interface </syntaxhighlight> | ||
+ | ##Verifique se o roteador está habilitado para roteamento: <code> show ipv6 forwarding </syntaxhighlight> | ||
+ | ##Verifique o estado da '''tabela de roteamento''' usando o comando: <code> show ipv6 route </syntaxhighlight> '''Interprete detalhadamente essa tabela'''! Você consegue visualizar o mapa da rede a partir dessa tabela? | ||
+ | ##Verifique a configuração atual do roteador: <code> show running-config </syntaxhighlight> | ||
+ | #Teste as demais conectividades entre os PCs com pings mútuos. Tudo funcionando? | ||
+ | #A partir de cada PC trace a rota ('''traceroute IP_Destino''') para os demais PC e anote-as. | ||
+ | #Com o '''route -A inet6 -n''' verifique a anote as rotas para cada rede a partir dos pcs. | ||
+ | #Pare todos os pings. | ||
+ | #No roteador '''r1''' use o menu no canto superior direito do netkit2, vá em '''Wireshark->eth1''', para coletar os pacotes da interface '''eth2''', e verifique as ocorrências de pacotes RIPNG. | ||
+ | # Aguarde uns 2 minutos para capturar pacotes específicos do protocolo de roteamento RIP. | ||
+ | # Digite '''Ctrl + R''' para atualizar a captura do netkit2. | ||
+ | #Tente compreender as mensagens trocadas. As mensagens são trocadas aproximadamente a cada minuto, se não aparecer nenhuma no Wireshark faça um ''reload'': <Ctrl+r> até surgir alguma mensagem. | ||
+ | ##O que dizem essas mensagens? | ||
+ | ##Qual endereço '''multicast''' o '''ripng''' utiliza? | ||
+ | #A partir do '''pc1''' deixe rodando o ping <code> ping6 aabb:ccdd:eeff::2</syntaxhighlight> | ||
+ | #Com o '''wireshark''' rodando em '''r1''', desative um dos enlaces entre os roteadores e acompanhe a troca de mensagens no Wireshark (dê um ''reload''). Por questões de compatibilidade vamos desativar uma interface de um modo especial. Por exemplo, para "derrubar" o enlace r2-r1, execute no '''r2''': <code> | ||
+ | configure t entra no mode de configuração | ||
+ | interface eth2 entra na referida interface a ser operada | ||
+ | shutdown desativa a interface, se desejado </syntaxhighlight> | ||
+ | #Permaneça monitorando o ping6 e o '''Wireshark''' (''reload'': <Ctrl+r>). Observe os pacotes trocados e interprete. | ||
+ | ##Quais as mensagens trocadas pelo protocolo RIP observadas no WireShark? Observe o trecho de mensagens onde não houve respostas ao ping. | ||
+ | #Agora observe as mensagens trocadas na interface eth1, no roteador '''r1''' use o menu no canto superior direito do netkit2, vá em '''Wireshark->any''', e verifique as ocorrências de pacotes RIPNG. | ||
+ | #Reative a interface r2-r1.<code>no shutdown</syntaxhighlight> | ||
+ | ##Com o Wireshark, identifique as mensagens trocadas entre os roteadores envolvidos na mudança. | ||
+ | ##Qual a sua interpretação da mensagem? Qual o motivo da troca dessa mensagem em particular? | ||
+ | |||
+ | |||
+ | == Parte 6: Integração SLAAC e RIP == | ||
+ | |||
+ | #De acordo com o que foi aprendido nesta aula e na aula anterior, configure [http://docente.ifsc.edu.br/andre.damato/pji3/rederipng.conf esta rede] aplicando a autoconfiguração IPV6 para a borda da rede e o algoritmo RIPNG para o núcleo da rede. | ||
+ | |||
+ | |||
+ | [[Arquivo:RedeSlaacRip2.jpg|600px]] | ||
+ | |||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 6}} | ||
+ | |||
+ | =04/03/2020: Endereçamento IPv6, roteamento estático e dinâmico (Continuação)= | ||
+ | {{Collapse top | Aula 7}} | ||
+ | </font> | ||
+ | {{Collapse bottom | Aula 7}} | ||
+ | |||
+ | =09/03/2020: Endereçamento IPv6, roteamento estático e dinâmico (Continuação)= | ||
+ | {{Collapse top | Aula 8}} | ||
+ | </font> | ||
+ | {{Collapse bottom | Aula 8}} | ||
+ | |||
+ | =11/03/2020: Introdução a LAN= | ||
+ | {{Collapse top | Aula 9}} | ||
+ | <font size="3"> | ||
+ | |||
+ | ''Referências bibliográficas:'' | ||
+ | * Capítulo 13 do livro "Comunicação de Dados e Redes de Computadores", de Berhouz Forouzan | ||
+ | * Capítulo 5 do livro "Redes de Computadores e a Internet, 5a edição", de James Kurose | ||
+ | |||
+ | = Distinção entre WAN, MAN e LAN = | ||
+ | |||
+ | Existe uma [https://pt.wikipedia.org/wiki/Rede_de_computadores#Modelagem_de_rede_de_computadores_segundo_Tanenbaum classificação de redes de computadores segundo sua abrangência]. Segundo ela, as redes podem ser divididas em: | ||
+ | * '''LAN (Local Area Network, ou Rede Local):''' É uma rede onde seu tamanho se limita a apenas uma pequena região física. Uma rede de área local (LAN) é uma rede que conecta computadores e dispositivos em uma área geográfica limitada, como uma casa, escola, prédio de escritórios ou grupo de edifícios bem posicionado. LANs com fio são provavelmente baseadas em tecnologia Ethernet. Novos padrões como o [https://en.wikipedia.org/wiki/G.hn ITU-T G.hn] também fornecem uma maneira de criar uma LAN com fio usando a fiação existente, como cabos coaxiais, linhas telefônicas e linhas de energia. | ||
+ | *'''MAN (Metropolitan Area Network, ou rede metropolitana):''' A MAN é uma rede que se espalha por uma cidade. Por exemplo, uma rede de farmácias, em uma cidade, onde todas acessam uma base de dados comum. As MAN oferecem altas taxas de transmissão, baixas taxas de erros, e geralmente os canais de comunicação pertencem a uma empresa de de telecomunicações que aluga o serviço ao mercado. As redes metropolitanas são padronizadas internacionalmente pela IEEE 802, e ANSI, e padrões conhecidos para a construção de MAN são [https://en.wikipedia.org/wiki/Metro_Ethernet Metro Ethernet], [http://www.teleco.com.br/tutoriais/tutorialfr/Default.asp Frame Relay], [http://www.teleco.com.br/tutoriais/tutorialpontec2/default.asp PON] (entre outros). Outro exemplo de rede metropolitana é o [https://pt.wikipedia.org/wiki/DOCSIS sistema utilizado nas TV's a cabo]. | ||
+ | *'''WAN (Wide Area Network, ou rede de longa distância):''' Uma WAN integra equipamentos em diversas localizações geográficas (hosts, computadores, routers/gateways, etc.), envolvendo diversos países e continentes. | ||
+ | |||
+ | |||
+ | Essa classificação é útil, pois o projeto do provedor metropolitano envolve a implantação de redes desses três tipos: | ||
+ | * '''Núcleo da rede do provedor (backhaul):''' o núcleo de sua rede forma uma MAN que se espalha por sua região de cobertura. Essa rede é formada por equipamentos de interconexão e acesso aos clientes, e enlaces segundo alguma tecnologia apropriada. Ela inclui também os enlaces de acesso aos clientes do provedor, sejam por fibra ou rádio. | ||
+ | * '''Rede administrativa do provedor:''' a empresa do provedor deve ter uma LAN com alguns servidores, computadores de uso administrativo e técnico, além de equipamentos para interligá-los. | ||
+ | * '''Enlaces de acesso a Internet:''' a rede do provedor deve possuir enlaces WAN para integrar sua rede a Internet. | ||
+ | |||
+ | |||
+ | Para fins de ilustração, seguem alguns exemplos de redes WAN no Brasil: | ||
+ | * RNP [https://www.rnp.br/institucional/nossa-historia ao longo dos anos], [https://www.pop-sc.rnp.br/servicos/conectividade/#acesso_backbone_rnp 2016] | ||
+ | * Embratel [http://www.starone.com.br/ WAN por satélite (StarOne)], [https://www.embratel.com.br/conectividade serviços de dados] | ||
+ | * Eletronet [https://eletronet.com/wp-content/uploads/2017/01/mapa-rede-eletronet-2018-ampliado-730x1024.png Mapa Eletronet] | ||
+ | |||
+ | |||
+ | Este outro exemplo apresenta um diagrama de uma rede MAN MetroEthernet em Florianópolis (diagrama antigo .. tal rede não deve mais ser assim !): | ||
+ | |||
+ | [[imagem:Man-metro.png]] | ||
+ | |||
+ | |||
+ | Outra possível MAN integraria uma região de uma cidade, como mostrado a seguir: | ||
+ | |||
+ | [[imagem:pji3-Metro2.jpg|600px]] | ||
+ | <br>''Uma rede MAN baseada em Ethernet (MetroEthernet)'' | ||
+ | |||
+ | = Redes Locais (LAN) = | ||
+ | |||
+ | Obs: obtido de ''Data and Computer Communications'', livro de William Stallings, 8a edição: | ||
+ | |||
+ | * Uma LAN consiste de um '''meio de transmissão compartilhado''' e um conjunto de hardware e software para servir de interface entre dispositivos e o meio de transmissão, além de regular o acesso ao meio de forma ordenada. | ||
+ | * As topologias usadas em LANs são anel (''ring''), barramento (''bus''), árvore (''tree'') e estrela (''star''). Uma LAN em anel consiste de um laço fechado formado por repetidores que possibilitam que dados circulem ao redor do anel. Um repetidor pode funcionar também como um ponto de acesso de um dispositivo. Transmissão geralmente se dá na forma de '''quadros''' (''frames''). As topologias barramento e árvore são segmentos de cabos passivos a que os dispositivos são acoplados. A transmissão de um quadro por um dispositivo (chamado de '''estação''') pode ser escutada por qualquer outra estação. Uma LAN em estrela inclui um nó central onde as estações são acopladas. | ||
+ | * Um conjunto de '''padrões''' definido para LANs especifica uma faixa de taxas de dados e abrange uma variedade de topologias e meios de transmissão. | ||
+ | * Na maioria dos casos, uma organização possui múltiplas LANs que precisam ser interconectadas. A abordagem mais simples para esse problema se vale de equipamentos chamados de '''pontes''' (''bridges''). Os conhecidos ''switches Ethernet'' são exemplos de pontes. | ||
+ | * [http://en.wikipedia.org/wiki/Network_switch Switches] formam os blocos de montagem básicos da maioria das LANs (não muito tempo atrás [http://en.wikipedia.org/wiki/Ethernet_hub hubs] também eram usados). | ||
+ | |||
+ | == Algumas tecnologias == | ||
+ | |||
+ | * [http://en.wikipedia.org/wiki/Ethernet Ethernet (IEEE 802.3)]: largamente utilizada hoje em dia, na prática domina amplamente o cenário de redes locais. | ||
+ | * [http://en.wikipedia.org/wiki/Token_ring Token Ring (IEEE 802.5)]: foi usada nos anos 80 e início dos anos 90, mas está em desuso ... muito difícil de encontrar uma rede local deste tipo hoje em dia. | ||
+ | * [https://en.wikipedia.org/wiki/Fibre_Channel Fiber Channel]: criada especificamente para interligar servidores em redes de armazenamento de dados (SAN). | ||
+ | * [http://en.wikipedia.org/wiki/InfiniBand Infiniband]: especificamente criada para interligar equipamentos para fins de computação de alto-desempenho. Mantém-se na ativa nesse nicho específico. | ||
+ | |||
+ | == Topologias == | ||
+ | |||
+ | Uma ''topologia de rede'' diz respeito a como os equipamentos estão interligados. No caso da rede local, a topologia tem forte influência sobre seu funcionamento e sobre a tecnologia adotada. Dependendo de como se desenha a rede, diferentes mecanismos de comunicação são necessários (em particular o que se chama de ''acesso ao meio''). A eficiência da rede (aproveitamento da capacidade de canal, vazão) e sua escalabilidade (quantidade de computadores e equipamentos que podem se comunicar com qualidade aceitável) também possuem relação com a topologia. A tabela abaixo exemplifica topologias conhecidas de redes locais. | ||
+ | |||
+ | {| border="1" cellpadding="2" | ||
+ | !Topologia | ||
+ | !Exemplo | ||
+ | !Tecnologias | ||
+ | |- | ||
+ | |''Estrela''|| [[imagem:lan-Star.png|60px]] || Ethernet (IEEE 802.3) com hubs e switches | ||
+ | |- | ||
+ | |''Anel''<br>(em desuso) || [[imagem:lan-Ring.png|100px]] || Token-ring (IEEE 802.5), FDDI | ||
+ | |- | ||
+ | |''Barramento''<br>(em desuso)|| [[imagem:lan-Bus.png|80px]]|| Ethernet (IEEE 802.3) | ||
+ | |- | ||
+ | |''Árvore'' || [[imagem:lan-Tree.png|140px]] || Ethernet (IEEE 802.3) com hubs e switches | ||
+ | |- | ||
+ | |''Árvore-gorda (Fat-tree)'' ||[[imagem:lan-Fat-tree.png|140px]] || Ethernet (IEEE 802.3) com hubs e switches | ||
+ | |} | ||
+ | |||
+ | == Exemplos de uso de redes locais== | ||
+ | |||
+ | Exemplos de redes locais são fáceis de apresentar. Praticamente toda rede que interconecta computadores de usuários é uma rede local - mesmo no caso de redes sem-fio, um caso especial a ser estudado mais a frente. A rede do laboratório de Redes de Computadores, onde temos nossas aulas, é uma rede local. Os demais computadores do câmpus formam outra rede local. Quando em casa se instala um roteador ADSL e se conectam a ele um ou mais computadores, cria-se também uma rede local. Portanto, redes locais são bastante comuns e largamente utilizadas. Ainda assim, cabem alguns outros exemplos de possíveis redes locais, mostrados abaixo: | ||
+ | |||
+ | |||
+ | [[imagem:Lan2-2011-1.png|600px]] | ||
+ | <br>''Uma LAN típica com um link para Internet'' | ||
+ | |||
+ | |||
+ | |||
+ | [[imagem:Cisco-datacenter.jpg|400px]] | ||
+ | <br>''Uma LAN que integra servidores em um datacenter'' | ||
+ | |||
+ | |||
+ | [[imagem:San.gif|400px]] | ||
+ | <br>''Um tipo de LAN especial para interligar servidores de armazenamento (storage), chamada SAN (Storage Area Network)'' | ||
+ | |||
+ | = Arquitetura IEEE 802 = | ||
+ | |||
+ | * [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/ieee/ Alguns textos de padrões IEEE 802] | ||
+ | |||
+ | |||
+ | A [https://standards.ieee.org/findstds/standard/802-2014.html arquitetura IEEE 802] define um conjunto de normas e tecnologias para redes no escopo das camadas física (PHY) e de enlace. A camada de enlace é dividida em duas subcamadas: | ||
+ | * '''LLC (Logical Link Control):''' o equivalente a um protocolo de enlace de fato, porém na prática de uso restrito (pouco utilizada). | ||
+ | * '''MAC (Medium Access Control):''' um protocolo de acesso ao meio de transmissão, que depende do tipo de meio físico e tecnologia de comunicação. Esse tipo de protocolo é necessário quando o meio de transmissão é compartilhado. | ||
+ | |||
+ | |||
+ | [[imagem:Arq-ieee.png|400px]] | ||
+ | |||
+ | |||
+ | Alguns padrões conhecidos ([http://standards.ieee.org/search-results.html?facetValue=4294967268,4294967245&q=Standard lista completa]): | ||
+ | * '''IEEE 802.3 e variações''': conhecidos como LAN Ethernet | ||
+ | * '''IEEE 802.1''': tecnologias para interligação de LANs | ||
+ | * '''IEEE 802.11 e variações''': conhecidos como WLAN (redes locais sem-fio), o que inclui WiFi | ||
+ | * '''IEEE 802.15''': padrões para WPAN (redes pessoais sem-fio), incluindo Bluetooth | ||
+ | |||
+ | == Protocolo de acesso ao meio (MAC) == | ||
+ | |||
+ | O protocolo de acesso ao meio (MAC) é parte da camada de enlace na arquitetura IEEE 802, e tem papel fundamental na comunicação entre estações. O MAC é responsável por: | ||
+ | * '''Definir um formato de quadro''' onde deve ser encapsulada uma PDU de um protocolo de camada superior. Por exemplo, o quadro Ethernet (padrão IEEE 802.3) tem este formato: | ||
+ | |||
+ | |||
+ | [[imagem:pji3-Ether-frame.jpg]] | ||
+ | <!--[[imagem:Quadro-ethernet.png|600px]] | ||
+ | <br>''Quadro ethernet'' --> | ||
+ | |||
+ | |||
+ | * '''Endereçar as estações''', já que o meio de transmissão é multiponto (ver campos ''Endereço Destino (destination address)'' e ''Endereço de origem (source address)'' no quadro Ethernet). Endereços têm 6 bytes, em que informam o fabricante (OUI) e o número do adaptador de rede, conforme mostrado a seguir: | ||
+ | |||
+ | [[imagem:pji3-MAC-48_Address.svg]] | ||
+ | <br>''Formato do endereço MAC (criado por: Inductiveload, modificado/corrigido por: Kju [https://commons.wikimedia.org/w/index.php?curid=1852032 Link do original])'' | ||
+ | |||
+ | |||
+ | * '''Acessar o meio para efetuar a transmissão de quadros''', resolvendo conflitos de acesso quando necessário. Um conflito de acesso (chamado de ''colisão'') pode ocorrer em alguns casos quando mais de uma estação tenta transmitir ao mesmo tempo. Isso é fundamental em redes sem-fio, tais como Wifi (IEEE 802.11) e Bluetooth (IEEE 802.15.3), porém não é mais necessário nas LAN ethernet atuais (IEEE 802.3), que operam em modo full-duplex. | ||
+ | |||
+ | == Padrão IEEE 802.3 (Ethernet) == | ||
+ | |||
+ | * Ver seção 5.4 do livro ''Redes de Computadores e a Internet, 6a edição'', de James Kurose e Keith Ross. | ||
+ | |||
+ | |||
+ | [[Imagem:Ethernet.png|600px]] | ||
+ | |||
+ | ''Desenho usado por Bob Metcalfe, um dos criadores da Ethernet, para apresentação em uma conferência em 1976.'' | ||
+ | |||
+ | |||
+ | Redes locais Ethernet (padrão IEEE 802.3 e extensões) são compostas de equipamentos que se comunicam, denominados estações (STA na padrão IEEE 802.3), de equipamentos que os interligam (''hubs'' e ''switches''), e do meio de transmissão. A figura abaixo ilustra uma rede local hipotética com seus vários componentes. | ||
+ | |||
+ | [[imagem:Lab1-lan-demo.png|400px]] | ||
+ | |||
+ | |||
+ | De forma geral, uma estação possui um ou mais adaptadores de rede (placas de rede, ou NIC – Network Interface Card), como na figura abaixo à esquerda. Atualmente, adaptadores de rede das estações são conectados a um switch por meio de cabos de rede TP (par trançado) com conectores RJ-45, mostrado na figura abaixo à direita. Outros tipos de cabos são possíveis, tais como cabos coaxiais (em desuso, além de prescindir de ''switches'') e fibra ótica. | ||
+ | |||
+ | |||
+ | [[imagem:Lab1-nic-switch.png|400px]] | ||
+ | |||
+ | |||
+ | Em resumo, são estes os elementos de uma rede Ethernet: | ||
+ | * '''Estações:''' equipamentos que se comunicam pela rede. Ex: computadores e roteadores. | ||
+ | * '''Interface de rede (NIC):''' dispositivo embutido em cada estação com a finalidade de prover o acesso à rede. Implementa as camadas PHY e MAC. | ||
+ | * '''Meio de transmissão:''' representado pelos cabos por onde os quadros ethernet são transmitidos. Esses cabos são conectados às interfaces de rede das estações. | ||
+ | * '''Switch:''' equipamento de interconexão usado para interligar as estações. Cada estação é conectada a um switch por meio de um cabo. Um switch usualmente possui múltiplas interfaces de rede (12, 24 ou mais). Uma rede com switches apresenta uma topologia física em estrela, árvore ou mesmo em anel ! | ||
+ | |||
+ | |||
+ | Originalmente LANs Ethernet foram construídas usando um cabo único para interligar as estações (cabo coaxial). Posteriormente surgiram as redes baseadas em hubs, equipamentos que interligavam as estações em nível da camada física (funcionavam como repetidores). Atualmente essas redes são construídas usando switches, equipamentos que interligam as estacões em nível da camada de enlace (na verdade, da subcamada MAC). Um switch apresenta como benefícios, se comparado com hubs: | ||
+ | |||
+ | # '''atuação em nível de MAC:''' o switch faz o acesso ao meio com CSMA/CD ao encaminhar um quadro, quebrando o domínio de colisão; além disto, um switch pode operar em modo full-duplex, quando então inexiste a possibilidade de colisão. | ||
+ | # '''preservação da capacidade do canal:''' para quadros unicast, o switch encaminha um quadro somente pela porta onde reside o destinatário. | ||
+ | # '''interligação de segmentos com diferentes taxas e modos de transmissão:''' um switch é capaz de receber um quadro por uma porta com uma certa taxa de transmissão (ex: 100 Mbps) e transmitir por outra com taxa diferente (ex: 1 Gbps). | ||
+ | # '''realizar funções avançadas de interligação de segmentos:''' um switch pode realizar diversas funções de rede, tais como virtualização (VLAN), tratamento de caminhos fechados (loops), agregação de enlaces, controle de acesso, entre outras. | ||
+ | |||
+ | |||
+ | Essas características importantes devem fazer com que uma LAN com switches tenha um desempenho superior a uma LAN com hubs. Por desempenho entenda-se um número menor de colisões sob tráfego intenso (ou mesmo ausência total de colisões), e maior capacidade de canal vista por cada equipamento conectado ao switch. | ||
+ | |||
+ | |||
+ | O padrão sofreu um grande número de atualizações e extensões desde sua concepção nos anos 1980. Por exemplo, em sua primeira versão uma rede ethernet apresentava taxa de transmissão de 10 Mbps em half-duplex, porém atualmente essas redes operem em 1 Gbps em modo full-duplex. Na realidade, já existem versões em uso com taxas de 10 Gbps, e outras mais recentes com taxas de até 100 Gbps (ver página 46 [http://www.arandanet.com.br/assets/revistas/rti/2010/julho/index.php da revista RTI online]). Uma tabela dessas extensões ao padrão podem ser vistas na Wikipedia. | ||
+ | * [https://pt.wikipedia.org/wiki/IEEE_802.3 Padrão IEEE 802.3 na Wikipedia] | ||
+ | |||
+ | |||
+ | Além de taxas maiores de transmissão, a operação em modo full-duplex predominante nas versões recentes do padrão prescindem do controle de acesso ao meio feito pelo protocolo MAC. Quando em modo half-duplex, o controle de acesso ao meio do tipo CSMA/CD (''Carrier Sense Multiple Access/Collision Detect'' - ''Acesso Múltiplo com Detecção de Portadora/Detecção de Colisões'') ainda é necessário. | ||
+ | |||
+ | |||
+ | Quando em modo half-duplex, usa-se o acesso ao meio do tipo CSMA/CD, que é probabilístico: uma estação verifica se o meio está está livre antes de iniciar uma transmissão, mas isso não impede que ocorra uma colisão (apenas reduz sua chance). Se acontecer uma colisão, cada estação envolvida usa esperas de duração aleatória para desempate, chamadas de ''backoff''. A ideia é que as estações sorteiem valores de espera diferentes, e assim a que tiver escolhido um valor menor consiga transmitir seu quadro. Veja o fluxograma acima para entender como isso é feito. | ||
+ | |||
+ | * [https://pt.wikipedia.org/wiki/CSMA/CD Exemplo CSMA/CD] | ||
+ | |||
+ | [[imagem:Csmacd-fluxograma.jpg]] | ||
+ | <br>''Fluxograma para o acesso ao meio com CSMA/CD do padrão IEEE 802.3.'' | ||
+ | |||
+ | |||
+ | As colisões e esperas (''backoffs'') impedem que esse protocolo de acesso ao meio aproveite totalmente a capacidade do meio de transmissão. '''Nas gerações atuais do padrão IEEE 802.3 (Gigabit Ethernet e posteriores) o CSMA/CD não é mais utilizado'''. Nessas atualizações do padrão, o modo de comunicação é full-duplex (nas versões anteriores, que operavam a 10 e 100 Mbps, há a possibilidade de ser half ou full-duplex). Se as comunicações são full-duplex, então '''conceitualmente não existem colisões'''. Isso se deve ao fato de que nessas novas versões cada estação possui uma via exclusiva para transmitir e outra para receber, portanto não existe mais um meio compartilhado. | ||
+ | |||
+ | = Roteiro 04: Introdução a LAN = | ||
+ | |||
+ | == Objetivos == | ||
+ | |||
+ | * Conhecer os equipamentos típicos de uma rede local Ethernet | ||
+ | * Estimar o desempenho de uma LAN Ethernet comutada (com switch) | ||
+ | |||
+ | A rede de teste para o experimento será composta de computadores ligados a um switch Ethernet a 100 Mbps em modos half ou full-duplex. Serão sintetizados tráfegos intensos, de forma a poder comparar o desempenho das transmissões nos dois casos. | ||
+ | |||
+ | [[imagem:Lab1.png]] | ||
+ | |||
+ | * [http://tele.sj.ifsc.edu.br/~msobral/pji3/TL-SG3210(UN)_V2_UG.pdf Manual do usuário do switch] | ||
+ | * [http://tele.sj.ifsc.edu.br/~msobral/pji3/TL-SG3210(UN)_V2.0_CLI_.pdf Manual da interface de linha de comando (CLI) do switch] | ||
+ | |||
+ | == Parte 1: ativos de rede == | ||
+ | |||
+ | # Observe a placa de rede de seu computador e sua conexão à rede por meio do cabo TP. Os computadores do laboratório estão conectados ao switch Intelbras, que reside no rack central. O número da porta onde está conectado seu computador na bancada corresponde à porta do switch. Desconecte o cabo do seu computador e observe o status da porta correspondente no switch (o status é informado por um led, que aceso significa que há equipamento ativo conectado àquela porta). '''Questão:''' como será que o switch sabe que um equipamento foi conectado a uma porta ? Ver [https://en.wikipedia.org/wiki/Autonegotiation esta explicação] ... | ||
+ | # Veja que informações o Linux provê a respeito de seu adaptador Ethernet. Usando os comandos administrativos do Linux, descubra: | ||
+ | #* o modelo do adaptador, e seu endereço MAC: ver comandos [http://manpages.ubuntu.com/manpages/hardy/man8/lspci.8.html lspci], [http://manpages.ubuntu.com/manpages/hardy/man8/lsusb.8.html lsusb] e [http://manpages.ubuntu.com/manpages/hardy/man8/ifconfig.8.html ifconfig]. | ||
+ | #* seu modo de operação (velocidade, modo duplex, se o enlace está ativo): ver comando [http://manpages.ubuntu.com/manpages/hardy/man8/ethtool.8.html ethtool] | ||
+ | #* suas estatísticas de operação (quadros transmitidos e recebidos, colisões e erros em geral): ver comandos [http://manpages.ubuntu.com/manpages/hardy/man8/netstat.8.html netstat] e [http://manpages.ubuntu.com/manpages/hardy/man8/ifconfig.8.html ifconfig].<br><br>Após obter essas informações, experimente desconectar o cabo da placa de rede e repetir a execução dos comandos. | ||
+ | # Use um switch TP-Link 8 portas para conectar seu computador à rede do laboratório. | ||
+ | # Repita os ítens 1 e 2, para conferir se houve alguma modificação na interface ethernet do seu computador. | ||
+ | # Acesse a interface de gerenciamento do switch TP-Link. Isso pode ser feito via web ou telnet. Você deve precisar do [http://tele.sj.ifsc.edu.br/~msobral/pji3/TL-SG3210(UN)_V2_UG.pdf manual do switch]. | ||
+ | # Identifique as informações no switch associadas às portas conectadas ao seu computador e à rede do laboratório. | ||
+ | # Descubra a taxa de bits e o modo duplex da porta do switch onde está conectado seu computador. Confira se as informações obtidas no switch estão consistentes com as informações da interface de rede do computador. | ||
+ | |||
+ | == Parte 2: switch ethernet == | ||
+ | |||
+ | # Mantendo os computadores conectados ao switch do laboratório, cada aluno deve escolher um colega para fazer uma medição de vazão na rede (''throughput''). | ||
+ | #* Inicialmente apenas um par de aluno deve realizar a mediação de vazão. | ||
+ | #* Um dos alunos deve identificar o endereço IP da interface ethernet de seu computador, e informá-lo ao outro colega envolvido na medição. | ||
+ | #* Esse mesmo aluno deve executar este programa: <syntaxhighlight lang=bash> | ||
+ | iperf -s | ||
+ | </syntaxhighlight> | ||
+ | #* Outro aluno deve executar o mesmo programa, porém em modo cliente desta forma: <syntaxhighlight lang=bash> | ||
+ | iperf -c IP_do_outro_computador -i 5 -t 30 | ||
+ | </syntaxhighlight> | ||
+ | #* Quando o programa cliente terminar, observe os valores reportados quanto à vazão obtida. | ||
+ | #* A medição deve ser repetida, porém com todos os alunos envolvidos a realizarem-na simultaneamente. Que diferença houve no resultado da vazão ? | ||
+ | # Conecte seu computador a um switch TP-Link. | ||
+ | # Refaça a medição da taxa de bits entre seu computador e o de um colega. O computador de seu colega deve estar conectado em outro switch. | ||
+ | <!--# Modifique a taxa de bits e/ou modo duplex diretamente na porta do switch onde está seu computador. Seu computador ainda consegue se comunicar com o resto da rede ? | ||
+ | # Retorne a porta do switch ao modo de auto-negociação, porém modifique a interface de rede do seu computador para operar a 10 Mbps e modo half-duplex. Seu computador ainda consegue se comunicar ? OBS: para mudar a taxa e modo na interface do computador use este comando: <syntaxhighlight lang=bash> | ||
+ | sudo ethtool -s eth0 speed 10 duplex half autoneg off | ||
+ | </syntaxhighlight> | ||
+ | # Configure a interface de rede do computador de volta para o modo auto-negociação: <syntaxhighlight lang=bash> | ||
+ | sudo ethtool -s eth0 autoneg on | ||
+ | </syntaxhighlight> | ||
+ | # Identifique ações que podem ser feitas nas portas do switch, tais como: bloqueio, espelhamento, restrição de acesso, entre possivelmente outras. Experimente usá-las, e crie experimentos para entender o que acontece. | ||
+ | --> | ||
+ | |||
+ | == Parte 3: topologias de rede == | ||
+ | |||
+ | # Conecte o computador de um colega ao seu switch, e teste a comunicação entre os computadores. Eles se comunicaram normalmente ? | ||
+ | #* ''Aproveite e estime quanto tempo leva um pacote para ir de um computador ao outro.'' | ||
+ | # Interligue seu switch ao switch de um colega. Experimente em seguida testar a comunicação entre seu computador e o de seu colega. Que diferenças existem em relação ao experimento anterior ? O que se pode concluir ? | ||
+ | #* ''Novamente estime quanto tempo leva um pacote para ir de um computador ao outro.'' | ||
+ | # Todos os switches devem ser interligados de acordo com as topologias abaixo descritas. Em cada caso, deve-se testar a comunicação entre os computadores que estão conectados aos switches. | ||
+ | #* ''Novamente estime quanto tempo leva um pacote para ir de um computador aos outros computadores.'' | ||
+ | |||
+ | <center> | ||
+ | {|border=1 | ||
+ | !Topologia | ||
+ | !Diagrama | ||
+ | |- | ||
+ | |Linear || [[imagem:pji3-Topo-linear.jpg|300px]] | ||
+ | |- | ||
+ | |Estrela || [[imagem:pji3-Topo-estrela.jpg|200px]] | ||
+ | |- | ||
+ | |Arvore || [[imagem:pji3-Topo-arvore.jpg|200px]] | ||
+ | |- | ||
+ | |Anel || [[imagem:pji3-Topo-anel.jpg|200px]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | |||
+ | '''4.''' O que se pode concluir quanto ao efeito de cada topologia nas comunicações na rede ? | ||
+ | * Elas influenciam na comunicação ? | ||
+ | * Causam algum impedimento ? | ||
+ | * Os atrasos de envio de pacotes variam significativamente em função da topologia ? | ||
+ | |||
+ | == Parte 4: análise do funcionamento de switches == | ||
+ | |||
+ | # Acesse a interface de gerenciamento do switch. | ||
+ | # Com a topologia em estrela implantada no último ítem da seção anterior, todos os computadores devem fazer ping para um destino qualquer. | ||
+ | # Na interface de gerenciamento do switch acesse a tabela MAC. Liste os endereços MAC ali contidos, anotando as portas a que estão associados. | ||
+ | ## Identifique a que computador se refere cada endereço MAC | ||
+ | ## Compare as portas a que estão associados esses endereços no switch com a topologia da rede e onde estão fisicamente localizados os computadores | ||
+ | ## O que se pode concluir sobre essa tabela de endereços MAC mantida no switch ? | ||
+ | # Este experimento busca mostrar como switches encaminham quadros ethernet. | ||
+ | ## Coloque seu computador diretamente na rede do laboratório, conectando seu cabo na tomada de rede da bancada. | ||
+ | ## Execute o wireshark, ativando a captura de pacotes ICMP | ||
+ | ## Um dos computadores deve fazer ping para algum outro computador do laboratório. OBS: apenas um computador deve fazer isso ! | ||
+ | ## Em todos os computadores, deve-se observar no wireshark se os pacotes ICMP gerados pelo ping são capturados. Em quais computadores o wireshark conseguiu capturar os pacotes do ping ? | ||
+ | ## Agora em todos computadores o wireshark deve realizar a captura de pacotes ICMP e ARP | ||
+ | ## Um dos computadores deve realizar um ping para outro computador ainda não contatado (que ainda não tenha se comunicado). | ||
+ | ## O que o wireshark mostrou em todos os computadores ? Foram vistas mensagens ARP ? Quais os endereços MAC dessas mensagens ? E em quais computadores o wireshark mostrou pacotes ICMP do ping ? | ||
+ | ## O que se pode concluir sobre sobre o encaminhamento de quadros feitos por um switch ? Em uma LAN com switches seria possível ter vários pares distintos de computadores se comunicando simultaneamente ? | ||
+ | <!-- | ||
+ | # Este experimento busca mostrar como switches comutam os quadros: se os recebem e armazenam antes de retransmiti-los para seus destinos, ou se os retransmitem durante suas próprias recepções. | ||
+ | ## Um dos computadores deve ter sua interface de rede configurada para operar a 10 Mbps full-duplex (ver [[PJI3-lab1#Parte_2:_switch_ethernet|aula anterior]]) | ||
+ | ## Nesse computador deve-se rodar o wireshark para capturar pacotes UDP port 7788 | ||
+ | ## Além do wireshark, deve-se rodar também este programa: <syntaxhighlight lang=bash> | ||
+ | nc -l -u 7788 > texto | ||
+ | </syntaxhighlight> | ||
+ | ## Em outro computador deve-se baixar este arquivo: [http://tele.sj.ifsc.edu.br/~msobral/pji2/desconhecidos/texto texto] | ||
+ | ## Nesse outro computador deve-se também rodar o wireshark, para capturar pacotes UDP port 7788 | ||
+ | ## Nesse computador onde se baixou o arquivo deve-se enviá-lo para o computador que está a 10 Mbps. Isso deve ser feito com este comando: <syntaxhighlight lang=bash> | ||
+ | nc -u IP_do_computador_a_10Mbps 7788 < texto | ||
+ | </syntaxhighlight> | ||
+ | ## Em cada um dos computadores, deve-se observar no wireshark quantos pacotes foram recebidos e transmitidos, e quanto tempo levou desde o primeiro até o último deles. | ||
+ | ## Compare os valores identificados no ítem anterior. Quantos pacotes foram transmitidos, e quantos foram recebidos ? Quanto tempo levou a transmissão, e quanto demorou a recepção ? | ||
+ | ## Com base no resultado anterior, pode-se concluir que quadros recebidos numa porta do switch são armazenados no switch antes de serem retransmitidos para seu destino ? | ||
+ | --> | ||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 9}} | ||
+ | |||
+ | =16/03/2020: Interligação de LANs= | ||
+ | |||
+ | {{Collapse top | Aula 10}} | ||
+ | <font size="3"> | ||
+ | |||
+ | * Capítulo 16 do livro "''Comunicação de Dados e Redes de Computadores, 4a ed.''", de Behrouz Forouzan. | ||
+ | * Capítulo 5 do livro "''Redes de Computadores e a Internet, 5a ed.''", de James Kurose. | ||
+ | * Capítulo 4 do livro "''Redes de Computadores, 4a ed.''", de Andrew Tanenbaum. | ||
+ | |||
+ | |||
+ | Nas [[PJI11103:_Introdução_a_LAN|aulas sobre introdução a redes locais (LAN)]], foi visto que um elemento essencial para criar uma LAN é o switch. Esse equipamento serve para interligar os demais dispostivos que usam a rede, tais como computadores, servidores e roteadores. Toda a organização de uma LAN, que diz respeito ao desenho da rede (sua topologia) e controles sobre as comunicações dos dispositivos no escopo da LAN, são feitos nos switches por meio de algumas tecnologias para interligação de redes locais. | ||
+ | |||
+ | == Interligação de LANs ([http://standards.ieee.org/findstds/standard/802.1D-2004.html norma IEEE802.1D]) == | ||
+ | |||
+ | * [https://www.youtube.com/watch?v=Ofjsh_E4HFY Comparação entre hub (??), switch e roteador] | ||
+ | |||
+ | |||
+ | As LANs podem ser interligadas utilizando ativos de redes como: hubs, switches e roteadores. Porém nesta seção trataremos dos switches, que são equipamentos que funcionam em conformidade com o padrão IEEE 802.1D. Os switches são peças essenciais na infraestrutura de uma LAN, ... | ||
+ | |||
+ | |||
+ | Nos dias atuais, não é mais usual utilizar bridges para dividir a rede em segmentos pois os switches já desempenham essa função. Os switches criam segmentos individuais para cada host, o que elimina o problema das colisões, além de possibilitar segmentar uma rede. Um switch possui várias portas, cada qual podendo se conectar a um computador ou a uma outra LAN. A função do switch é repassar os quadros entre os computadores que estão conectados a ele, utilizando o endereço MAC de destino existente em cada quadro para determinar por qual porta retransmiti-lo. | ||
+ | |||
+ | Um switch aprende dinamicamente os endereços MAC acessíveis em cada porta usando a técnica ''bridge learning''. Para saber quais os endereços MAC conectados a cada porta, um switch registra em uma tabela o endereço MAC de origem de um quadro recebido por uma porta. Essa tabela de endereços MAC associa cada endereço aprendido à porta por onde o respectivo quadro foi recebido. Por exemplo, imagine 2 computadores, A e B, conectados a um mesmo switch porém em portas distintas como mostrado na Figura a seguir: | ||
+ | |||
+ | [[Arquivo:Ex switch.jpg|600px]] | ||
+ | |||
+ | Se o computador A deseja se comunicar com B, A envia um pacote para B. Entretanto, o switch não saberá em um primeiro momento a qual porta o PC B esta conectado. Sendo assim, o switch registra em sua tabela que o computador A está conectado na porta 1 ... | ||
+ | |||
+ | |||
+ | |||
+ | [[Arquivo:Ex switch2.jpg|600px]] | ||
+ | |||
+ | |||
+ | ... e envia o pacote de A para todas as portas. | ||
+ | |||
+ | |||
+ | [[Arquivo:Ex switch3.jpg|600px]] | ||
+ | |||
+ | |||
+ | Apenas o B aceita o quadro, pois o endereço MAC de destino nele contido corresponde a seu próprio endereço MAC. Supondo que B responda a mensagem de A (imagine que o quadro recebido por B contivesse uma mensagem ''ICMP echo request''), o switch recebe esse quadro enviado por B, e então anota em sua tabela de endereços MAC o endereço MAC de origem desse quadro e a porta por onde foi recebido. Uma vez preenchida a tabela, o switch pode encaminhar os quadros diretamente para A e B, estabelecendo comunicação isolada entre os computadores de origem e destino. Por fim, os quadros de broadcast e multicast são sempre enviados por todas as portas do switch, a não ser que a rede seja explicitamente segmentada em VLANs (ver adiante). | ||
+ | * [http://www.sj.ifsc.edu.br/~msobral/RCO2/slides/lan-switch-transparent.swf Para ver um novo exemplo veja esta animação] | ||
+ | |||
+ | |||
+ | |||
+ | [[Arquivo:Ex switch4.jpg|600px]] | ||
+ | |||
+ | = Segmentação de LANs = | ||
+ | |||
+ | A segmentação física é uma solução aparentemente simples e direta. Cada subrede deve ser composta de uma estrutura exclusiva, contendo seus switches e cabeamentos. No entanto, para adotar esse tipo de segmentação, algumas modificações precisarão ser feitas na infraestrutura de rede existente. Observe a estrutura física da rede do campus: | ||
+ | |||
+ | [[imagem:Rede-ifsc-sj.png|600px]] | ||
+ | |||
+ | |||
+ | O que seria necessário fazer para implantar uma segmentação física ? | ||
+ | |||
+ | == Segmentação com VLANs == | ||
+ | |||
+ | Se a reestruturação pudesse ser efetuada com mínimas modificações na estrutura física (incluindo cabeamento), a implantação da nova rede seria mais rápida e menos custosa. Para isso ser possível, seria necessário que a infraestrutura de rede existente tivesse a capacidade de agrupar portas de switches, separando-as em segmentos lógicos. Quer dizer, deveria ser possível criar '''redes locais virtuais''', como mostrado na seguinte figura: | ||
+ | |||
+ | [[imagem:Vlans.png]] | ||
+ | |||
+ | No exemplo acima, três redes locais virtuais ('''VLAN''') foram implantadas nos switches. Cada rede local virtual é composta por um certo número de computadores, que podem estar conectados a diferentes switches. Assim, uma rede local pode ter uma estrutura lógica diferente da estrutura física (a forma como seus computadores estão fisicamente interligados). Uma facilidade como essa funcionaria, de certa forma, como um ''patch panel'' virtual, que seria implementado diretamente nos switches. | ||
+ | |||
+ | '''Redes locais virtuais''' são técnicas para implantar duas ou mais redes locais<br>com topologias arbitrárias, usando como base uma infraestrutura de rede local física.<br>Isso é semelhante a máquinas virtuais, em que se criam computadores virtuais<br>sobre um computador real. | ||
+ | |||
+ | == Padrão IEEE 802.1q == | ||
+ | |||
+ | Os primeiros switches com suporte a VLANs as implementavam de forma legada (i.e. não seguiam um padrão da indústria). Isso impedia que houvesse interoperabilidade entre equipamentos de diferentes fabricantes. Logo a IEEE formou um grupo de trabalho para propor mecanismos padronizados para implantar VLANs, dando origem ao padrão [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/ieee/802.1Q-2005.pdf IEEE 802.1q]. Os fabricantes de equipamentos de rede o adataram largamente, suplantando outras tecnologias legadas (ex: [http://www.cisco.com/en/US/tech/tk389/tk689/technologies_tech_note09186a0080094665.shtml ISL] e [http://www.cisco.com/en/US/tech/tk389/tk689/technologies_tech_note09186a0080094c52.shtml VTP] da Cisco). Com isso, VLANs IEEE 802.1q podem ser criadas usando switches de fabricantes diferentes. | ||
+ | |||
+ | Atualmente, a implantação de VLANs depende de switches com suporte ao padrão IEEE 802.1q. Assim, verifique quais dos switches do laboratório possuem suporte a VLAN: | ||
+ | * D-Link DES-526 [http://www.sj.ifsc.edu.br/~msobral/IER/roteiros/manual-des3526.pdf (manual)] | ||
+ | * Micronet SP 1658B [http://www.sj.ifsc.edu.br/~msobral/IER/roteiros/SP1658B_Manual.pdf (manual)] | ||
+ | * 3Com 3224 [http://www.3com.com/prod/pt_la_amer/detail.jsp?tab=prodspec&sku=3C16479 (especificações)] | ||
+ | |||
+ | Uma VLAN é identificada por um número, chamado VID (''VLAN Identifier''), sendo que a VLAN com VID 1 é considerada a ''VLAN default'' (configuração de fábrica). Em um switch com suporte a VLAN IEEE 802.1q, cada porta possui um (ou mais ...) VID, o que define a que VLAN pertence. Assim, para criar uma VLAN, devem-se modificar os VID das portas de switches que dela farão parte. Por exemplo, em uma pequena rede com duas VLANs as portas dos switches podem estar configuradas da seguinte forma: | ||
+ | |||
+ | |||
+ | [[imagem:Bridge3.png]] | ||
+ | |||
+ | Além do VID, a configuração da porta de um switch deve especificar o modo de operação da VLAN: | ||
+ | * '''tagged (ou TRUNK):''' cada quadro transmitido ou recebido por essa porta deve conter o número da VLAN a que pertence. Esse modo é usado normalmente em portas que interligam switches. | ||
+ | * '''untagged (ou ACCESS):''' quadros que entram e saem pela porta não possuem informação sobre a VLAN a que pertencem. Usado normalmente para conectar computadores e servidores a switches. | ||
+ | |||
+ | |||
+ | Esses modos '''tagged''' e '''untagged''' implicam haver uma forma de um quadro Ethernet informar a que VLAN pertence. Isso é usado para restringir a propagação de quadros, fazendo com que sejam recebidos e transmitidos somente por portas de switches que fazem parte de suas VLANs. | ||
+ | |||
+ | |||
+ | O padrão IEEE 802.1q define, entre outras coisas, uma extensão ao quadro MAC para identificar a que VLAN este pertence. Essa extensão, denominada tag (etiqueta) e mostrada na figura abaixo, compõe-se de 4 bytes situados entre os campos de endereço de origem e ''Type''. O identificador de VLAN (VID) ocupa 12 bits, o que possibilita portanto 4096 diferentes VLANs. | ||
+ | |||
+ | |||
+ | [[imagem:Quadro-8021q.png]] | ||
+ | <br>''Quadro ethernet com a TAG IEEE 802.1q'' | ||
+ | |||
+ | |||
+ | A ''tag'' de VLAN, inserida em quadros Ethernet, está diretamente relacionada com os modos '''tagged''' e '''untagged''' de portas de switches. Portas em modo '''tagged''' transmitem e recebem quadros que possuem ''tag'', e portas em modo '''untagged''' recebem e transmitem quadros que não possuem ''tag''. Isso foi pensado para tornar a implantação de VLANs transparente para os usuários finais, pois seus computadores não precisarão saber que existem VLANs (i.e. não precisarão interpretar ''tags''). Por isso equipamentos que não interpretam ''tags'' são denominados ''VLAN-unaware'' (desconhecem VLAN), e equipamentos que recebem e transmitem quadros com ''tag'' são referidos como ''VLAN-aware'' (conhecem VLAN). | ||
+ | |||
+ | |||
+ | '''Exemplo: simulador de switch com VLAN:''' | ||
+ | <br>Esta animação possibilita simular a configuração de VLANs em um switch, e efetuar testes de transmissão. Experimente criar diferentes VLANs e observar o efeito em transmissões unicast e broadcast (clique na figura para acessar o simulador). | ||
+ | |||
+ | [[imagem:Simulador-vlan.png|link=http://www2.rad.com/networks/2006/vlan/demo.htm|Um simulador de VLANs]] | ||
+ | |||
+ | = Roteiro 05: Interligação de LANs = | ||
+ | |||
+ | == Objetivos == | ||
+ | |||
+ | * Compreender o aprendizado de switches | ||
+ | * Segmentar LANs | ||
+ | |||
+ | |||
+ | Caso necessário mudar o endereço IP do switch, ou mesmo resetá-lo para padrão de fábrica, execute estes procedimentos: | ||
+ | |||
+ | # Mudar o endereço IP do switch. Na CLI do switch execute estes comandos:<syntaxhighlight lang=text> | ||
+ | enable | ||
+ | configure | ||
+ | interface vlan 1 | ||
+ | ip address endereço_IP mascara | ||
+ | end | ||
+ | </syntaxhighlight> | ||
+ | # Resetar o switch para padrão de fábrica <!--(o switch ficará com IP 192.168.0.1 depois disso)-->: <syntaxhighlight lang=text> | ||
+ | enable | ||
+ | reset | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Parte 1: Segmentação de LANs == | ||
+ | |||
+ | Uma rede precisa ser reorganizada em três subredes em suas respectivas redes locais, como mostrado na figura a seguir: | ||
+ | |||
+ | [[imagem:Vlan-ex1.png|600px]] | ||
+ | |||
+ | Planeje essa modificação, listando: | ||
+ | # Os equipamentos adicionais a serem utilizados | ||
+ | # As subredes a serem implantadas | ||
+ | # As configurações de rede que precisam ser feitas nos equipamentos | ||
+ | |||
+ | == Parte 2: Segmentação de LANs com VLANs== | ||
+ | |||
+ | # A rede descrita [http://tele.sj.ifsc.edu.br/~msobral/pji3/lab6/vlan1.conf neste arquivo de configuração do Netkit2] é composta por um switch e quatro computadores. essa rede possui duas VLANs (VLAN 5 e VLAN 10), de forma que ''pc1'' e ''pc4'' pertencem a VLAN 5, e os computadores ''pc2'' e ''pc3'' estão na VLAN 10. Execute essa rede e teste a comunicação entre os computadores - quais computadores conseguem se comunicar ?<br><br>[[imagem:Vlans-ex1.png|300px]] | ||
+ | # A peça-chave na implantação das VLANs foi o switch. Observe a [http://tele.sj.ifsc.edu.br/~msobral/pji3/lab6/vlan1.conf configuração dessa rede], notando que atributos foram usados nas portas do switch. | ||
+ | # Seja esta outra rede, composta por dois switches e duas VLANS:<br>[[imagem:Bridge3.png]] | ||
+ | #* Execute essa rede a partir [http://tele.sj.ifsc.edu.br/~msobral/pji3/lab6/vlan2.conf deste arquivo de configuração] do Netkit2. | ||
+ | #* Teste a comunicação entre os computadores: quais pares conseguem se comunicar ? | ||
+ | #* Escolha um par de computadores, de forma que um deles esteja no switch 1 e o outro no switch 2. Ative a comunicação com ping entre eles, e e, seguida execute o wireshark no switch 1 de forma a capturar na interface eth3. O que se pode notar no cabeçalho Ethernet dos quadros capturados ? | ||
+ | # Na figura abaixo, a rede da esquerda está fisicamente implantada em uma pequena empresa. No entanto, uma reestruturação tem como objetivo modificá-la de acordo com o diagrama mostrado à direita. Essa alteração da rede deve ser feita sem adicionar switches ou modificar o cabeamento (tampouco devem-se mudar as conexões de pontos de rede às portas de switches). Faça essa modificação em duas etapas: | ||
+ | ## Faça o planejamento dessa rede com todas as informações que deverão ser configuradas.<!--Crie um protótipo usando o [[Netkit2]]-->. | ||
+ | ## Após finalizar o planejamento<!--Após entender o protótipo-->, implante essa rede no laboratório usando os switches TP-Link SG-3210.<br><br>[[imagem:Vlan-ex1.png]]<br><br> | ||
+ | <!--#* Arquivo de configuração [http://tele.sj.ifsc.edu.br/~msobral/pji3/lab6/lan1.conf lan1.conf], contendo a topologia física.--> | ||
+ | <!--#* Para criar a topologia lógica usando VLANs: use os atributos ''vlan_untagged'' e ''vlans_tagged'' nas portas dos switches, conforme o [[Netkit2#VLANs|manual do Netkit2]].--> | ||
+ | <!--# Agora que essa rede foi bem entendida, '''implemente-a fisicamente no laboratório''': use os switches TP-Link e as VM Grafico-3.--> | ||
+ | #* [http://tele.sj.ifsc.edu.br/~msobral/pji3/TL-SG3210(UN)_V2.0_CLI_.pdf Manual da interface CLI do switch TP-Link] | ||
+ | #* [http://tele.sj.ifsc.edu.br/~msobral/pji3/TL-SG3210(UN)_V2_UG.pdf Manual da interface web do switch TP-Link] | ||
+ | |||
+ | == Parte 3: criando uma infraestrutura física e usando VLANs == | ||
+ | |||
+ | * [http://repmaumau.fortunecity.ws/co.html IMPORTANTE: Teoria da Perversidade Universal da Matéria (ver 3a lei de Murphy)] | ||
+ | |||
+ | |||
+ | Em uma rede real, usa-se como diretriz a centralização dos ativos para a implantação de sua infraestrutura física. Isso independende de quais LANs e respectivas subredes existirão (infraestrutura lógica), e VLANs têm um papel central nesse tipo de infraestrutura. | ||
+ | |||
+ | Esta atividade envolve implantar uma infraestrutura física composta por dois conjuntos de switches. Cada conjunto é formado por pelo menos dois switches, os quais atendem pontos de rede em uma área de um prédio. Fisicamente esses switches se dispõem da seguinte forma: | ||
+ | |||
+ | [[imagem:pji3-Vlan-3.jpg|600px]] | ||
+ | |||
+ | |||
+ | Tomando essa infraestrutura como base, devem-se implantar as seguintes redes. Em cada caso: | ||
+ | * Implante as redes locais usando VLANs | ||
+ | * Escolha subredes apropriadas para cada rede local | ||
+ | * Configure os computadores e roteadores para que eles possam se comunicar (inclusive com a Internet) | ||
+ | |||
+ | |||
+ | <center> | ||
+ | [[imagem:pji3-Vlan-3a.jpg|300px]] | ||
+ | <br>''Rede 1: duas redes locais com suas subredes'' | ||
+ | </center> | ||
+ | |||
+ | |||
+ | <center> | ||
+ | [[imagem:pji3-Vlan-3b.jpg|500px]] | ||
+ | <br>''Rede 2: três redes locais com suas subredes'' | ||
+ | </center> | ||
+ | |||
+ | |||
+ | === Interfaces para VLAN no Linux === | ||
+ | |||
+ | O Linux possibilita criar interfaces virtuais associadas a VLANs. Com isso, a interface de rede física se comporta como uma porta em modo ''trunk''. | ||
+ | |||
+ | # Supondo que a interface física seja ''eth0'', e o número da vlan seja 10, pode-se criar a interface vlan desta forma:<syntaxhighlight lang=bash> | ||
+ | sudo vconfig add eth0 10 | ||
+ | </syntaxhighlight>O Nome da interface vlan, nesse caso, será ''eth0.10''. | ||
+ | #* '''OBS:''' caso o comando ''vconfig'' não seja encontrado, instale este pacote de software: <syntaxhighlight lang=bash> | ||
+ | sudo apt install vlan | ||
+ | </syntaxhighlight> | ||
+ | # Após criar uma interface VLAN, pode-se configurar seu endereço IP. Para a interface criada no item anterior o comando seria este:<syntaxhighlight lang=bash> | ||
+ | sudo ifconfig eth0.10 192.168.1.222/24 | ||
+ | </syntaxhighlight> | ||
+ | # Se forem criadas múltiplas interface vlan, e se deseja que o Linux seja um roteador entre elas, deve-se executar este comando para habilitar o encaminhamento de datagramas IP entre interfaces: <syntaxhighlight lang=bash> | ||
+ | sudo sysctl -w net.ipv4.ip_forward=1 | ||
+ | </syntaxhighlight> | ||
+ | # Se for necessário que esse roteador Linux seja também um tradutor NAT, deve-se ativar o NAT para alguma interface de saída. Supondo que a interface de saída seja eth1, este comando resolveria: <syntaxhighlight lang=bash> | ||
+ | sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 10}} | ||
+ | |||
+ | =30/10/2020: LANs e caminhos fechados= | ||
+ | |||
+ | {{Collapse top | Aula 11}} | ||
+ | <font size="3"> | ||
+ | |||
+ | * Capítulo 16 do livro "''Comunicação de Dados e Redes de Computadores, 3a ed.''", de Behrouz Forouzan. | ||
+ | * Capítulo 5 do livro "''Redes de computadores e a Internet, Uma abordagem Top-Down. 5a edição'', de James Kurose. | ||
+ | * Capítulo 4 do livro "''Redes de Computadores, 4a ed.''", de Andrew Tanenbaum. | ||
+ | * [https://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2013_2/stp/ Um bom texto sobre STP] | ||
+ | |||
+ | |||
+ | No laboratório de Redes de Computadors, um certo dia um aluno acidentalmente pegou um cabo e ligou em duas tomadas de rede. Quer dizer, ele fez algo assim com um dos switches da rede: | ||
+ | |||
+ | |||
+ | [[imagem:Curto-lan.png]] | ||
+ | |||
+ | = O problema dos ciclos (caminhos fechados) em uma rede local ethernet = | ||
+ | |||
+ | A interligação acidental de duas portas de um switch cria um ciclo na rede local (''loop''). Mas isso pode ser feito também de forma intencional, pois em LANs grandes pode ser desejável ter enlaces redundantes, para evitar que a interrupção de um enlace isole parte da rede. A existência de interligações alternativas portanto é algo que pode ocorrer em uma rede local, seja por acidente ou com a finalidade de conferir algum grau de tolerância a falhas na infraestrutura da rede. Um caso em que uma rede possui um ciclo intencionalmente colocado pode ser visto na LAN abaixo: | ||
+ | |||
+ | [[imagem:LAN-anel-stp.png]] | ||
+ | |||
+ | |||
+ | Apesar de desejável em algumas situações, uma topologia de rede com caminhos fechados, como visto na figura acima, não pode ser instalada sem alguns cuidados. Uma rede como essa trancaria devido a um efeito chamado de ''tempestade de broadcasts'' (''broadcast storm''). Isso acontece porque, ao receber um quadro em broadcast, um switch sempre o retransmite por todas as demais portas. Para que a rede acima funcione como esperado, uma ou mais portas de switches precisarão ser desativadas de forma que o caminho fechado seja removido. Ter que fazer isso manualmente tira o sentido de ter tal configuração para tolerância a falhas (e não impede um "acidente" como aquele descrito no início desta secão), por isso foi criado o protocolo [http://en.wikipedia.org/wiki/Spanning_Tree_Protocol STP] (''Spanning Tree Protocol'', definido na norma IEEE 802.1d) para realizar automaticamente essa tarefa. | ||
+ | |||
+ | * [http://tele.sj.ifsc.edu.br/~msobral/RCO2/docs/spanning_tree1.swf Uma animação sobre STP] | ||
+ | * [http://www.visualland.net/protocol.overview.php?p=Spanning%20Tree&protocol=Spanning%20Tree&title=Spanning%20Tree%20Overview ... e várias animações sobre STP] | ||
+ | * [http://en.wikipedia.org/wiki/Spanning_tree_protocol STP na Wikipedia] | ||
+ | * [http://www.sj.ifsc.edu.br/~msobral/RCO2/docs/stp.pdf Um texto explicativo sobre STP] | ||
+ | |||
+ | A configuração STP em switches deve observar o seguinte: | ||
+ | # '''Cada switch deve ter um número que informa sua prioridade para o STP:''' quanto menor o valor, maior a prioridade. O switch raiz é aquele com a menor prioridade dentre todos os switches. Em caso de empate, o switch com menor valor de endereço MAC é escolhido. | ||
+ | #* ... o switch ''raiz'' é o switch usado como referência dentro da rede para escolher quais links entre switches serão mantidos ativados, e quais serão desativados. Quando um switch possui links alternativos para chegar até o switch raiz, o link que proporciona um caminho mais curto (ou custo menor) é mantido e os demais são desativados. | ||
+ | # '''Quando o STP está em ação, ele muda o estado de operação das portas do switch:''' | ||
+ | #* ... em cada switch, a porta que o liga em direção ao switch ''raiz'' se chama '''porta raiz'''. | ||
+ | #* ... as portas de um switch que permancem ativadas são chamadas de '''portas designadas'''. | ||
+ | #* ... as portas de um switch que são desativadas são denominadas '''portas bloqueadas''' | ||
+ | #* Essas informações podem ser vistas no status do STP | ||
+ | # '''STP deve ser ativado nas portas dos switches:''' alguns modelos de switch exigem que se informe em quais portas o STP deve ser ativado. | ||
+ | # '''RSTP é melhor que STP:''' o protocolo RSTP é uma versão melhorada do STP, a qual resolve o problema de caminhos fechados mais rapidamente. | ||
+ | # '''STP roda de forma independente para cada VLAN:''' ao coinfigurar os switches, deve-se observar que o STP roda de forma independente para cada VLAN. | ||
+ | |||
+ | |||
+ | =Roteiro 06= | ||
+ | |||
+ | == Objetivos == | ||
+ | |||
+ | * Criar redes locais com caminhos fechados (''loops'') | ||
+ | * Compreender o efeito de caminhos fechados em uma LAN | ||
+ | * 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: | ||
+ | # 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. | ||
+ | # 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. | ||
+ | |||
+ | |||
+ | [[imagem: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. | ||
+ | |||
+ | |||
+ | O estudo sobre STP usará como conceito uma rede local em que três switches formam um anel. Essa rede possui uma estrutura típica para uma pequena empresa, como se pode ver na figura abaixo. | ||
+ | |||
+ | [[imagem:LAN-anel-stp.png]] | ||
+ | |||
+ | * [http://tele.sj.ifsc.edu.br/~msobral/pji3/lab7/stp.conf Arquivo de configuração do netkit2 (stp.conf)] | ||
+ | |||
+ | == Parte 1: O efeito de caminhos fechados == | ||
+ | |||
+ | # Execute o experimento do Netkit correspondente à rede da ilustração 1. Essa rede inicialmente está com o ciclo rompido (uma das interfaces de um dos switches está desativada). | ||
+ | # Inicie o experimento. Quando todas as máquinas virtuais estiverem rodando, tente fazer um ping de alguma máquina virtual para outra. Esse ping funcionou normalmente ? | ||
+ | # 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 ? | ||
+ | # 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:<syntaxhighlight lang=bash> | ||
+ | tcpdump -i eth0 -ln | ||
+ | </syntaxhighlight>O que você conclui quanto ao tráfego na rede ? Descreva exatamente o que está acontecendo e qual a causa. | ||
+ | # 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 ? | ||
+ | |||
+ | == Parte 2: O protocolo STP como possível solução == | ||
+ | |||
+ | Com base na rede da parte 1 deste roteiro, faça o seguinte: | ||
+ | |||
+ | # Ative o protocolo STP em todos os switches usando este comando:<syntaxhighlight lang=bash> | ||
+ | brctl stp vlan1 on | ||
+ | </syntaxhighlight> ... e então repita os passos 3 e 4 da parte 1 do roteiro. A rede funcionou normalmente desta vez ? | ||
+ | # 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 ? | ||
+ | # Reative a interface do switch1. Como se comportou o ping enquanto isso ? | ||
+ | # 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) ? | ||
+ | # Entre os passos 1 e 3 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:<syntaxhighlight lang=bash> | ||
+ | brctl showstp vlan1 | ||
+ | brctl showmacs vlan1 | ||
+ | </syntaxhighlight>Além disso, vamos também executar o tcpdump na interface do switch1 que o conecta ao switch3:<syntaxhighlight lang=bash> | ||
+ | tcpdump -i eth0 -ln | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Parte 3: Usando o STP em switches reais == | ||
+ | |||
+ | # O experimento de hoje finaliza com a reprodução em uma rede real do que foi visto com o Netkit2. Para isso devem ser usados os switches do laboratório, que devem ser interligados em anel, com computadores conectados. | ||
+ | # Sem ativar o STP nos switches, experimente fazer um ping de um computador a outro. Ao mesmo tempo, use o wireshark para monitorar o tráfego em sua interface ethernet. | ||
+ | #* O ping tem resposta ? | ||
+ | #* O que acontece com a rede ? É possível comunicação entre os computadores ? Como se comportam os switches (veja seus leds) ? | ||
+ | #* O que mostra o wireshark ? Há alguma característica em comum entre os quadros capturados ? | ||
+ | # Desconecte algum dos cabos entre os switches, de forma a desfazer o anel, e repita o experimento com ping. Qual a diferença ? | ||
+ | # Com os switches '''sem formar um anel''', e usando o [http://tele.sj.ifsc.edu.br/~msobral/pji3/TL-SG3210(UN)_V2_UG.pdf manual do switch], ative o protocolo STP. | ||
+ | # Teste a comunicação com ping. O que aconteceu ? | ||
+ | # Com o ping em funcionamento, restabeleça a topologia em anel nos switches. Observe o comportamento do ping. | ||
+ | #* As respostas do ping continuaram normalmente, sem interrupção ? | ||
+ | #* Caso tenham interrompido, as respostas reapareceram depois de um tempo ? | ||
+ | #* Caso tenham reaparecido, quanto tempo demorou para retornarem ? | ||
+ | # Ainda com o ping em andamento, novamente desfaça o anel. | ||
+ | #* As respostas do ping continuaram normalmente, sem interrupção ? | ||
+ | #* Caso tenham interrompido, as respostas reapareceram depois de um tempo ? | ||
+ | #* Caso tenham reaparecido, quanto tempo demorou para retornarem ? | ||
+ | # O que se pode concluir quanto ao STP ? Funciona ? É rápido ? | ||
+ | # Experimente ativar o RSTP, que é uma versão mais rápida do STP, e repita o experimento. | ||
+ | |||
+ | |||
+ | </font> | ||
+ | {{Collapse bottom | Aula 11}} |
Edição atual tal como às 18h18min de 5 de outubro de 2020
Projeto Integrador III
Professor: Marcus Franco (marcus.franco@ifsc.edu.br)
Encontros: 2a feira/19:00, 4a feira/19:00
Atendimento paralelo: segundas e quintas - (17:30 a 18:30)
PPC Curso Técnico Subsequente de Telecomunicações
10/02/2020: Apresentação da disciplina.
Aula 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Apresentação da disciplinaIntrodução ao problema de estudoA disciplina de Projeto Integrador 3 tem como assunto principal as tecnologias de enlace e rede que podem ser usadas para implantar redes locais e redes de acesso. Além disso, uma introdução à redes WAN faz parte do programa da disciplina.
AtividadeNesta primeira aula o objetivo é descrever as características do serviço a ser oferecido pelo provedor, e pensar na infraestrutura necessária para que seja implantado. Isso inclui investigar o que os provedores que já existem tem oferecido para seus clientes, e que tecnologias eles utilizam. Ao final da aula, deveremos ter:
Tabela de provedores existentes (Grande Florianópolis)
|
12/02/2020: Endereçamento IPv4. Configuração Estática e Dinâmica
Aula 2 |
---|
Configuração de endereçosO endereço IP de um host pode ser configurado de forma estática ou dinâmica. No primeiro caso, o usuário predefine o endereço IP no próprio equipamento. No segundo, o equipamento usa um protocolo especial de configuração para obter sua configuração de rede.
Configuração estáticaA configuração estática envolve um usuário gravar a configuração de rede de forma persistente na memória do host. Cada tipo de equipamento apresenta um procedimento diferente para armazenar a configuração de rede estática. Por exemplo, em computadores com sistema operacional Linux da família Debian (tais como Debian, Ubuntu, Mint e muitos outros), a configuração de rede fica armazenada no arquivo /etc/network/interfaces: iface eth0 inet static
address 10.1.23.19
netmask 255.255.255.0
gateway 10.1.23.254
router# configure terminal
router(config)# interface e0
router(config-if)# ip address 10.1.23.19 255.255.255.0
router(config-if)# exit
router(config)# ip route 0.0.0.0 0.0.0.0 10.1.23.254
router(config)# exit
router# write memory
router# write terminal
Building configuration...
Current configuration : 472 bytes
!
version 12.3
!
hostname Router
!
interface Ethernet0
ip address 10.1.23.19 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.1.23.254
Configuração dinâmicaUm host pode obter suas informações de rede dinamicamente por meio do protocolo DHCP (Dynamic Host Configuration Protocol). Desta forma, não há necessidade de o usuário saber as informações de rede necessárias para configurar corretamente seu equipamento. Isso torna possível também centralizar e automatizar a distribuição de endereços de rede para hosts. Se alguma das informações precisar ser modificada (ex: o roteador default), basta alterá-las no serviço DHCP para que toda a rede seja eventualmente reconfigurada. A maioria dos equipamentos de usuários vem de fábrica com configuração de rede dinâmica. Isso vale para computadores pessoais, em que os sistemas operacionais detectam as interfaces de rede e as configuram com DHCP, smartphones, tablets, câmeras IP, ATA e telefones IP, impressoras, e possivelmente outros equipamentos. Em computadores pessoais com sistemas operacionais Linux da família Debian, uma interface pode ser configurada dinamicamente se for declarada em /etc/network/interfaces desta forma: iface eth0 inet dhcp
Protocolo DHCPDHCP (Dynamic Host Configuration Protocol) é um protocolo para obtenção automática de configuração de rede, usado por computadores que acessam fisicamente uma rede. Esses computadores são tipicamente máquinas de usuários, que podem usar a rede esporadicamente (ex: usuários ocm seus laptops, com acesso via rede cabeada ou sem-fio), ou mesmo computadores fixos da rede. O principal objetivo do DHCP é fornecer um endereço IP, a máscara de rede, o endereço IP do roteador default e um ou mais endereços de servidores DNS. Assim, um novo computador que acesse a rede pode obter essa configuração sem a intervenção do usuário. Para esse serviço pode haver um ou mais servidores DHCP. Um computador que precise obter sua configuração de rede envia mensagens DHCPDISCOVER em broadcast para o port UDP 67. Um servidor DHCP, ao receber tais mensagens, responde com uma mensagem DHCPOFFER também em broadcast, contendo uma configuração de rede ofertada. O computador então envia novamente em broadcast uma mensagem DHCPREQUEST, requisitando o endereço IP ofertado pelo servidor. Finalmente, o servidor responde com uma mensagem DHCPACK, completando a configuração do computador cliente. Como a configuração tem um tempo de validade (chamado de lease time), o cliente deve periodicamente renová-la junto ao servidor DHCP, para poder continuar usando-a. O diagrama abaixo mostra simplificadamente esse comportamento:
O servidor DHCP identifica cada cliente pelo seu endereço MAC. Assim, o DHCP está fortemente relacionado a redes locais IEEE 802.3 (Ethernet) e IEEE 802.11 (WiFi). Servidor DHCPEm uma rede local em que hosts devem obter sua configuração de rede dinamicamente, deve haver ao menos um servidor DHCP. Esse serviço costuma estar disponibilizado em equipamentos de rede, tais como pontos de acesso sem-fio e roteadores. Por exemplo, o roteador sem-fio TP-Link WDR 4300 oferece esse serviço, que pode ser configurado e ativado por meio de sua interface de gerenciamento.
# tempos de concessão, em segundos
default-lease-time 600;
max-lease-time 7200;
# Algumas opções de uso comum
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 191.36.8.2, 191.36.8.3;
option domain-name "sj.ifsc.edu.br";
# subrede 192.168.1.0/24 com duas faixas de endereços a serem concedidos:
# 192.168.1.100 a 192.168.1.150
# 192.168.1.190 a 192.168.1.240
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.2.150;
range 192.168.1.190 192.168.2.240;
}
AtividadeObjetivo
Roteiro 01: configuração de endereçosTomando como base a rede do laboratório mostrada na figura, realize estes procedimentos em a máquina virtual "Gráfico-3":
|
17/02/2020: Roteamento Estático e Dinâmico
Aula 3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Subredes IPUma subrede IP é representada por um prefixo de rede e uma máscara. O prefixo são os N bits mais significativos comuns a todos os endereços IP contidos em uma subrede (lembre que um endereço IP tem 32 bits). A máscara informa quantos bits tem o prefixo. A combinação de prefixo de rede e máscara funciona da seguinte forma: Imagine que exista uma subrede contendo os endereços de 192.168.2.0 até 192.168.2.255. Se representarmos esses endereços em binário, podemos ver que os 24 bits mais significativos são os mesmos para todos os endereços:
Encaminhamento IPTodo host é capaz de realizar uma função da camada de rede chamada de encaminhamento IP (IP forwarding). O encaminhamento é feito quando um host recebe um datagrama IP, e precisa decidir o que fazer com ele. O destino do datagrama depende do endereço de destino contido em seu cabeçalho IP.
A tabela de rotas a seguir foi obtida em um computador com sistema operacional Linux. aluno@M1:~$ route -n
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
0.0.0.0 191.36.9.254 0.0.0.0 UG 0 0 0 enp0s25
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s25
191.36.9.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s25
192.168.2.64 191.36.9.1 255.255.255.192 U 0 0 0 enp0s25
Supondo que esse host tenha que encaminhar um datagrama com endereço de destino 8.8.8.8, a busca por uma rota adequada seria esta:
Roteamento estáticoCada host ligado a Internet possui uma tabela de rotas. É pelo conteúdo dessa tabela que ele sabe como transmitir os pacotes para cada destino. Em seu computador, você pode visualizar essa tabela da seguinte forma: # Isto funciona em qualquer *nix que se preze ...
netstat -rn
aluno@M1:~> ifconfig eth1 192.168.10.1 netmask 255.255.255.0
aluno@M1::~> netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
Obs: ao menos próximo roteador ou interface de rede precisam ser especificados.
# adiciona a rota default, que passa pelo roteador 192.168.10.100
route add default gw 192.168.10.100
# este comando tem o mesmo efeito que o anterior ...
route add -net 0.0.0.0/0 gw 192.168.10.100
Roteamento dinâmicoRoteamento dinâmico é definido como a capacidade de roteamento automático por uma rede. No roteamento estático, como visto, as possibilidades de rota são definidas por meio de uma tabela de roteamento fixa definida manualmente. No entanto, no roteamento dinâmico as tabelas de roteamento são construídas automaticamente pelo sistema, e mantidas constantemente atualizadas devido a comunicação entre os roteadores participantes da rede. Sendo assim, uma rede que utilize algum protocolo de roteamento dinâmico é sensível a qualquer mudança de topologia da rede, sendo capaz de adaptar-se rapidamente a um novo padrão de rotas. Em outras palavras, um protocolo de roteamento dinâmico pode ser definido como uma maneira que um roteador fala com seus vizinhos a fim de compartilhar informações sobre rotas disponíveis na rede. A partir da capacidade de auto organização, o roteamento dinâmico deve ser capaz de procurar a melhor rota alternativa para um fluxo de dados, quando determinados roteadores se tornam inacessíveis ou estejam congestionados. O roteamento dinâmico dentro de uma rede pertencente a uma organização é chamado de roteamento interno', e o roteamento entre redes de diferentes oragnizações é denominado roteamento externo. O roteamento externo acontece no núcleo da Internet, e envolve um número muito grande de roteadores e hosts. Um dos protocolos clássicos de roteamento interno é o protocolo RIP. Por apresentar tempo convergência relativamente longo, o RIP se aplica a pequenas redes. Outro protocolo de roteamento interno se chama OSPF, o qual apresenta rápida convergência e é usado em redes maiores. Protocolo RIPO protocolo RIP (Routing Information Protocol) é um protocolo baseado na técnica vetor de distância, pois compartilha tabelas de distâncias entre roteadores vizinhos, para que cada roteador possa atualizar sua tabela de roteamento. O protocolo RIP foi um dos primeiros protocolos de roteamento baseado em vetor de distância aplicado a uma grande variedade de sistemas. O RIP possui as seguintes características principais de funcionamento:
A lógica de funcionamento do RIP é baseada em roteadores ativos, configurados como roteadores que realizam comunicação das rotas aos demais, e roteadores passivos que não disseminam mensagens porém atualizam suas rotas quando recebem informações atualizadas.
Um roteador ativo mantém uma tabela de roteamento que possui os identificadores e IPs dos roteadores vizinhos, a rota de acesso, e um número inteiro que representa a distância do roteador até determinada rede. As tabelas são anunciadas para todos os roteadores da rede. O envio das tabelas de roteamento pelos roteadores acontece por broadcast em intervalos de tempo geralmente definidos para 30 segundos. Quando um nó recebe uma informação atualizada de determinado roteador vizinho, substitui sua tabela pela tabela atualizada. Para indicar a distância até uma determinada rede, o protocolo RIP utiliza uma métrica baseada em contagem de saltos, ou seja, quantos roteadores existem entre o roteador de origem e a rede de destino.
Exemplo RIP (De A para F)Neste exemplo um determinado nó A deseja se comunicar com o nó E.
Agora B e C enviam suas tabelas atualizadas para A, E e D respectivamente. Logo A, E, D atualizam suas tabelas e enviam por broadcast para todos os roteadores.
E envia sua tabela atualizada para F, que atualiza sua tabela.
F atualiza sua tabela e envia para todos.
Quando A recebe a tabela atualizada de F, atualiza sua própria tabela. A seguir temos a tabela do A depois da atualização.
AtividadesRoteiro 02: Subredes e roteamento estáticoEstes experimentos devem ser realizados no Netkit2, que deve ser executado na máquina real. Para esquentar: uma rede mais simples:
Praticamente a mesma rede, mas com um roteador a mais:
Roteamento estático entre redes das equipes
Roteamento dinâmico (com o RIP)Baseado no diagrama da Figura, usaremos serviços para rodar os protocolos de roteamento RIP, de tal modo que as tabelas estáticas de roteamento não mais serão necessárias e o sistema se auto recuperará da queda de um único enlace (nesse caso). Em cada roteador o software Quagga é responsável por executar o protocolo de roteamento.
|
19/02/2020: Roteamento Estático e Dinâmico (Continuação)
Aula 4 |
---|
|
26/02/2020: Roteamento Estático e Dinâmico (Continuação)
Aula 5 |
---|
|
02/03/2020: Endereçamento IPv6, roteamento estático e dinâmico
Aula 6 |
---|
Endereços IPv4 têm 32 bits e são capazes de endereçarem até pouco mais de 4 bilhões de hosts, e isso parecia mais do que suficiente quando o protocolo IP foi criado, nos primórdios da Internet. Mas desde os anos 1990, quando se massificou essa rede, constatou-se que os endereços IPv4 se esgotariam num horizonte próximo. Para evitar esse problema, e possibilitar que a Internet continuasse se expandindo (e também por outros motivos), foi criado o protocolo IPv6, cujos endereços têm 128 bits. Essa questão está bem descrita na introdução do livro Laboratório de IPv6: Considerando que a concepção da Internet data da década de 70 e que, de lá para cá, houve uma explosão inesperada do seu uso, o IPv4 mostrou-se inadequado para acompanhar esta evolução.Uma das deficiências mais apontadas do IPv4 foi o espaço de endereçamento baseado num valor inteiro de 32 bits, que é tipicamente representado por quatro octetos em decimal, sendo possível disponibilizar apenas 4.294.967.296 endereços IPV4 diferentes. Para contornar essa deficiência, inúmeras soluções paliativas foram propostas e adotadas, como por exemplo o NAT (Network Address Solution) e o CIDR (Classless InterDomain Routing). Contudo, à medida que novas tecnologias de redes surgiram e o IP continuava sendo um dos protocolos chaves para sua operação, outras deficiências começaram a ser detectadas, especialmente aquelas referentes à segurança e ao suporte a parâmetros de QoS (Quality of Service) e mobilidade. Como consequência, no inicio da década de 90 é publicada a proposta da nova geração do IP (IPng – IP next generation) ou IPv6. Este novo protocolo traz a solução para muitas das deficiências de seu predecessor, o IPv4, incluindo espaço de endereçamento de 128 bits gerando a possibilidade de 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços disponíveis, suporte a roteamento e segmentação de pacotes na estação origem, suporte a mobilidade e mecanismos de segurança.
Endereço IPV6Um endereço IPV6 possui 128 bits disponíveis para endereçar hosts, possibilitando 340 undecilhões de endereços possíveis. Para se ter uma ideia do que isto representa, se convertêssemos cada IPv6 possível em um cm2, poderíamos envolver toda a superfície do planeta Terra com 7 camadas de endereços.. Adoção no BrasilO Brasil está entre os 10 países com maior adoção de IPv6, segundo o Google:
Tipos de Endereços IPV6
Endereços UnicastLink Local pode ser usado apenas no enlace específico onde a interface está conectada, o endereço link local é atribuído automaticamente utilizando o prefixo FE80::/64. Os 64 bits reservados para a identificação da interface são configurados utilizando o formato IEEE EUI-64. Vale ressaltar que os roteadores não devem encaminhar para outros enlaces, pacotes que possuam como origem ou destino um endereço link-local.
Atualmente, está reservada para atribuição de endereços a faixa 2000::/3 (001), ou seja, 3 primeiros bits utilizados para registros da faixa 2000. Equivalente aos endereços públicos IPv4, o endereço global unicast é globalmente roteável e acessível na Internet IPv6. Ele é constituído por três partes: o prefixo de roteamento global, utilizado para identificar o tamanho do bloco atribuído a uma rede; a identificação da sub-rede, utilizada para identificar um enlace em uma rede; e a identificação da interface, que deve identificar de forma única uma interface dentro de um enlace.Sua estrutura foi projetada para utilizar os 64 bits mais a esquerda para identificação da rede e os 64 bits mais a direita para identificação da interface. Endereço MulticastO IPV6 não possui endereço broadcast, e sim multicast. Endereços multicast são utilizados para identificar grupos de interfaces, sendo que cada interface pode pertencer a mais de um grupo. Os pacotes enviados para esses endereço são entregues a todos as interfaces que compõe o grupo. Seu funcionamento é similar ao do broadcast, dado que um único pacote é enviado a vários hosts, diferenciando-se apenas pelo fato de que no broadcast o pacote é enviado a todos os hosts da rede, sem exceção, enquanto que no multicast apenas um grupo de hosts receberá esse pacote. Cabeçalho IPV6O cabeçalho IPv6 possui menos informações, quando comparado ao cabeçalho IPv4. Várias informações foram removidas do cabeçalho IPV6, como por exemplo o checksum, considerado uma informação desnecessária uma vez que o controle de erro é atribuído às camadas inferiores. Os campos presentes no cabeçalho IPV6 são definidos a seguir:
Auto-configuração de endereços
SLAACCom SLAAC, um host IPv6 tem a capacidade de auto-configurar seu endereço em uma subrede. Com isso, facilita-se a configuração de rede de um equipamento, pois torna-se desnecessário obter e definir manualmente seu endereço IPv6, além de outras informações tais como máscara de rede, gateway e servidores DNS. No entanto, isso depende de o gateway (ou algum outro equipamento) fornecer essas informações de configuração para os hosts em sua(s) subrede(s). Isso não é novidade, pois em redes IPv4 o serviço DHCP tem exatamente esse papel. Porém, com o surgimento de IPv6, a auto-configuração se tornou uma função do próprio protocolo de rede. Em redes IPv4, DHCP é um serviço que depende de softwares específicos tanto nos hosts (clientes) quanto no servidor. A auto-configuração IPv6 é muito mais simples, e não demanda nenhum software adicional nos hosts. A autoconfiguração do IPV6, chamada stateless, é o procedimento com que os hosts de uma subrede podem definir seus próprios endereços, baseados em informações locais (ex: endereço MAC de sua interfaces de rede Ethernet, Wifi, ou Bluetooth), e em informações recebidas de roteadores, denominadas mensagens Router Advertisement. Sendo assim, o roteador é o responsável por fornecer informações sobre a SUBrede para que seja possível que hosts que nela residem se autoconfigurem. A autoconfiguração do IPV6 é chamada de stateless porque o roteador não mantém nenhum registro sobre a configuração de cada host. Isso é consequência da capacidade dos hosts se autoconfigurarem apenas sabendo a subrede a que pertencem. No entanto, para que seja possível a autoconfiguração em redes baseadas em IPV6, duas etapas de configuração devem ser aplicadas, sendo elas:
Protocolo NDP (Neighbor Discovery Protocol)A auto-configuração IPv6 depende do protocolo NDP, implementado usando mensagens ICMPv6. De acordo com este tutorial do site IPv6.br, no caso da autoconfiguração de hosts, o protocolo fornece suporte para a realização de três funcionalidades:
DHCPv6
default-lease-time 600;
max-lease-time 7200;
subnet6 2001:db8::/64 {
range6 2001:db8::1234 2001:db8::abcd;
option dhcp6.name-servers 2001:db8::abc;
}
AtividadesObjetivos:
Para realizar estas atividades serão necessários alguns comandos:
Roteiro 03: Endereçamento IPv6, roteamento estático e dinâmicoParte 1: Endereços IPv6
Parte 2: Experimento com uma rede IPv6Estes experimentos devem ser realizados no Netkit2, que deve ser executado na máquina real.
Praticamente a mesma rede, mas com um roteador a mais:
Parte 3: SLAAC
Parte 4: DHCPv6
Parte 5: Roteamento dinâmico com IPV6 (com o RIPNG)Baseado no diagrama da Figura, usaremos serviços para rodar os protocolos de roteamento RIP a partir do Quagga, de tal modo que as tabelas estáticas de roteamento não mais serão necessárias e o sistema se auto recuperará da queda de um único enlace (nesse caso).
O arquivo redeipv6.conf possui a configuração da rede a ser executada com o Netkit2. Observe que nessa configuração já está inserida a definição dos default gateway de cada pc.
|
04/03/2020: Endereçamento IPv6, roteamento estático e dinâmico (Continuação)
Aula 7 |
---|
|
09/03/2020: Endereçamento IPv6, roteamento estático e dinâmico (Continuação)
Aula 8 |
---|
|
11/03/2020: Introdução a LAN
Aula 9 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Referências bibliográficas:
Distinção entre WAN, MAN e LANExiste uma classificação de redes de computadores segundo sua abrangência. Segundo ela, as redes podem ser divididas em:
Redes Locais (LAN)Obs: obtido de Data and Computer Communications, livro de William Stallings, 8a edição:
Algumas tecnologias
TopologiasUma topologia de rede diz respeito a como os equipamentos estão interligados. No caso da rede local, a topologia tem forte influência sobre seu funcionamento e sobre a tecnologia adotada. Dependendo de como se desenha a rede, diferentes mecanismos de comunicação são necessários (em particular o que se chama de acesso ao meio). A eficiência da rede (aproveitamento da capacidade de canal, vazão) e sua escalabilidade (quantidade de computadores e equipamentos que podem se comunicar com qualidade aceitável) também possuem relação com a topologia. A tabela abaixo exemplifica topologias conhecidas de redes locais. Exemplos de uso de redes locaisExemplos de redes locais são fáceis de apresentar. Praticamente toda rede que interconecta computadores de usuários é uma rede local - mesmo no caso de redes sem-fio, um caso especial a ser estudado mais a frente. A rede do laboratório de Redes de Computadores, onde temos nossas aulas, é uma rede local. Os demais computadores do câmpus formam outra rede local. Quando em casa se instala um roteador ADSL e se conectam a ele um ou mais computadores, cria-se também uma rede local. Portanto, redes locais são bastante comuns e largamente utilizadas. Ainda assim, cabem alguns outros exemplos de possíveis redes locais, mostrados abaixo:
Arquitetura IEEE 802
Protocolo de acesso ao meio (MAC)O protocolo de acesso ao meio (MAC) é parte da camada de enlace na arquitetura IEEE 802, e tem papel fundamental na comunicação entre estações. O MAC é responsável por:
Padrão IEEE 802.3 (Ethernet)
Desenho usado por Bob Metcalfe, um dos criadores da Ethernet, para apresentação em uma conferência em 1976.
Roteiro 04: Introdução a LANObjetivos
A rede de teste para o experimento será composta de computadores ligados a um switch Ethernet a 100 Mbps em modos half ou full-duplex. Serão sintetizados tráfegos intensos, de forma a poder comparar o desempenho das transmissões nos dois casos. Parte 1: ativos de rede
Parte 2: switch ethernet
Parte 3: topologias de rede
Parte 4: análise do funcionamento de switches
|
16/03/2020: Interligação de LANs
Aula 10 |
---|
Interligação de LANs (norma IEEE802.1D)
Um switch aprende dinamicamente os endereços MAC acessíveis em cada porta usando a técnica bridge learning. Para saber quais os endereços MAC conectados a cada porta, um switch registra em uma tabela o endereço MAC de origem de um quadro recebido por uma porta. Essa tabela de endereços MAC associa cada endereço aprendido à porta por onde o respectivo quadro foi recebido. Por exemplo, imagine 2 computadores, A e B, conectados a um mesmo switch porém em portas distintas como mostrado na Figura a seguir: Se o computador A deseja se comunicar com B, A envia um pacote para B. Entretanto, o switch não saberá em um primeiro momento a qual porta o PC B esta conectado. Sendo assim, o switch registra em sua tabela que o computador A está conectado na porta 1 ...
Segmentação de LANsA segmentação física é uma solução aparentemente simples e direta. Cada subrede deve ser composta de uma estrutura exclusiva, contendo seus switches e cabeamentos. No entanto, para adotar esse tipo de segmentação, algumas modificações precisarão ser feitas na infraestrutura de rede existente. Observe a estrutura física da rede do campus:
Segmentação com VLANsSe a reestruturação pudesse ser efetuada com mínimas modificações na estrutura física (incluindo cabeamento), a implantação da nova rede seria mais rápida e menos custosa. Para isso ser possível, seria necessário que a infraestrutura de rede existente tivesse a capacidade de agrupar portas de switches, separando-as em segmentos lógicos. Quer dizer, deveria ser possível criar redes locais virtuais, como mostrado na seguinte figura: No exemplo acima, três redes locais virtuais (VLAN) foram implantadas nos switches. Cada rede local virtual é composta por um certo número de computadores, que podem estar conectados a diferentes switches. Assim, uma rede local pode ter uma estrutura lógica diferente da estrutura física (a forma como seus computadores estão fisicamente interligados). Uma facilidade como essa funcionaria, de certa forma, como um patch panel virtual, que seria implementado diretamente nos switches. Redes locais virtuais são técnicas para implantar duas ou mais redes locais Padrão IEEE 802.1qOs primeiros switches com suporte a VLANs as implementavam de forma legada (i.e. não seguiam um padrão da indústria). Isso impedia que houvesse interoperabilidade entre equipamentos de diferentes fabricantes. Logo a IEEE formou um grupo de trabalho para propor mecanismos padronizados para implantar VLANs, dando origem ao padrão IEEE 802.1q. Os fabricantes de equipamentos de rede o adataram largamente, suplantando outras tecnologias legadas (ex: ISL e VTP da Cisco). Com isso, VLANs IEEE 802.1q podem ser criadas usando switches de fabricantes diferentes. Atualmente, a implantação de VLANs depende de switches com suporte ao padrão IEEE 802.1q. Assim, verifique quais dos switches do laboratório possuem suporte a VLAN:
Uma VLAN é identificada por um número, chamado VID (VLAN Identifier), sendo que a VLAN com VID 1 é considerada a VLAN default (configuração de fábrica). Em um switch com suporte a VLAN IEEE 802.1q, cada porta possui um (ou mais ...) VID, o que define a que VLAN pertence. Assim, para criar uma VLAN, devem-se modificar os VID das portas de switches que dela farão parte. Por exemplo, em uma pequena rede com duas VLANs as portas dos switches podem estar configuradas da seguinte forma: Além do VID, a configuração da porta de um switch deve especificar o modo de operação da VLAN:
Roteiro 05: Interligação de LANsObjetivos
Parte 1: Segmentação de LANsUma rede precisa ser reorganizada em três subredes em suas respectivas redes locais, como mostrado na figura a seguir: Planeje essa modificação, listando:
Parte 2: Segmentação de LANs com VLANs
Parte 3: criando uma infraestrutura física e usando VLANs
Esta atividade envolve implantar uma infraestrutura física composta por dois conjuntos de switches. Cada conjunto é formado por pelo menos dois switches, os quais atendem pontos de rede em uma área de um prédio. Fisicamente esses switches se dispõem da seguinte forma:
Interfaces para VLAN no LinuxO Linux possibilita criar interfaces virtuais associadas a VLANs. Com isso, a interface de rede física se comporta como uma porta em modo trunk.
|
30/10/2020: LANs e caminhos fechados
Aula 11 |
---|
O problema dos ciclos (caminhos fechados) em uma rede local ethernetA interligação acidental de duas portas de um switch cria um ciclo na rede local (loop). Mas isso pode ser feito também de forma intencional, pois em LANs grandes pode ser desejável ter enlaces redundantes, para evitar que a interrupção de um enlace isole parte da rede. A existência de interligações alternativas portanto é algo que pode ocorrer em uma rede local, seja por acidente ou com a finalidade de conferir algum grau de tolerância a falhas na infraestrutura da rede. Um caso em que uma rede possui um ciclo intencionalmente colocado pode ser visto na LAN abaixo:
A configuração STP em switches deve observar o seguinte:
Roteiro 06Objetivos
IntroduçãoA 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:
Parte 1: O efeito de caminhos fechados
Parte 2: O protocolo STP como possível soluçãoCom base na rede da parte 1 deste roteiro, faça o seguinte:
Parte 3: Usando o STP em switches reais
|