Post on 03-Oct-2018
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 1
www.6sos.org
Porte de aplicaciones y servicios a IPv6Eva M. Castro eva@gsyc.escet.urjc.esGrupo de Sistemas y Comunicaciones (GSyC)Universidad Rey Juan Carlos (URJC)
Este proyecto ha sidocofinanciado por PROFIT
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 2
www.6sos.org
Índice
• Arquitectura de transición- Red- Nodos finales - Aplicaciones
• Evolución de aplicaciones• Escenarios de transición de aplicaciones• Dependencias en el código fuente• Conclusiones
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 3
www.6sos.org • Red• Nodos finales• Aplicaciones
Arquitectura de transición
RedEncaminamiento/Direccionamiento
IP
TCP/UDP
Nivel enlace
AplApl
IP
TCP/UDP
Nivel enlace
AplApl
Nodo final
Aplicación
Nodofinal
Aplicación
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 4
www.6sos.org
Arquitectura de transición
RedEncaminamiento/Direccionamiento
IP
TCP/UDP
Nivel enlace
AplApl
IP
TCP/UDP
Nivel enlace
AplApl
Nodo final
Aplicación
Nodofinal
Aplicación
Instalar mecanismos de transición
• Red• Nodos finales• Aplicaciones
• Red sólo IPv4• Red sólo IPv6• Red dual• Red heterogénea
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 5
www.6sos.org
Arquitectura de transición• Red• Nodos finales• Aplicaciones
RedEncaminamiento/Direccionamiento
IP
TCP/UDP
Nivel enlace
AplApl
IP
TCP/UDP
Nivel enlace
AplApl
Nodo final
Aplicación
Nodofinal
Aplicación
Modificar pila IP
Modificar pila IP
• Nodo sólo IPv4• Nodo sólo IPv6• Nodo con doble pila
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 6
www.6sos.org
Arquitectura de transición• Red• Nodos finales• Aplicaciones
RedEncaminamiento/Direccionamiento
IP
TCP/UDP
Nivel enlace
AplApl
IP
TCP/UDP
Nivel enlace
AplApl
Nodo final
Aplicación
Nodofinal
AplicaciónModificar código fuente
Modificar código fuente
• Aplicación sólo IPv4• Aplicación sólo IPv6• Aplicación dual
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 7
www.6sos.org
Índice
• Arquitectura de transición• Evolución de aplicaciones
1. De aplicaciones IPv4 a aplicaciones IPv62. De aplicaciones IPv4 a aplicaciones duales3. Transición gradual
• Escenarios de transición de aplicaciones• Dependencias en el código fuente• Conclusiones
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 8
www.6sos.org
1. De aplicaciones v4 a aplicaciones IPv6
Apv4Apv4
Apv6Apv6
IPv4
TCP/UDP
Nivel enlace
IPv6
VENTAJAS:• Fácil.• En período corto de tiempo
PROBLEMAS:• El usuario selecciona entre aplicaciones, apv4 ó apv6.• Mantenimiento del código fuente
Apv6Apv6Apv4Apv4
Sustitución de las Sustitución de las llamadas y estructuras llamadas y estructuras de IPv4 por las de IPv6de IPv4 por las de IPv6
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 9
www.6sos.org
2. De aplicaciones IPv4 a aplicaciones duales
Apv4Apv4
ApdualAp
dual
IPv4
TCP/UDP
Nivel enlace
IPv6
VENTAJAS:• Una única aplicación• Mantenimiento código fuente
PROBLEMAS:• Muchos cambios, más tiempo
ApdualApdual
Añadir Añadir soporte IPv6soporte IPv6
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 10
www.6sos.org
3. Transición gradual
Apv4Apv4
ApdualApdual
Apv6Apv6Sustitución de las Sustitución de las llamadas y estructuras llamadas y estructuras de IPv4 por las de IPv6de IPv4 por las de IPv6
Añadir Añadir soporte IPv4soporte IPv4VENTAJAS:
• Soporte IPv6 en un breve período de tiempo • Una única aplicación• Mantenimiento código fuente
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 11
www.6sos.org
Índice
• Arquitectura de transición• Evolución de aplicaciones• Escenarios de transición de aplicaciones
1. Aplicaciones IPv4 en nodos duales2. Aplicaciones IPv6 en nodos duales3. Aplicaciones duales en nodos duales4. Aplicaciones duales en nodos sólo IPv4
• Dependencias en el código fuente• Conclusiones
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 12
www.6sos.org
1. Aplicaciones IPv4 en nodos duales
• Dependencias en el código fuente con IPv4.• Intercambian paquetes IPv4.• Para su funcionamiento en redes IPv6:
- Portar el código a IPv6- Si no es posible, utilizar mecanismos de transición. Las
aplicaciones utilizan IPv4 pero se intercambian paquetes IPv6: § BIA (Bump In the API)§ BIS (Bump In the Stack)
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 13
www.6sos.org
Red IPv6
API de transporteAPI de transporte
BISBISIPv4
TCP/UDP
Nivel de enlace
API de transporteAPI de transporte
BIABIA
IPv4
TCP/UDP
Nivel de enlace
IPv6
Apv4Apv4 Apv4Apv4
BIS/BIA
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 14
www.6sos.org
2. Aplicaciones IPv6 en nodos duales
a.b.c.da.b.c.d ::::FFFF:a.b.c.dFFFF:a.b.c.d
Dirección IPv4 IPv4-mapped IPv6
• Se han sustituido las estructuras y funciones de IPv4 por las de IPv6. Dependencias en el código fuente con IPv6
• Intercambian de paquetes IPv6.• Para su funcionamiento en redes IPv4:
- Portar a aplicaciones duales - Mantener 2 aplicaciones: ping4 y ping6 o- Utilizar direcciones IPv6 a partir de las direcciones IPv4, IPv4-mapped
IPv6 addresses, no soportadas en todos las implementaciones.
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 15
www.6sos.org
Aplicación servidor IPv6 en nodo dual
TCP / UDP
Nivel enlace
IPv4
TCP / UDP
IPv4 IPv6
Dirección IPv4-mapped IPv6 ::FFFF:a.b.c.d
Dirección IPv6x:x:x:x:x:x:x:x
Cliente IPv4Cliente IPv4
TCP / UDP
IPv6
Cliente IPv6Cliente IPv6 Servidor IPv6escucha en 0::0
Servidor IPv6escucha en 0::0
Nivel enlace
IPv4
Nivel enlace
IPv6
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 16
www.6sos.org
Aplicación cliente IPv6 en nodo dual
TCP / UDP
IPv4 IPv6
Dirección IPv4-mapped IPv6 ::FFFF:a.b.c.d
Dirección IPv6x:x:x:x:x:x:x:x
Cliente IPv6Cliente IPv6
Nivel enlace
TCP / UDP
IPv6
Servidor IPv6Servidor IPv6
Nivel enlace
IPv6
TCP / UDP
Nivel enlace
IPv4
Servidor IPv4Servidor IPv4
IPv4
Dirección IPv4a.b.c.d
Dirección IPv6x:x:x:x:x:x:x:x
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 17
www.6sos.org
3. Aplicaciones duales en nodos duales
• Aplicaciones válidas para redes IPv4 e IPv6:
- Implementación de aplicaciones cliente:§ Resolver nombre de máquina del servidor a las posibles
direcciones IP. Intentar conectar primero usando IPv6 y si fallaprobar con IPv4.
- Implementaciones de aplicaciones servidor:1. Mantener conexiones diferentes de forma explícita para IPv4 e
IPv6, o2. Desarrollar una aplicación servidor IPv6 y confiar en las
direcciones IPv4-mapped IPv6 para los clientes IPv4.
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 18
www.6sos.org
4. Aplicaciones duales en nodos sólo IPv4
• Las aplicaciones duales deberían funcionar en los nodos sólo IPv4 para evitar tener varias versiones de la misma aplicación.
REQUISITO• Desarrollar el código fuente para que nodos que
no tengan soporte del protocolo IPv6 puedan ejecutar dichas aplicaciones.
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 19
www.6sos.org
Índice
• Arquitectura de transición• Evolución de aplicaciones• Escenarios de transición de aplicaciones• Dependencias en el código fuente
1. Formato de presentación de las direcciones IP2. Resolución de nombres3. API de la capa de transporte4. Otras dependencias específicas
• Conclusiones
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 20
www.6sos.org
1. Formato de presentación de direcciones IP
• El formato de presentación es una cadena que contiene la dirección IP. Diferentes en IPv4 e IPv6:
§ IPv4: “a.b.c.d”§ IPv6: “x:x:x:x:x:x:x:x”
• El formato de presentación en IPv6 necesita más memoria.
• Los analizadores sintácticos de direcciones deben ser revisados para adecuarse al nuevo formato.
• Ambigüedad con el carácter “:” en URLs (RFC 2732): - http://[DirecciónIPv6]:puerto
• RECOMENDACIÓN:- Utilizar FQDN (Fully Qualified Domain Name)
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 21
www.6sos.org2. Resolución de nombres
• Tipos de resolución:- Directa:
§ a partir del nombre de la máquina obtener su dirección IP.- Inversa:
§ a partir de la dirección IP obtener el nombre de máquina.
• Utilizar FQDN.• Las consultas/respuestas de DNS se envían usando
IPv4/IPv6 independientemente del tipo de registros que se soliciten.
• RECOMENDACIÓN:- Usar las funciones de resolución independientes de
protocolo.
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 22
www.6sos.org
3. API de la capa de transporte
En el caso concreto del API de sockets existen las siguientes dependencias:
- Estructuras de datos para las direcciones IP:§ sockaddr_in, sockaddr_in6, sockaddr_storage
- Funciones del API de comunicaciones:§ socket(), bind(), connect(), read()/write() …
- Funciones de conversión de direcciones:§ entre el formato de presentación y las estructuras de datos de
direcciones.- Opciones de configuración de red.
• RECOMENDACIÓN:- Desarrollar aplicaciones independientes de la versión IP
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 23
www.6sos.org
Estructuras de datos
Family
Data
FamilyPort Number
IPv4 Address(32 bits)
Unused
Port Number
Flow Info
IPv6 Address(128 bits)
Scope ID
FamilyAlign
Padding
Familysockaddr sockaddr_in sockaddr_in6 sockaddr_storage
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 24
www.6sos.org
4. Otras dependencias específicas
• Selección de la dirección IP:- Los nodos automáticamente resuelven el problema de la
selección de la dirección de origen, siguiendo una serie de reglas predefinidas (RFC 3484).
• Fragmentación a nivel de aplicación: - Cálculo del tamaño del fragmento para que no haya
degradación de prestaciones por fragmentación a nivel IP .
• Almacenamiento de direcciones IP: - No almacenar direcciones IP, pueden cambiar. Si es necesario
almacenar nombres y solicitar la resolución en el momento que senecesiten.
• RECOMENDACIÓN:- Revisar el código exhaustivamente
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 25
www.6sos.org
Índice
• Arquitectura de transición• Evolución de aplicaciones• Escenarios de transición de aplicaciones• Dependencias en el código fuente• Conclusiones
Porte de aplicaciones y servicios a IPv6 – Eva M. Castro 26
www.6sos.org
Conclusiones
• Desarrollar aplicaciones duales:- Válidas para cualquier tipo de nodo y para comunicarse con
cualquier aplicación utilizando IPv4 o IPv6.- Intentar la comunicación con cada una de las direcciones IP
obtenidas a través de las funciones de resolución.• Usar FQDN:
- Eliminar las direcciones IP cableadas del código.• No almacenar direcciones IP.• Las direcciones “IPv4-mapped IPv6 addresses” no
siempre funcionan:- No siempre están implementadas.- En algunos nodos están deshabilitadas por seguridad.