Windows Interface Metrik

Eine IP-Verbindung ist nicht mehr genug. Mittlerweile haben Computer zwei oder sogar mehr Netzwerkkarten, die sogar parallel aktiv sein können. Das führt zu allerlei Herausforderungen, für die sie auch wissen müssen, wie Windows die "Metrik" eines Interface ermittelt. Das hat durchaus Auswirkungen beim Einsatz von WLAN, VPN aber auch wie Skype, Teams u.a. mit Audio-Übertragungen umgehen.

Achtung: Das Verhalten hat sich mit dem Windows 10 gegenüber 8.x und früher umfangreich geändert.

Outbound Routing

Wenn ein Client nur genau eine Netzwerkverbindung hat, dann ist der Weg für ausgehende Pakete, egal ob vom Client initiiert oder als Antwort gesendet, klar beschrieben. Alles muss durch diese Netzwerkkarte gehen. Interessanter wird es, wenn ein Client mehr als eine Netzwerkkarte hat. Schon mein Notebook ist mit vielen Schnittstellen gesegnet, die sich als Netzwerkkarte dem IP-Stack zu erkennen geben. Die grafische Anzeige liefert dabei nur eine Teilmenge:

Erst in der erweiterten Ansicht finde ich alle Netzwerkkarten als Liste:

Ab jetzt geht es aber mit der PowerShell weiter. Zuerst noch einmal die Schnittstellen.

Um die Listen übersichtlicher zu halten, beschränke ich mit auf IPv4. Die Aussagen gelten natürlich auch für IPv6.

PS C:\> Get-NetIPInterface

ifIndex InterfaceAlias                  AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp     ConnectionState PolicyStore
------- --------------                  ------------- ------------ --------------- ----     --------------- -----------
46      vEthernet (Extern)              IPv4                  1500              25 Enabled  Connected       ActiveStore
38      vEthernet (Intern Switch)       IPv4                  1500              15 Enabled  Connected       ActiveStore
59      vEthernet (Default Switch)      IPv4                  1500            5000 Disabled Connected       ActiveStore
19      LAN-Verbindung* 3               IPv4                  1500              25 Enabled  Disconnected    ActiveStore
40      Bluetooth-Netzwerkverbindung    IPv4                  1500              65 Enabled  Disconnected    ActiveStore
45      LAN-Verbindung* 1               IPv4                  1500              25 Disabled Connected       ActiveStore
41      T480s-LAN                       IPv4                  1500               5 Enabled  Disconnected    ActiveStore
32      Mobilfunk                       IPv4                  1500              25 Disabled Disconnected    ActiveStore
37      WLAN                            IPv4                  1500              50 Enabled  Connected       ActiveStore
1       Loopback Pseudo-Interface 1     IPv4            4294967295              75 Disabled Connected       ActiveStore

Mein Notebook hat zu dem Zeitpunkt insgesamt 10! IP-Schnittstellen, von denen sogar sechs den ConnectionState = Connected" haben. Allerdings sehen Sie in der PowerShell das "Loopback-Interface", welches in der GUI fehlt. Dafür erscheint hier die VPN-Verbindung nicht, wenn das VPN nicht aktiv ist. Interessant ist hier die "InterfaceMetric", welche individuelle Werte angenommen hat. Das Verfahren hat Microsoft ausführlich dokumentiert:

Ich habe mal die vier Tabellen nebeneinander gestellt. Nicht jedes OS nutzt jede Abstufung. Ich habe die Felder dann passend gefüllt und grau hinterlegt und als Grafik ausgegeben:

Es ist gut zu sehen, dass WLAN-Schnittstellen unter Windows immer höhere Metriken haben als andere Windows 10 Schnittstellen". Die WLAN-Schnittstelle muss immer eine Stufe schneller sein als die kabelgebundene Schnittstelle, ehe sie verwendet wird.

Bandbreite Win2000 XP/7/8/8.1 Win10 Wireless Win10 Wired  

>=100GB

5

5

25

5

 

>=400GB

5

5

25

10

 

>=10GB

5

5

25

15

 

>=2GB

5

5

25

20

 

>500MB

10

10

30

25

 

>200MB

10

10

35

25

 

>150MB

20

 

40

35

 

>80MB

20

20

45

35

 

>50MB

20

25

50

45

 

>20MB

20

25

55

45

 

>10MB

30

30

60

55

 

>4MB

30

30

65

55

 

>2M

40

40

70

65

 

>500k

40

40

75

65

 

>200k

50

50

80

75

 

<=200k

50

50

85

75

 

Aber das sind noch nicht alle Schnittstellen, denn es gibt im Betriebssystem auch noch Geräte, die für IP nicht relevant sind. Die bekommen wir mit Get-NetAdapter:

PS C:\> Get-NetAdapter

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Mobilfunk 15              Fibocom L830-EB                              49 Not Present                             0 bps
vEthernet (Extern)        Hyper-V Virtual Ethernet Adapter #3          46 Up           F2-20-7A-B3-66-42         1 Gbps
LAN-Verbindung* 1         Microsoft Wi-Fi Direct Virtual Adapter       45 Up           D6-6D-6D-FF-39-0D          0 bps
Mobilfunk 20              Fibocom L830-EB                              44 Not Present                             0 bps
Mobilfunk 13              Fibocom L830-EB                              43 Not Present                             0 bps
T480s-LAN                 Intel(R) Ethernet Connection (4) I219-V      41 Disconnected 8C-16-45-70-A0-EF          0 bps
Bluetooth-Netzwerkverbin… Bluetooth Device (Personal Area Networ…      40 Disconnected D4-6D-6D-FF-39-11         3 Mbps
vEthernet (Intern Switch) Hyper-V Virtual Ethernet Adapter #2          38 Up           00-15-5D-66-94-05        10 Gbps
WLAN                      Intel(R) Dual Band Wireless-AC 8265          37 Up           D4-6D-6D-FF-39-0D     144.4 Mbps
Mobilfunk                 Fibocom L830-EB                              32 Disconnected 98-B0-88-49-5E-53          0 bps
FC Dock                   ThinkPad USB-C Dock Ethernet                 31 Up           E0-4F-43-5D-79-E1         1 Gbps
Mobilfunk 21              Fibocom L830-EB                              28 Not Present                             0 bps
Mobilfunk 12              Fibocom L830-EB                              26 Not Present                             0 bps
Mobilfunk 16              Fibocom L830-EB                              21 Not Present                             0 bps
vEthernet (Default Switc… Hyper-V Virtual Ethernet Adapter             59 Up           00-15-5D-E8-CF-40        10 Gbps
Mobilfunk 14              Fibocom L830-EB                              17 Not Present                             0 bps
Mobilfunk 18              Fibocom L830-EB                              13 Not Present                             0 bps
Mobilfunk 17              Fibocom L830-EB                              12 Not Present                             0 bps
Mobilfunk 19              Fibocom L830-EB                               4 Not Present                             0 bps

Sie sehen hier schon die unterschiedlichen Geschwindigkeit.

Auf meinem Notebook habe ich die HyperV Rolle installiert. Aber auch ohne "sichtbare" HyperV Installation kann es diese Netzwerkkarte geben. Erweiterte Funktion wie z.B. "Credential Guard" nutzen die Windows Virtualisierung als Sandbox und liefern diese Netzwerkkarte mit
https://docs.microsoft.com/de-de/windows/security/identity-protection/credential-guard/credential-guard-requirements

Der IP-Stack nutzt für die Bestimmung des "Next Hop" und des ausgehenden Interfaces eines Pakets nicht nur die Routing-Tabelle sondern auch die Metrik. Bei mehreren Wegen zu einem Ziel gilt die Reihenfolge:

  1. Firewall erlaubt das Paket
    Über die Windows Firewall können Sie Pakete erlauben aber auch blockieren. Windows schaut also zuerst einmal, welche Wege für ein Paket durch die Firewall überhaupt möglich sind.
  2. Route ist am "genausten"
    Wenn dann noch mehrere Wege übrig sind, dann wird die Zieladresse mit der Routing-Tabelle abgeglichen. Es wird immer die Route genutzt, die am genausten auf das Ziel passt. Die "Default Route 0.0.0.0" kommt also irgendwann ganz hinten.
  3. Niedrigste Metrik zuerst
    Sollte es aber mehrere Routen geben, die die gleiche Eignung aufweisen, dann kommt die Metrik ins Ziel

Selbst nach dem Ablaufen der drei Schritte ist es nicht sichergestellt, dass es nur genau ein Ergebnis gibt. Windows kann also durchaus mehrere Verbindungen zur Lastverteilung und Bündelung nutzen.

WLAN/LAN Wechsel

Die Metrik wird nicht statisch anhand der Geschwindigkeit zugewiesen, sondern auch der Interface-Typ ist relevant. Das ist ein durchaus abgewogenes System. Stellen Sie sich folgende Konfiguration vor.

  • LAN1: Ethernet an einem 100Megabit Port
    Es ist selbst im Jahr 2020 nicht mal so selten, dass Desktops noch mit 100MBit betrieben werden. Das kann auch einfach eine Fritz!Box zuhause sein, bei der nur LAN1 mit 1GBit arbeitet und LAN2-4 im Energiesparmode auf 100MBit gedrosselt sind.
  • LAN1: WLAN mit >100 Megabit
    Windows kann hier ja nur die "ausgehandelte" Geschwindigkeit melden und nicht den real erreichbaren Durchsatz

Wenn beide Netzwerkverbindungen nun auch die gleichen Zugriffe erlauben und die Metric nur an der Geschwindigkeit festgemacht würde, dann wäre das "shared WLAN" günstiger als die LAN-Verbindung. Da war bei früheren Windows-Versionen bis Windows 8.1 sogar der Fall. Erst ab Windows 10 hat Microsoft diese Verhalten verbessert.

Mit dem Hintergrundwissen können Sie nun vielleicht besser verstehen, warum zumindest "Business-Notebooks" von HP, IBM/Lenovo, Dell, u.a. eine Funktion hatten, um das WLAN abzuschalten, sobald ein LAN-Link vorhanden ist. Einige WLAN-Treiber kenne die Funktion heute noch:

Oder sie planen einen Windows Task ein, der entsprechend getriggert wird.

Mittlerweile kann das ein Administrator für Client mit Windows 8 oder neuer per Gruppenrichtlinie vorgeben:

Damit können Sie in solchen besonderen Situationen das Netzwerk einfacher machen. solche Clients sind dann bei einer LAN-Verbindung auch "sicher" im LAN unterwegs, selbst wenn es nur 10/100 Megabit hat und nutzen nicht ein theoretisch schnelleres WLAN, welches aber andere Herausforderungen an Verfügbarkeit, Abdeckung, Durchsatz u.a. hat.

Sackgassen

Sie brauchen sich auch nicht zu sorgen, wenn es Schnittstellen gibt, die viel niedrigere Metriken haben. Hier sehen Sie mein Interface 38, welches eine HyperV-Netzwerkschnittstelle ist, mit der mein Host mit den Gästen kommunizieren könnte. Die ist, da es ein "internes Netzwerk" mit angezeigten 10GBit ist, sehr schnell und günstig.

PS C:\> Get-NetIPInterface -ConnectionState connected -AddressFamily ipv4 -InterfaceIndex 38

ifIndex InterfaceAlias                  AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp     ConnectionState PolicyStore
------- --------------                  ------------- ------------ --------------- ----     --------------- -----------
38      vEthernet (Intern Switch)       IPv4                  1500              15 Enabled  Connected       ActiveStore

Aber es gibt natürlich keinen größeren Leitweg und schon gar keine Default Route über diesen Adapter, der mir in die Quere kommt.

PS C:\> Get-NetRoute -InterfaceIndex 38 -AddressFamily ipv4 | ft -AutoSize

ifIndex DestinationPrefix  NextHop RouteMetric ifMetric PolicyStore
------- -----------------  ------- ----------- -------- -----------
38      255.255.255.255/32 0.0.0.0         256 15       ActiveStore
38      224.0.0.0/4        0.0.0.0         256 15       ActiveStore
38      169.254.255.255/32 0.0.0.0         256 15       ActiveStore
38      169.254.155.68/32  0.0.0.0         256 15       ActiveStore
38      169.254.0.0/16     0.0.0.0         256 15       ActiveStore

Insofern besteht hier kein Risiko. Kritisch sind also immer Umgebungen, bei denen der Automatismus von Windows 10 nicht ausreichend ist oder Sie noch Windows 8.1 oder älter nutzen, die nur auf die gemeldete Bandbreite schauen.

Viele NICs und VoIP

Einfache Clients, die eine TCP/UDP-Verbindung zu einem bekannten Server aufbauen, sind einfach zu erklären. VoIP, d.h. Skype for Business, Teams und andere Produkte nutzen natürlich einen Server für die Signalisierung aber bei der Übertragung von Sprache, Video und Bildschirmen kommen andere Techniken zum Einsatz. Das Verfahren habe ich unter dem Begriff ICE, Kandidaten, STUN und TURN beschrieben und eigene Seiten für die Teams RTP Kommunikation und SfB Media Flow erstellt. VoIP-Produkte nutzen nämlich erst einmal alle Netzwerkarten, um sich da entsprechende Ports zu öffnen und der Gegenseite anzubieten. Mein Client hat eine ganze Menge von IP-Adressen.

PS C:\> Get-NetIPAddress -AddressFamily ipv4  | ft

ifIndex IPAddress                                       PrefixLength PrefixOrigin SuffixOrigin AddressState PolicyStore
------- ---------                                       ------------ ------------ ------------ ------------ -----------
46      192.168.178.91                                            24 Dhcp         Dhcp         Preferred    ActiveStore
38      169.254.155.68                                            16 WellKnown    Link         Preferred    ActiveStore
59      172.17.89.49                                              28 Manual       Manual       Preferred    ActiveStore
19      169.254.109.66                                            16 WellKnown    Link         Tentative    ActiveStore
40      169.254.75.218                                            16 WellKnown    Link         Tentative    ActiveStore
45      192.168.137.1                                             24 Manual       Manual       Preferred    ActiveStore
41      169.254.16.184                                            16 WellKnown    Link         Tentative    ActiveStore
32      169.254.15.23                                             16 WellKnown    Link         Tentative    ActiveStore
37      192.168.178.36                                            24 Dhcp         Dhcp         Preferred    ActiveStore
1       127.0.0.1                                                  8 WellKnown    WellKnown    Preferred    ActiveStore

Von all den IPv4-Adressen ist keine direkte aus dem Internet direkt erreichbar. Die IPv6-Adressen habe ich hier ausgeblendet. Dennoch wird mein Client auch diese Adressen als Kandidaten anbieten. Es könnte sich ja um eine 1:1-Verbindung zwischen zwei Teilnehmern am gleichen Firmen-Standort handeln. Dann kommt die Verbindung idealerweise auch intern zustande.

Um das auszuprobieren, wird der Client die von der Gegenstelle angebotenen Adressen natürlich ansprechen. In der Regel wird RTP aber auch hier über die eine primäre Netzwerkkarte gehen.

VPN - Split oder Tunnel

Bislang habe ich das Thema VPN erst mal außen vorgelassen, da speziell mit Office 365, Exchange, Outlook, ActiveSync ein VPN gar nicht erforderlich oder möglich ist. Die Dienste nutzen einfach HTTPS. Für Desktop-Clients im Homeoffice ist ein VPN aber ein üblicher Weg eine sichere Verbindung zur Firma aufzubauen. Hierbei gibt es zweimal zwei Kriterien:

  • Technik
    Damit meine ich weniger die Frage nach dem Produkte sondern mehr die Art und Weise, wie das VPN sich auf dem Client darstellt
    • Virtuelle Netzwerkkarte
      Ein normales Windows VPN wird bei aktivier Verbindung als eigene Netzwerkkarte sichtbar. Entsprechend kann es IP-Routen mit Kosten geben, die über die Richtung von ausgehenden IP-Paketen entscheidet. Das normale Windows VPN nutzt z-B. diese Technik. (vormals Routing&RAS)
    • Paket Filter
      Eine andere Option besteht bei der Veränderung des Pakets bei der Übertragung durch den Netzwerk-Stack. So ist eine Verschlüsselung per IPSec-Tunnel ein Beispiel. Windows Direct Access arbeitet z.B. so. Die IP-Routen werden dabei aber nicht angepasst.
  • IP-Routing
    hier sind die beiden Varianten zu unterscheiden
    • TunnelVPN
      Diese lange Zeit bevorzugte Option hat alle Pakete, d.h. DNS-Abfragen und andere Nutzdaten, immer durch den VPN-Tunnel gesendet. Das Routing der Pakete wird in der Regel über eine Anpassung der "Default Route" und niedrige Metriken realisiert. Denken Sie aber daran, dass Verbindungen zu Systemen im gleichen Netzwerk weiterhin direkt möglich sind. So kann der Mitarbeiter im Homeoffice weiterhin z.B. seinen Drucker verwenden.
    • SplitVPN
      Hierbei werden eben nicht alle Pakete durch das VPN gesendet, sondern z.B. nur die Systeme mit privaten Adressen in der FIrma oder zu bestimmten Hostnamen oder DNS-Domänen. Aber alle andere Daten können am VPN vorbei in das Internet gehen. Dieser Weg ist besser, wenn die Anwender verschiedne Clouddienste, insbeosndere Konferenzlösungen aus der Cloud, nutzen. Aber Sie ist auch unsicherer, da eine Malware auf dem Clients als Gateway zwischen Internet und LAN missbraucht werden kann

Ein weiteres Augenmerk müssen Sie auf DNS legen. Ein Client mit VPN kann genaugenommen mehrere DNS-Server haben

  • DNS der realen Netzwerkkarte
    Ihr Client bekommt meist per DHCP nicht nur eine IP-Adresse und Gateway sondern auch die Adressen der DNS-Server
  • DNS-Server beim VPN
    Sobald ein VPN-Adapter aktiv ist, kann dieser natürlich auch die DNS-Auflösung bestimmen.

Bei einem "Tunnel-VPN" möchte man gerade nicht, dass der Client vielleicht noch einen lokalen DNS-Server fragt, der sicher nichts über die per VPN erreichbaren internen Systeme weiß.

Brauch ich das?

Ich denke ja, denn sowohl bei Servern als auch Clients sind mehrere Netzwerkkarten gar nicht mal untypisch und sie sie sollten schon genau wissen, welchen Weg die Pakete gehen. Denken Sie mal einen Client, der per LAN und WLAN in ihrem Netzwerk ist und über einen 2-Arm-Loadbalancer auf einen Exchange Server-Cluster zugreift, der neben dem MAPI-Netzwerk zu den Clients und Domain Controllern auch noch eine eigene LAN-Verbindung für den Replikationsverkehr hat. Und schon haben wir drei Stationen, die alle mehrere Netzwerkkarten mit unterschiedlichen Kosten haben. Wenn dann noch eine Firewall mit mehreren Netzwerkkarten im Boot ist, dann sollte das IP-Routing sitzen, damit die die maximale Performance und Stabilität liefern können und die Firewall ihnen keine Pakete verwirft, die aus deren Sicht über den falschen Weg kommen.

Weitere Links