Legatura

Aggiornamenti su Android 13

Aggiornamento Maggiori informazioni
Presentato CrossDevice CrossDevice
Introdotto lo split tunneling Tunneling diviso

Panoramica

Il modulo Tethering condivide la connessione 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 tethering (USB, punto di accesso Wi-Fi, Bluetooth, ecc.) e le sue 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 ottengono un'esperienza coerente su tutti i dispositivi Android e risolvono i problemi di interoperabilità tramite gli aggiornamenti dei moduli.

  • Gli OEM possono soddisfare i requisiti del vettore riducendo al tempo stesso i costi per le personalizzazioni individuali (poiché non necessitano di implementazioni diverse degli stessi requisiti in modi diversi).

Tunneling diviso

Per supportare i casi d'uso dello split tunneling, ad Android 13 viene aggiunta una nuova API per specificare le rotte di esclusione.

Lo split tunneling si riferisce alla configurazione in cui parte del traffico passa attraverso la VPN mentre altro traffico no. Un esempio comune è quando un'organizzazione desidera che la navigazione web generica, applicazioni ad uso intensivo di larghezza di banda (ad esempio YouTube, Netflix) o sensibili alla latenza (ad esempio Office 365 ) eliminino la VPN. Prima che fosse disponibile lo split tunneling, VpnService.Builder consentiva al client VPN di indicare che solo alcune sottoreti dovevano essere instradate ad esso ( includi percorsi). Con lo split tunneling, hai la possibilità di specificare l'inverso: instradare tutto il traffico alla VPN, ad eccezione di sottoreti specifiche ( escludi percorsi).

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 tra dispositivi utilizzando protocolli standard. Fornisce API e funzionalità per il rilevamento dei dispositivi, la connessione autenticata e altre esperienze tra dispositivi.

Motivazione crossdevice

  • Collaborazione più stretta con i partner OEM. Gli OEM possono integrare il proprio sistema di chiavi dell'account con l'implementazione CrossDevice invece di dover utilizzare la soluzione di Google.
  • Implementazione più visibile del protocollo. Il modulo CrossDevice è open source e fornisce maggiore visibilità sui dettagli di implementazione e una migliore storia della privacy per l'implementazione delle tecnologie CrossDevice.

Confine del modulo CrossDevice

API multidispositivo In packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
Servizi cross-device In packages/modules/CrossDevice/service
  • NearbyService : API di scansione

Formato del pacchetto CrossDevice

La funzione principale di questo modulo è inclusa in un pacchetto APEX. Le risorse sono contenute in un APK.

Dipendenze tra dispositivi

CrossDevice dipende da quanto segue:

  • Wifi
  • Bluetooth
  • UWB
  • moduli-utils-precondizioni
  • Protobiblioteche

Opzioni di personalizzazione crossdevice

Prevediamo di consentire agli OEM di personalizzare l'interfaccia utente per il mezzo foglio tramite RRO. Non è previsto alcun piano per personalizzare la funzionalità.

Strategia di test CrossDevice

Prevediamo di aggiungere test CTS (Android Compatibility Test Suite) per verificare la funzionalità CrossDevice e test cross-device in MTS.

Scaricamento del tethering eBPF

Per fornire tethering ad alta velocità senza rispondere agli offload hardware, Android 11 fornisce una soluzione di offload del software di tethering denominata eBPF tethering offload per il download IPv6 (traffico che scorre verso il dispositivo collegato).

A partire da Android 12, questa funzionalità (incluso il codice del programma eBPF) è interamente fornita dal modulo Tethering, che supporta quanto segue:

  • Download IPv6 (traffico che scorre verso il dispositivo collegato)
  • Caricamento IPv6 (traffico che scorre dal dispositivo collegato)
  • Caricamento e downstream TCP/UDP IPv4 (traffico che fluisce da/verso il dispositivo collegato)
  • Scaricamento eBPF

Questa funzione è abilitata per impostazione predefinita, gli utenti possono sovrascrivere la configurazione config_tether_enable_bpf_offload su false tramite RRO. Vedi Personalizzazione per ulteriori informazioni.

Supporto IPv4 e IPv6

Il modulo Tethering supporta il dual stack IPv4 e IPv6.

  • Per le reti IPv4, il modulo configura la traduzione degli indirizzi di rete (NAT) e adotta il protocollo di configurazione host dinamico (DHCP) per l'assegnazione dell'indirizzo IP.

  • Per le reti IPv6, il modulo adotta la configurazione automatica dell'indirizzo senza stato IPv6 (SLAAC) per l'assegnazione dell'indirizzo IP.

Confine del modulo

Per Android 12 e versioni successive, tutti i file/cartelle in packages/modules/Connectivity rientrano nell'ambito del modulo Tethering.

Per Android 11 e versioni precedenti, il modulo Tethering contiene 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 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, al Tethering APEX viene aggiunto il codice ConnectivityService che implementa la componente centrale della connettività L3+. L'ambito del 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
  • Gli IPC AIDL stabili si interfacciano con il server di sistema
  • tetheroffload HIDL (definito in hardware/interfaces/tetheroffload/ )
  • Server DHCP (parte del modulo Network Stack)

Personalizzazione

Il modulo Tethering non supporta la personalizzazione.

Test

L'Android Compatibility Test Suite (CTS) verifica la funzionalità del modulo Tethering.