freebsd vpc
play

FreeBSD/VPC Virtual Private Cloud support (fka SDN) Virtualization - PowerPoint PPT Presentation

FreeBSD/VPC Virtual Private Cloud support (fka SDN) Virtualization Status bhyve(4) is a stable, performant hypervisor Network isolation is not core to bhyve(4) today Use of VNET(9) for manipulating FIBS for tap(4) interfaces is


  1. FreeBSD/VPC Virtual Private Cloud support (fka SDN)

  2. Virtualization Status • bhyve(4) is a stable, performant hypervisor • Network isolation is not core to bhyve(4) today • Use of VNET(9) for manipulating FIBS for tap(4) interfaces is possible, but limited and not performant

  3. Problem • bhyve(4) guests run customer workloads • Cloud providers need a single FIB for the underlay network • Guests run in isolated overlay networks • How do you map guests to their respective overlay network?

  4. Guest Workloads Guest 1 Guest 2 Customer A Customer B em0

  5. Guest Workloads Guest 1 Guest 2 Guest 3 Customer A Customer B Customer B tap51 tap52 bridge0 em0

  6. FreeBSD • bhyve(4) guests run customer workloads • Cloud providers need a single FIB for the underlay network • Guests run in isolated overlay networks • How do you map guests to their respective overlay network?

  7. if_bridge(4) Approach Guest 1 Guest 2 Guest 3 Customer A Customer B Customer B tap50 tap51 tap52 bridge1 bridge2 bridge0 em0

  8. Problems with Current Tools: 
 tap(4) / bridge(4) / vxlan(4) / VNET(9) • tap(4) is slow • bridge(4) is slow • vxlan(4) sends received packets through ip_input() twice (i.e. "sub-optimal") • VNET(9) virtualizes underlay networks, not overlay networks • How do you ARP across machines? • How do you perform vxlan(4) encap?

  9. FreeBSD/vpc Guest 1 Guest 2 Guest 3 Customer A Customer B Customer B vmnic0 vmnic1 vmnic2 vpcsw0 vpcsw1 vpclink0 em0

  10. FreeBSD/vpc Multi-Host Guest 1 Guest 2 Guest 3 Customer A Customer B Customer B vmnic0 vmnic1 vmnic2 vpcsw0 vpcsw1 vpclink0 em0 ??? em0 vpclink0 vpcsw0 vpcsw1 vmnic1 vmnic0 vmnic2 Guest 1 Guest 2 Guest 3 Customer A Customer B Customer B

  11. FreeBSD/vpc Multi-Host Guest 1 Guest 2 Guest 3 Customer A Customer B Customer B vmnic0 vmnic1 vmnic2 vpcsw0 vpcsw1 VNI 987 VNI 123 vpclink0 em0 VXLAN Packets em0 VNI 123 VNI 987 vpclink0 vpcsw0 vpcsw1 vmnic1 vmnic0 vmnic2 Guest 1 Guest 2 Guest 3 Customer A Customer B Customer B

  12. VXLAN to the Rescue • Encapsulates all IP packets as UDP • Adds a preamble to IP packet • Tags packets and with a VXLAN ID, known as a VNI • VXLAN is similar to VLAN tagging, but embeds tagging in the IP header, not in the L2 frame

  13. FreeBSD/vpc Multi-Host Guest 1 Guest 2 Guest 3 Customer A Customer B Customer B vmnic0 vmnic1 vmnic2 vpcsw0 vpcsw1 VNI 987 VNI 123 vpclink0 em0 VXLAN Packets em0 VNI 123 VNI 987 vpclink0 vpcsw0 vpcsw1 vmnic1 vmnic0 vmnic2 Guest 1 Guest 2 Guest 3 Customer A Customer B Customer B

  14. vpc(4) Interfaces • vpcsw(4) - switches packets - one packet per customer, multiple subnets supported in the same switch • vmnic(4) - dedicated guest NIC, looks like a virtio network device to guests • vpcp(4) - plugs vmnic(4) ports into vpcsw(4) switches • vpci(4) - Non- bhyve(4) interface, usable in jails(2) • ethlink(4) - Performs unencapsulated packet forwarding, wraps a cloned or physical ethernet interface • vpclink(4) - Performs VXLAN encapsulation

  15. New System Calls • vpc_open(2) - Creates a new VPC descriptor • vpc_ctl(2) - Manipulates VPC descriptors • Capsicum-like, intended for privilege separation • Intended for idempotent tooling • Makes aggressive use of UUIDs as operator handles to be compatible with Triton

  16. Ongoing Work • Firewalling • Routing • NAT • Userland Control Plane (including setup and teardown of bhyve(4) guests via something not a shell script)

  17. Code • Kernel: 
 https://github.com/joyent/freebsd/tree/projects/VPC • Kernel Libraries: 
 https://github.com/joyent/freebsd/tree/projects/VPC/ libexec/go/src/go.freebsd.org/sys/vpc • Userland tooling: 
 https://github.com/sean-/vpc

  18. Questions?

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend