ADC CLI Commands

nstrace

The following operations can be performed on “nstrace”:

show dump start stop

show nstrace

Display nstrace parameters set through ‘start nstrace’ command.

Synopsis

show nstrace

Arguments

Output

state Current running state of trace.

scope Scope of started trace, local or cluster level.

traceLocation Directory where current trace files are saved.

nf Number of files to be generated in cycle.

time Time per file (sec).

size Size of the captured data. Set 0 for full packet trace.

mode Capturing mode for trace. Mode can be any of the following values or combination of these values: RX Received packets before NIC pipelining (Filter does not work when RX capturing mode is ON) NEW_RX Received packets after NIC pipelining TX Transmitted packets TXB Packets buffered for transmission IPV6 Translated IPv6 packets C2C Capture C2C message NS_FR_TX TX/TXB packets are not captured in flow receiver. MPTCP MPTCP master flow HTTP_QUIC HTTP-over-QUIC stream data and stream events Default mode: NEW_RX TXB

traceformat Format in which trace will be generated

perNIC Use separate trace files for each interface. Works only with cap format.

fileName Name of the trace file.

fileId ID for the trace file name for uniqueness. Should be used only with -name option.

filter Filter expression for nstrace. Maximum length of filter is 255 and it can be of following format: [ ]

 <relop> = \( && | \|| )

 <expression> =:
 CONNECTION.<qualifier>.<qualifier-method>.(<qualifier-value>)

 <qualifier> = SRCIP
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv4 address.
 example = CONNECTION.SRCIP.EQ(127.0.0.1)

 <qualifier> = DSTIP
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv4 address.
 example = CONNECTION.DSTIP.EQ(127.0.0.1)

 <qualifier> = IP
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv4 address.
 example = CONNECTION.IP.EQ(127.0.0.1)

 <qualifier> = SRCIPv6
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv6 address.
 example = CONNECTION.SRCIPv6.EQ(2001:db8:0:0:1::1)

 <qualifier> = DSTIPv6
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv6 address.
 example = CONNECTION.DSTIPv6.EQ(2001:db8:0:0:1::1)

 <qualifier> = IPv6
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv6 address.
 example = CONNECTION.IPv6.EQ(2001:db8:0:0:1::1)

 <qualifier> = SRCPORT
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid port number.
 example = CONNECTION.SRCPORT.EQ(80)

 <qualifier> = DSTPORT
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid port number.
 example = CONNECTION.DSTPORT.EQ(80)

 <qualifier> = PORT
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid port number.
 example = CONNECTION.PORT.EQ(80)

 <qualifier> = VLANID
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid VLAN ID.
 example = CONNECTION.VLANID.EQ(0)

 <qualifier> = CONNID
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid PCB dev number.
 example = CONNECTION.CONNID.EQ(0)

 <qualifier> = PPEID
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid core ID.
   example = CONNECTION.PPEID.EQ(0)

 <qualifier> = SVCNAME
 <qualifier-method> = \[ EQ | NE | CONTAINS | STARTSWITH
                     | ENDSWITH ]
 <qualifier-value>  = A valid text string.
 example = CONNECTION.SVCNAME.EQ("name")

 <qualifier> = LB_VSERVER.NAME
 <qualifier-method> = \[ EQ | NE | CONTAINS | STARTSWITH
                    | ENDSWITH ]
 <qualifier-value>  = LB vserver name.
 example = CONNECTION.LB_VSERVER.NAME.EQ("name")

 <qualifier> = CS_VSERVER.NAME
 <qualifier-method> = \[ EQ | NE | CONTAINS | STARTSWITH
                    | ENDSWITH ]
 <qualifier-value>  = CS vserver name.
 example = CONNECTION.CS_VSERVER.NAME.EQ("name")

 <qualifier> = INTF
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  =  A valid interface id in the
                form of x/y.
 example = CONNECTION.INTF.EQ("x/y")

 <qualifier> = SERVICE_TYPE
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = \( SVC\_HTTP | FTP | TCP | UDP | SSL |
    SSL\_BRIDGE | SSL\_TCP | NNTP | RPCSVR | RPCSVRS |
    RPCCLNT | SVC\_DNS | ADNS | SNMP | RTSP | DHCPRA | ANY|
    MONITOR | MONITOR\_UDP | MONITOR\_PING | SIP\_UDP |
    SVC\_MYSQL | SVC\_MSSQL | FIX | SSL\_FIX | PKTSTEER |
    SVC\_AAA | SERVICE\_UNKNOWN )
 example = CONNECTION.SERVICE_TYPE.EQ(ANY)

 <qualifier> = TRAFFIC_DOMAIN_ID
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid traffic domain ID.
 example = CONNECTION.TRAFFIC_DOMAIN_ID.EQ(0)

 eg: start nstrace -filter \"CONNECTION.SRCIP.EQ\(127.0.0.1) \|| \(CONNECTION.SVCNAME.NE\(\"s1\") && CONNECTION.SRCPORT.EQ\(80))\"
 The filter expression should be given in double quotes.

common use cases:

Trace capturing full sized traffic from/to ip 10.102.44.111, excluding loopback traffic start nstrace -size 0 -filter “CONNECTION.IP.NE(127.0.0.1) && CONNECTION.IP.EQ(10.102.44.111)”

Trace capturing all traffic to (terminating at) port 80 or 443 start nstrace -size 0 -filter "CONNECTION.DSTPORT.EQ(443) || CONNECTION.DSTPORT.EQ(80)"

Trace capturing all backend traffic specific to service service1 along with corresponding client side traffic start nstrace -size 0 -filter “CONNECTION.SVCNAME.EQ(“service1”)” -link ENABLED

Trace capturing all traffic through Citrix ADC interface 1/1 start nstrace -filter “CONNECTION.INTF.EQ(“1/1”)”

Trace capturing all traffic specific through vlan 2 start nstrace -filter “CONNECTION.VLANID.EQ(2)”

Trace capturing all frontend (client side) traffic specific to lb vserver vserver1 along with corresponding server side traffic start nstrace -size 0 -filter “CONNECTION.LB_VSERVER.NAME.EQ(“vserver1”)” -link ENABLED

link Includes filtered connection’s peer traffic.

nodes Nodes on which tracing is started.

merge Specify how traces across PE’s are merged

doruntimecleanup Enable or disable runtime temp file cleanup

traceBuffers Number of 16KB trace buffers

skipRPC skip RPC packets

skipLocalSSH skip local SSH packets

capsslkeys Capture SSL Master keys. Master keys will not be captured on FIPS machine. Warning: The captured keys can be used to decrypt information that may be confidential. The captured key files have to be stored in a secure environment

capdroppkt Captures Dropped Packets if set to ENABLED.

inMemoryTrace Logs packets in appliance’s memory and dumps the trace file on stopping the nstrace operation

Example

show nstrace

dump nstrace

dump records from trace buffers to file.

Synopsis

dump nstrace -fileName

Arguments

fileName Name of the trace file.

Example

dump nstrace

start nstrace

Start Citrix ADC packet capture tool. There should be at least 2 GB of free disk space for trace to start

Synopsis

start nstrace [-nf <positive_integer>] [-time <positive_integer>] [-size <positive_integer>] [-mode ...] \[-perNIC \( ENABLED | DISABLED )] \[-fileName ] \[-fileId ] \[-filter ] \[-link \( ENABLED | DISABLED )] \[-nodes <positive\_integer> ...] \[-filesize <positive\_integer>] \[-traceformat \( NSCAP | PCAP )] \[-merge ] \[-doruntimecleanup \( ENABLED | DISABLED )] \[-traceBuffers <positive\_integer>] \[-skipRPC \( ENABLED | DISABLED )] \[-skipLocalSSH \( ENABLED | DISABLED )] \[-capsslkeys \( ENABLED | DISABLED )] \[-capdroppkt \( ENABLED | DISABLED )] \[-inMemoryTrace \( ENABLED | DISABLED )]

Arguments

nf Number of files to be generated in cycle. Default value: 24 Minimum value: 1 Maximum value: 100

time Time per file (sec). Default value: 3600 Minimum value: 1

size Size of the captured data. Set 0 for full packet trace. Default value: 164 Minimum value: 0 Maximum value: 1514

mode Capturing mode for trace. Mode can be any of the following values or combination of these values: RX Received packets before NIC pipelining (Filter does not work when RX capturing mode is ON) NEW_RX Received packets after NIC pipelining TX Transmitted packets TXB Packets buffered for transmission IPV6 Translated IPv6 packets C2C Capture C2C message NS_FR_TX TX/TXB packets are not captured in flow receiver. MPTCP MPTCP master flow HTTP_QUIC HTTP-over-QUIC stream data and stream events Default mode: NEW_RX TXB Default value: DEFAULT_MODE

perNIC Use separate trace files for each interface. Works only with cap format.

Possible values: ENABLED, DISABLED Default value: DISABLED

fileName Name of the trace file.

fileId ID for the trace file name for uniqueness. Should be used only with -name option.

filter Filter expression for nstrace. Maximum length of filter is 255 and it can be of following format: [ ]

 <relop> = \( && | \|| )

 <expression> =:
 CONNECTION.<qualifier>.<qualifier-method>.(<qualifier-value>)

 <qualifier> = SRCIP
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv4 address.
 example = CONNECTION.SRCIP.EQ(127.0.0.1)

 <qualifier> = DSTIP
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv4 address.
 example = CONNECTION.DSTIP.EQ(127.0.0.1)

 <qualifier> = IP
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv4 address.
 example = CONNECTION.IP.EQ(127.0.0.1)

 <qualifier> = SRCIPv6
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv6 address.
 example = CONNECTION.SRCIPv6.EQ(2001:db8:0:0:1::1)

 <qualifier> = DSTIPv6
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv6 address.
 example = CONNECTION.DSTIPv6.EQ(2001:db8:0:0:1::1)

 <qualifier> = IPv6
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = A valid IPv6 address.
 example = CONNECTION.IPv6.EQ(2001:db8:0:0:1::1)

 <qualifier> = SRCPORT
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid port number.
 example = CONNECTION.SRCPORT.EQ(80)

 <qualifier> = DSTPORT
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid port number.
 example = CONNECTION.DSTPORT.EQ(80)

 <qualifier> = PORT
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid port number.
 example = CONNECTION.PORT.EQ(80)

 <qualifier> = VLANID
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid VLAN ID.
 example = CONNECTION.VLANID.EQ(0)

 <qualifier> = CONNID
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid PCB dev number.
 example = CONNECTION.CONNID.EQ(0)

 <qualifier> = PPEID
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid core ID.
   example = CONNECTION.PPEID.EQ(0)

 <qualifier> = SVCNAME
 <qualifier-method> = \[ EQ | NE | CONTAINS | STARTSWITH
                     | ENDSWITH ]
 <qualifier-value>  = A valid text string.
 example = CONNECTION.SVCNAME.EQ("name")

 <qualifier> = LB_VSERVER.NAME
 <qualifier-method> = \[ EQ | NE | CONTAINS | STARTSWITH
                    | ENDSWITH ]
 <qualifier-value>  = LB vserver name.
 example = CONNECTION.LB_VSERVER.NAME.EQ("name")

 <qualifier> = CS_VSERVER.NAME
 <qualifier-method> = \[ EQ | NE | CONTAINS | STARTSWITH
                    | ENDSWITH ]
 <qualifier-value>  = CS vserver name.
 example = CONNECTION.CS_VSERVER.NAME.EQ("name")

 <qualifier> = INTF
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  =  A valid interface id in the
                form of x/y.
 example = CONNECTION.INTF.EQ("x/y")

 <qualifier> = SERVICE_TYPE
 <qualifier-method> = \[ EQ | NE ]
 <qualifier-value>  = \( SVC\_HTTP | FTP | TCP | UDP | SSL |
    SSL\_BRIDGE | SSL\_TCP | NNTP | RPCSVR | RPCSVRS |
    RPCCLNT | SVC\_DNS | ADNS | SNMP | RTSP | DHCPRA | ANY|
    MONITOR | MONITOR\_UDP | MONITOR\_PING | SIP\_UDP |
    SVC\_MYSQL | SVC\_MSSQL | FIX | SSL\_FIX | PKTSTEER |
    SVC\_AAA | SERVICE\_UNKNOWN )
 example = CONNECTION.SERVICE_TYPE.EQ(ANY)

 <qualifier> = TRAFFIC_DOMAIN_ID
 <qualifier-method> = \[ EQ | NE | GT | GE | LT | LE
                     | BETWEEN ]
 <qualifier-value>  = A valid traffic domain ID.
 example = CONNECTION.TRAFFIC_DOMAIN_ID.EQ(0)

 eg: start nstrace -filter \"CONNECTION.SRCIP.EQ\(127.0.0.1) \|| \(CONNECTION.SVCNAME.NE\(\"s1\") && CONNECTION.SRCPORT.EQ\(80))\"
 The filter expression should be given in double quotes.

common use cases:

Trace capturing full sized traffic from/to ip 10.102.44.111, excluding loopback traffic start nstrace -size 0 -filter “CONNECTION.IP.NE(127.0.0.1) && CONNECTION.IP.EQ(10.102.44.111)”

Trace capturing all traffic to (terminating at) port 80 or 443 start nstrace -size 0 -filter "CONNECTION.DSTPORT.EQ(443) || CONNECTION.DSTPORT.EQ(80)"

Trace capturing all backend traffic specific to service service1 along with corresponding client side traffic start nstrace -size 0 -filter “CONNECTION.SVCNAME.EQ(“service1”)” -link ENABLED

Trace capturing all traffic through Citrix ADC interface 1/1 start nstrace -filter “CONNECTION.INTF.EQ(“1/1”)”

Trace capturing all traffic specific through vlan 2 start nstrace -filter “CONNECTION.VLANID.EQ(2)”

Trace capturing all frontend (client side) traffic specific to lb vserver vserver1 along with corresponding server side traffic start nstrace -size 0 -filter “CONNECTION.LB_VSERVER.NAME.EQ(“vserver1”)” -link ENABLED

link Includes filtered connection’s peer traffic.

Possible values: ENABLED, DISABLED Default value: DISABLED

nodes Nodes on which tracing is started.

Minimum value: 0 Maximum value: 32

filesize File size, in MB, treshold for rollover. If free disk space is less than 2GB at the time of rollover, trace will stop

Default value: 1024 Minimum value: 0 Maximum value: 10240

traceformat Format in which trace will be generated

Possible values: NSCAP, PCAP Default value: 0

merge Specify how traces across PE’s are merged

Possible values: ONSTOP, ONTHEFLY, NOMERGE Default value: 0

doruntimecleanup Enable or disable runtime temp file cleanup

Possible values: ENABLED, DISABLED Default value: ENABLED

traceBuffers Number of 16KB trace buffers Default value: 5000 Minimum value: 1000

skipRPC skip RPC packets

Possible values: ENABLED, DISABLED Default value: DISABLED

skipLocalSSH skip local SSH packets

Possible values: ENABLED, DISABLED Default value: DISABLED

capsslkeys Capture SSL Master keys. Master keys will not be captured on FIPS machine. Warning: The captured keys can be used to decrypt information that may be confidential. The captured key files have to be stored in a secure environment

Possible values: ENABLED, DISABLED Default value: DISABLED

capdroppkt Captures Dropped Packets if set to ENABLED.

Possible values: ENABLED, DISABLED Default value: DISABLED

inMemoryTrace Logs packets in appliance’s memory and dumps the trace file on stopping the nstrace operation

Possible values: ENABLED, DISABLED Default value: DISABLED

Example

start nstrace -time 10

stop nstrace

Stop running Citrix ADC packet capture tool.

Synopsis

stop nstrace

Example

stop nstrace

nstrace