Curso de Redes: Camada de Rede - Parte 3
por
em 12-02-2009 às 11:30 (59682 Visualizações)
Leia as partes anteriores desse curso antes de prosseguir
Olá a todos!!
Estamos quase acabando a camada de rede! Creio que essa seja a penúltima parte. Ela é um pouco longa poque é um dos principais focos do nosso curso.
Muitos de vocês, que já tenham um conhecimento da área irão perceber que estão faltando alguns conteúdos. Eu estou saltando certas coisas pois esse é um curso introdutório e visa dar uma visão geral de redes. Então não acho que seja interessante entrar no mérito de protocolos IGP Link State e protocolos EGP. Mas futuramente (não muito distante) irei retornar com a parte intermediária desse curso, onde espero abordar esses protocolos e suas configurações.
Ah, conforme solicitado pelo usuário Outorgas no comentário na última parte dessa série de posts os exercícios estão de volta (e retroativos!). Essa parte tem 6 exercícios, ficou um puco grande porque juntei com os exercícios que eu ia postar na parte 2 (na hora desanimei pela falta de retorno). Agradeço ao Outorgas por ter se mostrado interessado! As respostas podem ser enviadas atraves do sistema de mensagens particulares no Forum ou no meu e-mail da under: magnunΘunderlinux.com.br
Qualquer dúvida utilize os comentários ou chatbox para as pessoas não registradas no Fórum!
Camada 3 - Camada de Rede (Parte 3)
O Que é TTL
Antes de voltarmos para os protocolos de roteamento vale a pena ressaltar algumas informações que deixamos passar despercebido. Vamos rever o cabeçalho IP:
Nesse cabeçalho há um campo muito importante chamado TTL. Vamos rever sua função e compreende-la melhor:
TTL (Time to Live Tempo de Vida) Inicialmente configurado como 255. A cada salto este campo é decrementado. No momento que ele atingir o valor zero este pacote será descartado. Este campo foi criado para evitar que pacotes trafeguem indefinidamente na rede
Vamos imaginar uma topologia em loop:
Digamos que essa topologia foi criada por um administrador de redes que não prestou atenção nas aulas e colocou o default gateway dos roteadores da forma mostrada na imagem. R1 apontando para R2, R2 apontando para R3, R3 apontando para R1. Dessa forma oq aconteceria se alguém da rede 192.168.1.0/24 desse um ping para uma rede desconhecida, por exemplo: 200.200.200.1. Iria acontecer o seguinte fluxo:
- O host de origem iria encaminhar o pacote para o R1;
- R1 desconhece a rede, encaminha para o R2;
- R2 desconhece a rede, encaminha para o R3;
- R3 desconhece a rede, encaminha para o R1;
- Volte para o passo 2.
Agora imagina se 20 hosts tiverem tentando acessar esse IP. Serão vinte pacotes rodando naquele triangulo. Isso gera processamento desnecessário nos roteadores, além de ocupar uma banda que poderia estar sendo utilizada.
Para evitar que esse pacote fique trafegando indefinidamente pela rede foi definido o campo TTL. O campo TTL, por padrão, é definido como 255. Cada vez que um roteador encaminha o pacote ele decrementa o conteúdo do campo TTL, quando o valor do campo chega a 0 o pacote é descartado pelo roteador.
Classificação dos Protocolos de Roteamento Dinâmico
Os protocolos de roteamento são separados em duas classes: Quanto a onde ele é utilizado, IGP ou EGP, ao comportamento da lógica do protocolo, Distance Vector ou Link-state. Para tratar deste assunto, devemos primeiro definir Sistema Autônomo ou AS (Autonomous System).
Um AS é uma coleção de redes sob uma administração comum, que compartilha uma estratégia comum de roteamento. Para o mundo exterior, um AS é visto como uma única entidade. Cada AS tem seu próprio conjunto de regras e diretivas e um número de AS, composto por 16 bits, que o distingue de maneira exclusiva dos outros sistemas autônomos no resto do mundo. O ARIN (American Registry of Internet Numbers) gerencia a atribuição destes números de forma a não haver duplicação. O conceito de AS é mais um daqueles conceitos que você simplesmente tem que aceitar e que você entende por osmose.
Protocolos IGP e EGP
Um protocolo de roteamento do tipo IGP (Interior Gateway Protocol Protocolo de Roteameto Interno) é utilizado na intercomunicação de redes dentro de um mesmo Sistema Autônomo enquanto um EGP (Exterior Gateway Protocol Protocolo de Roteamento Externo) é utilizado, dentre outras coisas, para a intercomunicação de diferentes Sistemas Autônomos.
Geralmente as pessoas pensam que protocolos EGP são somente para interconectar sistemas autônomos ou para ISPs (Internet Service Providers Provedores de Internet). A verdade é que os protocolos EGP são mais interessantes quando você tem dois links com a internet e o site (não é site no sentido de página, mas site no sentido de grupo de ativos) possui um AS cadastrado, o que geralmente ocorre somente para empresas grandes. Dentre outras funções que o EGP pode prover é o balanceamento de links, redundância por rotas alternativas segmentação de tráfego por sentido, dentre outras coisas.
Roteamento Distance Vector
A abordagem de roteamento pelo vetor de distância, ou algoritmo de roteamento Ford-Fulkerson*, determina a direção (vetor) e a distância para qualquer link no grupo de redes interconectadas.
Este algoritmo é caracterizado por passar cópias periódicas da tabela de roteamento de um roteador para seu vizinho (mesmo enlace) em broadcasts. Essas atualizações periódicas entre os roteadores comunicam as alterações de topologia. Devido a isto o tempo de convergência de um protocolo vetor distância é considerado alto.O protocolo vetor de distância é também chamado de Algoritmo de Ford-Fulkerson, em homenagem aos inventores do algoritmo (L.R. Ford Jr. E DR Fulkerson, Flows in Networks, Princeton University Press, 1962), ou de algorítmo Bellman-Ford, porque foi baseado na Equação de Bellman (R. E. Bellman, Dynamic Programming, Princeton Univercity Press, 1957).
Quando um roteador recebe a tabela de roteamento do seu vizinho ele verifica as rotas que desconhece, incrementa o vetor de distância destas e acrescenta-as em sua tabela. O vetor de distância indica por quantos saltos, ou hops, este pacote irá passar até alcançar o destino. Para redes diretamente conectadas o vetor de distância é um.
http://under-linux.org/fotos/magnun/...-distancia.pnghttp://under-linux.org/members/magnun/albums/imagens-para-posts/7113-vetor-distancia/
Com este algoritmo cada roteador vê somente os roteadores que são seus vizinhos, o que impede que um roteador conheça a topologia exata da rede, tornando difícil a prevenção de loops gerados por enlaces redundantes.
Juntamente com este protocolo de roteamento foi definida uma técnica chamada de split horizon. O split horizon consistem em não enviar informações sobre uma rede ao roteador que o informou sobre aquela rede. Isto faz com que um roteador não receba atualizações sobre uma rede já conhecida por ele e com uma métrica pior.
Esse é o momento inicial da atualização. A tabela de cada roteador está resumida, apenas com a rede e com o vetor distância (V.D), ou métrica. O Roteador A envia sua tabela de roteamento para os hosts vizinhos. Vocês devem estar pensando: Ei! Ele não ta enviando a tabela completa. Se você prestar atenção verá que o Roteador A anuncia as redes 1 e 3 para o roteador C. Porque ele não anuncia a rede 2? Porque ele sabe que o Roteador C já conhece a rede 2, pois é a rede que os interliga. O mesmo acontece com o Roteador B.
Vocês verão na próxima imagem que as rotas são anunciadas com o valor n mas armazenadas com o valor n+1. Isso porque o roteador conta a si mesmo como um salto.
Próximo estágio:
O roteador B anuncia suas rotas. Agora piorou! O Roteador B só ta anunciando uma rede pro A!! Mas ele conhece 4 redes!. Isso é exatamente o Split Horizon em ação! Pergunto, que redes o B deveria anunciar? As redes 1, 2, 3 e 4. Vamos começar a eliminar. Qual a rede que interconecta os 2 roteadores?! Então por isso ele não anuncia a 3. Resta as redes 1, 2 e 4. De quem ele aprendeu as redes 1 e 2? Do roteador A! Então porque anunciar pra ele redes que você aprendeu dele?? Realmente é inútil! Até mesmo porque se ele anunciasse para ele essas regras seriam aprendidas com a métrica 3, que é bem pior que 1! Isso já não acontece com o anuncio pro Roteador C.
Último estágio:
O Roteador C anuncia para o roteador A somente a Rede 4. Da mesma forma que vimos anteriormente, ele não anuncia a rede 2, pois é diretamente conectada a ela, e nem as redes 1 e 3, pois ele aprendeu essas regras dele. Só tem um pequeno detalhe: O roteador A já conhece a rede 4. Ao receber ele vai analisar que essa nova rota possui a mesma métrica que a rota que ele já conhece. Nesse caso o roteador mantêm a rota existente e insere a nova, caso haja suporte (isso varia muito de implementação do protocolo de roteamento e fabricante) pode haver um balanceamento de carga entre os destinos. Algo similar acontece com os anúncios para o roteador B.
Endereços na Internet
A estabilidade da Internet depende diretamente da exclusividade dos endereços de rede usados publicamente. Endereços IP de rede duplicados impedem que o roteador realize sua função de selecionar o melhor caminho. Para cada dispositivo de uma rede, é necessário um endereço exclusivo.
Foi necessário criar um procedimento que garantisse que os endereços fossem realmente exclusivos. Inicialmente, uma organização conhecida como InterNIC (Internet Network Information Center Centro de Informações da Rede Internet) cuidou desse procedimento. A InterNIC foi substituída pela IANA (Internet Assigned Numbers Authority). A IANA gerencia cuidadosamente o estoque de endereços IP para garantir que não haja duplicidade de endereços usados publicamente. A duplicidade causaria instabilidade na Internet e comprometeria sua capacidade de entregar datagramas para as redes.
Os endereços classe A e B representam 75% do espaço de endereços do IPv4, embora menos de 17.000 organizações possam receber um número de rede classes A ou B. Os endereços de rede de classe C são muito mais numerosos do que os de classes A e B, embora representem somente 12,5% dos 4 bilhões de possíveis endereços IP.
Infelizmente, os endereços de classe C estão limitados a 254 hosts utilizáveis. Isso não atende às necessidades de organizações maiores, que não podem adquirir um endereço de classes A ou B. Mesmo se houvesse mais endereços classe A, B ou C, um excesso de endereços de rede faria com que os roteadores da Internet viessem a parar sob o peso do enorme tamanho das tabelas de roteamento necessárias para armazenar as rotas para alcançar cada rede.
Durante as duas últimas décadas, foram desenvolvidas diversas extensões do IPv4. Essas extensões foram projetadas especificamente para melhorar a eficiência de utilização do espaço de endereços de 32 bits. Duas das mais importantes extensões são as máscaras de sub-rede e o roteamento interdomínios classless (CIDR).
Nesse meio tempo, foi definida e desenvolvida uma versão ainda mais extensível e escalonável do IP, o IP versão 6 (IPv6). O IPv6 usa 128 bits em vez dos 32 bits usados atualmente no IPv4. O IPv6 usa números hexadecimais para representar os 128 bits. Ele oferece 640 sextilhões de endereços. Essa versão do IP deve oferecer endereços suficientes para as futuras necessidades das comunicações.
Sub-redes (breve introdução)
O uso de sub-redes é um método usado para gerenciar endereços IP dividindo classes inteiras de endereços de redes em pedaços menores. Este método impediu, temporariamente, o esgotamento completo dos endereços IP.
Para redes grandes ou extremamente grandes, a divisão em sub-redes é necessária. Dividir uma rede em sub-redes significa usar a máscara de sub-rede para dividir a rede em segmentos menores, ou sub-redes, mais eficientes e mais fáceis de gerenciar. Gerando assim números maiores de redes pequenas.
É importante saber quantas sub-redes, ou redes, e quantos hosts serão necessários em cada rede. Com as sub-redes, a rede não fica limitada às máscaras de rede padrão de classes A, B ou C, e há maior flexibilidade no projeto da rede.
Os endereços de sub-rede incluem a parte da rede, mais um campo de sub-rede e um campo do host. O campo da sub-rede e o campo do host são criados a partir da parte do host original para toda a rede.
Endereços Privados
Os endereços IP privados é outra solução para o problema da escassez iminente dos endereços IP públicos. Como dito, as redes públicas exigem que os hosts tenham endereços IP exclusivos. Entretanto, as redes privadas que não estão conectadas à Internet podem usar quaisquer endereços de host, contanto que cada host dentro da rede privada seja exclusivo.
Muitas redes privadas existem em paralelo com as redes públicas. Porém, não é recomendável que uma rede privada use um endereço qualquer, pois essa rede pode ser conectada à Internet algum dia podendo causar erros no roteamento para certas redes públicas.
O RFC 1918 reserva três blocos de endereços IP para uso interno e privado. Esses três blocos consistem de um endereço de classe A, um intervalo de endereços de classe B e um intervalo de endereços de classe C:
- De 10.0.0.0/8 até 10.255.255.255/8;
- De 172.16.0.0/16 até 172.32.255.255/16;
- 192.168.0.0/24 até 192.168.255.255/24.
Os endereços dentro desses intervalos não são roteados no backbone da Internet. Os roteadores da Internet descartam imediatamente os endereços privados. Para endereçar uma intranet não-pública, um laboratório de testes ou uma rede doméstica, pode-se usar esses endereços privados no lugar dos endereços globalmente exclusivos.
A rede 127.0.0.0/8 é reservada para testes de loopback. Os roteadores ou as máquinas locais podem usar esse endereço para enviar pacotes para si mesmos. Por isso, esse número não pode ser atribuído a nenhuma rede.
NAT (Network Address Translation)
Definida na RFC-1631 a NAT (Tradução de Endereço de Rede) foi criada para reduzir o número de endereços públicos na internet permitindo que uma rede com endereço privado tenha acesso à internet. Para isto é feita a conversão dos endereços privados em endereços públicos.
Ao realizar uma NAT alguns endereços são mantidos e outros são alterados dependendo da direção do pacote em uma conexão. Um dispositivo habilitado para NAT geralmente opera na borda de uma rede stub. Uma rede stub é uma rede que tem uma única conexão para a rede externa.
Ao realizar uma NAT para os endereços de uma rede local (Endereços Internos Locais) é necessário possuir ao menos um endereço público (Endereço Interno Global) que estará localizado no roteador que provê acesso à internet.
Este roteador irá alterar o conteúdo do cabeçalho do pacote trocando o endereço privado de origem pelo seu endereço publico. Este mapeamento é armazenado na tabela NAT e o pacote será encaminhado. Ao responder o host da internet irá endereçar o pacote ao endereço interno global, pois foi este quem o enviou. Ao receber a resposta o roteador saberá que esta é uma resposta para o host interno por meio do mapeamento existente na tabela NAT criada por ele.
A NAT não só torna desnecessária a utilização de endereços públicos para todos os sistemas que necessitam de acesso à internet, mas também provê segurança. Caso um host da internet tente se comunicar com um host da rede local esta comunicação será bloqueada, pois não existe na tabela NAT um registro dessa comunicação. Desta forma a NAT permite que somente sejam abertas conexões no sentido "rede local para Internet", impedindo ataques de hackers.
Como a NAT faz um mapeamento IP a IP (IP de origem a IP de destino) para que haja múltiplos acessos a um mesmo destino seriam necessários vários endereços. Para prover este serviço, sem que haja mapeamentos duplicados, a NAT utiliza uma multiplexação no nível das portas, isto é feito por meio da PAT (Port Address Translation).
Com o uso da PAT, os hosts internos podem compartilhar um único endereço IP público para toda comunicação externa. A PAT faz um mapeamento na tabela NAT mais detalhado utilizando IP de origem, IP de destino, e porta de origem e destino. Caso a porta de origem já esteja mapeada para outra origem, o roteador irá incrementar o número da porta do datagrama e realizar a tradução.
Apesar de todas as vantagens apresentadas pela NAT ela também possui desvantagens:
- Aumenta o atraso devido a tradução de cada endereço IP dentro dos cabeçalhos dos pacotes;
- Perda da rastreabilidade IP ponta-a-ponta. Torna-se muito mais difícil rastrear pacotes que passam por diversas alterações de endereço;
- Força alguns aplicativos que usam endereçamento IP a pararem de funcionar, porque oculta os endereços IP ponta-a-ponta.
Exercícios Referente ao Capítulo Passado e Atual
1. Montar a tabela de roteamento, sem utilizar Default Gateway, dos roteadores nos seguintes ambientes:
2. Montar a tabela de roteamento utilizando default gateway do exercício anterior.
3. Qual o erro na seguinte configuração:
4. Qual será o TTL do pacote enviado pelo Host A ao chegar no Host B nas topologias utilizadas no exercício 1?
5. Qual será o valor dos campos MAC de Origem, MAC de Destino, IP de Origem e IP de destino do pacote, em cada segmento de rede, durante a comunicação do Host A com o Host B nas topologias do exercício 1?
6. [Desafio] Projete uma rede local com acesso a internet com os seguintes requisitos:
- Utilizar 2 roteadores: Um somente para NAT (roteador A) e outro para interligar os segmentos de rede (roteador B);
- Ter 3 segmentos de redes distintos: Rede dos clientes, rede de servidores e rede de ligação (roteador A <-> roteador B);
Informando exemplos de configuração de hosts de cada rede (IP, máscara e gateway) e a configuração dos roteadores (endereço IP, máscara, default gateway e rotas).
Referências
* Cisco CCNA - Guia de certificação do Exame, 3a Edição
Wendell Odom
* Redes de Computadores, 4a Edição
Andrew S. Tanenbaum,
* Conteúdo Cisco NetAcad, versão 3.1.1
Finalização
Vocês devem ter percebido que fiz um overview básico sobre sub-redes. Não quis misturar muito roteamento com sub-redes pois são conceitos difíceis de se absorver no início. Então na próxima parte prometo que explicarei as sub-redes e terão alguns cenários de roteamento utilizando sub-redes e sumarização de rotas. Geralmente esse último tema também causa confusão...
Até la...
Comentários
+ Enviar Comentário