Updates in Android 13
Aktualisieren | Weitere Informationen |
---|---|
CrossDevice eingeführt | CrossDevice |
Split-Tunneling eingeführt | 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-Hotspot, Bluetooth usw.) und ihre Abhängigkeiten (Interaktion mit Tethering-Berechtigung, IpServer
und offloadController
). Dieses Modul ist aktualisierbar, d. h., es kann Funktionsupdates außerhalb des normalen Android-Releasezyklus erhalten.
Das Tethering-Modul ermöglicht es OEMs im gesamten Android-Ökosystem, eine einzelne, standardmäßige Referenzimplementierung zu verwenden, die die folgenden Vorteile bietet.
Endnutzer profitieren von einer einheitlichen Nutzung auf allen Android-Geräten und von Fehlerkorrekturen bei 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 zum Angeben von Ausschlussrouten hinzugefügt.
Split Tunneling bezieht sich auf die Konfiguration, bei der bestimmter Traffic über das VPN und anderer Traffic nicht über das VPN geleitet wird. Ein häufiges Beispiel ist, wenn eine Organisation möchte, dass allgemeines Surfen im Web, bandbreitenintensive (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). Beim Split-Tunneling können Sie das Gegenteil angeben: Sie können den gesamten Traffic über das VPN leiten, mit Ausnahme bestimmter Subnetze (Ausschlussrouten).
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.
Geräteübergreifende Motivation
- 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.
- Das Protokoll wird besser sichtbar implementiert. Das CrossDevice-Modul ist Open Source. Das bietet mehr Transparenz bei den Implementierungsdetails und einen besseren Datenschutz für die Implementierung von CrossDevice-Technologien.
CrossDevice-Modulgrenze
CrossDevice APIs | In packages/modules/CrossDevice/framework
|
CrossDevice Services | In packages/modules/CrossDevice/service
|
CrossDevice-Paketformat
Die Hauptfunktion dieses Moduls ist in einem APEX-Paket enthalten. Die Ressourcen werden in einem APK verpackt.
CrossDevice-Abhängigkeiten
CrossDevice hängt von Folgendem ab:
- WLAN
- Bluetooth
- UWB
- modules-utils-preconditions
- Proto-Bibliotheken
Optionen zur geräteübergreifenden Anpassung
Wir planen, OEMs die Möglichkeit zu geben, die Benutzeroberfläche für das halbe Blatt über RRO anzupassen. Es ist nicht geplant, die Funktionalität anzupassen.
Cross-Device-Teststrategie
Wir planen, der Android Compatibility Test Suite (CTS) Tests hinzuzufügen, um die CrossDevice-Funktionalität zu überprüfen, und CrossDevice-Tests in MTS zu integrieren.
eBPF-Tethering-Auslagerung
Um High-Speed-Tethering ohne Hardware-Offloads zu ermöglichen, bietet Android 11 eine Tethering-Software-Offload-Lösung namens eBPF-Tethering-Offload für IPv6-Downloads (Traffic, der an das getetherte 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 zum verbundenen Gerät)
- IPv6-Upload (Traffic von verbundenem Gerät)
- IPv4-TCP/UDP-Upload und ‑Download (Traffic zur/von der verbundenen Einheit)
- eBPF-Auslagerung
Diese Funktion ist standardmäßig aktiviert. Nutzer können die config_tether_enable_bpf_offload
-Konfiguration mit einem RRO überschreiben und auf „false“ setzen.
Weitere Informationen finden Sie unter Anpassung.
Unterstützung von IPv4 und IPv6
Das Tethering-Modul unterstützt IPv4- und IPv6-Dual-Stack.
Für IPv4-Netzwerke richtet das Modul die Netzwerkadressübersetzung (Network Address Translation, NAT) ein und verwendet das Dynamic Host Configuration Protocol (DHCP) für die Zuweisung von IP-Adressen.
Bei IPv6-Netzwerken verwendet das Modul die IPv6-SLAAC (Stateless Address Autoconfiguration) für die Zuweisung von IP-Adressen.
Modulgrenze
Unter Android 12 und höher befinden sich alle Dateien/Ordner unter packages/modules/Connectivity
im Bereich 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 verfügbar und kann auf Geräten mit Android 11 oder höher verwendet werden.
ConnectivityService einbinden
Ab Android 12 wird der ConnectivityService
-Code, der die zentrale Komponente der L3+-Konnektivität implementiert, dem Tethering-APEX hinzugefügt. Der Bereich „Tethering“ wird auf ein Konnektivitätsmodul ausgeweitet.
Modulabhängigkeiten
Das Tethering-Modul hat die folgenden Abhängigkeiten:
- Öffentliche und System-API-Methoden auf dem Systemserver
- Stabile AIDL-IPCs interagieren mit dem Systemserver
tetheroffload
HIDL (definiert inhardware/interfaces/tetheroffload/
)- DHCP-Server (Teil des Network Stack-Moduls)
Personalisierung
Das Tethering-Modul unterstützt keine Anpassung.
Testen
Die Android Compatibility Test Suite (CTS) überprüft die Funktionalität des Tethering-Moduls.