VPP overview
fd.io Foundation
Agenda
• Overview
• Structure, layers and features
• Anatomy of a graph node
Integrations
•
• FIB 2.0
• Future Directions
• New features
• Performance
• Continuous Integration and Testing
• Summary
fd.io Foundation
Introducing VPP: the vector packet processor
fd.io Foundation
Introducing VPP (the vector packet processor)
Accelerating the dataplane since 2002
Fast, Scalable and Determinisic
• 14+ Mpps per core
• Tested to 1TB
• Scalable FIB: supporting millions of entries
• 0 packet drops, ~15µs latency
Optimized
• DPDK for fast I/O
• ISA: SSE, AVX, AVX2, NEON ..
• IPC: Batching, no mode switching, no context
switches, non-blocking
• Multi-core: Cache and memory efficient
Netconf/Yang
REST
...
Management Agent
Packet Processing: VPP
vhost-user-
input
af-packet-
input
dpdk-input
mpls-input
lldp-input
arp-inputcdp-input
ethernet-
input
l2-input
ip4-input
ip6-input
...-no-
checksum
ip4-lookup
ip4-lookup-
mulitcast
mpls-policy-
encap
ip4-load-
balance
ip4-rewrite-
transit
ip4-
midchain
interface-
output
Network I/O
fd.io Foundation
Introducing VPP
Extensible and Flexible modular design
• Implement as a directed graph of nodes
• Extensible with plugins, plugins are equal
citizens.
• Configurable via CP and CLI
Developer friendly
• Deep introspection with counters and tracing
facilities.
• Runtime counters with IPC and errors
information.
• Pipeline tracing facilities, life-of-a-packet.
• Developed using standard toolchains.
fd.io Foundation
Netconf/Yang
REST
...
Management Agent
Packet Processing: VPP
vhost-user-
input
af-packet-
input
dpdk-input
mpls-input
lldp-input
arp-inputcdp-input
ethernet-
input
l2-input
ip4-input
ip6-input
...-no-
checksum
ip4-lookup
ip4-lookup-
mulitcast
mpls-policy-
encap
ip4-load-
balance
ip4-rewrite-
transit
ip4-
midchain
interface-
output
Network I/O
Introducing VPP
Fully featured
• L2: VLan, Q-in-Q, Bridge Domains, LLDP ...
• L3: IPv4, GRE, VXLAN, DHCP, IPSEC …
• L3: IPv6, Discovery, Segment Routing …
• L4: TCP, UDP …
• CP: API, CLI, IKEv2 …
Integrated
• Language bindings
• Open Stack/ODL (Netconf/Yang)
• Kubernetes/Flanel (Python API)
• OSV Packaging
fd.io Foundation
Netconf/Yang
REST
...
Management Agent
Packet Processing: VPP
vhost-user-
input
af-packet-
input
dpdk-input
mpls-input
lldp-input
arp-inputcdp-input
ethernet-
input
l2-input
ip4-input
ip6-input
...-no-
checksum
ip4-lookup
ip4-lookup-
mulitcast
mpls-policy-
encap
ip4-load-
balance
ip4-rewrite-
transit
ip4-
midchain
interface-
output
Network I/O
VPP: structure, layers and features
fd.io Foundation
VPP: VPP Layering
Layer [2, 3, 4]
VNET
VPP networking source
• Devices
•
• Session Management
• Overlays
• Control Plane
• Traffic Management
Plugins
• Plugins can be in-tree:
Plugins
VNET
VLIB
VPP Infra
fd.io Foundation
SNAT,
Policy ACL,
Flow Per Packet,
ILA,
IOAM,
LB,
SIXRD,
VCGN
• Separate fd.io project:
NSH_SFC
VLIB
VPP application management
•
buffer, buffer management
graph node, node management
•
tracing, counters
•
•
threading
• CLI
and most importantly …
• main()
VPP INFRA
Library of function primitives, for
• memory management
• memory operations
•
•
•
•
vectors
rings
hashing
timers