diff options
author | imarom <imarom@cisco.com> | 2016-02-09 11:18:47 -0500 |
---|---|---|
committer | imarom <imarom@cisco.com> | 2016-02-09 11:18:47 -0500 |
commit | ede68c669fde984d6095e9313d49a8af295ae885 (patch) | |
tree | 3c3d52457bc94475f413a04b82f6e4e80b48b64f /scripts/stl/imix.py | |
parent | 1ab9a175ca7d49f7ae843d46a76c36baa16ff39d (diff) | |
parent | 59d48a12d2c2f1e7a42e44265c4a3a4c1c8651fd (diff) |
Merge branch 'refactor'
Diffstat (limited to 'scripts/stl/imix.py')
-rw-r--r-- | scripts/stl/imix.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/scripts/stl/imix.py b/scripts/stl/imix.py new file mode 100644 index 00000000..3abce1d4 --- /dev/null +++ b/scripts/stl/imix.py @@ -0,0 +1,67 @@ +from trex_stl_lib.api import * + +# IMIX profile - involves 3 streams of UDP packets +# 1 - 60 bytes +# 2 - 590 bytes +# 3 - 1514 bytes +class STLImix(object): + + def __init__ (self): + # default IP range + self.ip_range = {'src': {'start': "10.0.0.1", 'end': "10.0.0.254"}, + 'dst': {'start': "8.0.0.1", 'end': "8.0.0.254"}} + + # default IMIX properties + self.imix_table = [ {'size': 60, 'pps': 28}, + {'size': 590, 'pps': 20}, + {'size': 1514, 'pps': 4}] + + + def create_stream (self, size, pps, vm): + # create a base packet and pad it to size + base_pkt = Ether()/IP()/UDP() + pad = max(0, size - len(base_pkt)) * 'x' + + pkt = STLPktBuilder(pkt = base_pkt/pad, + vm = vm) + + return STLStream(packet = pkt, + mode = STLTXCont()) + + + def get_streams (self, direction = 0): + + if direction == 0: + src = self.ip_range['src'] + dst = self.ip_range['dst'] + else: + src = self.ip_range['dst'] + dst = self.ip_range['src'] + + # construct the base packet for the profile + + vm =[ + # src + STLVmFlowVar(name="src",min_value=src['start'],max_value=src['end'],size=4,op="inc"), + STLVmWriteFlowVar(fv_name="src",pkt_offset= "IP.src"), + + # dst + STLVmFlowVar(name="dst",min_value=dst['start'],max_value=dst['end'],size=4,op="inc"), + STLVmWriteFlowVar(fv_name="dst",pkt_offset= "IP.dst"), + + # checksum + STLVmFixIpv4(offset = "IP") + + ] + + # create imix streams + return [self.create_stream(x['size'], x['pps'], vm) for x in self.imix_table] + + + +# dynamic load - used for trex console or simulator +def register(): + return STLImix() + + + |