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