Aggiornamenti di Android 13
Aggiorna | Ulteriori informazioni |
---|---|
È stato introdotto CrossDevice | CrossDevice |
È stato introdotto lo split tunneling | Split tunneling |
Panoramica
Il modulo Tethering condivide la connessione a internet di un dispositivo Android con altri
dispositivi client connessi, che possono connettersi ai dispositivi di tethering tramite Wi-Fi,
USB, Bluetooth o Ethernet. Questo modulo include il componente di tethering (USB,
punto di accesso Wi-Fi, Bluetooth e così via) e le relative dipendenze (interazione con
il diritto di tethering, IpServer
e offloadController
). Questo modulo è
aggiornabile, il che significa che può ricevere aggiornamenti delle funzionalità al di fuori del normale
ciclo di rilascio di Android.
Il modulo Tethering consente agli OEM di tutto l'ecosistema Android di utilizzare un'unica implementazione di riferimento standard che offre i seguenti vantaggi.
Gli utenti finali ottengono un'esperienza coerente su tutti i dispositivi Android e correzioni ai problemi di interoperabilità tramite gli aggiornamenti dei moduli.
Gli OEM possono soddisfare i requisiti degli operatori riducendo al contempo i costi per le personalizzazioni individuali (in quanto non hanno bisogno di implementazioni diverse degli stessi requisiti in modi diversi).
Split tunneling
Per supportare i casi d'uso dello split tunneling, in Android 13 è stata aggiunta una nuova API per specificare le route da escludere.
Lo split tunneling si riferisce alla configurazione in cui parte del traffico passa attraverso la VPN, mentre un'altra parte no. Un esempio comune è quello in cui un'organizzazione
vuole che la navigazione web generale, le applicazioni che consumano molta larghezza di banda (ad esempio YouTube, Netflix) o
quelle sensibili alla latenza (ad esempio Office 365) bypassino la VPN. Prima che fosse disponibile lo split tunneling,VpnService.Builder
consentiva al client VPN di indicare che solo alcune subnet dovevano essere indirizzate (route include). Con lo split tunneling, puoi specificare l'inverso: instradare tutto il traffico alla VPN, ad eccezione di subnet specifiche (route exclude).
La firma della nuova API di split tunneling è:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
CrossDevice, introdotto in Android 13, mira a fornire tecnologie di comunicazione cross-device utilizzando protocolli standard. Fornisce API e funzionalità per il rilevamento di dispositivi, la connessione autenticata e altre esperienze cross-device.
CrossDevice motivation
- Maggiore collaborazione con i partner OEM. Gli OEM possono integrare il proprio sistema di chiavi dell'account con l'implementazione di Cross-Device senza dover utilizzare la soluzione di Google.
- Implementazione più visibile del protocollo. Il modulo CrossDevice è open source, il che offre maggiore visibilità sui dettagli di implementazione e una migliore storia di privacy per l'implementazione delle tecnologie CrossDevice.
CrossDevice module boundary
API CrossDevice | In packages/modules/CrossDevice/framework
|
Servizi cross-device | In packages/modules/CrossDevice/service
|
Formato del pacchetto CrossDevice
La funzione principale di questo modulo è inclusa in un pacchetto APEX. Le risorse sono incluse in un APK.
Dipendenze cross-device
CrossDevice dipende da quanto segue:
- Wi-Fi
- Bluetooth
- UWB
- modules-utils-preconditions
- Librerie Proto
Opzioni di personalizzazione cross-device
Abbiamo in programma di consentire agli OEM di personalizzare l'interfaccia utente per il mezzo foglio tramite RRO. Non è previsto di personalizzare la funzionalità.
Strategia di test cross-device
Prevediamo di aggiungere test della suite di test di compatibilità Android (CTS) per verificare la funzionalità cross-device e i test cross-device in MTS.
eBPF tethering offload
Per fornire il tethering ad alta velocità senza fare affidamento sugli scaricamenti hardware, Android 11 offre una soluzione di scaricamento software di tethering chiamata scaricamento del tethering eBPF per il download IPv6 (traffico che scorre verso il dispositivo connesso).
A partire da Android 12, questa funzionalità (incluso il codice del programma eBPF) è fornita interamente dal modulo Tethering, che supporta quanto segue:
- Download IPv6 (traffico verso il dispositivo tethering)
- Caricamento IPv6 (traffico proveniente dal dispositivo connesso)
- Caricamento e download TCP/UDP IPv4 (traffico in entrata/uscita dal dispositivo tethering)
- Offload eBPF
Questa funzionalità è attivata per impostazione predefinita, gli utenti
possono ignorare la configurazione di config_tether_enable_bpf_offload
impostandola su false tramite RRO.
Per saperne di più, consulta la sezione Personalizzazione.
Supporto di IPv4 e IPv6
Il modulo Tethering supporta lo stack doppio IPv4 e IPv6.
Per le reti IPv4, il modulo configura la Network Address Translation (NAT) e adotta il Dynamic Host Configuration Protocol (DHCP) per l'assegnazione degli indirizzi IP.
Per le reti IPv6, il modulo adotta la configurazione automatica degli indirizzi stateless IPv6 (SLAAC) per l'assegnazione degli indirizzi IP.
Confine del modulo
Per Android 12 e versioni successive, tutti i file/le cartelle
in packages/modules/Connectivity
rientrano nell'ambito del modulo Tethering.
Per Android 11 e versioni precedenti, il modulo Tethering contiene
i seguenti file di Android 10 in 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 modulo
Il modulo Tethering (com.android.tethering
) è in formato APEX ed è
disponibile per i dispositivi con Android 11 o versioni successive.
Includi ConnectivityService
A partire da Android 12, il codice ConnectivityService
che implementa il componente centrale della connettività L3+ viene aggiunto all'APEX Tethering. L'ambito del tethering si espande in un modulo di connettività.
Dipendenze del modulo
Il modulo Tethering presenta le seguenti dipendenze:
- Metodi API pubblici e di sistema nel server di sistema
- Interfaccia IPC AIDL stabile con il server di sistema
tetheroffload
HIDL (definito inhardware/interfaces/tetheroffload/
)- Server DHCP (parte del modulo Network Stack)
Personalizzazione
Il modulo Tethering non supporta la personalizzazione.
Test
La suite di test di compatibilità Android (CTS) verifica la funzionalità del modulo Tethering.