Tethering-Hardware-Offload

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 mit setLocalPrefixes 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 mit addDownstream/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.