Programmable Overlays with VPP Linux Con 2016 Toronto

  • Slides: 38
Download presentation
Programmable Overlays with VPP Linux. Con 2016, Toronto Florin Coras, Vina Ermagan Cisco Systems

Programmable Overlays with VPP Linux. Con 2016, Toronto Florin Coras, Vina Ermagan Cisco Systems

Overlay Network Engine Objective Enable programmable, software defined, overlays • • Data driven control-plane

Overlay Network Engine Objective Enable programmable, software defined, overlays • • Data driven control-plane protocol Rich set of forwarding policies Various overlay address families and encapsulation technologies SDN controller driven Linux. Con North America 2016 8/24/16

Overlay Features Overlay Control Plane Mapping System VPP overlay VPP underlay Linux. Con North

Overlay Features Overlay Control Plane Mapping System VPP overlay VPP underlay Linux. Con North America 2016 overlay 8/24/16

Overlay Features Mapping System Retrieve destination mapping VPP Linux. Con North America 2016 8/24/16

Overlay Features Mapping System Retrieve destination mapping VPP Linux. Con North America 2016 8/24/16

Overlay Features Mapping System b->B VPP B b Encapsulate and forward packets over underlay

Overlay Features Mapping System b->B VPP B b Encapsulate and forward packets over underlay Linux. Con North America 2016 8/24/16

Overlay Features b->{B 1, B 2} VPP Mapping System B 1 B 2 VPP

Overlay Features b->{B 1, B 2} VPP Mapping System B 1 B 2 VPP b Use multiple paths if possible Linux. Con North America 2016 8/24/16

Overlay Features Mapping System VPP B 1 VPP B 2 Decap and forward to

Overlay Features Mapping System VPP B 1 VPP B 2 Decap and forward to destination Linux. Con North America 2016 8/24/16

Overlay Features SDN Controller Mapping System External trigger Reprogram forwarding VPP Linux. Con North

Overlay Features SDN Controller Mapping System External trigger Reprogram forwarding VPP Linux. Con North America 2016 8/24/16

Overlay Features SDN Controller Mapping System b->[C, B] VPP C B Linux. Con North

Overlay Features SDN Controller Mapping System b->[C, B] VPP C B Linux. Con North America 2016 b 8/24/16

Overlay Features SDN Controller External trigger Mapping System Reprogram forwarding VPP C B b

Overlay Features SDN Controller External trigger Mapping System Reprogram forwarding VPP C B b x Linux. Con North America 2016 8/24/16

Overlay Features SDN Controller Mapping System b->[C, B] [x, b]->B VPP C B x

Overlay Features SDN Controller Mapping System b->[C, B] [x, b]->B VPP C B x only if sourced by x Linux. Con North America 2016 b 8/24/16

APIs Controller NETCONF (Honeycomb) CLI Binary API CP Protocol APIs VPP Linux. Con North

APIs Controller NETCONF (Honeycomb) CLI Binary API CP Protocol APIs VPP Linux. Con North America 2016 8/24/16

APIs Controller configuration NETCONF (Honeycomb) CLI Binary API CP Protocol APIs VPP Linux. Con

APIs Controller configuration NETCONF (Honeycomb) CLI Binary API CP Protocol APIs VPP Linux. Con North America 2016 8/24/16

APIs Controller dynamic updating of forwarding NETCONF (Honeycomb) CLI Binary API CP Protocol APIs

APIs Controller dynamic updating of forwarding NETCONF (Honeycomb) CLI Binary API CP Protocol APIs VPP Linux. Con North America 2016 8/24/16

Tunneling protocols in VPP • GRE • MPLS-GRE • L 2 TP • VXLAN-GPE

Tunneling protocols in VPP • GRE • MPLS-GRE • L 2 TP • VXLAN-GPE • ILA • IPSEC-GRE (code just in) Linux. Con North America 2016 8/24/16

Overlay Network Engine (ONE) Project definition • • • SDN controller: Open. Daylight control

Overlay Network Engine (ONE) Project definition • • • SDN controller: Open. Daylight control plane: LISP data plane: starting with Generic Protocol Encapsulation (LISP-GPE) ODL Lisp. Flow. Mapping NETCONF GPE LISP NETCONF Other GPE Other VPP Linux. Con North America 2016 8/24/16

Overlay Network Engine (ONE) Features • • • Any of IP 4, IP 6

Overlay Network Engine (ONE) Features • • • Any of IP 4, IP 6 and L 2 overlays on top of IP 4 and/or IP 6 underlays Multihoming/load balancing between underlay attachment points Multitenancy/EID virtualization Overlays spanning disjoint underlays with re-encapsulating routers CLI, binary API and VAT (test API) Soon: NETCONF support (Honeycomb) and src/dst control plane support Linux. Con North America 2016 8/24/16

Overlay Network Engine (ONE) Programmability External trigger ODL Lisp. Flow. Mapping VPP ODL tracks

Overlay Network Engine (ONE) Programmability External trigger ODL Lisp. Flow. Mapping VPP ODL tracks mappings subscribers and pushes notifications when changes occur. Linux. Con North America 2016 8/24/16

Create overlay: use-case multihoming Router config lisp enable lisp locator-set add ls 1 iface

Create overlay: use-case multihoming Router config lisp enable lisp locator-set add ls 1 iface <ifname 1> p 1 w 1 iface <ifname 2> p 1 w 1 lisp eid-table add eid <ip-prefix> locator-set ls 1 lisp map-resolver add <mr-ip> Mapping System b->{B 1, B 2} ODL config VPP B 1 Use RESTCONF to add two mappings, one per router B 2 Linux. Con North America 2016 8/24/16 b

VPP node graph (simplified) dpdk-input eth-input ip. X-rewrite iface_output ip. X-local ip. X-udp-lookup iface_tx

VPP node graph (simplified) dpdk-input eth-input ip. X-rewrite iface_output ip. X-local ip. X-udp-lookup iface_tx ip. X-lookup Linux. Con North America 2016 8/24/16

ONE node graph init - dp dpdk-input iface eth-input lgpe-ip. X-lookup ip. X-input lisp-gpe-tx

ONE node graph init - dp dpdk-input iface eth-input lgpe-ip. X-lookup ip. X-input lisp-gpe-tx recirculate via ip. X-lookup lisp. X ip. X-lookup lisp-gpe-ip. X-input 4341 ip. X-local ip. X-udp-lookup data-plane Linux. Con North America 2016 8/24/16

ONE node graph init - dp dpdk-input Attach lgpe-ip. X-lookup as possible next_hop to

ONE node graph init - dp dpdk-input Attach lgpe-ip. X-lookup as possible next_hop to ip. X-lookup when lisp-gpe interface is switched on. eth-input iface lgpe-ip. X-lookup lisp-gpe-tx src matching ip. X-input recirculate via ip. X-lookup lisp. X ip. X-lookup dst matching lisp-gpe-ip. X-input 4341 ip. X-local ip. X-udp-lookup data-plane Linux. Con North America 2016 8/24/16

ONE node graph init - dp dpdk-input Add one lisp. X interface per table_id

ONE node graph init - dp dpdk-input Add one lisp. X interface per table_id (vrf) and have the tx function do the lisp encap iface eth-input lgpe-ip. X-lookup ip. X-input lisp-gpe-tx recirculate via ip. X-lookup lisp. X ip. X-lookup output features lisp-gpe-ip. X-input 4341 ip. X-local ip. X-udp-lookup data-plane Linux. Con North America 2016 8/24/16

ONE node graph init - dp If all goes right in lookup, send to

ONE node graph init - dp If all goes right in lookup, send to lisp-gpeoutput_node (output features like IPsec can be executed here) and subsequently to lispgpe-tx_node where packets are lisp-gpe encapsulated dpdk-input eth-input lgpe-ip. X-lookup ip. X-input lisp-gpe-tx iface recirculate via ip. X-lookup lisp. X ip. X-lookup output features lisp-gpe-ip. X-input 4341 ip. X-local ip. X-udp-lookup data-plane Linux. Con North America 2016 8/24/16

ONE node graph init - dp dpdk-input iface eth-input lgpe-ip. X-lookup ip. X-input lisp-gpe-tx

ONE node graph init - dp dpdk-input iface eth-input lgpe-ip. X-lookup ip. X-input lisp-gpe-tx lisp. X ip. X-lookup recirculate via ip. X-lookup Register lisp-gpe-ip. X-input as handler of UDP port 4341 packets lisp-gpe-ip. X-input 4341 ip. X-local ip. X-udp-lookup data-plane Linux. Con North America 2016 8/24/16

ONE node graph init - cp dpdk-input lisp-cp-lookup iface eth-input lgpe-ip. X-lookup ip. X-input

ONE node graph init - cp dpdk-input lisp-cp-lookup iface eth-input lgpe-ip. X-lookup ip. X-input lisp-gpe-tx recirculate via ip. X-lookup lisp. X ip. X-lookup lisp-gpe-ip. X-input 4341 ip. X-local data-plane ip. X-udp-lookup 4342 control-plane Linux. Con North America 2016 lisp-cp-input 8/24/16

ONE node graph init - cp dpdk-input Add default route that points to lisp-cp-lookup

ONE node graph init - cp dpdk-input Add default route that points to lisp-cp-lookup iface eth-input lgpe-ip. X-lookup ip. X-input lisp-gpe-tx recirculate via ip. X-lookup lisp. X ip. X-lookup lisp-gpe-ip. X-input 4341 ip. X-local data-plane ip. X-udp-lookup 4342 control-plane Linux. Con North America 2016 lisp-cp-input 8/24/16

ONE node graph init - cp dpdk-input lisp-cp-lookup iface eth-input lgpe-ip. X-lookup ip. X-input

ONE node graph init - cp dpdk-input lisp-cp-lookup iface eth-input lgpe-ip. X-lookup ip. X-input lisp-gpe-tx recirculate via ip. X-lookup lisp. X ip. X-lookup lisp-gpe-ip. X-input Register lisp-cp-input as handler 4341 of UDP port 4342 packets ip. X-local data-plane ip. X-udp-lookup 4342 control-plane Linux. Con North America 2016 lisp-cp-input 8/24/16

ONE node graph init – L 2 dp dpdk-input iface eth-input l 2 -lisp.

ONE node graph init – L 2 dp dpdk-input iface eth-input l 2 -lisp. X ip. X-input lisp-gpe-tx recirculate via ip. X-lookup l 2 -input ip. X-lookup lisp-gpe-ip. X-input ip. X-local ip. X-udp-lookup data-plane Linux. Con North America 2016 8/24/16

ONE node graph init – L 2 dp Add one l 2_lisp. X interface

ONE node graph init – L 2 dp Add one l 2_lisp. X interface per bridge domain and have the tx function do the lisp encap dpdk-input iface eth-input l 2 -lisp. X ip. X-input lisp-gpe-tx recirculate via ip. X-lookup l 2 -input ip. X-lookup lisp-gpe-ip. X-input ip. X-local ip. X-udp-lookup data-plane Linux. Con North America 2016 8/24/16

ONE node graph init – L 2 cp dpdk-input Flood packets with unknown destinations

ONE node graph init – L 2 cp dpdk-input Flood packets with unknown destinations are sent to lisp-cp-lookup iface eth-input l 2 -lisp. X ip. X-input lisp-gpe-tx recirculate via ip. X-lookup l 2 -input ip. X-lookup lisp-gpe-ip. X-input ip. X-local ip. X-udp-lookup lisp-cp-input data-plane Linux. Con North America 2016 8/24/16

ONE control plane gid-dictionary lisp_fwd_cache CRD fwd entries CRD mappings lisp-gpe router logic lisp-cp-input

ONE control plane gid-dictionary lisp_fwd_cache CRD fwd entries CRD mappings lisp-gpe router logic lisp-cp-input egress map-request ingress map-request map-reply vpp lisp-cp-lookup lisp-dp-api fwd entry request add/del fwd entry lisp-gpe data plane Linux. Con North America 2016 8/24/16

Demo Map-Cache Mapping System b->B VPP B IP 6 over IP 4 overlay b

Demo Map-Cache Mapping System b->B VPP B IP 6 over IP 4 overlay b

Demo Mapping System Map-Cache b->B VPP IPv 4 RTR IPv 6 Buy faster/cheaper transit

Demo Mapping System Map-Cache b->B VPP IPv 4 RTR IPv 6 Buy faster/cheaper transit or transition part of the core to IPv 6 Linux. Con North America 2016 8/24/16

Demo Switch to RTR path Mapping System Map-Cache b->RTR Reprogram forwarding VPP IPv 4

Demo Switch to RTR path Mapping System Map-Cache b->RTR Reprogram forwarding VPP IPv 4 RTR IPv 6 Linux. Con North America 2016 8/24/16

Demo Switch to RTR path Mapping System Map-Cache b->RTR VPP IPv 4 RTR IPv

Demo Switch to RTR path Mapping System Map-Cache b->RTR VPP IPv 4 RTR IPv 6 Linux. Con North America 2016 8/24/16

Next steps – Get involved • Get the Code, Build the Code, Run the

Next steps – Get involved • Get the Code, Build the Code, Run the Code • Read/Watch the Tutorials • Read/Watch VPP Tutorials • Join the Mailing Lists Linux. Con North America 2016 8/24/16

Thank you! ? Linux. Con North America 2016 8/24/16

Thank you! ? Linux. Con North America 2016 8/24/16