Übermittlungsoptimierung frisst die gesamte Bandbreite


Eigentlich ist die Idee von Peer2Peer Protokollen reizvoll. So ermöglicht Windows 10 z. B. Updates über Peer2Peer von anderen Rechnern im Internet anstatt von Microsoft direkt zu laden. Leider hapert es an der Umsetzung.

Das Problem trat massiv bei einer aktuellen Windows 10 Preview mit Build 14295 auf. Als gerade eine neuere Buildversion verfügbar wurde, konnte man mit anderen Rechnern im selben Netzwerk nicht mehr vernünftig ins Internet. Die massiven Downloads, mehrere Verbindungen vom selben Rechner des neuen Builds, sorgten auf den anderen Rechnern für Stillstand.

Am Anfang war dies gar nicht klar, denn Windows Updates hatten früher noch nie Probleme gemacht. Diese laufen normalerweise über den Intelligenten Hintergrundübertragungsdienst (BITS). Erst Windows 10 führte die Möglichkeit der Peer2Peer Updates ein. Als das Problem dem Windowsrechner zugeordnet war, ging es an die Ursachenforschung.

Ein Get-Bitstransfer –AllUsers brachte gähnende Leere. Also war der BITS nicht Schuld, aber was war es dann, wo die Bandbreite fraß? Also den Windows Ressourcenmonitor angeworfen und beim Netzwerkverkehr nach den Downloads geschaut. Tatsächlich war hier der SVCHOST.EXE netsvcs mit einem fetten Download beteiligt. Nachdem zuerst der BITS-Dienst ausgeschaltet wurde, vielleicht hat er ja eine geheime Übertragung am Laufen, gab es immer noch keine Besserung.

Dann mal geschaut, was alles hinter netsvcs steckt:

$netsvcs= (Get-ItemProperty ‚registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost\‘ -Name netsvcs).netsvcs

$netsvcs
CertPropSvc
SCPolicySvc
lanmanserver
gpsvc
IKEEXT
iphlpsvc
seclogon
AppInfo
msiscsi
EapHost
schedule
winmgmt
browser
ProfSvc
SessionEnv
wercplsupport
dosvc
DcpSvc
wlidsvc
NcaSvc
NetSetupSvc
Themes
RetailDemo
lfsvc
FastUserSwitchingCompatibility
Ias
Irmon
Nla
Ntmssvc
NWCWorkstation
Nwsapagent
Rasauto
Rasman
Remoteaccess
SENS
Sharedaccess
SRService
Tapisrv
Wmi
WmdmPmSp
wuauserv
BITS
ShellHWDetection
LogonHours
PCAudit
helpsvc
uploadmgr
dmwappushservice
BDESVC
XboxNetApiSvc
UsoSvc
XblGameSave
DmEnrollmentSvc
DsmSvc
UserManager
XblAuthManager
AppMgmt

Na super da kommt richtig Freude auf. Um mehr Infos zu bekommen, könnte man nun

$netsvcs | Get-Service

aufrufen, da aber sicher nicht alle Dienste laufen, macht es mehr Sinn gleich mal die nicht vorhandenen und nicht laufenden auszunehmen:

($sr=$netsvcs | Get-Service | where status -eq running) 2> $null

Status   Name               DisplayName
——   —-               ———–
Running  CertPropSvc        Zertifikatverteilung
Running  lanmanserver       Server
Running  iphlpsvc           IP-Hilfsdienst
Running  AppInfo            Anwendungsinformationen
Running  schedule           Aufgabenplanung
Running  winmgmt            Windows-Verwaltungsinstrumentation
Running  browser            Computerbrowser
Running  ProfSvc            Benutzerprofildienst
Running  SessionEnv         Konfiguration für Remotedesktops
Running  dosvc              Übermittlungsoptimierung
Running  Themes             Designs
Running  lfsvc              Geolocation-Dienst
Running  SENS               Benachrichtigungsdienst für Systeme…
Running  ShellHWDetection   Shellhardwareerkennung
Running  UserManager        Benutzer-Manager
Running  AppMgmt            Anwendungsverwaltung

Damit wird die Sache schon übersichtlicher und man hat nähere Infos zum Geschehen.

Und so kann man sich dann die Frage stellen, was ist ein Übermittlungsoptimierungs-Dienst dosvc? Genauer gesagt handelt es sich dabei um die Windows Update Übermittlungsoptimierung. Also offizielle Infos dazu: http://windows.microsoft.com/de-de/windows-10/windows-update-delivery-optimization-faq.

Dann werden auch schnell die Probleme offensichtlich: https://social.technet.microsoft.com/Forums/en-US/b94d8e74-58de-451a-b137-7ec2028adc27/delivery-optimization-service-downloading-something-and-using-all-my-bandwidth?forum=win10itprogeneral

Get-ItemProperty registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dosvc -Name ServiceDLL| select servicedll

ServiceDll
———-
C:\WINDOWS\system32\dosvc.dll

Also ist die dosvc.dll die DLL, die es zu beachten gibt.

Nachdem das nun geklärt ist, so dann sollten wir mal wieder mit Mythen aufräumen, die sich leider immer wieder ergeben und ohne jeden Beweis behauptet werden.

Hier https://social.technet.microsoft.com/Forums/forefront/en-US/074181bc-1e1f-4b06-b816-6d9e1dac3da4/wudo-clarification-can-it-tunnel-out-through-the-fireall-protecting-my-network?forum=win10itprosecurity und hier http://www.wintotal.de/windows-10-p2p-update-verteilung-deaktivieren/ behauptet jemand, das für TCP und UDP vom Übertragungsoptimierungs-Dienst zwei unterschiedliche Ports benutzt werden. Einmal 7680 bei TCP und 3544 UDP. Dem ist aber nicht so.

Schauen wir uns zunächst die Regel in der Firewall an, ob es da was passendes gibt:

Get-NetFirewallServiceFilter -Service dosvc|Get-NetFirewallRule

Name                  : DeliveryOptimization-TCP-In
DisplayName           : Übermittlungsoptimierung (TCP eingehend)
Description           : Eingehende Regel, die der Übermittlungsoptimierung die Verbindung mit Remoteendpunkten erlaubt.
DisplayGroup          : Übermittlungsoptimierung
Group                 : @%systemroot%\system32\dosvc.dll,-100
Enabled               : True
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : Allow
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : Die Regel wurde erfolgreich vom Speicher aus analysiert. (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

Name                  : DeliveryOptimization-UDP-In
DisplayName           : Übermittlungsoptimierung (UDP eingehend)
Description           : Eingehende Regel, die der Übermittlungsoptimierung die Verbindung mit Remoteendpunkten erlaubt.
DisplayGroup          : Übermittlungsoptimierung
Group                 : @%systemroot%\system32\dosvc.dll,-100
Enabled               : True
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : Allow
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : Die Regel wurde erfolgreich vom Speicher aus analysiert. (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

Also es gibt eine Regel für TCP und UDP und welche Ports werden nun benutzt?

Get-NetFirewallServiceFilter -Service dosvc|Get-NetFirewallRule|Get-NetFirewallPortFilter

Protocol      : TCP
LocalPort     : 7680
RemotePort    : Any
IcmpType      : Any
DynamicTarget : Any

Protocol      : UDP
LocalPort     : 7680
RemotePort    : Any
IcmpType      : Any
DynamicTarget : Any

Ergo, nix UDP auf 3544. Übrigens Port 3544 wäre Teredo, wahrscheinlich hat da jemand nicht genau genug geschaut und die Leute übernehmen immer alles ohne es zu prüfen. http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=3544

Eine Antwort to “Übermittlungsoptimierung frisst die gesamte Bandbreite”

  1. newyear2006 Says:

    Zum Abschalten oder Konfigurieren: https://technet.microsoft.com/en-us/itpro/windows/manage/manage-connections-from-windows-operating-system-components-to-microsoft-services#bkmk-updates

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: