CICN Community Information-Centric Networking
FD.io: The Universal Dataplane • Fd.io Scope : • Project at Linux Foundation • Network IO - NIC/vNIC <-> cores/threads • Multi-party • Packet Processing – • Multi-project Classify/Transform/Prioritjze/Forward/Terminate • Software Dataplane • Dataplane Management Agents - ControlPlane • High throughput • Low Latency Bare Metal/VM/Container Bare Metal/VM/Container • Feature Rich • Resource Efficient Dataplane Management Agent • Bare Metal/VM/Container • Multiplatform Packet Processing Network IO 2 fd.io Foundatjon
Fd.io in the overall stack Applicatjon Layer/App Server Orchestratjon vICN Network Controller Data Plane Services Dataplane Packet Processing Network IO Management Agent Operatjon System Hardware 3 fd.io Foundatjon
Multiparty: Broad Membership Chip Vendors Service Providers Network Vendors Integrators 4 fd.io Foundatjon
Multiparty: Broad Contribution Qiniu Yandex Universitat Politècnica de Catalunya (UPC) 5 fd.io Foundatjon
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 Fd.io OVS DPDK 2017-04-03 Commits 6283 2395 3289 Contributors 163 146 245 Organizatjons 42 52 78 Commits Contributors Organizatjons 7000 300 80 6000 70 250 60 5000 200 50 4000 150 40 3000 30 100 2000 20 50 1000 10 0 0 0 Commits Contributors Organizatjons fd.io OVS DPDK fd.io OVS DPDK fd.io OVS DPDK 6 fd.io Foundatjon
Multiproject: Fd.io Projects Dataplane Management Agent Testjng/Support vICN hc2vpp Honeycomb CSIT puppet-fdio Packet Processing ICNET ONE TLDK trex CICN odp4vpp VPP Sandbox VPP Network IO deb_dpdk rpm_dpdk 7 fd.io Foundatjon
Fd.io Integrations Openstack Neutron Integratjon work done at ODL Fd.io Fd.io ODL Plugin Plugin Plugin Plugin Control Plane Control Plane GBP app GBP app Lispfmowmapping app Lispfmowmapping app SFC VBD app VBD app SFC Netconf/Yang LISP Mapping Protocol REST Netconf/yang Data Plane Data Plane Honeycomb Fd.io ML2 Agent Honeycomb Fd.io ML2 Agent VPP VPP 8 fd.io Foundatjon
Vector Packet Processor - VPP • Packet Processing Platform: Bare Metal/VM/Container Bare Metal/VM/Container • High performance Dataplane Management Agent • Linux User space • Run’s on commodity CPUs: / / Packet Processing • Shipping at volume in server & embedded Network IO products since 2004. 9 fd.io Foundatjon
Packet VPP Architecture: Packet Processing … n 0 1 2 3 Vector of n packets … vhost-user-input dpdk-input af-packet-input Packet Processing Graph Input Graph Node ethernet-input Graph Node mpls-input ip6-input ip4-input arp-input … ip4-lookup ip6-lookup ip6-rewrite ip6-local ip4-local ip4-rewrite ip4-rewrite
Packet VPP Architecture: Plugins … n 0 1 2 3 Hardware Plugin Vector of n packets … vhost-user-input hw-accel-input dpdk-input af-packet-input Packet Processing Graph Input Graph Node ethernet-input Graph Node mpls-input ip6-input ip4-input arp-input … Skip sfuw nodes where work is done by hardware already Plugins are: Plugin First class citjzens /usr/lib/vpp_plugins/cicn-plugin.so That can: Add graph nodes ip4-lookup ip6-lookup icnfwd Add API Rearrange the graph custom-2 custom-3 ip6-rewrite ip6-local ip4-local ip4-rewrite Can be built independently of VPP source tree
VPP: How does it work? 1 … graph nodes are optjmized vhost-user- af-packet- 2 dpdk-input input input to fjt inside the instructjon cache … Packet 0 Packet 1 ethernet- Packet 2 input Microprocessor Packet 3 Packet 4 mpls-input lldp-input arp-input cdp-input l2-input ip4-input ip6-input Packet 5 ...-no- Instructjon Cache Packet 6 3 checksum Packet 7 icnfwd Packet 8 ip4-lookup- ip4-lookup mulitcast Packet 9 Data Cache 4 Packet 10 mpls-policy- ip4-load- ip4-rewrite- ip4- encap balance transit midchain … packets are pre-fetched, … packets moved through interface- output into the data cache … graph nodes in vector … Packet processing is decomposed into a directed graph node … * approx. 173 nodes in default deployment
VPP: How does it work? 6 dispatch fn() while packets in vector … instructjon cache is warm with the instructjons from a single graph node … Get pointer to vector while 4 or more packets Microprocessor PREFETCH #3 and #4 PROCESS #1 and #2 ethernet-input 4 ASSUME next_node same as last packet Update counters, advance bufgers 5 Packet 1 Enqueue the packet to next_node Packet 2 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 vector 7 while 4 or more packets Microprocessor PREFETCH #1 and #2 PROCESS #1 and #2 ethernet-input ASSUME next_node same as last packet Update counters, advance bufgers Packet 1 Enqueue the packet to next_node Packet 2 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 vector 8 while 4 or more packets Microprocessor PREFETCH #3 and #4 PROCESS #1 and #2 ethernet-input ASSUME next_node same as last packet Update counters, advance bufgers Packet 1 Enqueue the packet to next_node Packet 2 Packet 3 while any packets Packet 4 <as above but single packet> … process packet #3 and #4 … … update counters, enqueue packets to the next node …
VPP Architecture: Programmability Example: vICN Architecture Model based confjguratjon/management Control Plane Protocol Request Message Request Message 900k request/s Linux Hosts Linux Hosts Shared Memory Shared Memory … … Request Queue Request Queue CICN vICN Agent VPP VPP … … Response Queue Response Queue Can use C/Java/Python/or Lua Language bindings Async Response Message Async Response Message 16 fd.io Foundatjon
Universal Dataplane: Features Routjng Network Services Switching Hardware Platgorms IPv4/IPv6 DHCPv4 client/proxy VLAN Support Pure Userspace - X86,ARM 32/64,Power 14+ MPPS, single core DHCPv6 Proxy Single/ Double tag Raspberry Pi Hierarchical FIBs MAP/LW46 – IPv4aas L2 forwd w/EFP/BridgeDomain concepts Multjmillion FIB entries MagLev-like Load VTR – push/pop/Translate (1:1,1:2, 2:1,2:2) Source RPF Identjfjer Locator Addressing Mac Learning – default limit of 50k addr Interfaces Thousands of VRFs NSH SFC SFF’s & NSH Proxy Bridging Controlled cross-VRF lookups LLDP Split-horizon group support/EFP Filtering Multjpath – ECMP and Unequal Cost BFD DPDK/Netmap/AF_Packet/TunTap Proxy Arp Vhost-user - multj-queue, reconnect, Policer Arp terminatjon Jumbo Frame Support Multjple million Classifjers – IRB - BVI Support with RouterMac assigmt ICN Arbitrary N-tuple Flooding PIT/CS/FIB Input ACLs Language Bindings Strategy layer Interface cross-connect Inband iOAM L2 GRE over IPSec tunnels C/Java/Python/Lua Segment Routjng Telemetry export infra (raw IPFIX) iOAM for VXLAN-GPE (NGENA) Security SR MPLS/IPv6 SRv6 and iOAM co-existence Tunnels/Encaps Including Multjcast iOAM proxy mode / caching Mandatory Input Checks: iOAM probe and responder GRE/VXLAN/VXLAN-GPE/LISP-GPE/NSH TTL expiratjon LISP IPSEC header checksum Including HW offmoad when available L2 length < IP length LISP xTR/RTR ARP resolutjon/snooping L2 Overlays over LISP and GRE encaps Monitoring ARP proxy Multjtenancy SNAT MPLS Multjhome Simple Port Analyzer (SPAN) Ingress Port Range Filtering Map/Resolver Failover IP Flow Export (IPFIX) Per interface whitelists MPLS over Ethernet/GRE Source/Dest control plane support Counters for everything Policy/Security Groups/GBP (Classifjer) Deep label stacks supported Map-Register/Map-Notjfy/RLOC-probing Lawful Intercept fd.io Foundatjon 17
Recommend
More recommend