38
2010, Edgard Jamhour IPv6 (Parte 2: Mecanismos de Transição) Edgard Jamhour

IPv6 (Parte 2: Mecanismos de Transição)jamhour/Pessoal/Mestrado/TARC/TransicaoIPv6.pdf · • Como permitir um cliente IPv4 conectar-se com um servidor IPv6? • Como permitir um

  • Upload
    buingoc

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

2010, Edgard Jamhour

IPv6

(Parte 2: Mecanismos de Transição)

Edgard Jamhour

2010, 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?

• 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?

2010, Edgard Jamhour

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

Aplicação

TCP

Porta

IPv4 IPv6

socketIPv6

Porta

socketIPv4

2010, Edgard Jamhour

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);

2010, Edgard Jamhour

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 */

}

2010, Edgard Jamhour

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>

2010, Edgard Jamhour

Dual Stack

• A forma mais simples de integração entre IPv4 e IPv6 é utilizar S.O. dual stack.

Aplicação Aplicação

TCP TCP

IPv4 IPv6

Enlace

Aplicação

TCP

IPv4

Enlace

Aplicação

TCP

IPv6

Enlace

Dual Stack Host

2010, Edgard Jamhour

BIS – Bump in the Stack

• Mecanismo interno no host que traduz cabeçalhos IPv4 em IPv6 e vice-versa (RFC 2767).

IPv4 Application

Placa de Rede

TCP Name Resolver

Address Mapper Translator

IPv6

REDE IPv6

gethostbyname

IPv4

HOST

2010, Edgard Jamhour

Exemplo 1: Cliente IPv4 e Servidor IPv6

Dual Stack

192.168.0.1

3FFE::A:B:C:D

Aplicação

IPv4

Aplicação

IPv6

Single Stack

3FFE::1:2:3:4

3FFE:1:2:3:4

www6.pucpr.br DNS

Rede IPv6

2010, Edgard Jamhour

Exemplo: Cliente IPv4 e Servidor IPv6

Aplicação IPv4

Name Resolver

Address

Mapper

1. www6.pucpr.br?

DNS 2. www6.pucpr.br

4. 3FFE::12:34 6. 10.0.0.1

7. 10.0.0.1

3FFE::12:34 = 10.0.0.1

5. Mapping Table

3. 3FFE::12:34

10.0.0.0

...

10.0.0.255

Endereços Falsos

2010, Edgard Jamhour

Exemplo: Cliente IPv4 e Servidor IPv6

IPv4 Application

Translator Address

Mapper

3FFE::12:34 = 10.0.0.1

Mapping Table

192.168.0.1 10.0.0.1 payload

IPv6

3FFE::12:34

3FFE::A:B:C:D 3FFE:12:34 payload

2010, Edgard Jamhour

Exemplo 2: Cliente IPv6 e Servidor IPv4

Dual Stack

192.168.0.1

3FFE::12:34

Single Stack

3FFE:AB:CD

3FFE::12:34

www4.pucpr.br DNS

Rede IPv6

Aplicação

IPv6

Aplicação

IPv4

2010, Edgard Jamhour

Exemplo: Cliente IPv6 e Servidor IPv4

IPv4 Application

Translator Address

Mapper

3FFE::AB:CD = 10.0.0.1

Mapping Table

10.0.0.1 192.168.01 payload

IPv6

10.0.0.1

3FFE::AB:CD 3FFE:12:34 payload

2010, Edgard Jamhour

BIA - Bump-In-The-API

• Similar ao BIS mas traduz API em vez de cabeçalhos IP.

Name Resolver

Address Mapper

REDE IPv6

gethostbyname

IPv4 Application

Placa de Rede

TCP

Function Mapper

IPv6 IPv4

TCP

Interface Sockets

2010, Edgard Jamhour

BIA

Aplicação IPv4

Function Mapper Address

Mapper

3FFE::1:2:3:4 = 10.0.0.1

Mapping Table IPv6

3FFE::1:2:3:4

3FFE::A:B:C:D 3FFE:1:2:3:4 payload

IPv4 API: sends payload to 10.0.0.1

2010, Edgard Jamhour

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)

2010, Edgard Jamhour

NAT-PT

• Similar ao NAT convencional. Trabalha através do

mapeamento entre endereços IPv4 e IPv6.

IPv4

Host

Aplicação

IPv4

Aplicação

IPv6

IPv6

Host NAT-PT

DNS_ALG

IPv6 IPv4

Endereço de destino mapeado:

::FFFF: <IPv4 address>

Rede

IPv6

Rede

IPv4

IPv4 IPv6

Endereço de origem é o

endereço do NAT

2010, Edgard Jamhour

NAT-PT

IPv6 Network

3FFE::12:34

210.0.0.1 to 210.0.0.10

3ffe::12:34 ::ffff:<200.1.2.3> payload 210.0.0.1 payload 200.1.2.3

3ffe::12:34 ::ffff:<200.1.2.3> payload 210.0.0.1 payload 200.1.2.3

IPv4 Network

200.1.2.3

3ffe::12:34 = 210.0.0.1

2010, Edgard Jamhour

Bi-directional NAT-PT

IPv4

Host

Aplicação

IPv4

3. Mapeamento IPv4-

IPv6.

1. DNS query

Aplicação

IPv6

IPv6

Host

2. Trigger

4. Endereço IPv4

mapeado 5. Endereço IPv4 mapeado

• O NAT-PT bidirecional é implementado utilizando-se um

DNS-ALG (definido pela RFC 2694).

6. IPv4

DNS

ALG

IPv4

7. IPv6

2010, Edgard Jamhour

NAPT-PT

• Similar ao NAPT, necessita de apenas um endereço IPv4

público, mas não é bidirecional.

IPv4 Host

Aplicação

IPv6

Aplicação

IPv4

Mapeamento

IPv6:PortaH - IPv4:PortaN

Pacote IPv4

PortaH

IPv6 IPv4

PortaN

Pacote IPv6

IPv6 Host

NAT-PT

IPv4 IPv6

2010, Edgard Jamhour

NAPT-PT

IPv6b:1050

IPv6a:1030

IPv4

IPv6a

IPv6b

IPv6b:1030 IPv4:1040

IPv4:1050

IPv4:1030

• Um endereço IPv4 permite atender até 63K IPv6 hosts.

IPv6b:1030 IPv4:1040

IPv6a:1030 IPv4:1030

IPv6c:1050 IPv4:1050

2010, Edgard Jamhour

NAPT-PT não é Bidirecional

Endereço IP Público

200.0.0.1

clientes

servidor

3FFE::a

Private IP:Port

3FFE::a :1024

3FFE::b :1024

3FFE::c :1025

3FFE::b

3FFE::c

request reply

1025

1026

1027

Public IP:Port

200.0.0.1 :1025

200.0.0.1 :1026

200.0.0.1 :1027 1024

1024

1025 IPv4

IPv4

2010, Edgard Jamhour

Proxy SOCKS64

• Definido pela RFC 3089 (april 2001)

• SOCKS64 é similar ao SOCKS. Redes que já utilizam

SOCKS podem ser facilmente adaptadas para IPv6.

IPv4 Application

SOCKS LIB IPv4+6

TCP UDP

IPv4

IPv6 Application

SOCKS LIB IPv6+4

TCP UDP

IPv6

single stack IPv4 host single stack IPv6 host

2010, Edgard Jamhour

Socks64: Cenário 1

• Cliente IPv4 e Servidor IPv6.

IPv4 Host Socks64 IPv6 Host

PORT

PORT PORT

PORT

Socks LIB

Aplicação

IPv4

Aplicação

IPv6 Socket IPv4 Socket IPv6

IPv4 Packet IPv6 Packet

IPv4 IPv6

2010, Edgard Jamhour

Socks64: Cenário 2

• Um cliente IPv6 envia um pacote para um

servidor IPv4.

IPv4 Host

Socks64

IPv6 Host

PORT

PORT PORT

PORT

Socks LIB

Aplicação

IPv4

Aplicação

IPv6

Socket IPv4 Socket IPv6

IPv4 Packet IPv6 Packet

IPv6 IPv4

2010, Edgard Jamhour

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.

SRC IPv4 payload DST IPv4

Tunnel Endpoints

payload SRC IPv6 DST IPv6

TIPO

2010, Edgard Jamhour

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.

FE80::5EFE:192.168.1.2 FE80::5EFE:10.32.1.2

IPv4

192.168.1.2 10.32.1.2 IPv6

2010, Edgard Jamhour

6to4

scheme

Tunelamento 6to4

1/65535

AGGR (1/8)

Reserved

Allocation

0000 0000 1/256

Prefix (binary) Fraction of

Address Space

Unassigned … …

NSAP Allocation 0000 001 1/128

IPX Allocation 0000 010 1/128

Unassigned … …

Aggregatable Global Unicast

Addresses

001 1/8

Unassigned … …

.

1111 1110 10 1/1024

1111 1110 11 1/1024

Multicast Addresses 1111 1111 1/256

Site-Local Unicast Addresses

Link-Local Unicast Addresses

2010, Edgard Jamhour

Endereços 6to4

• Classe de endereços especiais definidas para o tunelamento 6to4 (RFC 2529)

– 2002::/16

0 0000 0000 0010 V4ADDR 001 SLA ID Interface ID

3 13 32 64

2002:

16

Site Address 80 bits

Interface externa do roteador que se

conecta com a Internet.

2010, Edgard Jamhour

Example

Internet

(IPv4 Network)

IPv6 host

IP6to4 router

IP6to4 router

IPv6 Network 2002:C8C0:7801::/48

IPv6 host

V4ADDR C8.C0.78.1

(200.192.116.1)

V4ADDR C8.11.62.1

(200.17.98.1)

IPv6 Network 2002:C811:6201::/48

C8.C0.78.1 C8.11.62.1 2002:C8C0:7801… 2002:C811:6201… payload

IPv6 packet IPv4 header

C8.C0.78.1 C8.11.62.1 2002:C8C0:7801… 2002:C811:6201… payload

IPv4 header IPv6 packet

2010, Edgard Jamhour

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.

2010, Edgard Jamhour

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::".

BACKBONE

IPv4

BACKBONE IPv6

roteadores relay

roteador 6to4 tunel

Rede

Privada

Rede

Privada

2010, Edgard Jamhour

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

2010, Edgard Jamhour

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 Host Host IPv6

IPv4 IPv6

IPv4 Net IPv6 Net

IPv6

Application 6over

4

Route

r

IPv6

Application

Multicast IPv6

2010, Edgard Jamhour

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 payload DST IPv4

payload SRC IPv6 DST IPv6

41

2010, Edgard Jamhour

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>

2010, Edgard Jamhour

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.

2010, Edgard Jamhour

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.