[dpdk-dev] [RFC PATCH 0/2] using scapy to generate packet templates

Xueming Li xuemingl at mellanox.com
Thu Oct 19 16:06:47 CEST 2017


The target is to make testpmd flexible to generate all kinds of packet
in just one line. Examples:
 
# send UDP packet to port 0 queue 0
testpmd> scapy 0 Ether()/IP()/UDP()/"hello_world"

# send 4 L3 VXLAN packets with inner UDP dport 1-4 to port 1 queue 1-4, one packet per queue
testpmd> scapy 1 Ether()/IP()/UDP()/VXLAN()/IPv6()/UDP(dport=(1,4))/"cool"

# Random
testpmd> scapy 2 Ether(src=RandMAC())/IP(dst=RandIP())/TCP(sport=RandShort(),dport=0x1234)

This patch introduce scapy - a python tool to generate static packet templates.
Txonly forwarding mode is modified to support template if available.
 
Two new configuration:
CONFIG_RTE_TEST_PMD_SCAPY=y
CONFIG_RTE_PYTHON=python2.7

Scapy quick demo: http://www.secdev.org/projects/scapy/demo.html

There are 2 other potential solution to support more fancy sending in the future:
1. Invoke scapy and expose mbuf hugepage pointers to python
   This should allow more flexible and dynamic processing
2. Scapy uses wrapped DPDK port as regular port
   Make scapy capable to send high speed streams.

Xueming Li (2):
  app/testpmd: add packet template
  app/testpmd: add scapy command as pkt template

 app/test-pmd/Makefile  |  5 +++
 app/test-pmd/cmdline.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++-
 app/test-pmd/testpmd.c |  3 ++
 app/test-pmd/testpmd.h |  1 +
 app/test-pmd/txonly.c  | 42 +++++++++++++--------
 config/common_base     |  2 +
 6 files changed, 135 insertions(+), 17 deletions(-)

-- 
2.13.3



More information about the dev mailing list