diff options
author | 2016-02-10 10:46:04 +0200 | |
---|---|---|
committer | 2016-02-10 10:46:04 +0200 | |
commit | d673fcc4f798ac260f467abb8848d3d39fc861aa (patch) | |
tree | 13ba764765092436a28b736d55ebb1444ec08bfb /scripts/stl | |
parent | ede68c669fde984d6095e9313d49a8af295ae885 (diff) | |
parent | a01110c1054d6f5509eee9ad014461742f049514 (diff) |
Merge more tests
Diffstat (limited to 'scripts/stl')
-rw-r--r-- | scripts/stl/imix.py | 13 | ||||
-rw-r--r-- | scripts/stl/profiles/udp_1pkt_1mac.py | 44 | ||||
-rw-r--r-- | scripts/stl/profiles/udp_1pkt_1mac_override.py | 53 | ||||
-rw-r--r-- | scripts/stl/profiles/udp_1pkt_mac.py | 44 | ||||
-rw-r--r-- | scripts/stl/profiles/udp_1pkt_mpls.py | 37 | ||||
-rw-r--r-- | scripts/stl/profiles/udp_1pkt_mpls_vm.py | 42 | ||||
-rw-r--r-- | scripts/stl/profiles/udp_inc_len_9k.py | 57 |
7 files changed, 284 insertions, 6 deletions
diff --git a/scripts/stl/imix.py b/scripts/stl/imix.py index 3abce1d4..875f2544 100644 --- a/scripts/stl/imix.py +++ b/scripts/stl/imix.py @@ -12,12 +12,12 @@ class STLImix(object): '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}] + self.imix_table = [ {'size': 60, 'pps': 28, 'isg':0 }, + {'size': 590, 'pps': 20, 'isg':0.1 }, + {'size': 1514, 'pps': 4, 'isg':0.2 } ] - def create_stream (self, size, pps, vm): + def create_stream (self, size, pps,isg, vm ): # create a base packet and pad it to size base_pkt = Ether()/IP()/UDP() pad = max(0, size - len(base_pkt)) * 'x' @@ -25,7 +25,8 @@ class STLImix(object): pkt = STLPktBuilder(pkt = base_pkt/pad, vm = vm) - return STLStream(packet = pkt, + return STLStream(isg = isg, + packet = pkt, mode = STLTXCont()) @@ -55,7 +56,7 @@ class STLImix(object): ] # create imix streams - return [self.create_stream(x['size'], x['pps'], vm) for x in self.imix_table] + return [self.create_stream(x['size'], x['pps'],x['isg'] , vm) for x in self.imix_table] diff --git a/scripts/stl/profiles/udp_1pkt_1mac.py b/scripts/stl/profiles/udp_1pkt_1mac.py new file mode 100644 index 00000000..4e666ad7 --- /dev/null +++ b/scripts/stl/profiles/udp_1pkt_1mac.py @@ -0,0 +1,44 @@ +import sys +import os + +# Should be removed +# TBD fix this +CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) +API_PATH = os.path.join(CURRENT_PATH, "../../api/stl") +sys.path.insert(0, API_PATH) + +from scapy.all import * +from trex_stl_api import * + +# 1 clients MAC override the LSB of destination +class STLS1(object): + + def __init__ (self): + self.fsize =64; # the size of the packet + + def create_stream (self): + + # create a base packet and pad it to size + size = self.fsize - 4; # no FCS + base_pkt = Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025) + pad = max(0, size - len(base_pkt)) * 'x' + + vm = CTRexScRaw( [ CTRexVmDescFlowVar(name="mac_src", min_value=1, max_value=1, size=1, op="inc"), # 1 byte varible, range 1-1 ( workaround) + CTRexVmDescWrFlowVar(fv_name="mac_src", pkt_offset= 11) # write it to LSB of SRC offset it 11 + ] + ) + + return STLStream(packet = STLPktBuilder(pkt = base_pkt/pad,vm = vm), + mode = STLTXCont( pps=10 )) + + def get_streams (self, direction = 0): + # create 1 stream + return [ self.create_stream() ] + + +# dynamic load - used for trex console or simulator +def register(): + return STLS1() + + + diff --git a/scripts/stl/profiles/udp_1pkt_1mac_override.py b/scripts/stl/profiles/udp_1pkt_1mac_override.py new file mode 100644 index 00000000..38f10d9a --- /dev/null +++ b/scripts/stl/profiles/udp_1pkt_1mac_override.py @@ -0,0 +1,53 @@ +import sys +import os + +# Should be removed +# TBD fix this +CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) +API_PATH = os.path.join(CURRENT_PATH, "../../api/stl") +sys.path.insert(0, API_PATH) + +from scapy.all import * +from trex_stl_api import * + +# 1 clients MAC override the LSB of destination +# overide the destination mac 00:bb::12:34:56:01 -00:bb::12:34:56:0a +class STLS1(object): + + + def __init__ (self): + self.fsize =64; # the size of the packet + + def create_stream (self): + + # create a base packet and pad it to size + size = self.fsize - 4; # no FCS + base_pkt = Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025) + pad = max(0, size - len(base_pkt)) * 'x' + + vm = CTRexScRaw( [ CTRexVmDescFlowVar(name="dyn_mac_src", min_value=1, max_value=10, size=1, op="inc"), # 1 byte varible, range 1-1 ( workaround) + + CTRexVmDescFlowVar(name="static_mac_src_lsb", min_value=0x12345600, max_value=0x12345600, size=4, op="inc"), # workaround to override the mac 4 LSB byte + CTRexVmDescFlowVar(name="static_mac_src_msb", min_value=0x00bb, max_value=0x00bb, size=2, op="inc"), # workaround to override the mac 2 MSB byte + + CTRexVmDescWrFlowVar(fv_name="static_mac_src_msb", pkt_offset= 6), + CTRexVmDescWrFlowVar(fv_name="static_mac_src_lsb", pkt_offset= 8), + + CTRexVmDescWrFlowVar(fv_name="dyn_mac_src", pkt_offset= 11) + ] + ) + + return STLStream(packet = STLPktBuilder(pkt = base_pkt/pad,vm = vm), + mode = STLTXCont( pps=10 )) + + def get_streams (self, direction = 0): + # create 1 stream + return [ self.create_stream() ] + + +# dynamic load - used for trex console or simulator +def register(): + return STLS1() + + + diff --git a/scripts/stl/profiles/udp_1pkt_mac.py b/scripts/stl/profiles/udp_1pkt_mac.py new file mode 100644 index 00000000..760bca12 --- /dev/null +++ b/scripts/stl/profiles/udp_1pkt_mac.py @@ -0,0 +1,44 @@ +import sys +import os + +# Should be removed +# TBD fix this +CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) +API_PATH = os.path.join(CURRENT_PATH, "../../api/stl") +sys.path.insert(0, API_PATH) + +from scapy.all import * +from trex_stl_api import * + +# 10 clients override the LSB of destination +class STLS1(object): + + def __init__ (self): + self.fsize =64; # the size of the packet + + def create_stream (self): + + # create a base packet and pad it to size + size = self.fsize - 4; # no FCS + base_pkt = Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025) + pad = max(0, size - len(base_pkt)) * 'x' + + vm = CTRexScRaw( [ CTRexVmDescFlowVar(name="mac_src", min_value=1, max_value=10, size=1, op="inc"), # 1 byte varible, range 1-10 + CTRexVmDescWrFlowVar(fv_name="mac_src", pkt_offset= 11) # write it to LSB of SRC + ] + ) + + return STLStream(packet = STLPktBuilder(pkt = base_pkt/pad,vm = vm), + mode = STLTXCont( pps=10 )) + + def get_streams (self, direction = 0): + # create 1 stream + return [ self.create_stream() ] + + +# dynamic load - used for trex console or simulator +def register(): + return STLS1() + + + diff --git a/scripts/stl/profiles/udp_1pkt_mpls.py b/scripts/stl/profiles/udp_1pkt_mpls.py new file mode 100644 index 00000000..6e3a7645 --- /dev/null +++ b/scripts/stl/profiles/udp_1pkt_mpls.py @@ -0,0 +1,37 @@ +import sys +import os + +# Should be removed +# TBD fix this +CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) +API_PATH = os.path.join(CURRENT_PATH, "../../api/stl") +sys.path.insert(0, API_PATH) + +from scapy.all import * +from scapy.contrib.mpls import * # import from contrib folder of scapy +from trex_stl_api import * + + +class STLS1(object): + + def __init__ (self): + pass; + + def create_stream (self): + # 2 MPLS label the internal with s=1 (last one) + pkt = Ether()/MPLS(label=17,cos=1,s=0,ttl=255)/MPLS(label=12,cos=1,s=1,ttl=12)/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025)/('x'*20) + + # burst of 17 packets + return STLStream(packet = STLPktBuilder(pkt = pkt ,vm = []), + mode = STLTXSingleBurst( pps = 1, total_pkts = 17) ) + + + def get_streams (self, direction = 0): + # create 1 stream + return [ self.create_stream() ] + +def register(): + return STLS1() + + + diff --git a/scripts/stl/profiles/udp_1pkt_mpls_vm.py b/scripts/stl/profiles/udp_1pkt_mpls_vm.py new file mode 100644 index 00000000..b324a88d --- /dev/null +++ b/scripts/stl/profiles/udp_1pkt_mpls_vm.py @@ -0,0 +1,42 @@ +import sys +import os + +# Should be removed +# TBD fix this +CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) +API_PATH = os.path.join(CURRENT_PATH, "../../api/stl") +sys.path.insert(0, API_PATH) + +from scapy.all import * +from scapy.contrib.mpls import * # import from contrib folder of scapy +from trex_stl_api import * + + +class STLS1(object): + + def __init__ (self): + pass; + + def create_stream (self): + # 2 MPLS label the internal with s=1 (last one) + pkt = Ether()/MPLS(label=17,cos=1,s=0,ttl=255)/MPLS(label=0,cos=1,s=1,ttl=12)/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025)/('x'*20) + + vm = CTRexScRaw( [ CTRexVmDescFlowVar(name="mlabel", min_value=1, max_value=2000, size=2, op="inc"), # 2 bytes var + CTRexVmDescWrFlowVar(fv_name="mlabel", pkt_offset= "MPLS:1.label") # LABEL is 20 bits expected is val*8 as 3 LSB are off, 16,32,64 .. using new instruction it will be possible to write to any bits + ] + ) + + # burst of 100 packets + return STLStream(packet = STLPktBuilder(pkt = pkt ,vm = vm), + mode = STLTXSingleBurst( pps = 1, total_pkts = 100) ) + + + def get_streams (self, direction = 0): + # create 1 stream + return [ self.create_stream() ] + +def register(): + return STLS1() + + + diff --git a/scripts/stl/profiles/udp_inc_len_9k.py b/scripts/stl/profiles/udp_inc_len_9k.py new file mode 100644 index 00000000..fc22e295 --- /dev/null +++ b/scripts/stl/profiles/udp_inc_len_9k.py @@ -0,0 +1,57 @@ +import sys +import os + +# Should be removed +# TBD fix this +CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) +API_PATH = os.path.join(CURRENT_PATH, "../../api/stl") +sys.path.insert(0, API_PATH) + +from scapy.all import * +from trex_stl_api import * + +class STLS1(object): + + def __init__ (self): + self.max_pkt_size_l3 =9*1024; + + def create_stream (self): + # pkt + p_l2 = Ether(); + p_l3 = IP(src="16.0.0.1",dst="48.0.0.1") + p_l4 = UDP(dport=12,sport=1025) + pyld_size = max(0, self.max_pkt_size_l3 - len(p_l3/p_l4)); + base_pkt = p_l2/p_l3/p_l4/('\x55'*(pyld_size)) + + l3_len_fix =-(len(p_l2)); + l4_len_fix =-(len(p_l2/p_l3)); + + + # vm + vm = CTRexScRaw( [ CTRexVmDescFlowVar(name="fv_rand", min_value=64, max_value=len(base_pkt), size=2, op="inc"), + CTRexVmDescTrimPktSize("fv_rand"), # total packet size + CTRexVmDescWrFlowVar(fv_name="fv_rand", pkt_offset= "IP.len", add_val=l3_len_fix), # fix ip len + CTRexVmDescFixIpv4(offset = "IP"), # fix checksum + CTRexVmDescWrFlowVar(fv_name="fv_rand", pkt_offset= "UDP.len", add_val=l4_len_fix) # fix udp len + ] + ) + + pkt = STLPktBuilder(pkt = base_pkt, + vm = vm) + + return STLStream(packet = pkt, + mode = STLTXCont()) + + + + def get_streams (self, direction = 0): + # create 1 stream + return [ self.create_stream() ] + + +# dynamic load - used for trex console or simulator +def register(): + return STLS1() + + + |