Inside Microsoft’s
Network and Storage
VSP/VSC
Brian Henry
Program Manager
Windows Virtualization
Microsoft Corporation
Agenda
Networking
Introduction
Architecture
Configuration
Compatibility Requirements
Wrap-up
Storage
Requirements
Architecture
Other topics
Virtualized Networking
Introduction
Architecture
Configuration
Compatibility Requirements
Wrap-up
Networking Goals
High performance
Avoiding copying data
Security
Strong isolation
Extensibility & Compatibility
Different topologies
Sharing a NIC
Owning a NIC
NAT
Interpartition networking
Hardware, drivers and standards
Networking Solution
Emulation
Emulated DEC 21140 support will still be
provided
For PXE boot
For OSes that aren’t enlightened
Enlightenment
Enlightened networking
Much better performance
Networking devices virtualization-aware
Agenda
Introduction
Architecture
Configuration
Compatibility Requirements
Wrap-up
Networking Components
Virtual network switch
Admin mostly interacts with this
Like physical switch, but can add/delete ports
Virtual network card
Guest-visible component
Emulated network card
Provides emulation where appropriate
Traps on I/O operations
Service stack
Provides configuration, setup/teardown
Provides WMI interface
Runs emulation code
Switch Features
Flexible NIC configuration
Admin can create multiple switches
Admin decides which switch to use for internal,
physical, and guest VMs’ Network Interface Cards
Learning algorithm
Anti-denial-of-service implementation
Port control
Bandwidth control
VLAN (802.1q)
Monitor mode
Offloading support
Large Send Offload
Checksum Offload
Generic VSP/VSC
VSP
VSC
VMBus
Network VSP/VSC
Parent Partition
Child Partition
Parent OS
Internal
NIC
Child OS
Network
VSP
Network
VSC
Virtual Switch
Virtual Machine
NIC
VMBus
Physical NIC
NDIS Interaction With VSC
Child Partition
NDIS
Network VSC
(NDIS Miniport
Driver)
NDIS Interaction With VSP
Parent Partition
NDIS
Virtual Switch
Network VSP
(NDIS IM Driver)
Vendor-Provided
Physical NIC Driver
(NDIS Miniport Driver)
Physical NIC
Agenda
Introduction
Architecture
Configuration
Compatibility Requirements
Wrap-up
Switch Configuration
Per port
Monitor mode
VLAN ID
Bandwidth controls
Per switch
Switch name
Configuration is always through
virtualization stack
Not SNMP, not Telnet
Configuration Sample
Standard
Parent OS Stack
Virtual Switch
Physical
NIC
Child OS
(1) Stack
Child OS
(2) Stack
Configuration Sample
Dual physical NICs
Parent OS Stack
Virtual Switch
Physical
NIC #1
Physical
NIC #2
Child OS
(1) Stack
Child OS
(2) Stack
Configuration Sample
Child Partition Isolation
Parent OS Stack
Virtual Switch
Child OS
(1) Stack
Child OS
(2) Stack
Physical
NIC
Virtual Switch
Child OS
(3) Stack
Child OS
(4) Stack
Configuration Sample
Dedicated NIC
Parent OS Stack
Virtual Switch
Physical
NIC
Virtual Switch
Physical
NIC
Child OS
(3) Stack
Child OS
(1) Stack
Child OS
(2) Stack
Physical NIC Configuration
MAC address
Virtual switch port binding
Virtual NIC Configuration
MAC address
Dynamic
Static
Virtual switch port binding
Microsoft has new IEEE Organizationally
Unique Identifier (OUI) for virtual NICs
OUI is 00-15-5D
Used when dynamically allocated
Avoids collisions with earlier virtualization
efforts
MAC Address Conflicts
Networking infrastructure is not
responsible for MAC address conflict
detection or resolution
Microsoft Windows virtualization in-box
solution will prevent conflicts within scope of
physical machine (best effort)
External management solutions are required
to prevent conflicts outside scope of physical
machine
Configuration Mechanisms
UI
Basic out-of-box configuration
Built on top of WMI, no private API
WMI
Fully documented
Basis for command-line support
Basis for external management apps
WMI Details For Networking
Objects exposed: Switches, ports,
and NICs
Create switches, ports and NICs,
bind to switches
Retrieve statistical/accounting data
Packets sent
Packets received
Packets dropped
Per port and per switch
WMI Object Hierarchy - Switch
CIM_LogicalElement
CIM_Service
CIM_EnabledLogicalElement
CIM_DynamicForwardingEntry
*
*
Msvm_DynamicForwardingEntry
CIM_ServiceAccessPoint
Msvm_TransparentBridgingDynamicForwarding
CIM_NetworkService
CIM_ForwardingService
Msvm_SwitchPortDynamicForwarding
CIM_SwitchService
CIM_TransparentBridgingService
Msvm_SwitchService
Msvm_TransparentBridgingService
1..*
*
1..*
Msvm_SwitchServiceTransparentBridging
CIM_ProtocolEndpoint
CIM_SwitchPort
CIM_LANEndpoint
1
0..*
Msvm_SwitchPort
Msvm_EthernetCable
1
1
1
Msvm_SwitchesAmong
Msvm_SwitchPortConnection
WMI Object Hierarchy - VDEV
VDEV Classes
Switch Classes
CIM_LogicalDevice
CIM_LogicalPort
CIM_NetworkPort
Msvm_EthernetCable
1
1
Msvm_EthernetPortCable
CIM_EthernetPort
1
Msvm_EmulatedEthernetPort
Msvm_SyntheticEthernetPort
Msvm_VirtualComputerSystemEthernetCable
1
CIM_ComputerSystem
WMI Object Hierarchy –
Resource Allocation
CIM_ManagedElement
CIM_SettingData
CIM_ManagedSystemElement
CIM_ResourceAllocationSettingData
CIM_LogicalElement
Msvm_EmulatedEthernetPortSettingData
1
CIM_ResourcePool
Msvm_SyntheticEthernetPortSettingData
1
CIM_EnabledLogicalElement
Msvm_EmulatedEthernetPortResourcePool Msvm_SyntheticEthernetPortResourcePool
1
CIM_LogicalDevice
1
CIM_LogicalPort
CIM_NetworkPort
Msvm_AllocatedFromPool
Msvm_AllocatedFromPool
CIM_EthernetPort
1
Msvm_EmulatedEthernetPort
Msvm_ElementSettingData
Msvm_ElementSettingData
1
Msvm_SyntheticEthernetPort
1
1
Config State And Migration
Config state is kept in XML,
which is private to the VDev
Initial config is achieved through WMI
Config changes made through WMI
XML schema will not be published
XML is used for serialization/
deserialization on store and startup
We have made the assumption that
migration does not depend on state
Policy must be defined above networking
stack by management components
Agenda
Introduction
Architecture
Configuration
Compatibility Requirements
Wrap-up
Compatibility Requirements
NDIS driver
Listen in promiscuous mode
Receive packets with any destination MAC address
Accept the OID_GEN_CURRENT_PACKET_FILTER
with a value of NDIS_PACKET_TYPE_PROMISCUOUS
Flexible source MAC
Transmit packets with any source MAC address
802.3
Ethernet frames
Return NdisMedium802_3 when handling
OID_GEN_MEDIA_SUPPORTED
Note: 802.11 is not compatible and not supported
Compatibility Requirements
(future)
Use PCI bus architecture to enable device
assignment
Each device should have its own PCI BusDevice-Function (BDF)
Agenda
Introduction
Architecture
Configuration
Compatibility Requirements
Wrap-up
Your Input Is Needed
We want your input to help prioritize our
efforts for future versions of the virtual
environments
Device assignment
Chimney (TOE) support
SNMP agent for switch
MAC address lists
Virtualized Storage
Goals
Participants will leave with
an understanding of
How Microsoft intends to enable
efficient storage device virtualization
What options are available for
backing storage
How common enterprise scenarios work
Agenda (Storage)
Requirements
Architecture
Device emulation
Enlightened I/O
Other topics
Extensibility
VHD utility
Clustering
VSS
Requirements
Functional goals
Provide a general purpose, highspeed virtual storage infrastructure
Allow format-independence
between the backing store
and the child partition
Using an image, either ISO or VHD
Using an entire physical drive
Using NAS or SAN
Solution Requirements
Performance
Provide greatly improved performance for
identified scenarios
Minimize code path length
Agenda
Requirements
Architecture
Device emulation
Enlightened I/O
Other topics
Extensibility
VHD utility
Clustering
VSS
Device Emulation
Components
SCSI emulator
Emulates Adaptec 7870 SCSI controller
IDE emulator
Emulates Intel PIIX4 IDE controller
Drivers
Uses native in-box drivers for Windows
Uses drivers common in other OSes
®
Device Emulation
Architecture
Windows Virtualization Stack
Worker Process
Parent
I/O operations
cause traps
Hypervisor intercepts
and redirects
Emulations make
requests of
storage server
Storage server
passes requests
on to a VHD parser
Lots of context
switching
Child
I/O Handlers
IDE
Controller
IDE
Disk
IDE
DVD
Image
Parser
SCSI
Controller
SCSI
Disk
User-Mode
User-Mode
Kernel-Mode
Kernel-Mode
Virtual Storage
Server (VSP)
FileSystem
Volume
File System
Partition
Volume
Partition
Disk
Disk
Virtualization
Stack
Storport
Adaptec
Miniport
StorPort
Miniport
Hypervisor
Device Emulation
Benefits
Pros
Standard set of supported legacy devices
Adequate for non-performance-intensive
applications
Cons
Inadequate performance for some
applications
Device Emulation
When to use
During boot
When using unenlightened
operating systems
Enlightened I/O
Components
Storage VDev
Used to instantiate, configure, and
control enlightened storage devices
Exposes WMI interface
Virtual storage server
Uses SRB protocol to communicate
with client
Top edge interfaces with storage VDev
Enlightened I/O
Components
Image parsers
Translates storage requests and responses
from SRB to backing store format
Parsers
VHD
ISO (read-only)
Pass-through
Enlightened I/O
Components
Virtual storage miniport
Storport miniport
VMBus
Inter-partition communication mechanism
Enlightened I/O
Architecture
Parent
Child
User Mode
User Mode
Kernel Mode
Kernel Mode
File System
Image
Parser
Virtual Storage
Server (VSP)
Volume
Partition
Fast Path Filter
Volume
Partition
S R B s
File System
V M
Disk
Virtual Storage
Miniport (VSC)
Disk
VM SRBs
No I/O traps
Little hypervisor
Involvement
Enlightened
requests make
requests of
storage server
Storage server
passes on requests
VHD parser
Directly to a LUN
Much less context
switching
Viridian Virtualization Stack
Worker Process
StorPort
Miniport
VMBUS
Hardware
StorPort
Enlightened I/O
Supported backing storage
Direct-attached storage
ATA
SCSI
Other
Network-attached storage
Storage area networks
Enlightened I/O
Benefits
Pros
Much better performance than emulation
Cons
Does not work for unenlightened guests
Enlightened I/O
When to use
Wherever possible
Wherever VSCs are available
Agenda
Requirements
Architecture
Device emulation
Enlightened I/O
Other topics
Extensibility
VHD utility
Clustering
VSS
Other Topics
Extensibility
Image parser not extensible in
first release
Third parties are encouraged to add value
for specialized markets
Other Topics
VHD utility functions
Creation
Creating new disks
Compaction
Compacting dynamic disks
Expansion
Expanding dynamic disks beyond
original max size
Merging and forking
Merging differencing disks
Inserting new differencing disks
Other Topics
Clustering and VSS
Clustering “just works”
Host-side or guest-side
Volume Shadowing Services “just works”
Child receives VSS messages from parent
(for enlightened guests)
Call To Action
Be aware of compatibility requirements
Consider your value add
Send us your feedback at
msvirtex@microsoft.com
Questions?
© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.