DPDK usage discussions
 help / color / mirror / Atom feed
* [dpdk-users] Replicating PCAP packets read by pktgen for multiple source addresses
@ 2020-09-13 21:59 Ravi Tandon
  2020-09-14 13:30 ` Wiles, Keith
  0 siblings, 1 reply; 5+ messages in thread
From: Ravi Tandon @ 2020-09-13 21:59 UTC (permalink / raw)
  To: users

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

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

end of thread, other threads:[~2020-09-14 21:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-13 21:59 [dpdk-users] Replicating PCAP packets read by pktgen for multiple source addresses Ravi Tandon
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

DPDK usage discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/users/0 users/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 users users/ https://inbox.dpdk.org/users \
		users@dpdk.org
	public-inbox-index users

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.users


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git