Atando

Actualizaciones en Android 13

Actualizar Más información
Introducido CrossDevice Dispositivo cruzado
Se introdujo el túnel dividido Túnel dividido

Descripción general

El módulo Tethering comparte la conexión a Internet de un dispositivo Android con otros dispositivos cliente conectados, que pueden conectarse a dispositivos de anclaje a través de Wi-Fi, USB, Bluetooth o Ethernet. Este módulo incluye el componente de anclaje a red (USB, punto de acceso Wi-Fi, Bluetooth, etc.) y sus dependencias (interacción con el derecho de anclaje a red, IpServer y offloadController ). Este módulo es actualizable, lo que significa que puede recibir actualizaciones de funcionalidad fuera del ciclo de lanzamiento normal de Android.

El módulo Tethering permite a los OEM de todo el ecosistema de Android utilizar una implementación de referencia única y estándar que brinda los siguientes beneficios.

  • Los usuarios finales obtienen una experiencia consistente en todos los dispositivos Android y solucionan problemas de interoperabilidad a través de actualizaciones de módulos.

  • Los OEM pueden cumplir con los requisitos de los operadores y al mismo tiempo reducir los costos de personalizaciones individuales (ya que no necesitan diferentes implementaciones de los mismos requisitos de diferentes maneras).

Túnel dividido

Para admitir casos de uso de túnel dividido, se agrega una nueva API a Android 13 para especificar rutas de exclusión.

El túnel dividido se refiere a la configuración en la que cierto tráfico pasa por la VPN mientras que otro tráfico no. Un ejemplo común es cuando una organización desea que la navegación web general, las aplicaciones con mucho ancho de banda (por ejemplo, YouTube, Netflix) o sensibles a la latencia (por ejemplo, Office 365 ) eviten la VPN. Antes de que el túnel dividido estuviera disponible, VpnService.Builder permitía al cliente VPN indicar que solo algunas subredes debían enrutarse hacia él ( incluidas rutas). Con el túnel dividido, tiene la capacidad de especificar lo inverso: enrutar todo el tráfico a la VPN, excepto subredes específicas ( excluir rutas).

La firma de la nueva API de túnel dividido es:

public Builder excludeRoute(@NonNull IpPrefix prefix)

Dispositivo cruzado

CrossDevice, introducido en Android 13, tiene como objetivo proporcionar tecnologías de comunicación entre dispositivos utilizando protocolos estándar. Proporciona API y funciones para el descubrimiento de dispositivos, conexiones autenticadas y otras experiencias entre dispositivos.

Motivación entre dispositivos

  • Colaboración más estrecha con socios OEM. Los OEM pueden integrar su propio sistema de claves de cuenta con la implementación de CrossDevice en lugar de tener que utilizar la solución de Google.
  • Implementación más visible del protocolo. El módulo CrossDevice es de código abierto, lo que proporciona más visibilidad de los detalles de implementación y una mejor historia de privacidad para la implementación de tecnologías CrossDevice.

Límite del módulo CrossDevice

API entre dispositivos En packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
Servicios entre dispositivos En packages/modules/CrossDevice/service
  • NearbyService - API de escaneo

Formato de paquete CrossDevice

La función principal de este módulo está incluida en un paquete APEX. Los recursos están empaquetados en un APK.

Dependencias entre dispositivos

CrossDevice depende de lo siguiente:

  • Wifi
  • Bluetooth
  • UWB
  • módulos-utils-condiciones previas
  • Protobibliotecas

Opciones de personalización entre dispositivos

Planeamos permitir que los OEM personalicen la interfaz de usuario para media hoja a través de RRO. No hay ningún plan para personalizar la funcionalidad.

Estrategia de prueba entre dispositivos

Planeamos agregar pruebas de Android Compatibility Test Suite (CTS) para verificar la funcionalidad CrossDevice y pruebas entre dispositivos en MTS.

Descarga de anclaje eBPF

Para proporcionar conexión a red de alta velocidad sin responder a las descargas de hardware, Android 11 proporciona una solución de descarga de software de conexión a red llamada descarga de conexión a red eBPF para descarga de IPv6 (tráfico que fluye hacia el dispositivo conectado).

A partir de Android 12, esta funcionalidad (incluido el código del programa eBPF) la proporciona en su totalidad el módulo Tethering, que admite lo siguiente:

  • Descarga de IPv6 (tráfico que fluye hacia el dispositivo conectado)
  • Carga de IPv6 (tráfico que fluye desde un dispositivo conectado)
  • Carga y descarga de IPv4 TCP/UDP (tráfico que fluye hacia/desde el dispositivo conectado)
  • descarga de eBPF

Esta función está habilitada de forma predeterminada, los usuarios pueden anular la configuración config_tether_enable_bpf_offload a falsa mediante RRO. Consulte Personalización para obtener más información.

Soporte IPv4 e IPv6

El módulo Tethering admite pila dual IPv4 e IPv6.

  • Para redes IPv4, el módulo configura la traducción de direcciones de red (NAT) y adopta el protocolo de configuración dinámica de host (DHCP) para la asignación de direcciones IP.

  • Para redes IPv6, el módulo adopta la configuración automática de direcciones sin estado (SLAAC) IPv6 para la asignación de direcciones IP.

Límite del módulo

Para Android 12 y versiones posteriores, todos los archivos/carpetas de packages/modules/Connectivity están en el alcance del módulo Tethering.

Para Android 11 y versiones anteriores, el módulo Tethering tiene los siguientes archivos de Android 10 en packages/modules/Tethering .

  • frameworks/base/services/core/java/com/android/server/connectivity/Tethering.java
  • frameworks/base/services/core/java/com/android/server/connectivity/tethering/
  • frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
  • frameworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.java
  • frameworks/base/services/net/java/android/net/{netlink,dhcp}/*
  • frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.java
  • frameworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidl
  • frameworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.java
  • frameworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.java
  • frameworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.java
  • frameworks/base/core/java/android/os/INetworkManagementService.aidl
  • frameworks/base/core/java/android/bluetooth/BluetoothPan.java
  • frameworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
  • packages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.java
  • packages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java

Formato del módulo

El módulo Tethering ( com.android.tethering ) está en formato APEX y está disponible para dispositivos con Android 11 o superior.

Incluir servicio de conectividad

A partir de Android 12, se agrega al Tethering APEX el código ConnectivityService que implementa el componente central de la conectividad L3+. El alcance de Tethering se expande a un módulo de Conectividad.

Dependencias del módulo

El módulo Tethering tiene las siguientes dependencias:

  • Métodos API públicos y del sistema en el servidor del sistema.
  • Interfaz estable de AIDL IPC con el servidor del sistema
  • tetheroffload HIDL (definido en hardware/interfaces/tetheroffload/ )
  • Servidor DHCP (parte del módulo Network Stack)

Personalización

El módulo Tethering no admite personalización.

Pruebas

El conjunto de pruebas de compatibilidad de Android (CTS) verifica la funcionalidad del módulo Tethering.