Professional Documents
Culture Documents
1
Solution Stacks – A User Perspective:
Above and below “The Line”
Service Model WorkFlow Topology App Intent
VM/Container Policy
Service Monitoring Virtual Machine/Container
Auto Healing Life Cycle Manager
Elastic Scaling
2
“The 20th century was about invention, the
21st is about mashups and integration”
Toby Ford
FD.io Mini-Summit Sept, 2016
3
OpenSource Building Blocks
PaaS
Additional
Application Layer / App Server PaaS platforms
Orchestration
Network Control
Operating Systems
Infrastructure
Hardware
4
Composing the NO-STACK-WORLD
Application Layer / App Server The “No-Stack-Developer”
Orchestration
• Compose
• Deploy
VIM Management System
• Test
Network Control
• Evolve
Operating Systems • Iterate
IO Abstraction & Feature Path
Hardware
Evolve/Integrate/Install/Test
5
Building Cloud/NFV Solution Stacks
Service WorkFlow
• OPNFV performs System Integration Model Topology
App Intent
6
Foundational Assets For NFV Infrastructure:
A stack is only as good as its foundation
Service WorkFlow
• Forwarder Model Topology
App Intent
7
Evolving The OPNFV Solution Set:
OPNFV FastDataStacks Project
Components in
Category
• OPNFV develops, integrates, and continuously OPNFV
tests NFV solution stacks: Historically OPNFV
solution stacks only used OVS as virtual Apex, Compass,
Install Tools
forwarder Fuel, Juju
9
FD.io is…
• Project at Linux Foundation • Fd.io Scope:
• Multi-party • Network IO - NIC/vNIC <-> cores/threads
• Multi-project • Packet Processing –
Classify/Transform/Prioritize/Forward/Terminate
• Software Dataplane • Dataplane Management Agents -
• High throughput ControlPlane
• Low Latency
• Feature Rich Bare Metal/VM/Container
• Resource Efficient
• Bare Metal/VM/Container Dataplane Management Agent
• Multiplatform
Packet Processing
Network IO
10
Multiparty: Contributor/Committer Diversity
Multiproject: FD.io Projects
Dataplane Management Agent
Testing/Support
Honeycomb hc2vpp
CSIT
govpp
Packet Processing puppet-fdio
NSH_SFC ONE TLDK
trex
CICN odp4vpp VPP Sandbox
VPP
Network IO
deb_dpdk rpm_dpdk
12
Vector Packet Processor - VPP
13
VPP Universal Fast Dataplane: Performance at Scale [1/2]
Per CPU core throughput with linear multi-thread(-core) scaling
IPv4 Routing IPv6 Routing
Topology:
Service Scale = 1 million IPv4 route entries Service Scale = 0.5 million IPv6 route entries
Phy-VS-Phy
Packet Throughput [Mpps]
250.0 250.0 Packet Throughput [Mpps]
NDR - Zero Frame Loss
NDR - Zero Frame Loss
200.0 200.0
150.0 150.0
12x 40GE
interfaces
100.0 100.0
Packet Traffic
50.0 50.0 Generator
200.0 200.0
150.0 150.0
Software
100.0 100.0 Linux: Ubuntu 16.04.1 LTS
50.0
I/O NIC max-bw
1518B
50.0
I/O NIC max-bw
1518B
Kernel: ver. 4.4.0-45-generic
0.0
IMIX
0.0
IMIX FD.io VPP: VPP v17.01-
2x 40GE
128B Frame 2x 40GE
128B Frame 5~ge234726 (DPDK 16.11)
4x 40GE 4x 40GE
2 core
4 core
6x 40GE
8x 40GE
64B Size 2 core
4 core
6x 40GE
8x 40GE
64B Size
No. of Interfaces 6 core
8 core 10x 40GE
[Bytes] No. of Interfaces 6 core
8 core 10x 40GE
[Bytes]
10 core 12x 40GE 12x 40GE
No. of CPU Cores 10 core
24 45.36 66.72 1288.08
core 109.44 130.8 No. of CPU Cores 12 core
actual m-core scaling actual m-core scaling Resources
19.2 35.36 51.52 67.68 83.84 100
(mid-points interpolated) (mid-points interpolated)
2x 40GE 4x 40GE 6x 40GE 8x 40GE 10x 40GE 12x 40GE 1 physical CPU core per 40GE port
2x 40GE 4x 40GE 6x 40GE 8x 40GE 10x 40GE 12x 40GE
IPv4 Thput [Mpps] IPv6 Thput [Mpps] 2 core 4 core 6 core 8 core 10 core 12 core Other CPU cores available for other
2 core 4 core 6 core 8 core 10 core 12 core
64B 19.2 35.4 51.5 67.7 83.8 100.0 services and other work
64B 24.0 45.4 66.7 88.1 109.4 130.8
128B 19.2 35.4 51.5 67.7 83.8 100.0
128B 24.0 45.4 66.7 88.1 109.4 130.8
IMIX 15.0 30.0 45.0 60.0 75.0 90.0
20 physical CPU cores available in
IMIX 15.0 30.0 45.0 60.0 75.0 90.0
1518B 3.8 7.6 11.4 15.2 19.0 22.8 12x40GE seupt
1518B 3.8 7.6 11.4 15.2 19.0 22.8
I/O NIC max-pps
Lots of Headroom for much more
I/O NIC max-pps 35.8 71.6 107.4 143.2 179 214.8
35.8 71.6 107.4 143.2 179 214.8 throughput and features
NIC max-bw 46.8 93.5 140.3 187.0 233.8 280.5 NIC max-bw 46.8 93.5 140.3 187.0 233.8 280.5
VPP Universal Fast Dataplane: Performance at Scale [2/2]
Per CPU core throughput with linear multi-thread(-core) scaling
L2 Switching L2 Switching with VXLAN Tunneling
Topology:
Service Scale = 100 thousand MAC L2 entries Service Scale = 16 thousand MAC L2 entries
Phy-VS-Phy
Packet Throughput [Mpps] 250.0 Packet Throughput [Mpps]
250.0 NDR - Zero Frame Loss NDR - Zero Frame Loss
200.0
200.0
150.0
12x 40GE
150.0 interfaces
100.0
Packet Traffic
100.0
50.0 Generator
Service Scale = 100 thousand MAC L2 entries Service Scale = 16 thousand MAC L2 entries 2133 MHz, 256 GB Total
6 x 2p40GE Intel XL710=12x40GE
300.0 Packet Throughput [Gbps] 300.0 Packet Throughput [Gbps]
NDR - Zero Frame Loss
NDR - Zero Frame Loss
250.0
250.0
200.0
200.0
Software
150.0
150.0 Linux: Ubuntu 16.04.1 LTS
100.0 Kernel: ver. 4.4.0-45-generic
100.0
I/O NIC max-bw FD.io VPP: VPP v17.01-
50.0
I/O NIC max-bw 1518B
50.0
1518B IMIX 5~ge234726 (DPDK 16.11)
0.0
IMIX 128B Frame
0.0 2x 40GE
4x 40GE
2x 40GE 128B Frame 2 core
4 core
6x 40GE
8x 40GE
64B Size
2 core 4x 40GE
6x 40GE 64B Size No. of Interfaces 6 core
8 core 10x 40GE
[Bytes]
4 core 8x 40GE 12x 40GE
No. of Interfaces 6 core
8 core 10x 40GE [Bytes] No. of CPU Cores 10 core
12 core Resources
10 core 12x 40GE
No. of CPU Cores 12 core 1 physical CPU core per 40GE port
actual m-core scaling actual m-core scaling
20.8 38.36 55.92 73.48 91.04 108.6 11.6 25.12 38.64 52.16 65.68 79.2
(mid-points interpolated) (mid-points interpolated) Other CPU cores available for other
2x 40GE 4x 40GE 6x 40GE 8x 40GE 10x 40GE 12x 40GE 2x 40GE 4x 40GE 6x 40GE 8x 40GE 10x 40GE 12x 40GE
MAC Thput [Mpps] 2 core 4 core 6 core 8 core 10 core 12 core
services and other work
MAC Thput [Mpps] 2 core 4 core 6 core 8 core 10 core 12 core
64B 20.8 38.4 55.9 73.5 91.0 108.6 64B 11.6 25.1 38.6 52.2 65.7 79.2 20 physical CPU cores available in
128B 20.8 38.4 55.9 73.5 91.0 108.6 128B 11.6 25.1 38.6 52.2 65.7 79.2 12x40GE seupt
IMIX 15.0 30.0 45.0 60.0 75.0 90.0 IMIX 10.5 21.0 31.5 42.0 52.5 63.0
1518B 3.8 7.6 11.4 15.2 19.0 22.8 1518B 3.8 7.6 11.4 15.2 19.0 22.8
Lots of Headroom for much more
I/O NIC max-pps throughput and features
35.8 71.6 107.4 143.2 179 214.8 I/O NIC max-pps
35.8 71.6 107.4 143.2 179 214.8
NIC max-bw 46.8 93.5 140.3 187.0 233.8 280.5 NIC max-bw 46.8 93.5 140.3 187.0 233.8 280.5
VPP: How does it work?
1
vhost-user- af-packet- 2
… graph nodes are optimized
dpdk-input
input input
Packet 0 to fit inside the instruction cache …
Packet 1
ethernet- Packet 2
input
Packet 3 Microprocessor
Packet 4
mpls-input
lldp-input
arp-input
cdp-input l2-input ip4-input ip6-input Packet 5
...-no-
checksum Packet 6 3 Instruction Cache
Packet 7
Packet 8
ip4-lookup-
ip4-lookup
mulitcast Packet 9 4 Data Cache
Packet 10
interface-
output
… packets moved through … packets are pre-fetched,
graph nodes in vector … into the data cache …
Packet processing is decomposed into a
directed graph node …
dispatch fn()
… instruction cache is warm with the instructions while packets in vector
from a single graph node … Get pointer to vector
while 4 or more packets
Microprocessor
PREFETCH #3 and #4
PROCESS #1 and #2
4 ethernet-input
ASSUME next_node same as last packet
Segment Routing v6
VPP Userspace Host Stack Security Groups
SR policies with weighted SID lists
TCP stack Routed interface support Binding SID
DHCPv4 relay multi-destination L4 filters with IPv6 Extension Headers SR steering policies
DHCPv4 option 82 SR LocalSIDs
DHCPv6 relay multi-destination Framework to expand local SIDs w/plugins
DHPCv6 relay remote-id
ND Proxy
API
Move to CFFI for Python binding iOAM
Python Packaging improvements
UDP Pinger w/path fault isolation
SNAT CLI over API
IOAM as type 2 metadata in NSH
Improved C/C++ language binding
CGN: Configurable port allocation IOAM raw IPFIX collector and analyzer
CGN: Configurable Address pooling Anycast active server selection
CPE: External interface
DHCP support
NAT64, LW46
IPFIX
Collect IPv6 information
Per flow state
22
Key Takeaways
• Feature Rich
• High Performance
• 480 Gbps/200mpp at scale (8 million routes)
• Many Use Cases:
• Bare Metal/Embedded/Cloud/Containers/NFVi/VNFs
23
Solutions Stacks:
24
What is “networking-vpp”
• FD.io / VPP is a fast software dataplane that can be used to speed up
communications for any kind of VM or VNF.
• Goal is to make VPP a first class citizen component in OpenStack for NFV
and Cloud applications
25
Networking-vpp: Design Principles
• Main design goals are: simplicity, robustness, scalability
26
Networking-vpp: current feature set
• Network types
• VLAN: supported since version 16.09
• VXLAN-GPE: supported since version 17.04
• Port types
• VM connectivity done using fast vhostuser interfaces
• TAP interfaces for services such as DHCP
• Security
• Security-groups based on VPP stateful ACLs
• Port Security can be disabled for true fastpath
• Role Based Access Control and secure TLS connections for etcd
• Layer 3 Networking
• North-South Floating IP
• North-South SNAT
• East-West Internal Gateway
• Robustness
• If Neutron commits to it, it will happen
• Component state resync in case of failure: recovers from restart of Neutron, the agent and VPP
27
Networking-vpp, what is your problem?
• You have a controller and you tell it to do something
• It talks to a device to get the job done
• Did the message even get sent, or did the controller crash first? Does
the controller believe it sent the message when it restarts?
• Did the message get sent and the controller crash before it got a reply?
• Did it get a reply but crash before it processed it?
• If the message was sent and you got a reply, did the device get
programmed?
• If the message was sent and you didn’t get a reply, did the device get
programmed?
28
Networking-vpp, what is your problem?
• If you give a device a list of jobs to do, it’s really hard to make
sure it gets them all and acts on them
• If you give a device a description of the state you want it to get
to, the task can be made much easier
29
Networking-vpp: overall architecture
Neutron Server
ML2 VPP journalin
g
Mechanism Driver
VM VM VM VM VM VM
HTTP/json
vhostuser vhostuser
Agent
Agent
ML2
ML2
VPP VPP
dpdk dpdk
vlan / flat
30
network
Networking-vpp: Resync mechanism
• The agent marks everything it puts in VPP
• If the agent restarts, it comes up with no knowledge of
what’s in VPP, so it reads those marks back
• While it’s been gone, things may have happened and
VM etcd will have changed
• For each item, it can see if it’s correct or if it’s out of
date (for instance, deleted), and it can also spot new
vhostuser ports it’s been asked to make
• With that information, it does the minimum necessary to
Agent
ML2
31
Networking-vpp: HA etcd deployment
The
service
• etcd is a strictly consistent store
that can run with multiple
Client processes
• They talk to each other as they
get the job done
• A client can talk to any of them
• Various deployment models –
The
processes
the client can use a proxy or talk
directly to the etcd processes
32
Networking-vpp: Role Based Access
Control
Neutron Server
• Security Hardening
• TLS communication
between nodes and
ETCD :
• Confidentiality and
integrity of the HTTPS/json
messages in transit and
authentication of ETCD
server.
• ETCD RBAC :
• Limit the impact of a
compromised Compute
Node to the node itself
Compute Node 1 Compute Node 2
33
Networking-vpp: Roadmap
• Next version will be networking-vpp 17.07
• Security Groups
• support for remote-group-ID
• Support for additional protocol fields
• VXLAN-GPE
• support for ARP handling in VPP
• Resync states in case of agent restart
• Improved layer 3 support:
• support for HA (VRRP based)
• Resync for layer ports
34
Solution Stacks for enhanced Network Control:
35
Towards a Stack with enhanced Network
Control
• FD.io/VPP
• Highly scalable, high
performance, extensible virtual
forwarder
• OpenDaylight Network Controller
• Extensible controller platform
• Decouple business logic from network constructs:
Group Based Policy as mediator between business
logic and network constructs
• Support for a diverse set of network devices
• Clustering for HA
36
Solution Stack Ingredients and their Evolution
• OpenDaylight ...
37
Example: Creating a Neutron vhostuser port on VPP
POST PORT
Neutron (id=<uuid>, host_id=<vpp>, vif_type=vhostuser)
Update Port
Neutron NorthBound
Map Port to GBP Endpoint
Resolve Policy
GBP Renderer Manager
Apply policy, update nodes
VPP Renderer
configure interfaces Bridge domain and tunnel config
Netconf/
YANG over Netconf
Topology Manager (vBD)
Netconf/ Configure bridge domain on nodes
YANG over NetConf
Honeycomb Honeycomb
VM vhostuser VXLAN Tunnel
VPP 1 VPP 2
38
FastDataStacks: OS – ODL(L2) – FD.io
Example: 3 node setup: 1 x Controller, 2 x Compute
Internet
OVS (br-ex)
VPP VPP
39
FastDataStacks: OS – ODL(L3) – FD.io
Example: 3 node setup: 1 x Controller, 2 x Compute
Internet
VPP VPP
40
FastDataStacks: Status
Colorado 1.0 (September 2016)
• Base O/S-ODL(L2)-VPP stack (Infra: Neutron / GBP Mapper / GBP Renderer / VBD / Honeycomb / VPP)
• Automatic Install
• Basic system-level testing
• L2 networking using ODL (no east-west security groups), L3 networking uses qrouter/OVS
• Overlays: VXLAN, VLAN
Colorado 3.0 (December 2016)
• Enhanced O/S-ODL(L2)-VPP stack (Infra complete: Neutron / GBP Mapper / GBP Renderer / VBD / Honeycomb / VPP)
• Enhanced system-level testing
• L2 networking using ODL (incl. east-west security groups), L3 networking uses qrouter/OVS
• O/S-VPP (Infra: Neutron ML2-VPP / Networking-vpp-agent / VPP)
• Automatic Install, Overlays: VLAN
41
FastDataStacks – Next Steps
• Simple and efficient forwarding model
• Clean separation of “forwarding” and “policy”:
• Pure Layer 3 with distributed routing: Every VPP node serves as a router, “no bridging anywhere”
• Contracts/Isolation managed via Group Based Policy
• Flexile Topology Services: LISP integration, complementing VBD
• Analytics integration into the solution stacks
• Integration of OPNFV projects:
• Bamboo (PNDA.io for OPNFV)
• Virtual Infrastructure Networking Assurance (VINA)
• NFVbench (Full Stack NFVI one-shot benchmarking)
• Container Stack using FD.io/VPP
• Integrating Docker, K8s, Contiv, FD.io/VPP container networking, Spinnaker
42
An NFV Solution Stack is only as good as its foundation
43
Thank you
44