Aktualisierungen in Android 13
Aktualisieren | Mehr Informationen |
---|---|
CrossDevice eingeführt | Geräteübergreifend |
Split-Tunneling eingeführt | Split-Tunneling |
Überblick
Das Tethering-Modul teilt die Internetverbindung eines Android-Geräts mit anderen verbundenen Client-Geräten, die sich über Wi-Fi, USB, Bluetooth oder Ethernet mit Tethering-Geräten verbinden können. Dieses Modul enthält die Tethering-Komponente (USB, Wi-Fi-Zugangspunkt, Bluetooth usw.) und ihre Abhängigkeiten (Interaktion mit Tethering-Berechtigung, IpServer
und offloadController
). Dieses Modul ist aktualisierbar, d. h. es kann Funktionsaktualisierungen außerhalb des normalen Android-Veröffentlichungszyklus erhalten.
Das Tethering-Modul ermöglicht es OEMs im gesamten Android-Ökosystem, eine einzige Standard-Referenzimplementierung zu verwenden, die die folgenden Vorteile bietet.
Endbenutzer erhalten eine konsistente Erfahrung auf allen Android-Geräten und Korrekturen von Interoperabilitätsproblemen durch Modulaktualisierungen.
OEMs können Carrier-Anforderungen erfüllen und gleichzeitig Kosten für individuelle Anpassungen reduzieren (da sie nicht unterschiedliche Implementierungen derselben Anforderungen auf unterschiedliche Weise benötigen).
Split-Tunneling
Um Split-Tunneling-Anwendungsfälle zu unterstützen, wird Android 13 eine neue API hinzugefügt, um Ausschlussrouten anzugeben.
Split-Tunneling bezieht sich auf die Konfiguration, bei der bestimmter Datenverkehr durch das VPN geleitet wird, während anderer Datenverkehr dies nicht tut. Ein gängiges Beispiel ist, wenn eine Organisation möchte, dass allgemeines Surfen im Internet, bandbreitenintensive (z. B. YouTube, Netflix) oder latenzempfindliche Anwendungen (z. B. Office 365 ) das VPN umgehen. Bevor Split-Tunneling verfügbar war, erlaubte VpnService.Builder
dem VPN-Client, anzugeben, dass nur einige Subnetze zu ihm geroutet werden sollten ( einschließlich Routen). Mit Split-Tunneling haben Sie die Möglichkeit, das Gegenteil anzugeben: den gesamten Datenverkehr zum VPN zu leiten, mit Ausnahme bestimmter Subnetze (Routen ausschließen ).
Die Signatur der neuen Split-Tunneling-API lautet:
public Builder excludeRoute(@NonNull IpPrefix prefix)
Geräteübergreifend
CrossDevice, eingeführt in Android 13, zielt darauf ab, geräteübergreifende Kommunikationstechnologien unter Verwendung von Standardprotokollen bereitzustellen. Es bietet APIs und Funktionen für die Geräteerkennung, authentifizierte Verbindungen und andere geräteübergreifende Erfahrungen.
CrossDevice-Motivation
- Engere Zusammenarbeit mit OEM-Partnern. OEMs können ihr eigenes Kontoschlüsselsystem mit der CrossDevice-Implementierung integrieren, anstatt die Lösung von Google verwenden zu müssen.
- Sichtbarere Umsetzung des Protokolls. Das CrossDevice-Modul ist Open Source und bietet mehr Einblick in die Implementierungsdetails und eine bessere Datenschutzgeschichte für die Implementierung von CrossDevice-Technologien.
CrossDevice-Modulgrenze
Geräteübergreifende APIs | In packages/modules/CrossDevice/framework
|
Geräteübergreifende Dienste | In packages/modules/CrossDevice/service
|
CrossDevice-Paketformat
Die Hauptfunktion dieses Moduls ist in einem APEX-Paket enthalten. Die Ressourcen sind in einem APK verpackt.
CrossDevice-Abhängigkeiten
CrossDevice hängt von Folgendem ab:
- W-lan
- Bluetooth
- UWB
- module-utils-preconditions
- Proto-Bibliotheken
CrossDevice-Anpassungsoptionen
Wir planen, OEMs zu ermöglichen, die Benutzeroberfläche für Halbbogen über RRO anzupassen. Es ist nicht geplant, die Funktionalität anzupassen.
CrossDevice-Teststrategie
Wir planen, Tests der Android Compatibility Test Suite (CTS) hinzuzufügen, um die geräteübergreifende Funktionalität zu überprüfen, und geräteübergreifende Tests in MTS.
eBPF-Tethering-Offload
Um Hochgeschwindigkeits-Tethering bereitzustellen, ohne auf Hardware-Offloads zu antworten, bietet Android 11 eine Tethering-Software-Offload-Lösung namens eBPF-Tethering-Offload für den IPv6-Download (Datenverkehr fließt zum angebundenen Gerät).
Ab Android 12 wird diese Funktionalität (einschließlich des eBPF-Programmcodes) vollständig vom Tethering-Modul bereitgestellt, das Folgendes unterstützt:
- IPv6-Download (Datenverkehr fließt zum angebundenen Gerät)
- IPv6-Upload (Datenverkehr fließt vom angebundenen Gerät)
- IPv4 TCP/UDP-Upload und -Downstream (Datenverkehr fließt zu/von angebundenen Geräten)
- eBPF-Offload
Diese Funktion ist standardmäßig aktiviert, Benutzer können die Konfiguration von config_tether_enable_bpf_offload
durch RRO auf „false“ überschreiben. Weitere Informationen finden Sie unter Anpassung .
IPv4- und IPv6-Unterstützung
Das Tethering-Modul unterstützt IPv4- und IPv6-Dual-Stack.
Für IPv4-Netzwerke richtet das Modul Network Address Translation (NAT) ein und übernimmt das Dynamic Host Configuration Protocol (DHCP) für die IP-Adresszuweisung.
Für IPv6-Netzwerke übernimmt das Modul die IPv6-Zustandslose Adress-Autokonfiguration (SLAAC) für die IP-Adresszuweisung.
Modulgrenze
Für Android 12 und höher befinden sich alle Dateien/Ordner unter packages/modules/Connectivity
im Bereich des Tethering-Moduls.
Für Android 11 und niedriger enthält das Tethering-Modul die folgenden Android 10-Dateien 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
Modulformat
Das Tethering-Modul ( com.android.tethering
) ist im APEX-Format und für Geräte mit Android 11 oder höher verfügbar.
ConnectivityService einschließen
Ab Android 12 wird der ConnectivityService
-Code, der die zentrale Komponente der L3+-Konnektivität implementiert, zum Tethering APEX hinzugefügt. Der Umfang von Tethering erweitert sich zu einem Konnektivitätsmodul.
Modulabhängigkeiten
Das Tethering-Modul hat die folgenden Abhängigkeiten:
- Öffentliche und System-API-Methoden im Systemserver
- Stabile AIDL IPCs-Schnittstelle mit dem Systemserver
-
tetheroffload
HIDL (definiert inhardware/interfaces/tetheroffload/
) - DHCP-Server (Teil des Network Stack-Moduls)
Anpassung
Das Tethering-Modul unterstützt keine Anpassung.
Testen
Die Android Compatibility Test Suite (CTS) überprüft die Funktionalität des Tethering-Moduls.