Aggiornamenti in Android 13
| Aggiorna | Ulteriori informazioni |
|---|---|
| Abbiamo introdotto CrossDevice | CrossDevice |
| Abbiamo introdotto il tunneling suddiviso | Tunneling suddiviso |
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 usufruiscono di un'esperienza coerente su tutti i dispositivi Android e di correzioni dei problemi di interoperabilità tramite gli aggiornamenti dei moduli.
Gli OEM possono soddisfare i requisiti degli operatori riducendo al contempo i costi per le singole personalizzazioni (in quanto non hanno bisogno di implementazioni diverse degli stessi requisiti in modi diversi).
Tunneling suddiviso
Per supportare i casi d'uso del tunneling suddiviso, in Android 13 è stata aggiunta una nuova API per specificare le route di esclusione.
Il tunneling suddiviso si riferisce alla configurazione in cui alcuni tipi di traffico passano attraverso la VPN, mentre altri no. Un esempio comune è quando 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) ignorino la VPN. Prima che il tunneling suddiviso fosse disponibile,
VpnService.Builder
consentiva al client VPN di indicare che solo alcune subnet dovevano essere instradate
(includere le route). Con il tunneling suddiviso, hai la possibilità di specificare l'inverso: instradare tutto il traffico alla VPN, ad eccezione di subnet specifiche (escludere le route).
La firma della nuova API di tunneling suddiviso è:
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 dei dispositivi, la connessione autenticata e altre esperienze cross-device.
Motivazione di CrossDevice
- Collaborazione più stretta con i partner OEM. Gli OEM possono integrare il proprio sistema di chiavi dell'account con l'implementazione di CrossDevice anziché dover utilizzare la soluzione di Google.
- Implementazione più visibile del protocollo. Il modulo CrossDevice è open source, il che offre maggiore visibilità sui dettagli dell'implementazione e una migliore privacy per l'implementazione delle tecnologie CrossDevice.
Limite del modulo CrossDevice
| API CrossDevice | In packages/modules/CrossDevice/framework
|
| Servizi CrossDevice | In packages/modules/CrossDevice/service
|
Formato del pacchetto CrossDevice
La funzione principale di questo modulo è inclusa in un pacchetto APEX. Le risorse sono pacchettizzate in un APK.
Dipendenze di CrossDevice
CrossDevice dipende da quanto segue:
- Wi-Fi
- Bluetooth
- UWB
- modules-utils-preconditions
- Librerie Proto
Opzioni di personalizzazione di CrossDevice
Abbiamo in programma di consentire agli OEM di personalizzare l'interfaccia utente per il foglio parziale tramite RRO. Non è previsto di personalizzare la funzionalità.
Strategia di test di CrossDevice
Abbiamo in programma di aggiungere test della suite di test di compatibilità Android (CTS) per verificare la funzionalità CrossDevice e test tra dispositivi in MTS.
Offload del tethering eBPF
Per fornire il tethering ad alta velocità senza fare affidamento sugli offload hardware, Android 11 fornisce una soluzione di offload software di tethering chiamata offload del tethering eBPF per il download IPv6 (traffico in entrata al dispositivo di tethering).
A partire da Android 12, questa funzionalità (incluso il codice del programma eBPF) viene fornita interamente dal modulo Tethering, che supporta quanto segue:
- Download IPv6 (traffico in entrata al dispositivo di tethering)
- Caricamento IPv6 (traffico in uscita dal dispositivo di tethering)
- Caricamento e downstream TCP/UDP IPv4 (traffico in entrata/uscita dal dispositivo di tethering)
- Offload eBPF
Questa funzionalità è attiva per impostazione predefinita. Gli utenti possono sostituire la configurazione config_tether_enable_bpf_offload con false tramite RRO.
Per ulteriori informazioni, consulta Personalizzazione.
Supporto di IPv4 e IPv6
Il modulo Tethering supporta lo stack doppio IPv4 e IPv6.
Per le reti IPv4, il modulo configura la traduzione degli indirizzi di rete (NAT) e adotta il protocollo di configurazione dinamica degli host (DHCP) per l'assegnazione degli indirizzi IP.
Per le reti IPv6, il modulo adotta la configurazione automatica degli indirizzi senza stato IPv6 (SLAAC) per l'assegnazione degli indirizzi IP.
Limite 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.javaframeworks/base/services/core/java/com/android/server/connectivity/tethering/frameworks/base/services/core/java/com/android/server/NetworkManagementService.javaframeworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.javaframeworks/base/services/net/java/android/net/{netlink,dhcp}/*frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.javaframeworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidlframeworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.javaframeworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.javaframeworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.javaframeworks/base/core/java/android/os/INetworkManagementService.aidlframeworks/base/core/java/android/bluetooth/BluetoothPan.javaframeworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpppackages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.javapackages/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 ConnectivityService codice che
implementa il componente centrale della connettività L3+ viene aggiunto all'APEX Tethering. L'ambito di Tethering si espande in un modulo Connettività.
Dipendenze del modulo
Il modulo Tethering ha le seguenti dipendenze:
- Metodi API pubblici e di sistema nel server di sistema
- Interfaccia IPC AIDL stabile con il server di sistema
- HIDL
tetheroffload(definito inhardware/interfaces/tetheroffload/) - Server DHCP (parte del modulo Stack di rete)
Personalizzazione
Il modulo Tethering non supporta la personalizzazione.
Test
La suite di test di compatibilità Android (CTS) verifica la funzionalità del modulo Tethering.