Go to file
Mattias Rönnblom 3f002f0696 eal: replace libc-based random generation with LFSR
This commit replaces rte_rand()'s use of lrand48() with a DPDK-native
combined Linear Feedback Shift Register (LFSR) (also known as
Tausworthe) pseudo-random number generator.

This generator is faster and produces better-quality random numbers
than the linear congruential generator (LCG) of lib's lrand48(). The
implementation, as opposed to lrand48(), is multi-thread safe in
regards to concurrent rte_rand() calls from different lcore threads.
A LCG is still used, but only to seed the five per-lcore LFSR
sequences.

In addition, this patch also addresses the issue of the legacy
implementation only producing 62 bits of pseudo randomness, while the
API requires all 64 bits to be random.

This pseudo-random number generator is not cryptographically secure -
just like lrand48().

Bugzilla ID: 114
Bugzilla ID: 276

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2019-06-28 15:23:38 +02:00
.ci
app eal: replace libc-based random generation with LFSR 2019-06-28 15:23:38 +02:00
buildtools build: generate Windows exports file 2019-06-05 19:49:28 +02:00
config build: enable BSD features visibility for FreeBSD 2019-06-26 16:50:33 +02:00
devtools devtools: select patches to check with git range 2019-05-10 15:16:23 +02:00
doc eal: replace libc-based random generation with LFSR 2019-06-28 15:23:38 +02:00
drivers bus/vmbus: skip non-network devices 2019-06-27 23:13:57 +02:00
examples examples/l3fwd-power: add telemetry mode 2019-06-28 11:50:24 +02:00
kernel kernel/linux: fix modules install path 2019-06-27 17:43:59 +02:00
lib eal: replace libc-based random generation with LFSR 2019-06-28 15:23:38 +02:00
license
mk build: enable BSD features visibility for FreeBSD 2019-06-26 16:50:33 +02:00
usertools telemetry: support global metrics 2019-06-24 16:51:28 +02:00
.gitattributes
.gitignore doc: fix missing asymmetric crypto table 2019-04-18 16:01:28 +02:00
.travis.yml ci: add a distinguisher to the extra Travis builds 2019-04-17 13:56:23 +02:00
GNUmakefile
MAINTAINERS eal: replace libc-based random generation with LFSR 2019-06-28 15:23:38 +02:00
Makefile
meson_options.txt kernel/linux: fix modules install path 2019-06-27 17:43:59 +02:00
meson.build build: enable BSD features visibility for FreeBSD 2019-06-26 16:50:33 +02:00
README
VERSION version: 19.08-rc0 2019-05-14 22:58:22 +02:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD-3-Clause license for the core libraries
and drivers. The kernel components are GPL-2.0 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org