Atando

El módulo Anclaje 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 conexión (USB, punto de acceso Wi-Fi, Bluetooth, etc.) y sus dependencias (interacción con el derecho de conexión, 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 en todo el ecosistema de Android utilizar una única implementación de referencia estándar que brinda los siguientes beneficios.

  • Los usuarios finales obtienen una experiencia uniforme 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 transportistas y al mismo tiempo reducir los costos de las personalizaciones individuales (ya que no necesitan diferentes implementaciones de los mismos requisitos de diferentes maneras).

Descarga de enlace eBPF

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

A partir de Android 12, esta funcionalidad (incluido el código del programa eBPF) la proporciona completamente 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 el dispositivo conectado)
  • Carga y descarga IPv4 TCP/UDP (tráfico que fluye hacia/desde el dispositivo conectado)
  • descarga de eBPF

Esta característica está habilitada de forma predeterminada, los usuarios pueden anular la configuración de config_tether_enable_bpf_offload a falso por parte de RRO. Consulte Personalización para obtener más información.

Compatibilidad con IPv4 e IPv6

El módulo Tethering admite doble pila 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 las redes IPv6, el módulo adopta la configuración automática de direcciones sin estado (SLAAC) de IPv6 para la asignación de direcciones IP.

Límite del módulo

Para Android 12 y versiones posteriores, todos los archivos/carpetas en 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.google.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, el código ConnectivityService que implementa el componente central de la conectividad L3+ se agrega a Tethering APEX. 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 la personalización.

Pruebas

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