Unicast Reverse Path Forwarding (URPF) is a function that checks the validity of the source address of IP packets received on an interface. This in an attempt to prevent Denial of Service attacks based on IP address spoofing.
URPF checks validity of a source address by determining whether the packet would be successfully routed as a destination address. Based on configuration, the check made can be for existence of any route for the address, or more strictly for a route out the interface on which the packet was received by the device. When a violating packet is detected, it can be dropped. This MIB allows detection of spoofingevents.
The window of time in the recent past over which the drop count used in the drop rate computation is collected. This global value applies for the computation of all URPF rates, global and per-interface.
Once the period over which computations have been performed exceeds cipUrpfDropRateWindow, every time a computation is performed, the window slides up to end at the current time and start at cipUrpfDropRateWindow seconds before.
The cipUrpfDropRateWindow must be greater than or equal to the interval between computations (cipUrpfComputeInterval).
Since the agent must save the drop count values for each compute interval in order to slide the window, the number of counts saved is the quotient of cipUrpfDropRateWindow divided by cipUrpfComputeInterval.
cipUrpfComputeInterval
1.3.6.1.4.1.9.9.451.1.1.2
Integer32 (1..120) · seconds
The time between rate computations. This global value applies for the computation of all URPF rates, global and per-interface.
When the value of cipUrpfComputeInterval is changed, the interval in-progress proceeds as though the value had not changed. The change will apply to the length of subsequent intervals.
The cipUrpfComputeInterval must be less than or equal to the cipUrpfDropRateWindow.
cipUrpfDropNotifyHoldDownTime
1.3.6.1.4.1.9.9.451.1.1.3
Integer32 (1..1000) · seconds
The minimum time between issuance of cipUrpfIfDropRateNotify notifications for a particular interface and packet forwarding type.
Notifications are generated for each interface and packet forwarding type that exceeds the drop-rate. When a Notify is sent because the drop-rate is exceeded for a particular interface and forwarding type, the time specified by this object is used to specify the minimum time that must elapse before another Notify can be sent for that interface and forwarding type. The time is specified globally but used individually.
Table details
cipUrpfTable
1.3.6.1.4.1.9.9.451.1.2.1
Index: cipUrpfIpVersion
This table contains summary information for the managed device on URPF dropping.
cipUrpfIpVersion
1.3.6.1.4.1.9.9.451.1.2.1.1.1
INTEGER1 = ipv42 = ipv6 · Integer32
Specifies the version of IP forwarding on an interface to which the table row URPF counts, rates, and configuration apply.
cipUrpfDrops
1.3.6.1.4.1.9.9.451.1.2.1.1.2
Counter32 · packets
Sum of dropped IP version cipUrpfIpVersion packets failing a URPF check. This value is the sum of drops of packets received on all interfaces of the managed device.
cipUrpfDropRate
1.3.6.1.4.1.9.9.451.1.2.1.1.3
Gauge32 · packets per second
The rate of packet drops of IP version cipUrpfIpVersion packets due to URPF for the managed device. The per-interface drop rate notification is issued on rates exceeding a limit (rising rate). This dropping may indicate an security attack on the network. To determine whether the attack/event is over, the NMS must consult the managed device. This object can be polled to determine the recent drop rate for the managed device as a whole, in addition to querying particular interface objects. This object is the average rate of dropping over the most recent window of time. The rate is computed by dividing the number of packets dropped over a window by the window time in seconds. The window time is specified by cipUrpfDropRateWindow. Each time the drop rate is computed, and at system startup, a snapshot is taken of the latest value of cipUrpfDrops. Subtracting from this the snapshot of cipUrpfDrops at the start of the current window of time gives the number of packets dropped. The drop rate is computed every cipUrpfComputeInterval seconds. As an example, let cipUrpfDropRateWindow be 300 seconds, and cipUrpfComputeInterval 30 seconds. Every 30 seconds, the drop count five minutes previous is subtracted from the current drop count, and the result is divided by 300 to arrive at the drop rate. At device start-up, until the device has been up more than cipUrpfDropRateWindow, when drop rate is computed, the value of cipUrpfDrops is divided by the time the device has been up. After the device has been up for cipUrpfDropRateWindow, when drop rate is computed, the number of packet drops counted from interval start time to the computation time is divided by cipUrpfDropRateWindow. Changes to cipUrpfDropRateWindow are not reflected in this object until the next computation time. The rate from the most recent computation is the value fetched until the subsequent computation is performed.
cipUrpfIfMonTable
1.3.6.1.4.1.9.9.451.1.2.2
Index: ifIndex · cipUrpfIfIpVersion
This table contains information on URPF dropping on an interface.
InterfaceIndexA unique value, greater than zero, for each interface or interface sub-layer in the managed system. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub-layer must remain constant at least from one re-initialization of the entity's network management system to the next re-initialization. (1..2147483647) · Integer32 · hint d
A unique value, greater than zero, for each interface. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub-layer must remain constant at least from one re-initialization of the entity's network management system to the next re- initialization.
cipUrpfIfIpVersion
1.3.6.1.4.1.9.9.451.1.2.2.1.1
INTEGER1 = ipv42 = ipv6 · Integer32
Specifies the version of IP forwarding on an interface to which the table row URPF counts, rates, and configuration apply.
cipUrpfIfDrops
1.3.6.1.4.1.9.9.451.1.2.2.1.2
Counter32 · packets
The number of IP packets of version cipUrpfIfIpVersion failing the URPF check and dropped by the managed device on a particular interface.
Discontinuities in the value of this variable can occur at re-initialization of the management system, and at other times as indicated by the values of cipUrpfIfDiscontinuityTime.
cipUrpfIfSuppressedDrops
1.3.6.1.4.1.9.9.451.1.2.2.1.3
Counter32 · packets
The number of IP packets of version cipUrpfIfIpVersion failing the URPF check but given a reprieve and not dropped by the managed device. Depending on the device configuration and capabilities, the following cases may cause incrementing of the counter: - if the managed device is configured to allow self-pings and the managed device pings itself. - if the managed device is configured for loose URPF (if any interface has a route to the source), and the strict case fails while the loose case passes. - DHCP Request packets (src 0.0.0.0 dst 255.255.255.255) will pass after initially being marked for drop. - RIP routing on unnumbered interfaces will pass after initially being marked for drop. - multicast packets will pass after initially being marked for drop - ACL's can be applied to permit packets after initially being marked for drop.
Discontinuities in the value of this variable can occur at re-initialization of the management system, and at other times as indicated by the values of cipUrpfIfDiscontinuityTime.
cipUrpfIfDropRate
1.3.6.1.4.1.9.9.451.1.2.2.1.4
Gauge32 · packets/second
The rate of packet drops of IP version cipUrpfIfIpVersion packets due to URPF on the interface.
This object is the average rate of dropping over the most recent interval of time. The rate is computed by dividing the number of packets dropped over an interval by the interval time in seconds. Each time the drop rate is computed, and at system startup, a snapshot is taken of the latest value of cipUrpfIfDrops. Subtracting from this the snapshot of cipUrpfIfDrops at the start of the current interval of time gives the number of packets dropped. The drop rate is computed every cipUrpfComputeInterval seconds.
When drop rate is computed, if time since the creation of a row in cipUrpfIfMonTable is less than cipUrpfDropRateWindow, the value of cipUrpfIfDrops is divided by the time since row was created.
After the row has been in existence for cipUrpfDropRateWindow, when drop rate is computed, the number of packet drops counted on the interface from interval start time to the computation time is divided by cipUrpfDropRateWindow.
Changes to cipUrpfDropRateWindow are not reflected in this object until the next computation time.
The rate from the most recent computation is the value
fetched until the subsequent computation is performed.
cipUrpfIfDiscontinuityTime
1.3.6.1.4.1.9.9.451.1.2.2.1.5
TimeStampThe value of the sysUpTime object at which a specific occurrence happened. The specific occurrence must be
defined in the description of any object defined using this type.
If sysUpTime is reset to zero as a result of a re- initialization of the network management (sub)system, then the values of all TimeStamp objects are also reset. However, after approximately 497 days without a re- initialization, the sysUpTime object will reach 2^^32-1 and then increment around to zero; in this case, existing values of TimeStamp objects do not change. This can lead to ambiguities in the value of TimeStamp objects. · TimeTicks
The value of sysUpTime on the most recent
occasion at which this interface's counters
suffered a discontinuity.
If no such discontinuities have occurred since the last re-initialization of the local management subsystem, then this object contains a value of zero.
cipUrpfVrfIfTable
1.3.6.1.4.1.9.9.451.1.2.3
Index: cipUrpfVrfName · ifIndex
This table contains statistics information for interfaces performing URPF using VRF table to determine reachability.
InterfaceIndexA unique value, greater than zero, for each interface or interface sub-layer in the managed system. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub-layer must remain constant at least from one re-initialization of the entity's network management system to the next re-initialization. (1..2147483647) · Integer32 · hint d
A unique value, greater than zero, for each interface. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub-layer must remain constant at least from one re-initialization of the entity's network management system to the next re- initialization.
cipUrpfVrfIfDrops
1.3.6.1.4.1.9.9.451.1.2.3.1.2
Counter32 · packets
The number of packets failing the URPF check for a VRF on the interface and dropped by the managed device.
Discontinuities in the value of this variable can occur at re-initialization of the management system, and at other times as indicated by the values of cipUrpfVrfIfDiscontinuityTime.
cipUrpfVrfIfDiscontinuityTime
1.3.6.1.4.1.9.9.451.1.2.3.1.3
TimeStampThe value of the sysUpTime object at which a specific occurrence happened. The specific occurrence must be
defined in the description of any object defined using this type.
If sysUpTime is reset to zero as a result of a re- initialization of the network management (sub)system, then the values of all TimeStamp objects are also reset. However, after approximately 497 days without a re- initialization, the sysUpTime object will reach 2^^32-1 and then increment around to zero; in this case, existing values of TimeStamp objects do not change. This can lead to ambiguities in the value of TimeStamp objects. · TimeTicks
The value of sysUpTime on the most recent occasion at which the URPF counters for this VRF on this interface
suffered a discontinuity. If no such discontinuities
have occurred since the last re-initialization of the local management subsystem, then this object contains a value of zero.
InterfaceIndexA unique value, greater than zero, for each interface or interface sub-layer in the managed system. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub-layer must remain constant at least from one re-initialization of the entity's network management system to the next re-initialization. (1..2147483647) · Integer32 · hint d
A unique value, greater than zero, for each interface. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub-layer must remain constant at least from one re-initialization of the entity's network management system to the next re- initialization.
cipUrpfIfDropRateNotifyEnable
1.3.6.1.4.1.9.9.451.1.3.1.1.1
TruthValue1 = true2 = falseRepresents a boolean value. · Integer32
This object specifies whether the system produces the cipUrpfIfDropRateNotify notification as a result of URPF dropping of version cipUrpfIfIpVersion IP packets on this interface. A false value prevents such notifications from being generated by this system.
cipUrpfIfNotifyDropRateThreshold
1.3.6.1.4.1.9.9.451.1.3.1.1.2
Unsigned32 · packets/second
When the calculated rate of URPF packet drops (cipUrpfIfDropRate) meets or exceeds the value specified by this object, a cipUrpfIfDropRateNotify notification is sent if cipUrpfIfDropRateNotifyEnable is set to true, and no such notification for the IP version has been sent for this interface for the hold-down period.
Note that due to the calculation used for drop rate, if there are less than n drop events in an n-second period the notification will not be generated. To allow for the detection of a small number of drop events, the value 0 (zero) is used to indicate that if any drop events occur during the interval, a notification is generated.
cipUrpfIfNotifyDrHoldDownReset
1.3.6.1.4.1.9.9.451.1.3.1.1.3
TruthValue1 = true2 = falseRepresents a boolean value. · Integer32
Setting this object to true causes the five-minute hold-down timer for emitting URPF drop rate notifications for IP version cipUrpfIfIpVersion on the interface to be short-circuited. If a notification is due and would be emitted for the interface if the five-minutes elapsed, setting this object will cause the notification to be sent.
This is a trigger, and doesn't hold information. It is set and an action is performed. Therefore a get for this object always returns false.
cipUrpfIfCheckStrict
1.3.6.1.4.1.9.9.451.1.3.1.1.4
INTEGER1 = strict2 = loose · Integer32
Interface configuration indicating the strictness of the reachability check performed on the interface. - strict: check that source addr is reachable via the interface it came in on. - loose : check that source addr is reachable via some interface on the device.
cipUrpfIfWhichRouteTableID
1.3.6.1.4.1.9.9.451.1.3.1.1.5
INTEGER1 = default2 = vrf · Integer32
Interface configuration indicating the routing table consulted for the reachability check: - default: the non-private routing table for of the managed system.
- vrf : a particular VPN routing table.
cipUrpfIfVrfName
1.3.6.1.4.1.9.9.451.1.3.1.1.6
SnmpAdminStringAn octet string containing administrative information, preferably in human-readable form.
To facilitate internationalization, this information is represented using the ISO/IEC IS 10646-1 character set, encoded as an octet string using the UTF-8 transformation format described in [RFC2279].
Since additional code points are added by amendments to the 10646 standard from time to time, implementations must be prepared to encounter any code point from 0x00000000 to 0x7fffffff. Byte sequences that do not correspond to the valid UTF-8 encoding of a code point or are outside this range are prohibited.
The use of control codes should be avoided.
When it is necessary to represent a newline, the control code sequence CR LF should be used.
The use of leading or trailing white space should be avoided.
For code points not directly supported by user interface hardware or software, an alternative means of entry and display, such as hexadecimal, may be provided.
For information encoded in 7-bit US-ASCII, the UTF-8 encoding is identical to the US-ASCII encoding.
UTF-8 may require multiple bytes to represent a single character / code point; thus the length of this object in octets may be different from the number of characters encoded. Similarly, size constraints refer to the number of encoded octets, not the number of characters represented by an encoding.
Note that when this TC is used for an object that is used or envisioned to be used as an index, then a SIZE restriction MUST be specified so that the number of sub-identifiers for any object instance does not exceed the limit of 128, as defined by [RFC3416].
Note that the size of an SnmpAdminString object is measured in octets, not characters. SIZE (0..32) · OCTET STRING · hint 255t
If the value of cipUrpfIfWhichRouteTableID is 'vrf', the name of the VRF Table. Otherwise a zero-length string.
cipUrpfVrfTable
1.3.6.1.4.1.9.9.451.1.4.1
Index: cipUrpfVrfName
This table enables indexing URPF drop statistics by Virtual Routing and Forwarding instances.
cipUrpfVrfName
1.3.6.1.4.1.9.9.451.1.4.1.1.1
SnmpAdminStringAn octet string containing administrative information, preferably in human-readable form.
To facilitate internationalization, this information is represented using the ISO/IEC IS 10646-1 character set, encoded as an octet string using the UTF-8 transformation format described in [RFC2279].
Since additional code points are added by amendments to the 10646 standard from time to time, implementations must be prepared to encounter any code point from 0x00000000 to 0x7fffffff. Byte sequences that do not correspond to the valid UTF-8 encoding of a code point or are outside this range are prohibited.
The use of control codes should be avoided.
When it is necessary to represent a newline, the control code sequence CR LF should be used.
The use of leading or trailing white space should be avoided.
For code points not directly supported by user interface hardware or software, an alternative means of entry and display, such as hexadecimal, may be provided.
For information encoded in 7-bit US-ASCII, the UTF-8 encoding is identical to the US-ASCII encoding.
UTF-8 may require multiple bytes to represent a single character / code point; thus the length of this object in octets may be different from the number of characters encoded. Similarly, size constraints refer to the number of encoded octets, not the number of characters represented by an encoding.
Note that when this TC is used for an object that is used or envisioned to be used as an index, then a SIZE restriction MUST be specified so that the number of sub-identifiers for any object instance does not exceed the limit of 128, as defined by [RFC3416].
Note that the size of an SnmpAdminString object is measured in octets, not characters. SIZE (0..32) · OCTET STRING · hint 255t
This field is used to specify the VRF Table name.
Trap details
cipUrpfIfDropRateNotify
1.3.6.1.4.1.9.9.451.0.1
This notification is generated when cipUrpfIfDropRateNotifyEnable is set to true and the calculated URPF drop rate (cipUrpfIfDropRate) exceeds the notification threshold drop rate (cipUrpfIfNotifyDropRateThreshold). Note the exceptional value of 0 for threshold allows notification generation if any drop events occur in an interval.
After generating this notification, another such notification will not be sent out for a minimum of five minutes (note the exception to this provided by cipUrpfIfNotifyDrHoldDownReset).
The object value present in the notification is the the drop rate that exceeded the threshold.
cipUrpfIfDropRate
1.3.6.1.4.1.9.9.451.1.2.2.1.4
Gauge32 · packets/second
The rate of packet drops of IP version cipUrpfIfIpVersion packets due to URPF on the interface.
This object is the average rate of dropping over the most recent interval of time. The rate is computed by dividing the number of packets dropped over an interval by the interval time in seconds. Each time the drop rate is computed, and at system startup, a snapshot is taken of the latest value of cipUrpfIfDrops. Subtracting from this the snapshot of cipUrpfIfDrops at the start of the current interval of time gives the number of packets dropped. The drop rate is computed every cipUrpfComputeInterval seconds.
When drop rate is computed, if time since the creation of a row in cipUrpfIfMonTable is less than cipUrpfDropRateWindow, the value of cipUrpfIfDrops is divided by the time since row was created.
After the row has been in existence for cipUrpfDropRateWindow, when drop rate is computed, the number of packet drops counted on the interface from interval start time to the computation time is divided by cipUrpfDropRateWindow.
Changes to cipUrpfDropRateWindow are not reflected in this object until the next computation time.
The rate from the most recent computation is the value
fetched until the subsequent computation is performed.