Atualizações no Android 13
Atualizar | Mais Informações |
---|---|
Introduzido CrossDevice | CrossDevice |
Introduzido o tunelamento dividido | Tunelamento dividido |
Visão geral
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 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 direito 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 OEMs em todo o ecossistema Android usem uma implementação de referência única e padrão que traz os seguintes benefícios.
Os usuários finais obtêm uma experiência consistente em dispositivos Android e corrigem problemas de interoperabilidade por meio de atualizações de módulos.
Os OEMs podem atender aos requisitos das transportadoras e, ao mesmo tempo, reduzir os custos de personalizações individuais (pois não precisam de implementações diferentes dos mesmos requisitos de maneiras diferentes).
Tunelamento 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 tunelamento dividido refere-se à configuração em que determinado tráfego passa pela VPN, enquanto outro não. Um exemplo comum é quando uma organização deseja que a navegação geral na Web, com uso intenso de largura de banda (por exemplo, YouTube, Netflix) ou aplicativos sensíveis à latência (por exemplo, Office 365 ) contornem a VPN. Antes que o túnel dividido estivesse disponível, VpnService.Builder
permitia que o cliente VPN indicasse que apenas algumas sub-redes deveriam ser roteadas para ele ( incluindo rotas). Com o tunelamento dividido, você pode 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
CrossDevice, introduzido no Android 13, tem como objetivo fornecer tecnologias de comunicação entre dispositivos usando protocolos padrão. Ele fornece APIs e recursos para descoberta de dispositivos, conexão autenticada e outras experiências entre dispositivos.
Motivação entre dispositivos
- Colaboração mais estreita com parceiros OEM. Os OEMs podem integrar seu próprio sistema de chave de conta com a implementação do CrossDevice em vez de precisar usar a solução do Google.
- Implementação mais visível do protocolo. O módulo CrossDevice é de código aberto, proporcionando mais visibilidade dos detalhes de implementação e melhor história de privacidade para implementação de tecnologias CrossDevice.
Limite do módulo CrossDevice
APIs entre dispositivos | Em packages/modules/CrossDevice/framework
|
Serviços entre dispositivos | Em packages/modules/CrossDevice/service
|
Formato de pacote CrossDevice
A principal função deste módulo está incluída em um pacote APEX. Os recursos são empacotados em um APK.
Dependências entre dispositivos
CrossDevice depende do seguinte:
- Wi-fi
- Bluetooth
- UWB
- módulos-utils-pré-condições
- Protobibliotecas
Opções de personalização entre dispositivos
Planejamos permitir que os OEMs personalizem a interface do usuário para meia folha por meio do RRO. Não há planos para personalizar a funcionalidade.
Estratégia de teste CrossDevice
Planejamos adicionar testes do Android Compatibility Test Suite (CTS) para verificar a funcionalidade CrossDevice e testes entre dispositivos no MTS.
descarregamento de tethering eBPF
Para fornecer tethering de alta velocidade sem responder a descarregamentos de hardware, o Android 11 fornece uma solução de descarregamento de software de tethering chamada eBPF tethering offload para download IPv6 (tráfego fluindo para o dispositivo conectado).
A partir do Android 12, essa funcionalidade (incluindo o código do programa eBPF) é inteiramente fornecida pelo módulo Tethering, que oferece suporte ao seguinte:
- Download IPv6 (tráfego fluindo para dispositivo conectado)
- Upload IPv6 (tráfego fluindo de dispositivo conectado)
- Upload e downstream IPv4 TCP/UDP (tráfego fluindo de/para dispositivo conectado)
- descarregamento de eBPF
Este 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ços de rede (NAT) e adota o protocolo de configuração dinâmica de host (DHCP) para atribuição de endereços IP.
Para redes IPv6, o módulo adota 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 versões anteriores, 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.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 para um módulo de Conectividade.
Dependências do módulo
O módulo Tethering tem as seguintes dependências:
- Métodos API públicos e do sistema no servidor do sistema
- Interface AIDL IPCs estável com o servidor do sistema
-
tetheroffload
HIDL (definido emhardware/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.