Programmable Overlays with VPP LinuxCon 2016, Toronto Florin Coras, Vina Ermagan Cisco Systems
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 LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Overlay Features Overlay Control Plane Mapping System VPP VPP overlay underlay overlay LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Overlay Features Mapping System Retrieve destination mapping VPP VPP LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Overlay Features Mapping System b->B VPP VPP B b Encapsulate and forward packets over underlay LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Overlay Features Mapping System b->{B1, B2} VPP VPP B1 B2 b Use multiple paths if possible LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Overlay Features Mapping System VPP VPP B1 B2 Decap and forward to destination LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Overlay Features SDN Controller External trigger Mapping System Reprogram forwarding VPP LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Overlay Features SDN Controller Mapping System b->[C, B] VPP C B b LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Overlay Features SDN Controller External trigger Mapping System Reprogram forwarding VPP C B b x LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Overlay Features SDN Controller Mapping System b->[C, B] [x, b]->B VPP C B b only if sourced by x x LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 APIs Controller NETCONF (Honeycomb) CLI Binary API CP Protocol APIs VPP LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 APIs Controller configuration NETCONF (Honeycomb) CLI Binary API CP Protocol APIs VPP LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 APIs Controller dynamic updating of forwarding NETCONF (Honeycomb) CLI Binary API CP Protocol APIs VPP LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Tunneling protocols in VPP GRE MPLS-GRE L2TP VXLAN VXLAN-GPE ILA IPSEC-GRE (code just in) LinuxCon North America 2016 8/24/16
Overlay Network Engine (ONE) Project definition SDN controller: OpenDaylight control plane: LISP data plane: starting with Generic Protocol Encapsulation (LISP-GPE) ODL LispFlowMapping NETCONF LISP LISP NETCONF GPE Other GPE Other VPP VPP LinuxCon North America 2016 8/24/16
Overlay Network Engine (ONE) Features Any of IP4, IP6 and L2 overlays on top of IP4 and/or IP6 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 LinuxCon North America 2016 8/24/16
Overlay Network Engine (ONE) Programmability External trigger ODL LispFlowMapping ODL tracks mappings subscribers and pushes notifications when changes occur. VPP LinuxCon North America 2016 8/24/16
Create overlay: use-case multihoming Router config lisp enable lisp locator-set add ls1 iface <ifname1> p 1 w 1 iface <ifname2> p 1 w 1 lisp eid-table add eid <ip-prefix> locator-set ls1 lisp map-resolver add <mr-ip> Mapping System b->{B1, B2} VPP ODL config B1 Use RESTCONF to add two mappings, one per router B2 b LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 VPP node graph (simplified) dpdk-input eth-input ipX-rewrite iface_output iface_tx ipX-input ipX-lookup ipX-local ipX-udp-lookup LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init - dp dpdk-input iface eth-input lgpe-ipX-lookup lisp-gpe-tx recirculate via ipX-lookup lispX ipX-input ipX-lookup lisp-gpe-ipX-input 4341 ipX-local ipX-udp-lookup data-plane LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init - dp Attach lgpe-ipX-lookup as possible next_hop to ipX-lookup when lisp-gpe interface is switched on. dpdk-input iface eth-input lgpe-ipX-lookup lisp-gpe-tx recirculate via ipX-lookup src matching lispX ipX-input ipX-lookup dst matching lisp-gpe-ipX-input 4341 ipX-local ipX-udp-lookup data-plane LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init - dp dpdk-input Add one lispX interface per table_id (vrf) and have the tx function do the lisp encap iface eth-input lgpe-ipX-lookup lisp-gpe-tx recirculate via ipX-lookup lispX ipX-input ipX-lookup output features lisp-gpe-ipX-input 4341 ipX-local ipX-udp-lookup data-plane LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init - dp If all goes right in lookup, send to lisp-gpe-output_node (output features like IPsec can be executed here) and subsequently to lisp-gpe-tx_node where packets are lisp-gpe encapsulated dpdk-input iface eth-input lgpe-ipX-lookup lisp-gpe-tx recirculate via ipX-lookup lispX ipX-input ipX-lookup output features lisp-gpe-ipX-input 4341 ipX-local ipX-udp-lookup data-plane LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init - dp dpdk-input iface eth-input lgpe-ipX-lookup lisp-gpe-tx recirculate via ipX-lookup lispX ipX-input ipX-lookup Register lisp-gpe-ipX-input as handler of UDP port 4341 packets lisp-gpe-ipX-input 4341 ipX-local ipX-udp-lookup data-plane LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init - cp dpdk-input lisp-cp-lookup iface eth-input lgpe-ipX-lookup lisp-gpe-tx recirculate via ipX-lookup lispX ipX-input ipX-lookup lisp-gpe-ipX-input 4341 ipX-local ipX-udp-lookup lisp-cp-input 4342 data-plane control-plane LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init - cp dpdk-input Add default route that points to lisp-cp-lookup. lisp-cp-lookup iface eth-input lgpe-ipX-lookup lisp-gpe-tx recirculate via ipX-lookup lispX ipX-input ipX-lookup lisp-gpe-ipX-input 4341 ipX-local ipX-udp-lookup lisp-cp-input 4342 data-plane control-plane LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init - cp dpdk-input lisp-cp-lookup iface eth-input lgpe-ipX-lookup lisp-gpe-tx recirculate via ipX-lookup lispX ipX-input ipX-lookup lisp-gpe-ipX-input Register lisp-cp-input as handler of UDP port 4342 packets 4341 ipX-local ipX-udp-lookup lisp-cp-input 4342 data-plane control-plane LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init – L2 dp dpdk-input iface eth-input l2-lispX lisp-gpe-tx recirculate via ipX-lookup ipX-input l2-input ipX-lookup lisp-gpe-ipX-input ipX-local ipX-udp-lookup data-plane LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init – L2 dp dpdk-input Add one l2_lispX interface per bridge domain and have the tx function do the lisp encap iface eth-input l2-lispX lisp-gpe-tx recirculate via ipX-lookup ipX-input l2-input ipX-lookup lisp-gpe-ipX-input ipX-local ipX-udp-lookup data-plane LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE node graph init – L2 cp dpdk-input Flood packets with unknown destinations are sent to lisp-cp-lookup lisp-cp-lookup iface eth-input l2-lispX lisp-gpe-tx recirculate via ipX-lookup ipX-input l2-input ipX-lookup lisp-gpe-ipX-input ipX-local ipX-udp-lookup data-plane lisp-cp-input LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 ONE control plane gid-dictionary lisp_fwd_cache CRD mappings CRD fwd entries lisp-gpe router logic lisp-cp-lookup lisp-dp-api lisp-cp-input egress map-request ingress map-request map-reply fwd entry request add/del fwd entry lisp-gpe data plane vpp LinuxCon North America 2016 8/24/16
Demo Mapping System Map-Cache b->B VPP VPP B b IP6 over IP4 overlay
LinuxCon North America 2016 Demo Mapping System Map-Cache b->B VPP VPP IPv4 RTR IPv6 Buy faster/cheaper transit or transition part of the core to IPv6 LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Demo Switch to RTR path Mapping System Map-Cache b->RTR Reprogram forwarding VPP VPP IPv4 RTR IPv6 LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Demo Switch to RTR path Mapping System Map-Cache b->RTR VPP VPP IPv4 RTR IPv6 LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 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 LinuxCon North America 2016 8/24/16
LinuxCon North America 2016 Thank you! ? LinuxCon North America 2016 8/24/16