O IPV6 possui categorias de endereços, conforme a tabela a seguir:
- 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
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.
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.
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
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.
Atividade
- Em seu computador, identifique os tipos de endereços IPv6 que estão configurados nas interfaces.
- Compare o endereço do tipo link local da interface ethernet do seu computador, com o endereço MAC dessa mesma interface. Que relação existe entre eles ?
- Experimente testar a comunicação entre seu computador e algum outro host fora do IFSC. Por exemplo teste um ping6 com um servidor externo ao IFSC o qual possui endereço IPv6. Explique o resultado desse teste, e relacione-o com o tipo de endereço IPv6 usado por seu computador.
- Execute o wireshark para capturar datagramas IPv6 na rede. Procure datagramas cujos endereços de destino sejam:
- Unicast global
- Link local
- Multicast
- Identifique as aplicações que geraram os datagramas identificados no passo anterior. Com isso, pode-se entender como essas aplicações se comunicam.
Cabeçalho IPV6
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.
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 o arquivo de configuração rede0.conf
- Execute o Netkit2, e no menu File->Load Only selecione o arquivo de configuração rede1.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 pc2consigam se comunicar
Praticamente a mesma rede, mas com um roteador a mais:
- Transfira para seu computador o arquivo de configuração rede00.conf
- Execute o Netkit2, e no menu File->Load Only selecione o arquivo de configuração rede1.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
Agora uma rede um pouco maior:
- Transfira para seu computador o arquivo de configuração rede1.conf
- Execute o Netkit2, e no menu File->Load Only selecione o arquivo de configuração rede1.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, pc2 está na subrede AABB:CCDD:EEFF::/64 e pc3 está na subrede 1234:5678::/56, 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, pc2 e pc3 consigam se comunicar
|
Auto-configuração de endereços
|
Em redes IPv4, a auto-configuração de hosts se faz com o 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:
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:
- 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 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:
Atividade
- Execute o netkit2
- Arraste este 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:
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;
};
};
- Em r1 execute este comando:
- 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 esta rede no ar usando SLAAC ! Talvez seja necessário algo mais ...
|
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, entre outros.
De acordo com o livro 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 ISC DHCP server. Como visto no caso de DHCP para redes IPv4, esse software deve ser copnfigurado a partir do arquivo /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:
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;
}
Muitas opções para DHCPv6 podem ser usadas. Maiores detalhes podem ser encontrados na documentação sobre as opções.
Atividade
Realize estes experimentos.
Roteamento Dinâmico com RIPNG
O algoritmo de roteamento RIP para o protocolo IPV6 é chamado de RIPNG. Essa versão do RIP permite aos roteadores trocarem informações em redes baseadas em IPv6. O algoritmo de roteamento RIP é basicamente o mesmo nas duas versões (RIP e RIPNG). As modificações principais estão definidas nos formatos das mensagens, porém estas modificações não afetam a usabilidade do RIPNG. Sendo assim, vamos fazer algumas atividades...
Atividade
Realize estes experimentos.
|