pktgen range命令发送报文通讯对最大为16384

pktgen是基于DPDK的报文发送器,可以非常轻易的将报文发送速度达到上千万PPS,是测试网络产品性能的利器。
在使用过程中,经常有需要模拟高并发的场景。查询pktgen的文档后可以发现pktgen的range子命令可以设置发送报文的源IP、目的IP、源端口、目的端口的发送范围,从而可以模拟出大量通讯对报文。不过在实际使用中发现当设置range的范围超过某个值时就没有办法再提高了,经过测试后发现这个值是16384(不同的pktgen版本有不同的值)。
经过一番搜索后没有发现相关说明,只能查阅相关源代码。最终发现发现如下代码

			/* Create and initialize the default Transmit buffers. */
			info->q[q].tx_mp = pktgen_mbuf_pool_create("Default TX", pid, q,
								   MAX_MBUFS_PER_PORT, sid, cache_size);
			if (info->q[q].tx_mp == NULL)
				pktgen_log_panic("Cannot init port %d for Default TX mbufs", pid);

			/* Create and initialize the range Transmit buffers. */
			info->q[q].range_mp = pktgen_mbuf_pool_create("Range TX", pid, q,
								      MAX_MBUFS_PER_PORT, sid, 0);
			if (info->q[q].range_mp == NULL)
				pktgen_log_panic("Cannot init port %d for Range TX mbufs", pid);

			/* Create and initialize the rate Transmit buffers. */
			info->q[q].rate_mp = pktgen_mbuf_pool_create("Rate TX", pid, q,
								      MAX_MBUFS_PER_PORT, sid, 0);
			if (info->q[q].rate_mp == NULL)
				pktgen_log_panic("Cannot init port %d for Rate TX mbufs", pid);

			/* Create and initialize the sequence Transmit buffers. */
			info->q[q].seq_mp = pktgen_mbuf_pool_create("Sequence TX", pid, q,
								    MAX_MBUFS_PER_PORT, sid, cache_size);
			if (info->q[q].seq_mp == NULL)
				pktgen_log_panic("Cannot init port %d for Sequence TX mbufs", pid);

根据注释可以大概猜测pktgen发送的报文应该是提取初始化在mbuf pool中的(此处为个人猜测没有继续深究代码),pktgen_mbuf_pool_create函数中申请的mbuf个数初始化成为MAX_MBUFS_PER_PORT。查看MAX_MBUFS_PER_PORT定义可以发现该宏展开后的确是16384。因此将这个值调大可以增大pktgen可以模拟通讯对的数量。
还有一个地方需要注意的是,在pktgen_mbuf_pool_create函数中设置每个mbuf的大小,默认的大小大概是10K(可以存放巨帧报文)。根据我们刚刚设置的值mbuf数量将会申请大量的内存,而我们发送的以太网帧最大是1600字节,因此修改此处可以大大减少pktgen需要内存的数量。
修改完代码重新编译Pktgen即可将发送报文的通讯对数量达到你想要的数量级。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值