SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
Implementing SR-IOV Failover for
Windows Guests During Migration
Annie Li - Principal Software Engineer, Oracle
Yan Vugenfirer - CEO, Daynix
http://github.com/virtio-win/
Agenda
• Virtio-win drivers
• Windows guest terminology
• The problem
• Different solutions
• Failover solution with virtio-net on Windows
guest
• Upstream: https://github.com/virtio-win/kvm-guest-
drivers-windows/
• Drivers for the major virtio devices:
• virtio-net
• virtio-blk, virtio-scsi
• virtio-balloon, virtio-serial, virtio-vsock, virtio-input,
virtio-rng
• Panic, fw-cfg
• INF files (pci-serial, sm-bus on Q35)
Drivers for Windows
• WDF drivers for the “simple” devices
• Miniport architecture for network and
storage
• NDIS
• Storport
• Scsiport
VirtIO Drivers for Windows
• Supported OS
• Windows XP, Vista, 7, 8, 8.1, 10 (up to
recent builds)
• Widows Server 2003, 2008, 2008R2,
2012, 2012R2, 2016, 2019
VirtIO Drivers for Windows
• Send PRs - https://github.com/virtio-
win/kvm-guest-drivers-windows/
pulls
• Code changes should pass WHQL
• We are running WHQL CI on
upstream (HCK-CI)
How to Contribute
Contributors
• And others
NDIS (Network Driver Interface Specification) Architecture
NotifyObject
Network	
configuration	
subsystem
HW	device HW	device
Protocol	drivers	
Protocol	
Driver
Miniport	Drivers
Network	Device
Miniport	driver
Miniport	edge
Protocol	edge
Intermediate	
drivers
	Protocol	driver
Intermediate	driver
	Protocol	driver
Miniport	driver
NDIS
User	space
• NDIS miniport driver
• Basic driver package:
• INF file – installation description
• SYS file – driver binary
• PDB file – symbols for debugging
• CAT file - package digital signature
Virtio-net (NetKVM) Driver for Windows
The Problem – Live Migration and SR-IOV
Overview of SR-IOV Migration Solutions
• Previous efforts and vendor specific HW
solutions
• Hyper-V and Windows
• Linux and VirtIO
Previous Efforts
• KVM Forum 2015 Live Migration with SR-IOV
Pass-through - Weidong Han, Huawei
• KVM Forum 2018 - Live Migration Support for
GPU with SR-IOV - Zheng Xiao, Alibaba
Cloud; Jerry Jiang & Ken Xue, AMD
• KVM Forum 2020 (parallel session) - Device
Keepalive State for Local Live Migration and
VMM Fast Restart - Jason Zeng, Intel
Overview of Software Solutions
• Windows NIC Teaming
• Windows MUX Intermediate driver
• Hyper-V Solution
Windows NIC Teaming
• Similar to bond in Linux
• Provides failover capability
• Configured through GUI or Powershell
Cmdlets in user space
Windows MUX Intermediate Driver
• Kernel space solution with various models
• One-to-two model for SR-IOV live
migration
Windows MUX Intermediate Driver
TCPIP
VF	miniport	
driver
					
NotifyObject
Open	Adapter1 Open	Adapter2
Network	
configuration	
subsystem
VirtIO	network	
device
Virtual	Function	
network	device
Protocol	driver	
Protocol	
Driver
Miniport	Driver
Network	Device
Virtual	Adapter
NetKVM
Miniport	edge
Protocol	edge
One-to-Two	MUX	
Intermediate	
Driver
Internal	Binding
Other	Protocols
ndisndis
ndis
ndis
ndis
• Netkvm	is	Open	Source	driver	code	for	VirtIO	network	 • VF	miniport	driver	is	provided	by	vendor
NDIS(Kernel	Space)
User	space
Network Binding of NIC Teaming or MUX
Hyper-V VM Network
• Network virtual service client(NetVSC )
• Synthetic data path
• SR-IOV data path
• Two Installation files(INF)
• Share same driver binary
Hyper-V SR-IOV VF Failover
TCPIP Other	
Protocols
VF	Miniport	
Driver
					Hyper-V	NetVSC	Driver
Hyper-V	NetVSC	
Miniport	Driver
Hyper-V	NetVSC	
Protocol	Driver
Miniport	Driver 1:1	
binding
Hyper-V	Virtual	
Network	Device
Virtual	Function	
Device
Virtual	Network	
Device
Protocol	Driver	
Protocol	
Driver
ndisvf
ndisvf
• No	Bond/Teaming	
• No	NotifyObject	
• No	new	Virtual	Adapter
NDIS(Kernel	space)
Network Binding in Hyper-V
Comparison Summary
• MUX Driver model:
• Complicated, New virtual adapter,
Restore offload, NotifyObject.
• Hyper-V model:
• Simplified, Appropriate for Hyper-V
• 2-netdev model in KVM
Windows Network of VirtIO and VF
TCPIP Other	Protocols
VF	Miniport	
Driver
NetKVM	
Miniport	Driver
VirtIO	Network	
Device
Virtual	Function	
Device
Protocol	Driver
Miniport	Driver
Virtual	Network	
Device
ndis
ndis
NDIS(Kernel	sapce)
TCPIP Other	Protocols
VF	Miniport	
Driver
					VirtIO	NetKVM	Driver
NotifyObject
Network	
configuration	
subsystem
Virtual	Function	
Device
Protocol	Driver
Miniport	Driver
Virtual	Network	
Device
1:1	
binding ndis
ndis
ndis
ndis
VirtIO SR-IOV VF Failover
VirtIO	Network	
Device
VirtIO	Protocol	
Driver
NetKVM	Miniport	
Driver
User	Space
NDIS	in	Kernel	Space
• Netkvm	is	Open	Source	driver	code	for	VirtIO	network	 • VF	miniport	driver	is	provided	by	vendor
Protocol Driver in 2-netdev Model
• Behaves like a bridge
• VF adapter is coupled to VirtIO adapter
with the same MAC address
• Handling TX/RX network data
• Object identifiers(OIDs) are wrapped and
forwarded, offloads are propagated
Network Binding of VirtIO SR-IOV
Known Issues
• DHCP issue
• Only happens in specific scenario
• Statistics is missing
• NetKVM driver needs to keep the statistics of packets sent to
or received from VF driver
• Old Windows system
• Windows Server 2003 and Windows XP
• Need to add VF PNP to Notification Object code or to the
registry
• Possible race during boot?
VirtIO and SR-IOV Failover
• VirtIO specification specifics
• Feature bit called
VIRTIO_NET_F_STANDBY. It is
appropriate for 3-netdev model in Linux,
but not for Windows 2-netdev model.
Installation
• Before
• INF for Miniport
• After
• INF for Miniport
• INF for Protocol
driver definition
and Notify Object
• Not part of the guest tools installer: https://github.com/virtio-win/virtio-win-guest-tools-installer
WHQL Certification
• Before
• Certification of
miniport
• Automatic review
• After
• Two steps
certification
• Automatic review for
miniport
• Manual review of
protocol driver and
the final package
Performance
From	VM	to	Remote	Host(NetPerf,	32	vcpus,	32	TCP	Streams,	MTU=9000)
0
25
50
75
100
Default	Default 16k	32k 16k	128k 32k	64k 32k		256k 64k	128k 128k	128k 256k	256k
VF 2-netdev NetKVM
• x	axis:	“TX/RX	Buffer	size”	and	“TX/RX	Socket	Buffer	size” • y	axis:	Network	throughput	from	0	to	100G
Performance
From	Remote	Host	to	VM(NetPerf,	32	vcpus,	32	TCP	Streams,	MTU=9000)
0
25
50
75
100
Default	Default 16k	32k 16k	128k 32k	64k 32k		256k 64k	128k 128k	128k 256k	256k
VF 2-netdev NetKVM
• x	axis:	“TX/RX	Buffer	size”	and	“TX/RX	Socket	Buffer	size” • y	axis:	Network	throughput	from	0	to	100G
Performance
From	VM	to	VM	on	Remote	Host	(NetPerf,	32	vcpus,	32	TCP	Streams,	MTU=9000)
0
25
50
75
100
Default	Default 16k	32k 16k	128k 32k	64k 32k		256k 64k	128k 128k	128k 256k	256k
VF 2-netdev NetKVM
• x	axis:	“TX/RX	Buffer	size”	and	“TX/RX	Socket	Buffer	size” • y	axis:	Network	throughput	from	0	to	100G
annie.li@oracle.com yan@daynix.com
Links – source code
• virtio-win drivers source code:
• https://github.com/virtio-win/kvm-guest-drivers-
windows
• MiniPort and Protocol driver:
• https://github.com/virtio-win/kvm-guest-drivers-
windows/tree/master/NetKVM
• Notification object:
• https://github.com/virtio-win/kvm-guest-drivers-
windows/tree/master/NetKVM/NotifyObject
Links – download binary drivers
• https://docs.fedoraproject.org/en-US/quick-docs/
creating-windows-virtual-machines-using-virtio-
drivers/index.html
Links – related presentations
• KVM Forum 2015 Live Migration with SR-IOV Pass-through - Weidong Han,
Huawei
• https://www.youtube.com/watch?v=vnwEnzVp9Zo
• https://www.linux-kvm.org/images/9/9a/03x07-Juniper-Weidong_Han-
LiveMigrationWithSR-IOVPass-through.pdf
• KVM Forum 2018 - Live Migration Support for GPU with SR-IOV - Zheng Xiao,
Alibaba Cloud; Jerry Jiang & Ken Xue, AMD
• https://events19.linuxfoundation.org/wp-content/uploads/2017/12/Live-
Migration-Support-for-GPU-with-SRIOV-Challenges-and-Solution-Zheng-Xiao-
Alibaba-Cloud-Jerry-Jiang-Ken-Xue-AMD.pdf
• KVM Forum 2020 (parallel session) - Device Keepalive State for Local Live
Migration and VMM Fast Restart - Jason Zeng, Intel
• https://sched.co/eE3W
Implementing SR-IOv failover for Windows guests during live migration

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE SystemsXPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
 
LFNW2014 Advanced Security Features of Xen Project Hypervisor
LFNW2014 Advanced Security Features of Xen Project HypervisorLFNW2014 Advanced Security Features of Xen Project Hypervisor
LFNW2014 Advanced Security Features of Xen Project Hypervisor
 
XPDS16: Hypervisor-based Security: Vicarious Learning via Introspektioneerin...
XPDS16:  Hypervisor-based Security: Vicarious Learning via Introspektioneerin...XPDS16:  Hypervisor-based Security: Vicarious Learning via Introspektioneerin...
XPDS16: Hypervisor-based Security: Vicarious Learning via Introspektioneerin...
 
XPDS16: Xenbedded: Xen-based client virtualization for phones and tablets - ...
XPDS16:  Xenbedded: Xen-based client virtualization for phones and tablets - ...XPDS16:  Xenbedded: Xen-based client virtualization for phones and tablets - ...
XPDS16: Xenbedded: Xen-based client virtualization for phones and tablets - ...
 
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...
 
XPDS16: libvirt and Tools: What's New and What's Next - James Fehlig, SUSE
XPDS16: libvirt and Tools: What's New and What's Next - James Fehlig, SUSEXPDS16: libvirt and Tools: What's New and What's Next - James Fehlig, SUSE
XPDS16: libvirt and Tools: What's New and What's Next - James Fehlig, SUSE
 
Virtunoid: Breaking out of KVM
Virtunoid: Breaking out of KVMVirtunoid: Breaking out of KVM
Virtunoid: Breaking out of KVM
 
XPDS16: CPUID handling for guests - Andrew Cooper, Citrix
XPDS16:  CPUID handling for guests - Andrew Cooper, CitrixXPDS16:  CPUID handling for guests - Andrew Cooper, Citrix
XPDS16: CPUID handling for guests - Andrew Cooper, Citrix
 
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, HuaweiXPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
 
XPDS16: AMD's virtualization memory encryption technology - Brijesh Singh, A...
XPDS16:  AMD's virtualization memory encryption technology - Brijesh Singh, A...XPDS16:  AMD's virtualization memory encryption technology - Brijesh Singh, A...
XPDS16: AMD's virtualization memory encryption technology - Brijesh Singh, A...
 
Evolution of ota_update_in_the_io_t_world
Evolution of ota_update_in_the_io_t_worldEvolution of ota_update_in_the_io_t_world
Evolution of ota_update_in_the_io_t_world
 
XPDS16: Xen Development Update
XPDS16: Xen Development UpdateXPDS16: Xen Development Update
XPDS16: Xen Development Update
 
Kernel Recipes 2015: Kernel packet capture technologies
Kernel Recipes 2015: Kernel packet capture technologiesKernel Recipes 2015: Kernel packet capture technologies
Kernel Recipes 2015: Kernel packet capture technologies
 
Zumasys Citrix Top 10 Tips and Tricks
Zumasys Citrix Top 10 Tips and TricksZumasys Citrix Top 10 Tips and Tricks
Zumasys Citrix Top 10 Tips and Tricks
 
kdump: usage and_internals
kdump: usage and_internalskdump: usage and_internals
kdump: usage and_internals
 
Sw update elce2017
Sw update elce2017Sw update elce2017
Sw update elce2017
 
XPDS16: Hypervisor Enforced Data Loss Prevention - Neil Sikka, A1LOGIC
XPDS16: Hypervisor Enforced Data Loss Prevention - Neil Sikka, A1LOGICXPDS16: Hypervisor Enforced Data Loss Prevention - Neil Sikka, A1LOGIC
XPDS16: Hypervisor Enforced Data Loss Prevention - Neil Sikka, A1LOGIC
 
Rootlinux17: An introduction to Xen Project Virtualisation
Rootlinux17:  An introduction to Xen Project VirtualisationRootlinux17:  An introduction to Xen Project Virtualisation
Rootlinux17: An introduction to Xen Project Virtualisation
 
XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...
XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...
XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...
 
XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...
XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...
XPDS16: Xen Live Patching - Updating Xen Without Rebooting - Konrad Wilk, Ora...
 

Similar a Implementing SR-IOv failover for Windows guests during live migration

Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0
guest72e8c1
 
Windows server 8 hyper v networking (aidan finn)
Windows server 8 hyper v networking (aidan finn)Windows server 8 hyper v networking (aidan finn)
Windows server 8 hyper v networking (aidan finn)
hypervnu
 
OpenStack and OpenContrail for FreeBSD platform by Michał Dubiel
OpenStack and OpenContrail for FreeBSD platform by Michał DubielOpenStack and OpenContrail for FreeBSD platform by Michał Dubiel
OpenStack and OpenContrail for FreeBSD platform by Michał Dubiel
eurobsdcon
 

Similar a Implementing SR-IOv failover for Windows guests during live migration (20)

DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
 
Windows server 8 and hyper v
Windows server 8 and hyper vWindows server 8 and hyper v
Windows server 8 and hyper v
 
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
 
RMLL / LSM 2009
RMLL / LSM 2009RMLL / LSM 2009
RMLL / LSM 2009
 
Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0
 
Unikernels: Rise of the Library Hypervisor
Unikernels: Rise of the Library HypervisorUnikernels: Rise of the Library Hypervisor
Unikernels: Rise of the Library Hypervisor
 
Deploying vn fs with kubernetes pods and vms
Deploying vn fs with kubernetes pods and vmsDeploying vn fs with kubernetes pods and vms
Deploying vn fs with kubernetes pods and vms
 
Deploying vn fs with kubernetes pods and vms
 Deploying vn fs with kubernetes pods and vms Deploying vn fs with kubernetes pods and vms
Deploying vn fs with kubernetes pods and vms
 
Unikernels: the rise of the library hypervisor in MirageOS
Unikernels: the rise of the library hypervisor in MirageOSUnikernels: the rise of the library hypervisor in MirageOS
Unikernels: the rise of the library hypervisor in MirageOS
 
Windows server 8 hyper v networking (aidan finn)
Windows server 8 hyper v networking (aidan finn)Windows server 8 hyper v networking (aidan finn)
Windows server 8 hyper v networking (aidan finn)
 
Linux on Hyper-V
Linux on Hyper-VLinux on Hyper-V
Linux on Hyper-V
 
Windows Server 8 Hyper V Networking
Windows Server 8 Hyper V NetworkingWindows Server 8 Hyper V Networking
Windows Server 8 Hyper V Networking
 
Project ACRN hypervisor introduction
Project ACRN hypervisor introduction Project ACRN hypervisor introduction
Project ACRN hypervisor introduction
 
OpenStack - JobShop @Iași, 2016
OpenStack - JobShop @Iași, 2016OpenStack - JobShop @Iași, 2016
OpenStack - JobShop @Iași, 2016
 
OpenStack and OpenContrail for FreeBSD platform by Michał Dubiel
OpenStack and OpenContrail for FreeBSD platform by Michał DubielOpenStack and OpenContrail for FreeBSD platform by Michał Dubiel
OpenStack and OpenContrail for FreeBSD platform by Michał Dubiel
 
Easily emulating full systems on amazon fpg as
Easily emulating full systems on amazon fpg asEasily emulating full systems on amazon fpg as
Easily emulating full systems on amazon fpg as
 
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
 
6WINDGate™ - Powering the New-Generation of IPsec Gateways
6WINDGate™ - Powering the New-Generation of IPsec Gateways6WINDGate™ - Powering the New-Generation of IPsec Gateways
6WINDGate™ - Powering the New-Generation of IPsec Gateways
 
NFV в сетях операторов связи
NFV в сетях операторов связиNFV в сетях операторов связи
NFV в сетях операторов связи
 
5. IO virtualization
5. IO virtualization5. IO virtualization
5. IO virtualization
 

Más de Yan Vugenfirer

Más de Yan Vugenfirer (7)

Receive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-netReceive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototyping
 
Windows network teaming
Windows network teamingWindows network teaming
Windows network teaming
 
Rebuild presentation during Docker's Birthday party
Rebuild presentation during Docker's Birthday partyRebuild presentation during Docker's Birthday party
Rebuild presentation during Docker's Birthday party
 
Contributing to open source using Git
Contributing to open source using GitContributing to open source using Git
Contributing to open source using Git
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
UsbDk at a Glance 
UsbDk at a Glance UsbDk at a Glance 
UsbDk at a Glance 
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Implementing SR-IOv failover for Windows guests during live migration

  • 1. Implementing SR-IOV Failover for Windows Guests During Migration Annie Li - Principal Software Engineer, Oracle Yan Vugenfirer - CEO, Daynix http://github.com/virtio-win/
  • 2. Agenda • Virtio-win drivers • Windows guest terminology • The problem • Different solutions • Failover solution with virtio-net on Windows guest
  • 3. • Upstream: https://github.com/virtio-win/kvm-guest- drivers-windows/ • Drivers for the major virtio devices: • virtio-net • virtio-blk, virtio-scsi • virtio-balloon, virtio-serial, virtio-vsock, virtio-input, virtio-rng • Panic, fw-cfg • INF files (pci-serial, sm-bus on Q35) Drivers for Windows
  • 4. • WDF drivers for the “simple” devices • Miniport architecture for network and storage • NDIS • Storport • Scsiport VirtIO Drivers for Windows
  • 5. • Supported OS • Windows XP, Vista, 7, 8, 8.1, 10 (up to recent builds) • Widows Server 2003, 2008, 2008R2, 2012, 2012R2, 2016, 2019 VirtIO Drivers for Windows
  • 6. • Send PRs - https://github.com/virtio- win/kvm-guest-drivers-windows/ pulls • Code changes should pass WHQL • We are running WHQL CI on upstream (HCK-CI) How to Contribute
  • 8. NDIS (Network Driver Interface Specification) Architecture NotifyObject Network configuration subsystem HW device HW device Protocol drivers Protocol Driver Miniport Drivers Network Device Miniport driver Miniport edge Protocol edge Intermediate drivers Protocol driver Intermediate driver Protocol driver Miniport driver NDIS User space
  • 9. • NDIS miniport driver • Basic driver package: • INF file – installation description • SYS file – driver binary • PDB file – symbols for debugging • CAT file - package digital signature Virtio-net (NetKVM) Driver for Windows
  • 10. The Problem – Live Migration and SR-IOV
  • 11. Overview of SR-IOV Migration Solutions • Previous efforts and vendor specific HW solutions • Hyper-V and Windows • Linux and VirtIO
  • 12. Previous Efforts • KVM Forum 2015 Live Migration with SR-IOV Pass-through - Weidong Han, Huawei • KVM Forum 2018 - Live Migration Support for GPU with SR-IOV - Zheng Xiao, Alibaba Cloud; Jerry Jiang & Ken Xue, AMD • KVM Forum 2020 (parallel session) - Device Keepalive State for Local Live Migration and VMM Fast Restart - Jason Zeng, Intel
  • 13. Overview of Software Solutions • Windows NIC Teaming • Windows MUX Intermediate driver • Hyper-V Solution
  • 14. Windows NIC Teaming • Similar to bond in Linux • Provides failover capability • Configured through GUI or Powershell Cmdlets in user space
  • 15. Windows MUX Intermediate Driver • Kernel space solution with various models • One-to-two model for SR-IOV live migration
  • 16. Windows MUX Intermediate Driver TCPIP VF miniport driver NotifyObject Open Adapter1 Open Adapter2 Network configuration subsystem VirtIO network device Virtual Function network device Protocol driver Protocol Driver Miniport Driver Network Device Virtual Adapter NetKVM Miniport edge Protocol edge One-to-Two MUX Intermediate Driver Internal Binding Other Protocols ndisndis ndis ndis ndis • Netkvm is Open Source driver code for VirtIO network • VF miniport driver is provided by vendor NDIS(Kernel Space) User space
  • 17. Network Binding of NIC Teaming or MUX
  • 18. Hyper-V VM Network • Network virtual service client(NetVSC ) • Synthetic data path • SR-IOV data path • Two Installation files(INF) • Share same driver binary
  • 19. Hyper-V SR-IOV VF Failover TCPIP Other Protocols VF Miniport Driver Hyper-V NetVSC Driver Hyper-V NetVSC Miniport Driver Hyper-V NetVSC Protocol Driver Miniport Driver 1:1 binding Hyper-V Virtual Network Device Virtual Function Device Virtual Network Device Protocol Driver Protocol Driver ndisvf ndisvf • No Bond/Teaming • No NotifyObject • No new Virtual Adapter NDIS(Kernel space)
  • 21. Comparison Summary • MUX Driver model: • Complicated, New virtual adapter, Restore offload, NotifyObject. • Hyper-V model: • Simplified, Appropriate for Hyper-V • 2-netdev model in KVM
  • 22. Windows Network of VirtIO and VF TCPIP Other Protocols VF Miniport Driver NetKVM Miniport Driver VirtIO Network Device Virtual Function Device Protocol Driver Miniport Driver Virtual Network Device ndis ndis NDIS(Kernel sapce)
  • 23. TCPIP Other Protocols VF Miniport Driver VirtIO NetKVM Driver NotifyObject Network configuration subsystem Virtual Function Device Protocol Driver Miniport Driver Virtual Network Device 1:1 binding ndis ndis ndis ndis VirtIO SR-IOV VF Failover VirtIO Network Device VirtIO Protocol Driver NetKVM Miniport Driver User Space NDIS in Kernel Space • Netkvm is Open Source driver code for VirtIO network • VF miniport driver is provided by vendor
  • 24. Protocol Driver in 2-netdev Model • Behaves like a bridge • VF adapter is coupled to VirtIO adapter with the same MAC address • Handling TX/RX network data • Object identifiers(OIDs) are wrapped and forwarded, offloads are propagated
  • 25. Network Binding of VirtIO SR-IOV
  • 26. Known Issues • DHCP issue • Only happens in specific scenario • Statistics is missing • NetKVM driver needs to keep the statistics of packets sent to or received from VF driver • Old Windows system • Windows Server 2003 and Windows XP • Need to add VF PNP to Notification Object code or to the registry • Possible race during boot?
  • 27. VirtIO and SR-IOV Failover • VirtIO specification specifics • Feature bit called VIRTIO_NET_F_STANDBY. It is appropriate for 3-netdev model in Linux, but not for Windows 2-netdev model.
  • 28. Installation • Before • INF for Miniport • After • INF for Miniport • INF for Protocol driver definition and Notify Object • Not part of the guest tools installer: https://github.com/virtio-win/virtio-win-guest-tools-installer
  • 29. WHQL Certification • Before • Certification of miniport • Automatic review • After • Two steps certification • Automatic review for miniport • Manual review of protocol driver and the final package
  • 30. Performance From VM to Remote Host(NetPerf, 32 vcpus, 32 TCP Streams, MTU=9000) 0 25 50 75 100 Default Default 16k 32k 16k 128k 32k 64k 32k 256k 64k 128k 128k 128k 256k 256k VF 2-netdev NetKVM • x axis: “TX/RX Buffer size” and “TX/RX Socket Buffer size” • y axis: Network throughput from 0 to 100G
  • 31. Performance From Remote Host to VM(NetPerf, 32 vcpus, 32 TCP Streams, MTU=9000) 0 25 50 75 100 Default Default 16k 32k 16k 128k 32k 64k 32k 256k 64k 128k 128k 128k 256k 256k VF 2-netdev NetKVM • x axis: “TX/RX Buffer size” and “TX/RX Socket Buffer size” • y axis: Network throughput from 0 to 100G
  • 32. Performance From VM to VM on Remote Host (NetPerf, 32 vcpus, 32 TCP Streams, MTU=9000) 0 25 50 75 100 Default Default 16k 32k 16k 128k 32k 64k 32k 256k 64k 128k 128k 128k 256k 256k VF 2-netdev NetKVM • x axis: “TX/RX Buffer size” and “TX/RX Socket Buffer size” • y axis: Network throughput from 0 to 100G
  • 34. Links – source code • virtio-win drivers source code: • https://github.com/virtio-win/kvm-guest-drivers- windows • MiniPort and Protocol driver: • https://github.com/virtio-win/kvm-guest-drivers- windows/tree/master/NetKVM • Notification object: • https://github.com/virtio-win/kvm-guest-drivers- windows/tree/master/NetKVM/NotifyObject
  • 35. Links – download binary drivers • https://docs.fedoraproject.org/en-US/quick-docs/ creating-windows-virtual-machines-using-virtio- drivers/index.html
  • 36. Links – related presentations • KVM Forum 2015 Live Migration with SR-IOV Pass-through - Weidong Han, Huawei • https://www.youtube.com/watch?v=vnwEnzVp9Zo • https://www.linux-kvm.org/images/9/9a/03x07-Juniper-Weidong_Han- LiveMigrationWithSR-IOVPass-through.pdf • KVM Forum 2018 - Live Migration Support for GPU with SR-IOV - Zheng Xiao, Alibaba Cloud; Jerry Jiang & Ken Xue, AMD • https://events19.linuxfoundation.org/wp-content/uploads/2017/12/Live- Migration-Support-for-GPU-with-SRIOV-Challenges-and-Solution-Zheng-Xiao- Alibaba-Cloud-Jerry-Jiang-Ken-Xue-AMD.pdf • KVM Forum 2020 (parallel session) - Device Keepalive State for Local Live Migration and VMM Fast Restart - Jason Zeng, Intel • https://sched.co/eE3W