#CLUS Open Source for Networking The FD.io/VPP example
Giles Heron, Principal Engineer, Cisco BRKSDN-2262
#CLUS Agenda
• The Open-Source Networking Landscape • Open-Source and Standards Bodies
• OpenDaylight & ONAP
• Fd.io VPP - The Universal Dataplane
• VPP with VMs and Containers
• What’s Next?
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 3 Cisco Webex Teams
Questions? Use Cisco Webex Teams (formerly Cisco Spark) to chat with the speaker after the session How 1 Find this session in the Cisco Events App 2 Click “Join the Discussion” 3 Install Webex Teams or go directly to the team space 4 Enter messages/questions in the team space
Webex Teams will be moderated cs.co/ciscolivebot#BRKSDN-2262 by the speaker until June 18, 2018.
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 4 The Open-Source Networking Landscape The Open-Source Networking Landscape
Orchestration
SDN Controllers
Analytics Routing Control/Management Plane Stacks
Data-Plane Test & Integration
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 6 The Open-Source Networking Landscape
Zebra ONAP Orchestration OSM Quagga OpenDaylight bird SDN Controllers PNDA Routing ONOS Analytics Stacks Routing Honeycomb Control/Management Plane ExaBGPStacks
GoBGP OpenFlow OVS OPNFV Data-Plane Test & Integration P4 VPP
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 7 Open-Source and Standards Bodies LOTS of SDOs How long will they be Individually relevant?
• Lots of SDOs. • Fighting for turf and for relevance • Which will be relevant going forward?
Claiming standardization responsibility for technology that has already been “defacto” standardized by an OSS community.
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 9 LOTS OF OPEN-SOURCE PROJECTS Choose wisely
• There are a LOT of OSS “sources” and partners: • Foundations - at least 8 major foundations for networking projects • Loose Projects - lots of unaffiliated projects under Github • Massive Organizations - use open source as a market moving force
• OSS as strategic market and tech development tool by large organizations is unstoppable • Interdependency requires SDOs to develop competencies, cultures and communities and outreach of their own • Liaison Mechanism Failure
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 10 OpenDaylight and ONAP #CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 12 OpenDaylight – Simplified Architecture
Network Applications Applications Orchestration & Services
NETCONF Server RESTCONF APIs
Service Functions Base Network Functions Controller Platform Configuration Statistics Forwarding TopologyTopology ... InventoryInventory ... PCEP TopologyExporter InventoryManager Subsystem Manager Rules Manager ExporterExporter ManagerManager
Model-Driven Service Abstraction Layer (MD-SAL)
OpenFlow Netconf Southbound Interfaces 1.0/1.3 BGP-LS PCEP OVSDB LISP Controller Client & Protocol Plugins
Network Devices
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 13 ONAP - Architecture
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 14 fd.io VPP: The Universal Dataplane fd.io VPP: The Universal Dataplane • 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 - Control Plane • High throughput • Low Latency • Feature Rich Bare Metal/VM/Container • Resource Efficient Dataplane Management Agent • Bare Metal/VM/Container • Multi-platform Packet Processing
Network IO
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 16 fd.io in the overall stack Application Layer/App Server
Orchestration
Network Controller
Data Plane Services Dataplane Packet Network IO Management Agent Processing
Operating System
Hardware
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 17 Multi-party: Broad Membership Chip Vendors Service Providers Network Vendors
Integrators
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 18 Multi-party: Broad Contribution
Qiniu Yandex
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 19 Code Activity
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 20 Multi-project: fd.io Projects
Dataplane Management Agent Honeycomb hc2vpp Testing/Support CSIT P4VPP GoVPP Packet Processing puppet-fdio NSH_SFC ONE TLDK CICN odp4vpp Sandbox trex VPP
Network IO deb_dpdk rpm_dpdk
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 21 fd.io VPP – Vector Packet Processing Compute Optimized SW Network Platform
Bare-metal / VM / Container Packet Processing Software Platform • High performance Dataplane Management Agent • Linux user space • Runs on compute CPUs: Packet Processing - And “knows” how to run them well !
Shipping at volume in server & embedded Network IO products
22 #CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 22 fd.io VPP – How does it work? Compute Optimized SW Network Platform Packet processing is decomposed … packets move through … graph nodes are optimized 1 2 3 into a directed graph of nodes … graph nodes in vector … to fit inside the instruction cache … Packet 0 vhost-user- af-packet- dpdk-input input input Packet 1 Microprocessor ethernet- Packet 2 input Packet 3 3 Instruction Cache Packet 4 arp-inputcdp-input l2-input ip4-input ip6-input lldp-input ...-no- mpls-input Packet 5 checksum Packet 6 4 Data Cache ip4-lookup- ip4-lookup* mulitcast Packet 7
Packet 8 mpls-policy- ip4-load- ip4-rewrite- ip4- encap balance transit midchain Packet 9 … packets are pre-fetched 4 Packet 10 into the data cache. interface- output
* Each graph node implements a “micro-NF”, a “micro-NetworkFunction” processing packets. Makes use of modern Intel® Xeon® Processor micro-architectures. Instruction cache & data cache always hot Minimized memory latency and usage.
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 23 Packet fd.io VPP - Architecture Packet Processing 0 1 2 3 …n
Vector of n packets
dpdk-input vhost-user-input af-packet-input … Packet Processing Graph Input Graph Node ethernet-input Graph Node
ip6-input ip4-input mpls-input … arp-input
ip6-lookup ip4-lookup ip6-rewrite ip6-local ip4-local ip4-rewrite
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 24 Packet fd.io VPP - Architecture Splitting the Vector 0 1 2 3 …n
Vector of n packets
dpdk-input vhost-user-input af-packet-input … Packet Processing Graph Input Graph Node ethernet-input Graph Node
ip6-input ip4-input mpls-input … arp-input
ip6-lookup ip4-lookup ip6-rewrite ip6-local ip4-local ip4-rewrite
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 25 Packet fd.io VPP - Architecture Plugins 0 1 2 3 …n
Vector of n packets Hardware Plugin
hw-accel-input dpdk-input vhost-user-input af-packet-input … Packet Processing Graph Input Graph Node ethernet-input Graph Node Skip sftw nodes where work is ip6-input ip4-input mpls-input arp-input done by … Plugins are: hardware Plugin First class citizens /usr/lib/vpp_plugins/foo.so already That can: ip4-lookup Add graph nodes ip6-lookup custom-1 Add API Rearrange graph ip6-rewrite ip6-local ip4-local ip4-rewrite custom-2 Can be built independently of VPP source tree #CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 26 fd.io VPP - Architecture Programmability Example: Honeycomb
Control Plane Protocol Request Message NETCONF/YANG or RESTCONF 900k request/s
Linux Host Linux Host
Shared Memory Shared Memory … … Request Queue Honeycomb Request Queue Agent VPP Agent VPP … … Response Queue Response Queue
Can use C/Java/Python/Lua/Go Language bindings Async Response Message
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 27 Fast Virtual Network Services
With Universal Terabit* Network Data Plane FD.io Fast Network Data Plane Software Defined Network – Cloud Network Services, IPVPN and Internet Security
vNF Services Sites 1..N IPVPN and L2VPN Overlays*, IPSec/SSL Crypto
Enterprise1 vRouter vNF
vNF Services Sites 1..N IPVPN and L2VPN Overlays*, IPSec/SSL Crypto
Enterprise2 vRouter vNF SERVICE VIEW SERVICE vNF Services Sites 1..N IPVPN and L2VPN Overlays*, IPSec/SSL Crypto
Enterprise3 vRouter vNF
Host-1 – Server-SKL Host-2 – Server-SKL
2CPU 2CPU Network I/O 480 Gbps Network I/O 480 Gbps Crypto I/O 100 Gbps Crypto I/O 100 Gbps 4x 25GE IP Network 25GE x4 4x 4x 1x Private or Public 4x 4x 1x 2x 100GE 100GE x2 10GE 25GE 100GE 10GE 25GE 100GE
10GE 25GE 100GE 10GE 25GE 100GE
PHYSICAL VIEW PHYSICAL 1-4 5-8 9 1-4 5-8 9
IPv4/v6 IPv4/v6 IPv4/v6 IPv4/v6 IPv4/v6 IPv4/v6 Sites 1..N Sites 1..N Sites 1..N Services Services Services
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 28 #CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 29 VPP Universal Dataplane: Features
Hardware Platforms Routing Switching Network Services
Pure Userspace - X86,ARM 32/64,Power IPv4/IPv6 VLAN Support DHCPv4 client/proxy Raspberry Pi 14+ MPPS, single core Single/ Double tag DHCPv6 Proxy Hierarchical FIBs L2 forwd w/EFP/BridgeDomain concepts MAP/LW46 – IPv4aas Multimillion FIB entries VTR – push/pop/Translate (1:1,1:2, 2:1,2:2) MagLev-like Load Interfaces Source RPF Mac Learning – default limit of 50k addr Identifier Locator Addressing Thousands of VRFs Bridging NSH SFC SFF’s & NSH Proxy DPDK/Netmap/AF_Packet/TunTap Controlled cross-VRF lookups Split-horizon group support/EFP Filtering LLDP Vhost-user - multi-queue, reconnect, Multipath – ECMP and Unequal Cost Proxy Arp BFD Jumbo Frame Support Arp termination Policer IRB - BVI Support with RouterMac assigmt Multiple million Classifiers – Flooding Arbitrary N-tuple Language Bindings Segment Routing Input ACLs Interface cross-connect L2 GRE over IPSec tunnels C/Java/Python/Lua SR MPLS/IPv6 Including Multicast Inband iOAM Telemetry export infra (raw IPFIX) Tunnels/Encaps Security iOAM for VXLAN-GPE (NGENA) LISP SRv6 and iOAM co-existence GRE/VXLAN/VXLAN-GPE/LISP-GPE/NSH Mandatory Input Checks: iOAM proxy mode / caching IPSEC TTL expiration iOAM probe and responder Including HW offload when available LISP xTR/RTR header checksum L2 Overlays over LISP and GRE encaps L2 length < IP length Multitenancy ARP resolution/snooping Multihome ARP proxy Monitoring MPLS Map/Resolver Failover SNAT Source/Dest control plane support Ingress Port Range Filtering Simple Port Analyzer (SPAN) MPLS over Ethernet/GRE Map-Register/Map-Notify/RLOC-probing Per interface whitelists IP Flow Export (IPFIX) Deep label stacks supported Policy/Security Groups/GBP (Classifier) Counters for everything Lawful Intercept
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 30 Deployment Models
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 31 VPP with VMs and Containers VPP with VMs and Containers - Overview
Application Virtualized Network Connectivity Functions
VMs Networking-vpp Honeycomb
Containers Contiv-VPP Ligato
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 33 Networking-vpp
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 34 Honeycomb
• HC core functionality is split into 2 layers:
1) Data processing layer • Pipeline processing data from northbound interfaces down to translation layer
2) Translation layer • Invoked by above layer to handle configuration updates or when polling operational state from VPP • Specific translation code lives in this layer in a form of extensions/plugins
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 35 • Can deliver complete container networking solution entirely from userspace • Legacy apps can still use the kernel host stack Contiv-VPP Architecture in the same architecture • Replace all eth/kernel interfaces with memif/userspace interfaces. • Apps can add VCL library for Higher Performance (bypass Kernel host stack and use VPP TCP stack) K8s Master
High Performance Legacy Cloud- K8s State Cloud- Legacy High Performance Apps Apps Native VNFs Reflector Native VNFs Apps Apps
PodPod PodPod PodPod PodPod PodPod PodPod Pod Pod Pod Kubelet Kubelet Pod Pod Pod Envoy Sidecar App App VNF Contiv-VPP VNF App App Envoy Sidecar Etcd
VPP VPP Kernel Host stack CNI K8s policy & state CNI Kernel Host stack TCP TCP memif distribution memif Stack tapv2/veth tapv2/veth Stack
VPP Agent Agent VPP Contiv-VPP vswitch … Contiv-VPP vswitch IPv4/IPv6/SRv6 Network
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 36 Contiv-VPP Rendering VXLAN Overlay Node 2
Node 1 Kernel App App Node 3
Kernel App App Kernel App App tap-v2 BVI BD BVI BVI
BD VXLAN Mesh Single VNI BD Cloud (Overlay)Network
Data Plane Network
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 37 Creating BD with BVI
Create BD
Create VXLAN Tunnel (one per rmt node)
Create BVI
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 38 Ligato Architecture
• Kubernetes does not provide a way to stitch micro-services together today • Ligato allows you to wire the data plane together into a service topology Define Define Define • Network functions can now become part of the service topology Topology Services Topology
K8s Master
High Performance Legacy Cloud- Apps Apps Native VNFs K8S State Ligato PodPod PodPod AgentPodPod Reflector Controller Pod Pod Pod Kubelet Envoy Sidecar App App VNF
VPP Kernel Host stack CNI TCP Contiv-VPP Etcd CRI Stack tapv2/veth memif
VPP Agent
Contiv-VPP vswitch
IPv4/IPv6/SRv6 Network
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 39 Service Function Chaining with Ligato Logical Representation Ingress Network Egress Network Ingress NF NF NF Egress Ingress Classifier Router 1 2 3 Router Egress Classifier
Placement (K8s) Rendering Topology
Physical Representation
CNF1 CNF2 CNF CNF CNF3 CNF VPP VPP … VPP VPP VPP … VPP
VPP vSwitch VPP vSwitch 10.1.0.127
Overlay Tunnel Overlay Tunnel Overlay Tunnel
Ingress Classifier Egress Classifier
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 40 Intra-Server Rendering Point to Point – 2 options based on policy
Direct East/West Memif Memif via vSwitch
CNF1 CNF2 CNF1 CNF2 memif memif
vSwitch policy
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 41 VXLAN Rendering Point to Point
Node 1 Node 2
CNF1 CNF2
memif memif policy VXLAN Tunnel policy vSwitch vSwitch Dedicated VNI
Data Plane Network
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 42 Creating VXLAN xConnect
Create memif
Create VXLAN Tunnel
Create xConnect
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 43 What’s Next? VPP: Opportunities to Contribute
• Firewall • Get the Code, Build the Code, Run the Code
• IDS • Try the vpp user demo
• Hardware Accelerators • Install vpp from binary packages • Control plane – support your (yum/apt) favorite SDN Protocol Agent • Install Honeycomb from binary packages • Spanning Tree • Read/Watch the Tutorials • DPI • Join the Mailing Lists • Test tools • Join the IRC Channels
• Explore the wiki
• Join FD.io as a member
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 45 Contiv-VPP on GitHub
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 46 Ligato on GitHub
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 47 Complete your online session evaluation
Give us your feedback to be entered into a Daily Survey Drawing. Complete your session surveys through the Cisco Live mobile app or on www.CiscoLive.com/us.
Don’t forget: Cisco Live sessions will be available for viewing on demand after the event at www.CiscoLive.com/Online.
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 48 Continue Demos in Walk-in Meet the Related your the Cisco self-paced engineer sessions education campus labs 1:1 meetings
#CLUS BRKSDN-2262 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 49 Thank you
#CLUS #CLUS