Updates bei Android 13
Aktualisieren | Weitere Informationen |
---|---|
Einführung von „CrossDevice“ | CrossDevice |
Einführung von Split-Tunneling | Split-Tunneling |
Übersicht
Das Tethering-Modul teilt die Internetverbindung eines Android-Geräts mit anderen verbundenen Clientgeräten, die sich über WLAN, USB, Bluetooth oder Ethernet mit Tethering-Geräten verbinden können. Dieses Modul umfasst die Tethering-Komponente (USB, WLAN-Zugangspunkt, Bluetooth usw.) und ihre Abhängigkeiten (Interaktion mit der Tethering-Berechtigung, IpServer
und offloadController
). Dieses Modul kann aktualisiert werden, d. h., es kann außerhalb des normalen Android-Releasezyklus Funktionsupdates erhalten.
Mit dem Tethering-Modul können OEMs in der Android-Umgebung eine einzige Standardreferenzimplementierung verwenden, die folgende Vorteile bietet.
Endnutzer erhalten eine einheitliche Nutzung auf allen Android-Geräten und Fehlerkorrekturen für Interoperabilitätsprobleme durch Modulupdates.
OEMs können die Anforderungen der Mobilfunkanbieter erfüllen und gleichzeitig die Kosten für individuelle Anpassungen senken, da keine unterschiedlichen Implementierungen derselben Anforderungen erforderlich sind.
Split-Tunneling
Zur Unterstützung von Anwendungsfällen für Split-Tunneling wurde Android 13 eine neue API hinzugefügt, mit der auszuschließende Routen angegeben werden können.
Beim Split-Tunneling wird ein bestimmter Traffic über das VPN geleitet, während anderer Traffic nicht über das VPN geleitet wird. Ein häufiges Beispiel ist, wenn eine Organisation möchte, dass das allgemeine Surfen im Web, bandbreitenintensive Anwendungen (z. B. YouTube, Netflix) oder latenzempfindliche Anwendungen (z. B. Office 365) das VPN umgehen. Bevor Split-Tunneling verfügbar war, konnte der VPN-Client mit VpnService.Builder
angeben, dass nur einige Subnetze an ihn weitergeleitet werden sollten (include-Routen). Mit Split-Tunneling können Sie das Gegenteil angeben: Alle Zugriffe werden mit Ausnahme bestimmter Subnetze an das VPN weitergeleitet (ausschließende Routen).
Die Signatur der neuen Split-Tunneling-API lautet:
public Builder excludeRoute(@NonNull IpPrefix prefix)
Geräteübergreifend
CrossDevice, das mit Android 13 eingeführt wurde, zielt darauf ab, geräteübergreifende Kommunikationstechnologien mithilfe von Standardprotokollen bereitzustellen. Sie 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 in die CrossDevice-Implementierung einbinden, anstatt die Lösung von Google verwenden zu müssen.
- Die Implementierung des Protokolls ist jetzt besser sichtbar. Das CrossDevice-Modul ist Open Source und bietet mehr Transparenz bei den Implementierungsdetails und eine bessere Datenschutzstrategie für die Implementierung von CrossDevice-Technologien.
Geräteübergreifendes Modulende
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.
Geräteübergreifende Abhängigkeiten
Die Funktion „CrossDevice“ hängt von folgenden Faktoren ab:
- WLAN
- Bluetooth
- UWB
- modules-utils-preconditions
- Proto-Bibliotheken
Geräteübergreifende Anpassungsoptionen
Wir planen, OEMs die Anpassung der Benutzeroberfläche für die Halbzeitansicht bis zum RRO zu ermöglichen. Es ist nicht geplant, die Funktion anzupassen.
Strategie für geräteübergreifende Tests
Wir planen, CTS-Tests (Android Compatibility Test Suite) 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 ohne Hardware-Offloads bereitzustellen, bietet Android 11 eine Software-Offload-Lösung für Tethering namens eBPF-Tethering-Offload für IPv6-Downloads (Traffic, der an das verbundene Gerät gesendet wird).
Ab Android 12 wird diese Funktion (einschließlich des eBPF-Programmcodes) vollständig vom Tethering-Modul bereitgestellt, das Folgendes unterstützt:
- IPv6-Download (Traffic, der an das gekoppelte Gerät fließt)
- IPv6-Upload (Traffic von einem gekoppelten Gerät)
- IPv4-TCP/UDP-Upload und -Downstream (Traffic zum/vom gekoppelten Gerät)
- eBPF-Offload
Diese Funktion ist standardmäßig aktiviert. Nutzer können die config_tether_enable_bpf_offload
-Konfiguration über RRO auf „false“ setzen.
Weitere Informationen finden Sie unter Anpassen.
IPv4- und IPv6-Unterstützung
Das Tethering-Modul unterstützt IPv4- und IPv6-Dual-Stack.
Bei IPv4-Netzwerken richtet das Modul Network Address Translation (NAT) ein und verwendet das dynamische Hostkonfigurationsprotokoll (Dynamic Host Configuration Protocol, DHCP) für die Zuweisung von IP-Adressen.
Bei IPv6-Netzwerken verwendet das Modul die IPv6 Stateless Address Autoconfiguration (SLAAC) für die IP‑Adresszuweisung.
Modulgrenze
Bei Android 12 und höher fallen alle Dateien und Ordner unter packages/modules/Connectivity
in den Geltungsbereich des Tethering-Moduls.
Bei 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, dem Tethering Apex hinzugefügt. Das Tethering wird in ein Konnektivitätsmodul aufgenommen.
Modulabhängigkeiten
Für das Tethering-Modul gelten die folgenden Abhängigkeiten:
- Öffentliche und System-API-Methoden auf dem Systemserver
- Stabile AIDL-IPCs-Schnittstelle mit dem Systemserver
tetheroffload
HIDL (definiert inhardware/interfaces/tetheroffload/
)- DHCP-Server (Teil des Netzwerkstacks)
Personalisierung
Das Tethering-Modul unterstützt keine Anpassungen.
Testen
Die Android Compatibility Test Suite (CTS) prüft die Funktionalität des Tethering-Moduls.