IPMatchList Command

Reference Documentation

Intel® PAC
Napatech SmartNIC
Content Type
Reference Information
Capture Software Version
Link™ Capture Software 12.9
Napatech Software Suite: IPMatchList Command

This section specifies the syntax and semantics for the IPMatchList command.

Supported Options Per Feature Set

Supported Feature Sets
Options List Capacity   IPv4: 360001
IPv6: 75001


  1. Guaranteed capacity is 36000 for single IPv4 addresses or 7500 for single IPv6 addresses. By a single IP address is understood an exact address without wildcard bits. In addition to single addresses a number of masked addresses can be stored, i.e. addresses with wildcard bits. Guaranteed capacity is 864 masked IPv4 addresses or 216 masked IPv6 addresses. If both IPv4 and IPv6 addresses are stored the capacity of the exact and masked addresses drops accordingly, for example, the default configuration for masked addresses allows 288 IPv4 and 144 IPv6 addresses to be stored at the same time. Use the KmTcamConfig setting in the ntservice.ini file to tailor the key store to your needs.

The syntax for the IP match list command is shown below.

<IPMatchListAction>         ::= 'IPMatchList' [ '[' <IPMatchListOptionSpec> ']' ] '=' <IPMatchListSpec>
<IPMatchListOptionSpec>     ::= <IPMatchListOption> [ ';' <IPMatchListOptionSpec> ]
<IPMatchListOption>         ::= ( 'Port' '=' <PortNumberSpec> ) |
                                ( 'KeySet' = <KeySetId> ) |
                                ( 'Tag' '=' <Identifier> )
<IPMatchListSpec>   ::= <IPAddrType> '==' <IPAddrList> | <IPAddrMask> | <IPAddrRange>
<IPAddrType>        ::= 'IPv4Addr' | 'IPv6Addr'
<IPAddrList>        ::= <IPv4AddrValue> { ',' <IPv4AddrValue> ] }
                        <IPv6AddrValue> { ',' <IPv6AddrValue> }
<IPAddrMask>        ::= '{' <IPv4AddrMask> ':' <IPv4AddrValue> '}' |
                        '{' <IPv6AddrMask> ':' <IPv6AddrValue> '}'
<IPAddrRange>       ::= '(' <IPv4AddrValue> '..' <IPv4AddrValue> ')' |
                        '(' <IPv6AddrValue> '..' <IPv6AddrValue> ')'

The IPMatchList command sets up a list of IP addresses to match against a given IP packet. Both the outer source and destination IP addresses can be matched against the list as well as inner tunnel source and destination IP addresses. To remove the IP address(es) given in an "IPMatchList Command" from the list use the Delete command and the Ntpl ID returned from the IPMatchList command. The Delete command can also be used to delete individual IP address(es) from the list.

'KeySet' is a number that is associated with the IP addresses entered so that it can later be used in a test. Refer to Key Match Test. The key set id must be used consistently to refer to values of the same type. You must not add an IPv4 addres with key set id 6 and later add an IPv6 address with the same set id. When no set key value is given, IPv4 addresses will be assigned to set '1' and IPv6 addresses will be assigned to set '2'. These default key sets are preconfigured meaning you cannot assign an IPv4 address to key set '2' or an IPv6 address to key set '1'. You should not use '0' as key set value as this is reserved to indicate a miss.

The matched IP address can consist of a list of single IP addresses, an IP range or an IP address with an applied IP mask. Both IPv4 and IPv6 addresses are supported.

The port option is used to specify which ports should use the IP match list. The default is to apply the IP match list to all ports. As the IP match list is an adapter global setting, all ports present on the adapter must be included in the command.

For a description of the 'Tag' option please refer to Tag Option.

This command is to be used in combination with the IP match tests in a filter expression.

IP Match List Example

The following example illustrates how to use the IP match list command with single IP addresses, a list of IP addresses, a range of addresses and an IP address with applied IP mask for both IPv4 and IPv6.

The filter NTPL example is shown below.

IPMatchList = IPv4Addr == []
IPMatchList = IPv4Addr == [],[],[]
IPMatchList = IPv4Addr == ([]..[])
IPMatchList = IPv4Addr == {[FF.FF.0.0]:[]}
IPMatchList[Keyset = 3] = IPv6Addr == [2001:0db8:0:0:0:0:0:1]
IPMatchList[Keyset = 3] = IPv6Addr == [23a8:0cd6:0:0:0:0:0:1],[23a8:0cd6:0:0:0:0:0:19],[23a8:0cd6:0:0:0:0:0:24]
IPMatchList[Keyset = 3] = IPv6Addr == ([2001:0db8:0:0:0:0:0:10]..[2001:0db8:0:0:0:0:0:00FF])
IPMatchList[Keyset = 3] = IPv6Addr == {[FFFF:0:0:0:0:0:0:0]:[2001:0db8:0:0:0:0:0:0]}
Note that matching with masks will use TCAM storage as opposed to CAM storage; these are not automatically optimised into equivalent individual IP matches.

For example, the following expression will use TCAM storage:

IPMatchList = IPv4Addr == {[ff.ff.ff.ff]:[]}
While the following expression will use CAM storage, despite being functionally equivalent:

IPMatchList = IPv4Addr == {[]}
For more information about the available filter storage resources available, please see filter info.