Hardware-Offloading für Tethering

Durch die Auslagerung von Tethering-Traffic können Geräte Strom sparen und die Leistung verbessern, indem sie den Tethering-Traffic (über USB, WLAN) an die Hardware auslagern. Der Tethering-Traffic wird ausgelagert, indem ein direkter Pfad zwischen dem Modem und den Peripheriegeräten bereitgestellt wird, wobei der App-Prozessor umgangen wird.

Technische Daten

Ab Android 8.1 können Geräte die Tethering-Auslagerung verwenden, um die IPv4-, IPv6- oder IPv4+IPv6-Weiterleitung an die Hardware auszulagern.

Die Offload-Funktion muss nicht alle Pakete auslagern. Das Framework kann jedes Paket in der Software verarbeiten. Steuerpakete werden in der Regel in der Software verarbeitet. Da IPv4-Ports für Tethering-Traffic und Gerätetraffic freigegeben sind, müssen IPv4-Pakete für die Einrichtung/Beendigung 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 Zustandsautomaten bereit. Außerdem werden der Hardware Informationen zu Upstream- und Downstream-Schnittstellen/Präfixen bereitgestellt.

Für IPv4 ermöglicht die Hardware, dass Einrichtungspakete für IPv4-NAT-Sitzungen (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 Flows in der Hardware. Das bedeutet, dass für die HAL-Implementierung kein CAP_NET_* erforderlich ist, da die HAL NF_NETLINK_CONNTRACK-Sockets vom Framework geöffnet werden. Die Hardware sendet regelmäßig NAT-Statusaktualisierungen für derzeit aktive Flows an das Framework, wodurch die entsprechenden Einträge für den Kernel-Verbindungsstatus aktualisiert werden.

Für IPv6 programmiert das Framework eine Liste von IPv6-Zielpräfixen, zu denen kein Traffic ausgelagert werden darf. Alle anderen Tethering-Pakete können ausgelagert werden.

Für die Abrechnung der Datennutzung werden durch NetworkStatsService-Abfragen zur Datennutzung Traffic-Statistiken von der Hardware angefordert. Das Framework kommuniziert auch Datenverwendungslimits über das HAL an die Hardware.

Hardwareanforderungen

Damit die Tethering-Auslagerung implementiert werden kann, muss Ihre Hardware IP-Pakete zwischen dem Modem und WLAN/USB weiterleiten können, ohne den Traffic über den Hauptprozessor zu senden.

Implementierung

Wenn Sie die Funktion zum Auslagern von Tethering aktivieren möchten, müssen Sie sowohl ein Konfigurations-HAL (IOffloadConfig) als auch ein Steuerungs-HAL (IOffloadControl) implementieren.

Konfigurations-HAL: IOffloadConfig

Die IOffloadConfig-HAL startet die Implementierung des Tethering-Offloads. Das Framework stellt der HAL-Implementierung vorkonfigurierte NF_NETLINK_CONNTRACK-Sockets zur Verfügung, die die Implementierung verwenden kann, um die IPv4-Flows zu beobachten. Nur weitergeleitete Flows müssen beschleunigt werden.

Control HAL: IOffloadControl

Die IOffloadControl-HAL steuert die Offload-Implementierung. Die folgenden Methoden müssen implementiert werden:

  • Hardware-Offload starten/beenden: Verwenden Sie initOffload/stopOffload und schließen 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 Downstream-IP-Adressbereiche mit addDownstream/removeDownstream.
  • Abrechnung der Datennutzung: Verwenden Sie getForwardedStats/setDataLimit.

Ihr Anbieter-HAL muss außerdem Callbacks über die ITetheringOffloadCallback-Schnittstelle senden, die das Framework über Folgendes informiert:

  • Asynchrone Ereignisse wie das Starten und Beenden des Offloads (OffloadCallbackEvent)
  • NAT-Timeout-Aktualisierungen, 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 von Tethering-Offload zu validieren, verwenden Sie manuelle oder automatisierte Tests, 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 Tethering-Offload.