Guest

Cisco ASA 5500-X Series Next-Generation Firewalls

Cisco ASA NetFlow Implementation Guide

  • Viewing Options

  • PDF (399.6 KB)
  • Feedback

Table of Contents

Cisco ASA NetFlow Implementation Guide

About NSEL

Syslog Messages and NSEL Events

NSEL Collectors

Bidirectional Flows

Template Updates

Options Template and Data Records

Observation Point and Observation Domain

Flow Filtering

Data Fields

Event IDs Field

Extended Event IDs Field

Event Time Field

Data Records and Templates

Templates for Flow Creation Events

Templates for Extended Flow Teardown Events

Templates for Flow Denied Events

Templates for Flow Teardown Events

Templates for Flow Update Events

Flow Update (at timer) and Flow Update (at teardown) Events

Flow Update Records and Failover

Flow Update Events and Clustering

NetFlow and Failover

NetFlow and Clustering

Decoding Device Fields Through the CLI

Interface ID Fields

ACL ID Fields

Event Codes

Extended Event Codes

Guidelines for NSEL

Configure NSEL Collectors (CLI)

Configure Flow-Export Actions Through Modular Policy Framework

Configure Template Timeout Intervals

Change the Time Interval for Sending Flow-Update Events to a Collector

Delay the Sending of Flow-Create Events

Disable and Reenable NetFlow-related Syslog Messages

Reset Runtime Counters

Enable NetFlow (ASDM)

Match NetFlow Events to Configured Collectors

Monitoring NSEL

Examples for NSEL (CLI)

Example 1: Allowed Flow with PAT Interface

Example 2: Denied Flow on Egress with PAT Interface

Example 3: Filtering NSEL Events

History for NSEL

Cisco ASA NetFlow Implementation Guide

This guide describes how to configure NetFlow Secure Event Logging (NSEL), how to handle events and syslog messages through NSEL, and how to use NetFlow collectors.

About NSEL

The Cisco ASA supports NetFlow Version 9 services. The ASA and ASASM implementations of NSEL provide a stateful, IP flow tracking method that exports only those records that indicate significant events in a flow. In stateful flow tracking, tracked flows go through a series of state changes. NSEL events are used to export data about flow status and are triggered by the event that caused the state change.

The significant events that are tracked include flow-create, flow-teardown, flow-denied (excluding those flows that are denied by EtherType ACLs), and flow-update. The ASA implementation of NSEL generates periodic NSEL events, called flow-update events, to provide periodic byte counters over the duration of the flow. These events are usually time-driven, which makes them more in line with traditional NetFlow; however, they may also be triggered by state changes in the flow.


NoteThe flow-update event is not available in Version 9.0(1). It is available in Versions 8.4(5), and 9.1(2) and later.


The ASA also exports syslog messages that include the same information. You can disable these syslog messages to avoid performance degradation by generating both NSEL records and syslog messages that represent the same event.

Each NSEL record has an event ID and an extended event ID field, which describes the flow event.

Syslog Messages and NSEL Events

Table 1 lists the syslog messages that have an equivalent NSEL event, event ID, and extended event ID. The extended event ID provides more detail about the event (for example, which ACL—ingress or egress—has denied a flow).


NoteEnabling NetFlow to export flow information makes the syslog messages that are listed inTable 1 redundant. For better performance, we recommend that you disable redundant syslog messages, because the same information is exported through NetFlow. You can enable or disable individual syslog messages by following the procedure in Disable and Reenable NetFlow-related Syslog Messages.


 

Table 1 Syslog Messages and Equivalent NSEL Events

Syslog Message
Description
NSEL Event ID
NSEL Extended Event ID

106100

Generated whenever an ACL is encountered.

1—Flow was created (if the ACL allowed the flow).

3—Flow was denied (if the ACL denied the flow).

0—If the ACL allowed the flow.

1001—Flow was denied by the ingress ACL.

1002—Flow was denied by the egress ACL.

106015

A TCP flow was denied because the first packet was not a SYN packet.

3—Flow was denied.

1004—Flow was denied because the first packet was not a TCP SYN packet.

106023

When a flow was denied by an ACL attached to an interface through the access-group command.

3—Flow was denied.

1001—Flow was denied by the ingress ACL.

1002—Flow was denied by the egress ACL.

302013, 302015, 302017, 302020

TCP, UDP, GRE, and ICMP connection creation.

1—Flow was created.

0—Ignore.

302014, 302016, 302018, 302021

TCP, UDP, GRE, and ICMP connection teardown.

2—Flow was deleted.

0—Ignore.

> 2000—Flow was torn down.

313001

An ICMP packet to the device was denied.

3—Flow was denied.

1003—To-the-box flow was denied because of configuration.

313008

An ICMP v6 packet to the device was denied.

3—Flow was denied.

1003—To-the-box flow was denied because of configuration.

710003

An attempt to connect to the device interface was denied.

3—Flow was denied.

1003—To-the-box flow was denied because of configuration.


NoteWhen NSEL and syslog messages are both enabled, there is no guarantee of chronological ordering between the two logging types.


NSEL Collectors

Each ASA establishes its own connection to the collector(s). The fields in the header of the export packet include the system up time and UNIX time (synchronized across the cluster). These fields are all local to an individual ASA. The NSEL collector uses the combination of the source IP address and source port of the packet to separate different exporters.

Each ASA manages and advertises its template independently. Because the ASA supports in-cluster upgrades, different units may run different image versions at a certain point in time. As a result, the template that each ASA supports may be different.

Bidirectional Flows

Most bidirectional flows are already assembled internally and are considered a single flow. The flow records reported by NSEL on the ASAs describe both directions of the flow. The data records explicitly define the source (initiator) and destination (responder) of the connection, and you can use this information to determine the direction of flow, if required by collector applications. In addition, some NSEL records include two byte counter fields, NF_F_FWD_FLOW_DELTA_BYTES and NF_F_REV_FLOW_DELTA_BYTES, which provide direction-specific traffic data.

Template Updates

RFC 3954, Cisco Systems NetFlow Services Export Version 9, states that templates may be sent to the user either at regular time intervals or after a set number of data records have been exported. These update intervals must be configurable. This implementation supports template updates by time interval only. Template updates based on the number of data records are not supported.

Options Template and Data Records

No options template or data records will be exported. Some fields are supported by show commands in the CLI. Collector applications must issue show commands to obtain additional information about certain fields. In addition, collectors must have unique hostnames and IP addresses; otherwise, the inspection behavior will be unpredictable.

Observation Point and Observation Domain

The ASA is an Observation Domain, with each interface also an Observation Point. Flows that are created through all interfaces are exported, and no option exists to limit or filter the exported data to a specific set of interfaces. Flow that are created by external devices that connect to the ASA are also exported.

Flow Filtering

Only records for certain flows may need to be exported, For example, the ASA can generate NSEL events for flows that match an ACE. You can use this method to restrict the number of NSEL events that are generated for NetFlow. This implementation supports the filtering of NSEL events based on traffic and event type through Modular Policy Framework, with records sent to different collectors.

For example, with two collectors, you can do the following:

  • Log all flow creation events to Collector 1.
  • Log all flow denied events matching ACL1 to Collector 1.
  • Log all events matching ACL1 to Collector 2.

If the Modular Policy Framework is not configured for NetFlow, no NSEL events are generated.

Data Fields

Table 2 lists the data elements that are exported from the ASAs through NSEL. The list of required data elements was arrived at by consolidating the data exported by syslog messages that are generated for events that results in the export of NSEL records.

The columns include the following information:

  • ID—A unique name that represents the field type
  • TYPE—The value assigned for this field type
  • LEN—The length of the field in records exported for the selected ASA
  • DESC—A description of what the field type represents

 

Table 2 Data Records Exported Through NSEL

ID
TYPE
LEN
DESC
Connection ID Field

NF_F_CONN_ID

148

4

An identifier of a unique flow for the device

Flow ID Fields (L3 IPv4)

NF_F_SRC_ADDR_IPV4

8

4

Source IPv4 address

NF_F_DST_ADDR_IPV4

12

4

Destination IPv4 address

NF_F_PROTOCOL

4

1

IP value

Flow ID Fields (L3 IPv6)

NF_F_SRC_ADDR_IPV6

27

16

Source IPv6 address

NF_F_DST_ADDR_IPV6

28

16

Destination IPv6 address

Flow ID Fields (L4)

NF_F_SRC_PORT

7

2

Source port

NF_F_DST_PORT

11

2

Destination port

NF_F_ICMP_TYPE

176

1

ICMP type value

NF_F_ICMP_CODE

177

1

ICMP code value

NF_F_ICMP_TYPE_IPV6

178

1

ICMP IPv6 type value

NF_F_ICMP_CODE_IPV6

179

1

ICMP IPv6 code value

Flow ID Fields (INTF)

NF_F_SRC_INTF_ID

10

2

Ingress IFC SNMP IF index

NF_F_DST_INTF_ID

14

2

Egress IFC SNMP IF index

Mapped Flow ID Fields (L3 IPv4)

NF_F_XLATE_SRC_ADDR_IPV4

225

4

Post NAT Source IPv4 Address

NF_F_XLATE_DST_ADDR_IPV4

226

4

Post NAT Destination IPv4 Address

NF_F_XLATE_SRC_PORT

227

2

Post NATT Source Transport Port

NF_F_XLATE_DST_PORT

228

2

Post NATT Destination Transport Port

Mapped Flow ID Fields (L3 IPv6)

NF_F_XLATE_SRC_ADDR_IPV6

281

16

Post NAT Source IPv6 Address

NF_F_XLATE_DST_ADDR_IPV6

282

16

Post NAT Destination IPv6 Address

Status or Event Fields

NF_F_FW_EVENT

233

1

High-level event code. Values are as follows:

  • 0—Default (ignore)
  • 1—Flow created
  • 2—Flow deleted
  • 3—Flow denied
  • 4—Flow alert
  • 5—Flow update

NF_F_FW_EXT_EVENT

33002

2

Extended event code. These values provide additional information about the event.

Timestamp and Statistics Fields

NF_F_EVENT_TIME_MSEC

323

8

The time that the event occurred, which comes from IPFIX. Use 324 for time in microseconds, and 325 for time in nanoseconds. Time has been counted as milliseconds since 0000 UTC January 1, 1970.

NF_F_FLOW_CREATE_TIME_MSEC

152

8

The time that the flow was created, which is included in extended flow-teardown events in which the flow-create event was not sent earlier. The flow duration can be determined with the event time for the flow-teardown and flow-create times.

NF_F_FWD_FLOW_DELTA_BYTES

231

4

The delta number of bytes from source to destination.

NF_F_REV_FLOW_DELTA_BYTES

232

4

The delta number of bytes from destination to source.

ACL Fields

NF_F_INGRESS_ACL_ID

33000

12

The input ACL that permitted or denied the flow

All ACL IDs are composed of the following three, four-byte values:

  • Hash value or ID of the ACL name
  • Hash value, ID, or line of an ACE within the ACL
  • Hash value or ID of an extended ACE configuration

NF_F_EGRESS_ACL_ID

33001

12

The output ACL that permitted or denied a flow

AAA Fields

NF_F_USERNAME

40000

20

AAA username

NF_F_USERNAME_MAX

40000

65

AAA username of maximum permitted size

Event IDs Field

The Event ID field describes the event that resulted in the NSEL record. Table 3 lists the values for event IDs.

 

Table 3 Values for Event IDs

Event ID
Description

0

Ignore—This value indicates that a field must be ignored and is not used in the current release.

1

Flow created—This value indicates that a new flow was created.

2

Flow deleted—This value indicates that a flow was deleted.

3

Flow denied—This value indicates that a flow was denied.

5

Flow updated—This value indicates that a flow timer went off or a flow was torn down.

Extended Event IDs Field

The extended event ID provides additional information about a particular event. This field includes a product-specific field ID (33002). Table 4 lists the values for extended event IDs.

 

Table 4 Values for Extended Event IDs

Extended Event ID
Event
Description

0

Ignore

This value indicates that the field must be ignored.

> 1000

Flow denied

Values above 1000 represent various reasons for why a flow was denied.

1001

Flow denied

A flow was denied by an ingress ACL.

1002

Flow denied

A flow was denied by an egress ACL.

1003

Flow denied

Possible reasons include the following:

  • An attempt to connect to the ASA interface was denied.
  • The ICMP packet to the device was denied.
  • The ICMPv6 packet to the device was denied.

1004

Flow denied

The first packet on the TCP was not a TCP SYN packet.

> 2000

Flow deleted

Values above 2000 represent various reasons why a flow was terminated.

Event Time Field

Each NSEL data record has the event time field (NF_F_EVENT_TIME_MSEC), which is the time that the event occurred in milliseconds. The NetFlow packet may consist of multiple events; however, the time that the packet is sent does not represent the time that the event occurred, because the NetFlow service waits for multiple events to pack the NetFlow packet.


NoteDifferent events in the life of a flow may be issued in separate NetFlow packets and may arrive out-of-order at the collector. For example, the packet containing a flow teardown event may reach the collector before the packet containing a flow creation event. As a result, it is important that collector applications use the Event Time field to correlate events.


Data Records and Templates

Templates describe the format of data records that are exported through NetFlow. Each flow event has several record formats or templates associated with it:

  • There are different templates for different events.
  • There are different templates for IPv4 and IPv6 flows under each event type.
  • There are different templates for IPV44, IPV46, IPV64, and IPV66 flows under each event type.
  • The flow creation event has different templates, which are based on the size of the username field associated with the flow. Different templates are required because the size of string fields is fixed in NetFlow. Having a single template with the largest possible size for string results is a waste of bandwidth, because most strings are far shorter than the maximum value. Two types of username fields are defined, which result in two types of templates in each category.

A common username size for usernames that are less than 20 characters

A maximum username size for usernames that are up to a maximum of 65 characters

Each template has the Event Type and Extended Event Type fields, which can interpret or act on the event.

  • The flow denied and flow deletion events have IPV46 and IPV64 templates in which the destination IP address has been translated by a NAT rule, but the source IP address has not been translated by a NAT rule; this results in different IP versions between the source and destination IP addresses. The source and destination NAT rules are not applied at the same time (the destination NAT rule is applied first), so it is possible for a NetFlow record to be generated before both NAT rules are applied or when only one NAT rule is available.

These partial NAT translation templates are not needed for flow creation and delayed flow creation events because both source and destination IP addresses need to be the same IP version for a flow to be created.


Note Template definitions are sent to all collectors, and you should use these IDs and definitions to parse data records.


Templates for Flow Creation Events

Flow creation events indicate that a flow has been created by the ASA. This event is also a log of flows that the ASA allows. Table 5 describes the templates to use for flow creation events.

 

Table 5 Templates for Flow Creation Events

Description
Fields

IPv44 flow creation event with common username size (20 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME

IPv44 flow creation event with maximum username size (65 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME_MAX

IPv66 flow creation with common username size (20 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME

IPv66 flow creation with maximum username size (65 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME_MAX

IPv46 flow creation event with common username size (20 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME

IPv46 flow creation event with maximum username size (65 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME_MAX

IPv64 flow creation with common username size (20 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME

IPv64 flow creation with maximum username size (65 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME_MAX

Delays for Flow Creation Events

For short-lived flows, NSEL collection devices would benefit from processing a single event instead of these two events—flow-create and flow-teardown. So a configurable CLI parameter is provided to delay sending of the flow-create event. If the timer fires, the flow-create event is sent. However, if the flow is torn down before the timer expires, only the flow-teardown event is sent; no flow-create event is sent.

The flow-teardown event is extended and includes all information regarding the flow; no information is lost. New templates are introduced to accommodate the extended flow-teardown events.

Templates for Extended Flow Teardown Events

Table 6 describes the templates that are used for extended flow-teardown events.

 

Table 6 Templates for Extended Flow Teardown Events

Description
Fields

Extended IPv44 flow teardown with common username size (20 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME

Extended IPv44 flow teardown with maximum username size (65 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC,NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME_MAX

Extended IPv66 flow teardown with common username size (20 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME

Extended IPv66 flow teardown with maximum username size (65 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME_MAX

Extended IPv46 flow teardown with common username size (20 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME

Extended IPv46 flow teardown with maximum username size (65 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC,NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME_MAX

Extended IPv64 flow teardown with common username size (20 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME

Extended IPv64 flow teardown with maximum username size (65 chars)

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID, NF_F_USERNAME_MAX

Templates for Flow Denied Events

Flow denied events indicate that a flow has been denied. Table 7 describes the templates that are used for flow denied events.

 

Table 7 Templates for Flow Denied Events

Description
Fields

IPv44 flow denied

NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID

IPv4 flow denied, no xlate fields present

NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID

IPv66 flow denied

NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_ICMP_CODE_IPV6, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID

IPv6 flow denied, no xlate fields present

NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID

IPv46 flow denied

NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID

IPv46 flow denied, no source translation

NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID

IPv64 flow denied

NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID

IPv64 flow denied, no source translation

NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_INGRESS_ACL_ID, NF_F_EGRESS_ACL_ID

Templates for Flow Teardown Events

Flow teardown events indicate that a flow has been terminated. Table 8 describes the templates that are used for flow teardown events.

 

Table 8 Templates for Flow Teardown Events

Description
Fields

IPv44 flow teardown

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC

IPv66 flow teardown

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC

IPv46 flow teardown

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC

IPv46 flow teardown, no source translation

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV4, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV4, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE, NF_F_ICMP_CODE, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV6, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC

IPv64 flow teardown

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV4, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC

IPv64 flow teardown, no source translation

NF_F_CONN_ID, NF_F_SRC_ADDR_IPV6, NF_F_SRC_PORT, NF_F_SRC_INTF_ID, NF_F_DST_ADDR_IPV6, NF_F_DST_PORT, NF_F_DST_INTF_ID, NF_F_PROTOCOL, NF_F_ICMP_TYPE_IPV6, NF_F_ICMP_CODE_IPV6, NF_F_XLATE_SRC_ADDR_IPV6, NF_F_XLATE_DST_ADDR_IPV4, NF_F_XLATE_SRC_PORT, NF_F_XLATE_DEST_PORT, NF_F_FW_EVENT, NF_F_FW_EXT_EVENT, NF_F_EVENT_TIME_MSEC, NF_F_FWD_FLOW_DELTA_BYTES, NF_F_REV_FLOW_DELTA_BYTES, NF_F_FLOW_CREATE_TIME_MSEC

Templates for Flow Update Events

Flow update events indicate that a flow update timer has gone off for a flow or a flow was torn down. This event functions as a periodic byte counter for flow traffic. Flow update events also use the same templates as flow teardown events, excluding those for partial NAT translation. The NF_F_FWD_FLOW_DELTA_BYTES and NF_F_REV_FLOW_DELTA_BYTES fields contain the byte counts since the last timer interval. The NF_F_FW_EXT_EVENT field is not used and is ignored in flow update records. See Table 8 for the templates that are used for flow teardown events.

Flow Update (at timer) and Flow Update (at teardown) Events

The ASA sets flow update timers for flows passing through it, and when the timers goes off, NSEL issues flow update (at timer) records. If there is no activity on the flow for the configured time interval, no flow update (at timer) records are sent for that interval. A flow update (at teardown) record is sent with a flow teardown record to capture the traffic in the last time interval. No flow update (at teardown) record is sent if there is no traffic on the flow for the last interval. In addition, no flow update (at teardown) record is sent for short-lived flows (that is, if teardown occurs before the first flow update (at timer) event occurs).

The flow update timer is not set nor is it ever set again if at the time of flow creation, no flow update collectors are configured or if during a flow update event, the flow update collectors are removed. Under these conditions, no flow update (at timer) event or flow update (at teardown) event is seen again.

Flow Update Records and Failover

An attempt to keep flow update records consistent before and after failover is made. After failover occurs, all flow update records are based on the last update from the previously active ASA. This update occurs every 15 seconds as long as traffic is flowing. Inaccuracies may appear in flow update records if failover pairs are brought up at different times, or if failover occurs before the active ASA has a chance to send a periodic update to the standby ASA.

Flow Update Events and Clustering

One major divergence occurs in how flow update events interact with failover and how they interact with clustering. In clustering, before ownership change, the flow director has a stub flow copy of the original flow, which would not have the active refresh timer set. Only after the original flow owner goes down will a full flow copy be generated with the active refresh timer set. This means it is highly likely that a noticeable time offset will occur between when the flow update timer goes off on the original flow owner and when the flow update timer goes off on the new flow owner.

After flow ownership changes in a cluster, all flow-update records are based on the last update that the flow director received. Flow information is updated every 15 seconds as long as there is traffic. Maintenance of up-to-date flow information uses the same methods as those provided for failover.

NetFlow and Failover

NetFlow data records and templates are only sent from the active (primary) ASA in an active-standby failover pair. The standby (secondary) ASA does not send any NetFlow-related information. However, after failover, the secondary ASA starts to send templates and NetFlow records for any replicated or new flows. The source IP address for each NetFlow collector connection is the same between the two ASAs, but the source port varies. This means that the NetFlow collectors are capable of differentiating packets sent from the primary unit and the secondary unit.

In an active-active failover pair, both ASAs may send NetFlow data records and templates simultaneously. Only the active unit per context sends the NetFlow packets, but the standby unit does not; much like in active-standby scenarios. The source IP address for each NetFlow collector connection is the same for an ASA context and its copy, but the source port varies.

Each ASA node (context) in the failover pair establishes its own connection to the NetFlow collector(s) and advertises its templates independently. The collector uses the source IP address and source port of the packet to differentiate between the NetFlow exporters.

NetFlow and Clustering

NetFlow is supported on both management and regular data interfaces; however, we recommend that you use management interfaces. When the NetFlow collector connection is configured on management-only interfaces, each ASA in the cluster uses its own per-unit source IP address and source port to send NetFlow packets. NetFlow may be used with both data interfaces in layer 2 mode and layer 3 mode. For data interfaces in layer 2 mode, each ASA in the cluster has the same source IP address, but the source port is different. Although layer 2 mode is designed to make a cluster appear as a single device, a NetFlow collector can differentiate between the different nodes in the cluster. For data interfaces in layer 3 mode, NetFlow operates the same way as management-only interfaces do.

Each ASA node in the cluster establishes its own connection to the NetFlow collector(s) and advertises its templates independently. The collector uses the source IP address and source port of the packet to differentiate between the NetFlow exporters.

Decoding Device Fields Through the CLI

To decode some of the field values that the ASA populates, direct interaction with the device may be required. We recommend that you use a dynamic mechanism such as expect scripts to obtain the required information from the CLI of the device that issued the event.

The device supports console, Telnet, and SSH secure shell access; however, SSH is the recommended method because of performance and security.

Interface ID Fields

You can also decode the Interface ID fields using SNMP GET requests from the device interface MIB. This is the only field that has MIB support.

You may use the show interface detail command to obtain a list of all the interfaces on the device. This output includes a line under each interface that corresponds to the Interface ID value sent in the NetFlow fields. In the following example, the interface number is 8.

ciscoasa(config)# show interface filter-outside detail
Interface GigabitEthernet4/3 "filter-outside", is up, line protocol is up
Hardware is i82571EB 4CU rev06, BW 1000 Mbps, DLY 10 usec
Auto-Duplex(Full-duplex), Auto-Speed(100 Mbps)
MAC address 0015.1715.59c7, MTU 1500
IP address 209.165.200.254, subnet mask 255.255.255.224
532594 packets input, 88376018 bytes, 0 no buffer
Received 3 broadcasts, 0 runts, 0 giants
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
0 L2 decode drops
675393 packets output, 53208679 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
0 late collisions, 0 deferred
0 input reset drops, 0 output reset drops
input queue (curr/max packets): hardware (36/511) software (0/0)
output queue (curr/max packets): hardware (59/68) software (0/0)
Traffic Statistics for "filter-outside":
532594 packets input, 78636500 bytes
675393 packets output, 40866215 bytes
10837 packets dropped
1 minute input rate 0 pkts/sec, 0 bytes/sec
1 minute output rate 0 pkts/sec, 0 bytes/sec
1 minute drop rate, 0 pkts/sec
5 minute input rate 0 pkts/sec, 0 bytes/sec
5 minute output rate 0 pkts/sec, 0 bytes/sec
5 minute drop rate, 0 pkts/sec
Control Point Interface States:
Interface number is 8
Interface config status is active
Interface state is active
 

ACL ID Fields

The 12-byte raw ACL ID must be divided into its three constituent parts, as follows:

  • The first four bytes are the ACL Name ID.
  • The next four bytes are the ACL Entry ID (ACE)/Object-Group ID.
  • The final four bytes are the Extended ACL Entry ID.

These individual values can be looked up in the output of the show access-list command from the ASA. The ACL Name ID is at the end of the ACL first line in this output. The ACE ID is at the end of each individual ACL entry line.


NoteIf you use an object-group in an access list, then the second four-byte ID is not actually the ACE ID; it is the Object-Group ID. The Extended ACE ID (the final four-byte part) refers to the actual individual ACL Entry ID. The following example shows these entries:


ciscoasa(config)# show access-list
access-list cached ACL log flows: total 0, denied 0 (deny-flow-max 4096)
alert-interval 300
access-list foo; 2 elements; name hash: 0x102154c1
access-list foo line 1 extended permit tcp object-group host_grp_1 any eq www 0xd0e5806e
access-list foo line 1 extended permit tcp host 209.165.200.254 any eq www (hitcnt=4) 0x7e5ad93b
access-list foo line 1 extended permit tcp host 209.165.201.1 any eq www (hitcnt=0) 0xe0c1846b
access-list bar; 1 elements; name hash: 0x5da9bb69
access-list bar line 1 extended deny tcp any any (hitcnt=41) 0x84434b4b
 

This example is similar to the example shown in Example 2: Denied Flow on Egress with PAT Interface. In the denied flow example, the ACL IDs are divided into their constituent parts as follows:

  • NF_F_INGRESS_ACL_ID: InAcl: 0x102154c1d0e5806e7e5ad93b

where 0x102154c1 are the first four bytes, 0xd0e5806e are the second four bytes, and 0x7e5ad93b are the final four bytes.

  • NF_F_EGRESS_ACL_ID: 0x5da9bb6984434b4b00000000

where 0x5da9bb69 are the first four bytes, 0x84434b4b are the second four bytes, and 0x00000000 are the final four bytes.


NoteEach of these IDs corresponds to lines from theshow access-list command example.


From these IDs, you can deduce that access-list foo was applied on the input interface, and that access-list bar was applied on the output interface. That information is also available through the show run access-group command, but the added benefit of these ACL IDs is that you can identify the individual ACE that caused the permit or deny action. Because this flow was denied on egress (determined from the extended event code), you know that the ingress ACL ID identifies the ACE line that permitted the flow and that the egress ACL ID identifies the ACE that denied the flow.

Event Codes

You must hard code event codes into the collector, because the ASA only issues four different high-level event types (creation, teardown, denial, and update).

Extended Event Codes

Of the four high-level event codes, only two have extended event codes: the flow denial and flow teardown event types. For the flow denied event, the list of extended event codes in Table 4 should suffice to determine the reason why the flow was denied. However, for the flow teardown event, there are too many event codes to list in this document, and the set of reasons is quite fluid.

Guidelines for NSEL

Supported Features

  • IPv6 for the class-map , match access-list , and match any commands.
  • UDP payloads only.

Additional Guidelines

  • If you have previously configured flow-export actions using the flow-export enable command, and you upgrade to a later version, then your configuration is automatically converted to the new Modular Policy Framework flow-export event-type command, which is described under the policy-map command.
  • If you have previously configured flow-export actions using the flow-export event-type all command, and you upgrade to a later version, NSEL automatically begins issuing flow-update records when necessary.
  • Flow-export actions are not supported in interface-based policies. You can configure flow-export actions in a class-map only with the match access-list , match any , or class-default commands. You can only apply flow-export actions in a global service policy.
  • You must use the threat detection feature to view bandwidth usage for NetFlow records (not available in real-time).
  • Make sure that you assign unique IP address and hostnames throughout the NetFlow configuration.
  • For more implementation details, see the following articles:

https://supportforums.cisco.com/docs/DOC-6113

https://supportforums.cisco.com/docs/DOC-6114

Configure NSEL Collectors (CLI)

You must have at least one configured collector before you can use NSEL, and you must configure NSEL collectors before you can configure filters via Modular Policy Framework.

To configure an NSEL collector, perform the following steps:

Procedure


Step 1 Add an NSEL collector to which NetFlow packets may be sent.

flow-export destination interface-name ipv4-address | hostname udp-port
 

Example:

ciscoasa(config)# flow-export destination inside 209.165.200.225 2002
 

The destination keyword indicates that a NSEL collector is being configured. The interface-name argument is the name of the ASA and ASA Services Module interface through which the collector is reached. The ipv4-address argument is the IP address of the machine running the collector application. The hostname argument is the destination IP address or name of the collector. The udp-port argument is the UDP port number to which NetFlow packets are sent.

You can configure a maximum of five collectors. After a collector is configured, template records are automatically sent to all configured NSEL collectors.


Note Make sure that collector applications use the Event Time field to correlate events.


Step 2 Repeat the first step to configure more collectors.


 

Configure Flow-Export Actions Through Modular Policy Framework

To configure flow-export actions through Modular Policy Framework, perform the following steps:

Procedure


Step 1 Define the class map that identifies traffic for which NSEL events need to be exported.

class-map flow_export_class
 

Example:

ciscoasa(config-pmap)# class-map flow_export_class
 

The flow_export_class argument is the name of the class map.

Step 2 Choose one of the following options:

    • Configure the ACL to match specific traffic.
match access-list flow_export_acl
 

Example:

ciscoasa(config-cmap)# match access-list flow_export_acl
 

The flow_export_acl argument is the name of the ACL.

    • Match any traffic.
match any
 

Example:

ciscoasa(config-cmap)# match any
 

Step 3 Define the policy map to apply flow-export actions to the defined classes.

policy-map flow_export_policy
 

Example:

ciscoasa(config)# policy-map flow_export_policy
 

The flow_export_policy argument is the name of the policy map.

If you create a new policy map and apply it globally according to Step 6, the remaining inspection policies are deactivated.

Alternatively, enter the class flow_export_class command after the policy-map global_policy command to insert a NetFlow class in the existing policy.

See the firewall configuration guide or more information about creating or modifying the Modular Policy Framework.

Step 4 Define the class to apply flow-export actions.

class flow_export_class
 

Example:

ciscoasa(config-pmap)# class flow_export_class
 

The flow_export_class argument is the name of the class.

Step 5 Configure a flow-export action.

flow-export event-type event-type destination flow_export_host1 [flow_export_host2]
 

Example:

ciscoasa(config-pmap-c)# flow-export event-type all destination 209.165.200.230
 

The event_type keyword is the name of the supported event being filtered. The destination keyword is the IP address of the configured collector. The flow_export_host argument is the IP address of a host.

Step 6 Add the service policy globally.

service-policy flow_export_policy global
 

Example:

ciscoasa(config)# service-policy flow_export_policy global
 

The flow_export_policy argument is the name of the policy map.


 

Configure Template Timeout Intervals

To configure template timeout intervals, perform the following steps:

Procedure


Step 1 Specify the interval at which template records are sent to all configured output destinations.

flow-export template timeout-rate minutes
 

Example:

ciscoasa(config)# flow-export template timeout-rate 15
 

The template keyword indicates the template-specific configurations. The timeout-rate keyword specifies the time before templates are resent. The minutes argument specifies the time interval in minutes at which the templates are resent. The default value is 30 minutes.


 

Change the Time Interval for Sending Flow-Update Events to a Collector

To change the time interval for sending flow-update events to a collector, perform the following steps:

Procedure


Step 1 Configure NetFlow parameters for active connections.

flow-export active refresh-interval value
 

Example:

ciscoasa(config)# flow-export active refresh-interval 30
 

The value argument specifies the time interval between flow-update events in minutes. Valid values are from 1 - 60 minutes. The default value is 1 minute.

If you have already configured the flow-export delay flow-create command, and you then configure the flow-export active refresh-interval command with an interval value that is not at least 5 seconds more than the delay value, the following warning message appears at the console:

WARNING: The current delay flow-create value configuration may cause flow-update events to appear before flow-creation events.
 

If you have already configured the flow-export active refresh-interval command, and you then configure the flow-export delay flow-create command with a delay value that is not at least 5 seconds less than the interval value, the following warning message appears at the console:

WARNING: The current delay flow-create value configuration may cause flow-update events to appear before flow-creation events.
 


 

Delay the Sending of Flow-Create Events

To delay the sending of flow-create events, perform the following steps:

Procedure


Step 1 Delay the sending of a flow-create event by the specified number of seconds.

flow-export delay flow-create seconds
 

Example:

ciscoasa(config)# flow-export delay flow-create 10
 

The seconds argument indicates the amount of time allowed for the delay in seconds. If this command is not configured, there is no delay, and the flow-create event is exported as soon as the flow is created. If the flow is torn down before the configured delay, the flow-create event is not sent; an extended flow teardown event is sent instead.


 

Disable and Reenable NetFlow-related Syslog Messages

To disable and reenable NetFlow-related syslog messages, perform the following steps:

Procedure


Step 1 Disable syslog messages that have become redundant because of NSEL.

logging flow-export-syslogs disable
 

Example:

ciscoasa(config)# logging flow-export-syslogs disable
 

Note Although you execute this command in global configuration mode, it is not stored in the configuration. Only the no logging message xxxxxx commands are stored in the configuration.


Step 2 Reenable syslog messages individually, where xxxxxx is the specified syslog message that you want to reenable.

logging message xxxxxx
 

Example:

ciscoasa(config)# logging message 302013
 

Step 3 Reenable all NSEL events at the same time.

logging flow-export-syslogs enable
 

Example:

ciscoasa(config)# logging flow-export-syslogs enable
 


 

Reset Runtime Counters

To reset runtime counters, perform the following steps:

Procedure


Step 1 Reset all runtime counters for NSEL to zero.

clear flow-export counters
 

Example:

ciscoasa# clear flow-export counters
 


 

Enable NetFlow (ASDM)

To enable NetFlow, perform the following steps:

Procedure


Step 1 Choose Configuration > Device Management > Logging > NetFlow .

Step 2 Enter the template timeout rate, which is the interval (in minutes) at which template records are sent to all configured collectors. The default value is 30 minutes.

Step 3 Enter the flow update interval, which specifies the time interval between flow-update events in minutes. Valid values are from 1 - 60 minutes. The default value is 1 minute.

Step 4 Check the Delay export of flow creation events for short-lived flows check box, then enter the number of seconds for the delay in the Delay By field to delay the export of flow-creation events and process a single flow-teardown event instead of a flow-creation event and a flow-teardown event,

Step 5 Specify the collector(s) to which NetFlow packets will be sent. You can configure a maximum of five collectors. Click Add to display the Add NetFlow Collector dialog box to configure a collector, and perform the following steps:

a. Choose the interface to which NetFlow packets will be sent from the drop-down list.

b. Enter the IP address or hostname and the UDP port number in the associated fields.

c. Click OK .

Step 6 Repeat Step 5 to configure more collectors.

Step 7 When NetFlow is enabled, certain syslog messages become redundant. To maintain system performance, we recommend that you disable all redundant syslog messages, because the same information is exported through NetFlow. Check the Disable redundant syslog messages check box to disable all redundant syslog messages. Click Show Redundant Syslog Messages to display the redundant syslog messages and their status.

The Redundant Syslog Messages dialog box appears. The Syslog ID field displays the redundant syslog message numbers. The Disabled field indicates whether or not the specified syslog message is disabled. Click OK to close this dialog box.

Choose Configuration > Device Management > Logging > Syslog Setup to disable individual redundant syslog messages.

Step 8 Click Apply to save your changes, or click Reset to enter new settings.


 

Match NetFlow Events to Configured Collectors

To match a NetFlow event with any configured collector, perform the following steps:


Step 1 Choose Configuration > Firewall > Service Policy Rules .

Step 2 To add a service policy rule, perform the following steps:

a. Click Add to display the Add Service Policy Rule Wizard . See the firewall configuration guide for more information about service policy rules.

b. Click the Global - applies to all interfaces radio button to apply the rule to the global policy. Click Next .

c. Check the Source and Destination IP Address (uses ACL) check box or the Any traffic check box as traffic match criteria, or click the Use class-default as traffic class radio button. Click Next to continue to the Rule Actions screen.


Note NetFlow actions are available only for global service policy rules and are applicable only to the class-default traffic class and to traffic classes with traffic match criteria of “Source and Destination IP Address (uses ACL)” or “Any traffic.”


Step 3 Click the NetFlow tab in the Rule Actions screen.

Step 4 Click Add to display the Add Flow Event dialog box and specify flow events, then perform the following steps:

a. Choose the flow event type from the drop-down list. Available events are created, torn down, denied, updated, or all.


Note The flow-update event is not available in Version 9.0(1). It is available in Versions 8.4(5), and 9.1(2) and later.


b. Choose collectors to which you want events sent by checking the corresponding check boxes in the Send column.

c. Click Manage to display the Manage NetFlow Collectors dialog box, in which you can add, edit or delete collectors, or configure other NetFlow settings (for example, syslog messages). Click OK to close the Manage NetFlow Collectors dialog box and return to the Add Flow Event dialog box. See Step 5 of Enable NetFlow (ASDM) for more information about configuring collectors.

Step 5 Click OK to close the Add Flow Event dialog box and return to the NetFlow tab.

Step 6 Click Finish to exit the wizard.

Step 7 To edit a NetFlow service policy rule, perform the following steps:

a. Select it in the Service Policy Rules table, and click Edit .

b. Click the Rule Actions tab, then click the NetFlow tab.


 

Monitoring NSEL

You can use syslog messages to help troubleshoot errors or monitor system usage and performance.You can view real-time syslog messages that have been saved in the log buffer in a separate window, which include an explanation of the message, details about the message, and recommended actions to take, if necessary, to resolve an error. See Syslog Messages and NSEL Events for more information.

To monitor NSEL, enter one of the following commands:

 

Command
Purpose

show flow-export counters

Shows runtime counters, including statistical data and error data, for NSEL.

show logging flow-export-syslogs

Lists all syslog messages that are captured by NSEL events.

show running-config flow-export

Shows the currently configured NetFlow commands.

show running-config logging

Shows disabled syslog messages, which are redundant syslog messages because they export the same information through NetFlow.

To monitor NSEL in ASDM, perform the following steps:


Step 1 In ASDM, choose Tools > Command Line Interface.

Step 2 Choose one of the following options:

    • In the Command field, enter the show flow-export counters command to display runtime counters, including statistical data and error data for NSEL, then click Send .
    • In the Command field, enter the show logging flow-export-syslogs command to list all syslog messages that are captured by NSEL events, then click Send .
    • In the Command field, enter the show running-config flow-export command to display the currently configured NetFlow commands, then click Send .
    • In the Command field, enter the show running-config logging command to display disabled syslog messages, which are redundant because they export the same information through NetFlow, then click Send .


 

Examples for NSEL (CLI)

The following examples show flows that generate events and include information about how to implement collector support for NSEL fields in the ASA.

Example 1: Allowed Flow with PAT Interface

This example shows an allowed flow that uses the PAT interface. The output interface IP address is 209.165.200.225. The user is authenticated as User A. No ACLs are specified; however, the flow is outbound, so it is allowed by default. According to Figure 1 and the description provided, a flow creation event would be issued.

Figure 1 Example of an Allowed Flow with a PAT Interface

 

 

The resulting NSEL record would include the following fields and values:

 

Field
Value

NF_F_CONN_ID

xxxx

NF_F_SRC_ADDR_IPV4

209.165.200.254

NF_F_SRC_PORT

56789

NF_F_SRC_INTF_ID

1

NF_F_DST_ADDR_IPV4

209.165.200.225

NF_F_DST_PORT

80

NF_F_DST_INTF_ID

0

NF_F_PROTOCOL

6

NF_F_ICMP_TYPE

0

NF_F_ICMP_CODE

0

NF_F_XLATE_SRC_ADDR_IPV4

209.165.201.1

NF_F_XLATE_DST_ADDR_IPV4

209.165.200.225

NF_F_XLATE_SRC_PORT

1024

NF_F_XLATE_DST_PORT

80

NF_F_FW_EVENT

1

NF_F_FW_EXT_EVENT

0

NF_F_EVENT_TIME_MSEC

YYYYYYYY

NF_F_INGRESS_ACL_ID

0

NF_F_EGRESS_ACL_ID

0

NF_F_USERNAME

User A

Example 2: Denied Flow on Egress with PAT Interface

This example shows a denied flow through an egress ACL that uses the PAT interface. The output interface IP address is 209.165.200.225. The user is authenticated as User A. An input ACL (foo) allows the flow, but an output ACL (bar) denies the flow. The input ACL (foo) is specified with an object group:

ciscoasa# object-group network host_grp_1
network-object host 209.165.200.254
network-object host 209.165.201.1
ciscoasa(config)# access-list foo extended permit tcp object-group host_grp_1 any eq www
ciscoasa(config)# access-list bar extended deny tcp any any
ciscoasa(config)# access-group foo in interface inside
ciscoasa(config)# access-group bar out interface outside
 

According to Figure 1 and the description provided, a flow denied event would be issued.

The resulting NSEL record would include the following fields and values:

 

Field
Value

NF_F_SRC_ADDR_IPV4

209.165.200.254

NF_F_SRC_PORT

37518

NF_F_SRC_INTF_ID

7

NF_F_DST_ADDR_IPV4

209.165.200.225

NF_F_DST_PORT

80

NF_F_DST_INTF_ID

8

NF_F_PROTOCOL

6

NF_F_ICMP_TYPE

0

NF_F_ICMP_CODE

0

NF_F_XLATE_SRC_ADDR_IPV4

209.165.201.1

NF_F_XLATE_DST_ADDR_IPV4

209.165.200.225

NF_F_XLATE_SRC_PORT

48264

NF_F_XLATE_DST_PORT

80

NF_F_FW_EVENT

3

NF_F_FW_EXT_EVENT

1002 (egress ACL)

NF_F_EVENT_TIME_MSEC

1187374131808

NF_F_INGRESS_ACL_ID

0x102154c1d0e5806e7e5ad93b

NF_F_EGRESS_ACL_ID

0x5da9bb6984434b4b00000000

NF_F_USERNAME

User A

Example 3: Filtering NSEL Events

These examples show how to filter NSEL events, with the specified collectors already configured:

  • flow-export destination inside 209.165.200.2055
  • flow-export destination outside 209.165.201.29 2055
  • flow-export destination outside 209.165.201.27 2055

Log all events between hosts 209.165.200.224 and hosts 209.165.201.224 to 209.165.200.230, and log all other events to 209.165.201.29:

ciscoasa(config)# access-list flow_export_acl permit ip host 209.165.200.224 host 209.165.201.224
ciscoasa(config)# class-map flow_export_class
ciscoasa(config-cmap)# match access-list flow_export_acl
ciscoasa(config)# policy-map flow_export_policy
ciscoasa(config-pmap)# class flow_export_class
ciscoasa(config-pmap-c)# flow-export event-type all destination 209.165.200.230
ciscoasa(config-pmap)# class class-default
ciscoasa(config-pmap-c)# flow-export event-type all destination 209.165.201.29
ciscoasa(config)# service-policy flow_export_policy global
 

Log flow-create events to 209.165.200.230, flow-teardown events to 209.165.201.29, flow-denied events to 209.165.201.27, and flow-update events to 209.165.200.230:

ciscoasa(config)# policy-map flow_export_policy
ciscoasa(config-pmap)# class class-default
ciscoasa(config-pmap-c)# flow-export event-type flow-creation destination 209.165.200.230
ciscoasa(config-pmap-c)# flow-export event-type flow-teardown destination 209.165.201.29
ciscoasa(config-pmap-c)# flow-export event-type flow-denied destination 209.165.201.27
ciscoasa(config-pmap-c)# flow-export event-type flow-update destination 209.165.200.230
ciscoasa(config)# service-policy flow_export_policy global
 

Log flow-create events between hosts 209.165.200.224 and 209.165.200.230 to 209.165.201.29, and log all flow-denied events to 209.165.201.27:

ciscoasa(config)# access-list flow_export_acl permit ip host 209.165.200.224 host 209.165.200.230
ciscoasa(config)# class-map flow_export_class
ciscoasa(config)# match access-list flow_export_acl
ciscoasa(config)# policy-map flow_export_policy
ciscoasa(config-pmap)# class flow_export_class
ciscoasa(config-pmap-c)# flow-export event-type flow-creation destination 209.165.200.29
ciscoasa(config-pmap-c)# flow-export event-type flow-denied destination 209.165.201.27
ciscoasa(config-pmap)# class class-default
ciscoasa(config-pmap-c)# flow-export event-type flow-denied destination 209.165.201.27
ciscoasa(config)# service-policy flow_export_policy global

Note You must enter the following command:

ciscoasa(config-pmap-c)# flow-export event-type flow-denied destination 209.165.201.27

for flow_export_acl, because traffic is not checked after the first match, and you must explicitly define the action to log flow-denied events that match flow_export_acl.


Log all traffic except traffic between hosts 209.165.201.27 and 209.165.201.50 to 209.165.201.27:

ciscoasa(config)# access-list flow_export_acl deny ip host 209.165.201.27 host 209.165.201.50
ciscoasa(config)# access-list flow_export_acl permit ip any any
ciscoasa(config)# class-map flow_export_class
ciscoasa(config-cmap)# match access-list flow_export_acl
ciscoasa(config)# policy-map flow_export_policy
ciscoasa(config-pmap)# class flow_export_class
ciscoasa(config-pmap-c)# flow-export event-type all destination 209.165.201.27
ciscoasa(config)# service-policy flow_export_policy global
 

History for NSEL

 

Table 9 History for NSEL

Feature Name
Platform Releases
Feature Information

NetFlow

8.1(1)

The NetFlow feature enhances the ASA logging capabilities by logging flow-based events through the NetFlow protocol. NetFlow Version 9 services are used to export information about the progression of a flow from start to finish. The NetFlow implementation exports records that indicate significant events in the life of a flow. This implementation is different from traditional NetFlow, which exports data about flows at regular intervals. The NetFlow module also exports records about flows that are denied by ACLs. You can configure an ASA 5580 to send the following events using NetFlow: flow create, flow teardown, and flow denied (only flows denied by ACLs are reported).

We introduced the following commands: clear flow-export counters, flow-export enable, flow-export destination, flow-export template timeout-rate, logging flow-export syslogs enable, logging flow-export syslogs disable, show flow-export counters, show logging flow-export-syslogs .

We introduced the following screen: Configuration > Device Management > Logging > NetFlow.

NetFlow Filtering

8.1(2)

You can filter NetFlow events based on traffic and event type, then send records to different collectors. For example, you can log all flow-create events to one collector, and log flow-denied events to a different collector.

We modified the following commands: class, class-map, flow-export event-type destination, match access-list, policy-map, service-policy .

For short-lived flows, NetFlow collectors benefit from processing a single event instead of two events: flow create and flow teardown. You can configure a delay before sending the flow-create event. If the flow is torn down before the timer expires, only the flow teardown event is sent. The teardown event includes all information regarding the flow; no loss of information occurs.

We introduced the following command: flow-export delay flow-create .

We modified the following screen: Configuration > Firewall > Service Policy Rules.

NSEL

8.2(1)

The NetFlow feature has been ported to all available models of ASAs.

Clustering

9.0(1)

The NetFlow feature supports clustering.

NSEL

A new NetFlow error counter, source port allocation failure, has been added.

We modified the following command: show flow-export counters .

Note The flow-update event feature is not available in Version 9.0(1).

NSEL

9.1(2)

Flow-update events have been introduced to provide periodic byte counters for flow traffic. You can change the time interval at which flow-update events are sent to the NetFlow collector. You can filter to which collectors flow-update records will be sent.

We introduced the following command: flow-export active refresh-interval .

We modified the following command: flow-export event-type .

We modified the following screens: Configuration > Firewall > Service Policy Rules > Add Service Policy Rule Wizard - Rule Actions > NetFlow > Add Flow Event
Configuration > Device Management > Logging > NetFlow.