Virtual Networking in KVM Arnd Bergmann KVM Forum 2010 Virtual Networking in KVM 802.1Qbg and 802.1Qbh Performance Open vSwitch 2 / 10 Arnd Bergmann c 2010 IBM Corporation Virtual Networking in KVM 802.1Qbg VEPA 3 / 10 Arnd Bergmann c 2010 IBM Corporation Virtual Networking in KVM 802.1Qbh Port Extender VM 1 VM 2 VM 3 VM 4 VM 5 Hypervisor S-VLAN Port Extender Slave External switch S-VLAN Port Extender Master 4 / 10 Arnd Bergmann c 2010 IBM Corporation Virtual Networking in KVM 802.1Qbg Multichannel VEPA 5 / 10 Arnd Bergmann c 2010 IBM Corporation Virtual Networking in KVM 802.1Qbg protocols LLDP: Link-layer discovery protocol, new TLVs EVB: Edge Virtual Bridging CDCP: Channel Discovery and Conguration Protocol VDP: VSI discovery protocol Draft: http://www.ieee802.org/1/files/public/ docs2010/bg-joint-evb-0410v1.pdf 6 / 10 Arnd Bergmann c 2010 IBM Corporation Virtual Networking in KVM Virtual Station Interface Discovery Protocol VSl State Machine Station (One lnstance per VSl) localChange-PreAssoc PreAssoc_NAK_Rx ll ACKTimeout || DeAssocAck Rx vsiError || localChange-DeAssoc localChange-Assoc " vsiLocalTLV = NULL vsiState = UNASSOCATED PREA88OC_PROCE88NG TxTLV(PreASSOC) StartACKTimer() PREA88OCATED vsiError = ProcRxAndSetCf g (vsiRemoteTLV,vsiLocalTLV,vsiState); f (!vsiError) vsiState = PREASSOCATED localChange-PreAssoc || ACllVlTY_TlMER_Event PreAssoc_ACK_Rx DEA88OC_ PROCE88 NG TxTLV(DeASSOC) StartACKTimer() A88OC_PROCE88NG TxTLV(ASSOC) StartACKTimer() A88OCATED vsiError = ProcRxAndSetCf g (vsiRemoteTLV,vsiLocalTLV,vsiState); f (!vsiError) vsiState = ASSOCATED (Assoc_NAK_Rx && VsiState == !Assoc) ll ACKTimeout || DeAssocAck Rx Assoc_ACK_Rx || (Assoc_NAK_Rx && VsiState == Assoc) localChange - Assoc || ACllVlTY_TlMER_Event localChange - PreAssoc localChange - Assoc ACKTimeout || DeAssoc Rx vsiError || localChange- DeAssoc Local VSl-START EXlT vsiError || DeAssocAck Rx 7 / 10 Arnd Bergmann c 2010 IBM Corporation Virtual Networking in KVM Network stack alternatives Guest user space Guest kernel Host kernel (KVM) Host User (qemu) Host kernel (tap) Host kernel (bridge) Device driver NIC Hardware Guest user space Guest kernel Host kernel (KVM) vhost-net macvtap Device driver NIC Hardware Classic Current Guest user space Guest kernel Device driver NIC Hardware Passthrough IOMMU Guest user space Guest kernel vhost-net macvtap Device driver NIC Hardware My Goal Host kernel (KVM) missing features... 8 / 10 Arnd Bergmann c 2010 IBM Corporation Virtual Networking in KVM Open vSwitch http://www.openvswitch.org/ 9 / 10 Arnd Bergmann c 2010 IBM Corporation Virtual Networking in KVM Open vSwitch OpenFlow standard based Alternative to bridge, macvlan/macvtap Use cases: Distributed Layer 3 switch Security Appliance drivers/staging 10 / 10 Arnd Bergmann c 2010 IBM Corporation Virtual Networking in KVM This work represents the view of the author and does not necessarily represent the view of IBM. IBM, IBM (logo), e-business (logo), pSeries, e (logo) server, and xSeries are trademarks or registered trademarks of International Business Machines Corporation in the United States and/or other countries. Linux is a registered trademark of Linus Torvalds. Other company, product, and service names may be trademarks or service marks of others. 10 / 10 Arnd Bergmann c 2010 IBM Corporation