Aggiornamenti in Android 13
Aggiorna | Ulteriori informazioni |
---|---|
È stato introdotto CrossDevice | CrossDevice |
È stato introdotto il tunneling diviso | Tunneling split |
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 alle funzionalità al di fuori del normale
ciclo di rilascio di Android.
Il modulo Tethering consente agli OEM dell'intero 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 vengono risolti i 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 richiedono implementazioni diverse degli stessi requisiti in modi diversi).
Tunneling diviso
Per supportare i casi d'uso del tunneling diviso, ad Android 13 è stata aggiunta una nuova API per specificare i percorsi da escludere.
Con split tunnel si indica la configurazione in cui un determinato traffico passa per la VPN, mentre un altro no. Un esempio comune è quando un'organizzazione vuole che la navigazione web generica, le applicazioni che richiedono una larghezza di banda elevata (ad esempio YouTube, Netflix) o le applicazioni sensibili alla latenza (ad esempio Office 365) aggirino la VPN. Prima che fosse disponibile lo split tunneling,
VpnService.Builder
consentiva al client VPN di indicare che solo alcune subnet dovevano essere instradate al client stesso
(route include). Con lo split tunneling, hai la possibilità di specificare l'inverso: instradare tutto il traffico alla VPN, ad eccezione di subnet specifiche (escludi route).
La firma della nuova API split tunneling è:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
CrossDevice, introdotto in Android 13, ha lo scopo di 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 cross-device
- Collaborazione più stretta con i partner OEM. Gli OEM possono integrare il proprio sistema di chiavi dell'account con l'implementazione CrossDevice anziché dover utilizzare la soluzione di Google.
- Implementazione più visibile del protocollo. Il modulo cross-device è open source e offre una maggiore visibilità sui dettagli di implementazione e una migliore esperienza relativa alla privacy per l'implementazione di tecnologie cross-device.
Confine del modulo CrossDevice
API cross-device | 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 vengono pacchettizzate in un APK.
Dipendenze CrossDevice
CrossDevice dipende da quanto segue:
- Wi-Fi
- Bluetooth
- UWB
- modules-utils-preconditions
- Librerie protocollo
Opzioni di personalizzazione CrossDevice
Prevediamo di consentire agli OEM di personalizzare l'interfaccia utente per il mezzo foglio tramite RRO. Non è prevista la personalizzazione della funzionalità.
Strategia di test cross-device
Prevediamo di aggiungere i test della suite di test di compatibilità Android (CTS) per verificare la funzionalità CrossDevice e i test cross-device in MTS.
Offload del tethering eBPF
Per fornire il tethering ad alta velocità senza fare affidamento su offload hardware, Android 11 fornisce una soluzione di offload del software di tethering chiamata eBPF per il download IPv6 (traffico in entrata sul dispositivo tethered).
A partire da Android 12, questa funzionalità (incluso il codice di programma eBPF) è fornita interamente dal modulo di tethering, che supporta quanto segue:
- Download IPv6 (traffico in entrata sul dispositivo con tethering)
- Caricamento su IPv6 (traffico proveniente da dispositivo con tethering)
- Caricamento e downstream TCP/UDP IPv4 (traffico in entrata/uscita dal dispositivo con tethering)
- Offload eBPF
Questa funzionalità è attiva per impostazione predefinita. Gli utenti possono impostare la configurazione di config_tether_enable_bpf_offload
su false tramite RRO.
Per ulteriori informazioni, consulta la sezione Personalizzazione.
Supporto IPv4 e IPv6
Il modulo Tethering supporta IPv4 e IPv6 a doppio stack.
Per le reti IPv4, il modulo configura la Network Address Translation (NAT) e adotta il protocollo DHCP (Dynamic Host Configuration Protocol) per l'assegnazione degli indirizzi IP.
Per le reti IPv6, il modulo adotta l'autoconfigurazione degli indirizzi IPv6 senza stato (SLAAC) per l'assegnazione degli indirizzi IP.
Confine del modulo
Per Android 12 e versioni successive, tutti i file/le cartelle
sotto packages/modules/Connectivity
rientrano nell'ambito del modulo Tethering.
Per Android 11 e versioni precedenti, il modulo Tethering
ha i seguenti file 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 di tethering (com.android.tethering
) è in formato APEX ed è
disponibile per 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 Connettività.
Dipendenze dei moduli
Il modulo Tethering ha le seguenti dipendenze:
- Metodi API pubblici e di sistema nel server di sistema
- Interfaccia di 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
Android Compatibility Test Suite (CTS) verifica la funzionalità del modulo di tethering.