Hardware-Offloading für Tethering

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 IOffloadConfigHAL 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 mit setLocalPrefixes vom Offload aus.
  • Upstream-Schnittstelle, IPv4-Adresse und IPv6-Gateways festlegen: Verwenden Sie setUpstreamParameters und konfigurieren Sie die Downstream-IP-Adressbereiche mit addDownstream/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.