Download presentation
Presentation is loading. Please wait.
1
OpenStack’s networking-vpp
Jérôme Tollet
2
Agenda Goals Design principles Main components Performance benchmarks
Supported features Next steps
3
Networking-vpp: Goals
FD.io / VPP is a fast software dataplane that can be used to speed up communications for any kind of VM or VNF. VPP can speed-up both East-West and North-South communications Networking-vpp is a project aiming at providing a simple, robust, production grade integration of VPP in OpenStack using ml2 interface Goal is to make VPP a first class citizen component in OpenStack for NFV and Cloud applications
4
Networking-vpp: Design Principles
Main design goals are: scalability, simplicity and availability Efficient management communications All communication are asynchronous All communications are REST based Availability All state information are maintained in a highly scalable KV store cluster (etcd) All modules are unit and system tested Code is small and easy to understand (no spaghetti/legacy code) Project plays with OpenStack rules Blueprint, code reviews, …
5
Introducing Vector Packet Processor - VPP
NC/Y REST ... VPP is a rapid packet processing development platform for highly performing network applications 14+ MPPS, single core Multimillion entry FIBs Runs on commodity CPUs and leverages DPDK Creates a vector of packet indices and processes them using a directed graph of nodes – resulting in a highly performant solution. Runs as a Linux user-space application Ships as part of both embedded & server products, in volume; Active development since 2002 See also: FD.IO (The Fast Data Project) Management Agent Packet Processing: VPP Network IO
6
Networking-vpp: Current Performances
16.09 Results Lossless 10Mpps per CPU 2 hyperthreads 5Mpps TX + 5Mpps RX (64B packets) Hardware / software testbed Intel Intel NIC 82599ES 2x10Gbps VPP running on 1 core (2 threads) Qemu 2.7 Testpmd DPDK patched version (indirect buffer) VNF DPDK testpmd 5Mpps Mpps VPP ** more detailed results at 4:25pm today ! **
7
Networking-vpp: Main Components
networking-vpp ML2 driver Implements the Neutron ML2 mechanism driver APIs. runs on the controller node. VPP agent Runs on each compute node and programs the VPP data plane. etcd (version >= 3.0.x) stores agent state and enables communication between the driver and agents etcd instance(s) run wherever you want (controller node(s) or anywhere else)
8
Networking-vpp: Overall Architecture
Neutron Server ML2 VPP Mechanical Driver journaling Compute Node Compute Node VM VM VM VM VM VM HTTP/json vhostuser ML2 Agent VPP vhostuser VPP ML2 Agent dpdk dpdk vlan / flat network
9
Networking-vpp: etcd KV store
etcd is a distributed key value store Tolerate machine failure Applications can read and write data into etcd using REST / JSON Values can be watched etcdctl watch --recursive --forever / to see “behind the curtain”(e.g. ports added / deleted) Networking-vpp etcd data structure networking-vpp/nodes Subdirs are compute nodes networking-vpp/state/nodes/X/alive heartbeat back networking-vpp/state/nodes/X/ports return port state networking-vpp/state/nodes/X/physnets physnets present on the hypervisor
10
Networking-vpp: etcd sample JSON entry (1/2)
Sample JSON node entries in etcd for a vhostuser port type created on a compute node named "server-2" { "action": "get" "node": { "key": "/networking-vpp/nodes", "dir": true, "nodes": [ { "key": "/networking-vpp/nodes/server-2", "dir": true, "key": "/networking-vpp/nodes/server-2/ports", "dir": true, "key": "/networking-vpp/nodes/server-2/ports/fd07aa8f eba-af75-16c7c59e544c", "value": "{\"network_id\": \"04016a26-b d-9f2e-524aee598a37\", \"segmentation_id\": 2070, \"mtu\": 1500, \"binding_type\": \"vhostuser\", \"mac_address\": \"fa:16:3e:bd:5d:c8\", \"network_type\": \"vlan\", \"physnet\": \"physnet1\"}", "modifiedIndex": , "createdIndex": }, ], "modifiedIndex": 36, "createdIndex": 36 } ], "modifiedIndex": 36, "createdIndex": 36 } }
11
Networking-vpp: etcd sample JSON entry (2/2)
JSON value under networking-vpp/nodes/server-2/ports/fd07aa8f eba-af75-16c7c59e544c key value network_id 04016a26-b d-9f2e-524aee598a37 segmentation_id 2070 mtu 1500 binding_type vhostuser mac_address fa:16:3e:bd:5d:c8 network_type vlan physnet physnet1
12
Networking-vpp: Supported Features
Network Types: Flat, VLANs Port connectivity: vhostuser ports for Virtual Machines Tap port for ”service connectivity”: DHCP (q-dhcp), Router (q-router) DB Journaling Used for logging in the driver “pre_commit” phase. Based on the existing Neutron MariaDB Database to it 'to keep etcd in sync with Neutron's internal state in the face of intermittent problems' Supported HA scenario VPP agent restart resets VPP to a clean state fetches any existing port data from etcd and programs the VPP state. ml2 driver restart retrieves information from etcd uses the journal to push as yet unpublished data to etcd Public distro and Installers Redhat, TripleO, APEX (based on TripleO), DevStack
13
Networking-vpp: Draft Dev Roadmap
Plan of Records (POR) Security Groups / Anti Spoofing Requires enhanced classifier in VPP MAC / IP restrictions, blocks gratuitous ARP, DHCP servers, … Tap-as-a-Service Requires enhanced port mirroring capability in VPP Enhanced automated testplan / testbed for unit testing Plan of Intents (POI) Integration with Telemetry systems Support for VXLan
14
Useful pointers networking-vpp OpenStack Repository
networking-VPP Launchpad Colorado automated testing
15
Questions ?
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.