Atualizações no Android 13
Atualizar | Mais informações |
---|---|
Introdução do CrossDevice | CrossDevice |
Introdução do tunelamento dividido | Túnel dividido |
Visão geral
O módulo de 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. Esse módulo inclui o componente de tethering (USB, ponto de acesso Wi-Fi, Bluetooth etc.) e as dependências dele (interação com direito a tethering, IpServer
e offloadController
). Ele pode ser atualizado, ou seja, pode receber atualizações de funcionalidade fora do ciclo normal de versões do Android.
O módulo Tethering permite que 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 têm uma experiência consistente em dispositivos Android e correções para problemas de interoperabilidade com atualizações de módulos.
Os OEMs podem atender aos requisitos das operadoras e reduzir os custos de personalizações individuais, já que não precisam de implementações diferentes dos mesmos requisitos de maneiras diferentes.
Túnel dividido
Para oferecer suporte a casos de uso de tunelamento dividido, uma nova API foi adicionada ao Android 13 para especificar rotas de exclusão.
O túnel dividido se refere à configuração em que determinado tráfego passa pela VPN, enquanto outro não. Um exemplo comum é quando uma organização quer que a navegação geral na Web, aplicativos que consomem muita largura de banda (por exemplo, YouTube, Netflix) ou sensíveis à latência (por exemplo, Office 365) ignorem a VPN. Antes da disponibilidade do túnel dividido, o
VpnService.Builder
permitia que o cliente VPN indicasse que apenas algumas sub-redes deveriam ser encaminhadas para ele
(rotas de inclusão). Com o túnel dividido, é possível especificar o
inverso: rotear todo o tráfego para a VPN, exceto sub-redes específicas
(rotas de exclusão).
A assinatura da nova API de tunelamento dividido é:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
O CrossDevice, lançado no Android 13, tem como objetivo fornecer tecnologias de comunicação entre dispositivos usando protocolos padrão. Ela fornece APIs e recursos para descoberta de dispositivos, conexão autenticada e outras experiências entre dispositivos.
Motivação crossdevice
- Colaboração mais estreita com parceiros OEM. Os OEMs podem integrar o próprio sistema de chaves de conta à implementação do CrossDevice em vez de usar a solução do Google.
- Implementação mais visível do protocolo. O módulo CrossDevice é de código aberto, oferecendo mais visibilidade aos detalhes da implementação e uma melhor história de privacidade para a implementação de tecnologias CrossDevice.
Limite do módulo CrossDevice
APIs CrossDevice | Em packages/modules/CrossDevice/framework
|
Serviços entre dispositivos | Em packages/modules/CrossDevice/service
|
Formato do pacote CrossDevice
A função principal desse módulo está incluída em um pacote APEX. Os recursos são empacotados em um APK.
Dependências entre dispositivos
O CrossDevice depende do seguinte:
- Wi-Fi
- Bluetooth
- UWB
- modules-utils-preconditions
- Bibliotecas proto
Opções de personalização entre dispositivos
Planejamos permitir que os OEMs personalizem a interface do usuário para meia folha usando RRO. Não há planos para personalizar a funcionalidade.
Estratégia de teste entre dispositivos
Planejamos adicionar testes do Android Compatibility Test Suite (CTS) para verificar a funcionalidade entre dispositivos e testes entre dispositivos no MTS.
Descarregamento de tethering eBPF
Para oferecer tethering de alta velocidade sem depender de liberações de hardware, o Android 11 oferece uma solução de liberação de software de tethering chamada eBPF tethering offload para download de IPv6 (tráfego fluindo para o dispositivo conectado).
No Android 12, essa funcionalidade (incluindo o código do programa eBPF) é totalmente fornecida pelo módulo Tethering, que oferece suporte ao seguinte:
- Download de IPv6 (tráfego fluindo para o dispositivo conectado)
- Upload de IPv6 (tráfego de um dispositivo conectado)
- Upload e downstream de TCP/UDP IPv4 (tráfego que flui para/de um dispositivo conectado)
- Descarga de eBPF
Esse recurso é ativado por padrão, mas os usuários
podem substituir a configuração config_tether_enable_bpf_offload
por "false" usando o RRO.
Consulte Personalização para mais informações.
Suporte a IPv4 e IPv6
O módulo de tethering oferece suporte a pilha dupla IPv4 e IPv6.
Para redes IPv4, o módulo configura a conversão de endereços de rede (NAT) e adota o protocolo de configuração de host dinâmico (DHCP) para atribuição de endereços IP.
Para redes IPv6, o módulo adota a autoconfiguração de endereço sem estado IPv6 (SLAAC) para atribuição de endereço IP.
Limite do módulo
No Android 12 e versões mais recentes, todos os arquivos/pastas
em packages/modules/Connectivity
estão no escopo do módulo de tethering.
Para o Android 11 e versões anteriores, o módulo de 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 de tethering (com.android.tethering
) está no formato APEX e está
disponível para dispositivos com Android 11 ou versões mais recentes.
Incluir ConnectivityService
No Android 12, o código ConnectivityService
que
implementa o componente central da conectividade L3+ é adicionado ao Tethering
APEX. O escopo do tethering se expande para um módulo de conectividade.
Dependências do módulo
O módulo de tethering tem as seguintes dependências:
- Métodos de API públicos e do sistema no servidor do sistema
- As interfaces IPCs AIDL estáveis interagem com o servidor do sistema.
tetheroffload
HIDL (definido emhardware/interfaces/tetheroffload/
)- Servidor DHCP (parte do módulo de pilha de rede)
Personalização
O módulo de tethering não aceita personalização.
Teste
O Teste de compatibilidade do Android (CTS, na sigla em inglês) verifica a funcionalidade do módulo de tethering.