Amarração

O módulo Tethering compartilha a conexão de internet de um dispositivo Android com outros dispositivos clientes conectados, que podem se conectar a dispositivos de tethering por Wi-Fi, USB, Bluetooth ou Ethernet. Este módulo inclui o componente de tethering (USB, ponto de acesso Wi-Fi, Bluetooth, etc.) e suas dependências (interação com direitos de tethering, IpServer e offloadController ). Este módulo é atualizável, o que significa que pode receber atualizações de funcionalidades fora do ciclo normal de lançamento do Android.

O módulo Tethering permite que os OEMs em todo o ecossistema Android usem uma única implementação de referência padrão que traz os seguintes benefícios.

  • Os usuários finais obtêm uma experiência consistente em dispositivos Android e correções para problemas de interoperabilidade por meio de atualizações de módulo.

  • Os OEMs podem atender aos requisitos da operadora e, ao mesmo tempo, reduzir os custos para personalizações individuais (já que não precisam de implementações diferentes dos mesmos requisitos de maneiras diferentes).

Descarregamento de tethering eBPF

Para fornecer tethering de alta velocidade sem responder em descarregamentos de hardware, o Android 11 fornece uma solução de descarregamento de software de tethering chamada eBPF tethering offload para download de IPv6 (tráfego fluindo para o dispositivo conectado).

A partir do Android 12, essa funcionalidade (incluindo o código do programa eBPF) é totalmente fornecida pelo módulo Tethering, que suporta o seguinte:

  • Download do IPv6 (tráfego fluindo para o dispositivo conectado)
  • Upload de IPv6 (tráfego fluindo do dispositivo conectado)
  • Upload TCP/UDP IPv4 e downstream (tráfego fluindo de/para dispositivo conectado)
  • descarga de eBPF

Esse recurso é habilitado por padrão, os usuários podem substituir a configuração config_tether_enable_bpf_offload para false pelo RRO. Consulte Personalização para obter mais informações.

Suporte IPv4 e IPv6

O módulo Tethering suporta pilha dupla IPv4 e IPv6.

  • Para redes IPv4, o módulo configura a tradução de endereço de rede (NAT) e adota o protocolo de configuração de host dinâmico (DHCP) para atribuição de endereço IP.

  • Para redes IPv6, o módulo adota a configuração automática de endereço sem estado IPv6 (SLAAC) para atribuição de endereço IP.

Limite do módulo

Para Android 12 e superior, todos os arquivos/pastas em packages/modules/Connectivity estão no escopo do módulo Tethering.

Para Android 11 e inferior, o módulo Tethering tem os seguintes arquivos do Android 10 em 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 do módulo

O módulo Tethering ( com.google.android.tethering ) está no formato APEX e está disponível para dispositivos com Android 11 ou superior.

Incluir serviço de conectividade

A partir do Android 12, o código ConnectivityService que implementa o componente central da conectividade L3+ é adicionado ao Tethering APEX. O escopo do Tethering se expande em um módulo de conectividade.

Dependências do módulo

O módulo Tethering possui as seguintes dependências:

  • Métodos de API pública e do sistema no servidor do sistema
  • Interface estável de AIDL IPCs com o servidor do sistema
  • tetheroffload HIDL (definido em hardware/interfaces/tetheroffload/ )
  • Servidor DHCP (parte do módulo Network Stack)

Costumização

O módulo Tethering não oferece suporte à personalização.

Teste

O Android Compatibility Test Suite (CTS) verifica a funcionalidade do módulo Tethering.