La descarga de anclaje permite que los dispositivos ahorren energía y mejoren el rendimiento al descargar el tráfico de anclaje (a través de USB, Wi-Fi) al hardware. El tráfico de anclaje se descarga proporcionando una ruta directa entre el módem y los periféricos, sin pasar por el procesador de la aplicación.
Especificaciones
A partir de Android 8.1, los dispositivos pueden usar la descarga de anclaje para descargar el reenvío de IPv4, IPv6 o IPv4+IPv6 al hardware.
La función de descarga no necesita descargar todos los paquetes. El marco es capaz de manejar cualquier paquete en el software. Los paquetes de control normalmente se procesan en software. Debido a que los puertos IPv4 se comparten entre el tráfico conectado y el tráfico de dispositivos, los paquetes de configuración/desconexión de sesión IPv4 (por ejemplo, SYN/SYN+ACK, FIN) deben procesarse en software para que el kernel pueda construir el estado de flujo. El marco proporciona el plano de control y las máquinas de estado. También proporciona al hardware información sobre interfaces/prefijos ascendentes y descendentes.
Para IPv4, el hardware permite que los paquetes de configuración de sesión de traducción de direcciones de red (NAT) de IPv4 lleguen a la CPU. El kernel crea entradas NAT y la implementación de HAL observa las entradas de los descriptores de archivos proporcionados por el marco y maneja estos flujos en el hardware. Esto significa que la implementación de HAL no requiere CAP_NET_*
porque HAL se abre en los sockets NF_NETLINK_CONNTRACK
del marco. Periódicamente, el hardware envía actualizaciones de estado de NAT para los flujos actualmente activos al marco, que actualiza las entradas de estado de seguimiento de conexión de kernel correspondientes.
Para IPv6, el marco programa una lista de prefijos de destino de IPv6 a los que no se debe descargar el tráfico. Todos los demás paquetes conectados se pueden descargar.
Para la contabilidad del uso de datos, las encuestas de uso de datos de NetworkStatsService
hacen que el marco solicite estadísticas de tráfico del hardware. El marco 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 anclaje, su hardware debe ser capaz de reenviar paquetes 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 anclaje, debe implementar los dos siguientes: una HAL de configuración ( IOffloadConfig
) y una HAL de control ( IOffloadControl
).
Configuración HAL: IOffloadConfig
IOffloadConfig
HAL inicia la implementación de descarga de conexión. El marco proporciona la implementación de HAL con sockets NF_NETLINK_CONNTRACK
que la implementación puede usar para observar los flujos de IPv4. Solo se deben acelerar los flujos reenviados.
Controlar HAL: IOffloadControl
El IOffloadControl
HAL controla la implementación de descarga. Se deben implementar los siguientes métodos:
- Iniciar/detener la descarga de hardware: use
initOffload/stopOffload
y exima las direcciones IP locales u otras redes de la descarga consetLocalPrefixes
. - Configure la interfaz ascendente, la dirección IPv4 y las puertas de enlace IPv6: use
setUpstreamParameters
y configure rangos de direcciones IP descendentes conaddDownstream/removeDownstream
. - Contabilidad del uso de datos: use
getForwardedStats/setDataLimit
.
Su proveedor HAL también debe enviar devoluciones de llamada a través de la interfaz ITetheringOffloadCallback
, que informa al marco de:
- Eventos asincrónicos, como el inicio y la detención de la descarga (OffloadCallbackEvent)
- Actualizaciones de tiempo de espera de NAT, que deben enviarse periódicamente para indicar que un flujo IPv4 específico contiene tráfico y el kernel no debe cerrarlo
Validación
Para validar su implementación de descarga de anclaje, use pruebas manuales o automatizadas para verificar que el anclaje y el punto de acceso Wi-Fi funcionen como se esperaba. Vendor Test Suite (VTS) contiene pruebas para las HAL de descarga de anclaje.
,La descarga de anclaje permite que los dispositivos ahorren energía y mejoren el rendimiento al descargar el tráfico de anclaje (a través de USB, Wi-Fi) al hardware. El tráfico de anclaje se descarga proporcionando una ruta directa entre el módem y los periféricos, sin pasar por el procesador de la aplicación.
Especificaciones
A partir de Android 8.1, los dispositivos pueden usar la descarga de anclaje para descargar el reenvío de IPv4, IPv6 o IPv4+IPv6 al hardware.
La función de descarga no necesita descargar todos los paquetes. El marco es capaz de manejar cualquier paquete en el software. Los paquetes de control normalmente se procesan en software. Debido a que los puertos IPv4 se comparten entre el tráfico conectado y el tráfico de dispositivos, los paquetes de configuración/desconexión de sesión IPv4 (por ejemplo, SYN/SYN+ACK, FIN) deben procesarse en software para que el kernel pueda construir el estado de flujo. El marco proporciona el plano de control y las máquinas de estado. También proporciona al hardware información sobre interfaces/prefijos ascendentes y descendentes.
Para IPv4, el hardware permite que los paquetes de configuración de sesión de traducción de direcciones de red (NAT) de IPv4 lleguen a la CPU. El kernel crea entradas NAT y la implementación de HAL observa las entradas de los descriptores de archivos proporcionados por el marco y maneja estos flujos en el hardware. Esto significa que la implementación de HAL no requiere CAP_NET_*
porque HAL se abre en los sockets NF_NETLINK_CONNTRACK
del marco. Periódicamente, el hardware envía actualizaciones de estado de NAT para los flujos actualmente activos al marco, que actualiza las entradas de estado de seguimiento de conexión de kernel correspondientes.
Para IPv6, el marco programa una lista de prefijos de destino de IPv6 a los que no se debe descargar el tráfico. Todos los demás paquetes conectados se pueden descargar.
Para la contabilidad del uso de datos, las encuestas de uso de datos de NetworkStatsService
hacen que el marco solicite estadísticas de tráfico del hardware. El marco 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 anclaje, su hardware debe ser capaz de reenviar paquetes 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 anclaje, debe implementar los dos siguientes: una HAL de configuración ( IOffloadConfig
) y una HAL de control ( IOffloadControl
).
Configuración HAL: IOffloadConfig
IOffloadConfig
HAL inicia la implementación de descarga de conexión. El marco proporciona la implementación de HAL con sockets NF_NETLINK_CONNTRACK
que la implementación puede usar para observar los flujos de IPv4. Solo se deben acelerar los flujos reenviados.
Controlar HAL: IOffloadControl
El IOffloadControl
HAL controla la implementación de descarga. Se deben implementar los siguientes métodos:
- Iniciar/detener la descarga de hardware: use
initOffload/stopOffload
y exima las direcciones IP locales u otras redes de la descarga consetLocalPrefixes
. - Configure la interfaz ascendente, la dirección IPv4 y las puertas de enlace IPv6: use
setUpstreamParameters
y configure rangos de direcciones IP descendentes conaddDownstream/removeDownstream
. - Contabilidad del uso de datos: use
getForwardedStats/setDataLimit
.
Su proveedor HAL también debe enviar devoluciones de llamada a través de la interfaz ITetheringOffloadCallback
, que informa al marco de:
- Eventos asincrónicos, como el inicio y la detención de la descarga (OffloadCallbackEvent)
- Actualizaciones de tiempo de espera de NAT, que deben enviarse periódicamente para indicar que un flujo IPv4 específico contiene tráfico y el kernel no debe cerrarlo
Validación
Para validar su implementación de descarga de anclaje, use pruebas manuales o automatizadas para verificar que el anclaje y el punto de acceso Wi-Fi funcionen como se esperaba. Vendor Test Suite (VTS) contiene pruebas para las HAL de descarga de anclaje.