ACI-3456 Openstack
ACI-3456 Openstack
ACI-3456 Openstack
Domenico Dastoli
Technical Marketing Engineer – DCNBU
Agenda
• ACI and OpenStack, why?
• ACI Unified Plugin for Openstack:
• Installations
• Components
• Network Benefits
• Operate OpenStack:
• Create Tenant Networks
• External connectivity
• OS to other workloads
• VNFs
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 3
ACI and OpenStack
OpenStack
• What’s OpenStack?
• “OpenStack is a Cloud Operating System, that takes resources such as compute, storage, network,
virtualization technologies and controls those resources at a data center level.”
• Who's building OpenStack?
• Originally founded by Rackspace Hosting and NASA in July 2010
• Adopted by Ubuntu in 2011
• Now driven by OpenStack Foundation (established in September, 2012)
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 9
OpenStack Component overview: Neutron
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 10
OpenStack Neutron Challenges
Complexity of
Performance troubleshooting
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 11
Why Cisco ACI and OpenStack?
Distributed, Scalable Hardware-Accelerated
Virtual Networking Performance
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 13
Why Cisco ACI and OpenStack?
Distributed, Scalable Hardware-Accelerated
Virtual Networking Performance
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 14
Why Cisco ACI and OpenStack?
Distributed, Scalable Hardware-Accelerated
Virtual Networking Performance
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 15
Why Cisco ACI and OpenStack?
Distributed, Scalable Hardware-Accelerated
Virtual Networking Performance
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 16
ACI Unified Plugin for
OpenStack
ACI Unified Plugin for OpenStack
• Full Policy Based Network Automation Extended to the Hypervisor
Key Benefits
Unified networking: Containers, VMs, and
bare-metal
VM distributed networking
EXT
Secure multi-tenancy
VIM
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 18
ACI Unified plugin is a Neutron ML2 Plugin
• ML2 plugin: a framework allowing
OpenStack Networking to utilize the
variety of layer 2 networking Neutron Server
technologies.
• When running the ACI integration, The
following Type and Mechanism Drivers
will be used: ML2 Plug-in
API Extensions
• Type Drivers
• opflex Type Manager Mechanism Manager
• Mechanism Drivers
Linux Bridge
TypeDriver
TypeDriver
TypeDriver
TypeDriver
Population
apic_aim
Microsoft
apic_aim
SR-IOV
Hyper-V
vSwitch
Layer 2
OpFlex
•
VXLAN
Nexus
Cisco
Cisco
VLAN
Open
GRE
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 19
ACI Unified Plugin options
• Opflex mode allows creation of neutron networks based on
• VLAN
• VXLAN
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 20
Installation of
OpenStack
Installation of OpenStack and ACI Plugin
• On Cisco.com:
• https://www.cisco.com/c/en/us/support/cloud-systems-management/application-
policy-infrastructure-controller-apic/tsd-products-support-series-
home.html#OpenStack_Installation_Guides
• Manual installation:
• Prone to errors and discouraged. We limit the support for production environments
and documentation available on github.
• RHEL OSP Director, Juju Charms and Cisco VIM: full support for automated
installation and upgrade
VIM
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 22
Scalability – check out Release Notes for update!
Limit Type Maximum
• Limits keep changing and
can be found in Release
Host / Leaf 40
Notes:
https://www.cisco.com/c/e
n/us/support/cloud- VPC Links / Leaf 40
systems-
management/application-
policy-infrastructure- Endpoints / Leaf 2000
controller-apic/tsd-
products-support-series-
Endpoints / Host 400
home.html#Cisco_APIC_Op
enStack_and_Container_Pl
ugins_Release_Notes Virtual Endpoints / Leaf 40000
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 24
MultiPod and OpenStack
• It is possible to seamlessly extend the OpenStack cluster across different
data centers, both increasing redundancy and allowing disaster recovery
scenarios.
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 25
Multiple OpenStack Cluster on same ACI fabric
EXT
etc.
APP DB APP DB
OS Cluster-01 OS Cluster-02
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 26
What are the
components and how
do they work?
ACI Neutron Plugin Main Components
ML2
Plugin Neutron-server
AIM
Controller node
VMM
and
APIC Model
Main Components are:
• ACI ML2 Plugin
• AIM
• Opflex Agent (Optional) OpFlex
• OpFlex Proxy Proxy
• VMM Manager
VLAN or
VXLAN
L2/L3 Bond0
vlan/vXlan OpFlex-agent
br-fabric
br-int
ta p483a c b1f ta p483a c b1f
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 28
ACI Integration Module
• The AIM daemon is running on the
Controller nodes and is responsible to
configure ACI through REST API call
AIM Daemon based on the OpenStack policy model
defined.
• It continuously monitors ACI resources
created from OpenStack and reverts
back any changes if not aligned with
AIM DB, part of the OpenStack DB.
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 29
Containerised AIM for Red Hat OSP
• As from In OSP12 and OSP13 AIM runs as a container running in host
mode:
[root@overcloud-controller-0 heat-admin]# docker ps | grep aim
1595784748d5 10.10.250.69:8787/rhosp13/openstack-ciscoaci-aim:latest
"kolla_start" 8 days ago Up About an hour (healthy) ciscoaci_aim
[root@overcloud-controller-0 heat-admin]#
[root@overcloud-controller-0 heat-admin]# docker inspect 1595784748d5|egrep "NetworkMode|PidMode"
"NetworkMode": "host",
"PidMode": "host",
[root@overcloud-controller-0 heat-admin]# docker inspect --format '{{ .State.Pid }}' 1595784748d5
8788
[root@overcloud-controller-0 heat-admin]# ps -ef |grep 8788
root 8788 8582 0 13:43 ? 00:00:03 /usr/bin/python /bin/supervisord -c
/etc/aim/aim_supervisord.conf
root 22006 8788 0 13:45 ? 00:00:01 /usr/bin/python2 /usr/bin/aim-event-service-polling --
config-file=/etc/aim/aim.conf --log-file=/var/log/aim/aim-event-service-polling.log
root 22007 8788 3 13:45 ? 00:03:55 /usr/bin/python2 /usr/bin/aim-aid --config-
file=/etc/aim/aim.conf --log-file=/var/log/aim/aim-aid.log
root 22059 8788 0 13:45 ? 00:00:02 /usr/bin/python2 /usr/bin/aim-event-service-rpc --config-
file=/etc/aim/aim.conf --log-file=/var/log/aim/aim-event-service-rpc.log
root 736371 708659 0 15:42 pts/0 00:00:00 grep --color=auto 8788
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 30
ACI Neutron Plugin Operation Workflow
Application Network Profile
EPG EPG EPG DB
3 C1 WEB C2 APP C3
ACI
5
Fabric
2 Push Policy
NEUTRON NOVA
4 Web App Web App DB App DB
OpenStack Admin
Instantiate VMs
HYPERVISOR HYPERVISOR HYPERVISOR
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 31
AIM Controller CLI
• AIM Controller CLI
allows to:
• Query for existing ACI [heat-admin@overcloud-controller-0 ~]$ aimctl manager bridge-domain-find
objects +--------------------------------------+------------------------------------------+
| tenant_name | name |
• Query for existing ACI |--------------------------------------+------------------------------------------|
objects details | prj_b75263c9e55c48cab43b2edaf59e5d9a | net_63bac97c-eb1f-4b9b-a8da-9a0c478789bb |
| common | BD-T1-SITE1 |
| common | default |
+--------------------------------------+------------------------------------------+
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 32
[heat-admin@overcloud-controller-0 ~]$ aimctl manager bridge-domain-show
prj_b75263c9e55c48cab43b2edaf59e5d9a net_8f2d85b6-89c5-4e93-8339-267e52a01ac9
| Property | Value |
|---------------------------+--------------------------------------------------|
| | t_8f2d85b6-89c5-4e93-8339-267e52a01ac9 |
+---------------------------+--------------------------------------------------+
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 33
[heat-admin@overcloud-controller-0 ~]$ aimctl manager bridge-domain-update
+---------------------------+--------------------------------------------------+
| Property | Value |
| limit_ip_learn_to_subnets | False |
| ep_move_detect_mode | garp |
| l3out_names | [] |
| epoch | 3 |
| dn | uni/tn-prj_b75263c9e55c48cab43b2edaf59e5d9a/BD-ne|
| | t_8f2d85b6-89c5-4e93-8339-267e52a01ac9 |
+---------------------------+--------------------------------------------------+
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 34
AIM Controller CLI
• AIM Controller CLI
allows to:
• Query for existing ACI
objects
• Query for existing ACI
objects details
• Update ACI objects
values
• Create ACI objects
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 35
Neutron Opflex Agent
• The Neutron Opflex Agent runs on both
the compute and the controller. It is
responsible to communicate with the
Neutron Opflex and neutron server.
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 36
Containerised Agents for Red Hat OSP
• As from In OSP12 and OSP13 Agents run as a container running in host
mode. Both agents run on the same container:
[root@overcloud-compute-0 heat-admin]# docker ps | grep opflex
53e4e43035d1 10.10.250.69:8787/rhosp13/openstack-ciscoaci-opflex:latest "kolla_start"
8 days ago Up 2 hours (healthy) ciscoaci_opflex_agent
[root@overcloud-compute-0 heat-admin]# docker inspect 53e4e43035d1|egrep "NetworkMode|PidMode"
"NetworkMode": "host",
"PidMode": "host",
[root@overcloud-compute-0 heat-admin]# docker inspect --format '{{ .State.Pid }}' 53e4e43035d1
5847
[root@overcloud-compute-0 heat-admin]# ps -ef |grep 5847
root 5847 5816 0 13:39 ? 00:00:03 /usr/bin/python /bin/supervisord -c /etc/opflex-agent-
ovs/opflex_supervisord.conf
root 6301 5847 0 13:39 ? 00:00:04 /usr/bin/opflex_agent --log /var/log/opflex/opflex-
agent.log -c /etc/opflex-agent-ovs/opflex-agent-ovs.conf -c /etc/opflex-agent-ovs/plugins.conf.d -c
/etc/opflex-agent-ovs/conf.d
root 6302 5847 0 13:39 ? 00:00:00 /usr/bin/mcast_daemon --log /var/log/opflex/mcast.log
42435 6303 5847 0 13:39 ? 00:00:29 /usr/bin/python2 /usr/bin/neutron-opflex-agent --config-
file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --log-file
/var/log/neutron/neutron-opflex-agent.log
root 59984 18603 0 15:48 pts/2 00:00:00 grep --color=auto 5847
[root@overcloud-compute-0 heat-admin]#
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 37
OpFlex Architecture
• Neutron-opFlex-
agent: Receives
updates from Neutron
about new endpoints
and updates EP and
Service files
OpFlex Proxy
• OpFlex-agent: Runs
OpFlex protocol with
OpFlex-agent
Neutron-
Neutron-Server
ACI leaf proxy and
OpFlex-agent
programs open
vswitch via OpenFlow
os-compute-01 os-controller-01
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 38
OpFlex Architecture
Neutron-opFlex-
•
agent: Receives
updates from Neutron
()[root@overcloud-compute-1 /]# more
/var/lib/opflex-agent-ovs/endpoints/041b5a38-
c38b-4a9b-8de3-
about new endpoints
da69872abb41_fa\:16\:3e\:0f\:99\:a7.ep
{
"dhcp4": {
and updates EP and
"ip-address-mapping": [
{
Service files
OpFlex Proxy
"mapped-ip": "192.168.1.29",
"policy-space-name":
"prj_e8b2df07409b4b998dece8c00dc374bb",
•
"floating-ip": "10.104.31.11",
"endpoint-group-name":
OpFlex-agent: Runs
"OpenStack|EXT-l3out1", OpFlex protocol with
}
OpFlex-agent
Neutron- ],
Neutron-Server
ACI leaf proxy and
"endpoint-group-name":
OpFlex-agent
"OpenStack|net_1a7a4bb6-eaec-4aba-8f22 programs open
vswitch via OpenFlow
}
os-compute-01 os-controller-01
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 39
ACI + OpenStack – With OpFlex
Architecture ML2
Plugin Neutron-server
APIC Driver
converts neutron
AIM
Controller node to Cisco ACI
Policy
VLAN or
VXLAN
L2/L3
OpFlex Agent
Bond0 Receives
vlan/vXlan OpFlex-agent Policies from
OVS Rules ACI leaf
programmed by br-fabric
the OpFlex br-int
Agent are used ta p483a c b1f ta p483a c b1f
for policy
enforcement
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 40
What if you do not install OpFlex agents
on the compute node?
© 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public
ACI + OpenStack – Without OpFlex Support
Architecture ML2
Plugin Neutron-server
APIC Driver
converts neutron
AIM
Controller node to Cisco ACI
Policy
PhysDom Integration
Cisco ACI fabric
provides line • In some scenarios Opflex agent is
rate distributed
routing and not installed, in which case we talk
switching about PhysDom integration
capabilities
• A typical use case for this is when
we have SR-IOV based compute
hosts not having OVS
VLAN
• In this model the EPG is configured
L2/L3 PhysDom and
with VLAN static binding to the
static binding
Bond0
vlan on the ACI leaf compute nodes.
switches
os-compute-01
IPtables are br-ex
programmed by br-int
neutron server
ta p483a c b1f ta p483a c b1f
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 42
Compute nodes: OpFlex vs non OpFlex
Acceleration mode
OVS-DPDK
possible on the same OVS with OpFlex SR-IoV
no OpFlex
host
• You can mix and OVS with OpFlex Yes Yes No
match modes on the
same hosts SR-IoV Yes Yes Yes
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 44
ACI Unified Plugin Components - ACI Side
• ACI VMM Manager.
• Runs on the APIC cluster and communicates with the ACI Integration Module
• Receives configuration, learns Eps
• VMM object model for OpenStack represents OS nodes, Neutron resources, Nova
resources.
• ACI Leaf Opflex Proxy.
• Runs on the ACI leaf switches to scale out policy propagation to the connected
nodes.
• Transfers the OpFlex policies required by agent of the node.
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 45
ACI Tenant VMs view
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 46
ACI VMM View
All OS nodes
All
networks in
OS
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 47
More about OpFlex
mode architecture
optimizations
OpFlex and Policy Enforcement (OVS)
ML2
Plugin Neutron-server
APIC Driver
converts neutron
AIM
Controller node to Cisco ACI
Policy
br-fab_vxlan0
NAT, routing
Cisco ACI fabric and
provides line
br-fabric encapsulation
rate distributed Opflex Proxy qpi-2
qpi-1
routing and Receives
switching Policies from
capabilities APIC
qpf-1 qpf-2
OpFlex
Proxy Security
br-int enforcement
VLAN or
VXLAN tap1 tap2
L2/L3
OpFlex Agent
Bond0 Receives
vm1 vm2
vXlan OpFlex-agent Policies from
OVS Rules ACI leaf nginx-1
programmed by br-fabric
the OpFlex br-int
Agent are used ta p483a c b1f ta p483a c b1f
for policy
enforcement
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 50
Distributed Functions
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 51
Distributed Routing and Policy Enforcement
DESCRIPTION
192.168.21.22
• Also, the opflex-agent performs
192.168.1.3 10.12.0.15
local policy enforcement through
192.168.1.20
vm1 vm2 vm3 vm4
OVS rules locally on the same
OvS will act as hypervisor where the instance
distributed virtual lives.
router
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 52
Distributed Routing and Policy Enforcement
()[root@overcloud-compute-1 /]# ovs-ofctl -O OpenFlow13 dump-flows br-int | grep 192.168.
cookie=0x8, duration=2109.367s, table=1, n_packets=0, n_bytes=0, send_flow_rem
DESCRIPTION
priority=8064,ip,reg0=0x2,nw_src=192.168.22.3 actions=ct(commit,zone=NXM_NX_REG6[0..15]),goto_table:3
cookie=0x8, duration=2109.367s, table=1, n_packets=0, n_bytes=0, send_flow_rem
priority=8064,ip,reg0=0x2,nw_src=192.168.1.11 actions=ct(commit,zone=NXM_NX_REG6[0..15]),goto_table:3
cookie=0x8, duration=2109.367s, table=1, n_packets=0, n_bytes=0, send_flow_rem • Traditionally in OpenStack the
routing is done on the servers
priority=8064,ip,reg0=0x2,nw_src=192.168.1.2 actions=ct(commit,zone=NXM_NX_REG6[0..15]),goto_table:3
cookie=0x8, duration=2105.875s, table=1, n_packets=0, n_bytes=0, send_flow_rem
priority=8064,ip,reg0=0x2,nw_src=192.168.22.23 hosting neutron services only.
EPG net01 EPG net02 • With ACI integration the opflex-
agent is taking care of the routing
overcloud-compute-0 NO NEED FOR NEUTRON of the VMs. Since each compute
L3 AGENT
Compute
node node has a opflex-agent, the
routing is done in a distributed
Neutron-L3-Agent
OpFlex-agent
ta p483a c b1f
manner.
ta p483a c b1f
192.168.21.22
• Also, the opflex-agent performs
192.168.1.3 10.12.0.15
local policy enforcement through
192.168.1.20
vm1 vm2 vm3 vm4
OVS rules locally on the same
hypervisor where the instance
lives.
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 53
Distributed Routing and Policy Enforcement
DESCRIPTION
192.168.21.22
• Also, the opflex-agent performs
192.168.1.3 10.12.0.15
local policy enforcement through
192.168.1.20
vm1 vm2 vm3 vm4
OVS rules locally on the same
hypervisor where the instance
lives.
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 54
Distributed Routing and Policy Enforcement
DESCRIPTION
192.168.21.22
• Also, the opflex-agent performs
192.168.1.3 10.12.0.15
local policy enforcement through
192.168.1.20
vm1 vm2 vm3 vm4
OVS rules locally on the same
ACI View
hypervisor where the instance
lives.
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 55
NAT Function performed in the OVS locally
EXT
contract
DESCRIPTION
NAT network Border Leafs
Neutron network L3outExtEPG • Floating IP configured by
0.0.0.0/0 OpenStack Neutron using
NAT network
standard mechanism
opflex-
Neutron network • OVS performs NAT function
using OpenFlow rules from
OvS functions as distributed virtual 10.12.0.13 10.12.0.15 OpFlex agent for Floating IP
router for VMs. If destination vm1 vm2
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 57
SNAT and FIP
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 58
DHCP Optimization
DESCRIPTION
OpFlex-agent t
DNSmasq
a
p
4
8
3
a
c
b
1
f
10.11.0.21 10.11.0.33
vm1 vm2
os-network-01
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 60
Metadata Optimization
DESCRIPTION
Metadata
3
a
c
b
1
f
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 61
ML2 (Neutron) vs GBP
mode
ML2 (Neutron) – APIC Mapping
Openstack/Neutron
• With the ML2 APIC Object
Object
Standard Neutron
model, the following Project Tenant and Application Profile Name
mapping happens.
Network EPG and Bridge Domain
• All the operations
are done on Subnet Subnet
OpenStack through
Horizon, CLI or Heat Contract, consumed and provided by any
Router EPGs corresponding to the Neutron
Networks connected to the router.
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 63
GBP – APIC Mapping
Openstack/GBP Object APIC Object
• With the GBP Model
the following mapping Project Tenant and Application Profile Name
happens.
• GBP offers much more L3 Policy VRF
granularity and
flexibility compare to
L2 Policy Bridge Domain and associated Subnet
standard neutron.
• GBP comes with CLI,
Policy Group EPG
Heat and Horizon
plugins
Policy Ruleset Contract
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 65
GBP Policy RuleSets
L3 Policy
• GBP Policy RuleSets Policy Group provide Policy RuleSet Set consume Policy Group
represents the ACI
Policy concept. Policy Rule
Policy Target Policy Target
• ACI contracts, filters Policy Rule
and actions are
mapped with GBP Policy Target
Policy Rule
Policy Target
Rulesets
Policy Target Policy Target
contract
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 66
ML2 vs GBP model – what is best?
• GBP:
• Application Centric
• Security groups are created as ACI contracts AND OVS rules. So they are visible
on ACI and will be enforced both in HW (ACI leaf) and SW (OVS).
• Introduces new REST APIs: if any existing templates, you will need to adapt
• ML2:
• Network Centric
• Standard way of creating neutron networks
• REST API will not change: any heat or CLI template will keep working
• Security Groups visible in ACI as HPP: they are implemented as OVS rules
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 68
Demo
BRKACI-3456
Topology and Steps
• Create Net01
• Create Net11
• Attach 2 VMs per network
• Create Router and a gateway for
external connectivity
• Connect the networks to the router
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 95
External Network
External Connectivity
• Connectivity for a tenant can be either shared or dedicated.
• A shared external network is visible by all OpenStack projects.
• A dedicated connectivity for the OpenStack project.
• It would be possible to have a mixed environment both with shared and
dedicated external connectivity.
Tenant Pasta&Co Tenant Pizza&Co Tenant Pasta&Co Tenant Pizza&Co
Dediacated Dediacated
Shared L3 out
L3 out L3 out
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 110
How to create the L3out on ACI
• Although the OpenStack plugin could create automatically an L3out on ACI,
the best practice is to create it manually
• Defining manually an L3out supports all the L3out features:
• VPC
• Dynamic routing protocols
• Route engineering
• Etc.
• The L3out can be created with XML templates or in any ways you are
familiar with.
• Once the L3out is available, ACI AIM plugin on OpenStack can import it and
start controlling the L3out.
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 112
External Network with
Distributed NAT (DNAT)
Creation of the L3out Dedicated
• A dedicated L3out must be created in the OpenStack created tenant.
• In the L3out creation, it must be specified:
• Interfaces and their IP information
• Dynamic routing if any
• External EPG
• You should NOT add any contract as they will be added later automatically
by the plugin.
• If you require SNAT or FIP, the L3 out must be defined in a different VRF
from the one created by OpenStack!
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 114
Create OpenStack External Network with DNAT
[stack@dom-undercloud ~]$ neutron net-create external-net-CL --router:external --apic:distinguished_names type=dict
ExternalNetwork=uni/tn-prj_97390b780c7545d393d9314d34e69cfa/out-externalNet/instP-extEpg
+----------------------------+----------------------------------------------------------------------------------------+
| Field | Value |
+----------------------------+----------------------------------------------------------------------------------------+
| admin_state_up | True |
| apic:distinguished_names | {"ExternalNetwork": "uni/tn-prj_97390b780c7545d393d9314d34e69cfa/out-externalNet |
| | /instP-extEpg", "BridgeDomain": "uni/tn-prj_97390b780c7545d393d9314d34e69cfa/BD-EXT- |
| | externalNet", "VRF": "uni/tn-prj_97390b780c7545d393d9314d34e69cfa/ctx-DefaultVRF", |
| | "EndpointGroup": "uni/tn-prj_97390b780c7545d393d9314d34e69cfa/ap-OpenStack/epg-EXT- |
| | externalNet"} |
| apic:nat_type | distributed |
| apic:synchronization_state | synced |
| id | f085fe67-42e1-4b3c-8951-e5d9932222ca |
| is_default | False |
| name | external-net-CL |
| port_security_enabled | True Creating neutron external |
| provider:network_type | opflex |
| provider:physical_network | physnet1 network bound to the |
| provider:segmentation_id
| revision_number
|
| 4
L3out imported with the |
|
| router:external
| shared
| True
| False
aimctl manager. |
|
| status | ACTIVE |
| subnets | |
+----------------------------+----------------------------------------------------------------------------------------+
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 117
External SNAT or Floating IP Pool Definition
[stack@dom-undercloud ~]$ neutron subnet-create external-net-CL 10.104.21.0/24 --name ext-subnet --disable-dhcp
--gateway 10.104.21.1 --apic:snat_host_pool True
Created a new subnet:
+----------------------------+--------------------------------------------------+
| Field | Value |
+----------------------------+--------------------------------------------------+
| allocation_pools | {"start": "10.104.21.2", "end": "10.104.21.254"} |
| apic:distinguished_names | {} |
| apic:snat_host_pool | True |
| apic:synchronization_state | N/A |
| cidr | 10.104.21.0/24 |
| dns_nameservers
| enable_dhcp
|
| False
|
|
Creating neutron
| gateway_ip | 10.104.21.1 | external network
| host_routes | |
| id | 5344832d-dd03-40d7-a4d2-3f04c86fbb9d | SNAT pool and
| ip_version | 4 |
| ipv6_address_mode | | attaching the router
| ipv6_ra_mode
| name
|
| ext-subnet
|
|
to the external net.
| network_id | f085fe67-42e1-4b3c-8951-e5d9932222ca |
| revision_number | 2 |
| service_types | |
| subnetpool_id | |
| tenant_id | 97390b780c7545d393d9314d34e69cfa |
+----------------------------+--------------------------------------------------+
[stack@dom-undercloud ~]$ openstack router set --external-gateway external-net-CL CLrouter
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 118
Using Floating IP
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 119
NAT Function performed in the OVS locally
EXT
contract
DESCRIPTION
NAT network Border Leafs
Neutron network L3outExtEPG • Floating IP configured by
0.0.0.0/0 OpenStack Neutron using
NAT network
standard mechanism
opflex-
Neutron network • OVS performs NAT function
using OpenFlow rules from
OvS functions as distributed virtual 10.12.0.13 10.12.0.15 OpFlex agent for Floating IP
router for VMs. If destination vm1 vm2
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 122
Life of a packet – Floating IP
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 123
Life of a packet – FIP EXT
20.0.0.1
BD NAT external
Border Leafs
FIP 10.104.31.0/24
ExtEPG
br-fab_vxlan0
br-fabric
qpi-1 VM1 wants to
contact client
qpf-1 20.0.0.1.
br-int VM1 has FIP
tap1 10.104.31.11.
vm1 192.168.1.29
fa:16:3e:0f:99:a7
FIP 10.104.31.11 dom-node-01
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 124
Life of a packet – FIP EXT
20.0.0.1
br-int
tap1
vm1 192.168.1.29
fa:16:3e:0f:99:a7
FIP 10.104.31.11 dom-node-01
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 125
Life of a packet – FIP EXT
20.0.0.1
BD NAT external
Border Leafs
FIP 10.104.31.0/24
ExtEPG
br-fab_vxlan0
br-fabric
qpi-1
qpf-1
1
DST_MAC SRC_MAC DST_IP SRC_IP DST_PORT SRC_PORT
br-int 00:22:bd:f8:19:ff fa:16:3e:0f:99:a7 20.0.0.1 192.168.1.29 80 40183
tap1
vm1 192.168.1.29
fa:16:3e:0f:99:a7
FIP 10.104.31.11 dom-node-01
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 126
Life of a packet – FIP EXT
20.0.0.1
ExtEPG
br-fab_vxlan0
()[root@overcloud-compute-1 /]# ovs-ofctl -O Openflow13 dump-flows br-
br-fabric fabric |egrep “10.104.31.11|set”
cookie=0x0, duration=772.165s, table=10, n_packets=1, n_bytes=98,
qpi-1 priority=10,ip,reg6=0x1,reg7=0x7a8004,metadata=0x2/0xff,nw_src=192.168.1.29
actions=set_field:fa:16:3e:0f:99:a7->eth_src,set_field:00:22:bd:f8:19:ff-
>eth_dst,set_field:10.104.31.11->ip_src,dec_ttl,load:0x7a8004-
>NXM_NX_REG0[],load:0x2->NXM_NX_REG4[],load:0x3->NXM_NX_REG5[],load:0x2-
qpf-1 >NXM_NX_REG6[],load:0->NXM_NX_REG7[],load:0x400-
>OXM_OF_METADATA[],resubmit(,3)
br-int
tap1
OVS will encapsulate the
vm1 192.168.1.29 packet with the NAT
fa:16:3e:0f:99:a7
FIP 10.104.31.11 dom-node-01
external EPG encap
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 127
The External network in ACI
3. The NATted IP
in ACI is
represented by
the ‘external’
EPG 2. OVS applies
NAT rules
4. Traffic is sent
to external router 1. VM traffic
through ACI reaches OVS
user
tenant
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 136
What if the L3out should
be shared by multiple
OpenStack projects?
Create L3 out on ACI – Shared
• The shared external network must
be defined in the Common tenant in
ACI
• You must define L3out and extEPG
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 138
The External network in ACI
common
tenant
3. The NATted IP
in ACI is
represented by
the ‘external’
EPG 2. OVS applies
NAT rules
4. Traffic is sent
to external router 1. VM traffic
through ACI reaches OVS
user
tenant
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 139
Dedicated Tenant
External Network no NAT
Creation of the L3out Dedicated
• A dedicated L3out must be created in the OpenStack created tenant.
• In the L3out creation, it must be specified:
• Interfaces and their IP information
• Dynamic routing if any
• External EPG
• You should NOT add any contract as they will be added later automatically
by the plugin.
• When disabling Distributed NAT, L3 out must be defined in the VRF created
by OpenStack, i.e. DefaultVRF!
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 141
Create OpenStack External Network
[stack@dom-undercloud ~]$ neutron net-create external-net-CL --router:external --apic:distinguished_names type=dict
ExternalNetwork=uni/tn-prj_97390b780c7545d393d9314d34e69cfa/out-externalNet/instP-extEpg --apic:nat_type ""
+----------------------------+----------------------------------------------------------------------------------------+
| Field | Value |
+----------------------------+----------------------------------------------------------------------------------------+
| admin_state_up | True |
| apic:distinguished_names | {"ExternalNetwork": "uni/tn-prj_97390b780c7545d393d9314d34e69cfa/out-externalNet |
| | /instP-extEpg", "BridgeDomain": "uni/tn-prj_97390b780c7545d393d9314d34e69cfa/BD-EXT- |
| | externalNet", "VRF": "uni/tn-prj_97390b780c7545d393d9314d34e69cfa/ctx-DefaultVRF", |
| | "EndpointGroup": "uni/tn-prj_97390b780c7545d393d9314d34e69cfa/ap-OpenStack/epg-EXT- |
| | externalNet"} |
| apic:nat_type | |
| apic:synchronization_state | synced |
| id | f085fe67-42e1-4b3c-8951-e5d9932222ca |
| is_default | False |
| name | external-net-CL |
| port_security_enabled
| provider:network_type
| True
| opflex
Creating neutron external |
|
| provider:physical_network | physnet1 network bound to the |
| provider:segmentation_id | |
| revision_number | 4 L3out. |
| router:external | True |
| shared | False |
| status | ACTIVE |
| subnets | |
+----------------------------+----------------------------------------------------------------------------------------+
[stack@dom-undercloud ~]$ openstack router set --external-gateway external-net-CL CLrouter
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 144
Connect BM or VMs to
OpenStack
OpenStack and other workload types
• AIM is only responsible to sync configuration pushed from OS.
• Any other configuration which does not change the direct status of OS
created objects could be done by an ACI Admin.
• The intention would be to allow BM or other VM types to be instantiated in
the same subnet created by OpenStack.
• Those VMs/BMs should be allowed to talk to OS VMs.
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 161
How to do this?
• Recommendation is:
• Create separate EPG from OS EPG
• Attach the BM/VM EPG to same BD as
OS
• Make sure DHCP in OS is not
overlapping IPs
• Add manually a contract between OS
EPG and BM/VM EPG
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 163
APIC administrator adds
Consumer EPG
Provider Contract
Filters
DB EGP and contract
EPG Name between net01 EPG and
net01 Database
db-access TCP/3309 DB EPG.
(OpenStack) (Bare Metal)
Fabric Admin
net01-bd 10.12.1.1/24
EPG database EPG net01
10.12.1.100
OpenStack administrator
creates net01 EPG and BD
OpenStack
10.12.0.21 10.12.0.22 10.12.1.15 10.12.1.51
Admin
VM1 VM2 VM3 VM3
os-node-01 os-node-02
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 164
ACI Plugin and VNFs
Challenges of VNFs
• Configuration of dynamic routing
protocol between fabric switch and
VNF
• Support for dynamic VNF deployed in
distributed fashion
• Traffic distribution among VNF
• Wider ECMP than normally seen with
physical appliance VNFs VNFs
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 166
What is Neutron SVI feature
• ACI plugin for OpenStack enables distributed route peering between the
switches and OpenStack VNFs:
• Based on the creation or destruction of VNFs, Neutron SVI feature dynamically and
automatically create and destroy SVI on the underlay and enables line rate routing
capabilities and up to 64-way ECMP to the VNFs.
ACI L3out
• Up to 6 pairs of switches under same L3out
• VNFs across distributed sites (MultiPod)
• Supports bonding with VPC (L2 segment extended via ACI fabric)
.1 .2 .3 .4
VNID1
Rack-1 Rack-2
Rack-2BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 171
Want to know more?
For Your
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 173
Cisco Webex Teams
Questions?
Use Cisco Webex Teams (formerly Cisco Spark)
to chat with the speaker after the session
How
1 Find this session in the Cisco Events Mobile App
2 Click “Join the Discussion”
3 Install Webex Teams or go directly to the team space
4 Enter messages/questions in the team space
cs.co/ciscolivebot#BRKACI-3456
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 174
Complete your online
session survey
• Please complete your Online Session
Survey after each session
• Complete 4 Session Surveys & the Overall
Conference Survey (available from
Thursday) to receive your Cisco Live T-
shirt
• All surveys can be completed via the Cisco
Events Mobile App or the Communication
Stations
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 175
Continue Your Education
BRKACI-3456 © 2019 Cisco and/or its affiliates. All rights reserved. Cisco Public 176
Thank you