Getaktete Verbindung/Metered Network
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.
Kompatible Anwendungen
Es bleibt jedem Entwickler überlassen, ob er seine Anwendung auf einen "Network Change" reagiert, den Status überprüft und sich dann anders verhaltet. Aber drei Applikationen kenne ich:
- Outlook
Microsoft Outlook erkennt den Status "Metered" und fragt den Anwender, ob er die Übertragung solange pausieren soll. Per Default überträgt Outlook dann keine Mails, ehe Sie drücken als Anwender ein "Jetzt Synchronisieren" (F9-Taste)
- OneDrive
Der OneDrive-Client stellt auch die Synchronisierung ein, während Windows eine "Metered Connection" erkennt.
- Windows Update
Über eine UMTS-Karte sollte Windows nicht gerade die großen Updates herunterladen und vor allem nicht mit anderen PCs teilen. Auch dies ist die Standardeinstellung
- Windows VPN
- Windows Karten
- Browser (navigator.connection.metered )
Auch Browser bieten über JavaScript eine Schnittstelle an, damit eine "Modern App" sich angepasst verhalten kann.
"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"
- Metered connections in Windows 10
https://support.microsoft.com/en-us/windows/metered-connections-in-windows-10-7b33928f-a144-b265-97b6-f2e95a87c408 - Set ON/OFF Metered Ethernet Connection on windows 10
http://franckrichard.blogspot.com/2018/11/set-onoff-metered-ethernet-connection.html - Set ON/OFF Metered Ethernet Connection on Windows 10
https://4sysops.com/archives/set-windows-10-ethernet-connection-to-metered-with-powershell/ - Windows 10 – getaktete Verbindung aktivieren / deaktivieren
https://itler.net/windows-10-getaktete-verbindung-aktivieren-deaktivieren/ - How to set an Ethernet connection as metered on Windows 10
https://www.windowscentral.com/how-set-ethernet-connection-metered-windows-10 - Getaktete Verbindungen konfigurieren in Windows 10
https://www.windowspro.de/wolfgang-sommergut/getaktete-verbindungen-konfigurieren-windows-10 - Why can’t I change the metered connection setting?
https://support.microsoft.com/en-us/windows/why-can-t-i-change-the-metered-connection-setting-e2bb7d6e-2bd3-1b50-ea9c-ef813f3f58cf
Default Einstellungen
Neben der Einstellung pro Netzwerkkarte gibt es in Windows auch eine Standardeinstellung zu den Kosten einer Verbindung:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost
Die Standardeinstellungen von Windows 10 sind:
Sie sehen gut, dass Ethernet und WIFI hier auf 1 (unmetered) stehen aber 3G und 4G auf 2 (Metered) steht.
- Disable Outlook Metered Network Warning
in Windows 10
https://www.filerepairtools.com/tips/disable-outlook-metered-network-warning-windows-10/ - How to Turn Off Metered Connection on
Windows 10
https://appuals.com/how-to-turn-off-metered-connection-on-windows-10/
Als Client erkennen
Damit meine eigene Software wie Outlook, OneDrive oder auch Rimscout (https://www.rimscout.com) 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 2-5 geht es über folgenden Code recht einfach.
Weitere Informationen zu Rimscout finden Sie hier https://www.rimscout.com
Der Code funktioniert nicht in der neuen PowerShell Code (PWSH.EXE), die ja keine Windows Module einbinden kann.
# 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:\>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änkt Keine Limits
"Fest" und "Variabel" bewirken die Kennzeichnung als getaktet, während "Uneingeschränkt" keine Limits anwendet.
-
NetworkInformation.GetInternetConnectionProfile
Method
https://learn.microsoft.com/en-us/uwp/api/windows.networking.connectivity.networkinformation.getinternetconnectionprofile - Identify Wi-Fi connection as metered on
Windows automatically
https://openwrt.org/docs/guide-user/network/wifi/ms-meteredconnection - Set ON/OFF Metered Ethernet Connection on
Windows 10
http://franckrichard.blogspot.com/2018/11/set-onoff-metered-ethernet-connection.html - Set ON/OFF Metered Ethernet Connection on
Windows 10
https://4sysops.com/archives/set-windows-10-ethernet-connection-to-metered-with-powershell/ - Per WMI kann man einiges lesen
https://itproguru.com/expert/2012/01/using-powershell-to-get-or-set-networkadapterconfiguration-view-and-change-network-settings-including-dhcp-dns-ip-address-and-more-dynamic-and-static-step-by-step/
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . - WUtils.com: Win32_NetworkAdapterConfiguration, ROOT\CIMV2
https://wutils.com/wmi/root/cimv2/win32_networkadapterconfiguration/#gatewaycostmetric - Check if current network connection is metered in Windows batch file
https://stackoverflow.com/questions/57344269/check-if-current-network-connection-is-metered-in-windows-batch-file - More Messing Around with Wireless
Settings with PowerShell
https://devblogs.microsoft.com/scripting/more-messing-around-with-wireless-settings-with-powershell/ - Powershell check if on metered network
https://gist.github.com/AdamGrossTX/e3e458550046425b8c1054e1830ff488
LACP und metered connection
Bei einem Kunden habe ich einen physikalischen Server neu gestartet aber konnte mich danach nicht per per RDP anmelden. Aber auch auf einen PING hat der Server nicht mehr reagiert und am Ende habe ich mich auf dem Server direkt (ILO-Board/Konsole) angemeldet. Aber Just in dem Moment der Anmeldung auf der Konsole hat der Server auch wieder auf einen PING reagiert und RDP war auch möglich. Nach einiger Suche ist auafgefallen, dass das Netzwerk als "Metered" geführt wird:
Der Server wurde mit zwei Netzwerkkarten und einem LACP-Teams angebunden. Die individuelle Netzwerkkarten aber sind korrekt konfiguriert.
Bislang habe ich noch nicht die Ursache dafür gefunden
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
- Network cost information element
https://docs.microsoft.com/en-us/windows-hardware/drivers/mobilebroadband/network-cost-information-element - Identify Wi-Fi connection as metered on Windows
automatically
https://openwrt.org/docs/guide-user/network/wifi/ms-meteredconnection
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.
- Network cost information element
https://docs.microsoft.com/en-us/windows-hardware/drivers/mobilebroadband/network-cost-information-element - Windows 10 does not detect Wi-Fi as metered connection
https://superuser.com/questions/1652404/windows-10-does-not-detect-wi-fi-as-metered-connection - Network cost information element
https://docs.microsoft.com/en-us/windows-hardware/drivers/mobilebroadband/network-cost-information-element - [MS-NCT]: Network Cost Transfer Protocol
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-nct/7c4adf77-f13b-43aa-8491-637ef4543d96 - Metered Internet connections: FAQ
https://support.microsoft.com/en-us/windows/metered-internet-connections-faq-8a8cf4c0-b8b1-1de4-825d-24714e851659 - [MS-NCT] Incorrect implementation of Microsoft Network Cost
IE
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/734 - WLAN (IEEE 802.11) capture setup
https://wiki.wireshark.org/CaptureSetup/WLAN - Capture Beacon Frame
https://kasiviswanathanblog.wordpress.com/2017/02/27/capture-beacon-frames/ - Check if Your Wireless Network Adapter Supports Monitor Mode
& Packet Injection
https://null-byte.wonderhowto.com/how-to/check-if-your-wireless-network-adapter-supports-monitor-mode-packet-injection-0191221/ - Identify Wi-Fi connection as metered on Windows
automatically
https://openwrt.org/docs/guide-user/network/wifi/ms-meteredconnection
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.
- WLAN in Zügen des Fernverkehrs
https://www.bahn.de/service/zug/wlan-im-zug - WLAN im ICE und Intercity: So nutzen Sie
WIFI@DB und WIFIonICE
https://inside.bahn.de/wifionice-wlan-ice-login/ - WLAN in deutschen ICEs
https://www.netways.de/blog/2017/02/08/wlan-in-deutschen-ices/
Weitere Links
- Metered connections in Windows 10
https://support.microsoft.com/en-us/windows/metered-connections-in-windows-10-7b33928f-a144-b265-97b6-f2e95a87c408 - Network cost information element
https://docs.microsoft.com/en-us/windows-hardware/drivers/mobilebroadband/network-cost-information-element - Windows 10 does not detect Wi-Fi as metered connection
https://superuser.com/questions/1652404/windows-10-does-not-detect-wi-fi-as-metered-connection - Network cost information element
https://docs.microsoft.com/en-us/windows-hardware/drivers/mobilebroadband/network-cost-information-element - [MS-NCT]: Network Cost Transfer Protocol
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-nct/7c4adf77-f13b-43aa-8491-637ef4543d96 - Metered Internet connections: FAQ
https://support.microsoft.com/en-us/windows/metered-internet-connections-faq-8a8cf4c0-b8b1-1de4-825d-24714e851659 - [MS-NCT] Incorrect implementation of Microsoft Network Cost
IE
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/734 - WLAN (IEEE 802.11) capture setup
https://wiki.wireshark.org/CaptureSetup/WLAN - Capture Beacon Frame
https://kasiviswanathanblog.wordpress.com/2017/02/27/capture-beacon-frames/ - Check if Your Wireless Network Adapter Supports Monitor Mode
& Packet Injection
https://null-byte.wonderhowto.com/how-to/check-if-your-wireless-network-adapter-supports-monitor-mode-packet-injection-0191221/ - Set ON/OFF Metered Ethernet Connection on windows 10
http://franckrichard.blogspot.com/2018/11/set-onoff-metered-ethernet-connection.html - Set ON/OFF Metered Ethernet Connection on windows 10
https://4sysops.com/archives/set-windows-10-ethernet-connection-to-metered-with-powershell/ - Windows 10 – getaktete Verbindung aktivieren / deaktivieren
https://itler.net/windows-10-getaktete-verbindung-aktivieren-deaktivieren/ - How to set an Ethernet connection as metered on Windows 10
https://www.windowscentral.com/how-set-ethernet-connection-metered-windows-10 - Getaktete Verbindungen konfigurieren in Windows 10
https://www.windowspro.de/wolfgang-sommergut/getaktete-verbindungen-konfigurieren-windows-10 - Per WMI kann man einiges lesen
https://itproguru.com/expert/2012/01/using-powershell-to-get-or-set-networkadapterconfiguration-view-and-change-network-settings-including-dhcp-dns-ip-address-and-more-dynamic-and-static-step-by-step/
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . - WUtils.com: Win32_NetworkAdapterConfiguration, ROOT\CIMV2
https://wutils.com/wmi/root/cimv2/win32_networkadapterconfiguration/#gatewaycostmetric - Check if current network connection is metered in Windows batch file
https://stackoverflow.com/questions/57344269/check-if-current-network-connection-is-metered-in-windows-batch-file - OUTLOOK METERED NETWORK WARNING MESSAGE
https://blogyaatri.com/outlook-email-metered-network-warning-message/ - Resume or Pause OneDrive sync when device is on a metered
network
https://www.thewindowsclub.com/resume-or-pause-onedrive-sync-when-device-is-on-a-metered-network