2004, Edgard Jamhour
IPv6IPv6(Parte 2: Mecanismos de Transição)(Parte 2: Mecanismos de Transição)
Edgard Jamhour
2004, Edgard Jamhour
Problemas de TransiçãoProblemas 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?
2004, Edgard Jamhour
Por que as aplicações precisam ser reescritas?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
2004, Edgard Jamhour
Core FunctionsCore 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);
2004, Edgard Jamhour
Estrutura de Endereços IPv6Estrutura 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 */
}
2004, Edgard Jamhour
Tradução de Nomes em EndereçosTraduçã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>
2004, Edgard Jamhour
Dual StackDual 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
2004, Edgard Jamhour
BIS – Bump in the StackBIS – 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 MapperTranslator
IPv6
REDE IPv6
gethostbyname
IPv4
HOST
2004, Edgard Jamhour
Exemplo 1: Cliente IPv4 e Servidor IPv6 Exemplo 1: Cliente IPv4 e Servidor IPv6
Dual Stack
192.168.0.13FFE::A:B:C:D
Aplicação IPv4
Aplicação IPv6
Single Stack
3FFE::1:2:3:4
3FFE:1:2:3:4www6.pucpr.brDNS
Rede IPv6
2004, Edgard Jamhour
Exemplo: Cliente IPv4 e Servidor IPv6 Exemplo: Cliente IPv4 e Servidor IPv6
Aplicação IPv4
Name Resolver
Address Mapper
1. www6.pucpr.br?
DNS2. 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
2004, Edgard Jamhour
Exemplo: Cliente IPv4 e Servidor IPv6Exemplo: 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
2004, Edgard Jamhour
Exemplo 2: Cliente IPv6 e Servidor IPv4 Exemplo 2: Cliente IPv6 e Servidor IPv4
Dual Stack
192.168.0.13FFE::12:34
Single Stack
3FFE:AB:CD
3FFE::12:34www4.pucpr.br
DNS
Rede IPv6
Aplicação IPv6
Aplicação IPv4
2004, Edgard Jamhour
Exemplo: Cliente IPv6 e Servidor IPv4Exemplo: 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
2004, Edgard Jamhour
BIA - Bump-In-The-APIBIA - 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
IPv6IPv4
TCP
Interface Sockets
2004, Edgard Jamhour
BIABIA
Aplicação IPv4
Function Mapper Address Mapper
3FFE::1:2:3:4 = 10.0.0.1
Mapping TableIPv6
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
2004, Edgard Jamhour
NAT-PT e NAPT-PTNAT-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)
2004, Edgard Jamhour
NAT-PTNAT-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
IPv4IPv6
Endereço de origem é o endereço do NAT
2004, Edgard Jamhour
NAT-PTNAT-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 payload200.1.2.3
3ffe::12:34::ffff:<200.1.2.3> payload 210.0.0.1 payload200.1.2.3
IPv4 Network
200.1.2.3
3ffe::12:34 = 210.0.0.1
2004, Edgard Jamhour
Bi-directional NAT-PTBi-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
2004, Edgard Jamhour
NAPT-PTNAPT-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
MapeamentoIPv6:PortaH - IPv4:PortaN
Pacote IPv4
PortaH
IPv6 IPv4
PortaN
Pacote IPv6
IPv6 HostNAT-PT
IPv4IPv6
2004, Edgard Jamhour
NAPT-PTNAPT-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
2004, Edgard Jamhour
NAPT-PT não é BidirecionalNAPT-PT não é Bidirecional
Endereço IP Público200.0.0.1
clientes
servidor
3FFE::a
Private IP:Port
3FFE::a :10243FFE::b :10243FFE::c :1025
3FFE::b
3FFE::c
request reply
1025
1026
1027
Public IP:Port
200.0.0.1 :1025200.0.0.1 :1026200.0.0.1 :10271024
1024
1025 IPv4
IPv4
2004, Edgard Jamhour
Proxy SOCKS64Proxy 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
2004, Edgard Jamhour
Socks64: Cenário 1Socks64: Cenário 1
• Cliente IPv4 e Servidor IPv6.
IPv4 Host Socks64 IPv6 Host
PORT
PORT PORT
PORT
Socks LIB
AplicaçãoIPv4
AplicaçãoIPv6Socket IPv4 Socket IPv6
IPv4 Packet IPv6 Packet
IPv4 IPv6
2004, Edgard Jamhour
Socks64: Cenário 2Socks64: 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
IPv6IPv4
2004, Edgard Jamhour
Técnicas de TunelamentoTé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 payloadDST IPv4
Tunnel Endpoints
payloadSRC IPv6 DST IPv6
TIPO
2004, Edgard Jamhour
ISATAPISATAP
• 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
2004, Edgard Jamhour
6to4 scheme
Tunelamento 6to4Tunelamento 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
2004, Edgard Jamhour
Endereços 6to4Endereços 6to4
• Classe de endereços especiais definidas para o tunelamento 6to4 (RFC 2529)
– 2002::/16
0 0000 0000 0010 V4ADDR001 SLA ID Interface ID
3 13 32 64
2002:
16
Site Address 80 bits
Interface externa do roteador que se conecta com a Internet.
2004, Edgard Jamhour
ExampleExample
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
2004, Edgard Jamhour
Roteadores 6to4 RelayRoteadores 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.
2004, Edgard Jamhour
O endereço Anycast mágicoO 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 6to4tunel
Rede Privada
Rede Privada
2004, Edgard Jamhour
ExemploExemplo
• 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
2004, Edgard Jamhour
6over4 Tunneling 6over4 Tunneling (Virtual Ethernet)(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 HostHost IPv6
IPv4 IPv6
IPv4 Net IPv6 Net
IPv6 Application
6over4
Router
IPv6 Application
Multicast IPv6
2004, Edgard Jamhour
Formato dos PacotesFormato 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 payloadDST IPv4
payloadSRC IPv6 DST IPv6
41
2004, Edgard Jamhour
Mapeamento de Endereços MulticastMapeamento 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>
2004, Edgard Jamhour
Mapeamento de EndereçosMapeamento 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.
2004, Edgard Jamhour
ConclusãoConclusã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.