IP-stacken i Windows Vista ble totalt redesignet av ulike årsaker. Det man først og fremst ville oppnå var ordentlig nettverks-tuning, mer effektiv overføring, bedre sikkerhet og bedre støtte på maskinvaresiden.
I tillegg har mye endret seg på nettverksfronten fra TCP-algoritmen og for den saks skyld siden Windows XP ble designet. Da var dial-up vanlig og 20Mb ADSL-linjer var ikke-eksisterende. Den tidens nettverksmiljø påvirket helt klart designet, og det skulle jo bare mangle, men dermed krever det litt tilpasning nå.
Når det gjelder TCP selv har jo ikke de mest basiske operasjonene endret seg siden 1981 med standarden definert i dokumentet RFC793. Men det har ikke manglet på forslag til nye måter å implementere den på. Det har også kommet en rekke nye tillegg for kontroll med “congestion” og trafikk generelt. Den gode gamle metoden var TCP Reno, men det har senere kommet en rekke forslag: High Speed TCP, TCP Vegas, BIC TCP, H-TCP, Fast TCP osv.
Håndtering av pakketap
TCP i dag har også enkelte utfordringer på trådløse nett, med hovedsaklig pakketapsbasert tuning. Et hvert pakketap er ansett for å være en indikasjon på “congestion” og dermed reduseres vindusstørrelsen.
Trådløse nett opplever ofte kortvarige tap av ulike årsaker og det minker overføringseffektiviteten betraktelig når et tap gjør at vindusstørrelsen blir redusert så betraktelig og deretter bare økes sakte igjen. Gjennomsnittelig hastighet på overføringene blir ikke så bra som de kunne vært.
Lite effektiv
Jeg leste et eksempel i dokumentasjonen fra en Microsoft-ansatt i USA. Han forteller der at med Windows XP, og den implementasjonen av TCP som er der, vil man på en 10Mb/s linje med 10ms latency faktisk bruke 1 (en) time på å ta i bruk hele båndbredden. Selv om XP maskinen ikke deler linja med noen andre enn maskinen i den andre enden.
XP tar veldig forsiktig i bruk mer “båndbredde” og prøver seg sakte, men sikkert fram om det går å bruke mer. Så fort det er et pakketap reduseres båndbreddebruken vesentlig igjen, før XP sakte prøver å øke utnyttelsen av linja igjen. På eldre nettverk var dette en mer fornuftig implementasjon enn det kan sies å være i dag.
Nyheter i Windows Vistas IP Stack
Følgende nyheter er å finne i Windows Vistas IP-stack:
- Receive windows auto tuning
- Compound TCP
- Forbedret håndtering av trådløst
- Bedre/ny håndtering av routing, deteksjon av veier, fail-back
- Windows Filtering Platform
- Offloading & Multi-Core / Multi-CPU støtte
- Native IPv6
Muligheten for 2-3 ganger bedre nedlastningshastighet uten ny linje er ikke å forakte.
IP Stack-design
Her har du en skisse som viser deg arkitekturen til den nye IP Stacken:

Tre standard API’er brukt mot denne for nettverkskommunikasjon:
- WSK – winsock kernel, et nytt kernel-mode interface som skal erstate Transport driver Interface (TDI)
- Sockets API – Sockets baserte applikasjoner. Operer gjennom Ancillary Function Driver (AFD) for å utføre TCP/IP operasjoner.
- TDI – NetBios over TCP/IP og andre eldre protokoller.
- I tillegg: Inspection API som er en del av Windows Filtering Platform, for inspeksjon av trafikk/firewall.
Mer om WSK i artikkelen Introduction to Winsock Kernel (WSK) og på Winsock Kernel (WSK) Forum.
Mer om WFP i artikkelen Windows Filtering Platform og MSDN Library: Windows Filtering Platform.
Hardware og ny IP Stack
En helt annen ting som måtte endres på var IP Stackens støtte for ulik hardware. Der har verden endret seg mye siden XP.
Tidligere versjoner av IP stacken skalerte ikke spesielt bra over flere CPU’er eller kjerner, noe som er lite hensiktsmessig nå som selv bærbare kommer med to kjerner. Derfor ble den nye IP Stacken i Windows Vista designet for å kunne ta i bruk ressursene som er tilgjenglig og faktisk benytte seg av begge kjernene for eksempel.
Tidligere var det Ndis (5.1) som var begrensningen og bandt prosesseringen av mottak til en CPU. RSS, Receive side scaling fra NDIS 6, løser dette ved å balansere lasten over flere cpu’er/kjerner.
Windows Vista generelt er blitt veldig mye bedre til å ta i bruk flere kjerner/cpu’er og du får en klart merkbar ytelsesforbedring med det på Vista.
En annen ting med IP stacken nå er at den har støtte for full “offloading” av TCP-tilkoblinger til NIC (Network Interface Card = nettverkskortet). Selve offloadingen gjøres med TCP Chimney, et navn den har fått fordi den følger en “chimney” arkitektur, der man har en direkte vei mellom NIC/offloaded og applikasjonen.
Windows Vista fortsetter også å støtte “task offload” som tidligere, men man kan bare offloade oppgaver fra tilkoblinger som ikke er fullt offloadet med chimney.
Ny IP Stack og Routing
Du finner også noen forbedringer rundt ruting. Det er tre ting som klart skiller seg ut som mest interessant:
Routing Compartments
Dette er for å øke sikkerheten ved å beskytte mot tidligere typer angrep der man kunne få sendt pakker inn via et interface og over på et annet. Nå segmenteres tilkoblinger i routing compartments: en kombinasjon av interfacer, knyttet sammen med en login sesjon og en routing tabell.
Alle maskiner kan ha flere compartments, men et interface kan kun være tilknyttet en compartment. Dette brukes for eksempel til å skille trådløse tilkoblinger til hot-spots fra VPN tilkoblinger inn mot firmanettverket. Sammen med neste punkt er dette med på å øke sikkerheten.
Sterkere Host model
Windows Vista har en såkalt “strong host model”, i motsetning til Windows Server 2003 og Windows XP, som bruker en svakere modell. Dette går på hvor sterkt adresser knyttes mot interface. Med den nye IP Stacken må pakker sendes direkte til riktig interface og pakker som kommer til feil blir ikke behandlet på samme måten som med XP. Dvs at de ikke blir “videresendt” internt til riktig interface.
Neighbor Unreachability Detection
Joda, det er egentlig funksjonalitet i IPv6. Men det er jo ingen grunn til å ikke sørge for at man kan få noe av den samme funksjonaliteten i IPv4, som tross alt brukes mest fortsatt og kunne trengt så nyttig funksjonalitet. IPv6 bruker Neighbor Solicitation og Neighbor Advertisement pakker og/eller monitorer høynivå protokoller. IPv4 har ikke disse spesielle typene pakker tilgjenglig.
Vista har sørget for følgende:
- Monitorering av TCP tilkoblinger
- Dead Gateway deteksjon
- Denne trigges av TCP retransmisjoner over stacken.
- Sender så arp-pakke og avventer svar. Ved ikke svar byttes det til alternative gateway om mulig.
- Nå er det også inkludert failback, ved at Vista forsøker å sende over gatewayen som anses som død. Når det blir mulig igjen bytter Vista tilbake til gateway nummer en. Dette var ikke tilfellet med XP, som da ville fortsatt å bruke gateway 2.
Neste avsnittet om IP stacken i Vista blir om Auto tuning (receive window). Kanskje den beste forbedringen generelt med den nye stacken.
Kilde: Norsk Windows Vista Blog