Getaktete Verbindung

Als ich nach vielen Monaten COVID19- Reisepause mal wieder Bahn gefahren bin, habe ich dort natürlich auch wieder das WiFi genutzt. Da es die erste Verbindung auf diesem Gerät war, hat mich die Meldung von Windows und OneDrive etwas überrascht, dass es sich um eine "getaktete Verbindung" handelt. Ich kannte diesen Status schon von meiner UMTS/LTE-Karte im Notebook aber wie funktioniert das mit WLAN?

Was heißt "getaktet"?

Nicht jede Netzwerkverbindung ist "unlimited" oder "flat". Gerade im Mobilfunkbereich gibt es Volumenpakete, nach deren Überschreitung der Provider die Bandbreite drosselt oder der Verkehr teuer wird. Daher sollte ihr Endgerät erkennen oder entsprechend konfiguriert sein, dass es sparsam mit der Datenmenge umgeht. Dazu gehören zwei Parteien:

  • Erkennen einer "getakteten Verbindung"
    Das Betriebssystem bzw. die Applikation muss irgendwie erkennen, dass die Verbindung nach Volumen abgerechnet wird.
  • Rücksichtsvolle Anwendung
    Die Applikationen müssen mit dem Wissen ihr Verhalten anpassen, z.B. für Windows könnte das bedeuten, dass Outlook nicht mehr permanent Online ist sondern dem Anwender es überlässt zu "synchronisieren". Auch OneDrive kann bevorzugt den Cache nutzen und synchronisierte Änderungen erst mit einer Verzögerung.

Es kann ja durchaus sein, dass die momentane Verbindung nur kurze Zeit genutzt wird und in absehbarer Zeit wieder eine "unlimitierte" Verbindung zur Verfügung steht.

"Getaktet" einstellen

Wenn Sie eine LTE-Karte in ihrem Notebook haben, dann ist dies nicht nur eine weitere Netzwerkkarte, sondern die Netzwerkkarte kann auch die Information mitliefern, dass die Verbindung nach Volumen abgerechnet wird. Windows erkennt alleine, dass es sich dabei um "Mobilfunk" handelt und bietet entsprechende erweiterte Funktionen an, z.B. ob Roaming genutzt werden soll oder bei schlechtem WLAN sogar die mobile Datenverbindung einspringen soll:

Das funktioniert aber nur, wenn die LTE-Karte direkt von Windows angesteuert wird. Wenn Sie nun aber einen Router per Ethernet oder WLAN nutzen, der seinerseits doch wieder per LTE-Stick im Internet ist, dann kann Windows das anhand der Netzwerkverbindung nicht direkt erkennen. Dann können Sie aber manuell z.B. in den Eigenschaften des WLAN die Funktion "getaktete Verbindung" aktivieren:

Das funktioniert auch auf LAN-Verbindungen, wie die am Beispiel "FC Dock" sehen. Das ist meine Docking-Unit im Büro mit bidirektionaler Gigabit-Anbindung. Das ganze geht natürlich auch per Skript, Regedit und damit indirekt auch per Gruppenrichtlinien. Ein eleganter Weg für WLANs ist NETSH.

netsh wlan set profileparameter name=<WLAN-Profilname> cost=fixed

Die Einstellung kann manuell bestimmt werden aber LTE-Karten setzen den Mode normalerweise alleine "richtig"

Als Client erkennen

Damit meine eigene Software wie Outlook, OneDrive oder auch RimScout den Status erkennen kann, muss es eine Schnittstelle geben, um den Status anzufragen. Man muss gar nicht lange suchen, um die verschiedenen Optionen zu finden:

Per PowerShell geht es über folgenden Code recht einfach

# Quelle https://gist.github.com/nijave/d657fb4cdb518286942f6c2dd933b472 
[void][Windows.Networking.Connectivity.NetworkInformation, Windows, ContentType = WindowsRuntime]
$cost = [Windows.Networking.Connectivity.NetworkInformation]::GetInternetConnectionProfile().GetConnectionCost()
$cost.ApproachingDataLimit -or $cost.OverDataLimit -or $cost.Roaming -or $cost.BackgroundDataUsageRestricted -or ($cost.NetworkCostType -ne "Unrestricted")

Ein zweites Beispiel ist bei OpenWRT veröffentlicht, welche aber nur minimal abweicht

# Quelle https://openwrt.org/docs/guide-user/network/wifi/ms-meteredconnection 
[void][Windows.Networking.Connectivity.NetworkInformation, Windows, ContentType = WindowsRuntime]
[Windows.Networking.Connectivity.NetworkInformation]::GetInternetConnectionProfile().GetConnectionCost() | FL

Eine zweite schnelle Option ist die Ausgabe per NetSH mit dem Namen des Hotspots und dem Blick auf den letzten Abschnitt der Kosten. Hier am Beispiel zweier öffentlicher Netzwerke in Zügen. (Ausgabe gekürzt)

C:\>netsh wlan show profile name="RRX Hotspot"

Das Profil "RRX Hotspot" auf Schnittstelle T480s-WLAN:
=======================================================================

Kosteneinstellungen
-------------------
    Kosten                  : Uneingeschränkt
    Überlastet              : Nein
    Datenlimit bald erreicht: Nein
    Über Datenlimit         : Nein
    Roaming                 : Nein
    Kostenquelle            : Standard

Dazu noch die Einstellung beim ICE

C:\Users\fcarius>netsh wlan show profile name="wifionice"

Das Profil "WIFIonICE" auf Schnittstelle T480s-WLAN:
=======================================================================

Kosteneinstellungen
-------------------
    Kosten                  : Fest
    Überlastet              : Nein
    Datenlimit bald erreicht: Nein
    Über Datenlimit         : Nein
    Roaming                 : Nein
    Kostenquelle            : Benutzer

Interessant ist hier der Eintrag hinter "Kosten", für den ich drei Einstellungen bislang gefunden haben.

Fest                limitierte Datenübertragung
Variabel            limitierte Datenübertragung
Uneingeschränkts    Keine Limits

"Fest" und "Variabel" bewirken die Kennzeichnung als getaktet, während "Uneingeschränkt" keine Limits anwendet.

Network Cost Transfer Protocol

Nun kann man natürlich nicht jedem Anwender zumuten, dass er bei der Nutzung von Mobilfunk über einen WLAN-Router oder HotSpot in Windows die getaktete Verbindung manuell aktiviert. Wenn Sie mit ihrem Windows Notebook z.B. den WLAN-Hotspot im ICE der DB nutzen, dann bekommen Sie trotz WLAN die Information, dass es sich um eine "getaktete Verbindung" handelt.

Bislang konnte ich noch nicht im ICE mit meinem Endgerät und passendem WLAN-Device (Stichwort Promiscuous mode) die WLAN Beacons mitschneiden.

REM Anzeige der Fähigkeiten der WLAN-Schnittstelle
netsh wlan show wirelesscapabilities

Die weder die Bahn noch der WiFi-Access-Point direkten Zugriff auf meinem Client hat, kann die Information nur als WLAN-Zusatzelement oder über eine DHCP-Option an meinen Client gekommen sein. Man muss nicht lange suchen, um die Quellen direkt bei Microsoft zu finden. WLAN erlaubt die Definition eines "vendor-specific information Element (IE)", um zusätzliche Informationen zu übermitteln. Wenn der WLAN-AP diese Information sendet und der Client dies auswertet, kann der Anbieter die "getaktet"-Option dem Client mitteilen. Es handelt sich dabei um ein Element im "Beacon"-Frame.


Quelle: https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-NCT/%5bMS-NCT%5d.pdf Seite 7

[MS-NCT]: Network Cost Transfer Protocol
https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-NCT/%5bMS-NCT%5d.pdf

Auch Details zu den "Cost Flags" und "Cost Level" hat Microsoft publiziert.

Wenn ich per WLAN den kompatiblen Clients die Information mitgeben will, dass die Verbindung "getaktet" ist, dann muss ich ein "Vendor Specific" Network Cost Information Element im WLAN Beacon senden. In meinem Beispiel wäre das dann einfach:

# Korrekte Definition!
0xDD           (Vendor-specific record)
0x08           (Record length : 8 bytes)
0x00 0x50 0xF2 (Vendor: Microsoft)
0x11           (OUI Type: Network Cost)
0x04 Cost Level: connection cost per byte, Linux NetworkManager Ver 1.31.5+ behandelt alle >1 als nicht fixed
0x00 Reserved
0x02 Cost Flag: Unknown (Portable Hotspot Default: Metered network; limit unknown or not yet reached; matches Windows default for mobile broadband connections.)
0x00 Reserved

Früher hatte Microsoft wohl anhand einer fehlerhaften Dokumentation die Reihenfolge getauscht

# Falsche Definition
0xDD           (Vendor-specific record)
0x08           (Record length : 8 bytes)
0x00 0x50 0xF2 (Vendor: Microsoft)
0x11           (OUI Type: Network Cost)
0x00 Reserved
0x04 Cost Level: connection cost per byte
0x00 Reserved
0x02 Cost Flag: Unknown (Portable Hotspot Default: Metered network; limit unknown or not yet reached; matches Windows default for mobile broadband connections.)

Interessant ist hier natürlich auch das "Cost Flag", welches z.B. ein "Congested" melden könnte. Ich wüsste zwar nicht, dass Windows diese Information auswertet aber denkbar wäre schon eine Anzeige bei der Netzwerkkarte, dass es auf dem Übertragungsweg gerade einen Engpass gibt.

NCT und Controller

Damit stellt sich nun natürlich die Frage, welche LTE-Router per WLAN diese Information verteilen. Per "Kabel" angeschlossene Endgeräte bekommen zudem nichts mit.

WiFi Gerät/Software Beschreibung

OpenWRT

Anscheinend ist OpenWRT die erste Firmware, die eine entsprechende Konfiguration offen dokumentiert:

uci add_list wireless.radio0.hostapd_options='vendor_elements=DD080050F21102000200'
uci add_list wireless.radio1.hostapd_options='vendor_elements=DD080050F21102000200'
uci commit
reboot

?

?

Ich bin sicher, dass es weitere Produkte gibt, die das Setzen dieser Information erlauben und vermute, dass die Bahn vermutlich nicht auf OpenWRT setzt. Ich habe nur keine weiteren Informationen gefunden

Wenn Sie einen WLAN-AP betreiben und diese Option setzen können, dann kann ich gerne einen Link oder Beschreibung ergänzen.

Status bei der Bahn

Die Bahn hat eine andere Lösung gewählt, dass Sie über das Portal "https://iceportal.de" im Zug eine Statusanzeige samt Anleitung und Rückmeldung einblendet:

 

Sogar die unterschiedlichen Zustände werden auf PCs und Mobilgeräten erläutert:

Das kann ein einfaches WLAN-Beacon natürlich nicht leisten und muss es auch nicht pro Endgerät. Als Anwender können Sie ja einfach das Portal oder vielleicht eine App offen lassen, die diese Informationen regelmäßig abruft oder per Push bekommt.

Weitere Links