Anbindung

Updates in Android 13

Aktualisieren Mehr Informationen
Einführung von CrossDevice CrossDevice
Split-Tunneling eingeführt Split-Tunnelbau

Überblick

Das Tethering-Modul teilt die Internetverbindung eines Android-Geräts mit anderen angeschlossenen Client-Geräten, die über WLAN, USB, Bluetooth oder Ethernet eine Verbindung zu Tethering-Geräten herstellen können. Dieses Modul umfasst die Tethering-Komponente (USB, WLAN-Zugangspunkt, Bluetooth usw.) und ihre Abhängigkeiten (Interaktion mit Tethering-Berechtigung, IpServer und offloadController ). Dieses Modul ist aktualisierbar, was bedeutet, dass es außerhalb des normalen Android-Release-Zyklus Funktionsaktualisierungen erhalten kann.

Das Tethering-Modul ermöglicht OEMs im gesamten Android-Ökosystem die Verwendung einer einzigen Standard-Referenzimplementierung, die die folgenden Vorteile bietet.

  • Endbenutzer erhalten ein einheitliches Erlebnis auf allen Android-Geräten und können durch Modulaktualisierungen Interoperabilitätsprobleme beheben.

  • OEMs können die Anforderungen der Netzbetreiber erfüllen und gleichzeitig die Kosten für individuelle Anpassungen senken (da sie keine unterschiedlichen Implementierungen derselben Anforderungen auf unterschiedliche Weise benötigen).

Split-Tunnelbau

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 über das VPN geleitet wird, während anderer Datenverkehr dies nicht tut. Ein häufiges Beispiel hierfür ist, dass eine Organisation allgemeines Surfen im Internet, bandbreitenintensive (z. B. YouTube, Netflix) oder latenzempfindliche Anwendungen (z. B. Office 365 ) das VPN umgehen möchte. Bevor Split-Tunneling verfügbar war, erlaubte VpnService.Builder dem VPN-Client anzugeben, dass nur einige Subnetze an ihn weitergeleitet werden sollten ( einschließlich Routen). Beim Split-Tunneling haben Sie die Möglichkeit, das Gegenteil anzugeben: den gesamten Datenverkehr an das VPN weiterzuleiten, mit Ausnahme bestimmter Subnetze (Routen ausschließen ).

Die Signatur der neuen Split-Tunneling-API lautet:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

CrossDevice wurde mit Android 13 eingeführt und zielt darauf ab, geräteübergreifende Kommunikationstechnologien mithilfe 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 in die 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 der CrossDevice-Technologien.

CrossDevice-Modulgrenze

CrossDevice-APIs In packages/modules/CrossDevice/framework
  • NearbyManager
  • AccountProviderBase
CrossDevice-Dienste In packages/modules/CrossDevice/service
  • NearbyService – Scan-API

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-vorbedingungen
  • Proto-Bibliotheken

CrossDevice-Anpassungsoptionen

Wir planen, OEMs die Möglichkeit zu geben, die Benutzeroberfläche für Halbblätter über RRO anzupassen. Eine Anpassung der Funktionalität ist nicht geplant.

CrossDevice-Teststrategie

Wir planen, CTS-Tests (Android Compatibility Test Suite) zur Überprüfung der CrossDevice-Funktionalität und geräteübergreifende Tests in MTS hinzuzufügen.

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 IPv6-Downloads (Datenverkehr, der zum angebundenen Gerät fließ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, der vom angebundenen Gerät fließt)
  • IPv4 TCP/UDP-Upload und -Downstream (Datenverkehr, der zum/vom angebundenen Gerät fließt)
  • eBPF-Offload

Diese Funktion ist standardmäßig aktiviert. Benutzer können die Konfiguration config_tether_enable_bpf_offload per 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 übernimmt das Dynamic Host Configuration Protocol (DHCP) für die IP-Adresszuweisung.

  • Für IPv6-Netzwerke übernimmt das Modul die IPv6 Stateless Address Autoconfiguration (SLAAC) für die IP-Adresszuweisung.

Modulgrenze

Für Android 12 und höher befinden sich alle Dateien/Ordner unter packages/modules/Connectivity im Tethering-Modulbereich.

Für Android 11 und niedriger verfügt das Tethering-Modul über 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 ) liegt im APEX-Format vor und ist für Geräte mit Android 11 oder höher verfügbar.

ConnectivityService einschließen

Ab Android 12 wird dem Tethering APEX der ConnectivityService Code hinzugefügt, der die zentrale Komponente der L3+-Konnektivität implementiert. Der Umfang von Tethering erweitert sich um ein Konnektivitätsmodul.

Modulabhängigkeiten

Das Tethering-Modul weist die folgenden Abhängigkeiten auf:

  • Öffentliche und System-API-Methoden im Systemserver
  • Stabile AIDL-IPCs sind mit dem Systemserver verbunden
  • tetheroffload HIDL (definiert in hardware/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.