SD-WAN Viptela Collector Agents Guide
About
This documents provides details for the Viptela collector agents.
Dependencies
The following table provides information about the dependencies of the Viptela collector agents.
Agent | Dependencies |
---|---|
AlarmStatAgent | InstallerAgent, DeviceDescriptionAgent |
ApprouteEventAgent | InstallerAgent, DeviceDescriptionAgent |
DeviceDescriptionAgent | InstallerAgent |
DeviceHealthAgent | InstallerAgent |
FlowAgent | InstallerAgent, DeviceDescriptionAgent |
InterfaceQueueAgent | InstallerAgent |
InterfaceStatAgent | InstallerAgent |
MetadataAgent | InstallerAgent |
NextHopTableAgent | InstallerAgent, DeviceDescriptionAgent |
ObjectDescriptionAgent | InstallerAgent, DeviceDescriptionAgent |
PolicyParserAgent | InstallerAgent, DeviceDescriptionAgent |
TunnelStatAgent | InstallerAgent |
Viptela Collector Agents
AlarmStatAgent
Creates alerts for SevOne NMS devices and objects or clears them based on the alarm statistics received from the Viptela collector (vManage).
Data Flow
- Get alarm statistics from the Viptela collector (vManage).
- Get all NMS devices.
- Filter received alarms based on their component. The supported components are,
- Bidirectional Forwarding Detection (BFD)
- Control
- Hardware
- Overlay Multicast Protocol (OMP)
- System
- Virtual Private Network (VPN)
- For each of the filtered alarms, check if the associated device exists in NMS.
- If alarm's events are not cleared, add an alert for the device. Otherwise, clear it.
- If alarm has consumed events then for each event, add an alert to the object.
- Send alerts to NMS or clear them from NMS.
ApprouteEventAgent
Creates alerts for NMS devices on SLA state change event and updates cache with BFD sessions on BFD state change event.
Data Flow
- Get all the alerts with filter criteria as plugin name = VIP-EVENT:: and closed = 0.
- Clear all matching alerts.
- Get device events statistics from the Viptela collector (vManage).
- Get all NMS devices.
- For each Viptela device with a corresponding NMS device,
- If device's event is sla-change, create alert for the device.
- If device's event is bfd-state-change, update cache with new BFD session details. i.e., availability and transitions. The same will be used by TunnelStatAgent to populate the data for availability and transitions indicators.
- Send alerts to NMS or clear them from NMS.
DeviceDescriptionAgent
Update the device description with location details. Create device groups based on location.
Data Flow
- Get all NMS devices present under the tenant device group.
- Get all Viptela devices and filter these devices based on regex provided in vendor.device_filter_regexes.
- Get device location from Viptela transport if the custom site grouping is off.
- If custom site grouping is on, get the location from device metadata SDWAN_GENERIC.Site Name.
- Compare the Viptela device names against NMS devices. If the name matches, then update the device's description with device location.
- Create device groups under tenant device group, if not present.
- Update the device group rules for all 3 device groups up the hierarchy (Site Device Group, Tenant Device Group, MSP Device Group).
DeviceHealthAgent
Populate NMS devices with time series data for sdwan::device-health object type.
Data Flow
- Get all NMS devices.
- Get all Viptela devices and filter the devices based on regex provided in vendor.device_filter_regexes.
- For each Viptela device, query the device health.
- Send device health time series data to corresponding NMS devices.
- Populate indicators for object type sdwan::device-health.
- Remember the time of the last data point. The next run will request device health as of that time.
FlowAgent
Maps flow objects to NMS objects for object-types sdwan::device-interface and sdwan::tunnel and updates the names and speed of flow interfaces.
Data Flow
- Get NMS devices for the tenant.
- Fetch the flow device mappings for these devices.
- Fetch the flow devices and interfaces for these mappings.
- For flow interface updates,
- Fetch the interface object type.
- Fetch the indicators with indicator type interface_speed.
- Fetch last value for these indicators.
- For each flow interface, fetch NMS interface from flow device mappings and ifIndex.
- Set the interface name and speed.
- For flow object mapping,
- Fetch the NetFlow view id and NetFlow field id specified in tunnel_filter_view and tunnel_filter_field configuration.
- Fetch all NetFlow filters.
- Fetch interface and tunnel object types.
- Fetch tunnel and interface indicator types for rx_octets and tx_octets.
- Fetch all indicators of these indicator types.
- Fetch existing interface and tunnel flow object mappings.
- For each indicator, create flow object mapping. Recreate mapping if already exists.
- Device mapping - map NMS devices to flow devices using flow device mapping.
- Object mapping - map interface objects to flow interfaces using ifIndex.
- Map indicators using directions - incoming to rx* and outgoing to tx*.
- Add NetFlow filter to tunnel object mappings.
InstallerAgent
Create the missing Device Object Indicator (DOI) types in NMS such as, device types, device groups, and subgroups based on the location. Also, create object types, tunnel object groups and rules, interface object groups and rules, metadata schema in NMS.
Data Flow
- Create SDWAN and tenant device group, if not existing.
- Get all devices with device site details and filter these devices based on regex provided in vendor.device_filter_regexes.
- Get previous collector info from NMS like previous collector version, host name etc.
- Create SD-WAN and tenant object group, if not existing.
- Get all device groups under the tenant device group.
- Create and update metadata schema in NMS for all namespaces such as, SDWAN_DEVICES, SDWAN_INFO, and SDWAN_SLA_CLASSES.
- Create device groups and subgroups under the tenant device group and also update device group metadata for the device groups and subgroups in NMS.
- Create common device types in NMS.
- Create tunnel and interface object groups and rules under the tunnel object group.
- Create common object types in NMS.
InterfaceQueueAgent
Populate NMS devices with time series data for sdwan::device-interface-queue object type.
Data Flow
- Get all LAN and WAN interfaces.
- Filter LAN interfaces that have an IPv4 address.
- Get all Viptela devices and filter these devices based on regex provided in vendor.device_filter_regexes.
- Get interface Queue stats for each Viptela device.
- For each interface Queue stat,
- If setting vendor.interface_queue_stat.disable_wan_interface_stats==true, do not collect WAN interfaces.
- If setting vendor.interface_queue_stat.disable_lan_interface_stats==true, do not collect LAN interfaces.
- If setting vendor.vpn_id_filter is set, filter interfaces matching these VPN ids.
- Calculate indicator data from the stat.
- Create/update NMS object matching the interface queue name for all configured queues.
- Load interface queue time series data to corresponding NMS devices for object type sdwan::device-interface-queue.
- Remember the time of the last data point. The next run will request device interface queue as of that time.
InterfaceStatAgent
Populate NMS devices with time series data for sdwan::device-interface object type. Update cache with bandwidth data to be used by the tunnel agent.
Data Flow
- Get all LAN and WAN interfaces.
- Filter LAN interfaces that have an IPv4 address.
- Get all Viptela devices and filter these devices based on regex provided in vendor.device_filter_regexes.
- Get interface stats for each Viptela device.
- For each interface stat,
- If setting vendor.filtered_indicators_list is set, filter interface stat matching these indicator names.
- If setting vendor.interface_stat.disable_wan_interface_stats==true, do not collect WAN interfaces.
- If setting vendor.interface_stat.disable_lan_interface_stats==true, do not collect LAN interfaces.
- If setting vendor.vpn_id_filter is set, filter interfaces matching these VPN ids.
- Calculate indicator data from the stat.
- Create/update NMS object matching the interface name.
- Load interface time series data to corresponding NMS devices for object type sdwan::device-interface.
- Remember the time of the last data point. The next run will request device interface as of that time.
- Update redis with bandwidth data for TunnelStatAgent.
MetadataAgent
Populate NMS device metadata with Viptela device details.
Data Flow
- Get all NMS devices.
- Get all Viptela devices and filter these devices based on regex provided in vendor.device_filter_regexes and get reboot history, SLA details, and organization details.
- Ensure NMS metadata scheme is defined for all affected namespaces and attributes.
- Populate NMS device metadata in namespaces such as, SDWAN_DEVICES, SDWAN_INFO, and SDWAN_SLA_CLASSES.
PolicyParserAgent
Populate redis with policy details and application details to be used by Flow Augmentor. Add flow device IP in its device metadata.
Data Flow
- Get all NMS devices, NetFlow devices, and flow device mappings.
- Get all Viptela devices and filter these devices based on regex provided in vendor.device_filter_regexes and get policy details, all interfaces, and Deep Packet Inspection (DPI) app details. DPI provides application information that flow receives.
- Get NBAR2 application details from CSV file.
- Parse CLI type, feature type policies, and populate in redis.
- Populate and NBAR2 application details in redis.DPI
- Update device metadata with its flow device IP.
- Publish invalidation message to redis to inform the Flow Augmentor to update local data.
NextHopTableAgent
Populate redis with Next Hop table and tunnel details.
Data Flow
- Get all NMS devices in the tenant.
- Get all NetFlow devices, flow device mappings, and interface objects.
- Get all Viptela devices and filter these devices based on regex provided in vendor.device_filter_regexes and get all the interfaces.
- Populate Next Hop table and tunnel information in redis.
- redis values set to expire in 24 hours, by default.
- Agent to rerun every 15 minutes.
ObjectDescriptionAgent
- Updates description of 3 types of objects - interfaces, tunnels, and interfaceQueue objects.
- If vendor.custom_site_grouping is enabled, create object group and rules based on device metadata SDWAN_GENERIC.Site Name.
Data Flow
- Get all NMS devices present under the tenant device group.
- Get all Viptela devices and filter these devices based on regex provided in vendor.device_filter_regexes.
- Get device location from Viptela transport if the custom site grouping is off.
- If vendor.custom_site_grouping is enabled, get the location from device metadata SDWAN_GENERIC.Site Name.
- From the device location, create a Device Data map which contains the Device IP, id, location, and alternate name details.
- Get all object types (mainly for an interface, interface queues, and tunnels).
- Get tunnel, interface, and interface queue objects.
- If vendor.custom_site_grouping is enabled, get the tunnel tenant objectGroup and site deviceGroups from NMS.
- If vendor.custom_site_grouping is enabled, from site deviceGroups and device metadata, create a map createObjectGroups which contain objectGroupName, objectGroupRule, and deviceGroupId.
- For interface object, update the object description with interfaceType::interfaceName::ifindex::interfaceIfindex.
- For tunnel object, update the object description with src_device_location->dst_device_location and object's alternate name if the user sets it.
- For interface queue object, update the object description with QosMapName and QosSchedulerName.
- If vendor.custom_site_grouping is enabled, create object group and rules based on createObjectGroups map.
TunnelStatAgent
Populate NMS devices with time series data for sdwan::LOCALCOLOR object type, where LOCALCOLOR is a value of a field local_color from app route statistic.
Data Flow
- Get all Viptela devices and filter these devices based on regex provided in vendor.device_filter_regexes.
- Create a map of IP and devices from Viptela.
- Get app route statistic.
- Proceed only if device in app route stat is present in the map created above.
- Using app route stats for source device and destination device, which creates a tunnel, gather
data indicators for,
- latency
- jitter
- loss_percentage
- tx_utilization
- rx_utilization
- Collect data for the following optional indicators, if present in
vendor.tunnel_stat.optional_indicators.
- loss
- total_utilization
- source_interface_speed
- destination_interface_speed
- Collect data for the following indicators if vendor.tunnel_stat.disable_get_octets is set
to false.
- tx_octets
- rx_octets
-
Collect data for the following indicators if vendor.tunnel_stat.disable_get_packets is set to false.
- tx_pkts
- rx_pkts
- BFD data which includes Transitions and Availability if vendor.disable_bfd_sessions_stat is set to false. (BFD data is maintained by the ApprouteEventAgent)
- Collect SLA indicators based on setting vendor.tunnel_stat.total_sla_indictor_value.
- The setting supports three values - 0, 1, and 3.
- When set to 0, no SLA indicator will be created.
- When set to 1, SLA indicator shows value either for NORMAL, DEGRADED, or NOVIABLE SLA class.
- when set to 3, it shows values for all 3 SLA classes.
- The setting supports three values - 0, 1, and 3.
- Update cache with BFD data. i.e., Transitions and Availability.
- Update cache with bandwidth data. i.e., ifSpeed, ifName, B/W UP, and B/W Down.
- Load data indicators to NMS for a corresponding source device with object type as sdwan::LOCALCOLOR, where LOCALCOLOR is a value of a field local_color from app route statistics.