[dpdk-dev,5/5] doc: update doc for tcpdump feature
Commit Message
Added tcpdump design changes to proc_info section of
sample application user guide.
Added tcpdump design changes env abstraction layer section
of programmers guide.
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
---
doc/guides/prog_guide/env_abstraction_layer.rst | 29 +++++++++++++++++++-
doc/guides/sample_app_ug/proc_info.rst | 34 +++++++++++++++++++++--
2 files changed, 59 insertions(+), 4 deletions(-)
@@ -1,5 +1,5 @@
.. BSD LICENSE
- Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ Copyright(c) 2010-2016 Intel Corporation. All rights reserved.
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -174,6 +174,8 @@ User Space Interrupt Event
The EAL creates a host thread to poll the UIO device file descriptors to detect the interrupts.
Callbacks can be registered or unregistered by the EAL functions for a specific interrupt event
and are called in the host thread asynchronously.
+The EAL thread also polls for tcpdump fd. If fd polled matches tcpdump fd, will initiate tcpdump
+processing.
The EAL also allows timed callbacks to be used in the same way as for NIC interrupts.
.. note::
@@ -207,6 +209,31 @@ The eth_dev driver takes responsibility to program the latter mapping.
The RX interrupt are controlled/enabled/disabled by ethdev APIs - 'rte_eth_dev_rx_intr_*'. They return failure if the PMD
hasn't support them yet. The intr_conf.rxq flag is used to turn on the capability of RX interrupt per device.
++ Tcpdump
+Create socket for tcpdump connection with secondary and registers socket with
+tcpdump epoll event. tcpdump event will be polled as part of interrupt thread.
+
+Creates mempool and two rte_rings for packets duplication and sharing packet info
+with secondary respectively.
+
+Upon receiving tcpdump event, receive either register RX/TX callbacks or remove
+RX/TX callbacks message from secondary on socket.
+
+For Register RX/TX callbacks message:
+ Process port, queue and src ip filter options of message.
+ Registers rte_eth_rxtx_callbacks for a given port and queue information.
+
+ Rx callback will apply src ip filter filter on recived packets and matched packets will be
+ duplicated on to new mempool. Duplicated packets will be enqueued to one of the rte_ring for
+ secondary process to use.
+
+ TX callback will apply src ip filter filter on original packets and if packet matches,
+ reference count of packet will be incremented and enqueued to second rte_ring for
+ secondary process to use.
+
+For Remove RX/TX callbacks message:
+ Removes the registered rte_erth_rxtx callbacks for the given port and queue.
+
Blacklisting
~~~~~~~~~~~~
@@ -1,6 +1,6 @@
.. BSD LICENSE
- Copyright(c) 2015 Intel Corporation. All rights reserved.
+ Copyright(c) 2015-2016 Intel Corporation. All rights reserved.
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -39,19 +39,47 @@ statistics, resetting port statistics and printing DPDK memory information.
This application extends the original functionality that was supported by
dump_cfg.
+This application now supports tcpdump feature. Using command line options
+user will pass on port, queue information along with src ip as filtering option.
+
+Overview of tcpdump flow
+--------------------------
+*Parse given port, queue and src ip filtering options.
+
+*Creates socket to communicate port, queue & src ip filter information with
+primary process to register RX/TX callbacks.
+
+*Creates two pcap devices only with tx queues, one for ingress and other for
+egress tcpdump packets.
+
+Fetches packets from rte_rings which are used between primary and
+proc_info for sharing ingress and egress packets of given port and queue.
+
+Writes on ingress and egress packets of particular port and queue
+to ingress and egress pcap devices respectively.
+
+Upon application termination i.e ctrl+c, sends on socket request to remove
+RX/TX callbacks registerd by primary.
+
Running the Application
-----------------------
The application has a number of command line options:
.. code-block:: console
- ./$(RTE_TARGET)/app/dpdk_proc_info -- -m | [-p PORTMASK] [--stats | --xstats |
- --stats-reset | --xstats-reset]
+ ./$(RTE_TARGET)/app/dpdk_proc_info -- -m | [-p PORTMASK] [--tcpdump (port,queue)] [ --src-ip-filter \"A.B.C.D\"]
+ [--stats | --xstats | --stats-reset | --xstats-reset]
Parameters
~~~~~~~~~~
**-p PORTMASK**: Hexadecimal bitmask of ports to configure.
+**--tcpdump (port,queue)**: port and queue info from which packets should be captured
+for tcpdump
+
+**--src-ip-filter \"A.B.C.D\"**: apply src ip as filtering on packets from given
+tcpdump port and queue.
+
**--stats**
The stats parameter controls the printing of generic port statistics. If no
port mask is specified stats are printed for all DPDK ports.