From: Ravi Tandon <ravi.tandon1982@gmail.com>
To: users@dpdk.org
Subject: [dpdk-users] Replicating PCAP packets read by pktgen for multiple source addresses
Date: Sun, 13 Sep 2020 23:59:30 +0200 [thread overview]
Message-ID: <CAKDHAW9GPKDdiwc5kpSVK=5nuGX3x3MRESt_xEUQvxpXY9UnvQ@mail.gmail.com> (raw)
Hi,
I want to use pktgen to read a pcap file and play that pcap file say 10
times by editing the source IP address for each run, please let me know
what's the best way of doing this.
I first thought of editing the source IP in the rte_mbuf pointed by pkts
before calling the rte_eth_tx_burst(info->pid, qid, pkts, cnt) function but
it seems that rte_eth_tx_burst function frees up the rte_mbuf pointed by
pkts after sending the packet once so I cannot edit the pkts buffer again.
static __inline__ void
trafficgen_send_burst(port_info_t *info, uint16_t qid)
{
struct mbuf_table *mtab = &info->q[qid].tx_mbufs;
struct rte_mbuf **pkts;
struct qstats_s *qstats;
uint32_t ret, cnt, tap, rnd, tstamp, i;
int32_t seq_idx;
if ((cnt = mtab->len) == 0)
return;
mtab->len = 0;
pkts = mtab->m_table;
if (trafficgen_tst_port_flags(info, SEND_RANGE_PKTS))
seq_idx = RANGE_PKT;
else if (trafficgen_tst_port_flags(info, SEND_RATE_PACKETS))
seq_idx = RATE_PKT;
else
seq_idx = SINGLE_PKT;
tap = trafficgen_tst_port_flags(info, PROCESS_TX_TAP_PKTS);
rnd = trafficgen_tst_port_flags(info, SEND_RANDOM_PKTS);
tstamp = trafficgen_tst_port_flags(info, (SEND_LATENCY_PKTS |
SEND_RATE_PACKETS));
qstats = &info->qstats[qid];
qstats->txpkts += cnt;
for (i = 0; i < cnt; i++)
qstats->txbytes += rte_pktmbuf_data_len(pkts[i]);
*/*Inserting a for loop here doesn't help as rte_mbuf is freed by
rte_eth_tx_burst*/*
/* Send all of the packets before we can exit this function */
while (cnt) {
if (rnd)
trafficgen_rnd_bits_apply(info, pkts, cnt, NULL);
if (tstamp)
trafficgen_tstamp_apply(info, pkts, cnt, seq_idx);
ret = rte_eth_tx_burst(info->pid, qid, pkts, cnt);
if (tap)
trafficgen_do_tx_tap(info, pkts, ret);
pkts += ret;
cnt -= ret;
}
}
Basically, I want to resend buffers stored in rte_mbuf again and again,
after modifying source IP in each run.
Thanks
Ravi
next reply other threads:[~2020-09-13 21:59 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-13 21:59 Ravi Tandon [this message]
2020-09-14 13:30 ` Wiles, Keith
2020-09-14 16:03 ` Ravi Tandon
2020-09-14 17:52 ` Ravi Tandon
2020-09-14 21:19 ` Ravi Tandon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAKDHAW9GPKDdiwc5kpSVK=5nuGX3x3MRESt_xEUQvxpXY9UnvQ@mail.gmail.com' \
--to=ravi.tandon1982@gmail.com \
--cc=users@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).