Netflow Forward

These scenarios show how to configure and use Netflow to collect and export TCP forwarded flows. Different NAT topologies are described.

../../../_images/topologyfwd.svg

Netflow Without NAT

Description

Simple scenario without NAT configuration.

Scenario

Step 1: Set the following configuration in DUT0 :

set interfaces ethernet eth0 address 10.0.0.2/24
set interfaces ethernet eth0 flow egress selector TCP_SEL
set interfaces ethernet eth0 flow ingress selector TCP_SEL
set interfaces ethernet eth1 address 20.0.0.2/24
set system conntrack app-detect
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set system netflow app-id
set system netflow destination 10.0.0.1
set system netflow engine-id 1111
set traffic selector TCP_SEL rule 1 protocol tcp

Step 2: Set the following configuration in DUT1 :

set interfaces ethernet eth0 address 10.0.0.1/24
set protocols static route 0.0.0.0/0 next-hop 10.0.0.2
set system conntrack app-detect
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 3: Set the following configuration in DUT2 :

set interfaces ethernet eth0 address 20.0.0.1/24
set protocols static route 0.0.0.0/0 next-hop 20.0.0.2
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 4: Run command system conntrack clear at DUT1.

Step 5: Ping IP address 10.0.0.1 from DUT0:

admin@DUT0$ ping 10.0.0.1 count 1 size 56 timeout 1
Show output
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.272 ms

--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.272/0.272/0.272/0.000 ms

Step 6: Ping IP address 20.0.0.1 from DUT0:

admin@DUT0$ ping 20.0.0.1 count 1 size 56 timeout 1
Show output
PING 20.0.0.1 (20.0.0.1) 56(84) bytes of data.
64 bytes from 20.0.0.1: icmp_seq=1 ttl=64 time=0.382 ms

--- 20.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.382/0.382/0.382/0.000 ms

Step 7: Initiate a tcp connection from DUT1 to DUT2 and try to send some messages between both endpoints

admin@DUT2$ monitor test connection server 8080 tcp
admin@DUT1$ monitor test connection client 20.0.0.1 8080 tcp

Step 8: Run command system netflow show flows detailed at DUT0 and check if output matches the following regular expressions:

2\s+3\s+10.0.0.1:\d+\s+20.0.0.1:\d+\s*\d*\s*\d+[^\[]*\[L4:8080\]
Show output
------------------------------------------------------------------------------------------
Field       Description
------------------------------------------------------------------------------------------
#           Numeric flow identifier
hash        Hash of the flow
a           Shows if the flow is pending of being exported
iif         Input interface
oif         Output interface
src         Source IP:PORT
dst         Destination IP:PORT
protocol    Protocol identifier
nexthop     Next-hop [Layer 4:Port]
tos         Type of service identificator
tcpflags    TCP flags
options     Optional IP options
tcpoptions  TCP Options (MSS, Window Scaling, Selective Acknowledgements, Timestamps, Nop)
pkts        Packets counter
bytes       Bytes counter
ts_first    Timestamp of fist packet that passed through the flow
ts_last     Timestamp of last packet that passed through the flow


----------------------------------------------------------------------------------------------------------------------------------------------------
#  hash  a  iif  oif  src             dst             protocol  nexthop           tos  tcpflags  options  tcpoptions  pkts  bytes  ts_first  ts_last
----------------------------------------------------------------------------------------------------------------------------------------------------
1  3d0e  0  2    3    10.0.0.1:34240  20.0.0.1:8080   8080      0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  12    732    381       29
2  4b98  0  3    2    20.0.0.1:8080   10.0.0.1:34240  34240     0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  11    680    381       30

Step 9: Run command system netflow show flows detailed at DUT0 and check if output matches the following regular expressions:

3\s+2\s+20.0.0.1:\d+\s+10.0.0.1:\d+\s*\d*\s*\d+[^\[]*\[L4:8080\]
Show output
------------------------------------------------------------------------------------------
Field       Description
------------------------------------------------------------------------------------------
#           Numeric flow identifier
hash        Hash of the flow
a           Shows if the flow is pending of being exported
iif         Input interface
oif         Output interface
src         Source IP:PORT
dst         Destination IP:PORT
protocol    Protocol identifier
nexthop     Next-hop [Layer 4:Port]
tos         Type of service identificator
tcpflags    TCP flags
options     Optional IP options
tcpoptions  TCP Options (MSS, Window Scaling, Selective Acknowledgements, Timestamps, Nop)
pkts        Packets counter
bytes       Bytes counter
ts_first    Timestamp of fist packet that passed through the flow
ts_last     Timestamp of last packet that passed through the flow


----------------------------------------------------------------------------------------------------------------------------------------------------
#  hash  a  iif  oif  src             dst             protocol  nexthop           tos  tcpflags  options  tcpoptions  pkts  bytes  ts_first  ts_last
----------------------------------------------------------------------------------------------------------------------------------------------------
1  3d0e  0  2    3    10.0.0.1:34240  20.0.0.1:8080   8080      0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  12    732    403       51
2  4b98  0  3    2    20.0.0.1:8080   10.0.0.1:34240  34240     0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  11    680    403       52

Step 10: Run command system netflow show status at DUT0 and check if output matches the following regular expressions:

Protocol\sversion\s10\s\(ipfix\)
Export:.*Errors 0 pkts
sock0:\s127.0.0.1:2055,.*err: sndbuf reached 0, connect 0, cberr \d+, other 0
Show output
ipt_NETFLOW 2.6, srcversion AADF220789E0A3E7E537933; dir
Protocol version 10 (ipfix), refresh-rate 20, timeout-rate 30, (templates 0, active 1).
Timeouts: active 1800s, inactive 15s. Maxflows 2000000
Flows: active 2 (peak 2 reached 0d0h0m ago), mem 492K, worker delay 25/250 [1..25] (48 ms, 0 us, 2:0 [cpu0]).
Hash: size 62967 (mem 491K), metric 1.00 [1.00, 1.00, 1.00]. InHash: 23 pkt, 1 K, InPDU 0, 0.
Rate: 1832 bits/sec, 3 packets/sec; Avg 1 min: 229 bps, 0 pps; 5 min: 46 bps, 0 pps
cpu#     pps; <search found new [metric], trunc frag alloc maxflows>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total      3;      0     33      2 [1.00],    0    0    0    0, traffic: 23, 0 MB, drop: 0, 0 K
cpu0       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
cpu1       3;      0     33      2 [1.00],    0    0    0    0, traffic: 23, 0 MB, drop: 0, 0 K
cpu2       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
cpu3       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
Export: Rate 0 bytes/s; Total 2 pkts, 0 MB, 0 flows; Errors 0 pkts; Traffic lost 0 pkts, 0 Kbytes, 0 flows.
sock0: 127.0.0.1:2055, sndbuf 212992, filled 1, peak 1; err: sndbuf reached 0, connect 0, cberr 0, other 0

Netflow With SNAT

Description

Scenario with SNAT in DUT0 WAN interface (eth1).

Scenario

Step 1: Set the following configuration in DUT0 :

set interfaces ethernet eth0 address 10.0.0.2/24
set interfaces ethernet eth0 flow egress selector TCP_SEL
set interfaces ethernet eth0 flow ingress selector TCP_SEL
set interfaces ethernet eth1 address 20.0.0.2/24
set interfaces ethernet eth1 traffic nat source rule 1 address masquerade
set interfaces ethernet eth1 traffic nat source rule 1 selector TCP_SEL
set system conntrack app-detect
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set system netflow app-id
set system netflow destination 10.0.0.1
set system netflow engine-id 1111
set traffic selector TCP_SEL rule 1 protocol tcp

Step 2: Set the following configuration in DUT1 :

set interfaces ethernet eth0 address 10.0.0.1/24
set protocols static route 0.0.0.0/0 next-hop 10.0.0.2
set system conntrack app-detect
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 3: Set the following configuration in DUT2 :

set interfaces ethernet eth0 address 20.0.0.1/24
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 4: Run command system conntrack clear at DUT1.

Step 5: Ping IP address 10.0.0.1 from DUT0:

admin@DUT0$ ping 10.0.0.1 count 1 size 56 timeout 1
Show output
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.293 ms

--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.293/0.293/0.293/0.000 ms

Step 6: Ping IP address 20.0.0.1 from DUT0:

admin@DUT0$ ping 20.0.0.1 count 1 size 56 timeout 1
Show output
PING 20.0.0.1 (20.0.0.1) 56(84) bytes of data.
64 bytes from 20.0.0.1: icmp_seq=1 ttl=64 time=0.418 ms

--- 20.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.418/0.418/0.418/0.000 ms

Step 7: Initiate a tcp connection from DUT1 to DUT2 and try to send some messages between both endpoints

admin@DUT2$ monitor test connection server 8080 tcp
admin@DUT1$ monitor test connection client 20.0.0.1 8080 tcp

Step 8: Run command system netflow show flows detailed at DUT0 and check if output matches the following regular expressions:

2\s+3\s+10.0.0.1:\d+\s+20.0.0.1:\d+\s*\d*\s*\d+[^\[]*\[L4:8080\]
Show output
------------------------------------------------------------------------------------------
Field       Description
------------------------------------------------------------------------------------------
#           Numeric flow identifier
hash        Hash of the flow
a           Shows if the flow is pending of being exported
iif         Input interface
oif         Output interface
src         Source IP:PORT
dst         Destination IP:PORT
protocol    Protocol identifier
nexthop     Next-hop [Layer 4:Port]
tos         Type of service identificator
tcpflags    TCP flags
options     Optional IP options
tcpoptions  TCP Options (MSS, Window Scaling, Selective Acknowledgements, Timestamps, Nop)
pkts        Packets counter
bytes       Bytes counter
ts_first    Timestamp of fist packet that passed through the flow
ts_last     Timestamp of last packet that passed through the flow


----------------------------------------------------------------------------------------------------------------------------------------------------
#  hash  a  iif  oif  src             dst             protocol  nexthop           tos  tcpflags  options  tcpoptions  pkts  bytes  ts_first  ts_last
----------------------------------------------------------------------------------------------------------------------------------------------------
1  0fc8  0  2    3    10.0.0.1:37502  20.0.0.1:8080   8080      0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  10    628    384       33
2  52e6  0  3    2    20.0.0.1:8080   10.0.0.1:37502  37502     0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  9     576    384       33

Step 9: Run command system netflow show flows detailed at DUT0 and check if output matches the following regular expressions:

3\s+2\s+20.0.0.1:\d+\s+10.0.0.1:\d+\s*\d*\s*\d+[^\[]*\[L4:8080\]
Show output
------------------------------------------------------------------------------------------
Field       Description
------------------------------------------------------------------------------------------
#           Numeric flow identifier
hash        Hash of the flow
a           Shows if the flow is pending of being exported
iif         Input interface
oif         Output interface
src         Source IP:PORT
dst         Destination IP:PORT
protocol    Protocol identifier
nexthop     Next-hop [Layer 4:Port]
tos         Type of service identificator
tcpflags    TCP flags
options     Optional IP options
tcpoptions  TCP Options (MSS, Window Scaling, Selective Acknowledgements, Timestamps, Nop)
pkts        Packets counter
bytes       Bytes counter
ts_first    Timestamp of fist packet that passed through the flow
ts_last     Timestamp of last packet that passed through the flow


----------------------------------------------------------------------------------------------------------------------------------------------------
#  hash  a  iif  oif  src             dst             protocol  nexthop           tos  tcpflags  options  tcpoptions  pkts  bytes  ts_first  ts_last
----------------------------------------------------------------------------------------------------------------------------------------------------
1  0fc8  0  2    3    10.0.0.1:37502  20.0.0.1:8080   8080      0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  10    628    404       53
2  52e6  0  3    2    20.0.0.1:8080   10.0.0.1:37502  37502     0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  9     576    404       53

Step 10: Run command system netflow show status at DUT0 and check if output matches the following regular expressions:

Protocol\sversion\s10\s\(ipfix\)
Export:.*Errors 0 pkts
sock0:\s127.0.0.1:2055,.*err: sndbuf reached 0, connect 0, cberr \d+, other 0
Show output
ipt_NETFLOW 2.6, srcversion AADF220789E0A3E7E537933; dir
Protocol version 10 (ipfix), refresh-rate 20, timeout-rate 30, (templates 0, active 1).
Timeouts: active 1800s, inactive 15s. Maxflows 2000000
Flows: active 2 (peak 2 reached 0d0h0m ago), mem 492K, worker delay 25/250 [1..25] (44 ms, 0 us, 2:0 [cpu1]).
Hash: size 62967 (mem 491K), metric 1.00 [1.00, 1.00, 1.00]. InHash: 19 pkt, 1 K, InPDU 0, 0.
Rate: 0 bits/sec, 0 packets/sec; Avg 1 min: 247 bps, 0 pps; 5 min: 66 bps, 0 pps
cpu#     pps; <search found new [metric], trunc frag alloc maxflows>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total      0;      0     60      4 [1.00],    0    0    0    0, traffic: 42, 0 MB, drop: 0, 0 K
cpu0       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
cpu1       0;      0     60      4 [1.00],    0    0    0    0, traffic: 42, 0 MB, drop: 0, 0 K
cpu2       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
cpu3       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
Export: Rate 118 bytes/s; Total 7 pkts, 0 MB, 0 flows; Errors 0 pkts; Traffic lost 23 pkts, 1 Kbytes, 2 flows.
sock0: 127.0.0.1:2055, sndbuf 212992, filled 1, peak 1; err: sndbuf reached 0, connect 0, cberr 0, other 0

Netflow With DNAT

Description

Scenario with DNAT in DUT0 LAN interface (eth0).

Scenario

Step 1: Set the following configuration in DUT0 :

set interfaces ethernet eth0 address 10.0.0.2/24
set interfaces ethernet eth0 flow egress selector TCP_SEL
set interfaces ethernet eth0 flow ingress selector TCP_SEL
set interfaces ethernet eth0 traffic nat destination rule 1 address 20.0.0.1
set interfaces ethernet eth0 traffic nat destination rule 1 selector TCP_SEL
set interfaces ethernet eth1 address 20.0.0.2/24
set system conntrack app-detect
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set system netflow app-id
set system netflow destination 10.0.0.1
set system netflow engine-id 1111
set traffic selector TCP_SEL rule 1 protocol tcp

Step 2: Set the following configuration in DUT1 :

set interfaces ethernet eth0 address 10.0.0.1/24
set system conntrack app-detect
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 3: Set the following configuration in DUT2 :

set interfaces ethernet eth0 address 20.0.0.1/24
set protocols static route 0.0.0.0/0 next-hop 20.0.0.2
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 4: Run command system conntrack clear at DUT1.

Step 5: Ping IP address 10.0.0.1 from DUT0:

admin@DUT0$ ping 10.0.0.1 count 1 size 56 timeout 1
Show output
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.309 ms

--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.309/0.309/0.309/0.000 ms

Step 6: Ping IP address 20.0.0.1 from DUT0:

admin@DUT0$ ping 20.0.0.1 count 1 size 56 timeout 1
Show output
PING 20.0.0.1 (20.0.0.1) 56(84) bytes of data.
64 bytes from 20.0.0.1: icmp_seq=1 ttl=64 time=19.0 ms

--- 20.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 19.009/19.009/19.009/0.000 ms

Step 7: Initiate a tcp connection from DUT1 to DUT2 and try to send some messages between both endpoints

admin@DUT2$ monitor test connection server 8080 tcp
admin@DUT1$ monitor test connection client 10.0.0.2 8080 tcp

Step 8: Run command system netflow show flows detailed at DUT0 and check if output matches the following regular expressions:

2\s+3\s+10.0.0.1:\d+\s+20.0.0.1:\d+\s*\d*\s*\d+[^\[]*\[L4:8080\]
Show output
------------------------------------------------------------------------------------------
Field       Description
------------------------------------------------------------------------------------------
#           Numeric flow identifier
hash        Hash of the flow
a           Shows if the flow is pending of being exported
iif         Input interface
oif         Output interface
src         Source IP:PORT
dst         Destination IP:PORT
protocol    Protocol identifier
nexthop     Next-hop [Layer 4:Port]
tos         Type of service identificator
tcpflags    TCP flags
options     Optional IP options
tcpoptions  TCP Options (MSS, Window Scaling, Selective Acknowledgements, Timestamps, Nop)
pkts        Packets counter
bytes       Bytes counter
ts_first    Timestamp of fist packet that passed through the flow
ts_last     Timestamp of last packet that passed through the flow


----------------------------------------------------------------------------------------------------------------------------------------------------
#  hash  a  iif  oif  src             dst             protocol  nexthop           tos  tcpflags  options  tcpoptions  pkts  bytes  ts_first  ts_last
----------------------------------------------------------------------------------------------------------------------------------------------------
1  e34c  0  2    3    10.0.0.1:49968  20.0.0.1:8080   8080      0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  12    732    389       30
2  4d66  0  3    2    20.0.0.1:8080   10.0.0.1:49968  49968     0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  10    628    389       30

Step 9: Run command system netflow show flows detailed at DUT0 and check if output matches the following regular expressions:

3\s+2\s+20.0.0.1:\d+\s+10.0.0.1:\d+\s*\d*\s*\d+[^\[]*\[L4:8080\]
Show output
------------------------------------------------------------------------------------------
Field       Description
------------------------------------------------------------------------------------------
#           Numeric flow identifier
hash        Hash of the flow
a           Shows if the flow is pending of being exported
iif         Input interface
oif         Output interface
src         Source IP:PORT
dst         Destination IP:PORT
protocol    Protocol identifier
nexthop     Next-hop [Layer 4:Port]
tos         Type of service identificator
tcpflags    TCP flags
options     Optional IP options
tcpoptions  TCP Options (MSS, Window Scaling, Selective Acknowledgements, Timestamps, Nop)
pkts        Packets counter
bytes       Bytes counter
ts_first    Timestamp of fist packet that passed through the flow
ts_last     Timestamp of last packet that passed through the flow


----------------------------------------------------------------------------------------------------------------------------------------------------
#  hash  a  iif  oif  src             dst             protocol  nexthop           tos  tcpflags  options  tcpoptions  pkts  bytes  ts_first  ts_last
----------------------------------------------------------------------------------------------------------------------------------------------------
1  e34c  0  2    3    10.0.0.1:49968  20.0.0.1:8080   8080      0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  12    732    410       51
2  4d66  0  3    2    20.0.0.1:8080   10.0.0.1:49968  49968     0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  10    628    410       51

Step 10: Run command system netflow show status at DUT0 and check if output matches the following regular expressions:

Protocol\sversion\s10\s\(ipfix\)
Export:.*Errors 0 pkts
sock0:\s127.0.0.1:2055,.*err: sndbuf reached 0, connect 0, cberr \d+, other 0
Show output
ipt_NETFLOW 2.6, srcversion AADF220789E0A3E7E537933; dir
Protocol version 10 (ipfix), refresh-rate 20, timeout-rate 30, (templates 0, active 1).
Timeouts: active 1800s, inactive 15s. Maxflows 2000000
Flows: active 2 (peak 2 reached 0d0h0m ago), mem 492K, worker delay 25/250 [1..25] (36 ms, 0 us, 2:0 [cpu0]).
Hash: size 62967 (mem 491K), metric 1.00 [1.00, 1.00, 1.00]. InHash: 22 pkt, 1 K, InPDU 0, 0.
Rate: 0 bits/sec, 0 packets/sec; Avg 1 min: 345 bps, 0 pps; 5 min: 114 bps, 0 pps
cpu#     pps; <search found new [metric], trunc frag alloc maxflows>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total      0;      0     92      6 [1.00],    0    0    0    0, traffic: 64, 0 MB, drop: 0, 0 K
cpu0       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
cpu1       0;      0     92      6 [1.00],    0    0    0    0, traffic: 64, 0 MB, drop: 0, 0 K
cpu2       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
cpu3       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
Export: Rate 117 bytes/s; Total 11 pkts, 0 MB, 0 flows; Errors 0 pkts; Traffic lost 42 pkts, 2 Kbytes, 4 flows.
sock0: 127.0.0.1:2055, sndbuf 212992, filled 1, peak 1; err: sndbuf reached 0, connect 0, cberr 0, other 0

Netflow With SDNAT

Description

Scenario with SNAT in DUT0 WAN interface (eth1) and DNAT in DUT0 LAN interface (eth0).

Scenario

Step 1: Set the following configuration in DUT0 :

set interfaces ethernet eth0 address 10.0.0.2/24
set interfaces ethernet eth0 flow egress selector TCP_SEL
set interfaces ethernet eth0 flow ingress selector TCP_SEL
set interfaces ethernet eth0 traffic nat destination rule 1 address 20.0.0.1
set interfaces ethernet eth0 traffic nat destination rule 1 selector TCP_SEL
set interfaces ethernet eth1 address 20.0.0.2/24
set interfaces ethernet eth1 traffic nat source rule 1 address masquerade
set interfaces ethernet eth1 traffic nat source rule 1 selector TCP_SEL
set system conntrack app-detect
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
set system netflow app-id
set system netflow destination 10.0.0.1
set system netflow engine-id 1111
set traffic selector TCP_SEL rule 1 protocol tcp

Step 2: Set the following configuration in DUT1 :

set interfaces ethernet eth0 address 10.0.0.1/24
set system conntrack app-detect
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 3: Set the following configuration in DUT2 :

set interfaces ethernet eth0 address 20.0.0.1/24
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 4: Run command system conntrack clear at DUT1.

Step 5: Ping IP address 10.0.0.1 from DUT0:

admin@DUT0$ ping 10.0.0.1 count 1 size 56 timeout 1
Show output
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.275 ms

--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.275/0.275/0.275/0.000 ms

Step 6: Ping IP address 20.0.0.1 from DUT0:

admin@DUT0$ ping 20.0.0.1 count 1 size 56 timeout 1
Show output
PING 20.0.0.1 (20.0.0.1) 56(84) bytes of data.
64 bytes from 20.0.0.1: icmp_seq=1 ttl=64 time=0.570 ms

--- 20.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.570/0.570/0.570/0.000 ms

Step 7: Initiate a tcp connection from DUT1 to DUT2 and try to send some messages between both endpoints

admin@DUT2$ monitor test connection server 8080 tcp
admin@DUT1$ monitor test connection client 10.0.0.2 8080 tcp

Step 8: Run command system netflow show flows detailed at DUT0 and check if output matches the following regular expressions:

2\s+3\s+10.0.0.1:\d+\s+20.0.0.1:\d+\s*\d*\s*\d+[^\[]*\[L4:8080\]
Show output
------------------------------------------------------------------------------------------
Field       Description
------------------------------------------------------------------------------------------
#           Numeric flow identifier
hash        Hash of the flow
a           Shows if the flow is pending of being exported
iif         Input interface
oif         Output interface
src         Source IP:PORT
dst         Destination IP:PORT
protocol    Protocol identifier
nexthop     Next-hop [Layer 4:Port]
tos         Type of service identificator
tcpflags    TCP flags
options     Optional IP options
tcpoptions  TCP Options (MSS, Window Scaling, Selective Acknowledgements, Timestamps, Nop)
pkts        Packets counter
bytes       Bytes counter
ts_first    Timestamp of fist packet that passed through the flow
ts_last     Timestamp of last packet that passed through the flow


----------------------------------------------------------------------------------------------------------------------------------------------------
#  hash  a  iif  oif  src             dst             protocol  nexthop           tos  tcpflags  options  tcpoptions  pkts  bytes  ts_first  ts_last
----------------------------------------------------------------------------------------------------------------------------------------------------
1  d817  0  2    3    10.0.0.1:35272  20.0.0.1:8080   8080      0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  11    680    424       42
2  a47e  0  3    2    20.0.0.1:8080   10.0.0.1:35272  35272     0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  11    680    424       42

Step 9: Run command system netflow show flows detailed at DUT0 and check if output matches the following regular expressions:

3\s+2\s+20.0.0.1:\d+\s+10.0.0.1:\d+\s*\d*\s*\d+[^\[]*\[L4:8080\]
Show output
------------------------------------------------------------------------------------------
Field       Description
------------------------------------------------------------------------------------------
#           Numeric flow identifier
hash        Hash of the flow
a           Shows if the flow is pending of being exported
iif         Input interface
oif         Output interface
src         Source IP:PORT
dst         Destination IP:PORT
protocol    Protocol identifier
nexthop     Next-hop [Layer 4:Port]
tos         Type of service identificator
tcpflags    TCP flags
options     Optional IP options
tcpoptions  TCP Options (MSS, Window Scaling, Selective Acknowledgements, Timestamps, Nop)
pkts        Packets counter
bytes       Bytes counter
ts_first    Timestamp of fist packet that passed through the flow
ts_last     Timestamp of last packet that passed through the flow


----------------------------------------------------------------------------------------------------------------------------------------------------
#  hash  a  iif  oif  src             dst             protocol  nexthop           tos  tcpflags  options  tcpoptions  pkts  bytes  ts_first  ts_last
----------------------------------------------------------------------------------------------------------------------------------------------------
1  d817  0  2    3    10.0.0.1:35272  20.0.0.1:8080   8080      0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  11    680    452       70
2  a47e  0  3    2    20.0.0.1:8080   10.0.0.1:35272  35272     0.0.0.0[L4:8080]  0x0  0x1b      0x0      0xf1000000  11    680    452       70

Step 10: Run command system netflow show status at DUT0 and check if output matches the following regular expressions:

Protocol\sversion\s10\s\(ipfix\)
Export:.*Errors 0 pkts
sock0:\s127.0.0.1:2055,.*err: sndbuf reached 0, connect 0, cberr \d+, other 0
Show output
ipt_NETFLOW 2.6, srcversion AADF220789E0A3E7E537933; dir
Protocol version 10 (ipfix), refresh-rate 20, timeout-rate 30, (templates 0, active 1).
Timeouts: active 1800s, inactive 15s. Maxflows 2000000
Flows: active 2 (peak 2 reached 0d0h0m ago), mem 492K, worker delay 25/250 [1..25] (84 ms, 0 us, 2:0 [cpu3]).
Hash: size 62967 (mem 491K), metric 1.00 [1.00, 1.00, 1.00]. InHash: 22 pkt, 1 K, InPDU 0, 0.
Rate: 1520 bits/sec, 3 packets/sec; Avg 1 min: 618 bps, 0 pps; 5 min: 204 bps, 0 pps
cpu#     pps; <search found new [metric], trunc frag alloc maxflows>, traffic: <pkt, bytes>, drop: <pkt, bytes>
Total      3;      0    123      8 [1.00],    0    0    0    0, traffic: 86, 0 MB, drop: 0, 0 K
cpu0       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
cpu1       3;      0    123      8 [1.00],    0    0    0    0, traffic: 86, 0 MB, drop: 0, 0 K
cpu2       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
cpu3       0;      0      0      0 [1.00],    0    0    0    0, traffic: 0, 0 MB, drop: 0, 0 K
Export: Rate 0 bytes/s; Total 16 pkts, 0 MB, 0 flows; Errors 0 pkts; Traffic lost 64 pkts, 3 Kbytes, 6 flows.
sock0: 127.0.0.1:2055, sndbuf 212992, filled 1, peak 1; err: sndbuf reached 0, connect 0, cberr 0, other 0