FDS ODL Summit 26sept2016
FDS ODL Summit 26sept2016
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
• 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
NDR rates for 2p10GE, 1 core, L2 NIC-to-NIC NDR rates for 2p10GE, 1 core, L2 NIC-to-VM/VM-to-VM
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
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
• 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”
• 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)
• ...
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
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
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
Netconf/YANG
VPP
DPDK
Control-0
External network i/f
OVS (br-ex)
qrouter (NAT)
VPP
tap
Compute-0 BD Compute-1
DHCP tap 1
VXLAN VXLAN
BD BD
VXLAN
1 1
VPP VPP
vhost-user vhost-user
VM 1 VM 2
Nova services
[root@overcloud-controller-0 ~]#
Create an image in Glance
Neutron
REST
Neutron NorthBound
Netconf/YANG
VPP
DPDK
• 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
Tenant
• CentOS ISO
Overcloud Compute 1..N
• Apex RPMs Nova compute
NIC 0
• RPM: • Git:
• opnfv-deploy • deploy.sh
• opnfv-clean • clean.sh
• opnfv-util • util.sh
Apex: Deployment
Jump Host
Jump Host
Jump Host
Undercloud (VM)
Jump Host
OPNFV
OPNFVControl
OPNFVControl
Control
Undercloud (VM)
OPNFV
OPNFVCompute
OPNFVCompute
Compute
“Overcloud”
Apex: Deployment
APEX deploy command:
3 config files
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
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!
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
Testing... Netconf/YANG
VPP
DPDK
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
Neutron
REST
Neutron NorthBound
FD.io/VPP Netconf/YANG
VPP
DPDK
Control-0
External network i/f
OVS (br-ex)
qrouter (NAT)
VPP
tap
Compute-0 BD Compute-1
DHCP tap 1
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
Neutron
REST
Neutron NorthBound
Netconf/YANG
VPP
DPDK
• 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
Netconf/YANG
VPP
DPDK
• Rules/Contracts independent
from networking constructs,
i.e. addresses, bridge domains,
topologies, forwarding device…
Endpoints live in a network context
VRF) EP:2
Bridge:2
• Network Contexts can have EP:6
Subnet:3
VM2?) End
Virtual bridge Topology
• br-int, br-ex, patch ports, VXLANs. Point
• 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
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
Operational DataStore
Honeycomb
VPP
I/F I/F I/F
Configure Setup:
Bind Interfaces to VPP, Configure them
OpenStack
Operational DataStore
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
Operational DataStore
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
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
Honeycomb
VPP
I/F I/F I/F
Receive Endpoint Information and drive
associated endpoint information to HC
OpenStack
Operational DataStore
<policies> <end-points> <forwarding>
Honeycomb
VPP
I/F I/F I/F
Configure VPP Interfaces
OpenStack
Operational DataStore
<policies> <end-points> <forwarding>
VPP
I/F I/F I/F
Provide Endpoint Location to Config DataStore
OpenStack
Operational DataStore
<policies> <end-points> <forwarding>
<interface> Honeycomb
VPP
I/F I/F I/F
Store real location of end-point in Operational
DataStore
OpenStack
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
<interface> Honeycomb
VPP
I/F I/F I/F
GBP Renderer has all information ready now:
Create Configuration for Renderers
OpenStack
Operational DataStore
<endpoint-location> <policies> <end-points> <forwarding>
<interface> Honeycomb
VPP
I/F I/F I/F
Renderer Policy Manager creates
Virtual Bridge Domains via VBD on all Nodes
OpenStack
Operational DataStore
<endpoint-location> <policies> <end-points> <forwarding>
VPP
I/F I/F I/F
Assign Interfaces to Bridge Domains
OpenStack
Operational DataStore
<endpoint-location> <policies> <end-points> <forwarding>
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",
},
"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",
} ]
"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
https://wiki.opnfv.org/display/fds
#opnfv-fds
[email protected]
THANK YOU