All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] pktgen: Add IMIX mode
@ 2021-08-17 23:51 Nicholas Richardson
  2021-08-17 23:51 ` [PATCH v3 1/3] pktgen: Parse internet mix (imix) input Nicholas Richardson
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Nicholas Richardson @ 2021-08-17 23:51 UTC (permalink / raw)
  To: netdev, davem, kuba
  Cc: nrrichar, promanov, arunkaly, Nick Richardson,
	Gustavo A. R. Silva, Di Zhu, Yejune Deng, Leesoo Ahn, Ye Bin,
	linux-kernel

From: Nick Richardson <richardsonnick@google.com>

Adds internet mix (IMIX) mode to pktgen. Internet mix is
included in many user-space network perf testing tools. It allows
for the user to specify a distribution of discrete packet sizes to be
generated. This type of test is common among vendors when perf testing 
their devices.
[RFC link: https://datatracker.ietf.org/doc/html/rfc2544#section-9.1]

This allows users to get a
more complete picture of how their device will perform in the
real-world.

This feature adds a command that allows users to specify an imix
distribution in the following format:
  imix_weights size_1,weight_1 size_2,weight_2 ... size_n,weight_n

The distribution of packets with size_i will be 
(weight_i / total_weights) where
total_weights = weight_1 + weight_2 + ... + weight_n

For example:
  imix_weights 40,7 576,4 1500,1

The pkt_size "40" will account for 7 / (7 + 4 + 1) = ~58% of the total
packets sent.

This patch was tested with the following:
1. imix_weights = 40,7 576,4 1500,1
2. imix_weights = 0,7 576,4 1500,1
  - Packet size of 0 is resized to the minimum, 42
3. imix_weights = 40,7 576,4 1500,1 count = 0
  - Zero count.
  - Runs until user stops pktgen.
Invalid Configurations
1. clone_skb = 200 imix_weights = 40,7 576,4 1500,1
    - Returns error code -524 (-ENOTSUPP) when setting imix_weights
2. len(imix_weights) > MAX_IMIX_ENTRIES
    - Returns -7 (-E2BIG)

This patch is split into three parts, each provide different aspects of
required functionality:
  1. Parse internet mix input.
  2. Add IMIX Distribution representation.
  3. Process and output IMIX results.

Changes in v2:
* Remove __ prefix outside of uAPI.
* Use seq_puts instead of seq_printf where necessary.
* Reorder variable declaration.
* Return -EINVAL instead of -ENOTSUPP when using IMIX with clone_skb > 0.

Changes in v3:
* Move fill_imix_bins() out of #ifdef CONFIG_XFRM block.

Nick Richardson (3):
  pktgen: Parse internet mix (imix) input
  pktgen: Add imix distribution bins
  pktgen: Add output for imix results

 net/core/pktgen.c | 163 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 162 insertions(+), 1 deletion(-)

-- 
2.32.0.605.g8dce9f2422-goog


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-08-18  0:32 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-17 23:51 [PATCH v3 0/3] pktgen: Add IMIX mode Nicholas Richardson
2021-08-17 23:51 ` [PATCH v3 1/3] pktgen: Parse internet mix (imix) input Nicholas Richardson
2021-08-17 23:51 ` [PATCH v3 2/3] pktgen: Add imix distribution bins Nicholas Richardson
2021-08-17 23:51 ` [PATCH v3 3/3] pktgen: Add output for imix results Nicholas Richardson
2021-08-18  0:32 ` [PATCH v3 0/3] pktgen: Add IMIX mode Jakub Kicinski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.