La descarga de la conexión mediante dispositivo móvil permite que los dispositivos ahorren energía y mejoren el rendimiento transfiriendo el tráfico de conexión mediante dispositivo móvil (a través de USB o Wi-Fi) al hardware. El tráfico de conexión mediante dispositivo móvil se descarga proporcionando una ruta directa entre el módem y los periféricos, sin pasar por el procesador de la app.
Especificaciones
A partir de Android 8.1, los dispositivos pueden usar la descarga de conexión para transferir el reenvío de IPv4, IPv6 o IPv4 + IPv6 al hardware.
La función de descarga no necesita descargar todos los paquetes. El framework es capaz de controlar cualquier paquete en software. Los paquetes de control suelen procesarse en software. Debido a que los puertos IPv4 se comparten entre el tráfico con cable y el tráfico del dispositivo, los paquetes de configuración o eliminación de sesiones IPv4 (por ejemplo, SYN/SYN+ACK, FIN) deben procesarse en software para que el kernel pueda construir el estado del flujo. El framework proporciona el plano de control y las máquinas de estado. También proporciona al hardware información sobre las interfaces o los prefijos upstream y downstream.
En el caso de IPv4, el hardware permite que los paquetes de configuración de la sesión de traducción de direcciones de red (NAT) IPv4 lleguen a la CPU. El kernel crea entradas de NAT, y la implementación de HAL observa las entradas de los descriptores de archivos proporcionados por el framework y controla estos flujos en el hardware. Esto significa que la implementación de HAL no requiere CAP_NET_*
porque el HAL abre sockets NF_NETLINK_CONNTRACK
desde el framework. De forma periódica, el hardware envía actualizaciones de estado de NAT para los flujos activos al framework, que actualiza las entradas de estado de seguimiento de conexión del kernel correspondientes.
Para IPv6, el framework programa una lista de prefijos de destino IPv6 a los que no se debe descargar el tráfico. Todos los demás paquetes vinculados se pueden descargar.
Para el registro del uso de datos, las encuestas de uso de datos de NetworkStatsService
hacen que el framework solicite estadísticas de tráfico al hardware. El framework también comunica los límites de uso de datos al hardware a través de HAL.
Requisitos de hardware
Para implementar la descarga de la conexión compartida, el hardware debe ser capaz de reenviar paquetes de IP entre el módem y Wi-Fi/USB sin enviar el tráfico a través del procesador principal.
Implementación
Para habilitar la función de descarga de conexión compartida, debes implementar los siguientes dos HAL: un HAL de configuración (IOffloadConfig
) y un HAL de control (IOffloadControl
).
HAL de configuración: IOffloadConfig
El HAL de IOffloadConfig
inicia la implementación de la descarga de conexión compartida. El framework proporciona a la implementación de HAL con sockets NF_NETLINK_CONNTRACK
preconectados que la implementación puede usar para observar los flujos de IPv4. Solo se deben acelerar los flujos reenviados.
Control de HAL: IOffloadControl
El HAL de IOffloadControl
controla la implementación de la descarga. Se deben implementar los siguientes métodos:
- Iniciar o detener el hardware de descarga: Usa
initOffload/stopOffload
y exime las direcciones IP locales o de otras redes de la descarga consetLocalPrefixes
. - Establece la interfaz ascendente, la dirección IPv4 y las puertas de enlace IPv6: Usa
setUpstreamParameters
y configura los rangos de direcciones IP descendentes conaddDownstream/removeDownstream
. - Contabilización del uso de datos: Usa
getForwardedStats/setDataLimit
.
El HAL de tu proveedor también debe enviar devoluciones de llamada a través de la interfaz ITetheringOffloadCallback
, que informa al framework lo siguiente:
- Eventos asíncronos, como el inicio y la detención de la descarga (OffloadCallbackEvent)
- Actualizaciones de tiempo de espera de NAT, que se deben enviar periódicamente para indicar que un flujo IPv4 específico contiene tráfico y que el kernel no debe cerrarlo
Validación
Para validar la implementación de la descarga mediante dispositivo móvil, usa pruebas manuales o automatizadas para verificar que la conexión mediante dispositivo móvil y el hotspot de Wi-Fi funcionen como se espera. El Conjunto de pruebas de proveedores (VTS) contiene pruebas para los HAL de descarga de conexión compartida.