Tethering

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