Mit Tethering-Offload können Geräte Strom sparen und die Leistung verbessern, indem der Tethering-Traffic (über USB, WLAN) an die Hardware ausgelagert wird. Der Tethering-Traffic wird ausgelagert, indem ein direkter Pfad zwischen dem Modem und den Peripheriegeräten bereitgestellt wird, der den App-Prozessor umgeht.
Technische Daten
Ab Android 8.1 können Geräte mithilfe von Tethering-Offload die Weiterleitung von IPv4-, IPv6- oder IPv4- und IPv6-Traffic an die Hardware auslagern.
Die Offload-Funktion muss nicht alle Pakete auslagern. Das Framework kann jedes Paket in der Software verarbeiten. Steuerpakete werden in der Regel in Software verarbeitet. Da IPv4-Ports zwischen Tethering-Traffic und Gerätetraffic gemeinsam genutzt werden, müssen IPv4-Pakete zum Einrichten und Beenden von Sitzungen (z. B. SYN/SYN+ACK, FIN) in der Software verarbeitet werden, damit der Kernel den Flussstatus erstellen kann. Das Framework stellt die Steuerungsebene und die Zustandsmaschinen bereit. Außerdem stellt es der Hardware Informationen zu Upstream- und Downstream-Schnittstellen/-präfixen zur Verfügung.
Bei IPv4 ermöglicht die Hardware, dass NAT-Sitzungseinrichtungspakete (Network Address Translation) die CPU erreichen. Der Kernel erstellt NAT-Einträge und die HAL-Implementierung überwacht die Einträge aus den vom Framework bereitgestellten Dateideskriptoren und verarbeitet diese Abläufe in der Hardware. Das bedeutet, dass für die HAL-Implementierung keine CAP_NET_*
erforderlich ist, da die HAL NF_NETLINK_CONNTRACK
-Sockets vom Framework geöffnet bekommt. Die Hardware sendet regelmäßig NAT-Statusaktualisierungen für derzeit aktive Flows an das Framework, wodurch die entsprechenden Einträge für den Kernel-Verbindungs-Tracking-Status aktualisiert werden.
Für IPv6 programmiert das Framework eine Liste von IPv6-Zielpräfixen, auf die Traffic nicht ausgelagert werden darf. Alle anderen Tethering-Pakete können ausgelagert werden.
Bei der Erfassung der Datennutzung werden durch NetworkStatsService
-Umfragen zur Datennutzung vom Framework Traffic-Statistiken von der Hardware angefordert. Außerdem kommuniziert das Framework über die HAL Datennutzungslimits an die Hardware.
Hardwareanforderungen
Damit das Tethering-Offload implementiert werden kann, muss Ihre Hardware IP-Pakete zwischen dem Modem und dem WLAN/USB weiterleiten können, ohne den Traffic über den Hauptprozessor zu senden.
Implementierung
Wenn Sie die Tethering-Offload-Funktion aktivieren möchten, müssen Sie die beiden folgenden HALs implementieren: eine Konfigurations-HAL (IOffloadConfig
) und eine Steuer-HAL (IOffloadControl
).
Config HAL: IOffloadConfig
Die IOffloadConfig
HAL startet die Implementierung des Tethering-Offloads. Das Framework stellt der HAL-Implementierung bereits verbundene NF_NETLINK_CONNTRACK
-Sockets zur Verfügung, mit denen die Implementierung die IPv4-Flows beobachten kann. Nur weitergeleitete Datenflüsse müssen beschleunigt werden.
Control HAL: IOffloadControl
Die IOffloadControl
-HAL steuert die Auslagerung. Die folgenden Methoden müssen implementiert werden:
- Offload-Hardware starten/beenden: Verwenden Sie
initOffload/stopOffload
und setzen Sie lokale IP-Adressen oder andere Netzwerke mitsetLocalPrefixes
vom Offload aus. - Upstream-Schnittstelle, IPv4-Adresse und IPv6-Gateways festlegen: Verwenden Sie
setUpstreamParameters
und konfigurieren Sie die Downstream-IP-Adressbereiche mitaddDownstream/removeDownstream
. - Erfassung der Datennutzung: Verwenden Sie
getForwardedStats/setDataLimit
.
Die HAL des Anbieters muss auch Rückrufe über die ITetheringOffloadCallback
-Schnittstelle senden, die das Framework über Folgendes informiert:
- Asynchrone Ereignisse wie das Starten und Beenden des Offloads (OffloadCallbackEvent)
- NAT-Zeitüberschreitungsaktualisierungen, die regelmäßig gesendet werden müssen, um anzugeben, dass ein bestimmter IPv4-Flow Traffic enthält und nicht vom Kernel geschlossen werden darf
Zertifizierungsstufe
Um die Implementierung des Tethering-Offloads zu validieren, führen Sie manuelle oder automatisierte Tests durch, um zu prüfen, ob Tethering und WLAN-Hotspot wie erwartet funktionieren. Die Vendor Test Suite (VTS) enthält Tests für die HALs für die Tethering-Offload-Funktion.