CICN Community InformationCentric Networking FD io The Universal

  • Slides: 26
Download presentation
CICN Community Information-Centric Networking

CICN Community Information-Centric Networking

FD. io: The Universal Dataplane • Project at Linux Foundation • Multi-party • Multi-project

FD. io: The Universal Dataplane • Project at Linux Foundation • Multi-party • Multi-project • Software Dataplane • • • High throughput Low Latency Feature Rich Resource Efficient Bare Metal/VM/Container Multiplatform • Fd. io Scope: • Network IO - NIC/v. NIC <-> cores/threads • Packet Processing – Classify/Transform/Prioritize/Forward/Terminate • Dataplane Management Agents - Control. Plane Bare Metal/VM/Container Dataplane Management Agent Packet Processing Network IO fd. io Foundation 2

Fd. io in the overall stack Application Layer/App Server Orchestration v. ICN Network Controller

Fd. io in the overall stack Application Layer/App Server Orchestration v. ICN Network Controller Data Plane Services Dataplane Management Agent Packet Processing Network IO Operation System Hardware fd. io Foundation 3

Multiparty: Broad Membership Service Providers Network Vendors Chip Vendors Integrators fd. io Foundation 4

Multiparty: Broad Membership Service Providers Network Vendors Chip Vendors Integrators fd. io Foundation 4

Multiparty: Broad Contribution Qiniu Yandex Universitat Politècnica de Catalunya (UPC) fd. io Foundation 5

Multiparty: Broad Contribution Qiniu Yandex Universitat Politècnica de Catalunya (UPC) fd. io Foundation 5

Code Activity • In the period since its inception, fd. io has more commits

Code Activity • In the period since its inception, fd. io has more commits than OVS and DPDK combined, and more contributors than OVS 2016 -02 -11 to 2017 -04 -03 Fd. io OVS DPDK Commits 6283 2395 3289 Contributors 163 146 245 Organizations 42 52 78 Commits Contributors 8000 300 250 200 150 100 50 0 6000 4000 2000 0 80 60 40 20 Commits fd. io OVS Contributors DPDK fd. io Foundation Organizations fd. io OVS DPDK 0 Organizations fd. io OVS DPDK 6

Multiproject: Fd. io Projects Dataplane Management Agent v. ICN hc 2 vpp Testing/Support Honeycomb

Multiproject: Fd. io Projects Dataplane Management Agent v. ICN hc 2 vpp Testing/Support Honeycomb CSIT puppet-fdio Packet Processing ICNET CICN ONE odp 4 vpp TLDK VPP Sandbox trex VPP Network IO deb_dpdk rpm_dpdk fd. io Foundation 7

Fd. io Integrations Openstack Neutron Control Plane Integration work done at ODL Plugin Fd.

Fd. io Integrations Openstack Neutron Control Plane Integration work done at ODL Plugin Fd. io Plugin GBP app Lispflowmapping app VBD app SFC Netconf/Yang Data Plane LISP Mapping Protocol Netconf/yang Honeycomb REST Fd. io ML 2 Agent VPP fd. io Foundation 8

Vector Packet Processor - VPP Bare Metal/VM/Container Dataplane Management Agent Packet Processing Network IO

Vector Packet Processor - VPP Bare Metal/VM/Container Dataplane Management Agent Packet Processing Network IO • Packet Processing Platform: • High performance • Linux User space • Run’s on commodity CPUs: / / • Shipping at volume in server & embedded products since 2004. fd. io Foundation 9

Packet VPP Architecture: Packet Processing 0 1 2 3 … n Vector of n

Packet VPP Architecture: Packet Processing 0 1 2 3 … n Vector of n packets dpdk-input vhost-user-input … af-packet-input Input Graph Node ethernet-input ip 6 -rewrite ip 6 -input ip 4 -input ip 6 -lookup ip 4 -lookup ip 6 -local ip 4 -local mpls-input ip 4 -rewrite Graph Node … arp-input ip 4 -rewrite Packet Processing Graph

Packet VPP Architecture: Plugins 0 1 2 3 Hardware Plugin hw-accel-input dpdk-input vhost-user-input …

Packet VPP Architecture: Plugins 0 1 2 3 Hardware Plugin hw-accel-input dpdk-input vhost-user-input … af-packet-input ethernet-input ip 6 -input ip 4 -input mpls-input ip 6 -lookup ip 4 -lookup ip 6 -local ip 4 -local … arp-input Plugin icnfwd ip 4 -rewrite Packet Processing Graph Node /usr/lib/vpp_plugins/cicn-plugin. so ip 6 -rewrite n Vector of n packets Input Graph Node Skip sftw nodes where work is done by hardware already … custom-2 custom-3 Plugins are: First class citizens That can: Add graph nodes Add API Rearrange the graph Can be built independently of VPP source tree

VPP: How does it work? 1 vhost-userinput af-packetinput 2 dpdk-input Packet 0 … graph

VPP: How does it work? 1 vhost-userinput af-packetinput 2 dpdk-input Packet 0 … graph nodes are optimized to fit inside the instruction cache … Packet 1 ethernetinput Packet 2 Microprocessor Packet 3 Packet 4 mpls-input lldp-input arp-input cdp-input ip 4 -input l 2 -input ip 6 -input . . . -nochecksum Packet 5 Packet 6 3 Instruction Cache 4 Data Cache Packet 7 icnfwd ip 4 -lookupmulitcast Packet 8 Packet 9 Packet 10 mpls-policyencap ip 4 -loadbalance ip 4 -rewritetransit ip 4 midchain interfaceoutput Packet processing is decomposed into a directed graph node … * approx. 173 nodes in default deployment … packets moved through graph nodes in vector … … packets are pre-fetched, into the data cache …

VPP: How does it work? … instruction cache is warm with the instructions from

VPP: How does it work? … instruction cache is warm with the instructions from a single graph node … Microprocessor 4 ethernet-input 6 dispatch fn() while packets in vector Get pointer to vector while 4 or more packets PREFETCH #3 and #4 PROCESS #1 and #2 ASSUME next_node same as last packet Update counters, advance buffers 5 Packet 1 Packet 2 Enqueue the packet to next_node while any packets <as above but single packet> … data cache is warm with a small number of packets. . … packets are processed in groups of four, any remaining packets are processed on by one …

VPP: How does it work? dispatch fn() while packets in vector Get pointer to

VPP: How does it work? dispatch fn() while packets in vector Get pointer to vector 7 Microprocessor ethernet-input while 4 or more packets PREFETCH #1 and #2 PROCESS #1 and #2 ASSUME next_node same as last packet Update counters, advance buffers Packet 1 Packet 2 Enqueue the packet to next_node while any packets <as above but single packet> … prefetch packets #1 and #2 …

VPP: How does it work? dispatch fn() while packets in vector Get pointer to

VPP: How does it work? dispatch fn() while packets in vector Get pointer to vector 8 Microprocessor ethernet-input while 4 or more packets PREFETCH #3 and #4 PROCESS #1 and #2 ASSUME next_node same as last packet Update counters, advance buffers Packet 1 Packet 2 Packet 3 Packet 4 Enqueue the packet to next_node while any packets <as above but single packet> … process packet #3 and #4 … … update counters, enqueue packets to the next node …

VPP Architecture: Programmability Example: v. ICN Architecture Control Plane Protocol Request Message 900 k

VPP Architecture: Programmability Example: v. ICN Architecture Control Plane Protocol Request Message 900 k request/s Model based configuration/management Request Message Linux Hosts Shared Memory Request Queue … … Agent … VPP Response Queue v. ICN … CICN VPP Response Queue Can use C/Java/Python/or Lua Language bindings Async Response Message fd. io Foundation Async Response Message 16

Universal Dataplane: Features Hardware Platforms Pure Userspace - X 86, ARM 32/64, Power Raspberry

Universal Dataplane: Features Hardware Platforms Pure Userspace - X 86, ARM 32/64, Power Raspberry Pi Interfaces DPDK/Netmap/AF_Packet/Tun. Tap Vhost-user - multi-queue, reconnect, Jumbo Frame Support Language Bindings Routing IPv 4/IPv 6 14+ MPPS, single core Hierarchical FIBs Multimillion FIB entries Source RPF Thousands of VRFs Controlled cross-VRF lookups Multipath – ECMP and Unequal Cost ICN PIT/CS/FIB Strategy layer C/Java/Python/Lua Switching VLAN Support Single/ Double tag L 2 forwd w/EFP/Bridge. Domain concepts VTR – push/pop/Translate (1: 1, 1: 2, 2: 1, 2: 2) Mac Learning – default limit of 50 k addr Bridging Split-horizon group support/EFP Filtering Proxy Arp termination IRB - BVI Support with Router. Mac assigmt Flooding Input ACLs Interface cross-connect L 2 GRE over IPSec tunnels Segment Routing Tunnels/Encaps GRE/VXLAN-GPE/LISP-GPE/NSH IPSEC Including HW offload when available MPLS over Ethernet/GRE Deep label stacks supported SR MPLS/IPv 6 Including Multicast LISP x. TR/RTR L 2 Overlays over LISP and GRE encaps Multitenancy Multihome Map/Resolver Failover Source/Dest control plane support Map-Register/Map-Notify/RLOC-probing Security Mandatory Input Checks: TTL expiration header checksum L 2 length < IP length ARP resolution/snooping ARP proxy SNAT Ingress Port Range Filtering Per interface whitelists Policy/Security Groups/GBP (Classifier) fd. io Foundation Network Services DHCPv 4 client/proxy DHCPv 6 Proxy MAP/LW 46 – IPv 4 aas Mag. Lev-like Load Identifier Locator Addressing NSH SFC SFF’s & NSH Proxy LLDP BFD Policer Multiple million Classifiers – Arbitrary N-tuple Inband i. OAM Telemetry export infra (raw IPFIX) i. OAM for VXLAN-GPE (NGENA) SRv 6 and i. OAM co-existence i. OAM proxy mode / caching i. OAM probe and responder Monitoring Simple Port Analyzer (SPAN) IP Flow Export (IPFIX) Counters for everything Lawful Intercept 17

Continuous Quality, Performance, Usability Built into the development process – patch by patch Submit

Continuous Quality, Performance, Usability Built into the development process – patch by patch Submit Automated Verify Code Review Build/Unit Testing 120 Tests/Patch System Functional Testing 252 Tests/Patch Build binary packaging for Ubuntu 14. 04 Ubuntu 16. 04 Centos 7 Automated Style Checking Unit test : IPv 6 IPFIX IP Multicast BFD L 2 FIB Classifier L 2 Bridge Domain DHCP MPLS FIB SNAT GRE SPAN IPv 4 VXLAN IPv 4 IRB IPv 4 multi-VRF DHCP – Client and Proxy GRE Overlay Tunnels L 2 BD Ethernet Switching L 2 Cross Connect Ethernet Switching LISP Overlay Tunnels IPv 4 -in-IPv 6 Softwire Tunnels Cop Address Security IPSec IPv 6 Routing – NS/ND, RA, ICMPv 6 u. RPF Security Tap Interface Telemetry – IPFIX and Span VRF Routed Forwarding i. ACL Security – Ingress – IPv 6/Mac IPv 4 Routing Qo. S Policer Metering VLAN Tag Translation VXLAN Overlay Tunnels fd. io Foundation Performance Testing 144 Tests/Patch, 841 Tests L 2 Cross Connect L 2 Bridging IPv 4 Routing IPv 6 Routing IPv 4 Scale – 20 k, 200 k, 2 M FIB Entries IPv 4 Scale - 20 k, 200 k, 2 M FIB Entries VM with vhost-userr PHYS-VPP-VM-VPP-PHYS L 2 Cross Connect/Bridge VXLAN w/L 2 Bridge Domain IPv 4 Routing COP – IPv 4/IPv 6 whiteless i. ACL – ingress IPv 4/IPv 6 ACLs LISP – IPv 4 -o-IPv 6/IPv 6 -o-IPv 4 VXLAN Qo. S Policer L 2 Cross over L 2 Bridging Merge Publish Artifacts Usability Merge-by-merge: apt installable deb packaging yum installable rpm packaging autogenerated code documentation autogenerated cli documentation Per release: autogenerated testing reports report perf improvements Puppet modules Training/Tutorial videos Hands-on-usecase documentation Merge-by-merge packaging feeds Downstream consumer CI pipelines 18 Run on real hardware in fd. io Performance Lab

Universal Dataplane: Infrastructure Bare Metal Cloud/NFVi Container Infra Server VM VM VM Con FD.

Universal Dataplane: Infrastructure Bare Metal Cloud/NFVi Container Infra Server VM VM VM Con FD. io Kernel/Hypervisor Kernel fd. io Foundation Con 19

Universal Dataplane: VNFs FD. io based VNFs Server VM VM FD. io Con FD.

Universal Dataplane: VNFs FD. io based VNFs Server VM VM FD. io Con FD. io Kernel/Hypervisor fd. io Foundation 20

Universal Dataplane: Embedded Device Smart. Nic Device Server Kernel/Hypervisor FD. io Kernel/Hypervisor Hw Accel

Universal Dataplane: Embedded Device Smart. Nic Device Server Kernel/Hypervisor FD. io Kernel/Hypervisor Hw Accel fd. io Foundation Smart. Nic FD. io Hw Accel 21

Universal Dataplane: CICN Example Physical CICN router CICN in a VM CICN in a

Universal Dataplane: CICN Example Physical CICN router CICN in a VM CICN in a Container Device Server VM VM FD. io docker FD. io LXC FD. io Kernel/Hypervisor Hw Accel Kernel/Hypervisor fd. io Foundation FD. io Kernel/Hypervisor 22

Universal Dataplane: communication/API Consumer/Producer Socket API Server LXC LXD app Socket API 23 LXC

Universal Dataplane: communication/API Consumer/Producer Socket API Server LXC LXD app Socket API 23 LXC FD. io MEMIF Segmentation/Naming Manifest management Reassembly Flow and Congestion Control MEMIF FD. io AF-PACKET Kernel/Hypervisor DPDK • • Nic fd. io Foundation Existing drivers for links • DPDK • AF-PACKET • MEMIF (SHARED MEMORY)

CICN distribution • Core libraries • Consumer/Producer Socket API, CCNx libs, PARC C libraries

CICN distribution • Core libraries • Consumer/Producer Socket API, CCNx libs, PARC C libraries • Server and Router • VPP cicn plugin for Ubuntu 16, Cent. OS 7 • HTTP video server • Client • • Metis Forwarder VIPER MPEG-DASH video player Android 7, Mac. OS X 10. 12, i. OS 10, Ubuntu 16, Cent. OS 7 Soon Apple Store and Google Play • v. ICN • intent-based networking • model driven programmable framework • monitoring and streaming for Big. Data support

Opportunities to Contribute We invite you to Participate in fd. io • Forwarding strategies

Opportunities to Contribute We invite you to Participate in fd. io • Forwarding strategies • Mobility management • Get the Code, Build the Code, Run the Code, install from binaries • Hardware Accelerators • from binary packages • v. ICN, configuration/management/control • Read/Watch the Tutorials • Consumer/Producer Socket API • Join the Mailing Lists • Reliable Transport • Join the IRC Channels • Instrumentation tools • Explore the wiki • HTTP integration • Join fd. io as a member • https: //wiki. fd. io/view/cicn • https: //wiki. fd. io/view/vicn • https: //fd. io/ fd. io Foundation 25