1 / 38

IPv6 (Parte 2: Mecanismos de Transição)

IPv6 (Parte 2: Mecanismos de Transição). Edgard Jamhour. Problemas de Transição. Como evitar reescrever aplicações? Como permitir um cliente IPv4 conectar-se com um servidor IPv6? Como permitir um cliente IPv6 conectar-se com um servidor IPv4?

Télécharger la présentation

IPv6 (Parte 2: Mecanismos de Transição)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IPv6(Parte 2: Mecanismos de Transição) Edgard Jamhour

  2. Problemas de Transição • Como evitar reescrever aplicações? • Como permitir um cliente IPv4 conectar-se com um servidor IPv6? • Como permitir um cliente IPv6 conectar-se com um servidor IPv4? • Como permitir um cliente IPv6 alcançar um roteador IPv6 através de uma rede IPv4? • Como permitir a um host IPv6 se conectar a outro host IPv6 através da Internet?

  3. Aplicação socketIPv6 socketIPv4 Porta Porta TCP IPv4 IPv6 Por que as aplicações precisam ser reescritas? • No sistema operacional, a aplicação escolhe a pilha de protocolos quando abre um socket. • O socket IPv6 é definido pela RFC 2133 (April 1997). • Basic Socket Interface Extensions for IPv6

  4. Core Functions • Criação do Socket: • Socket TCP (IPv4): • s = socket(PF_INET, SOCK_STREAM, 0); • Socket UDP (IPv4): • s = socket(PF_INET, SOCK_DGRAM, 0); • Socket TCP (IPv6) • s = socket(PF_INET6, SOCK_STREAM, 0); • Socket UDP (IPv6) • s = socket(PF_INET6, SOCK_DGRAM, 0);

  5. Estrutura de Endereços IPv6 • Ao abrir um socket IPv6 , o “endpoint” é especificado pela seguinte estrutura: • struct sockaddr_in6 { u_char sin6_len; /* Tamanho da estrutura */ u_char sin6_family; /* AF_INET6 */ u_int16m_t sin6_port; /* Porta TCP ou UDP */ u_int32m_t sin6_flowinfo; /* Flow Label + prioridade */ struct in6_addr sin6_addr; /* Endereço IPv6 */ }; • struct in6_addr { u_int8_t s6_addr[16];/* Endereço IPv6 */ }

  6. Tradução de Nomes em Endereços • API´s para tradução de nomes: • gethostbyname() • Retorna o endereço do host • O comportamento da função gethostbyname() pode ser modificado pela variável de ambiente: • RES_OPTIONS=inet6 • Esta função retorna endereços IPv4 mapeados para aplicações IPv6: • ::FFFF: <IPv4 address>

  7. Dual Stack • A forma mais simples de integração entre IPv4 e IPv6 é utilizar S.O. dual stack. Dual Stack Host Aplicação Aplicação Aplicação Aplicação TCP TCP TCP TCP IPv4 IPv4 IPv6 IPv6 Enlace Enlace Enlace

  8. BIS – Bump in the Stack • Mecanismo interno no host que traduz cabeçalhos IPv4 em IPv6 e vice-versa (RFC 2767). IPv4 Application gethostbyname TCP Name Resolver IPv4 Address Mapper Translator IPv6 Placa de Rede HOST REDE IPv6

  9. Exemplo 1: Cliente IPv4 e Servidor IPv6 DNS 3FFE:1:2:3:4 www6.pucpr.br Aplicação IPv6 Aplicação IPv4 Dual Stack 192.168.0.1 3FFE::A:B:C:D Single Stack 3FFE::1:2:3:4 Rede IPv6

  10. 7. 10.0.0.1 1. www6.pucpr.br? 2. www6.pucpr.br 3. 3FFE::12:34 6. 10.0.0.1 4. 3FFE::12:34 5. Mapping Table Endereços Falsos 3FFE::12:34 = 10.0.0.1 10.0.0.0 ... 10.0.0.255 Exemplo: Cliente IPv4 e Servidor IPv6 Aplicação IPv4 DNS Name Resolver Address Mapper

  11. 192.168.0.1 10.0.0.1 payload 3FFE::12:34 Mapping Table 3FFE::A:B:C:D 3FFE:12:34 3FFE::12:34 = 10.0.0.1 payload Exemplo: Cliente IPv4 e Servidor IPv6 IPv4 Application Address Mapper Translator IPv6

  12. Exemplo 2: Cliente IPv6 e Servidor IPv4 DNS 3FFE::12:34 www4.pucpr.br Aplicação IPv4 Aplicação IPv6 Dual Stack 192.168.0.1 3FFE::12:34 Single Stack 3FFE:AB:CD Rede IPv6

  13. 10.0.0.1 192.168.01 payload 10.0.0.1 Mapping Table 3FFE::AB:CD 3FFE:12:34 3FFE::AB:CD = 10.0.0.1 payload Exemplo: Cliente IPv6 e Servidor IPv4 IPv4 Application Address Mapper Translator IPv6

  14. BIA - Bump-In-The-API • Similar ao BIS mas traduz API em vez de cabeçalhos IP. IPv4 Application Interface Sockets gethostbyname Function Mapper Name Resolver TCP TCP Address Mapper IPv4 IPv6 Placa de Rede REDE IPv6

  15. IPv4 API: sends payload to 10.0.0.1 3FFE::1:2:3:4 Mapping Table 3FFE::A:B:C:D 3FFE:1:2:3:4 3FFE::1:2:3:4 = 10.0.0.1 payload BIA Aplicação IPv4 Address Mapper Function Mapper IPv6

  16. NAT-PT e NAPT-PT • NAT-PT: • Network Address Translation - Protocol Translation • Similar ao NAT • NAPT-PT • Network Address and Port Translation - Protocol Translation • Similar ao NAPT • NAT-PT é também baseado nos seguintes padrões: • DNS-ALG: DNS Application Level Gateway (DNS Extension) • SIIT: Stateless IP/ICMP Translation Algorithm (SIIT)

  17. IPv6 IPv4 NAT-PT • Similar ao NAT convencional. Trabalha através do mapeamento entre endereços IPv4 e IPv6. Endereço de destino mapeado: ::FFFF: <IPv4 address> Endereço de origem é o endereço do NAT Aplicação IPv6 Aplicação IPv4 IPv4 IPv6 IPv6 Host IPv4 Host NAT-PT Rede IPv4 Rede IPv6 DNS_ALG

  18. ::ffff:<200.1.2.3> payload 3ffe::12:34 210.0.0.1 200.1.2.3 payload 3ffe::12:34 payload ::ffff:<200.1.2.3> 200.1.2.3 210.0.0.1 payload NAT-PT 3FFE::12:34 200.1.2.3 3ffe::12:34 = 210.0.0.1 IPv6 Network IPv4 Network 210.0.0.1 to 210.0.0.10

  19. 3. Mapeamento IPv4-IPv6. 7. IPv6 6. IPv4 IPv4 2. Trigger 1. DNS query 4. Endereço IPv4 mapeado 5. Endereço IPv4 mapeado Bi-directional NAT-PT • O NAT-PT bidirecional é implementado utilizando-se um DNS-ALG (definido pela RFC 2694). Aplicação IPv6 IPv4 Host IPv6 Host Aplicação IPv4 DNS ALG

  20. IPv6 IPv4 NAPT-PT • Similar ao NAPT, necessita de apenas um endereço IPv4 público, mas não é bidirecional. Pacote IPv6 Pacote IPv4 Mapeamento IPv6:PortaH - IPv4:PortaN Aplicação IPv6 Aplicação IPv4 PortaN PortaH NAT-PT IPv4 IPv6 IPv6 Host IPv4 Host

  21. IPv4:1030 IPv4:1040 IPv4:1050 NAPT-PT • Um endereço IPv4 permite atender até 63K IPv6 hosts. IPv6a IPv6a:1030 IPv6a:1030  IPv4:1030 IPv6b:1030  IPv4:1040 IPv6c:1050  IPv4:1050 IPv4 IPv6b:1030 IPv6b:1050 IPv6b

  22. IPv4 NAPT-PT não é Bidirecional Private IP:Port 3FFE::a:1024 3FFE::b:1024 3FFE::c:1025 Public IP:Port 200.0.0.1:1025 200.0.0.1:1026 200.0.0.1:1027 clientes request reply 1024 3FFE::a 1025 1026 1024 3FFE::b 1027 Endereço IP Público 200.0.0.1 IPv4 servidor 1025 3FFE::c

  23. Proxy SOCKS64 • Definido pela RFC 3089 (april 2001) • SOCKS64 é similar ao SOCKS. Redes que já utilizam SOCKS podem ser facilmente adaptadas para IPv6. single stack IPv4 host single stack IPv6 host IPv4 Application IPv6 Application SOCKS LIB IPv4+6 SOCKS LIB IPv6+4 TCP UDP TCP UDP IPv4 IPv6

  24. IPv6 IPv4 Socks64: Cenário 1 • Cliente IPv4 e Servidor IPv6. IPv4 Packet IPv6 Packet Aplicação IPv4 Aplicação IPv6 Socket IPv6 Socket IPv4 PORT PORT Socks LIB PORT PORT IPv4 Host Socks64 IPv6 Host

  25. IPv6 IPv4 Socks64: Cenário 2 • Um cliente IPv6 envia um pacote para um servidor IPv4. IPv4 Packet IPv6 Packet Aplicação IPv6 Socks64 Aplicação IPv4 Socket IPv4 Socket IPv6 Socks LIB PORT PORT PORT PORT IPv6 Host IPv4 Host

  26. Técnicas de Tunelamento • Permite que hosts ou redes IPv6 isoladas se comunique pela Internet. • Pacotes IPv6 são encapsulados como dados de pacotes IPv4. Tunnel Endpoints SRC IPv4 DST IPv4 payload TIPO SRC IPv6 DST IPv6 payload

  27. ISATAP • ISATAP é um mecanismo para atribuição automática de endereço e configuração automática de túneis que permite que hosts IPv6 se comuniquem através da Internet. 192.168.1.2 10.32.1.2 IPv6 IPv4 FE80::5EFE:192.168.1.2 FE80::5EFE:10.32.1.2

  28. Fraction of Prefix (binary) Address Space Allocation Reserved 0000 0000 1/256 Unassigned … … NSAP Allocation 0000 001 1/128 IPX Allocation 0000 010 1/128 Unassigned … … Aggregatable Global Unicast 001 1/8 Addresses Unassigned … … Link-Local Unicast Addresses 1111 1110 10 1/1024 . Site-Local Unicast Addresses 1111 1110 11 1/1024 Multicast Addresses 1111 1111 1/256 Tunelamento 6to4 AGGR (1/8) 6to4 scheme 1/65535

  29. Endereços 6to4 • Classe de endereços especiais definidas para o tunelamento 6to4 (RFC 2529) • 2002::/16 3 13 32 16 64 Interface ID V4ADDR SLA ID 0 0000 0000 0010 001 Site Address 2002: 80 bits Interface externa do roteador que se conecta com a Internet.

  30. Example

  31. Roteadores 6to4 Relay • Roteadores Relay são utilizados para permitir a comunicação entre Hosts 6to4 através de backbones puramente IPv6. Os roteadores Relay são vistos como o verdadeiro “gateway default” para acessar redes puramente IPv6. • Muitas instituições que participam dos projetos de backbones IPv6, como Microsoft e Cisco, oferecem roteadores relay.

  32. O endereço Anycast mágico • A RFC 3068 definiu que o prefixo 192.88.99.0/24 é utilizado para anunciar o roteador relay mais próximo de uma rede utilizando BGP. • O endereço IPv6 equivalente é 2002:c058:6301::". roteadores relay Rede Privada BACKBONE IPv6 BACKBONE IPv4 Rede Privada roteador 6to4 tunel

  33. Exemplo • A tabela abaixo ilustra as rotas criadas automaticamente pelo Windows XP para acessar redes IPv6. • ::/0 -> 3/2002:c058:6301::1741 pref 1331 • ::/0 -> 3/2002:836b:213c::836b:213c pref 2147483647(rota tornada obsoleta) • ::/96 -> 2 pref 1000 • 2002::/16 -> 3 pref 1000

  34. 6over4 Tunneling (Virtual Ethernet) • Permite que hosts IPv6 isolados se comunique com roteadores IPv6 através de uma rede IPv4. • RFC 2529: Transmission of IPv6 over IPv4 Domains without Explicit Tunnels IPv6 Application IPv6 Application 6over4 Router Multicast IPv6 IPv4 IPv6 IPv6 Net IPv4 Net Host IPv6 IPv6 Host

  35. Formato dos Pacotes • Pacotes IPv6 são encapsulados no interior de pacotes IPv4 utilizando o tipo de protocolo 41. • Pelo menos um roteador da rede deve suportar o serviço IPv6over4. SRC IPv4 DST IPv4 41 payload SRC IPv6 DST IPv6 payload

  36. Mapeamento de Endereços Multicast • Os serviços IPv6 são baseados em mensagens multicast: • Neighbor Discovering, Router Discovering and Prefix Discovering • IPv6over4 define um mapeamento entre mensagens multicast IPv4 e IPv6: • Pv4 multicast base address: 239.192.0.0/16 • 239 .192.< 2 bytes menos significativos do endereço multicast IPv6>

  37. Mapeamento de Endereços • all-nodes multicast address: 239.192.0.1 • FF02::1: all nodes of the link (link local) • all-routers multicast address: 239.192.0.2 • FF01::2 all link local routers • solicited-node multicast address: 239.192.Y.Z • FF02::1::FFxx:xxxx • xx:xxxx 24 less significant bits of the host unicast address.

  38. Conclusão • O IPv6 é necessidade real para permitir a continuidade do crescimento dos serviços Internet devido: • Ao esgotamento de endereços IPv4 públicos • Ao grande número de rotas dos roteadores de borda. • A transição para IPv6 ocorrerá gradualmente. • Redes IPv4 e IPv6 podem e irão coexistir. • Atualmente, já é possível utilizar endereços IPv6 e mecanismos de transição.

More Related