Tethering

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
  • 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 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 in hardware/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.