Sample ASR1000 L3 Router Service Plugin

L3 Router Service Plugin

The sample configuration below for the L3 router service plugin can also be viewed as raw text cisco_router_plugin.ini file.

[routing]
# Name of default router type to create. Must be a unique name.
default_router_type = ASR1k_router

# Name of router type for Linux network namespace-based routers
# namespace_router_type_name = NetworkNamespace_router

# Time in seconds between renewed scheduling attempts of non-scheduled routers
# backlog_processing_interval = 10

# Driver to use for routertype-aware scheduling of router to a default L3 agent
# router_type_aware_scheduler_driver = networking_cisco.plugins.cisco.l3.schedulers.l3_routertype_aware_agent_scheduler.L3RouterTypeAwareScheduler

# Set 'auto_schedule' to True if routers are to be automatically scheduled by default
# auto_schedule = True

# Set 'share_hosting_device' to True if routers can share hosts with routers owned by other tenants by default
# share_hosting_device = True


[router_types]
# Cisco router type definitions.
# In addition to defining router types using the neutron client,
# router types can be defined here to be immediately available
# when Neutron is started.
# NOTE! All fields must be included (even if left empty).

# Cisco router type format.
# [cisco_router_type:<UUID of router type>]
# name=<router type name, should preferably be unique>
# description=<description of router type>
# template_id=<template to use to create hosting devices for this router type>
# ha_enabled_by_default=<True if HA should be enabled by default>
# shared=<True if if routertype is available to all tenants, False otherwise>
# slot_need=<Number of slots this router type consume in hosting device>
# scheduler=<module to be used as scheduler for router of this type>  (1)
# driver=<module to be used by router plugin as router type driver>    (2)
# cfg_agent_service_helper=<module to be used by configuration agent
#                           as service helper driver                  (3)
# cfg_agent_driver=<module to be used by configuration agent for
#                   device configurations>                            (4)

# (1) --(4): Leave empty for routers implemented in network nodes

# Example:
# [cisco_router_type:1]
# name=Namespace_Neutron_router
# description="Neutron router implemented in Linux network namespace"
# template_id=1
# shared=True
# slot_need=0
# scheduler=
# driver=
# cfg_agent_service_helper=
# cfg_agent_driver=

# [cisco_router_type:2]
# name=Hardware_Neutron_router
# description="Neutron router implemented in Cisco ASR1k device"
# template_id=2
# ha_enabled_by_default=True
# shared=True
# slot_need=1
# scheduler=networking_cisco.plugins.cisco.l3.schedulers.l3_router_hosting_device_scheduler.L3RouterHostingDeviceHARandomScheduler
# driver=networking_cisco.plugins.cisco.l3.drivers.asr1k.asr1k_routertype_driver.ASR1kL3RouterDriver
# cfg_agent_service_helper=networking_cisco.plugins.cisco.cfg_agent.service_helpers.routing_svc_helper.RoutingServiceHelper
# cfg_agent_driver=networking_cisco.plugins.cisco.cfg_agent.device_drivers.asr1k.asr1k_routing_driver.ASR1kRoutingDriver

[ha]
# Enables high-availability support for routing service
# ha_support_enabled = True

# Default number of routers added for redundancy when high-availability
# by VRRP, HSRP, or GLBP is used (maximum is 4)
# default_ha_redundancy_level = 1

# Default mechanism used to implement high-availability. Can be one of HSRP,
# VRRP, or GLBP
# default_ha_mechanism = HSRP

# List of administratively disabled high-availability mechanisms (one or
# several of VRRP, HSRP, GBLP)
# disabled_ha_mechanisms = []

# Enables connectivity probing for high-availability even if (admin) user does
# not explicitly request it
# connectivity_probing_enabled_by_default = False

# Host that will be probe target for high-availability connectivity probing
# if (admin) user does not specify it
# default_probe_target = None

# Time (in seconds) between probes for high-availability connectivity probing
# if user does not specify it
# default_ping_interval = 5

Device Manager Plugin

The sample configuration below for the device manager plugin can also be viewed as raw text cisco_device_manager_plugin.ini file.

[general]
# Name of the L3 admin tenant
# l3_admin_tenant = L3AdminTenant

# Name of management network for hosting device configuration
# management_network = osn_mgmt_nw

# Default security group applied on management port
# default_security_group = mgmt_sec_grp

# Maximal time (in seconds) between checks of config agent status
# cfg_agent_monitoring_interval = 20

# Seconds of no status update until a cfg agent is considered down
# cfg_agent_down_time = 30

# Driver to use for scheduling hosting device to a Cisco configuration agent
# configuration_agent_scheduler_driver = networking_cisco.plugins.cisco.device_manager.scheduler.hosting_device_cfg_agent_scheduler.HostingDeviceCfgAgentScheduler

# Path to templates for hosting devices
# templates_path = /opt/stack/data/neutron/cisco/templates

# Path to config drive files for service VM instances
# service_vm_config_path = /opt/stack/data/neutron/cisco/config_drive

# Ensure that Nova is running before attempting to create any router VM
# ensure_nova_running = True

# IP address of primary domain name server for hosting devices
# domain_name_server_1 = 8.8.8.8

# IP address of secondary domain name server for hosting devices
# domain_name_server_2 = 8.8.4.4

[hosting_device_credentials]
# Cisco hosting device credentials specifications.
# Credentials for hosting devices must be defined here.
# NOTE! All fields must be included (even if left empty).

# Hosting device credential format.
# [cisco_hosting_device_credential:<UUID of hosting device credential>]  (1)
# name=<name of credential>                                              (2)
# description=<description of credential>                                (3)
# user_name=<username string>
# password=<password string>
# type=<type of credential>                                              (4)

# (1) The UUID can be specified as an integer.
# (2),(3),(4): currently ignored. Can be left empty.

# Example:
# [cisco_hosting_device_credential:1]
# name="Universal credential"
# description="Credential used for all hosting devices"
# user_name=device_administrator
# password=fE#m%%92
# type=

[hosting_devices_templates]
# Cisco hosting device template definitions.
# In addition to defining templates using the neutron client,
# templates can be defined here to be immediately available
# when Neutron is started.
# NOTE! All fields must be included (even if left empty).

# Hosting device template format.
# [cisco_hosting_device_template:<UUID of hosting device template>]   (1)
# name=<name given to hosting devices created using this template>
# enabled=<template enabled if True>
# host_category=<can be 'VM', 'Hardware', or 'Network_Node'>          (2)
# service_types=<list of service types this template supports>        (3)
# image=<the image name or UUID in Glance>                             (4)
# flavor=<the VM flavor or UUID in Nova>                              (5)
# default_credentials_id=<UUID of default credentials>                (6)
# configuration_mechanism=<indicates how configurations are made>     (7)
# protocol_port=<udp/tcp port of hosting device>
# booting_time=<Typical booting time (in seconds)>
# slot_capacity=<abstract metric specifying capacity to host logical resources>
# desired_slots_free=<desired number of slots to keep available at all times>
# tenant_bound=<list of tenant UUIDs to which template is available>  (8)
# device_driver=<module to be used as hosting device driver>
# plugging_driver=<module to be used as plugging driver >

# (1) The UUID can be specified as an integer.
# (2) Specify 'VM' for virtual machine appliances, 'Hardware' for hardware
#     appliances, and 'Network_Node' for traditional Neutron network nodes.
# (3) Write as string of ':' separated service type names. Can be left empty
#     for now.
# (4) Leave empty for hardware appliances and network nodes.
# (5) Leave empty for hardware appliances and network nodes.
# (6) UUID of credential. Can be specified as an integer.
# (7) Currently ignored. Can be left empty for now.
# (8) A (possibly empty) string of ':'-separated tenant UUIDs representing the
#     only tenants allowed to own/place resources on hosting devices created
#     using this template. If string is empty all tenants are allowed.

# Example:
# [cisco_hosting_device_template:1]
# name=NetworkNode
# enabled=True
# host_category=Network_Node
# service_types=router:FW:VPN
# image=
# flavor=
# default_credentials_id=1
# configuration_mechanism=
# protocol_port=22
# booting_time=360
# slot_capacity=2000
# desired_slots_free=0
# tenant_bound=
# device_driver=networking_cisco.plugins.cisco.device_manager.hosting_device_drivers.noop_hd_driver.NoopHostingDeviceDriver
# plugging_driver=networking_cisco.plugins.cisco.device_manager.plugging_drivers.noop_plugging_driver.NoopPluggingDriver

# [cisco_hosting_device_template:2]
# name="ASR1kv template"
# enabled=True
# host_category=Hardware
# service_types=router:FW:VPN
# image=
# flavor=
# default_credentials_id=1
# configuration_mechanism=
# protocol_port=22
# booting_time=360
# slot_capacity=2000
# desired_slots_free=0
# tenant_bound=
# device_driver=networking_cisco.plugins.cisco.device_manager.hosting_device_drivers.noop_hd_driver.NoopHostingDeviceDriver
# plugging_driver=networking_cisco.plugins.cisco.device_manager.plugging_drivers.hw_vlan_trunking_driver.HwVLANTrunkingPlugDriver

[hosting_devices]
# Cisco hosting device specifications.
# In addition to specifying hosting devices using the neutron client,
# devices can be specified here to be immediately available when Neutron is
# started.
# NOTE! All fields must be included (even if left empty).

# Hosting device format.
# [cisco_hosting_device:<UUID of hosting device>]                         (1)
# template_id=<UUID of hosting device template for this hosting device>
# credentials_id=<UUID of credentials for this hosting device>
# name=<name of device, e.g., its name in DNS>
# description=<arbitrary description of the device>
# device_id=<manufacturer id of the device, e.g., its serial number>
# admin_state_up=<True if device is active, False otherwise>
# management_ip_address=<IP address of device's management network interface>
# protocol_port=<udp/tcp port of hosting device's management process>
# tenant_bound=<Tenant UUID or empty string>                              (2)
# auto_delete=<True or False>                                             (3)

# (1) The UUID can be specified as an integer.
# (2) UUID of the only tenant allowed to own/place resources on this hosting
#     device. If empty any tenant can place resources on it.
# (3) If True, a VM-based hosting device is subject to deletion as part of
#     hosting device pool management and in case of VM failures. If set to
#     False, the hosting device must be manually unregistered in the device
#     manager and any corresponding VM must be deleted in Nova.

# Example:
# [cisco_hosting_device:2]
# template_id=1
# credentials_id=1
# name=dragon
# description=Main ASR1k serving region 1
# device_id=SN:abcd1234efgh
# admin_state_up=True
# management_ip_address=10.0.100.5
# protocol_port=22
# tenant_bound=
# auto_delete=False

[plugging_drivers]
# Cisco plugging driver configurations.
# Plugging driver specific settings are made here.

# For the hw_vlan_trunking_driver.HwVLANTrunkingPlugDriver plugging driver
# it is expected that for each hosting device the network interfaces to be used
# to reach different Neutron networks are specified.

# Specifically the format for this plugging driver is as follows
# [HwVLANTrunkingPlugDriver:<UUID of hosting device>]                      (1)
# internal_net_interface_<int number>=<network_uuid_spec>:<interface_name> (2)
# external_net_interface_<int number>=<network_uuid_spec>:<interface_name> (3)
# [zero or more additional internal or external specifications] ...

# (1) The UUID can be specified as an integer.
# (2),(3) <network_uuid_spec> can be '*' or a UUID, or a comma separated list
#         of UUIDs.

# Example:
# [HwVLANTrunkingPlugDriver:3]
# internal_net_interface_1=*:GigabitEthernet1
# external_net_interface_1=*:GigabitEthernet2

# [HwVLANTrunkingPlugDriver:4]
# internal_net_interface_1=*:GigabitEthernet1
# external_net_interface_1=d7b2eac2-1ade-444e-edc5-81fd4267f53a:GigabitEthernet2
# external_net_interface_2=a36b533a-fae6-b78c-fe11-34aa82b12e3a,45c624b-ebf5-c67b-df22-43bb73c21f4e:GigabitEthernet3

Configuration Agent

The sample configurations below for the configuration agent can also be viewed as raw text cisco_cfg_agent.ini file.

[cfg_agent]
# (IntOpt) Interval in seconds for processing of service updates.
# That is when the config agent's process_services() loop executes
# and it lets each service helper to process its service resources.
# rpc_loop_interval = 10

# (BoolOpt)  If enabled, the agent will maintain a heartbeat against
# its hosting-devices. If a device dies and recovers, the agent will
# then trigger a configuration resync.
# enable_heartbeat = True

# (IntOpt)  Interval in seconds when the config agent runs the
# backlog / hosting-device heart beat task.
# heartbeat_interval = 5

# (IntOpt)  Maximum number of attempts for a device sync.
# max_device_sync_attempts = 6

# (IntOpt) The largest number of routers to fetch in one RPC call.
# max_device_sync_batch_size = 64

# (StrOpt) Period-separated module path to the routing service helper class.
# routing_svc_helper_class = networking_cisco.plugins.cisco.cfg_agent.service_helpers.routing_svc_helper.RoutingServiceHelper

# (IntOpt) Timeout value in seconds for connecting to a hosting device.
# device_connection_timeout = 30

# (IntOpt) The time in seconds until a backlogged hosting device is
# presumed dead or booted to an error state.
# hosting_device_dead_timeout = 300

# (IntOpt) Interval in seconds when the config agent sents a report to the
# plugin. This is used to keep tab on the liveliness of the cfg agent.
# This value should be more than 0, otherwise cfg agent will be considered
# as dead.
# keepalive_interval = 10

# (IntOpt)The iteration where the config agent sends a full status report to
# the plugin. The default is every 6th iteration of the keep alive interval.
# This means with default value of keepalive_interval (10sec), a full report
# is sent once every 6*10 = 60 seconds.
# report_iteration = 6