Dolt tras
16 Aug 2007Jag önskar att jag kunde säga bra saker om Windows Vista. Jag skulle vilja vara positiv, säga att det fungerar smidigt, att det var värt att vänta på, eller åtminstone att det fungerar ok. Eftersom det känns ungefär lika gammalt, trött och förutsägbart när någon klagar på Microsoft eller Windows som när Tomas Ledin får en sågning, så vill jag gärna gilla Vista. Tyvärr går det inte.
Efter att ha använt Vista närmast dagligen i arbetet under fyra månaders tid, kan jag konstatera att min från början försiktigt positiva inställning till slut fått så många törnar att den liknar en tillplattad ölburk, kvarglömd efter en riktigt vild midsommarfest. Jag har svårt att hitta något som jag egentligen gillar med Vista, eller iallafall något som jag gillar bättre i Vista än i XP. De genomskinliga fönsterramarna är fina. IE7 (som ju egentligen är fristående från Vista) klarar numera ganska mycket av det Firefox alltid klarat.
Under några veckors tid har jag upplevt att det går långsamt att surfa till vissa platser. Känslan är vag, eftersom det ofta är svårt att säga om det är uppkopplingen som är långsam, servern är belastad eller min dator som tillfälligt är upptagen med annat (Vistas favoritsysselsättning är att swappa disk utan närmare förklaring, gärna minuter i stöten och utan förvarning, men jag har å andra sidan bara 2GB RAM i min dator...suck...).
Mina misstankar pendlade mellan kvarlämnade rester av McAfees skämt till brandvägg som Dell förinstallerat på maskinen, och som jag prompt avinstallerade som första åtgärd när jag fick maskinen, och att det helt enkelt var något mer allmänt fel med min nätverkskonfiguration. Ett tag var jag inne på att det i själva verket var Java som var problemet, eftersom Java-applikationer med HTTP-användning, som är något av kärnverksamheten på företaget där jag jobbar, verkade mer exponerade än andra.
Den slutliga ledtråden kom idag, då jag fick information om att åtminstone en annan Vista-användare upplevde precis samma problem som jag. Genom att jämföra tiderna det tog att hämta några statiska sidor med hjälp av Java, wget och en vanlig browser från en och samma webserver från min Vista-maskin, en XP-maskin och en Linux-maskin, stod det klart: Vista hade problem med samtliga program, de andra hade det inte. Det stod även klart att bara enstaka webservrar drabbades av problemet, medan de flesta gav liknande tider i Vista som i XP och Linux.
Rustad med denna information var det inte svårt att googla upp problemet och dess lösning. Hemligheten heter TCP Receive Window Auto-Tuning, en ny funktion i Vistas nätverkslager. Microsoft beskriver problemet lugnt och sakligt så här: Network connectivity may fail when you try to use Windows Vista behind a firewall device. Tyvärr har artikeln helt fel när den påstår:
This issue may occur if the following conditions are true: • You try to make a non-HTTP network connection. • The firewall device has a problem with its implementation of the TCP Window Scale Option that is defined in Internet Engineering Task Force (IETF) Request For Comments (RFC) 1323. By default, the Receive Window Auto-Tuning feature in Windows Vista uses a Window Scaling factor of 8 for non-HTTP connections. This issue does not occur when you try to make an HTTP connection.
Tvärtemot vad ovanstående påstår, så uppstår problemet i allra högsta grad för HTTP-anslutningar. Lösningen är helt enkelt att stänga av auto-tuning:
netsh interface tcp set global autotuninglevel=restricted
Efter att ha kört detta kommando beter sig Vista-maskinen på samma vis som XP och Linux, d.v.s. anslutningarna till de berörda servrarna går åtminstone en faktor tio snabbare. Detaljerna beskrivs i bloggen för Windows Core Networking.
Mitt största problem med hur Vista fungerar här är den totala avsaknaden av transparens: det finns inget som helst som antyder att något egentligen är felaktigt konfigurerat eller trasigt; den enda indikationen är att jag av erfarenhet vet att det skall gå fortare än det faktiskt gör. Jag inser att källan till problemet egentligen ligger hos tillverkare av nätverksutrustning, som inte följer en RFC från 1992, men Microsoft har i min mening här gjort två misstag:
- Problemet går inte att diagnostisera. Det finns ingen indikation på att något är fel, så att jag som användare manuellt kan avhjälpa det. Andra maskiner i nätverket fungerar felfritt, vilket leder till (den felaktiga) slutsatsen att det är Vista-maskinen det är fel på.
- De har frångått Postels lag: "be conservative in what you do, be liberal in what you accept from others". Nätverksutrustningen följer inte reglerna (RFC 1323 i det här fallet), men i och med ovanstående, d.v.s. att användaren inte meddelas om var felet ligger, så måste Windows själv kunna åtgärda felet. Att istället misslyckas i tysthet ("fail silently") placerar användaren i en omöjlig situation.
Tyvärr känns detta inte som en engångsföreteelse, utan snarare som något symptomatiskt för hela Vista.
Uppdatering 2007-08-23: Hittade en bättre Microsoft-artikel som beskriver samma problem: A Web site sends data very slowly or drops the data completely when you use Windows Vista Enterprise (artikeln listar samtliga Vista-versioner under "Applies to", även om bara Vista Enterprise nämns i rubriken).