Network port(s) running in low speed-cisco-asa

Network port(s) running in low speed-cisco-asa
0

Network port(s) running in low speed-cisco-asa

Vendor: cisco

OS: asa

Description:
Indeni will alert one or more network ports is running in a speed lower than 1000Mbps.

Remediation Steps:
Many times ports are in a low speed due to an autonegotation error or a misconfiguration.
|
|1. Use the “show interface” NX-OS command to display speed and duplex settings of an interface.
|2. Use the “show interface status” and “show interface capabilities” NX-OS commands to gather more information about ports.
|3. You can disable link negotiation using the “no negotiate auto” command. Use the “negotiate auto” command to enable auto negotiation on 1-Gigabit ports when the connected peer does not support auto negotiation. By default, auto-negotiation is enabled on 1-Gigabit ports and disabled on 10-Gigabit ports.
|4. Cisco does not recommend to enable auto negotiation on 10-Gigabit ports. Enabling auto-negotiation on 10-Gigabit ports brings the link down. By default, link negotiation is disabled on 10-Gigabit ports.
|NOTE: A shut and no shut to the interface may be required after the aforementioned configuration change.

How does this work?
This script retrieves the interface speed by polling ifTable via SNMP.

Why is this important?
If the interface speed is set to a low value, this could mean auto-negotiation is not working correctly and the interface does not utilize the full bandwidth available.

Without Indeni how would you find this?
It is possible to poll this data through SNMP.

cisco-asa-interfaces

name: cisco-asa-interfaces
description: Fetch interface metrics for ASA device
type: monitoring
monitoring_interval: 1 minute
requires:
    vendor: cisco
    os.name: asa
    snmp: true
comments:
    network-interface-mtu:
        why: |
            The Maximum Transmission Unit (MTU) is the maximum frame size that can be sent between two hosts without fragmentation.
        how: |
            This script retrieves the interface MTU Setting by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-speed:
        why: |
            If the interface speed is set to a low value, this could mean auto-negotiation is not working correctly and the interface does not utilize the full bandwidth available.
        how: |
            This script retrieves the interface speed by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-mac:
        why: |
            A media access control address (MAC address) is a unique identifier assigned to a network interface.
        how: |
            This script retrieves the interface MAC Address by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-admin-state:
        why: |
           If an interface is disabled and it is a member of a Port Channel, then the link might be running at reduced capacity.
        how: |
            This script retrieves the interface administrative state by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false   
    network-interface-state:
        why: |
            Interfaces that should be UP and are DOWN can reduce the resiliance of the systems and cause service disruption.
        how: |
            This script retrieves the interface state by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false 
    network-interface-rx-bytes:
        why: |
            Capture the interface Received Bytes counter. Knowing the amount of bytes and packets flowing through an interface can help estimate an interface's performance and utilization.
        how: |
            This script retrieves the interface statistics by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false             
    network-interface-rx-packets:
        why: |
            Capture the interface Received Packets counter. Knowing the amount of bytes and packets flowing through an interface can help estimate an interface's performance and utilization.
        how: |
            This script retrieves the interface statistics by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false 
    network-interface-rx-dropped:
        why: |
            Capture the interface Receive Drop counter. Packet loss may have severe impact to the traffic utilization (retransmission for TCP apps) and to the performance of the applications
        how: |
            This script retrieves the interface statistics by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false 
    network-interface-rx-errors:
        why: |
            Capture the interface Receive Errors counter. Receive errors coould indicate an issue with duplex/speed matching.
        how: |
            This script retrieves the interface statistics by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false 
    network-interface-tx-bytes:
        why: |
            Capture the interface Transmit Bytes counter. Knowing the amount of bytes and packets flowing through an interface can help estimate an interface's performance and utilization.
        how: |
            This script retrieves the interface statistics by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false  
    network-interface-tx-packets:
        why: |
            Capture the interface Transmit Packets counter. Knowing the amount of bytes and packets flowing through an interface can help estimate an interface's performance and utilization.
        how: |
            This script retrieves the interface statistics by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false 
    network-interface-tx-dropped:
        why: |
            Capture the interface Transmit Drop counter. Packet loss may have severe impact to the traffic utilization (retransmission for TCP apps) and to the performance of the applications
        how: |
            This script retrieves the interface statistics by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false 
    network-interface-tx-errors:
        why: |
            Capture the interface Transmit Errors counter. Transmit errors coould indicate an issue with duplex/speed matching.
        how: |
            This script retrieves the interface statistics by polling ifTable via SNMP.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false 
steps:
-   run:
      type: SNMP
      command: GETTABLE 1.3.6.1.2.1.2.2
    parse:
      type: AWK
      file: asa-interfaces.parser.1.awk

cross_vendor_network_port_speed_low

// Deprecation warning : Scala template-based rules are deprecated. Please use YAML format rules instead.

package com.indeni.server.rules.library.templatebased.crossvendor

import com.indeni.ruleengine.expressions.Expression
import com.indeni.ruleengine.expressions.conditions.{Equals => RuleEquals, Or => RuleOr}
import com.indeni.ruleengine.expressions.data.SnapshotExpression
import com.indeni.server.rules.library.RuleHelper.networkInterfaceAdminState
import com.indeni.server.rules.{RemediationStepCondition, RuleCategory, RuleContext}
import com.indeni.server.rules.library.templates.SingleSnapshotValueCheckTemplateRule
import com.indeni.server.rules.library.RuleHelper

/**
  *
  */
case class cross_vendor_network_port_speed_low() extends SingleSnapshotValueCheckTemplateRule(
  ruleName = "cross_vendor_network_port_speed_low",
  ruleFriendlyName = "All Devices: Network port(s) running in low speed",
  ruleDescription = "Indeni will alert one or more network ports is running in a speed lower than 1000Mbps.",
  ruleCategories = Set(RuleCategory.HealthChecks),
  metricName = "network-interface-speed",
  applicableMetricTag = "name",
  alertAlternativeMetricTag = Some("alert-item-port-speed"),
  alertItemsHeader = "Ports Affected",
  alertDescription = "One or more ports are set to a speed lower than 1000Mbps. This is usually an error. Review the list of ports below.",
  baseRemediationText = "Many times ports are in a low speed due to an autonegotation error or a misconfiguration.",
  complexCondition = RuleOr(
    RuleEquals(SnapshotExpression("network-interface-speed").asSingle().mostRecent().value().noneable,
      RuleHelper.createComplexStringConstantExpression("10M")),
    RuleEquals(SnapshotExpression("network-interface-speed").asSingle().mostRecent().value().noneable,
      RuleHelper.createComplexStringConstantExpression("100M"))
  ),
  secondaryCondition = c => networkInterfaceAdminState(c.tsDao, expected = 1.0),
  alertItemHeadlineExpersion = new Expression[String] {
    val networkInterfaceSpeedExpersion = SnapshotExpression("network-interface-speed").asSingle().mostRecent()
    override def eval(time: Long): String = networkInterfaceSpeedExpersion.eval(time).value.getOrElse("value", "")
    override def args: Set[Expression[_]] = Set(networkInterfaceSpeedExpersion)
  },
  headlineFormat = "%s set has a %s"
)(
  RemediationStepCondition.VENDOR_CISCO ->
    """|
       |1. Use the "show interface" NX-OS command to display speed and duplex settings of an interface.
       |2. Use the "show interface status" and "show interface capabilities" NX-OS commands to gather more information about ports.
       |3. You can disable link negotiation using the "no negotiate auto" command. Use the "negotiate auto" command to enable auto negotiation on 1-Gigabit ports when the connected peer does not support auto negotiation. By default, auto-negotiation is enabled on 1-Gigabit ports and disabled on 10-Gigabit ports.
       |4. Cisco does not recommend to enable auto negotiation on 10-Gigabit ports. Enabling auto-negotiation on 10-Gigabit ports brings the link down. By default, link negotiation is disabled on 10-Gigabit ports.
       |NOTE: A shut and no shut to the interface may be required after the aforementioned configuration change.""".stripMargin
)