Licenciatura em Engenharia Informática e de Sistemas CCNA1 Traballho Prátiico IIPv6 Reso ll ução de E n de rr eços GRUPO 01: Ricardo Melo a9805043@alunos.isec.pt Emanuel Pimentel a9905056@alunos.isec.pt Maio 2005
Address Resolution O processo de Address Resolution para os nós IPv6 consiste na troca de mensagens Neighbor Solicitation e Neighbor Advertisement. O nó de origem envia uma mensagem multicast Neighbor Solicitation (Figura 1). O endereço multicast da mensagem Neighbor Solicitation é do tipo solicited-node correspondente ao endereço IP do nó de destino. A mensagem Neighbor Solicitation inclui o endereço MAC do nó de origem na opção Source Link-Layer Address. Quando o nó de destino recebe a mensagem Neighbor Solicitation, actualiza a sua neighbor cache baseada no endereço origem da mensagem Neighbor Solicitation e no endereço MAC da opção Source Link-Layer Address. De seguida o nó de destino envia uma mensagem unicast Neighbor Advertisement (Figura 2) ao nó de origem (que enviou a mensagem Neighbor Solicitation). Depois de receber a mensagem Neighbor Advertisement do nó de destino, o nó de origem actualiza a sua neighbor cache com uma entrada para o nó de destino baseada na informação presente na opção Target Link-Layer Address. A partir deste momento já é possível enviar tráfego unicast IPv6 entre o nó de origem e o nó de destino da mensagem Neighbor Solicitation. Figura 1 Neighbor Solicitation Message Figura 2 - Source Link-Layer Address IPv6 Resolução de Endereços 2
Figura 3 Neighbor Advertisement Message Figura 4 - Target Link-Layer Address IPv6 Resolução de Endereços 3
Neighbor Unreachability Detection Uma determinada máquina numa rede está comunicável se existe uma confirmação (recente) da recepção de pacotes de dados IPv6 (no caso em análise), pacotes enviados por uma máquina da vizinhança. O estabelecimento de vizinhança, não significa por si só uma ligação ponto a ponto, isto porque um vizinho pode ser uma máquina ou um router. Neste último caso não se trata do destino final do pacote, facto que vem confirmar que um vizinho não tem que ser o ponto final no trajecto de um pacote de dados. No entanto o modelo em estudo (Neighbor Unreachability) verifica apenas a comunicação do primeiro salto para o destino, ou seja, verifica a ligação (ponto a ponto) entre a localização actual e o nó seguinte. Uma das formas existentes para a confirmação da existência de comunicação, com um determinado vizinho será o envio de pacotes de dados Neighbor Solicitation (em unicast), com a posterior recepção de pacotes do tipo Neighbor Advertisement. Uma mensagem de Neighbor Advertisement que tenha sido solicitada por um determinado vizinho apresentará o valor 1 na flag correspondente (Solicited). Pacotes do tipo Unsolicited Neighbor Advertisement ou Router Advertisement não são considerados para testes de comunicação. A troca destes pacotes por si só não significa que ambos os vizinhos estejam em contacto simultaneamente, por outras palavras, a troca de pacotes Neighbor Solicitation e Neighbor Advertisement, apenas vem confirmar a comunicação do nó que emitiu estes últimos com o primeiro nó, não confirmando assim a comunicação no sentido inverso. Por exemplo, a máquina A (Source) envia um unicast Neighbor Solicitation a uma máquina B (Destination), por sua vez esta envia um Neighbor Advertisement como resposta, considerando-se como estabelecida comunicação entre a máquina A e a máquina B. Como não existe qualquer tipo de informação que permita à máquina B saber se a sua resposta chegou ao destino, a ligação da máquina B com a máquina A não está garantida. Para confirmar a ligação de B com A, o processo tem que se repetir de modo inverso, ou seja, a máquina B tem de emitir um unicast Neighbor Solicitation ao qual a máquina A terá de responder. Figura 5 Ethereal (ping) Na Figura 5, a máquina A (Source) avalia a comunicação com a máquina B (Destination) através das frames 9 e 10. A comunicação no sentido inverso é avaliada pelas frames 11 e 12. IPv6 Resolução de Endereços 4
Neighbor Cache Entry States A comunicação de um nó vizinho é determinada através de monitorização das entradas da Neighbor Cache. Figura 6 Neighbor Cache Entry States O RFC 2461 define os seguintes estados para Neighbor Cache: IMCOMPLETE A resolução de endereços IPv6 utiliza pacotes de dados do tipo Neighbor Solicitation. O estado INCOMPLETE, é origina-se ao surgimento de uma entrada na tabela à qual não corresponde nenhum endereço da camada de ligação. O número de pacotes multicast Neighbor Solicitation enviados antes da retirada desta entrada da cache é configurável numa variável, que no caso do RFC 2461 é a MAX_MULTICAST_SOLICIT, sendo 3 o valor recomendado. REACHABLE Este estado verifica-se quando a comunicação é confirmada com a recepção de uma mensagem unicast Neighbor Advertisement. A entrada na cache fica assinalada como comunicável (Reachable). Enquanto os protocolos da camada superior (tal como o TCP) indicarem progresso nas comunicações, a entrada que definida como comunicável continua activa. A cada actualização deste campo, será igualmente actualizado o registo do tempo de comunicação entre os nós. STALE Quando o campo Reachable Time fica desactualizado, a entrada correspondente na Neighbor Cache evolui para o estado STALE. Este estado também pode ser atingido nos casos em que é verificada a existência de um pacote do tipo Unsolicited Neighbor Advertisement. IPv6 Resolução de Endereços 5
DELAY Para que as camadas de nível superior possam confirmar a comunicação, existe a necessidade de reservar algum tempo antes do envio de mensagens Neighbor Solicitation. Assim a neighbor cache entra no estado conhecido como DELAY e realiza uma espera durante um período previamente configurado. A variável onde esta configuração pode ser efectuada com base no RFC 2461, é a DELAY_FIRST_PROBE_TIME, tendo como valor recomendado 5 segundos. Durante este tempo de não houver nenhum tipo de confirmação, será enviada uma mensagem do tipo unicast Neighbor Solicitation, entrando assim no estado definido como PROBE. PROBE O processo de confirmação de comunicação com um determinado vizinho está em curso, para entradas da cache cujo estado actual seja de STALE ou de DELAY. Os pacotes de Unicast Neighbor Solicitation, são enviados com um intervalo de tempo que correspondente ao campo Retransmission Timer do pacote Router Advertisement, recebido pela máquina onde se está a decorrer o processo. O número de mensagens Neighbor Solicitation enviadas antes de se decidir o abandono do processo, procedendo à remoção da entrada respectiva na cache, a exemplo de situações anteriores é um parâmetro configurável. O RFC 2461 utiliza para configuração do parâmetro referido, uma variável denominada MAX_UNICAST_SOLICITS, onde o valor recomendado como valor por defeito é 3. Dependendo da implementação usada para o IPv6, qualquer entrada pode passar de qualquer estado para o estado NO ENTRY EXISTS. Se um vizinho com o qual não se consegue estabelecer comunicação é um router, a máquina que realiza o teste de comunicação pode escolher outro router disponível, numa qualquer lista de default router, continuando assim com o processo de address resolution, bem como com o mecanismo de neighbor unreachability detection. Se estamos em presença não de um router vizinho mas de uma máquina vizinha, procede-se ao envio de mensagens do tipo multicast Neighbor Advertisement, em que a flag Router apresenta o valor 0. IPv6 Resolução de Endereços 6