TRex does mix seeds when distributing over workers,
but it is multiplicative [0], so zero is the only bad value.
Limit restricts the cycle length of PRNG (by resetting [1] the seed).
We want the cycle as long as possible.
[0] https://github.com/cisco-system-traffic-generator/trex-core/blob/v2.73/src/stx/stl/trex_stl_stream_vm.h#L1616
[1] https://github.com/cisco-system-traffic-generator/trex-core/blob/v2.73/src/stx/stl/trex_stl_stream_vm.h#L313-L314
Change-Id: I33a29496f0853ef60d592c988f81a9d1109b5878
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
(cherry picked from commit
eedb7dff222d2590ac2cb5a5e67dc7d90317f05c)
"""Stream profile."""
def __init__(self):
- """Initialization and setting of streams" parameters."""
+ """Initialization and setting of streams' parameters."""
super(TrafficStreamsBaseClass, self).__init__()
# Direction 0 --> 1
base_pkt_a = (
- Ether() /
- IP(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip,
- proto=61
- )
+ Ether() /
+ IP(
+ src=self.p1_src_start_ip,
+ dst=self.p1_dst_start_ip,
+ proto=61
+ )
)
# Direction 1 --> 0
base_pkt_b = (
- Ether() /
- IP(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip,
- proto=61
- )
+ Ether() /
+ IP(
+ src=self.p2_src_start_ip,
+ dst=self.p2_dst_start_ip,
+ proto=61
+ )
)
# Direction 0 --> 1
min_value=self.p1_dst_start_ip,
max_value=self.p1_dst_end_ip,
size=4,
- limit=10000
+ seed=1,
+ # Cycle length. TRex does not allow any higher value.
+ limit=(2**24 - 1)
),
STLVmWrFlowVar(
fv_name=u"dst",
min_value=self.p2_dst_start_ip,
max_value=self.p2_dst_end_ip,
size=4,
- limit=10000
+ # Using a different seed to be extra sure
+ # nothing useful gets cached.
+ seed=2,
+ limit=(2**24 - 1)
),
STLVmWrFlowVar(
fv_name=u"dst",
"""Stream profile."""
def __init__(self):
- """Initialization and setting of streams" parameters."""
+ """Initialization and setting of streams' parameters."""
super(TrafficStreamsBaseClass, self).__init__()
# Direction 0 --> 1
base_pkt_a = (
- Ether() /
- IP(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip,
- proto=61
- )
+ Ether() /
+ IP(
+ src=self.p1_src_start_ip,
+ dst=self.p1_dst_start_ip,
+ proto=61
+ )
)
# Direction 1 --> 0
base_pkt_b = (
- Ether() /
- IP(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip,
- proto=61
- )
+ Ether() /
+ IP(
+ src=self.p2_src_start_ip,
+ dst=self.p2_dst_start_ip,
+ proto=61
+ )
)
# Direction 0 --> 1
min_value=self.p1_dst_start_ip,
max_value=self.p1_dst_end_ip,
size=4,
- limit=100000
+ seed=1,
+ limit=(2**24 - 1)
),
STLVmWrFlowVar(
fv_name=u"dst",
min_value=self.p2_dst_start_ip,
max_value=self.p2_dst_end_ip,
size=4,
- limit=100000
+ seed=2,
+ limit=(2**24 - 1)
),
STLVmWrFlowVar(
fv_name=u"dst",
"""Stream profile."""
def __init__(self):
- """Initialization and setting of streams" parameters."""
+ """Initialization and setting of streams' parameters."""
super(TrafficStreamsBaseClass, self).__init__()
# Direction 0 --> 1
base_pkt_a = (
- Ether() /
- IP(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip,
- proto=61
- )
+ Ether() /
+ IP(
+ src=self.p1_src_start_ip,
+ dst=self.p1_dst_start_ip,
+ proto=61
+ )
)
# Direction 1 --> 0
base_pkt_b = (
- Ether() /
- IP(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip,
- proto=61
- )
+ Ether() /
+ IP(
+ src=self.p2_src_start_ip,
+ dst=self.p2_dst_start_ip,
+ proto=61
+ )
)
# Direction 0 --> 1
min_value=self.p1_dst_start_ip,
max_value=self.p1_dst_end_ip,
size=4,
- limit=1000000
+ seed=1,
+ limit=(2**24 - 1)
),
STLVmWrFlowVar(
fv_name=u"dst",
min_value=self.p2_dst_start_ip,
max_value=self.p2_dst_end_ip,
size=4,
- limit=1000000
+ seed=2,
+ limit=(2**24 - 1)
),
STLVmWrFlowVar(
fv_name=u"dst",