[dpdk-dev] [RFC v1 00/11] scapy/python extension

Xueming(Steven) Li xuemingl at mellanox.com
Tue Dec 5 07:14:17 CET 2017


Sorry for spamming, something wrong to post patches.
Please refer to https://github.com/steevenlee/dpdk/tree/master_scapy for code detail.

> -----Original Message-----
> From: Xueming Li [mailto:xuemingl at mellanox.com]
> Sent: Tuesday, December 5, 2017 12:55 PM
> To: Wu at dev-r630-06.mtbc.labs.mlnx; Jingjing <jingjing.wu at intel.com>; Harry
> van Haaren <harry.van.haaren at intel.com>
> Cc: Xueming(Steven) Li <xuemingl at mellanox.com>; dev at dpdk.org
> Subject: [RFC v1 00/11] scapy/python extension
> 
> This patch introduced a set of new elements into DPDK:
> 1. python/scapy as a standard dpdk library, disabled by default.
>    Could be used by any application to integrate powerful python features.
> 2. tx, rx and expect, blocking mode testpmd CLI command
>    tx command send packets with scapy syntax template, support range/enum,
> be able to generate multiple flows in one command and DPDK speed.
>    rx command receive packets with timeout, with several choices on how to
> dump packets and mbuf headers.
>    expect command try to send out packet, receive and compare with the
> packet sent, support mbuf header and packet header comparation, show
> detail info or hexdiff if anything different. Expect command is suitable
> for unit test and regression test by saving batch expect scripts into a
> file and use 'load' command to invoke them together.
> 3. pktgen - new testpmd forwarding engine
>   Used to support tx, rx and expect blocking command.
>   Also support rxonly/loopback/forward/macswap non-blocking idle modes
> with several packet dump choice.
> 4. py command - new testpmd CLI
>    Run and evaluate python clause in a global context, samples:
>     - py a = 123; b=0xaaa; hex(a+b)
>     - py eth=Ether();ip=IP();
>     - py hexdump(eth/ip/UDP());
>     - tx 0 eth/ip
>    py shell: sneak into python shell
> 
> The purpose of this scapy/python integration is to help programmers to
> speed up unit test w/o writing complex c code, verify features with batch
> expect scripts. Testpmd already a widely used platform for people to setup
> PMD and verify features with rich CLI command, that's why I choose to make
> new CLI on this familier tool instead of creating a new one.
> 
> I made hundreds of expect test cases when developing rte_flow vxlan and
> GRE features, that makes me pretty confident to touch any code, hope this
> tool help you as well.
> 
> quick guide document:
> 	https://github.com/steevenlee/dpdk/blob/master_scapy/doc/guides/howt
> o/scapy.rst
> github branch:
>         https://github.com/steevenlee/dpdk/tree/master_scapy
> 
> 
> 
> Xueming Li (11):
>   lib/cmdline: support backspace key
>   lib/cmdline: init parse result memeory
>   lib/cmdline: add echo support in batch loading from file
>   app/testpmd: support command echo in CLI batch loading
>   test: update batch loading test
>   lib/python: add embedded python lib
>   app/testpmd: add python command
>   app/testpmd: add pktgen forwarding engine
>   app/testpmd: add pktgen engine scapy commands
>   test/expect: add expect test scripts
>   doc/scapy: add scapy how-to guide
> 
>  app/test-pmd/Makefile                    |    6 +
>  app/test-pmd/cmdline.c                   |   80 ++-
>  app/test-pmd/pktgen.c                    | 1092
> ++++++++++++++++++++++++++++++
>  app/test-pmd/testpmd.c                   |    1 +
>  app/test-pmd/testpmd.h                   |    5 +
>  config/common_base                       |    6 +
>  doc/guides/howto/scapy.rst               |  300 ++++++++
>  lib/Makefile                             |    2 +
>  lib/librte_cmdline/cmdline_parse.c       |    2 +
>  lib/librte_cmdline/cmdline_rdline.c      |    1 +
>  lib/librte_cmdline/cmdline_socket.c      |    5 +-
>  lib/librte_cmdline/cmdline_socket.h      |    3 +-
>  lib/librte_cmdline/cmdline_vt100.c       |    1 +
>  lib/librte_cmdline/cmdline_vt100.h       |    1 +
>  lib/librte_eal/common/include/rte_log.h  |    1 +
>  lib/librte_python/Makefile               |   60 ++
>  lib/librte_python/rte_python.c           |  387 +++++++++++
>  lib/librte_python/rte_python.h           |   71 ++
>  lib/librte_python/rte_python_version.map |   12 +
>  mk/rte.app.mk                            |    1 +
>  test/expect/init.exp                     |   28 +
>  test/expect/rx.exp                       |  134 ++++
>  test/test/test_cmdline_lib.c             |   10 +-
>  23 files changed, 2199 insertions(+), 10 deletions(-)  create mode 100644
> app/test-pmd/pktgen.c  create mode 100644 doc/guides/howto/scapy.rst
> create mode 100644 lib/librte_python/Makefile  create mode 100644
> lib/librte_python/rte_python.c  create mode 100644
> lib/librte_python/rte_python.h  create mode 100644
> lib/librte_python/rte_python_version.map
>  create mode 100644 test/expect/init.exp  create mode 100644
> test/expect/rx.exp
> 
> --
> 2.13.3



More information about the dev mailing list