IPv6
(Parte 2: Mecanismos de Transição)
Edgard Jamhour
2008, 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?
2008, 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
socketIPv6
socketIPv4
Porta
Porta
TCP
IPv4
IPv6
2008, 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);
2008, 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 */
}
2008, 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>
2008, Edgard Jamhour
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
2008, 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
gethostbyname
TCP
Name Resolver
IPv4
Address Mapper
Translator
IPv6
Placa de Rede
HOST
REDE IPv6
2008, Edgard Jamhour
Exemplo 1: Cliente IPv4 e Servidor IPv6
DNS
3FFE:1:2:3:4
www6.pucpr.br
Aplicação
IPv6
Aplicação
IPv4
Dual Stack
Single Stack
192.168.0.1
3FFE::A:B:C:D
Rede IPv6
3FFE::1:2:3:4
2008, Edgard Jamhour
Exemplo: Cliente IPv4 e Servidor IPv6
Aplicação IPv4
1. www6.pucpr.br?
7. 10.0.0.1
3. 3FFE::12:34
Name Resolver
DNS
6. 10.0.0.1
4. 3FFE::12:34
Endereços Falsos
10.0.0.0
...
10.0.0.255
2. www6.pucpr.br
5. Mapping Table
Address
Mapper
3FFE::12:34 = 10.0.0.1
2008, Edgard Jamhour
Exemplo: Cliente IPv4 e Servidor IPv6
IPv4 Application
192.168.0.1
Translator
3FFE::A:B:C:D
10.0.0.1
payload
3FFE::12:34
3FFE:12:34
Address
Mapper
payload
Mapping Table
IPv6
3FFE::12:34 = 10.0.0.1
2008, Edgard Jamhour
Exemplo 2: Cliente IPv6 e Servidor IPv4
3FFE::12:34
www4.pucpr.br
DNS
Aplicação
IPv4
Aplicação
IPv6
Single Stack
Dual Stack
3FFE:AB:CD
192.168.0.1
3FFE::12:34
Rede IPv6
2008, Edgard Jamhour
Exemplo: Cliente IPv6 e Servidor IPv4
IPv4 Application
10.0.0.1
Translator
3FFE::AB:CD
IPv6
192.168.01
payload
10.0.0.1
3FFE:12:34
Address
Mapper
payload
Mapping Table
3FFE::AB:CD = 10.0.0.1
2008, Edgard Jamhour
BIA - Bump-In-The-API
• Similar ao BIS mas traduz API em vez de cabeçalhos IP.
IPv4 Application
Interface Sockets
Function Mapper
TCP
gethostbyname
Name Resolver
TCP
Address Mapper
IPv4
IPv6
Placa de Rede
REDE IPv6
2008, Edgard Jamhour
BIA
Aplicação IPv4
IPv4 API: sends payload to 10.0.0.1
Function Mapper
3FFE::A:B:C:D
IPv6
3FFE::1:2:3:4
3FFE:1:2:3:4
Address
Mapper
payload
Mapping Table
3FFE::1:2:3:4 = 10.0.0.1
2008, 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)
2008, Edgard Jamhour
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>
Aplicação
IPv6
Endereço de origem é o
endereço do NAT
IPv4
IPv6
IPv6
Host
Aplicação
IPv4
IPv4
Host
NAT-PT
IPv6
IPv4
Rede
IPv4
Rede
IPv6
DNS_ALG
2008, Edgard Jamhour
NAT-PT
3ffe::12:34
::ffff:<200.1.2.3> payload
::ffff:<200.1.2.3>
3ffe::12:34
payload
210.0.0.1 200.1.2.3 payload
200.1.2.3 210.0.0.1 payload
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
2008, Edgard Jamhour
Bi-directional NAT-PT
• O NAT-PT bidirecional é implementado utilizando-se um
DNS-ALG (definido pela RFC 2694).
Aplicação
IPv6
3. Mapeamento IPv4IPv6.
7. IPv6
6. IPv4
IPv4
Host
IPv6
Host
IPv4
2. Trigger
4. Endereço IPv4
mapeado
Aplicação
IPv4
DNS
ALG
1. DNS query
5. Endereço IPv4 mapeado
2008, Edgard Jamhour
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
IPv6
IPv6 Host
IPv4
IPv6
NAT-PT
IPv4
IPv4 Host
2008, Edgard Jamhour
NAPT-PT
• Um endereço IPv4 permite atender até 63K IPv6 hosts.
IPv6a
IPv6a:1030
IPv4:1030
IPv6a:1030  IPv4:1030
IPv6b:1030  IPv4:1040
IPv4
IPv6c:1050  IPv4:1050
IPv6b:1030
IPv4:1040
IPv6b:1050
IPv4:1050
IPv6b
2008, Edgard Jamhour
NAPT-PT não é Bidirecional
clientes
request
1024
Private IP:Port
Public IP:Port
3FFE::a :1024
3FFE::b :1024
3FFE::c :1025
200.0.0.1 :1025
200.0.0.1 :1026
200.0.0.1 :1027
reply
3FFE::a
1025
1024
1026
IPv4
3FFE::b
1025
1027
Endereço IP Público
200.0.0.1
IPv4
servidor
3FFE::c
2008, 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.
single stack IPv4 host
single stack IPv6 host
IPv4 Application
IPv6 Application
SOCKS LIB IPv4+6
SOCKS LIB IPv6+4
TCP
UDP
IPv4
TCP
UDP
IPv6
2008, Edgard Jamhour
Socks64: Cenário 1
• Cliente IPv4 e Servidor IPv6.
IPv4 Packet
IPv6 Packet
Aplicação
IPv4
Socket IPv4
Socks LIB
Socket IPv6
PORT
PORT
PORT
PORT
IPv6
IPv4
IPv4 Host
Aplicação
IPv6
Socks64
IPv6 Host
2008, Edgard Jamhour
Socks64: Cenário 2
• Um cliente IPv6 envia um pacote para um
servidor IPv4.
IPv4 Packet
Aplicação
IPv4
IPv6 Packet
Socks64
Socket IPv4
Socket IPv6
PORT
Socks LIB
PORT
PORT
PORT
IPv4
IPv4 Host
Aplicação
IPv6
IPv6
IPv6 Host
2008, 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.
Tunnel Endpoints
SRC IPv4
DST IPv4
SRC IPv6
TIPO
DST IPv6
payload
payload
2008, 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.
192.168.1.2
10.32.1.2
IPv6
IPv4
FE80::5EFE:192.168.1.2
FE80::5EFE:10.32.1.2
2008, Edgard Jamhour
Tunelamento 6to4
Allocation
Fraction of
Prefix (binary) Address Space
Reserved
0000 0000
1/256
Unassigned
…
…
NSAP Allocation
0000 001
1/128
IPXAllocation
0000 010
1/128
Unassigned
…
…
Aggregatable Global Unicast
Addresses
Unassigned
001
1/8
…
…
Link-Local Unicast Addresses
.
Site-Local Unicast
Addresses
1111 1110 10
1/1024
1111 1110 11
1111 1111
1/1024
Multicast Addresses
1/256
AGGR (1/8)
6to4
scheme
1/65535
2008, Edgard Jamhour
Endereços 6to4
• Classe de endereços especiais definidas para o
tunelamento 6to4 (RFC 2529)
– 2002::/16
3
13
32
001 0 0000 0000 0010
2002:
V4ADDR
16
SLA ID
64
Interface ID
Site Address
80 bits
Interface externa do roteador que se
conecta com a Internet.
2008, Edgard Jamhour
Example
IPv6 packet
payload
2002:C811:6201…
IPv4 header
2002:C8C0:7801…
C8.11.62.1
IPv4 header
C8.C0.78.1
IPv6 packet
C8.11.62.1 C8.C0.78.1 2002:C811:6201…
V4ADDR
C8.C0.78.1
(200.192.116.1)
2002:C8C0:7801…
V4ADDR
C8.11.62.1
(200.17.98.1)
IPv6 host
IPv6 host
IP6to4
router
IPv6 Network
2002:C8C0:7801::/48
payload
IP6to4
router
Internet
(IPv4 Network)
IPv6 Network
2002:C811:6201::/48
2008, 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.
2008, 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::".
roteadores relay
Rede
Privada
BACKBONE IPv6
BACKBONE
IPv4
Rede
Privada
roteador 6to4
tunel
2008, 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
2008, 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
Application
IPv6
Application
6over
4
Route
r
Multicast IPv6
IPv4
IPv4 Net
IPv6 Host
IPv6
IPv6 Net
Host IPv6
2008, 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
DST IPv4
SRC IPv6
41
DST IPv6
payload
payload
2008, 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>
2008, 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.
2008, 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.
2008, Edgard Jamhour
Download

ppt - PUCPR