Atualizações no Android 13
Atualizar | Mais informações |
---|---|
Introdução ao CrossDevice | CrossDevice |
Introdução ao túnel dividido | Túnel dividido |
Visão geral
O módulo de tethering compartilha a conexão de Internet de um dispositivo Android com outros
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
o direito de tethering, IpServer
e offloadController
). Esse módulo é
atuável, ou seja, pode receber atualizações de funcionalidade fora do ciclo normal
de lançamento do Android.
O módulo de tethering permite que os OEMs em todo o ecossistema do Android usem uma única implementação de referência padrão que oferece os seguintes benefícios.
Os usuários finais têm uma experiência consistente em todos os dispositivos Android e correções para problemas de interoperabilidade com atualizações de módulos.
Os OEMs podem atender aos requisitos da operadora e reduzir os custos de personalizações individuais, já que não precisam de diferentes implementações dos mesmos requisitos de maneiras diferentes.
Túnel dividido
Para oferecer suporte a casos de uso de túnel 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 com muita largura de banda (por exemplo, YouTube, Netflix) ou
que são sensíveis à latência (por exemplo, Office 365) ignorem a VPN. Antes que o encapsulamento dividido estivesse disponível,
VpnService.Builder
permitia que o cliente VPN indicasse que apenas algumas sub-redes precisam ser roteadas para ele
(incluir rotas). Com o túnel dividido, é possível especificar o
inverso: rotear todo o tráfego para a VPN, exceto sub-redes específicas
(excluir rotas).
A assinatura da nova API de túnel dividido é:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
O CrossDevice, introduzido no Android 13, tem como objetivo oferecer tecnologias de comunicação entre dispositivos usando protocolos padrão. Ele oferece 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 com a implementação CrossDevice em vez de precisar usar a solução do Google.
- Implementação mais visível do protocolo. O módulo CrossDevice tem código aberto, oferecendo mais visibilidade dos detalhes da implementação e um melhor histórico 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 do CrossDevice
A plataforma CrossDevice depende do seguinte:
- Wi-Fi
- Bluetooth
- UWB
- modules-utils-preconditions
- Bibliotecas Proto
Opções de personalização do CrossDevice
Planejamos permitir que os OEMs personalizem a interface da meia folha usando a RRO. Não há planos para personalizar a funcionalidade.
Estratégia de teste CrossDevice
Planejamos adicionar testes do pacote de teste de compatibilidade do Android (CTS) para verificar a funcionalidade CrossDevice e o teste entre dispositivos no MTS.
Descarregar tethering eBPF
Para oferecer tethering de alta velocidade sem depender de offloads de hardware, o Android 11 oferece uma solução de tethering de offload de software chamada tethering de offload eBPF para download de IPv6 (tráfego fluindo para o dispositivo conectado).
No Android 12 e versões mais recentes, essa funcionalidade (incluindo o código do programa eBPF) é totalmente fornecida pelo módulo de tethering, que oferece suporte ao seguinte:
- Download IPv6 (tráfego fluindo para o dispositivo conectado)
- Upload IPv6 (tráfego que flui do dispositivo conectado)
- Upload e downstream TCP/UDP IPv4 (tráfego que flui de/para dispositivo vinculado)
- Descarregar eBPF
Esse recurso é ativado por padrão. Os usuários
podem substituir a configuração config_tether_enable_bpf_offload
para falso por 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, na sigla em inglês) e adota o protocolo de configuração de host dinâmico (DHCP, na sigla em inglês) para a atribuição de endereços IP.
Para redes IPv6, o módulo adota a configuração automática de endereços IP sem estado (SLAAC) IPv6 para a atribuição de endereços 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.
No 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 o 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 APEX de
tethering. O escopo do tethering é expandido para um módulo de conectividade.
Dependências de módulo
O módulo de tethering tem as seguintes dependências:
- Métodos de API pública e do sistema no servidor do sistema
- Interface estável de IPCs AIDL com o servidor do sistema
- HIDL
tetheroffload
(definido emhardware/interfaces/tetheroffload/
) - Servidor DHCP (parte do módulo de pilha de rede)
Personalização
O módulo de tethering não oferece suporte à personalização.
Teste
O conjunto de teste de compatibilidade do Android (CTS) verifica a funcionalidade do módulo de tethering.