Difference between revisions of "VPP Usability Track"
From fd.io
Mackonstan (Talk | contribs) (Created page with "Creating VPP Usability Track") |
Mackonstan (Talk | contribs) |
||
Line 1: | Line 1: | ||
− | + | ==<font color=red>WORK-IN-PROGRESS - This is a planning page for addressing VPP usability aspects</font>== | |
+ | |||
+ | ==Goals== | ||
+ | # VPP working out of the box for most/all baseline use cases. | ||
+ | # Profiled by target VPP consumers - use cases, users. | ||
+ | #* Use1 - OPNFV/FDS | ||
+ | #* Use2 - Programmable Virtual Forwarder | ||
+ | #* Use3 - OpenStack NFVI | ||
+ | #* Use4 - vSwitch for VMs | ||
+ | |||
+ | ==VPP Use Case Requirements== | ||
+ | |||
+ | Functional requirements of target VPP consumers - wip - current snapshot: | ||
+ | # Use1 - OPNFV/FDS - VXLAN+L2BD+vhost, VLAN+L2BD+vhost, BVI, VRF, IPv4, IPv6, SNAT, ACL/classifier | ||
+ | # Use2 - Programmable Virtual Forwarder - VXLAN+L2BD+vhost, IPv4, IPv6, more TBC | ||
+ | # Use3 - OpenStack NFVI - VXLAN+L2BD+vhost | ||
+ | # Use4 - vSwitch for VMs - VLAN+L2BD+vhost, high-density VNF VMs (30VMs, 102vhost) | ||
+ | |||
+ | ==User guide== | ||
+ | Outline of user guide that needs to be produced: | ||
+ | |||
+ | # Installation per Linux distro - Ubuntu, Centos, RHEL, other - Ed, Sean | ||
+ | #* Packaging | ||
+ | #** https://wiki.fd.io/view/VPP/Installing_VPP_binaries_from_packages#CentOS_7.2_-_VPP_master_branch_RPMs_.28in_development.29 | ||
+ | #** sudo yum install vpp-python-api | ||
+ | #* Manual install - ?? | ||
+ | #* Automated install - Ed, Sean | ||
+ | #** see outline in email Ed, Sean "Re: 161026-vpp-usability-review - note", 27 October 2016 at 22:39:47 BST | ||
+ | # Environment - MK, FB | ||
+ | #* <complete the list of areas and combinations> | ||
+ | #* Linux environment fundamentals | ||
+ | #* SW Dependencies | ||
+ | #** Linux kernel ver | ||
+ | #** QEMU ver | ||
+ | #** DPDK ver | ||
+ | #* HW Dependencies | ||
+ | #** x86_64 microarchitectures | ||
+ | #** NICs | ||
+ | # Initial configuration - MK, PM, DM for questions | ||
+ | #* Startup configuration - startup.conf ... | ||
+ | #* Interfaces | ||
+ | # Optimizing VPP performance - MK, PM, PF&DM for questions | ||
+ | #* Tuning performance | ||
+ | #* VM and vhost-user considerations | ||
+ | #* Useful host performance telemetry | ||
+ | #* Useful VPP performance telemetry | ||
+ | # Sample use cases - Chris Metz with team will work it | ||
+ | #* L2 switching | ||
+ | #** with VMs (vhost) | ||
+ | #** with tunnels (vxlan, lisp-gpe) | ||
+ | #** with security-groups | ||
+ | #* IP routed forwarding | ||
+ | #** with VMs (vhost) | ||
+ | #** with tunnels (vxlan, lisp-gpe) | ||
+ | #** with security-filters - iacl, cop-whitelist, cop-blacklist | ||
+ | #* <add more> | ||
+ | #* <structure differently?> | ||
+ | # Doc Generation and Online Presentation | ||
+ | #* Consider [http://readthedocs.org readthedocs] approach | ||
+ | #** Based on [http://www.sphinx-doc.org/ sphinx] using [http://github.com/snide/sphinx_rtd_theme readthedocs theme] | ||
+ | #** Used today by [http://www.dpdk.org/doc dpdk doc] | ||
+ | |||
+ | ==Programmer's Guide== | ||
+ | |||
+ | Programmer's guide - KRB for TOC, OT to help | ||
+ | # VPP API guide | ||
+ | |||
+ | ==VPP Performance Considerations== | ||
+ | |||
+ | Here initial points to be addressed for optimizing VPP performance on specific compute HW configurations: | ||
+ | # cpu core configuration and vpp thread mappings | ||
+ | #* phy interfaces can be placed to thread/core | ||
+ | #* vhost interfaces are round-robined - new feature for placement | ||
+ | #** do after multi-queue patch by Pierre | ||
+ | # vhost - qsz, cpu jitter, reconnect, interop qemu-virtio | ||
+ | #* hard to install, doesn't work all the time, crashes | ||
+ | # dpdk - performance with selection of NICs | ||
+ | #* more detailed documentation about baremetal installations | ||
+ | #** vs. just Vagrant | ||
+ | #* dpdk new rls setup recommendations - per NIC basis | ||
+ | #* dpdk.org is not publishing performance numbers | ||
+ | #* csit can't address it - need manual tests and analysis | ||
+ | # vpp self-diagnostics for optimal setup verification | ||
+ | |||
+ | ==Minimal setup installation for vhost+VM connectivity== | ||
+ | |||
+ | Minimal setup installation for vhost+VM connectivity: | ||
+ | # TRex | ||
+ | # ansible scripts developed in CSIT | ||
+ | # Consumability of CSIT-perf RF and python libraries | ||
+ | |||
+ | ==Important test areas - MK== | ||
+ | |||
+ | Listing of important areas to increase VPP test coverage: | ||
+ | # negative tests - add/remove interfaces/routes/MAC entries | ||
+ | # box-full tests NIC-NIC | ||
+ | # box-full tests NIC-VM-NIC | ||
+ | # stress-tests - add/remove VMs | ||
+ | # negative weird setups - mixed L2BD, IRB, IPv4, IPv6 forwarding | ||
+ | # soak-tests | ||
+ | # tap devices - add/remove | ||
+ | # negative stress/weird tests | ||
+ | |||
+ | ==VPP Diagnostics and telemetry== | ||
+ | |||
+ | Following VPP diagnostics and telemetry aspects need to be addressed: | ||
+ | # live health and performance metrics | ||
+ | #* compute HW | ||
+ | #* Linux kernel | ||
+ | #* VM guest | ||
+ | # collectd + influxdb + grafana | ||
+ | #* VPP interface counters | ||
+ | #* VPP vector size |
Revision as of 21:41, 6 November 2016
Contents
[hide]WORK-IN-PROGRESS - This is a planning page for addressing VPP usability aspects
Goals
- VPP working out of the box for most/all baseline use cases.
- Profiled by target VPP consumers - use cases, users.
- Use1 - OPNFV/FDS
- Use2 - Programmable Virtual Forwarder
- Use3 - OpenStack NFVI
- Use4 - vSwitch for VMs
VPP Use Case Requirements
Functional requirements of target VPP consumers - wip - current snapshot:
- Use1 - OPNFV/FDS - VXLAN+L2BD+vhost, VLAN+L2BD+vhost, BVI, VRF, IPv4, IPv6, SNAT, ACL/classifier
- Use2 - Programmable Virtual Forwarder - VXLAN+L2BD+vhost, IPv4, IPv6, more TBC
- Use3 - OpenStack NFVI - VXLAN+L2BD+vhost
- Use4 - vSwitch for VMs - VLAN+L2BD+vhost, high-density VNF VMs (30VMs, 102vhost)
User guide
Outline of user guide that needs to be produced:
- Installation per Linux distro - Ubuntu, Centos, RHEL, other - Ed, Sean
- Packaging
- https://wiki.fd.io/view/VPP/Installing_VPP_binaries_from_packages#CentOS_7.2_-_VPP_master_branch_RPMs_.28in_development.29
- sudo yum install vpp-python-api
- Manual install - ??
- Automated install - Ed, Sean
- see outline in email Ed, Sean "Re: 161026-vpp-usability-review - note", 27 October 2016 at 22:39:47 BST
- Packaging
- Environment - MK, FB
- <complete the list of areas and combinations>
- Linux environment fundamentals
- SW Dependencies
- Linux kernel ver
- QEMU ver
- DPDK ver
- HW Dependencies
- x86_64 microarchitectures
- NICs
- Initial configuration - MK, PM, DM for questions
- Startup configuration - startup.conf ...
- Interfaces
- Optimizing VPP performance - MK, PM, PF&DM for questions
- Tuning performance
- VM and vhost-user considerations
- Useful host performance telemetry
- Useful VPP performance telemetry
- Sample use cases - Chris Metz with team will work it
- L2 switching
- with VMs (vhost)
- with tunnels (vxlan, lisp-gpe)
- with security-groups
- IP routed forwarding
- with VMs (vhost)
- with tunnels (vxlan, lisp-gpe)
- with security-filters - iacl, cop-whitelist, cop-blacklist
- <add more>
- <structure differently?>
- L2 switching
- Doc Generation and Online Presentation
- Consider readthedocs approach
- Based on sphinx using readthedocs theme
- Used today by dpdk doc
- Consider readthedocs approach
Programmer's Guide
Programmer's guide - KRB for TOC, OT to help
- VPP API guide
VPP Performance Considerations
Here initial points to be addressed for optimizing VPP performance on specific compute HW configurations:
- cpu core configuration and vpp thread mappings
- phy interfaces can be placed to thread/core
- vhost interfaces are round-robined - new feature for placement
- do after multi-queue patch by Pierre
- vhost - qsz, cpu jitter, reconnect, interop qemu-virtio
- hard to install, doesn't work all the time, crashes
- dpdk - performance with selection of NICs
- more detailed documentation about baremetal installations
- vs. just Vagrant
- dpdk new rls setup recommendations - per NIC basis
- dpdk.org is not publishing performance numbers
- csit can't address it - need manual tests and analysis
- more detailed documentation about baremetal installations
- vpp self-diagnostics for optimal setup verification
Minimal setup installation for vhost+VM connectivity
Minimal setup installation for vhost+VM connectivity:
- TRex
- ansible scripts developed in CSIT
- Consumability of CSIT-perf RF and python libraries
Important test areas - MK
Listing of important areas to increase VPP test coverage:
- negative tests - add/remove interfaces/routes/MAC entries
- box-full tests NIC-NIC
- box-full tests NIC-VM-NIC
- stress-tests - add/remove VMs
- negative weird setups - mixed L2BD, IRB, IPv4, IPv6 forwarding
- soak-tests
- tap devices - add/remove
- negative stress/weird tests
VPP Diagnostics and telemetry
Following VPP diagnostics and telemetry aspects need to be addressed:
- live health and performance metrics
- compute HW
- Linux kernel
- VM guest
- collectd + influxdb + grafana
- VPP interface counters
- VPP vector size