IPv6: diferenças entre "prefixo roteado" e "prefixo de link"?

14

Quais são as diferenças exatas entre "prefixo roteado" e "prefixo de link" para IPv6?
Como essas diferenças em um wireshark-Trace? (se você observar um host com um "prefixo roteado" atribuído ou um host com um "prefixo de link" atribuído).
Como essas diferenças no protocolo de descoberta de vizinhos? (do ponto de vista de um outro host / externo)
Eles trabalham juntos , esses dois tipos de prefixos?

Erik
fonte

Respostas:

19

A maneira mais fácil de entender a diferença entre os dois é através de um exemplo que mostra a natureza hierárquica dos prefixos.

Um exemplo de hierarquia

Um ISP recebeu um prefixo de um RIR (Registro Regional da Internet) que, neste exemplo, assumiremos que é 2001:db8::/32. Esse prefixo é diferente daquele transmitido aos clientes, no sentido de que o ISP terá que anunciar através do BGP para outros ISPs com os quais é consultado.

O ISP agora vai alocar prefixos para um cliente. Primeiro, eles são atribuídos 2001:db8:0:1::/64ao link que conecta o roteador ISP ao roteador CPE (equipamento nas instalações do cliente). Este é um prefixo do link porque está atribuído a um link. Como recomendação geral, todos os prefixos de link no IPv6 devem ser /64.

O roteador ISP enviará anúncios de roteador anunciando esse prefixo e o CPE usará o SLAAC para construir um endereço para a interface externa apontando para o roteador ISP dentro do /64. Vamos supor que a interface externa tenha o endereço IP 2001:db8:0:1:42:ff:fe00:42/64(nesta notação /64está incluída para nos lembrar qual é o tamanho do prefixo do link, mas eu também poderia tê-lo deixado de fora).

Esse prefixo de link é suficiente para o roteador CPE se comunicar com o resto do mundo, mas não ajuda o roteador CPE a oferecer suporte a nenhum cliente na LAN conectado à sua interface interna. O roteador CPE precisa de um prefixo para a LAN que é roteado através desse roteador CPE, portanto, isso é chamado de prefixo roteado .

O prefixo roteado pode ser configurado estaticamente ou através do DHCPv6. Os detalhes exatos de como o roteador CPE negocia um tamanho de prefixo com o servidor DHCPv6 fornecido pelo ISP estão fora do escopo desta resposta. Uma pesquisa por delegação de prefixo pode lhe dizer mais sobre isso. Vamos supor que o prefixo roteado acabe sendo 2001:db8:1::/48. No roteador ISP, uma entrada da tabela de roteamento será criada indicando que 2001:db8:1::/48precisa ser roteada através do gateway 2001:db8:0:1:42:ff:fe00:42. Essa entrada da tabela de roteamento é o recurso que define o prefixo roteado.

O roteador CPE pode ter várias LANs internas, /48pois pode alocar um /64prefixo de link para cada LAN interna. Se assumirmos que uma das LANs foi atribuída 2001:db8:1:1::/64como prefixo do link, um nó nesse link poderá obter o endereço 2001:db8:1:1::42:ff:fe00:43através do SLAAC. Esse nó pode ser um roteador sem fio que precisa de um prefixo para sua interface sem fio. O CPE pode atribuir 2001:db8:1:100::/60como prefixo roteado para o roteador sem fio, e o roteador sem fio pode atribuir 2001:db8:1:100::/64como prefixo de link para a interface sem fio.

Agora, nessa configuração, o que temos é uma hierarquia de prefixos. A seguir, todos estão aninhados um abaixo do outro:

  • 2001:db8::/32 Prefixo anunciado pelo BGP
  • 2001:db8:1::/48 prefixo roteado
  • 2001:db8:1:100::/60 prefixo roteado
  • 2001:db8:1:100::/64 prefixo do link

Como os pacotes são realmente tratados

Quando o roteador ISP recebe um pacote para o 2001:db8:0:1::/64qual é um prefixo de link, ele executa a descoberta de vizinhos para encontrar o endereço MAC do host no /64.

Dessa forma, o roteador ISP precisará de uma entrada de cache vizinha separada para cada endereço IP no prefixo do link.

Quando o roteador ISP recebe um pacote para o 2001:db8:1::/48qual é um prefixo roteado, ele executa a descoberta de vizinhos para encontrar o endereço MAC do gateway 2001:db8:0:1:42:ff:fe00:42.

Dessa maneira, o roteador ISP precisa apenas de uma entrada de cache de vizinho único para o gateway, a fim de rotear pacotes para qualquer endereço IP dentro do prefixo roteado. Essa propriedade é crucial para a escalabilidade da internet.

Como solucionar a falta de prefixo roteado

Ocasionalmente, os clientes ficam presos a um ISP que fornecerá apenas um prefixo de link e nenhum prefixo roteado. Em tal situação, é possível que o cliente instale um daemon que responda à descoberta de vizinhos para todos os endereços IP em um subintervalo específico do prefixo do link. Isso terá um efeito semelhante à configuração desse prefixo como prefixo roteado. Mas tem várias desvantagens:

  • Em geral, os prefixos roteados devem ser menores que /64, mas o daemon que responde às solicitações de descoberta de vizinhos pode criar apenas um prefixo "roteado" que seja maior que /64.
  • Aumenta ligeiramente a latência devido a uma ida e volta extra toda vez que um endereço IP não está no cache vizinho no roteador ISP.
  • Aumenta a carga no roteador ISP devido à necessidade de descoberta de vizinhos muito mais frequente. É bem provável que o roteador ISP possa encaminhar pacotes para um prefixo de destino já conhecido puramente em hardware, mas a descoberta de vizinhos será feita em software.
  • Aumenta o consumo de memória no roteador ISP. Se o ISP alocar um prefixo roteado para cada cliente, poderá facilmente ter apenas uma entrada de cache de vizinho por cliente. Porém, com o daemon de resposta vizinho, isso pode se transformar em milhares de entradas por cliente.

A sobrecarga de processamento no roteador ISP pode ser um problema significativo. Alguns roteadores são tão ruins em lidar com uma enxurrada de pacotes que precisam de descoberta de vizinhos que se transformaram em ataques reais de DoS, e o uso de prefixos de link mais longos (no intervalo /120- 127) foi usado como solução alternativa para esses ataques de DoS.

Mesmo que o roteador não seja vulnerável ao ataque DoS, a memória necessária para as entradas de cache vizinhas quando a solução alternativa descrita acima é muito mais cara para o ISP do que os endereços IP de um prefixo roteado seriam, portanto, há poucas razões. para um ISP recusar a distribuição de um prefixo roteado.

Casos especiais em torno de links ponto a ponto

Nos links ponto a ponto (como túneis 6in4 e links PPP), não há necessidade de descoberta de vizinhos. Há apenas uma direção para enviar um pacote nesse link e nenhum endereço de hardware precisa ser procurado antes de enviar o pacote.

Isso significa que a sobrecarga da descoberta de vizinhos não é um problema nesse link. Portanto, ter um link ponto a ponto usando muitos endereços não é um problema, desde que os pontos de extremidade tenham algum acordo sobre quem usa quais endereços. A falta de descoberta de vizinhos significa que também não há detecção de endereço duplicado, portanto, se os dois pontos de extremidade tentarem usar o mesmo endereço, ele não funcionará conforme o esperado (a menos que você esteja esperando que ele se comporte como um endereço anycast).

Há uma ressalva a ser lembrada nos links ponto a ponto. Cada ponto final pressupõe que todos os endereços no link para o qual ele não foi designado sejam atribuídos ao outro lado. Isso significa que endereços não utilizados em um link ponto a ponto tendem a disparar um loop de roteamento. Esse loop de roteamento (e vários outros casos de loops de roteamento) podem ser evitados por um terminal que nunca envia um pacote diretamente de volta ao nó do qual foi recebido. Portanto, um pacote recebido de um link ponto a ponto não deve ser enviado de volta pelo mesmo link ponto a ponto, desde que um endpoint acerte isso, o loop de roteamento será interrompido. Como um nó lateral na Ethernet, é válido receber um pacote e encaminhá-lo de volta para o mesmo link, mas é uma boa idéia evitar fazer isso se for encaminhado de volta para o mesmo endereço MAC de onde foi recebido.

Como a maioria dos endereços em um link ponto a ponto será encaminhada para a outra extremidade do link sem a necessidade de descoberta de vizinhos, ela se parece muito com um prefixo roteado. Por exemplo, se o ISP atribuiu 2001: db8: 42 :: / 64 a um link ponto a ponto com os endpoints atribuídos aos endereços 2001: db8: 42 :: 1 e 2001: db8: 42 :: 2 e, em seguida, pacotes para a maioria dos endereços em 2001: o db8: 42 :: / 64 será encaminhado do ISP para o cliente da mesma maneira que faria se este fosse um prefixo roteado usando 2001: db8: 42 :: 2 como gateway.

Isso significa que um certo hack é possível. No CPE, é possível configurar 2001: db8: 42 :: / 64 como prefixo do link na LAN. Para que o CPE saiba em qual dos dois links está um determinado destino, a configuração real no link ponto a ponto em direção ao ISP precisaria ser alterada para 2001: db8: 42 :: / 126. Tudo isso funcionará com uma exceção menor: os hosts na LAN não podem se comunicar com os quatro endereços IP em 2001: db8: 42 :: / 126. Como eles provavelmente não precisavam se comunicar com eles de qualquer maneira, isso não é um grande problema. No entanto, não é recomendável usar esse hack, a configuração correta é obter um prefixo roteado do ISP.

Outro truque para salvar endereços é alocar apenas endereços globais para um prefixo roteado e usar endereços RFC 4193 para o link ponto a ponto. No entanto, esse é um truque bobo, pois ainda apresenta algumas desvantagens para resolver um problema inexistente.

Também é possível não atribuir nenhum prefixo a um link ponto a ponto. Desde que cada nó de extremidade tenha outra interface na qual tenha um endereço global, eles poderão usar o endereço atribuído à outra interface ao se comunicar no link ponto a ponto. Não conheço nenhuma desvantagem dessa abordagem, portanto, se você achar que essa abordagem para apontar para apontar links simplifica sua configuração de rede, sinta-se à vontade para usá-la, mas não a use como uma medida para salvar endereços.

Casos de uso para um prefixo roteado

  • Roteamento hierárquico, como no meu primeiro exemplo, é para o que os prefixos roteados foram projetados.
  • VPN / túneis adicionam outra camada à hierarquia de roteadores que precisam de prefixos. Embora sejam hardware virtual e não real, eles não são diferentes em termos de endereçamento e precisam de um prefixo roteado, como faria com um link físico.
  • Atribuindo muitos endereços a um host . Existem casos de uso para atribuir muitos endereços a um único host. Para alguns endereços, eles podem ser simplesmente atribuídos e manipulados com a descoberta de vizinhos para cada uma das entradas de cache que houver endereços. Mas se milhares de endereços forem necessários, um prefixo roteado é melhor.

Um exemplo mais detalhado do último ponto seria recursores de DNS. Como não vejo o DNSSEC recebendo muita atenção até terminar o combate ao IPv4, são necessárias outras medidas contra o envenenamento do DNS. Foi feito um esforço para obter o máximo de entropia possível nas consultas. O ID e o número da porta podem conter no máximo 32 bits de entropia, outros poucos bits podem ser mantidos na solicitação se letras maiúsculas e minúsculas forem misturadas no nome do domínio a ser resolvido. Você raramente chegará a mais de 48 bits no total dessa maneira. A atribuição de um total /64ao recursor DNS permitiria aumentar a entropia em 64 bits de uma só vez, o que é mais do que todos os outros esforços combinados.

Kasperd
fonte
Eu teria vinculado a uma pergunta / resposta sobre CIDR se pudesse encontrar uma boa. Definitivamente, é preciso entender o CIDR antes de ler esta resposta.
kasperd
Para o CIDR, o artigo da Wikipedia parece bom para mim, na minha opinião, um link para en.wikipedia.org/wiki/Classless_Inter-Domain_Routing é bom para uma melhor compreensão.
Erik
Estou com alguns problemas com sua resposta. Eles não cobrem o comportamento observado, nem para o meu ISP em casa e nem para o provedor de hospedagem no meu servidor (ambos não usam a descoberta clássica de vizinhos). <br /> Acho que preciso de uma descrição mais detalhada sobre o escopo principal do meu questão. Devo atualizar minha pergunta ou existir outra maneira preferida? Desculpe, sou novo em serverfault.com / StackExchange.
Erik
Eu estou confuso sobre a situação que você fala. Você quer dizer um ISP (por exemplo, em uma linha DSL) para uma conexão à Internet para residências particulares ou um provedor de hospedagem que conecta servidores (com uma LAN real baseada em Ethernet)?
Erik
1
@ 1'OR1-- Se um pacote para qualquer endereço não utilizado dentro dos /48resultados resultar em um pacote de solicitação vizinho para o IP de destino, realmente soa como se o provedor tivesse configurado o /48prefixo de link. Configurar um /48prefixo como link não é uma configuração recomendada, mas ouvi falar de provedores de qualquer maneira. Se fosse um prefixo roteado, independentemente de qual endereço IP dentro de /48um pacote foi destinado, a solicitação do vizinho que você veria seria sempre o mesmo endereço IP. E uma vez que você respondesse a isso, não veria mais nenhuma solicitação de vizinhos.
kasperd
3

Um prefixo de link é usado entre seu roteador e seu ISP.

O prefixo roteado é usado dentro da sua rede.

Se você receber um prefixo roteado / 64 do seu ISP, basta que seu roteador anuncie esse prefixo na sua LAN. Se você tiver um prefixo menor que / 64 (talvez um / 48?), Considere como sub-rede esse prefixo de maneira lógica, para ser usado por todos os seus roteadores em sua organização.

No Wireshark, dependendo de onde você captura os pacotes, você pode ver apenas o prefixo roteado em uso (se capturar na LAN) ou os dois prefixos usados ​​(se capturar na WAN).

Em relação ao protocolo de descoberta de vizinhos, ele também depende do link. No link entre o ISP e o roteador, o NDP é usado para descobrir o endereço MAC da interface WAN do roteador e o endereço MAC do roteador upstream do ISP. Na sua interface LAN, o NDP é usado para descobrir o endereço MAC dos hosts no seu segmento LAN.

Espero que isto ajude.

Scott Nelson
fonte
1
If you received a /64 from your ISP, then you would simply have your router advertise that prefix on your LANProvavelmente a sentença provavelmente não será entendida se você explicitar que /64se refere ao prefixo roteado.
kasperd
2

Um prefixo é um prefixo roteado se os pacotes para esse prefixo precisarem passar por um roteador para alcançar seu destino. Um prefixo é um prefixo de link se estiver em um segmento ao qual uma interface de rede local está conectada.

Como um pacote está viajando pela Internet, o / 64 para o qual ele é direcionado será um prefixo roteado até o último salto. Então será um prefixo de link.

Prefixos roteados são geralmente agregados. Muitos / 64 podem ser agregados em um único prefixo menor para manter as tabelas de roteamento menores. Na fronteira entre provedores de Internet, é comum impor um comprimento máximo de prefixo de / 48.

Se um prefixo for algo de / 0 a / 63, você normalmente pode assumir que é um prefixo roteado. Se o prefixo for / 64, você precisará de mais informações para saber se é um prefixo de roteamento ou link.

rfc2460
fonte