Upload
buingoc
View
215
Download
0
Embed Size (px)
Citation preview
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.