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 mitsetLocalPrefixes
vom Offload aus. - Upstream-Schnittstelle, IPv4-Adresse und IPv6-Gateways festlegen: Verwenden Sie
setUpstreamParameters
und konfigurieren Sie Downstream-IP-Adressbereiche mitaddDownstream/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.