0% found this document useful (0 votes)
50 views131 pages

FDS ODL Summit 26sept2016

Uploaded by

st.andrews.eve
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views131 pages

FDS ODL Summit 26sept2016

Uploaded by

st.andrews.eve
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 131

Composing Solution Stacks with

OpenDaylight and OpenStack in OPNFV:


The FastDataStacks Example

Frank Brockners, Distinguished Engineer, Cisco


Michael Weir, Vice President, CENGN
Abstract

NFV and virtualized high performance applications, such as video processing, require a “fast
data stack” solution that provides both carrier grade forwarding performance, scalability and
open extensibility, along with functionality for realizing application policies and controlling a
complex network topology. This session showcases how a new solution stack (a.k.a.
“scenario") which combines OpenDaylight and OpenStack is composed and stood up. We'll
use a new solution stack framed around a new software forwarder ("VPP") provided by the
FD.io project as example for this session. The session discusses how an evolution/change of
upstream components from OpenStack, OpenDaylight and FD.io is put in place for the
scenario, as well as how installers and tests need to be evolved to allow for integration into
OPNFV's continuous integration, deployment and test pipeline. Special focus will be given to
those components in OpenDaylight which had to be enhanced for the integration, in particular
Group Based Policy.
The Components:
APEX, FuncTest, VPP,
Why FastDataStacks? Using a FastDataStack
HoneyComb,
OpenDaylight
Building NFV stacks

Service WorkFlow
• OPNFV performs System Integration as an Model Topology
App Intent
open community effort:
• Create/Evolve Components (in lock-step with
Upstream Communities)
• Compose / Deploy / Test Service/WF Life Cycle Manager
• Iterate (in a distributed, multi-vendor CI/CD system)
• Scenarios in OPNFV Arno and Brahmaputra Virtual Machine/Container
focused on establishing the base Life Cycle Manager
infrastructure, system test, and system-control
focused features
Network Controller
• Let’s add “networking” as another focus… Forwarder – Switch/Router
Foundational Assets For NFV Infrastructure:
A stack is only as good as its foundation

• Virtual Forwarder Service WorkFlow


App Intent
Model Topology
• Feature rich, high performance,
highly scalable virtual switch-router
• Leverages hardware accelerators
• Runs in user space Service/WF Life Cycle Manager
• Modular and easy extensible
• Forwarder Diversity: Hardware and
Virtual Machine/Container
Software Life Cycle Manager
• Virtual Domains link and interact with
physical domains
• Domains and Policy Network Controller
Forwarder – Switch/Router
• Connectivity should reflect business logic
instead of physical L2/L3 constructs
Networking Foundation for NFV Infrastructure
Choices

• VPP
• Highly scalable, high
performance, extensible virtual
forwarder
• OpenDaylight
• Extensible controller platform
• Decouple business logic from
network constructs: Group Based
Policy as mediator between
business logic and network
constructs
• Support for a diverse set of
network devices
• Clustering for HA
6
Introducing Vector Packet Processor - VPP

NC/Y REST ...


• VPP is a rapid packet processing development platform for
highly performing network applications Management Agent
• 14+ MPPS, single core
• Multimillion entry FIBs
• 480Gbps bi-dir on 24 cores
• 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;
Packet Processing: VPP
• Active development since 2002
Network IO
See also: FD.IO (The Fast Data Project)
NFV is about forwarding speed: VPP is fast...

NDR rates for 2p10GE, 1 core, L2 NIC-to-NIC NDR rates for 2p10GE, 1 core, L2 NIC-to-VM/VM-to-VM

[IMIX Gbps] [IMIX Gbps]


7
20
6

15 5
4
10 3
2
5 VPP-vhost-user
VPP 1
0 0
OVSDPDK-vhost-user
2 MACs OVSDPDK
NIC-to-VM
2k MACs
VM-to-VM
20k MACs

• NDR = Non Drop Rate (== zero frame loss, better than ITU 10^-7 packet loss ratio)
• Virtual network infra benchmark of efficiency
• All tests per connection only, single core
• Higher performance with more connections, more cores
• Latest SW: OVSDPDK 2.4.0, VPP 09/2015
Benchmarking at scale: IPv4 + Security
VPP-based vSwitch
[Gbps] Zero-packet-loss Throughput for 18 port 40GE, 36 cores, IPv4 [Mpps] Zero-packet-loss Throughput for 18 port 40GE, 36 cores, IPv4
500,0 120,0
450,0
400,0 100,0
350,0 80,0
300,0
250,0 60,0
200,0
150,0 40,0
100,0 20,0
50,0
0,0 0,0
1518B 1518B
18 routes 18 routes
100k 100k
1M routes IMIX 1M routes IMIX
routes 2M routes routes 2M routes
4M routes 4M routes
8M routes 8M routes
That is Right – No Impact on IMIX Performance
• FD.io VPP data plane throughput not impacted by large IPv4 FIB size, and VPP vSwitch IPv4 routed forwarding VPP vSwitch IPv4 routed forwarding
stateless security input access lists and white-lists & black-lists* FIB with 2M IPv4 entries, 2k white- FIB with 2M IPv4 entries, 2k white-
list* 18x40GE IMIX frame sequence list* 18x40GE 1518B frames
• VPP tested on UCS 4-CPU-socket server with 4 of Intel “Haswell" x86-64
processors E7-8890v3 18C 2.5GHz 462Gbps zero frame loss
342Gbps zero frame loss
• 36 Cores used – Another 36cores can be used for other network services!
“Sky” is the limit not VPP Pcle 3.0 is the limit not VPP
VPP Vectors Have Space For More Services and More Packets!!
PCIe 3.0 and NICs Are The Limit * Test results extrapolated from 120GE 2-Socket machine. See next slides for why.
VPP Performance Example: IPv4 Benchmark
VPP and OVSDPDK
NDR rates for 6 port 10GE, 6 cores, IPv4 NDR rates for 12 port 10GE, 12 cores, IPv4

[IMIX Gbps] [IMIX Gbps]

60,0 120,0

50,0 100,0

40,0 80,0

30,0 60,0

20,0 40,0

10,0 20,0
0,0 0,0
VPP VPP
6 routes 12 routes
1k routes 1k routes
100k routes OVSDPDK 100k routes OVSDPDK
500k routes 500k routes
1M routes 1M routes
2M routes 2M routes

• VPP data plane throughput not impacted by large IPv4 FIB size
• OVSDPDK data plane throughput heavily impacted by IPv4 FIB size
• VPP and OVSDPDK tested on Haswell x86 platform with E5-2698v3 2x16C 2.3GHz (Ubuntu 14.04 trusty)
NFV is about forwarding delay:
VPP means low delay

• Low long-term max packet delay with


FD.io VPP
• 0.007ms < 0.023ms < 3.5ms
• Other vSwitches Avg Min Max
Delay Delay Delay
• >120ms long term max delay

• Tests environment
• stock Ubuntu 14.04.03 LTS Kernel:
3.13.0-63-generic (no Linux tuning)
• Cisco UCS C460 M4 (4 x Intel®
Xeon® Processor E7-8890 v3 (18
cores, 2.5GHz, 45MB Cache), 9 x
The Soak Test Proof:
2p40GE Intel XL710) 18 x 7.7trillion packets forwarded.
Min Packet Delay 7..10 usec, Avg Packet Delay <23 usec.
Max Packet Delay <3.5 msec incl. the outliers!!
VPP Features

IPv4/IPv6 IPv4 L2
14+ MPPS, single core GRE, MPLS-GRE, NSH-GRE, VLAN Support
Multimillion entry FIBs VXLAN Single/ Double tag
Source RPF IPSEC L2 forwarding with EFP/Bridge Domain concepts
DHCP client/proxy
Thousands of VRFs CG NAT VTR – push/pop/Translate (1:1,1:2, 2:1,2:2)
Controlled cross-VRF lookups Mac Learning – default limit of 50k addresses
Multipath – ECMP and Unequal Cost Bridging – Split-horizon group support/EFP
Multiple million Classifiers – Filtering
Arbitrary N-tuple Proxy Arp
VLAN Support – Single/Double tag Arp termination
IPv6 IRB – BVI Support with Router Mac assignment
Counters for Everything Neighbor discovery Flooding
Mandatory Input Checks: Router Advertisement Input ACLs
• TTL expiration
DHCPv6 Proxy Interface cross-connect
• header checksum
L2TPv3
• L2 length < IP length
• ARP resolution/snooping
Segment Routing
MAP/LW46 – IPv4aas
MPLS
• ARP proxy
iOAM MPLS-o-Ethernet – Deep
label stacks supported
Group Based Policy in Open Daylight
Group policy for generic “end points”

• Application-focused policy expressions:


Policies mirror application semantics.
Capture policy requirements without
detailed knowledge of networking.
• Improved automation: Grouping constructs allow
higher level automation tools to easily manipulate
groups of network endpoints simultaneously.
• Consistent policy by grouping end points and
applying policy to groups
• Extensible because of implementation
independence, hence applicable to policy for
connectivity, security, L4-7, QoS, etc.

See also: https://wiki.opendaylight.org/view/Group_Policy:Main


Evolving The OPNFV Scenario Set
Components in
Category
OPNFV
• OPNFV uses “scenarios” (i.e. compositions of
Apex, Compass,
features and their configuration) as key release Install Tools
Fuel, Juju
vehicle
• OPNFV scenarios in the Brahmaputra release VM Control OpenStack
were focused on OVS as virtual forwarder
• Create a new stack which significantly evolves OpenDaylight,
Network Control
networking for NFV ONOS, OpenContrail

• Introduce Scenarios with VPP for OPNFV


Colorado Hypervisor KVM, KVM4NFV

• os-odl_l2-fdio-noha, os-odl_l2-fdio-ha
• os-odl_l3-fdio-noha, os-odl_l3-fdio-noha Forwarder OVS, OVS-DPDK + VPP

14
OPNFV FastDataStacks (FDS)

• Integrate VPP into existing Install Tools Apex Apex Apex


OPNFV scenarios
• Initial scenarios VM Control OpenStack OpenStack OpenStack
• OpenStack – ODL (Layer2) – VPP
• OpenStack – ODL (Layer3) – VPP OpenDaylight OpenDaylight
Network Control
• OpenStack – VPP L2 L3

• ...
Hypervisor KVM KVM KVM
• Diverse set of contributors:
Forwarder VPP VPP VPP

https://wiki.opnfv.org/display/fds

15
FastDataStacks Component Development

...
• OpenDaylight
• GBP Neutron Mapper Neutron

• GBP Renderer Manager enhancements REST

• VPP Renderer Neutron NorthBound

• Virtual Bridge Domain Mgr / Topology Manager GBP Neutron Mapper

• FD.io GBP Renderer Manager

• HoneyComb – Enhancements VPP renderer Topology Mgr - VBD


• VPP – Enhancements
Netconf/YANG
• CSIT – VPP component tests
• OPNFV Honeycomb (Dataplane Agent)

VPP
• Overall System Composition – Integration into CI/CD
DPDK
• Installer: Integration of VPP into APEX
• System Test: FuncTest and Yardstick system test
System Install System Test
application to FDS (APEX) (FuncTest, Yardstick)
See also:
FDS Architecture: https://wiki.opnfv.org/display/fds/OpenStack-ODL-VPP+integration+design+and+architecture
Example: Creating a Neutron vhostuser port on VPP

POST PORT
Neutron (id=uuid, host_id=vpp, vif_type=vhostuser)

Update Port
Neutron NorthBound
Map Port to GBP Endpoint

GBP Neutron Mapper Update/Create GBP Endpoint (L2 context, MAC,...)

Apply Policy
GBP Renderer Manager
Update node(s), bridge-domain
Update device end point
VPP Renderer Topology Manager (vBD)
Netconf Commit
Netconf/ Netconf/ Netconf Commit
YANG (vhostuser i/f config, YANG (bridge config, tunnel config)
bridge config)

Honeycomb Honeycomb
VM vhostuser VXLAN Tunnel
VPP 1 VPP 2
17
FastDataStacks: Near term roadmap

Colorado 1.0
• Base O/S-ODL(L2)-VPP stack (Infra: Neutron / GBP Mapper / GBP Renderer / VBD / Honeycomb / VPP)
• Automatic Install
• Basic system-level testing
• L2 networking using ODL (no east-west security groups), L3 networking uses qrouter/OVS
• Overlays: VXLAN, VLAN
Colorado 2.0
• Enhanced O/S-ODL(L2)-VPP stack (Infra complete: Neutron / GBP Mapper / GBP Renderer / VBD / Honeycomb / VPP)
• Enhanced system-level testing
• High-availability (OpenStack and ODL)
• L2 networking using ODL (incl. east-west security groups), L3 networking uses qrouter/OVS
• O/S-VPP (Infra: Neutron ML2-VPP / Networking-vpp-agent / VPP)
• Automatic Install
• Overlays: VLAN
Colorado 3.0
• Enhanced O/S-ODL(L3)-VPP stack (Infra complete: Neutron / GBP Mapper / GBP Renderer / VBD / Honeycomb / VPP)
• L2 and L3 networking using ODL (incl. east-west security groups)
• L3 networking via VPP (replacing qrouter), incl. NAT/floating-ips
18
...

Neutron

REST

Neutron NorthBound

GBP Neutron Mapper

Using a FastDataStack GBP Renderer Manager

OpenStack – Opendaylight(L2) – FD.io VPP renderer Topology Mgr - VBD

Netconf/YANG

Honeycomb (Dataplane Agent)

VPP

DPDK

System Install System Test


(APEX) (FuncTest, Yardstick)
FastDataStacks: OS – ODL(L2) – FD.io
Example: 3 node setup: 1 x Controller, 2 x Compute
Internet

Control-0
External network i/f

OVS (br-ex)

qrouter (NAT)

VPP
tap

Compute-0 BD Compute-1
DHCP tap 1

Tenant network i/f


Tenant network i/f

Tenant network i/f

VXLAN VXLAN

BD BD
VXLAN
1 1
VPP VPP
vhost-user vhost-user

VM 1 VM 2
Nova services

[root@overcloud-controller-0 ~]# nova service-list


+----+------------------+---------------------------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+----+------------------+---------------------------------------+----------+---------+-------+----------------------------+-----------------+
| 1 | nova-cert | overcloud-controller-0.opnfvapex.com | internal | enabled | up | 2016-09-18T09:24:55.000000 | - |
| 2 | nova-consoleauth | overcloud-controller-0.opnfvapex.com | internal | enabled | up | 2016-09-18T09:24:51.000000 | - |
| 11 | nova-scheduler | overcloud-controller-0.opnfvapex.com | internal | enabled | up | 2016-09-18T09:24:51.000000 | - |
| 12 | nova-conductor | overcloud-controller-0.opnfvapex.com | internal | enabled | up | 2016-09-18T09:24:55.000000 | - |
| 16 | nova-compute | overcloud-novacompute-0.opnfvapex.com | nova | enabled | up | 2016-09-18T09:24:55.000000 | - |
| 17 | nova-compute | overcloud-novacompute-1.opnfvapex.com | nova | enabled | up | 2016-09-18T09:24:55.000000 | - |
+----+------------------+---------------------------------------+----------+---------+-------+----------------------------+-----------------+
Neutron agent list – find your controller hostname

[root@overcloud-controller-0 ~]# neutron agent-list


+----------+------------+----------+-------------------+-------+----------------+---------------+
| id | agent_type | host | availability_zone | alive | admin_state_up | binary |
+----------+------------+----------+-------------------+-------+----------------+---------------+
| 15476974 | L3 agent | overclou | nova | :-) | True | neutron-l3-ag |
| -8a47-49 | | d-contro | | | | ent |
| b2-b9f3- | | ller-0.o | | | | |
| a4010b8b | | pnfvapex | | | | |
| 0c5d | | .com | | | | |
| 23ba51d8 | Metadata | overclou | | :-) | True | neutron- |
| -8a1a- | agent | d-contro | | | | metadata- |
| 41de-bbc | | ller-0.o | | | | agent |
| 7-5adc30 | | pnfvapex | | | | |
| 77afed | | .com | | | | |
| 964d2479 | DHCP agent | overclou | nova | :-) | True | neutron-dhcp- |
| -71c2-42 | | d-contro | | | | agent |
| 01-8392- | | ller-0.o | | | | |
| b068ee07 | | pnfvapex | | | | |
| d9ce | | .com | | | | |
+----------+------------+----------+-------------------+-------+----------------+---------------+
Get an image

[root@overcloud-controller-0 ~]# wget -O /tmp/cirros-0.3.4-x86_64-disk.img http://download.cirros-


cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
--2016-09-18 08:06:10-- http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
Resolving download.cirros-cloud.net (download.cirros-cloud.net)... 64.90.42.85
Connecting to download.cirros-cloud.net (download.cirros-cloud.net)|64.90.42.85|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13287936 (13M) [text/plain]
Saving to: ‘/tmp/cirros-0.3.4-x86_64-disk.img’

100%[======================================>] 13,287,936 2.62MB/s in 4.8s

2016-09-18 08:06:15 (2.62 MB/s) - ‘/tmp/cirros-0.3.4-x86_64-disk.img’ saved [13287936/13287936]

[root@overcloud-controller-0 ~]#
Create an image in Glance

[root@overcloud-controller-0 ~]# glance image-create --name "cirros-0.3.4-x86_64" --file /tmp/cirros-0.3.4-


x86_64-disk.img --disk-format qcow2 --container-format bare --visibility public --progress
[=============================>] 100%
+------------------+----------------------------------------------------------------------------------+
| Property | Value |
+------------------+----------------------------------------------------------------------------------+
| checksum | ee1eca47dc88f4879d8a229cc70a07c6 |
| container_format | bare |
| created_at | 2016-09-18T08:07:05Z |
| direct_url | rbd://a9d7db1e-af3c-4a55-8352-95c477ddf741/images/ad74564d-fd22-414b- |
| | 9fa3-619e87f781a9/snap |
| disk_format | qcow2 |
| id | ad74564d-fd22-414b-9fa3-619e87f781a9 |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros-0.3.4-x86_64 |
| owner | 8bd212b4ae5c427892093c640eba8fd4 |
| protected | False |
| size | 13287936 |
| status | active |
| tags | [] |
| updated_at | 2016-09-18T08:07:06Z |
| virtual_size | None |
| visibility | public |
+------------------+----------------------------------------------------------------------------------+
[root@overcloud-controller-0 ~]#
Create a flavor with hugepages support

[root@overcloud-controller-0 ~]# nova flavor-create --is-public true opnfv 42 768 1 1


+----+-------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-------+-----------+------+-----------+------+-------+-------------+-----------+
| 42 | opnfv | 768 | 1 | 0 | | 1 | 1.0 | True |
+----+-------+-----------+------+-----------+------+-------+-------------+-----------+
Images and flavors available to you
[root@overcloud-controller-0 ~]# nova image-list
+--------------------------------------+---------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+---------------------+--------+--------+
| ad74564d-fd22-414b-9fa3-619e87f781a9 | cirros-0.3.4-x86_64 | ACTIVE | |
+--------------------------------------+---------------------+--------+--------+
[root@overcloud-controller-0 ~]# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 42 | opnfv | 512 | 1 | 0 | | 1 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
| 9 | nfv | 768 | 0 | 0 | | 1 | 1.0 | True |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
Your image flavors
[root@overcloud-controller-0 ~]# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 42 | opnfv | 768 | 1 | 0 | | 1 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
| 9 | nfv | 768 | 0 | 0 | | 1 | 1.0 | True |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
Make your opnfv flavor use hugepages

[root@overcloud-controller-0 ~]# nova flavor-key opnfv set hw:mem_page_size=large


[root@overcloud-controller-0 ~]# nova flavor-show opnfv
+----------------------------+-------------------------------+
| Property | Value |
+----------------------------+-------------------------------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| disk | 0 |
| extra_specs | {"hw:mem_page_size": "large"} |
| id | 9 |
| name | opnfv |
| os-flavor-access:is_public | True |
| ram | 768 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 1 |
+----------------------------+-------------------------------+
Make your image to support hugepages
[root@overcloud-controller-0 ~]# nova image-list
+--------------------------------------+---------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+---------------------+--------+--------+
| ad74564d-fd22-414b-9fa3-619e87f781a9 | cirros-0.3.4-x86_64 | ACTIVE | |
+--------------------------------------+---------------------+--------+--------+
[root@overcloud-controller-0 ~]# glance image-update --property hw_mem_page_size=large ad74564d-fd22-414b-
9fa3-619e87f781a9
+------------------+----------------------------------------------------------------------------------+
| Property | Value |
+------------------+----------------------------------------------------------------------------------+
| checksum | ee1eca47dc88f4879d8a229cc70a07c6 |
| container_format | bare |
| created_at | 2016-09-18T08:07:05Z |
| direct_url | rbd://a9d7db1e-af3c-4a55-8352-95c477ddf741/images/ad74564d-fd22-414b- |
| | 9fa3-619e87f781a9/snap |
| disk_format | qcow2 |
| hw_mem_page_size | large |
| id | ad74564d-fd22-414b-9fa3-619e87f781a9 |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros-0.3.4-x86_64 |
| owner | 8bd212b4ae5c427892093c640eba8fd4 |
| protected | False |
| size | 13287936 |
| status | active |
| tags | [] |
| updated_at | 2016-09-18T08:14:23Z |
| virtual_size | None |
| visibility | public |
+------------------+----------------------------------------------------------------------------------+
Create a vxlan network
[root@overcloud-controller-0 ~]# neutron net-create vxlannet --provider:network_type vxlan
Created a new network:
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | True |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2016-09-18T08:46:52 |
| description | |
| id | fea5f755-6457-4ff5-a4a1-e6404e6b6407 |
| ipv4_address_scope | |
| ipv6_address_scope | |
| mtu | 1450 |
| name | vxlannet |
| port_security_enabled | True |
| provider:network_type | vxlan |
| provider:physical_network | |
| provider:segmentation_id | 82 |
| router:external | False |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| tenant_id | 8bd212b4ae5c427892093c640eba8fd4 |
| updated_at | 2016-09-18T08:46:52 |
+---------------------------+--------------------------------------+
Assign a subnet to your vxlan network
[root@overcloud-controller-0 ~]# neutron subnet-create vxlannet 10.11.12.0/24 --name vxlansubnet
Created a new subnet:
+-------------------+------------------------------------------------+
| Field | Value |
+-------------------+------------------------------------------------+
| allocation_pools | {"start": "10.11.12.2", "end": "10.11.12.254"} |
| cidr | 10.11.12.0/24 |
| created_at | 2016-09-18T08:47:31 |
| description | |
| dns_nameservers | |
| enable_dhcp | True |
| gateway_ip | 10.11.12.1 |
| host_routes | |
| id | 1e9a5a26-478e-4837-a659-ca7f6105a7e3 |
| ip_version | 4 |
| ipv6_address_mode | |
| ipv6_ra_mode | |
| name | vxlansubnet |
| network_id | fea5f755-6457-4ff5-a4a1-e6404e6b6407 |
| subnetpool_id | |
| tenant_id | 8bd212b4ae5c427892093c640eba8fd4 |
| updated_at | 2016-09-18T08:47:31 |
+-------------------+------------------------------------------------+
Available Neutron networks
[root@overcloud-controller-0 ~]# neutron net-list
+---------------------------------+----------+---------------------------------+
| id | name | subnets |
+---------------------------------+----------+---------------------------------+
| 97f3a196-69eb-4200-bd51-4336a6c | external | 825aa7e8-99a4-4c62-860f- |
| d0fb8 | | 5986ec763b9b 192.168.3.0/24 |
| fea5f755-6457-4ff5-a4a1-e6404e6 | vxlannet | 1e9a5a26-478e-4837-a659-ca7f610 |
| b6407 | | 5a7e3 10.11.12.0/24 |
+---------------------------------+----------+---------------------------------+
Also reflected on Horizon Dashboard…
Create a Neutron Router and wire it up
[root@overcloud-controller-0 ~]# neutron router-create r1
Created a new router:
+-------------------------+--------------------------------------+
| Field | Value |
+-------------------------+--------------------------------------+
| admin_state_up | True |
| availability_zone_hints | |
| availability_zones | |
| description | |
| distributed | False |
| external_gateway_info | |
| ha | False |
| id | 7102c656-fc08-4234-b0ac-3cb634184b05 |
| name | r1 |
| routes | |
| status | ACTIVE |
| tenant_id | 8bd212b4ae5c427892093c640eba8fd4 |
+-------------------------+--------------------------------------+

[root@overcloud-controller-0 ~]# neutron router-interface-add r1 subnet=vxlansubnet


Added interface f70a5d22-e6cd-4c36-8b7c-66ddd14c469f to router r1.

[root@overcloud-controller-0 ~]# neutron router-gateway-set r1 external


Set gateway for router r1
Also visible on the Horizon Dashboard
Optional: Create ports for your VMs - #1
[root@overcloud-controller-0 ~]# neutron port-create vxlannet --name vm-compute-0-1-port
Created a new port:
+-----------------------+------------------------------------------------------+
| Field | Value |
+-----------------------+------------------------------------------------------+
| admin_state_up | True |
| allowed_address_pairs | |
| binding:host_id | |
| binding:profile | {} |
| binding:vif_details | {} |
| binding:vif_type | unbound |
| binding:vnic_type | normal |
| created_at | 2016-09-18T09:03:03 |
| description | |
| device_id | |
| device_owner | |
| extra_dhcp_opts | |
| fixed_ips | {"subnet_id": |
| | "1e9a5a26-478e-4837-a659-ca7f6105a7e3", |
| | "ip_address": "10.11.12.3"} |
| id | 9bf477cb-a016-407e-a97a-7f15b35c3bad |
| mac_address | fa:16:3e:db:e5:02 |
| name | vm-compute-0-1-port |
| network_id | fea5f755-6457-4ff5-a4a1-e6404e6b6407 |
| port_security_enabled | True |
| security_groups | 67bdbded-497b-4b00-b385-aeb11cb732eb |
| status | DOWN |
| tenant_id | 8bd212b4ae5c427892093c640eba8fd4 |
| updated_at | 2016-09-18T09:03:03 |
+-----------------------+------------------------------------------------------+
Optional: Create ports for your VMs - #2
[root@overcloud-controller-0 ~]# neutron port-create vxlannet --name vm-compute-1-1-port
Created a new port:
+-----------------------+------------------------------------------------------+
| Field | Value |
+-----------------------+------------------------------------------------------+
| admin_state_up | True |
| allowed_address_pairs | |
| binding:host_id | |
| binding:profile | {} |
| binding:vif_details | {} |
| binding:vif_type | unbound |
| binding:vnic_type | normal |
| created_at | 2016-09-18T09:03:53 |
| description | |
| device_id | |
| device_owner | |
| extra_dhcp_opts | |
| fixed_ips | {"subnet_id": |
| | "1e9a5a26-478e-4837-a659-ca7f6105a7e3", |
| | "ip_address": "10.11.12.4"} |
| id | b504c2a4-6c6c-41c0-b011-a3e747c63568 |
| mac_address | fa:16:3e:99:24:41 |
| name | vm-compute-1-1-port |
| network_id | fea5f755-6457-4ff5-a4a1-e6404e6b6407 |
| port_security_enabled | True |
| security_groups | 67bdbded-497b-4b00-b385-aeb11cb732eb |
| status | DOWN |
| tenant_id | 8bd212b4ae5c427892093c640eba8fd4 |
| updated_at | 2016-09-18T09:03:53 |
+-----------------------+------------------------------------------------------+
Check your ports
[root@overcloud-controller-0 ~]# neutron port-list
+------------------+------------------+------------------+---------------------+
| id | name | mac_address | fixed_ips |
+------------------+------------------+------------------+---------------------+
| 8904fbf0-5a9b- | | fa:16:3e:8c:8f:f | {"subnet_id": "1e9a |
| 48f2-b88f- | | 2 | 5a26-478e-4837-a659 |
| e115093d2594 | | | -ca7f6105a7e3", | DHCP tap port
| | | | "ip_address": |
| | | | "10.11.12.2"} |
| 9bf477cb-a016 | vm- | fa:16:3e:db:e5:0 | {"subnet_id": "1e9a |
| -407e-a97a- | compute-0-1-port | 2 | 5a26-478e-4837-a659 |
| 7f15b35c3bad | | | -ca7f6105a7e3", | Port for VM #1
| | | | "ip_address": |
| | | | "10.11.12.3"} |
| b504c2a4-6c6c-41 | vm- | fa:16:3e:99:24:4 | {"subnet_id": "1e9a |
| c0-b011-a3e747c6 | compute-1-1-port | 1 | 5a26-478e-4837-a659 |
| 3568 | | | -ca7f6105a7e3", | Port for VM #2
| | | | "ip_address": |
| | | | "10.11.12.4"} |
| f70a5d22-e6cd- | | fa:16:3e:3f:50:e | {"subnet_id": "1e9a |
| 4c36-8b7c- | | 4 | 5a26-478e-4837-a659 |
| 66ddd14c469f | | | -ca7f6105a7e3", | qrouter tap port
| | | | "ip_address": |
| | | | "10.11.12.1"} |
+------------------+------------------+------------------+---------------------+
Check your ports – Horizon Dashboard
[root@overcloud-controller-0 ~]# nova boot --image cirros-0.3.4-x86_64 --flavor opnfv --nic port-id=`neutron port-list | grep vm-compute-0-1-port | cut -f 2 -d " "`
vm-compute-0-1
+--------------------------------------+------------------------------------------------------------+
| Property | Value |
+--------------------------------------+------------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | |
| OS-EXT-SRV-ATTR:host | - |
| OS-EXT-SRV-ATTR:hostname | vm-compute-0-1 |
| OS-EXT-SRV-ATTR:hypervisor_hostname | - |
| OS-EXT-SRV-ATTR:instance_name | instance-000000e0 |
| OS-EXT-SRV-ATTR:kernel_id | |
| OS-EXT-SRV-ATTR:launch_index | 0 |
| OS-EXT-SRV-ATTR:ramdisk_id | |
| OS-EXT-SRV-ATTR:reservation_id | r-rnefgdx0 |
| OS-EXT-SRV-ATTR:root_device_name | - |
| OS-EXT-SRV-ATTR:user_data | - |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | tzShEV3gzX9k |
| config_drive | |
| created | 2016-09-18T09:40:19Z |
| description | - |
| flavor | opnfv (42) |
| hostId | |
| host_status | |
| id | 78a2a66d-b73c-470d-9359-5bd0a9076e61 |
| image | cirros-0.3.4-x86_64 (ad74564d-fd22-414b-9fa3-619e87f781a9) |
| key_name | - |
| locked | False |
| metadata | {} |
| name | vm-compute-0-1 |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | BUILD |
| tenant_id
| updated
| user_id
| 8bd212b4ae5c427892093c640eba8fd4
| 2016-09-18T09:40:19Z
| 7c90012e025c42d8aac85814e515a449
|
|
|
+--------------------------------------+------------------------------------------------------------+
Boot VM #1
[root@overcloud-controller-0 ~]# nova boot --image cirros-0.3.4-x86_64 --flavor opnfv --nic port-id=`neutron port-list | grep vm-compute-1-1-port | cut -f 2 -d " "`
vm-compute-1-1
+--------------------------------------+------------------------------------------------------------+
| Property | Value |
+--------------------------------------+------------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | |
| OS-EXT-SRV-ATTR:host | - |
| OS-EXT-SRV-ATTR:hostname | vm-compute-1-1 |
| OS-EXT-SRV-ATTR:hypervisor_hostname | - |
| OS-EXT-SRV-ATTR:instance_name | instance-000000e1 |
| OS-EXT-SRV-ATTR:kernel_id | |
| OS-EXT-SRV-ATTR:launch_index | 0 |
| OS-EXT-SRV-ATTR:ramdisk_id | |
| OS-EXT-SRV-ATTR:reservation_id | r-e6e222kd |
| OS-EXT-SRV-ATTR:root_device_name | - |
| OS-EXT-SRV-ATTR:user_data | - |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | NvBug6M6i6aj |
| config_drive | |
| created | 2016-09-18T09:42:07Z |
| description | - |
| flavor | opnfv (42) |
| hostId | |
| host_status | |
| id | 05413042-1446-4cf0-ac93-9f2ba3dcf984 |
| image | cirros-0.3.4-x86_64 (ad74564d-fd22-414b-9fa3-619e87f781a9) |
| key_name | - |
| locked | False |
| metadata | {} |
| name | vm-compute-1-1 |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | BUILD |
| tenant_id
| updated
| user_id
| 8bd212b4ae5c427892093c640eba8fd4
| 2016-09-18T09:42:07Z
| 7c90012e025c42d8aac85814e515a449
|
|
|
+--------------------------------------+------------------------------------------------------------+
Boot VM #2
Check your VMs
[root@overcloud-controller-0 ~]# nova list
+--------------------------------------+----------------+--------+------------+-------------+---------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+----------------+--------+------------+-------------+---------------------+
| 78a2a66d-b73c-470d-9359-5bd0a9076e61 | vm-compute-0-1 | ACTIVE | - | Running | vxlannet=10.11.12.3 |
| 05413042-1446-4cf0-ac93-9f2ba3dcf984 | vm-compute-1-1 | ACTIVE | - | Running | vxlannet=10.11.12.4 |
+--------------------------------------+----------------+--------+------------+-------------+---------------------+
Check your VMs – Horizon Dashboard
Your Network Topology
Get console access to your VMs
[root@overcloud-controller-0 ~]# nova get-vnc-console vm-compute-0-1 novnc
+-------+-----------------------------------------------------------------------------------+
| Type | Url |
+-------+-----------------------------------------------------------------------------------+
| novnc | http://192.168.3.85:6080/vnc_auto.html?token=fd11e599-691b-4de0-b568-1b751edbcf56 |
+-------+-----------------------------------------------------------------------------------+

[root@overcloud-controller-0 ~]# nova get-vnc-console vm-compute-1-1 novnc


+-------+-----------------------------------------------------------------------------------+
| Type | Url |
+-------+-----------------------------------------------------------------------------------+
| novnc | http://192.168.3.85:6080/vnc_auto.html?token=fcde88a3-2a6e-4b95-b3a0-4465487b5327 |
+-------+-----------------------------------------------------------------------------------+
Console VM #1
Console VM#2
Ping 10.11.12.3
Or just ping from the control node…
[root@overcloud-controller-0 ~]# ip netns
qrouter-e2ac7ad2-2a51-4c6b-a0ca-4e7c1b1cf347
qdhcp-5dd93660-874a-4eae-8f5d-a3ae4fe2fa0f
[root@overcloud-controller-0 ~]# ip netns exec qdhcp-5dd93660-874a-4eae-8f5d-a3ae4fe2fa0f ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3989: tap8dfc3151-8e: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether fa:16:3e:91:f2:1a brd ff:ff:ff:ff:ff:ff
inet 10.11.12.2/24 brd 10.11.12.255 scope global tap8dfc3151-8e
valid_lft forever preferred_lft forever
inet 169.254.169.254/16 brd 169.254.255.255 scope global tap8dfc3151-8e
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe91:f21a/64 scope link
valid_lft forever preferred_lft forever
[root@overcloud-controller-0 ~]# ip netns exec qdhcp-5dd93660-874a-4eae-8f5d-a3ae4fe2fa0f ping 10.11.12.3
PING 10.11.12.3 (10.11.12.3) 56(84) bytes of data.
64 bytes from 10.11.12.3: icmp_seq=1 ttl=64 time=0.275 ms
64 bytes from 10.11.12.3: icmp_seq=2 ttl=64 time=0.119 ms
^C
--- 10.11.12.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.115/0.169/0.275/0.076 ms
[root@overcloud-controller-0 ~]# ip netns exec qdhcp-5dd93660-874a-4eae-8f5d-a3ae4fe2fa0f ping 10.11.12.4
PING 10.11.12.4 (10.11.12.4) 56(84) bytes of data.
64 bytes from 10.11.12.4: icmp_seq=1 ttl=64 time=0.187 ms
64 bytes from 10.11.12.4: icmp_seq=2 ttl=64 time=0.109 ms
^C
--- 10.11.12.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.109/0.126/0.187/0.031 ms
...

Neutron

REST

Neutron NorthBound

GBP Neutron Mapper


A closer look at FastDataStacks Components GBP Renderer Manager

APEX Installer VPP renderer Topology Mgr - VBD

Netconf/YANG

Honeycomb (Dataplane Agent)

VPP

DPDK

System Install System Test


(APEX) (FuncTest, Yardstick)
Apex Installer

• Apex is an OPNFV Installation and Deployment tool based on the


RDO Project's Triple-O OpenStack installation tool
• Triple-O is an image based life cycle deployment tool that is a
member of the OpenStack Big Tent Governance

• https://wiki.opnfv.org/display/apex
• https://wiki.opnfv.org/display/apex/Integration+Guide
APEX Install & Build Undercloud VM
NIC 0
OpenStack Admin
NIC 2
APEX / TripleO

• Jump Host Setup


• Apex ISO Public

• CentOS Virtualization Host +


Overcloud Controller
NIC 0
OpenStack Services
Apex RPMs OpenDaylight

• Git Repo (local build) FD.io: Honeycomb, VPP


qrouter
NIC 1

Tenant

• Build artifacts: OVS (br-ext) NIC 2

• CentOS ISO
Overcloud Compute 1..N
• Apex RPMs Nova compute
NIC 0

• Undercloud libvirt image FD.io: Honeycomb, VPP NIC 1

• Glance overcloud images


Apex: Executable Files

• RPM: • Git:
• opnfv-deploy • deploy.sh
• opnfv-clean • clean.sh
• opnfv-util • util.sh
Apex: Deployment

Jump Host
Jump Host

Libvirt image → Undercloud VM


Apex: Deployment

Jump Host

Undercloud (VM)

Glance images → OPNFV (overcloud)


Apex: Deployment

Jump Host
OPNFV
OPNFVControl
OPNFVControl
Control
Undercloud (VM)

OPNFV
OPNFVCompute
OPNFVCompute
Compute

“Overcloud”
Apex: Deployment
APEX deploy command:
3 config files

nohup opnfv-deploy --debug -n /etc/opnfv-


apex/network_settings.yaml -d /etc/opnfv-apex/os-odl_l2-
fdio-noha.yaml -i /etc/opnfv-apex/inventory.yaml &
/etc/opnfv-apex/os-odl_l2-fdio-noha.yaml

global_params:
ha_enabled: false

deploy_options:
sdn_controller: opendaylight #Use OpenDaylight as network controller
sdn_l3: false
odl_version: boron #OpenDaylight Boron is required for FDS
tacker: true
congress: true
sfc: false
vpn: false
vpp: true #use VPP
dataplane: fdio #use VPP for communication between compute nodes
performance:
Controller:
kernel:
hugepages: 1024 #VPP setups default to 1024
hugepagesz: 2M
intel_iommu: 'on'
iommu: pt
Compute:
kernel:
hugepagesz: 2M
hugepages: 2048 #Should be as high as possible for the compute nodes
intel_iommu: 'on' #enable IOMMU
iommu: pt #IOMMU pass through mode – disable IOMMU for the hypervisor
/etc/opnfv-apex/network_settings.yaml

# This configuration file defines Network Environment for a


# Baremetal Deployment of OPNFV. It contains default values
# for 4 following networks:
#
# - admin
# - private*
# - public
# - storage*
#
# *) optional networks
#
# Any values missing from this configuration file will be
# auto-detected by deployment script from the existing network
# configuration of the jumphost.
#
# Optional networks will be consolidated with the admin network
# if not explicitely configured.
#
# See short description of the networks in the comments below.
#

# DNS Servers for all nodes, comma delimited list


dns_servers: ["144.254.71.184"]

# "admin" is the short name for Control Plane Network.


# During OPNFV deployment it is used for node provisioning so
# PXE boot should be enabled for the related interfaces on all
# the nodes in the OPNFV cluster. After the deployment this
# network is used as the OpenStack management network which
# carries e.g. communication between its internal components.
#
domain_name: 'opnfvapex.com'
/etc/opnfv-apex/network_settings.yaml
admin_network:
enabled: true
network_type: bridged #Indicates if this network will be bridged to an interface, or to a bond
bridged_interface: 'enp6s0‘ #Interface to bridge to for installer VM
bond_interfaces: '' #Interfaces to create bond with for installer VM
compute_interface: nic1
controller_interface: nic1
vlan: native #VLAN tag to use, native means none
usable_ip_range: 192.168.1.1,192.168.1.254 #Usable ip range, if empty entire range is usable
gateway: 192.168.1.1 #Gateway (only needed when public_network is disabled), if empty it is auto-detected
provisioner_ip: 192.168.1.2 #installer VM IP, if empty it is the next available IP in the admin subnet
cidr: 192.168.1.0/24 #subnet in CIDR format 10.60.17.0/24, if empty it will be auto-detected
dhcp_range: 192.168.1.3,192.168.1.13 #dhcp range for the admin network, if empty it will be automatically provisioned
introspection_range: 192.168.1.100,192.168.1.120 #Range used for introspection phase (examining nodes)

# "private" is an optional network used as underlying physical


# network for virtual provider and tenant networks created by
# users. Traffic between virtual machines is carried by this
# network.
#
private_network:
enabled: true
bond_interfaces: ''
compute_interface: nic2
controller_interface: nic2
cidr: 192.168.0.0/24
/etc/opnfv-apex/network_settings.yaml

# "public" network is used for external connectivity.


# The external network provides Internet access for virtual
# machines. If floating IP range is defined for this network,
# floating IP addresses can be used for accessing virtual
# machines from outside of OPNFV cluster. Also external REST
# API calls use this network.
#
public_network:
enabled: true
network_type: bridged
bridged_interface: 'enp8s0'
compute_interface: nic3
controller_interface: nic3
cidr: 192.168.3.0/24
gateway: 192.168.3.2
floating_ip_range: 192.168.3.64,192.168.3.84
usable_ip_range: 192.168.3.85,192.168.3.159
provisioner_ip: 192.168.3.2

# "storage" is an optional network used by storage backends.


# You can configure this network in order to reduce load on
# Control Plane Network.
#
storage_network:
enabled: true
bond_interfaces: ''
compute_interface: nic4
controller_interface: nic4
cidr: 192.168.2.0/24
/etc/opnfv-apex/inventory.yaml

nodes:
node1:
mac_address: "00:25:b5:00:01:4a"
ipmi_ip: 10.60.6.186
ipmi_user: admin
ipmi_pass: cisco
pm_type: "pxe_ipmitool"
cpus: 2
memory: 8192
disk: 40
arch: "x86_64"
capabilities: "profile:control"
node2:
mac_address: "00:25:b5:00:01:4d"
ipmi_ip: 10.60.6.196
ipmi_user: admin
ipmi_pass: cisco
pm_type: "pxe_ipmitool"
cpus: 2
memory: 8192
disk: 40
arch: "x86_64"
capabilities: "profile:compute"
node3:
mac_address: "00:25:b5:00:01:50"
ipmi_ip: 10.60.6.151
ipmi_user: admin
ipmi_pass: cisco
pm_type: "pxe_ipmitool"
cpus: 2
memory: 8192
disk: 40
arch: "x86_64"
capabilities: "profile:compute"
Deploy!

nohup opnfv-deploy --debug -n /etc/opnfv-


apex/network_settings.yaml -d /etc/opnfv-apex/os-odl_l2-
fdio-noha.yaml -i /etc/opnfv-apex/inventory.yaml &
Deployment done!

root@pirl-opnfv: tail -5 nohup.out


== Keystone users ==
Warning keystonerc not sourced
Undercloud IP: 192.168.122.7, please connect by doing 'opnfv-util undercloud'
Overcloud dashboard available at http://192.168.3.85/dashboard
INFO: Post Install Configuration Complete
/root/overcloudrc

export OS_NO_CACHE=True
export OS_CLOUDNAME=overcloud
export OS_AUTH_URL=http://192.168.3.85:5000/v2.0
export NOVA_VERSION=1.1
export COMPUTE_API_VERSION=1.1
export OS_USERNAME=admin
export no_proxy=,192.168.3.85,192.168.1.4
export OS_PASSWORD=VCvftuzpCqmYY3vavnyptbNQX
export PYTHONWARNINGS="ignore:Certificate has no, ignore:A true SSLContext object is not available"
export OS_TENANT_NAME=admin
export SDN_CONTROLLER_IP=192.168.1.8
Ready…
APEX References

• https://wiki.opnfv.org/display/apex
• https://wiki.opnfv.org/display/apex/Integration+Guide

• http://docs.openstack.org/developer/tripleo-
docs/troubleshooting/troubleshooting-overcloud.html

• FD.io specifics:
• Puppet Modules for FD.io installation and configuration:
https://github.com/radez/puppet-fdio
• APEX additions of TripleO Heat Templates:
https://github.com/trozet/opnfv-tht/
...

Neutron

REST

Neutron NorthBound

GBP Neutron Mapper

GBP Renderer Manager


A closer look at FastDataStacks Components VPP renderer Topology Mgr - VBD

Testing... Netconf/YANG

Honeycomb (Dataplane Agent)

VPP

DPDK

System Install System Test


(APEX) (FuncTest, Yardstick)
FastDataStacks Validation

• As part of the effort towards increasing adoption,


FDS is being validated on 3rd party hardware
• OPNFV Linux Foundation reference lab
(Cisco UCS-B)
• Cisco OPNFV labs (UCS-B and UCS-C)
• CENGN: OPNFV Pharos (Kontron)
• Thanks to CENGN, FDS is now being validated
on a Kontron SymKloud server.
• SymKloud MS2910
• 10G internal networking
• 6 blades:
• Xeon 8C D-1548
• 32GB RDIMM memory
• 128GB SSD
• 2x1TB HDD
OPNFV Functional Testing:
Project FuncTest
vPing SSH* ODL suite* Promise
Verify private & public Robot framework, ODL Resource reservation and
connectivity functional testing management project

vPing userdata*
ONOS suite Doctor
Verify nova-metadata service
and private connectivity TestON framework Fault management and
maintenance project

Tempest test*
OpenStack native tests (200+ vIMS BGPVPN
tests) OpenSource solution by OpenStack
Clearwater Neutron BGPVPN project
Rally bench tests* integration
Benchmark the OpenStack
deployment

*FDS currently only runs the highlighted (dark black) test suites
FDS: FuncTest Test Results Summary
FuncTest for FastDataStacks

• For Colorado 1.0, FDS leverages FuncTest out of the box


• Changes required focused on adding support for creating images and
flavors with hugepages for fdio scenarios (for vping, tempest, etc.)

• Open Issues found while testing (Status per Sep/19/2016)


• FDS-16: Security group configuration through nova leads to vhostuser port connection issues
• FDS-62: APEX - Increase number of files MariaDB can open (required for Rally testing)
• FDS-79: Sometimes (especially in bulk crete/delete operations when multiple networks/ports are created within short time).
OpenDaylight doesn't accept creation requests
• FDS-80: After launching a VM it stayed forever in BUILD status. Also further operation related to this VM (volume attachment etc.) caused problems
• FDS-81: After functest finishes there are two bridge domains on computes and none on controller
• FDS-82: Nova list shows no VMs but there are some on computes in paused state
FastDataStacks OPNFV CI

• As FDS increases its


automated test coverage, it
will be able to utilize the
CENGN Pharos pod to run its
CI jobs using OPNFV’s
Jenkins CI tool.
• This will facilitate testing of
continued development as
FD.io moves forward in its
development, allowing FDS
to keep pace.
...

Neutron

REST

Neutron NorthBound

GBP Neutron Mapper

GBP Renderer Manager


A closer look at FastDataStacks Components VPP renderer Topology Mgr - VBD

FD.io/VPP Netconf/YANG

Honeycomb (Dataplane Agent)

VPP

DPDK

System Install System Test


(APEX) (FuncTest, Yardstick)
FastDataStacks: OS – ODL(L2) – FD.io
Network Architecture
Internet

Control-0
External network i/f

OVS (br-ex)

qrouter (NAT)

VPP
tap

Compute-0 BD Compute-1
DHCP tap 1

Tenant network i/f


Tenant network i/f

Tenant network i/f

VXLAN VXLAN

BD BD
VXLAN
1 1
VPP VPP
vhost-user vhost-user

VM 1 VM 2
vppctl show bridge
[root@overcloud-controller-0 ~]# vppctl show bridge
ID Index Learning U-Forwrd UU-Flood Flooding ARP-Term BVI-Intf
0 0 off off off off off local0
1 1 on on on on off N/A
vppctl show int
[root@overcloud-controller-0 ~]# vppctl show int
Name Idx State Counter Count
TenGigabitEthernet7/0/0 1 up rx packets 333
rx bytes 48966
tx packets 218
tx bytes 34136
ip4 331
local0 0 down
tap-0 2 up rx packets 218
rx bytes 23584
tx packets 325
tx bytes 31884
drops 11
ip6 11
tap-1 3 up rx packets 21
rx bytes 1590
tx packets 43
tx bytes 4614
drops 12
ip6 9
vxlan_tunnel0 4 up rx packets 108
rx bytes 10598
tx packets 72
tx bytes 10334
drops 10
vxlan_tunnel1 5 up rx packets 109
rx bytes 10640
tx packets 72
tx bytes 10334
drops 11
vppctl show int addr
[root@overcloud-controller-0 ~]# vppctl show int addr
TenGigabitEthernet7/0/0 (up):
192.168.0.23/24
local0 (dn):
tap-0 (up):
l2 bridge bd_id 1 shg 0
tap-1 (up):
l2 bridge bd_id 1 shg 0
vxlan_tunnel0 (up):
l2 bridge bd_id 1 shg 1
vxlan_tunnel1 (up):
l2 bridge bd_id 1 shg 1
vppctl show bridge 1 detail
[root@overcloud-controller-0 ~]# vppctl show bridge 1 detail
ID Index Learning U-Forwrd UU-Flood Flooding ARP-Term BVI-Intf
1 1 on on on on off N/A

Interface Index SHG BVI VLAN-Tag-Rewrite


vxlan_tunnel0 4 1 - none
vxlan_tunnel1 5 1 - none
tap-1 3 0 - none
tap-0 2 0 - none
[root@overcloud-controller-0 ~]# vppctl show run
Time 157279.6, average vectors/node 1.00, last 128 main loops 0.00 per node 0.00 vector rates in 3.6496e-3, out 3.7258e-3, drop 2.9247e-4, punt 0.0000e0
Name State Calls Vectors Suspends Clocks Vectors/Call
TenGigabitEthernet7/0/0-output active 218 218 0 5.38e2 1.00

vppctl show run


TenGigabitEthernet7/0/0-tx
admin-up-down-process
api-rx-from-ring
active
event wait
active
218
0
0
218
0
0 16155
0
1
1.75e3
5.81e4
5.40e4
1.00
0.00
0.00
arp-input active 5 5 0 1.47e4 1.00
cdp-process any wait 0 0 136929 1.22e3 0.00
dhcp-client-process any wait 0 0 1573 9.03e3 0.00
dpdk-input polling 436451494338 333 0 2.55e11 0.00
dpdk-process any wait 0 0 52422 4.89e5 0.00
error-drop active 46 46 0 4.13e3 1.00
ethernet-input active 242 243 0 1.86e3 1.00
flow-report-process any wait 0 0 1 1.31e4 0.00
gmon-process time wait 0 0 31455 1.28e5 0.00
icmp6-neighbor-solicitation active 3 3 0 1.14e4 1.00
icmp6-router-solicitation active 3 3 0 1.05e4 1.00
interface-output active 2 2 0 4.69e3 1.00
ip4-input-no-checksum active 331 331 0 1.41e3 1.00
ip4-local active 331 331 0 6.19e2 1.00
ip4-lookup active 547 547 0 8.30e2 1.00
ip4-rewrite-transit active 216 216 0 6.17e2 1.00
ip4-udp-lookup active 331 331 0 8.76e2 1.00
ip6-hop-by-hop active 16 16 0 3.18e3 1.00
ip6-icmp-input active 6 6 0 3.55e3 1.00
ip6-icmp-neighbor-discovery-ev any wait 0 0 157277 6.73e3 0.00
ip6-input active 21 22 0 4.11e3 1.05
ip6-local active 21 22 0 5.59e3 1.05
ip6-lookup active 21 22 0 5.79e4 1.05
l2-flood active 95 95 0 3.01e3 1.00
l2-fwd active 510 510 0 4.37e2 1.00
l2-input active 547 547 0 5.57e2 1.00
l2-learn active 547 547 0 2.92e3 1.00
l2-output active 584 584 0 7.51e2 1.00
lisp-retry-service any wait 0 0 78639 5.92e3 0.00
startup-config-process done 1 0 1 9.31e4 0.00
tap-0-output active 325 325 0 5.09e2 1.00
tap-0-tx active 325 325 0 2.92e4 1.00
tap-1-output active 43 43 0 7.12e2 1.00
tap-1-tx active 43 43 0 3.62e4 1.00
tapcli-rx interrupt wa 240 241 0 7.01e3 1.00
unix-epoll-input polling 436446038556 0 0 6.11e2 0.00
vhost-user-process any wait 0 0 1 1.18e5 0.00
vpe-link-state-process event wait 0 0 15 1.42e4 0.00
vpe-oam-process any wait 0 0 77096 6.16e3 0.00
vpe-route-resolver-process any wait 0 0 1573 1.69e4 0.00
vxlan-encap active 216 216 0 1.42e3 1.00
vxlan4-input active 331 331 0 1.03e3 1.00
qrouter and DHCP namespace
[root@overcloud-controller-0 ~]# ip netns
qrouter-ebaf7c00-03aa-4ada-aaae-f1bd3e31342a
qdhcp-9cd8afa0-2b79-4b83-8415-ab0dbc5da1fa

[root@overcloud-controller-0 ~]# ip netns exec qrouter-ebaf7c00-03aa-4ada-aaae-f1bd3e31342a ip addr


1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3986: qr-66aa3915-02: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether fa:16:3e:fd:6c:19 brd ff:ff:ff:ff:ff:ff
inet 10.11.12.1/24 brd 10.11.12.255 scope global qr-66aa3915-02
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fefd:6c19/64 scope link
valid_lft forever preferred_lft forever
3987: qg-db7b5f31-b9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN
link/ether fa:16:3e:ff:c0:05 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.73/24 brd 192.168.3.255 scope global qg-db7b5f31-b9
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:feff:c005/64 scope link
valid_lft forever preferred_lft forever
qrouter
[root@overcloud-controller-0 ~]# ip netns exec qrouter-ebaf7c00-03aa-4ada-aaae-f1bd3e31342a ip route
default via 192.168.3.2 dev qg-db7b5f31-b9
10.11.12.0/24 dev qr-66aa3915-02 proto kernel scope link src 10.11.12.1
192.168.3.0/24 dev qg-db7b5f31-b9 proto kernel scope link src 192.168.3.73

[root@overcloud-controller-0 ~]# ip netns exec qrouter-ebaf7c00-03aa-4ada-aaae-f1bd3e31342a iptables -t nat -S


-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N neutron-l3-agent-OUTPUT
-N neutron-l3-agent-POSTROUTING
-N neutron-l3-agent-PREROUTING
-N neutron-l3-agent-float-snat
-N neutron-l3-agent-snat
-N neutron-postrouting-bottom
-A PREROUTING -j neutron-l3-agent-PREROUTING
-A OUTPUT -j neutron-l3-agent-OUTPUT
-A POSTROUTING -j neutron-l3-agent-POSTROUTING
-A POSTROUTING -j neutron-postrouting-bottom
-A neutron-l3-agent-POSTROUTING ! -i qg-db7b5f31-b9 ! -o qg-db7b5f31-b9 -m conntrack ! --ctstate DNAT -j ACCEPT
-A neutron-l3-agent-PREROUTING -d 169.254.169.254/32 -i qr-+ -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 9697
-A neutron-l3-agent-snat -j neutron-l3-agent-float-snat
-A neutron-l3-agent-snat -o qg-db7b5f31-b9 -j SNAT --to-source 192.168.3.73
-A neutron-l3-agent-snat -m mark ! --mark 0x2/0xffff -m conntrack --ctstate DNAT -j SNAT --to-source 192.168.3.73
-A neutron-postrouting-bottom -m comment --comment "Perform source NAT on outgoing traffic." -j neutron-l3-agent-snat
...

Neutron

REST

Neutron NorthBound

GBP Neutron Mapper


A closer look at FastDataStacks Components GBP Renderer Manager

HoneyComb VPP renderer Topology Mgr - VBD

Netconf/YANG

Honeycomb (Dataplane Agent)

VPP

DPDK

System Install System Test


(APEX) (FuncTest, Yardstick)
Honeycomb
A generic, model driven (YANG) management agent

• Northbound interfaces:
• RESTCONF
• NETCONF
• Generic data processing layer (transaction
management, validation)
• Data processing layer: Pipeline processing data
from northbound interfaces down to translation layer
• Translation layer: Invoked by above layer to handle
configuration updates or when polling operational
state from VPP. Specific translation code lives in this
layer in a form of extensions/plugins
• Extensible, pluggable translation layer to HoneyComb
handle resulting data in any way
HoneyComb – Key Features

• Key Features:
• Config, Operational, Context data processing, Persistence & Reconciliation, Rollback,
CRUD operations on data, Notifications, Simple JSON plugin configuration
• Infrastructure:
• Utilizes existing Opendaylight components and tools:
• Yangtools, MD-SAL, Netconf, Restconf
• Does not use ODL’s config subsystem, OSGi or any other container
• Wired into a special data processing pipeline
• Running in a JVM
• Reduced Footprint (compared to ODL)
• < 100Mb RAM, < 10sec Startup time, < 30Mb of disk
HoneyComb at Work - Example

QR DHCP

Ctl 192.168.0.23

vxlan_tunnel vxlan_tunnel

192.168.0.21 C0 C1 192.168.0.22

VM VM
[root@overcloud-controller-0 ~]# curl -XGET -v -u admin:admin http://localhost:8182/restconf/config/ietf-interfaces:interfaces/ | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* About to connect() to localhost port 8182 (#0)
* Trying ::1...
* Connection refused
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8182 (#0)
* Server auth using Basic with user 'admin'
> GET /restconf/config/ietf-interfaces:interfaces/ HTTP/1.1
> Authorization: Basic YWRtaW46YWRtaW4=
> User-Agent: curl/7.29.0
> Host: localhost:8182
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 18 Sep 2016 10:29:10 GMT
< Content-Type: application/yang.data+json
< Transfer-Encoding: chunked
< Server: Jetty(9.3.11.v20160721)
<
{ [data not shown]
100 1499 0 1499 0 0 150k 0 --:--:-- --:--:-- --:--:-- 162k
* Connection #0 to host localhost left intact
{
"interfaces": {
"interface": [
{
"description": "neutron port",
"enabled": true, Ctl
"link-up-down-trap-enable": "enabled",
"name": "neutron_port_f70a5d22-e6cd-4c36-8b7c-66ddd14c469f",
"type": "v3po:tap",
"v3po:l2": {
"bridge-domain": "fea5f755-6457-4ff5-a4a1-e6404e6b6407"
},
"v3po:tap": {
"mac": "fa:16:3e:3f:50:e4",

}
"tap-name": "qr-f70a5d22-e6" QR
},

Controller:
HC – Interfaces (1/3)
{
"enabled": true,
"name": "vxlan_tunnel2",
"type": "v3po:vxlan-tunnel",
"v3po:l2": {
"bridge-domain": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"bridged-virtual-interface": false,
QR DHCP
"split-horizon-group": 1
},
"v3po:vxlan": {
"dst": "192.168.0.21",
"encap-vrf-id": 0,
"src": "192.168.0.23", Ctl 192.168.0.23
"vni": 1
}
},
{
"enabled": true,
"name": "vxlan_tunnel3",
"type": "v3po:vxlan-tunnel",
"v3po:l2": {
"bridge-domain": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
vxlan_tunnel2 vxlan_tunnel3
"bridged-virtual-interface": false,
"split-horizon-group": 1
},
"v3po:vxlan": {
"dst": "192.168.0.22",
"encap-vrf-id": 0,
"src": "192.168.0.23",
"vni": 1
192.168.0.21 C0 C1 192.168.0.22
}
},
{
"enabled": false,
"ietf-ip:ipv4": {},
"name": "local0",
"type": "iana-if-type:ethernetCsmacd",
"vpp-vlan:sub-interfaces": {}
},

Controller:
HC – Interfaces (2/3)
{
"description": "neutron port",
"enabled": true,
"link-up-down-trap-enable": "enabled",
"name": "neutron_port_8904fbf0-5a9b-48f2-b88f-e115093d2594",
"type": "v3po:tap",
"v3po:l2": {
"bridge-domain": "fea5f755-6457-4ff5-a4a1-e6404e6b6407"
},
"v3po:tap": {
"mac": "fa:16:3e:8c:8f:f2",
"tap-name": "tap8904fbf0-5a" DHCP
}
},
{
"enabled": true,
"ietf-ip:ipv4": {
"address": [
{
"ip": "192.168.0.23",
"prefix-length": 24
Ctl 192.168.0.23
}
]
},
"name": "TenGigabitEthernet7/0/0",
"type": "iana-if-type:ethernetCsmacd",
"v3po:ethernet": {
"mtu": 1518
},
"vpp-vlan:sub-interfaces": {}
}
]
}
}

Controller:
HC – Interfaces (3/3)
[root@overcloud-novacompute-0 ~]# curl -XGET -v -u admin:admin http://localhost:8182/restconf/config/ietf-interfaces:interfaces/ | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* About to connect() to localhost port 8182 (#0)
* Trying ::1...
* Connection refused
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8182 (#0)
* Server auth using Basic with user 'admin'
> GET /restconf/config/ietf-interfaces:interfaces/ HTTP/1.1
> Authorization: Basic YWRtaW46YWRtaW4=
> User-Agent: curl/7.29.0
> Host: localhost:8182
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 18 Sep 2016 10:59:55 GMT
< Content-Type: application/yang.data+json
< Transfer-Encoding: chunked
< Server: Jetty(9.3.11.v20160721)
<
{ [data not shown]
100 1241 0 1241 0 0 96598 0 --:--:-- --:--:-- --:--:-- 100k
* Connection #0 to host localhost left intact
{
"interfaces": {
"interface": [
{
"enabled": false,
"ietf-ip:ipv4": {}, C0
"name": "local0",
"type": "iana-if-type:ethernetCsmacd",
"vpp-vlan:sub-interfaces": {}
},
{
"description": "neutron port", vhost-user
"enabled": true,
"link-up-down-trap-enable": "enabled",
"name": "neutron_port_9bf477cb-a016-407e-a97a-7f15b35c3bad",
"type": "v3po:vhost-user",
"v3po:l2": { VM
"bridge-domain": "fea5f755-6457-4ff5-a4a1-e6404e6b6407"
},
"v3po:vhost-user": {
"role": "client",
"socket": "/tmp/socket_9bf477cb-a016-407e-a97a-7f15b35c3bad"
}

Compute0:
HC – Interfaces (1/2)
{
"enabled": true,
"name": "vxlan_tunnel2",
"type": "v3po:vxlan-tunnel",
"v3po:l2": {
"bridge-domain": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"bridged-virtual-interface": false,
"split-horizon-group": 1
},
"v3po:vxlan": {
"dst": "192.168.0.22",
"encap-vrf-id": 0, Ctl 192.168.0.23
"src": "192.168.0.21",
"vni": 1
}
},
{
"enabled": true,
"ietf-ip:ipv4": {
"address": [ vxlan_tunnel3
{
"ip": "192.168.0.21",
"prefix-length": 24
}
]
},
"name": "TenGigabitEthernet7/0/0",
"type": "iana-if-type:ethernetCsmacd", 192.168.0.21 C0 C1 192.168.0.22
"v3po:ethernet": {
"mtu": 1518 vxlan_tunnel2
},
"vpp-vlan:sub-interfaces": {}
},
{
"enabled": true,
vhost-user
"name": "vxlan_tunnel3",
"type": "v3po:vxlan-tunnel",
"v3po:l2": {
"bridge-domain": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"bridged-virtual-interface": false,
VM
"split-horizon-group": 1
},
"v3po:vxlan": {
"dst": "192.168.0.23",
"encap-vrf-id": 0,
"src": "192.168.0.21",
"vni": 1

]
}
}
Compute0:
HC – Interfaces (2/2)
}
}
...

Neutron

REST

Neutron NorthBound

GBP Neutron Mapper


A closer look at FastDataStacks Components GBP Renderer Manager

OpenDaylight VPP renderer Topology Mgr - VBD

Netconf/YANG

GroupBasedPolicy Honeycomb (Dataplane Agent)

VPP

DPDK

System Install System Test


(APEX) (FuncTest, Yardstick)
What is Group Based Policy?

• An intent driven policy framework


Contracts
model intended to describe EP:1
web
network application requirements Match:
destport:80
independent of the underlying EP:2
EPG:Hosts Action:
infrastructure. Allow

• Concepts Contract: ssh


• Individual Endpoints (EPs) form web, ssh Match:
destport:22
Endpoint Groups (EPGs) Contract: Action:
Allow
• Traffic between groups is subject any
to an applied Policy (Contracts)
any
• Contracts apply directionally EP:3
Match: *
EPG: Action:
• Key Observation EP:4
WebServers Allow

• Rules/Contracts independent
from networking constructs,
i.e. addresses, bridge domains,
topologies, forwarding device…
Endpoints live in a network context

• Network Context EP:5


Bridge:1 Subnet:1
• Can be an L2-Bridge Domain
(L2BD), e.g. a Neutron network
Subnet:2
• Can be an L3-domain (L3D) (think EP:1

VRF) EP:2
Bridge:2
• Network Contexts can have EP:6
Subnet:3

Subnets, and other


characteristics
• Endpoint Groups can specify a EP:1

default network context for EP:2 EPG:Hosts


members
Component Evolution Examples:
Networking topologies model

• Overlay & underlay hierarchy is difficult to L2 Transport L3 Transport


relate in OVS Openstack network topology End
model (What is the path from VM1 to Point

VM2?) End
Virtual bridge Topology
• br-int, br-ex, patch ports, VXLANs. Point

• Physical interfaces “outside the system”


Virtual bridge
• VPP/ODL/OpenStack provides a clear, Topology
L3 Tunnel Topology

hierarchical, and programmatically


traversable network model Provider/Physical Physical

• Uses draft-ietf-i2rs-yang-network-topo
• Topologies are non neutron-specific; allows
application of comprehensive network policies
Interface centric model

• VPP Renderer uses an interface centric model vs. a bridge based model for
tunnel interface anchoring
• Less configuration
• Decouples tunnel interface from bridge
Neutron port instances in VPP

Openstack Neutron

Qrouter port DHCP port Nova port

vif_type: vhostuser vif_type: vhostuser vif_type: vhostuser


device-owner: network:router_interface device-owner: network:dhcp_interface device-owner: network:compute_interface

Tap interface Tap interface Vhost interface

tap + 0-11 port uuid substring qr- + 0-11 port uuid substring socket prefix + socket path + port uuid
e.g. tap0a2f45ef-c2 e.g. qr-0a2f45ef-c2 e.g. /tmp/_socket0a2f9...1b

VPP
Group Based Policy Protagonists for
FastDataStacks
• GBP Neutron Mapper: Maps neutron elements like networks,
subnets, security groups, etc. to GBP entities: Creates policy and
configuration for tenants (endpoints, resolved policies, forwarding
rules)
• GBP Neutron VPP Mapper: Maps Neutron ports to VPP endpoints
in GBP
• GBP Location Manager: Provides real location for endpoints (i.e.
Which physical node an endpoint is connected to)
• GBP Renderer Manager: Creates configuration for Renderers
(like e.g. VPP-Renderer or OVS-Renderer)
• GBP VPP Renderer – Interface Manager: Listens to VPP
endpoints in the Config DataStore and configures associated
interfaces on VPP via HoneyComb
• GBP VPP Renderer – Renderer Policy Manager: Manages the
creation of bridge domains using VBD and assigns interfaces to
bridge domains
• Virtual Bridge Domain Manager (VBD): Creates bridge domains
(i.e. in case of VXLAN creates full mesh of VXLAN tunnels,
configures split horizon on tunnel endpoints etc.)
FD.io Integration into Group Based Policy
Software Architecture
OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore

GBP LocationMngr GBP RendererMngr

Config DataStore Operational DataStore


Config DataStore
for VPP Renderer for VPP Renderer

GBP VPP Renderer


ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr

Honeycomb

VPP
I/F I/F I/F
Configure Setup:
Bind Interfaces to VPP, Configure them
OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore

GBP LocationMngr GBP RendererMngr

Config DataStore Operational DataStore


Config DataStore
for VPP Renderer for VPP Renderer

GBP VPP Renderer


ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr

Honeycomb

VPP Installer:
Bind interfaces to VPP,
I/F I/F I/F
Configure IP-addresses etc.
Configure setup:
Make VPP nodes known to Renderer Mgr
OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore

GBP LocationMngr GBP RendererMngr


Installer:
Config DataStore Operational DataStore Register all VPP nodes which
Config DataStore are to be controlled by VPP
for VPP Renderer for VPP Renderer
renderer: Nodes are
registered to:
--network-
ifaceMngr GBP VPP Renderer RendererPolicyMngr
Virtual Bridge Domain Mgr topology:network-topology
----topologoy
------topology-netconf
--------node
Honeycomb

VPP
I/F I/F I/F
Receive Neutron Information in GBP

OpenStack
Neutron: Create networks, subnets, ports, security groups and rules
Nova: Launch VM instances (connected to provided ports)
GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore

GBP LocationMngr GBP RendererMngr

Config DataStore Operational DataStore


Config DataStore
for VPP Renderer for VPP Renderer

GBP VPP Renderer


ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr

Honeycomb

VPP
I/F I/F I/F
Translate Neutron Information to GBP
Store results in DataStores
OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper Map “Neutron to GBP”:
Create rules for tenant, policy
endpoint, forwarding from
Create VPP endpoints Operational DataStore Neutron information (networks,
from ports <policies> <end-points> <forwarding> subnets, ports, security groups)
(TAP ports: Qrouter, DHCP;
vhost-user ports: VMs) GBP LocationMngr GBP RendererMngr

Config DataStore Operational DataStore


Config DataStore
<end-point> for VPP Renderer

GBP VPP Renderer


ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr

Honeycomb

VPP
I/F I/F I/F
Receive Endpoint Information and drive
associated endpoint information to HC
OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore
<policies> <end-points> <forwarding>

GBP LocationMngr GBP RendererMngr

Config DataStore Operational DataStore


Listen to VPP endpoints Config DataStore
for VPP Renderer for VPP Renderer
created in DataStore
Drive associated VPP
GBP VPP Renderer
interface configuration
in Honeycomb ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr

Honeycomb

VPP
I/F I/F I/F
Configure VPP Interfaces

OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore
<policies> <end-points> <forwarding>

GBP LocationMngr GBP RendererMngr

Config DataStore Operational DataStore


Config DataStore
<endpoint> for VPP Renderer

GBP VPP Renderer


ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr
VPP interfaces
created by HC in VPP
<interface> Honeycomb

VPP
I/F I/F I/F
Provide Endpoint Location to Config DataStore

OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore
<policies> <end-points> <forwarding>

GBP LocationMngr GBP RendererMngr

Config DataStore Operational DataStore


<endpoint-location provider> Config DataStore
<endpoint> for VPP Renderer
Interface manager provides provider-
address-endpoint-location to DataStore –
to be used by LocationManager in GBP GBP VPP Renderer
ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr

<interface> Honeycomb

VPP
I/F I/F I/F
Store real location of end-point in Operational
DataStore
OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore
Location manager resolves the real end- <endpoint-location> <policies> <end-points> <forwarding>
point location and stores it in the
Operational DataStore GBP LocationMngr GBP RendererMngr

Config DataStore Operational DataStore


<endpoint-location provider> Config DataStore
<endpoint> for VPP Renderer

GBP VPP Renderer


ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr

<interface> Honeycomb

VPP
I/F I/F I/F
GBP Renderer has all information ready now:
Create Configuration for Renderers
OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore
<endpoint-location> <policies> <end-points> <forwarding>

GBP LocationMngr GBP RendererMngr


Create configuration for
renderer (VPP renderer)
Config DataStore Renderer Operational DataStore
<endpoint-location provider> Config DataStore -- renderer-policy
<endpoint> ---- version for VPP Renderer
---- configuration

GBP VPP Renderer


ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr

<interface> Honeycomb

VPP
I/F I/F I/F
Renderer Policy Manager creates
Virtual Bridge Domains via VBD on all Nodes
OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore
<endpoint-location> <policies> <end-points> <forwarding>

GBP LocationMngr GBP RendererMngr

Config DataStore Renderer Operational DataStore


<endpoint-location provider> Config DataStore -- renderer-policy
<endpoint> ---- version for VPP Renderer
---- configuration

GBP VPP Renderer


ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr
Create Bridge-Domain
(via VBD) on all VPP nodes
<interface> Honeycomb <bridge domain>

VPP
I/F I/F I/F
Assign Interfaces to Bridge Domains

OpenStack

GBP Neutron VPP Mapper GBP Neutron Mapper

Operational DataStore
<endpoint-location> <policies> <end-points> <forwarding>

GBP LocationMngr GBP RendererMngr

Config DataStore Renderer Operational DataStore


<endpoint-location provider> Config DataStore -- renderer-policy
<endpoint> ---- version for VPP Renderer
---- configuration

GBP VPP Renderer


ifaceMngr RendererPolicyMngr Virtual Bridge Domain Mgr

Assign interfaces to
bridge domains
Honeycomb
<interface> <bridge domain>

VPP
I/F I/F I/F
[root@overcloud-controller-0 ~]# curl -u admin:admin -X GET -H 'Content-Type: application/xml' http://localhost:8081/restconf/operational/renderer:renderers | python -
mjson.tool
{
"renderers": {
"renderer": [
{
"capabilities": {
"supported-action-definition": [
{
"action-definition-id": "Action-Allow"
}
],
"supported-classifier-definition": [
{
"classifier-definition-id": "Classifier-EtherType",
"supported-parameter-values": [
{
"parameter-name": "ethertype",
"supported-int-value": [
{
"value": 2048
},
{
"value": 34525
}
]
}
]
}
]
},
"name": "vpp-renderer",
"renderer-nodes": {
"renderer-node": [
{
"node-path": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='topology-netconf']/
network-topology:node[network-topology:node-id='overcloud-controller-0.opnfvapex.com']"
},
{
"node-path": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='topology-netconf']/
network-topology:node[network-topology:node-id='overcloud-novacompute-0.opnfvapex.com']"
},
{
"node-path": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='topology-netconf']/
network-topology:node[network-topology:node-id='overcloud-novacompute-1.opnfvapex.com']"
}
]
},
"renderer-policy": {

}
}
"version": 30
ODL – GBP Renderer
]
}
}
ODL – Neutron Networks
[root@overcloud-controller-0 ~]# curl -XGET -u admin:admin http://localhost:8081/controller/nb/v2/neutron/networks
{
"networks" : [ {
"id" : "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"tenant_id" : "8bd212b4ae5c427892093c640eba8fd4",
"name" : "vxlannet",
"admin_state_up" : true,
"shared" : false,
"router:external" : false,
"provider:network_type" : "vxlan",
"provider:segmentation_id" : "82",
"status" : "ACTIVE",
"segments" : [ ]
} ]
}
ODL – Neutron Subnets
[root@overcloud-controller-0 ~]# curl -XGET -u admin:admin http://localhost:8081/controller/nb/v2/neutron/subnets
{
"subnets" : [ {
"id" : "1e9a5a26-478e-4837-a659-ca7f6105a7e3",
"tenant_id" : "8bd212b4ae5c427892093c640eba8fd4",
"network_id" : "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"name" : "vxlansubnet",
"ip_version" : 4,
"cidr" : "10.11.12.0/24",
"gateway_ip" : "10.11.12.1",
"dns_nameservers" : [ ],
"allocation_pools" : [ {
"start" : "10.11.12.2",
"end" : "10.11.12.254"
} ],
"host_routes" : [ ],
"enable_dhcp" : true,
"ipv6_address_mode" : null,
"ipv6_ra_mode" : null
} ]
}
ODL – Neutron Security Groups
[root@overcloud-controller-0 ~]# curl -XGET -u admin:admin http://localhost:8081/controller/nb/v2/neutron/security-groups
{
"security_groups" : [ ]
}
[root@overcloud-controller-0 ~]# curl -XGET -u admin:admin http://localhost:8081/controller/nb/v2/neutron/ports
{
"ports" : [ {
"id" : "f70a5d22-e6cd-4c36-8b7c-66ddd14c469f",

vppctl show run


"tenant_id" : "8bd212b4ae5c427892093c640eba8fd4",
"network_id" : "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"name" : "",
"admin_state_up" : true,
"mac_address" : "fa:16:3e:3f:50:e4",
"fixed_ips" : [ {
"ip_address" : "10.11.12.1",
"subnet_id" : "1e9a5a26-478e-4837-a659-ca7f6105a7e3"
} ],
"device_id" : "7102c656-fc08-4234-b0ac-3cb634184b05",
"device_owner" : "network:router_interface",
"security_groups" : [ ],
"allowed_address_pairs" : [ ],
"binding:host_id" : "overcloud-controller-0.opnfvapex.com",
"binding:vnic_type" : "normal",
"binding:vif_type" : "vhostuser",
"Map" : {
"vhostuser_mode" : "server",
"port_filter" : "true",
"vhostuser_socket" : "/tmp/socket_f70a5d22-e6cd-4c36-8b7c-66ddd14c469f"
},
"extra_dhcp_opts" : [ ],
"port_security_enabled" : false
}, {
"id" : "b504c2a4-6c6c-41c0-b011-a3e747c63568",
"tenant_id" : "8bd212b4ae5c427892093c640eba8fd4",
"network_id" : "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"name" : "vm-compute-1-1-port",
"admin_state_up" : true,
"mac_address" : "fa:16:3e:99:24:41",
"fixed_ips" : [ {
"ip_address" : "10.11.12.4",
"subnet_id" : "1e9a5a26-478e-4837-a659-ca7f6105a7e3"
} ],
"device_id" : "05413042-1446-4cf0-ac93-9f2ba3dcf984",
"device_owner" : "compute:None",
"security_groups" : [ {
"id" : "67bdbded-497b-4b00-b385-aeb11cb732eb"
} ],
"allowed_address_pairs" : [ ],
"binding:host_id" : "overcloud-novacompute-1.opnfvapex.com",
"binding:vnic_type" : "normal",
"binding:vif_type" : "vhostuser",
"Map" : {
"vhostuser_mode" : "server",
ODL: Neutron Ports
"port_filter" : "true",

},
"vhostuser_socket" : "/tmp/socket_b504c2a4-6c6c-41c0-b011-a3e747c63568"

"extra_dhcp_opts" : [ ],
(1/2)
"port_security_enabled" : true
}, {
"id" : "9bf477cb-a016-407e-a97a-7f15b35c3bad",
"tenant_id" : "8bd212b4ae5c427892093c640eba8fd4",
"network_id" : "fea5f755-6457-4ff5-a4a1-e6404e6b6407",

vppctl show run


"name" : "vm-compute-0-1-port",
"admin_state_up" : true,
"mac_address" : "fa:16:3e:db:e5:02",
"fixed_ips" : [ {
"ip_address" : "10.11.12.3",
"subnet_id" : "1e9a5a26-478e-4837-a659-ca7f6105a7e3"
} ],
"device_id" : "78a2a66d-b73c-470d-9359-5bd0a9076e61",
"device_owner" : "compute:None",
"security_groups" : [ {
"id" : "67bdbded-497b-4b00-b385-aeb11cb732eb"
} ],
"allowed_address_pairs" : [ ],
"binding:host_id" : "overcloud-novacompute-0.opnfvapex.com",
"binding:vnic_type" : "normal",
"binding:vif_type" : "vhostuser",
"Map" : {
"vhostuser_mode" : "server",
"port_filter" : "true",
"vhostuser_socket" : "/tmp/socket_9bf477cb-a016-407e-a97a-7f15b35c3bad"
},
"extra_dhcp_opts" : [ ],
"port_security_enabled" : true
}, {
"id" : "8904fbf0-5a9b-48f2-b88f-e115093d2594",
"tenant_id" : "8bd212b4ae5c427892093c640eba8fd4",
"network_id" : "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"name" : "",
"admin_state_up" : true,
"mac_address" : "fa:16:3e:8c:8f:f2",
"fixed_ips" : [ {
"ip_address" : "10.11.12.2",
"subnet_id" : "1e9a5a26-478e-4837-a659-ca7f6105a7e3"
} ],
"device_id" : "dhcp827da361-9c56-50f7-913f-5a01f7bfed2c-fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"device_owner" : "network:dhcp",
"security_groups" : [ ],
"allowed_address_pairs" : [ ],
"binding:host_id" : "overcloud-controller-0.opnfvapex.com",
"binding:vnic_type" : "normal",
"binding:vif_type" : "vhostuser",
"Map" : {
"vhostuser_mode" : "server",
"port_filter" : "true",
"vhostuser_socket" : "/tmp/socket_8904fbf0-5a9b-48f2-b88f-e115093d2594"
ODL: Neutron Ports
},

} ]
"extra_dhcp_opts" : [ ],
"port_security_enabled" : false (2/2)
VPP Endpoints in VPP-Renderer
qrouter and dhcp ports created – no VM ports created yet
[root@overcloud-controller-0 ~]# curl -u admin:admin -X GET -H 'Content-Type: application/xml'
http://localhost:8081/restconf/config/vpp-renderer:config | python -mjson.tool
{
"config": {
"vpp-endpoint": [
{
"address": "fa:16:3e:87:fa:d6",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "9cd8afa0-2b79-4b83-8415-ab0dbc5da1fa",
"context-type": "l2-l3-forwarding:l2-bridge-domain",
"description": "neutron port",
"name": "tap2e1ff231-df",
"physical-address": "fa:16:3e:87:fa:d6",
"vpp-interface-name": "neutron_port_2e1ff231-df0b-40c1-a356-956a8cb811e5",
"vpp-node-path": "/network-topology:network-topology/network-topology:topology[network-topology:topology-
id='topology-netconf']/network-topology:node[network-topology:node-id='overcloud-controller-0.opnfvapex.com']"
},
{
"address": "fa:16:3e:fd:6c:19",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "9cd8afa0-2b79-4b83-8415-ab0dbc5da1fa",
"context-type": "l2-l3-forwarding:l2-bridge-domain",
"description": "neutron port",
"name": "qr-66aa3915-02",
"physical-address": "fa:16:3e:fd:6c:19",
"vpp-interface-name": "neutron_port_66aa3915-02da-4c58-93e1-51df8821b838",
"vpp-node-path": "/network-topology:network-topology/network-topology:topology[network-topology:topology-
id='topology-netconf']/network-topology:node[network-topology:node-id='overcloud-controller-0.opnfvapex.com']"
}
]
}
}
VPP Endpoints in VPP-Renderer
qrouter and dhcp ports created – VMs booted (1/2)
[root@overcloud-controller-0 ~]# curl -u admin:admin -X GET -H 'Content-Type: application/xml'
http://localhost:8081/restconf/config/vpp-renderer:config | python -mjson.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2289 0 2289 0 0 247k 0 --:--:-- --:--:-- --:--:-- 279k
{
"config": {
"vpp-endpoint": [
{
"address": "fa:16:3e:87:fa:d6",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "9cd8afa0-2b79-4b83-8415-ab0dbc5da1fa",
"context-type": "l2-l3-forwarding:l2-bridge-domain",
"description": "neutron port",
"name": "tap2e1ff231-df",
"physical-address": "fa:16:3e:87:fa:d6",
"vpp-interface-name": "neutron_port_2e1ff231-df0b-40c1-a356-956a8cb811e5",
"vpp-node-path": "/network-topology:network-topology/network-topology:topology[network-topology:topology-
id='topology-netconf']/network-topology:node[network-topology:node-id='overcloud-controller-0.opnfvapex.com']"
},
{
"address": "fa:16:3e:fd:6c:19",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "9cd8afa0-2b79-4b83-8415-ab0dbc5da1fa",
"context-type": "l2-l3-forwarding:l2-bridge-domain",
"description": "neutron port",
"name": "qr-66aa3915-02",
"physical-address": "fa:16:3e:fd:6c:19",
"vpp-interface-name": "neutron_port_66aa3915-02da-4c58-93e1-51df8821b838",
"vpp-node-path": "/network-topology:network-topology/network-topology:topology[network-topology:topology-
id='topology-netconf']/network-topology:node[network-topology:node-id='overcloud-controller-0.opnfvapex.com']"
},
VPP Endpoints in VPP-Renderer
qrouter and dhcp ports created – VMs booted (2/2)
{
"address": "fa:16:3e:e4:61:11",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "9cd8afa0-2b79-4b83-8415-ab0dbc5da1fa",
"context-type": "l2-l3-forwarding:l2-bridge-domain",
"description": "neutron port",
"socket": "/tmp/socket_02bba57e-151b-4d13-9355-a065e79625c3",
"vpp-interface-name": "neutron_port_02bba57e-151b-4d13-9355-a065e79625c3",
"vpp-node-path": "/network-topology:network-topology/network-topology:topology[network-
topology:topology-id='topology-netconf']/network-topology:node[network-topology:node-id='overcloud-novacompute-
1.opnfvapex.com']"
},
{
"address": "fa:16:3e:ba:aa:3e",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "9cd8afa0-2b79-4b83-8415-ab0dbc5da1fa",
"context-type": "l2-l3-forwarding:l2-bridge-domain",
"description": "neutron port",
"socket": "/tmp/socket_2942901e-21d8-42a7-a1b6-6c1e9fa3471d",
"vpp-interface-name": "neutron_port_2942901e-21d8-42a7-a1b6-6c1e9fa3471d",
"vpp-node-path": "/network-topology:network-topology/network-topology:topology[network-
topology:topology-id='topology-netconf']/network-topology:node[network-topology:node-id='overcloud-novacompute-
0.opnfvapex.com']"
}
]
}
}
GBP – Active Endpoints/Endpoint Locations
[root@overcloud-controller-0 ~]# curl -u admin:admin -X GET -H 'Content-Type: application/xml' http://localhost:8081/restconf/operational/base-
endpoint:endpoint-locations | python -mjson.tool
{
"endpoint-locations": {
"address-endpoint-location": [
{
"absolute-location": {
"external-node": "/v3po:vpp/v3po:bridge-domains/v3po:bridge-domain[v3po:name='fea5f755-6457-4ff5-a4a1-e6404e6b6407']",
"external-node-connector": "/ietf-interfaces:interfaces/ietf-interfaces:interface[ietf-interfaces:name=
'neutron_port_9bf477cb-a016-407e-a97a-7f15b35c3bad']",
"external-node-mount-point": "/network-topology:network-topology/network-topology:topology[network-topology:
topology-id='topology-netconf']/network-topology:node[network-topology:node-id='overcloud-novacompute-0.opnfvapex.com']"
},
"address": "fa:16:3e:db:e5:02",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"context-type": "l2-l3-forwarding:l2-bridge-domain"
},

[.. abbreviated..]
[root@overcloud-controller-0 ~]# curl -u admin:admin -X GET -H 'Content-Type: application/xml' http://localhost:8081/restconf/operational/base-endpoint:endpoint-locations | python -mjson.tool
{
"endpoint-locations": {
"address-endpoint-location": [
{
"absolute-location": {
"external-node": "/v3po:vpp/v3po:bridge-domains/v3po:bridge-domain[v3po:name='fea5f755-6457-4ff5-a4a1-e6404e6b6407']",
"external-node-connector": "/ietf-interfaces:interfaces/ietf-interfaces:interface[ietf-interfaces:name='neutron_port_9bf477cb-a016-407e-a97a-7f15b35c3bad']",
"external-node-mount-point": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='topology-netconf']/network-topology:node[network-topology:node-
id='overcloud-novacompute-0.opnfvapex.com']"
},
"address": "fa:16:3e:db:e5:02",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"context-type": "l2-l3-forwarding:l2-bridge-domain"
},
{
"address": "fa:16:3e:5d:f4:3b",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"context-type": "l2-l3-forwarding:l2-bridge-domain"
},
{
"absolute-location": {
"external-node": "/v3po:vpp/v3po:bridge-domains/v3po:bridge-domain[v3po:name='fea5f755-6457-4ff5-a4a1-e6404e6b6407']",
"external-node-connector": "/ietf-interfaces:interfaces/ietf-interfaces:interface[ietf-interfaces:name='neutron_port_f70a5d22-e6cd-4c36-8b7c-66ddd14c469f']",
"external-node-mount-point": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='topology-netconf']/network-topology:node[network-topology:node-
id='overcloud-controller-0.opnfvapex.com']"
},
"address": "fa:16:3e:3f:50:e4",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"context-type": "l2-l3-forwarding:l2-bridge-domain"
},
{
"address": "fa:16:3e:9e:ef:0b",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"context-type": "l2-l3-forwarding:l2-bridge-domain"
},
{
"absolute-location": {
"external-node": "/v3po:vpp/v3po:bridge-domains/v3po:bridge-domain[v3po:name='fea5f755-6457-4ff5-a4a1-e6404e6b6407']",
"external-node-connector": "/ietf-interfaces:interfaces/ietf-interfaces:interface[ietf-interfaces:name='neutron_port_8904fbf0-5a9b-48f2-b88f-e115093d2594']",
"external-node-mount-point": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='topology-netconf']/network-topology:node[network-topology:node-
id='overcloud-controller-0.opnfvapex.com']"
},
"address": "fa:16:3e:8c:8f:f2",
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"context-type": "l2-l3-forwarding:l2-bridge-domain"
},
{
"absolute-location": {
"external-node": "/v3po:vpp/v3po:bridge-domains/v3po:bridge-domain[v3po:name='fea5f755-6457-4ff5-a4a1-e6404e6b6407']",
"external-node-connector": "/ietf-interfaces:interfaces/ietf-interfaces:interface[ietf-interfaces:name='neutron_port_b504c2a4-6c6c-41c0-b011-a3e747c63568']",
"external-node-mount-point": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id='topology-netconf']/network-topology:node[network-topology:node-
id='overcloud-novacompute-1.opnfvapex.com']"
},
"address": "fa:16:3e:99:24:41",

}
"address-type": "l2-l3-forwarding:mac-address-type",
"context-id": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"context-type": "l2-l3-forwarding:l2-bridge-domain" ODL: GBP Endpoints/
]

}
}
Locations
[root@overcloud-controller-0 ~]# curl -XGET -u admin:admin http://localhost:8081/restconf/config/network-topology:network-topology/topology/topology-
netconf/ | python -m json.tool
{
"topology": [
{
"node": [
{
"netconf-node-topology:between-attempts-timeout-millis": 10000,
"netconf-node-topology:connection-timeout-millis": 10000,
"netconf-node-topology:default-request-timeout-millis": 10000,
"netconf-node-topology:host": "192.168.1.7",
"netconf-node-topology:keepalive-delay": 0,
ODL:
"netconf-node-topology:max-connection-attempts": 10,
"netconf-node-topology:password": "admin",
"netconf-node-topology:port": 2831,
Configured Topology
"netconf-node-topology:schema-cache-directory": "hcmount",
"netconf-node-topology:tcp-only": false,
"netconf-node-topology:username": "admin",
"node-id": "overcloud-novacompute-1.opnfvapex.com"
},
{
"netconf-node-topology:between-attempts-timeout-millis": 10000,
"netconf-node-topology:connection-timeout-millis": 10000,
{
"netconf-node-topology:default-request-timeout-millis": 10000,
"netconf-node-topology:between-attempts-timeout-millis": 10000,
"netconf-node-topology:host": "192.168.1.6",
"netconf-node-topology:connection-timeout-millis": 10000,
"netconf-node-topology:keepalive-delay": 0,
"netconf-node-topology:default-request-timeout-millis": 10000,
"netconf-node-topology:max-connection-attempts": 10,
"netconf-node-topology:host": "192.168.1.8",
"netconf-node-topology:password": "admin",
"netconf-node-topology:keepalive-delay": 0,
"netconf-node-topology:port": 2831,
"netconf-node-topology:max-connection-attempts": 10,
"netconf-node-topology:schema-cache-directory": "hcmount",
"netconf-node-topology:password": "admin",
"netconf-node-topology:tcp-only": false,
"netconf-node-topology:port": 2831,
"netconf-node-topology:username": "admin",
"netconf-node-topology:schema-cache-directory": "hcmount",
"node-id": "overcloud-novacompute-0.opnfvapex.com"
"netconf-node-topology:tcp-only": false,
},
"netconf-node-topology:username": "admin",
"node-id": "overcloud-controller-0.opnfvapex.com"
}
],
"topology-id": "topology-netconf"
}
]
}
[root@overcloud-controller-0 ~]# curl -XGET -u admin:admin http://localhost:8081/restconf/config/network-topology:network-topology/ | python -m json.tool
{
"network-topology": {
"topology": [
{
"node": [
{
"node-id": "overcloud-novacompute-1.opnfvapex.com",
"supporting-node": [
{
"node-ref": "overcloud-novacompute-1.opnfvapex.com",
"topology-ref": "topology-netconf"
}
]
},
{
"node-id": "overcloud-novacompute-0.opnfvapex.com",
"supporting-node": [
{
"node-ref": "overcloud-novacompute-0.opnfvapex.com",
"topology-ref": "topology-netconf"
}
]
},
{
"node-id": "overcloud-controller-0.opnfvapex.com",
"supporting-node": [
{
"node-ref": "overcloud-controller-0.opnfvapex.com",
"topology-ref": "topology-netconf"
}
]
}
],
"topology-id": "fea5f755-6457-4ff5-a4a1-e6404e6b6407",
"topology-types": {
"vbridge-topology:vbridge-topology": {}
},
"vbridge-topology:arp-termination": false,
"vbridge-topology:flood": true,
"vbridge-topology:forward": true,
"vbridge-topology:learn": true,
"vbridge-topology:tunnel-type": "vxlan-tunnel:tunnel-type-vxlan",
"vbridge-topology:unknown-unicast-flood": true,
"vxlan-tunnel:vni": 1
},

ODL:
Network Topology (1/3)
[root@overcloud-controller-0 ~]# curl -XGET -u admin:admin http://localhost:8081/restconf/config/network-topology:network-topology/topology/topology-netconf/ | python
-m json.tool
{
"topology": [
{
"node": [
{
"netconf-node-topology:between-attempts-timeout-millis": 10000,
"netconf-node-topology:connection-timeout-millis": 10000,
"netconf-node-topology:default-request-timeout-millis": 10000,
"netconf-node-topology:host": "192.168.1.7",
"netconf-node-topology:keepalive-delay": 0,
"netconf-node-topology:max-connection-attempts": 10,
"netconf-node-topology:password": "admin",
"netconf-node-topology:port": 2831,
"netconf-node-topology:schema-cache-directory": "hcmount",
"netconf-node-topology:tcp-only": false,
"netconf-node-topology:username": "admin",
"node-id": "overcloud-novacompute-1.opnfvapex.com"
},
{
"netconf-node-topology:between-attempts-timeout-millis": 10000,
"netconf-node-topology:connection-timeout-millis": 10000,
"netconf-node-topology:default-request-timeout-millis": 10000,
"netconf-node-topology:host": "192.168.1.6",
"netconf-node-topology:keepalive-delay": 0,
"netconf-node-topology:max-connection-attempts": 10,
"netconf-node-topology:password": "admin",
"netconf-node-topology:port": 2831,
"netconf-node-topology:schema-cache-directory": "hcmount",
"netconf-node-topology:tcp-only": false,
"netconf-node-topology:username": "admin",
"node-id": "overcloud-novacompute-0.opnfvapex.com"
},
{
"netconf-node-topology:between-attempts-timeout-millis": 10000,
"netconf-node-topology:connection-timeout-millis": 10000,
"netconf-node-topology:default-request-timeout-millis": 10000,
"netconf-node-topology:host": "192.168.1.8",
"netconf-node-topology:keepalive-delay": 0,
"netconf-node-topology:max-connection-attempts": 10,
"netconf-node-topology:password": "admin",
"netconf-node-topology:port": 2831,
"netconf-node-topology:schema-cache-directory": "hcmount",
"netconf-node-topology:tcp-only": false,
"netconf-node-topology:username": "admin",
"node-id": "overcloud-controller-0.opnfvapex.com"

],
}

"topology-id": "topology-netconf"
ODL:
}

}
]
Network Topology (2/3)
{
"node": [
{
"netconf-node-topology:between-attempts-timeout-millis": 10000,
"netconf-node-topology:connection-timeout-millis": 10000,
"netconf-node-topology:default-request-timeout-millis": 10000,
"netconf-node-topology:host": "192.168.1.7",
"netconf-node-topology:keepalive-delay": 0,
"netconf-node-topology:max-connection-attempts": 10,
"netconf-node-topology:password": "admin",
"netconf-node-topology:port": 2831,
"netconf-node-topology:schema-cache-directory": "hcmount",
"netconf-node-topology:tcp-only": false,
"netconf-node-topology:username": "admin",
"node-id": "overcloud-novacompute-1.opnfvapex.com"
},
{
"netconf-node-topology:between-attempts-timeout-millis": 10000,
"netconf-node-topology:connection-timeout-millis": 10000,
"netconf-node-topology:default-request-timeout-millis": 10000,
"netconf-node-topology:host": "192.168.1.6",
"netconf-node-topology:keepalive-delay": 0,
"netconf-node-topology:max-connection-attempts": 10,
"netconf-node-topology:password": "admin",
"netconf-node-topology:port": 2831,
"netconf-node-topology:schema-cache-directory": "hcmount",
"netconf-node-topology:tcp-only": false,
"netconf-node-topology:username": "admin",
"node-id": "overcloud-novacompute-0.opnfvapex.com"
},
{
"netconf-node-topology:between-attempts-timeout-millis": 10000,
"netconf-node-topology:connection-timeout-millis": 10000,
"netconf-node-topology:default-request-timeout-millis": 10000,
"netconf-node-topology:host": "192.168.1.8",
"netconf-node-topology:keepalive-delay": 0,
"netconf-node-topology:max-connection-attempts": 10,
"netconf-node-topology:password": "admin",
"netconf-node-topology:port": 2831,
"netconf-node-topology:schema-cache-directory": "hcmount",
"netconf-node-topology:tcp-only": false,
"netconf-node-topology:username": "admin",
"node-id": "overcloud-controller-0.opnfvapex.com"
}
],
"topology-id": "topology-netconf"
}

}
}
]
ODL:
Network Topology (3/3)
ODL – Active Network Topology
[root@overcloud-controller-0 ~]# curl -XGET -u admin:admin http://localhost:8081/restconf/operational/network-
topology:network-topology/ | python -mjson.tool
{
"network-topology": {
"topology": [
{
"link": [
{
"destination": {
"dest-node": "overcloud-novacompute-0.opnfvapex.com",
"dest-tp": "vxlan_tunnel5"
},
"link-id": "overcloud-novacompute-1.opnfvapex.com-1-overcloud-novacompute-0.opnfvapex.com",
"source": {
"source-node": "overcloud-novacompute-1.opnfvapex.com",
"source-tp": "vxlan_tunnel4"
},
"vbridge-topology:tunnel": "vxlan_tunnel4"
},
{
"destination": {
"dest-node": "overcloud-controller-0.opnfvapex.com",
"dest-tp": "vxlan_tunnel4"
},
"link-id": "overcloud-novacompute-0.opnfvapex.com-1-overcloud-controller-0.opnfvapex.com",
"source": {
"source-node": "overcloud-novacompute-0.opnfvapex.com",
"source-tp": "vxlan_tunnel4"
},
"vbridge-topology:tunnel": "vxlan_tunnel4"
},
[... abbreviated ...]
129

FastDataStacks Summary

• Create a new stack which significantly


evolves networking for NFV: Introduce
Scenarios with VPP for OPNFV
• OPNFV Colorado 1.0 integrates
• OpenStack Mitaka
(uses v2 of ML2 ODL driver)
• ODL Boron
GBP additions & enhancements
(GBP Neutron Mapper, VPP Renderer)
• HoneyComb 16.09
• VPP 16.09
• OPNFV APEX Installer integration
• OPNFV System-level testing
• Colorado 2.0/3.0 will add HA, more
security, Layer 3 with VPP
References

https://wiki.opnfv.org/display/fds
#opnfv-fds
[email protected]
THANK YOU

You might also like