vpp-probe --help
___ _________________ ______
__ | / /__ __ \__ __ \ _______________________ /______
__ | / /__ /_/ /_ /_/ /_____ __ \_ ___/ __ \_ __ \ _ \
__ |/ / _ ____/_ ____/_____ /_/ / / / /_/ / /_/ / __/
_____/ /_/ /_/ _ .___//_/ \____//_.___/\___/
/_/
Usage:
vpp-probe [command]
Available Commands:
discover Discover running VPP instances
help Help about any command
tracer Trace packets from VPP instances
Flags:
-e, --env string Environment type in which VPP is running. Supported environments are local, docker and kube,
where VPP is running as a local process, as a Docker container or as a Kubernetes pod, respectivelly.
-q, --query stringArray Selector query to filter VPP instances on, supports '=' (e.g --query key1=value1).
Multiple parameters in a single query (using AND logic) are separated by a comma (e.g. -q key1=val1,key2=val2) and
multiple queries (using OR logic) can be defined as additional flag options (e.g. -q k1=v1 -q k1=v2).
Parameter types depend on probe environment (defined with --env).
--kubeconfig string Path to kubeconfig, defaults to ~/.kube/config (or set via KUBECONFIG) (used in kube env)
--kubecontext string The name of the kubeconfig context to use (used in kube env)
--dockerhost string Daemon socket(s) to connect to (used in docker env)
--clisock string Path to VPP CLIsocket file (used in local env)
--apisock string Path to VPP binary API socket file (used in local env)
--statsock string Path to VPP stats API socket file (used in local env)
-D, --debug Enable debug mode
-L, --loglevel string Set logging level
-v, --version version for vpp-probe
Use "vpp-probe [command] --help" for more information about a command.
The vpp-probe root command has several global options used for setting up probe providers and filter the VPP instances.
--env
/-e
- specifies environment where VPP instances are running
kube
- VPP instance(s) running in Kubernetes poddocker
- VPP instance(s) running in Docker containerlocal
- VPP instance running locally
--query
/-e
- specifies query parameters for selecting/filtering VPP instances
- actual supported parameters depend on selected environment (listed below)
- multiple parameters in single query (use AND logic) and are separated by a comma, e.g.
-q "param1=value1,param2=value2"
- multiple queries (use OR logic) can be specified with additional flag, e.g.
-q param1=value1 -q param2=value2
Set --env=kube
to access VPP instances running on pods in Kubernetes cluster(s) specified with --kubeconfig
and --kubecontext
flags.
--kubeconfig string Path to kubeconfig, defaults to ~/.kube/config (or set via KUBECONFIG)
--kubecontext string The name of the kubeconfig context to use (multiple contexts separated by a comma `,`)
The KUBECONFIG
env var, behaves the same way as in kubectl
, which supports merging multiple kubeconfig files. This allows using contexts from multiple kubeconfigs.
export KUBECONFIG="/path/to/kubeconfig1:/path/to/kubeconfig2"
vpp-probe --kubecontext="ctx1,ctx2" -q "label=app=vpp" discover
Parameter | Type | Description |
---|---|---|
name |
string | Pod name |
namespace |
string | Pod namespace |
label |
string | Label selector |
field |
string | Field selector |
Multiple kubeconfigs separated by :
and multiple contexts separated by ,
.
Set --env=docker
to access VPP instances running in Docker container(s).
--dockerhost string Daemon socket(s) to connect to (used in docker env)
Parameter | Type | Description |
---|---|---|
id |
string | Container ID |
name |
string | Container name |
label |
string | Label selector |
Set --env=local
to access VPP instances running locally on the host.
--clisock string Path to VPP CLIsocket file (used in local env)
--apisock string Path to VPP binary API socket file (used in local env)
--statsock string Path to VPP stats API socket file (used in local env)
No query parameters support for local env.
The discover
command will look for VPP instances in selected environment and retrieve basic VPP info and interfaces configured for VPP/Linux. The --query
flag is not required, but can be used to set parameters for selecting only some of the instances or even specify exact instance.
vpp-probe discover --help
Discover running VPP instances
Usage:
vpp-probe discover [flags]
Examples:
# Discover VPP instances in Kubernetes pods with label "app=vpp"
vpp-probe discover -e kube -q "label=app=vpp"
# Discover VPP instances in Docker container with name "vpp1"
vpp-probe discover -e docker -q "name=vpp1"
# Discover instances running locally
vpp-probe discover
Flags:
--extraclis strings Additional CLI commands to run for each instance.
-f, --format string Output format.
-h, --help help for discover
--printclis Print output from CLI commands for each instance.
Example
$ vpp-probe --kubecontext="cluster1,cluster2" --query "label=networkservicemesh.io/app=vl3-nse-bar" --query="label=app=wcm-nsm-vpp-forwarder" discover
----------
= Instance: map[cluster:kind-kind-2 created:Thu Jan 7 18:34:05 CET 2021 env:kube ip:10.244.0.17 namespace:wcm-system pod:vl3-nse-bar-66b4fb99d9-dfwzf uid:0c293e71-dcc6-4a1f-882b-2d40d9462bc4]
----------
Version: 20.05.1-6~gf53edbc3b~b1
IDX INTERFACE TYPE STATE IP VRF MTU DETAILS OTHER
2 bar498hf MEMIF up 172.100.248.6/30 0 0 socket:/var/lib/networkservicemesh/nsmK1XbEPWK2/memif.sock master:true
1 bar8wc6b MEMIF up 172.100.248.2/30 0 0 socket:/var/lib/networkservicemesh/nsmXG3kEPWwt/memif.sock master:true
2 vpp interfaces
----------
= Instance: map[cluster:kind-kind-2 created:Thu Jan 7 18:34:05 CET 2021 env:kube ip:10.244.0.16 namespace:wcm-system pod:vl3-nse-bar-66b4fb99d9-hchwr uid:fda7b201-a00f-40bd-bc64-b06f2c4ef853]
----------
Version: 20.05.1-6~gf53edbc3b~b1
IDX INTERFACE TYPE STATE IP VRF MTU DETAILS OTHER
3 bar498hf MEMIF up 172.100.244.1/30 0 0 socket:/var/lib/networkservicemesh/bar498hf/memif.sock
2 bark9xnj MEMIF up 172.100.248.1/30 0 0 socket:/var/lib/networkservicemesh/bark9xnj/memif.sock
4 barrfslq MEMIF up 172.100.240.1/30 0 0 socket:/var/lib/networkservicemesh/barrfslq/memif.sock
1 helloworld-bar-5d459ccb88-cqdh8MEMIF up 172.100.252.2/30 0 0 socket:/var/lib/networkservicemesh/nsmAUFxvg5wK/memif.sock master:true
4 vpp interfaces
----------
= Instance: map[cluster:kind-kind-2 created:Thu Jan 7 18:28:45 CET 2021 env:kube ip:172.19.0.4 namespace:nsm-system pod:wcm-nsm-vpp-forwarder-ld2rd uid:47084545-2371-4fd4-aa16-22e21d086dfd]
----------
Version: 20.05.1-6~gf53edbc3b~b1
IDX INTERFACE TYPE STATE IP VRF MTU DETAILS OTHER
2 DST-1 MEMIF up 0 1450 socket:/var/lib/networkservicemesh/nsm-28/nsmAUFxvg5wK/memif.sock (l2xc to SRC-1)
4 DST-5 VXLAN_TUNNEL up 0 0 src:172.19.0.4 -> dst:172.19.0.5 (vni:2) (l2xc to SRC-5)
6 DST-6 VXLAN_TUNNEL up 0 0 src:172.19.0.4 -> dst:172.19.0.5 (vni:4) (l2xc to SRC-6)
8 DST-7 MEMIF up 0 1450 socket:/var/lib/networkservicemesh/nsm-21/nsmK1XbEPWK2/memif.sock (l2xc to SRC-7)
3 SRC-1 TAP up 0 1450 host_ifname:tap-1015135623 version:2 (l2xc to DST-1)
5 SRC-5 MEMIF up 0 1450 socket:/var/lib/networkservicemesh/nsm-28/bar498hf/memif.sock master:true (l2xc to DST-5)
7 SRC-6 MEMIF up 0 1450 socket:/var/lib/networkservicemesh/nsm-28/barrfslq/memif.sock master:true (l2xc to DST-6)
9 SRC-7 VXLAN_TUNNEL up 0 0 src:172.19.0.4 -> dst:172.19.0.5 (vni:3) (l2xc to DST-7)
1 mgmt AF_PACKET up 172.19.0.4/16 fd24:f853:ccd:e793::4/64 0 0 host_if_name:eth0
9 vpp interfaces
1 linux interfaces:
- name:"SRC-1" type:TAP_TO_VPP namespace:{type:FD reference:"/proc/6071/ns/net"} host_if_name:"nsm0" enabled:true ip_addresses:"172.100.252.1/30" mtu:1450 tap:{vpp_tap_if_name:"SRC-1"}:
----------
= Instance: map[cluster:kind-kind-3 created:Thu Jan 7 18:34:17 CET 2021 env:kube ip:10.244.0.16 namespace:wcm-system pod:vl3-nse-bar-66b4fb99d9-hr472 uid:0f67bba3-5e33-4dc4-ab34-9b9c35e99b15]
----------
Version: 20.05.1-6~gf53edbc3b~b1
IDX INTERFACE TYPE STATE IP VRF MTU DETAILS OTHER
2 bar498hf MEMIF up 172.100.240.6/30 0 0 socket:/var/lib/networkservicemesh/nsmvsp7nk0I9/memif.sock master:true
1 bar8wc6b MEMIF up 172.100.240.2/30 0 0 socket:/var/lib/networkservicemesh/nsm4J4xni0IW/memif.sock master:true
2 vpp interfaces
----------
= Instance: map[cluster:kind-kind-3 created:Thu Jan 7 18:34:17 CET 2021 env:kube ip:10.244.0.17 namespace:wcm-system pod:vl3-nse-bar-66b4fb99d9-s4jpn uid:383a77e7-3ecf-4c76-8cec-12bc04420c60]
----------
Version: 20.05.1-6~gf53edbc3b~b1
IDX INTERFACE TYPE STATE IP VRF MTU DETAILS OTHER
1 bar8wc6b MEMIF up 172.100.244.2/30 0 0 socket:/var/lib/networkservicemesh/nsmA50GeutD/memif.sock master:true
4 bark9xnj MEMIF up 172.100.248.5/30 0 0 socket:/var/lib/networkservicemesh/bark9xnj/memif.sock
3 barrfslq MEMIF up 172.100.240.5/30 0 0 socket:/var/lib/networkservicemesh/barrfslq/memif.sock
2 helloworld-bar-75cf458c88-nt4h2MEMIF up 172.100.244.6/30 0 0 socket:/var/lib/networkservicemesh/nsmJsPZa7KRD/memif.sock master:true
4 vpp interfaces
----------
= Instance: map[cluster:kind-kind-3 created:Thu Jan 7 18:30:58 CET 2021 env:kube ip:172.19.0.5 namespace:nsm-system pod:wcm-nsm-vpp-forwarder-9skvw uid:fcf3508d-010f-4d5b-8be0-3f0933cc9998]
----------
Version: 20.05.1-6~gf53edbc3b~b1
IDX INTERFACE TYPE STATE IP VRF MTU DETAILS OTHER
2 DST-1 MEMIF up 0 1450 socket:/var/lib/networkservicemesh/nsm-11/nsmA50GeutD/memif.sock (l2xc to SRC-1)
4 DST-3 MEMIF up 0 1450 socket:/var/lib/networkservicemesh/nsm-6/nsm4J4xni0IW/memif.sock (l2xc to SRC-3)
6 DST-5 MEMIF up 0 1450 socket:/var/lib/networkservicemesh/nsm-11/nsmJsPZa7KRD/memif.sock (l2xc to SRC-5)
8 DST-9 VXLAN_TUNNEL up 0 0 src:172.19.0.5 -> dst:172.19.0.4 (vni:3) (l2xc to SRC-9)
3 SRC-1 VXLAN_TUNNEL up 0 0 src:172.19.0.5 -> dst:172.19.0.4 (vni:2) (l2xc to DST-1)
5 SRC-3 VXLAN_TUNNEL up 0 0 src:172.19.0.5 -> dst:172.19.0.4 (vni:4) (l2xc to DST-3)
7 SRC-5 TAP up 0 1450 host_ifname:tap-948025147 version:2 (l2xc to DST-5)
9 SRC-9 MEMIF up 0 1450 socket:/var/lib/networkservicemesh/nsm-11/bark9xnj/memif.sock master:true (l2xc to DST-9)
1 mgmt AF_PACKET up 172.19.0.5/16 fd24:f853:ccd:e793::5/64 0 0 host_if_name:eth0
9 vpp interfaces
1 linux interfaces:
- name:"SRC-5" type:TAP_TO_VPP namespace:{type:FD reference:"/proc/5517/ns/net"} host_if_name:"nsm0" enabled:true ip_addresses:"172.100.244.5/30" mtu:1450 tap:{vpp_tap_if_name:"SRC-5"}:
The exec
command will execute custom command on selected VPP instances. The --query
flag is not required, but can be used to set parameters for selecting only some of the instances or even specify exact instance, if no query parameters are specified, the command will be executed on all available VPP instances.
vpp-probe exec --help
Execute command on VPP instances
Usage:
vpp-probe exec [options] command [command...] [flags]
Flags:
-f, --format string Output format (json, yaml, go-template..)
-h, --help help for exec
Global Flags:
--apisock string Path to VPP binary API socket file (used in local env)
--clisock string Path to VPP CLIsocket file (used in local env)
-D, --debug Enable debug mode
--dockerhost string Daemon socket(s) to connect to (implies docker env)
-e, --env string Environment type in which VPP is running. Supported environments are local, docker and kube,
where VPP is running as a local process, as a Docker container or as a Kubernetes pod, respectivelly.
--kubeconfig string Path to kubeconfig, defaults to ~/.kube/config (or set via KUBECONFIG) (implies kube env)
--kubecontext , The name of the kubeconfig context to use, multiple contexts separated by a comma , (implies kube env)
-L, --loglevel string Set logging level
-q, --query stringArray Selector query to filter VPP instances on, supports '=' (e.g --query key1=value1).
Multiple parameters in a single query (using AND logic) are separated by a comma (e.g. -q key1=val1,key2=val2) and
multiple queries (using OR logic) can be defined as additional flag options (e.g. -q k1=v1 -q k1=v2).
Parameter types depend on probe environment (defined with --env).
--statsock string Path to VPP stats API socket file (used in local env)
Example
$ vpp-probe -e kube exec "agentctl config history"
----------------------------------------------------------------------------------------------------------------------------------
pod: vl3-nse-bar-686499b8f5-75hff | namespace: wcm-system | node: kind-3-control-plane | cluster: kind-kind-3 | ip: 10.244.0.23
----------------------------------------------------------------------------------------------------------------------------------
# agentctl config history (took 1.217587925s)
SEQ TYPE START INPUT OPERATIONS RESULT SUMMARY
0 config replace 6d 16 values <none> <none>
1 config change 6d 2 values CREATE:6 ok CONFIGURED:5, PENDING:1
2 status update 6d 1 values CREATE:1 ok OBTAINED:1
3 status update 6d 2 values CREATE:2, DELETE:1 ok CONFIGURED:1, OBTAINED:1, REMOVED:1
4 config change 6d 2 values CREATE:5 ok CONFIGURED:5
5 status update 6d 1 values CREATE:1 ok OBTAINED:1
----------------------------------------------------------------------------------------------------------------------------------
pod: vl3-nse-bar-686499b8f5-pcvl9 | namespace: wcm-system | node: kind-3-control-plane | cluster: kind-kind-3 | ip: 10.244.0.22
----------------------------------------------------------------------------------------------------------------------------------
# agentctl config history (took 1.259570126s)
SEQ TYPE START INPUT OPERATIONS RESULT SUMMARY
0 config replace 6d 16 values <none> <none>
1 config change 6d 2 values CREATE:6 ok CONFIGURED:5, PENDING:1
2 status update 6d 1 values CREATE:1 ok OBTAINED:1
3 status update 6d 2 values CREATE:2, DELETE:1 ok CONFIGURED:1, OBTAINED:1, REMOVED:1
4 config change 6d 4 values CREATE:6 ok CONFIGURED:5, PENDING:1
5 status update 6d 1 values CREATE:1 ok OBTAINED:1
6 status update 6d 2 values CREATE:2, DELETE:1 ok CONFIGURED:1, OBTAINED:1, REMOVED:1
----------------------------------------------------------------------------------------------------------------------------------
pod: wcm-nsm-vpp-forwarder-bdxjf | namespace: nsm-system | node: kind-3-control-plane | cluster: kind-kind-3 | ip: 172.19.0.5
----------------------------------------------------------------------------------------------------------------------------------
# agentctl config history (took 1.066952177s)
SEQ TYPE START INPUT OPERATIONS RESULT SUMMARY
0 config replace 6d 29 values <none> <none>
1 config change 6d 15 values CREATE:21 ok CONFIGURED:21
2 status update 6d 1 values CREATE:1 ok OBTAINED:1
3 status update 6d 2 values CREATE:1, DELETE:1 ok OBTAINED:1, REMOVED:1
4 status update 6d 1 values CREATE:1 ok OBTAINED:1
5 status update 6d 1 values CREATE:1 ok OBTAINED:1
6 status update 6d 1 values CREATE:1 ok OBTAINED:1
7 status update 6d 1 values CREATE:1 ok OBTAINED:1
8 config change 6d 6 values CREATE:9 ok CONFIGURED:8, PENDING:1
9 status update 6d 1 values CREATE:1 ok OBTAINED:1
----------------------------------------------------------------------------------------------------------------------------------
pod: vl3-nse-bar-76b6c4787d-drb7x | namespace: wcm-system | node: kind-2-control-plane | cluster: kind-kind-2 | ip: 10.244.0.22
----------------------------------------------------------------------------------------------------------------------------------
# agentctl config history (took 1.404398753s)
SEQ TYPE START INPUT OPERATIONS RESULT SUMMARY
0 config replace 6d 16 values <none> <none>
1 config change 6d 2 values CREATE:6 ok CONFIGURED:5, PENDING:1
2 status update 6d 1 values CREATE:1 ok OBTAINED:1
3 status update 6d 2 values CREATE:2, DELETE:1 ok CONFIGURED:1, OBTAINED:1, REMOVED:1
4 config change 6d 4 values CREATE:6 ok CONFIGURED:5, PENDING:1
5 status update 6d 1 values CREATE:1 ok OBTAINED:1
6 status update 6d 2 values CREATE:2, DELETE:1 ok CONFIGURED:1, OBTAINED:1, REMOVED:1
----------------------------------------------------------------------------------------------------------------------------------
pod: vl3-nse-bar-76b6c4787d-vqrd8 | namespace: wcm-system | node: kind-2-control-plane | cluster: kind-kind-2 | ip: 10.244.0.21
----------------------------------------------------------------------------------------------------------------------------------
# agentctl config history (took 1.434726412s)
SEQ TYPE START INPUT OPERATIONS RESULT SUMMARY
0 config replace 6d 16 values <none> <none>
1 config change 6d 1 values CREATE:5 ok CONFIGURED:4, PENDING:1
2 status update 6d 1 values CREATE:1 ok OBTAINED:1
3 config change 6d 2 values CREATE:5 ok CONFIGURED:5
4 status update 6d 1 values CREATE:1 ok OBTAINED:1
5 config change 6d 2 values CREATE:5 ok CONFIGURED:5
----------------------------------------------------------------------------------------------------------------------------------
pod: wcm-nsm-vpp-forwarder-285k8 | namespace: nsm-system | node: kind-2-control-plane | cluster: kind-kind-2 | ip: 172.19.0.4
----------------------------------------------------------------------------------------------------------------------------------
# agentctl config history (took 1.644209131s)
SEQ TYPE START INPUT OPERATIONS RESULT SUMMARY
0 config replace 6d 29 values <none> <none>
1 config change 6d 15 values CREATE:21 ok CONFIGURED:21
2 status update 6d 1 values CREATE:1 ok OBTAINED:1
3 status update 6d 2 values CREATE:1, DELETE:1 ok OBTAINED:1, REMOVED:1
4 status update 6d 1 values CREATE:1 ok OBTAINED:1
The tracer
command will run arbitrary command, usually ping
, curl
or sleep
, and during execution of the command it will trace packets on selected VPP instances. The --query
flag is not required, but can be used to set parameters for selecting only some of the instances or even specify exact instance, if no query parameters are specified packets will be traced on all available VPP instances.
vpp-probe tracer --help
Trace packets from selected VPP instances during execution of custom command (usually ping), or for a specified duration.
Usage:
vpp-probe tracer [flags] -- [command]
Aliases:
tracer, trace
Examples:
# Trace packets while running ping
trace --env kube -q label=app=vpp -- ping 10.10.1.1
# Trace packets for duration 3s
trace --env kube -q label=app=vpp -d 5s
Flags:
-d, --dur duration Duration of tracing (ignored when command is defined) (default 5s)
-h, --help help for tracer
--numpackets uint Number of packets to vpptrace per node (default 10000)
--print Print results from tracing to stdout
--resultdir string Directory to store raw VPP trace results (default "/tmp/vppprobe-traces")
--tracenodes strings List of traced nodes (default [af-packet-input,memif-input,tuntap-rx,virtio-input])
Example
$ vpp-probe -e kube -q name=vpp-vnf1 -q name=vpp-vnf2 -q name=vpp-vswitch tracer --print -- kubectl exec -it vpp-vswitch -- ping -c 1 192.168.23.2
INFO[0000] tracing started for 3/3 instances
INFO[0000] running command: /bin/sh -c kubectl --context=kind-c2 exec -it vpp-vswitch -- ping -c 1 192.168.23.2
Unable to use a TTY - input is not a terminal or the right kind of file
PING 192.168.23.2 (192.168.23.2) 56(84) bytes of data.
64 bytes from 192.168.23.2: icmp_seq=1 ttl=64 time=55.1 ms
--- 192.168.23.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 55.167/55.167/55.167/0.000 ms
INFO[0001] trace results retrieved from 3 instances
INFO[0001] = instance vpp::kind-c2/default/vpp-vnf1
INFO[0001] traced: 4 packets
INFO[0001] trace data saved to: /tmp/vppprobe-traces/vpptrace_vpp__kind-c2~default~vpp-vnf1_20210108t175534.txt
INFO[0001] = instance vpp::kind-c2/default/vpp-vnf1: traced 4 packets
# Packet 1 | ⏲ 01:36:16.99700 | memif-input → memif1/2-output | took 11.724ms | nodes 5
- memif-input
memif: hw_if_index 1 next-index 4
slot: ring 0
- ethernet-input
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
- l2-input
l2-input: sw_if_index 1 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57
- l2-output
l2-output: sw_if_index 2 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57 data 08 00 45 00 00 54 6c b9 40 00 40 01
- memif1/2-output
memif1/2
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
ICMP: 192.168.23.1 -> 192.168.23.2
tos 0x00, ttl 64, length 84, checksum 0x1e9c dscp CS0 ecn NON_ECN
fragment id 0x6cb9, flags DONT_FRAGMENT
ICMP echo_request checksum 0x8169
# Packet 2 | ⏲ 01:36:17.03600 | memif-input → memif1/4-output | took 8.777ms | nodes 5
- memif-input
memif: hw_if_index 2 next-index 4
slot: ring 0
- ethernet-input
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
- l2-input
l2-input: sw_if_index 2 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da
- l2-output
l2-output: sw_if_index 1 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da data 08 00 45 00 00 54 25 6d 00 00 40 01
- memif1/4-output
memif1/4
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
ICMP: 192.168.23.2 -> 192.168.23.1
tos 0x00, ttl 64, length 84, checksum 0xa5e8 dscp CS0 ecn NON_ECN
fragment id 0x256d
ICMP echo_reply checksum 0x8969
# Packet 3 | ⏲ 01:36:17.41300 | memif-input → memif1/2-output | took 11.422ms | nodes 5
- memif-input
memif: hw_if_index 1 next-index 4
slot: ring 0
- ethernet-input
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
- l2-input
l2-input: sw_if_index 1 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57
- l2-output
l2-output: sw_if_index 2 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57 data 08 00 45 00 00 54 6d 01 40 00 40 01
- memif1/2-output
memif1/2
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
ICMP: 192.168.23.1 -> 192.168.23.2
tos 0x00, ttl 64, length 84, checksum 0x1e54 dscp CS0 ecn NON_ECN
fragment id 0x6d01, flags DONT_FRAGMENT
ICMP echo_request checksum 0x2e4c
# Packet 4 | ⏲ 01:36:17.46100 | memif-input → memif1/4-output | took 24µs | nodes 5
- memif-input
memif: hw_if_index 2 next-index 4
slot: ring 0
- ethernet-input
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
- l2-input
l2-input: sw_if_index 2 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da
- l2-output
l2-output: sw_if_index 1 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da data 08 00 45 00 00 54 25 84 00 00 40 01
- memif1/4-output
memif1/4
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
ICMP: 192.168.23.2 -> 192.168.23.1
tos 0x00, ttl 64, length 84, checksum 0xa5d1 dscp CS0 ecn NON_ECN
fragment id 0x2584
ICMP echo_reply checksum 0x364c
INFO[0001] = instance vpp::kind-c2/default/vpp-vnf2
INFO[0001] traced: 2 packets
INFO[0001] trace data saved to: /tmp/vppprobe-traces/vpptrace_vpp__kind-c2~default~vpp-vnf2_20210108t175534.txt
INFO[0001] = instance vpp::kind-c2/default/vpp-vnf2: traced 2 packets
# Packet 1 | ⏲ 01:36:17.43000 | memif-input → memif1/1-output | took 18µs | nodes 5
- memif-input
memif: hw_if_index 1 next-index 4
slot: ring 0
- ethernet-input
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
- l2-input
l2-input: sw_if_index 1 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57
- l2-output
l2-output: sw_if_index 2 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57 data 08 00 45 00 00 54 6d 01 40 00 40 01
- memif1/1-output
memif1/1
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
ICMP: 192.168.23.1 -> 192.168.23.2
tos 0x00, ttl 64, length 84, checksum 0x1e54 dscp CS0 ecn NON_ECN
fragment id 0x6d01, flags DONT_FRAGMENT
ICMP echo_request checksum 0x2e4c
# Packet 2 | ⏲ 01:36:17.43500 | memif-input → memif1/3-output | took 7.92ms | nodes 5
- memif-input
memif: hw_if_index 2 next-index 4
slot: ring 0
- ethernet-input
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
- l2-input
l2-input: sw_if_index 2 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da
- l2-output
l2-output: sw_if_index 1 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da data 08 00 45 00 00 54 25 84 00 00 40 01
- memif1/3-output
memif1/3
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
ICMP: 192.168.23.2 -> 192.168.23.1
tos 0x00, ttl 64, length 84, checksum 0xa5d1 dscp CS0 ecn NON_ECN
fragment id 0x2584
ICMP echo_reply checksum 0x364c
INFO[0001] = instance vpp::kind-c2/default/vpp-vswitch
INFO[0001] traced: 6 packets
INFO[0001] trace data saved to: /tmp/vppprobe-traces/vpptrace_vpp__kind-c2~default~vpp-vswitch_20210108t175534.txt
INFO[0001] = instance vpp::kind-c2/default/vpp-vswitch: traced 6 packets
# Packet 1 | ⏲ 01:36:17.41300 | virtio-input → memif1/4-output | took 75µs | nodes 5
- virtio-input
virtio: hw_if_index 2 next-index 4 vring 0 len 98
hdr: flags 0x00 gso_type 0x00 hdr_len 0 gso_size 0 csum_start 0 csum_offset 0 num_buffers 1
- ethernet-input
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
- l2-input
l2-input: sw_if_index 2 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57
- l2-output
l2-output: sw_if_index 3 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57 data 08 00 45 00 00 54 6d 01 40 00 40 01
- memif1/4-output
memif1/4
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
ICMP: 192.168.23.1 -> 192.168.23.2
tos 0x00, ttl 64, length 84, checksum 0x1e54 dscp CS0 ecn NON_ECN
fragment id 0x6d01, flags DONT_FRAGMENT
ICMP echo_request checksum 0x2e4c
# Packet 2 | ⏲ 01:36:17.42800 | memif-input → memif1/3-output | took 49µs | nodes 5
- memif-input
memif: hw_if_index 4 next-index 4
slot: ring 0
- ethernet-input
frame: flags 0x1, hw-if-index 4, sw-if-index 4
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
- l2-input
l2-input: sw_if_index 4 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57
- l2-output
l2-output: sw_if_index 5 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57 data 08 00 45 00 00 54 6d 01 40 00 40 01
- memif1/3-output
memif1/3
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
ICMP: 192.168.23.1 -> 192.168.23.2
tos 0x00, ttl 64, length 84, checksum 0x1e54 dscp CS0 ecn NON_ECN
fragment id 0x6d01, flags DONT_FRAGMENT
ICMP echo_request checksum 0x2e4c
# Packet 3 | ⏲ 01:36:17.44000 | memif-input → tap1-output | took 74µs | nodes 5
- memif-input
memif: hw_if_index 6 next-index 4
slot: ring 0
- ethernet-input
frame: flags 0x1, hw-if-index 6, sw-if-index 6
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
- l2-input
l2-input: sw_if_index 6 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57
- l2-output
l2-output: sw_if_index 1 dst 02:fe:1d:4d:e5:da src 02:fe:0b:d8:dc:57 data 08 00 45 00 00 54 6d 01 40 00 40 01
- tap1-output
tap1
IP4: 02:fe:0b:d8:dc:57 -> 02:fe:1d:4d:e5:da
ICMP: 192.168.23.1 -> 192.168.23.2
tos 0x00, ttl 64, length 84, checksum 0x1e54 dscp CS0 ecn NON_ECN
fragment id 0x6d01, flags DONT_FRAGMENT
ICMP echo_request checksum 0x2e4c
# Packet 4 | ⏲ 01:36:17.44200 | virtio-input → memif1/1-output | took 19µs | nodes 5
- virtio-input
virtio: hw_if_index 1 next-index 4 vring 0 len 98
hdr: flags 0x00 gso_type 0x00 hdr_len 0 gso_size 0 csum_start 0 csum_offset 0 num_buffers 1
- ethernet-input
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
- l2-input
l2-input: sw_if_index 1 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da
- l2-output
l2-output: sw_if_index 6 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da data 08 00 45 00 00 54 25 84 00 00 40 01
- memif1/1-output
memif1/1
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
ICMP: 192.168.23.2 -> 192.168.23.1
tos 0x00, ttl 64, length 84, checksum 0xa5d1 dscp CS0 ecn NON_ECN
fragment id 0x2584
ICMP echo_reply checksum 0x364c
# Packet 5 | ⏲ 01:36:17.45100 | memif-input → memif1/2-output | took 52µs | nodes 5
- memif-input
memif: hw_if_index 5 next-index 4
slot: ring 0
- ethernet-input
frame: flags 0x1, hw-if-index 5, sw-if-index 5
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
- l2-input
l2-input: sw_if_index 5 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da
- l2-output
l2-output: sw_if_index 4 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da data 08 00 45 00 00 54 25 84 00 00 40 01
- memif1/2-output
memif1/2
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
ICMP: 192.168.23.2 -> 192.168.23.1
tos 0x00, ttl 64, length 84, checksum 0xa5d1 dscp CS0 ecn NON_ECN
fragment id 0x2584
ICMP echo_reply checksum 0x364c
# Packet 6 | ⏲ 01:36:17.46400 | memif-input → tap0-output | took 22µs | nodes 5
- memif-input
memif: hw_if_index 3 next-index 4
slot: ring 0
- ethernet-input
frame: flags 0x1, hw-if-index 3, sw-if-index 3
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
- l2-input
l2-input: sw_if_index 3 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da
- l2-output
l2-output: sw_if_index 2 dst 02:fe:0b:d8:dc:57 src 02:fe:1d:4d:e5:da data 08 00 45 00 00 54 25 84 00 00 40 01
- tap0-output
tap0
IP4: 02:fe:1d:4d:e5:da -> 02:fe:0b:d8:dc:57
ICMP: 192.168.23.2 -> 192.168.23.1
tos 0x00, ttl 64, length 84, checksum 0xa5d1 dscp CS0 ecn NON_ECN
fragment id 0x2584
ICMP echo_reply checksum 0x364c