Updates in Android 13
| Aktualisieren | Weitere Informationen |
|---|---|
| CrossDevice eingeführt | CrossDevice |
| Split-Tunneling eingeführt | Split-Tunneling |
Übersicht
Mit dem Tethering-Modul kann die Internetverbindung eines Android-Geräts für andere verbundene Clientgeräte freigegeben werden. Diese können sich über WLAN, USB, Bluetooth oder Ethernet mit Tethering-Geräten verbinden. Dieses Modul enthält die Tethering-Komponente (USB, WLAN-Zugangspunkt, Bluetooth usw.) und ihre Abhängigkeiten (Interaktion mit Tethering-Berechtigung, IpServer und offloadController). Das Modul kann aktualisiert werden, d. h., es kann Funktionsupdates außerhalb des normalen Android-Releasezyklus erhalten.
Mit dem Tethering-Modul können OEMs im gesamten Android-Ökosystem eine einheitliche Standardreferenzimplementierung verwenden, die folgende Vorteile bietet:
Endnutzer profitieren von einer einheitlichen Nutzung auf allen Android-Geräten und von Korrekturen von Interoperabilitätsproblemen durch Modulupdates.
OEMs können die Anforderungen von Mobilfunkanbietern erfüllen und gleichzeitig die Kosten für individuelle Anpassungen senken, da sie nicht verschiedene Implementierungen derselben Anforderungen auf unterschiedliche Weise benötigen.
Split-Tunneling
Zur Unterstützung von Split-Tunneling-Anwendungsfällen wird in Android 13 eine neue API hinzugefügt, mit der Ausschlussrouten angegeben werden können.
Split-Tunneling bezieht sich auf die Konfiguration, bei der bestimmter Traffic über das VPN geleitet wird, anderer Traffic jedoch nicht. Ein häufiges Beispiel ist, wenn eine Organisation
möchte, dass allgemeines Websurfen, bandbreitenintensive (z. B. YouTube, Netflix) oder
latenzempfindliche Anwendungen (z. B. Office 365) das VPN umgehen. Bevor Split-Tunneling verfügbar war,
VpnService.Builder
konnte der VPN-Client angeben, dass nur einige Subnetze an ihn weitergeleitet werden sollten
(include -Routen). Mit Split-Tunneling können Sie das Gegenteil angeben: den gesamten Traffic an das VPN weiterleiten, mit Ausnahme bestimmter Subnetze (exclude -Routen).
Die Signatur der neuen Split-Tunneling-API lautet:
public Builder excludeRoute(@NonNull IpPrefix prefix)
CrossDevice
CrossDevice wurde in Android 13 eingeführt und soll geräteübergreifende Kommunikationstechnologien mithilfe von Standardprotokollen ermöglichen. Es bietet APIs und Funktionen für die Geräteerkennung, authentifizierte Verbindungen und andere geräteübergreifende Funktionen.
Motivation für CrossDevice
- Engere Zusammenarbeit mit OEM-Partnern. OEMs können ihr eigenes Kontoschlüsselsystem in die CrossDevice-Implementierung einbinden, anstatt die Lösung von Google zu verwenden.
- Bessere Sichtbarkeit der Protokollimplementierung. Das CrossDevice-Modul ist Open Source und bietet mehr Einblick in die Implementierungsdetails und einen besseren Datenschutz für die Implementierung von CrossDevice-Technologien.
CrossDevice-Modulgrenze
| CrossDevice-APIs | In packages/modules/CrossDevice/framework
|
| CrossDevice-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 ist von Folgendem abhängig:
- WLAN
- Bluetooth
- UWB
- modules-utils-preconditions
- Proto-Bibliotheken
CrossDevice-Anpassungsoptionen
Wir planen, OEMs die Möglichkeit zu geben, die UI für das halbe Blatt über RRO anzupassen. Es ist nicht geplant, die Funktionalität anzupassen.
CrossDevice-Teststrategie
Wir planen, Android Compatibility Test Suite (CTS)-Tests hinzuzufügen, um die CrossDevice-Funktionalität zu überprüfen, und geräteübergreifende Tests in MTS einzuführen.
eBPF-Tethering-Offload
Um Tethering mit hoher Geschwindigkeit zu ermöglichen, ohne auf Hardware-Offloads angewiesen zu sein, bietet Android 11 eine Software-Offload-Lösung für Tethering namens eBPF-Tethering-Offload für IPv6-Downloads (Traffic zum Tethering-Gerät).
Ab Android 12 wird diese Funktion (einschließlich des eBPF-Programmcodes) vollständig vom Tethering-Modul bereitgestellt, das Folgendes unterstützt:
- IPv6-Download (Traffic zum Tethering-Gerät)
- IPv6-Upload (Traffic vom Tethering-Gerät)
- IPv4-TCP/UDP-Upload und -Downstream (Traffic zum/vom Tethering-Gerät)
- eBPF-Offload
Diese Funktion ist standardmäßig aktiviert. Nutzer können die Konfiguration config_tether_enable_bpf_offload mit RRO auf „false“ setzen.
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 die Netzwerkadressübersetzung (NAT) ein und verwendet das Dynamic Host Configuration Protocol (DHCP) für die Zuweisung von IP-Adressen.
Für IPv6-Netzwerke verwendet das Modul die zustandslose IPv6-Adressautoconfiguration (SLAAC) für die Zuweisung von IP-Adressen.
Modulgrenze
Für Android 12 und höher befinden sich alle Dateien/Ordner unter packages/modules/Connectivity im Umfang 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.javaframeworks/base/services/core/java/com/android/server/connectivity/tethering/frameworks/base/services/core/java/com/android/server/NetworkManagementService.javaframeworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.javaframeworks/base/services/net/java/android/net/{netlink,dhcp}/*frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.javaframeworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidlframeworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.javaframeworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.javaframeworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.javaframeworks/base/core/java/android/os/INetworkManagementService.aidlframeworks/base/core/java/android/bluetooth/BluetoothPan.javaframeworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpppackages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.javapackages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java
Modulformat
Das Tethering-Modul (com.android.tethering) ist im APEX-Format verfügbar und kann auf Geräten mit Android 11 oder höher verwendet werden.
ConnectivityService einbeziehen
Ab Android 12 wird der ConnectivityService Code, der
die zentrale Komponente der L3+-Konnektivität implementiert, dem Tethering
APEX hinzugefügt. Der Umfang von Tethering wird auf ein Konnektivitätsmodul erweitert.
Modulabhängigkeiten
Das Tethering-Modul hat die folgenden Abhängigkeiten:
- Methoden der öffentlichen und System-API auf dem Systemserver
- Stabile AIDL-IPCs-Schnittstelle zum Systemserver
tetheroffloadHIDL (definiert inhardware/interfaces/tetheroffload/)- DHCP-Server (Teil des Netzwerkstack-Moduls)
Anpassung
Das Tethering-Modul unterstützt keine Anpassung.
Test
Die Android Compatibility Test Suite (CTS) überprüft die Funktionalität des Tethering-Moduls.