Durch Tethering Offload können Geräte Strom sparen und die Leistung verbessern, indem der Tethering-Verkehr (über USB, WLAN) auf die Hardware verlagert wird. Der Tethering-Verkehr wird entlastet, indem ein direkter Pfad zwischen dem Modem und den Peripheriegeräten unter Umgehung des App-Prozessors bereitgestellt wird.
Spezifikationen
Ab Android 8.1 können Geräte Tethering Offload nutzen, um die IPv4-, IPv6- oder IPv4+IPv6-Weiterleitung auf die Hardware auszulagern.
Die Offload-Funktion muss nicht alle Pakete auslagern. Das Framework ist in der Lage, jedes Paket in der Software zu verarbeiten. Steuerpakete werden typischerweise in Software verarbeitet. Da IPv4-Ports vom angebundenen Datenverkehr und vom Gerätedatenverkehr gemeinsam genutzt werden, müssen IPv4-Sitzungsaufbau-/-abbaupakete (z. B. SYN/SYN+ACK, FIN) in der Software verarbeitet werden, damit der Kernel den Flussstatus erstellen kann. Das Framework stellt die Steuerebene und 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 IPv4-NAT-Sitzungsaufbaupakete (Network Address Translation) die CPU erreichen. Der Kernel erstellt NAT-Einträge, und die HAL-Implementierung beobachtet die Einträge aus den vom Framework bereitgestellten Dateideskriptoren und verarbeitet diese Flüsse in Hardware. Dies bedeutet, dass die HAL-Implementierung kein CAP_NET_*
erfordert, da die HAL NF_NETLINK_CONNTRACK
Sockets vom Framework geöffnet erhält. In regelmäßigen Abständen sendet die Hardware NAT-Statusaktualisierungen für derzeit aktive Flows an das Framework, das die entsprechenden Statuseinträge für die Kernel-Verbindungsverfolgung aktualisiert.
Für IPv6 programmiert das Framework eine Liste von IPv6-Zielpräfixen, auf die der Datenverkehr nicht verlagert werden darf. Alle anderen angebundenen Pakete können ausgelagert werden.
Für die Datennutzungsabrechnung veranlassen NetworkStatsService
Datennutzungsumfragen das Framework, Verkehrsstatistiken von der Hardware anzufordern. Das Framework teilt der Hardware auch Datennutzungsgrenzen über die HAL mit.
Hardware-Anforderungen
Um Tethering Offload zu implementieren, muss Ihre Hardware in der Lage sein, IP-Pakete zwischen dem Modem und WLAN/USB weiterzuleiten, ohne den Datenverkehr über den Hauptprozessor zu senden.
Implementierung
Um die Tethering-Offload-Funktion zu aktivieren, müssen Sie die beiden folgenden implementieren, sowohl eine Konfigurations-HAL ( IOffloadConfig
) als auch eine Steuerungs-HAL ( IOffloadControl
).
HAL-Konfiguration: IOffloadConfig
Die IOffloadConfig
HAL startet die Tethering-Offload-Implementierung. Das Framework stellt der HAL-Implementierung vorab verbundene NF_NETLINK_CONNTRACK
Sockets zur Verfügung, die die Implementierung zum Beobachten der IPv4-Flüsse verwenden kann. Nur weitergeleitete Flüsse müssen beschleunigt werden.
HAL-Steuerung: IOffloadControl
Die IOffloadControl
HAL steuert die Offload-Implementierung. Folgende Methoden müssen implementiert werden:
- Offload-Hardware starten/stoppen: Verwenden Sie
initOffload/stopOffload
und schließen Sie lokale IP-Adressen oder andere Netzwerke mitsetLocalPrefixes
vom Offload aus. - Richten Sie die Upstream-Schnittstelle, die IPv4-Adresse und die IPv6-Gateways ein: Verwenden Sie
setUpstreamParameters
und konfigurieren Sie Downstream-IP-Adressbereiche mitaddDownstream/removeDownstream
. - Abrechnung der Datennutzung: Verwenden Sie
getForwardedStats/setDataLimit
.
Ihr Anbieter-HAL muss außerdem Rückrufe über die ITetheringOffloadCallback
Schnittstelle senden, die das Framework über Folgendes informiert:
- Asynchrone Ereignisse wie das Starten und Stoppen des Offloads (OffloadCallbackEvent)
- NAT-Timeout-Updates, die regelmäßig gesendet werden müssen, um anzuzeigen, dass ein bestimmter IPv4-Fluss Datenverkehr enthält und nicht vom Kernel geschlossen werden darf
Validierung
Um Ihre Implementierung des Tethering-Offloads zu validieren, verwenden Sie manuelle oder automatisierte Tests, um zu überprüfen, ob Tethering und WLAN-Hotspot wie erwartet funktionieren. Die Vendor Test Suite (VTS) enthält Tests für die Tethering-Offload-HALs.