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.