diff options
author | 2016-02-01 11:58:17 +0200 | |
---|---|---|
committer | 2016-02-01 11:58:17 +0200 | |
commit | 00d74df1d05ce2b47d37574fda8806d71841d3e9 (patch) | |
tree | 032d4457292ec4e3021a67ac5ddb90683da059ec /scripts/stl | |
parent | dcacbb143335db3c6939e2d9dd87055c323e4ab3 (diff) | |
parent | f9dcbd38e90601f5571bb5bcfb67170876ecd3c6 (diff) |
Merge from origin
Diffstat (limited to 'scripts/stl')
-rw-r--r-- | scripts/stl/imix_1pkt_vm.yaml | 2 | ||||
-rw-r--r-- | scripts/stl/profiles/__init__.py | 0 | ||||
-rw-r--r-- | scripts/stl/profiles/imix.py | 87 |
3 files changed, 88 insertions, 1 deletions
diff --git a/scripts/stl/imix_1pkt_vm.yaml b/scripts/stl/imix_1pkt_vm.yaml index bdb0b438..21075fa2 100644 --- a/scripts/stl/imix_1pkt_vm.yaml +++ b/scripts/stl/imix_1pkt_vm.yaml @@ -25,7 +25,7 @@ "add_value" : 1, "is_big_endian" : false, "name" : "l3_src", - "pkt_offset" : 34, + "pkt_offset" : 30, "type" : "write_flow_var" } ] diff --git a/scripts/stl/profiles/__init__.py b/scripts/stl/profiles/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/scripts/stl/profiles/__init__.py diff --git a/scripts/stl/profiles/imix.py b/scripts/stl/profiles/imix.py new file mode 100644 index 00000000..c0305cc3 --- /dev/null +++ b/scripts/stl/profiles/imix.py @@ -0,0 +1,87 @@ + +from common.trex_streams import * +from client_utils.packet_builder import CTRexPktBuilder + + +class STLImix(object): + + def __init__ (self): + ip_range = {'src' : {}, 'dst': {}} + + ip_range['src']['start'] = "10.0.0.1" + ip_range['src']['end'] = "10.0.0.254" + ip_range['dst']['start'] = "8.0.0.1" + ip_range['dst']['end'] = "8.0.0.254" + + self.ip_range = ip_range + + def get_streams (self, flip = False): + + # construct the base packet for the profile + base_pkt = CTRexPktBuilder() + + base_pkt.add_pkt_layer("l2", dpkt.ethernet.Ethernet()) + base_pkt.set_layer_attr("l2", "type", dpkt.ethernet.ETH_TYPE_IP) + base_pkt.add_pkt_layer("l3_ip", dpkt.ip.IP()) + base_pkt.add_pkt_layer("l4_udp", dpkt.udp.UDP()) + + + if not flip: + src = self.ip_range['src'] + dst = self.ip_range['dst'] + else: + src = self.ip_range['dst'] + dst = self.ip_range['src'] + + base_pkt.set_vm_ip_range(ip_layer_name = "l3_ip", + ip_field = "src", + ip_start = src['start'], + ip_end = src['end'], + operation = "inc", + split = True) + + base_pkt.set_vm_ip_range(ip_layer_name = "l3_ip", + ip_field = "dst", + ip_start = dst['start'], + ip_end = dst['end'], + operation = "inc") + + + + # pad to 60 bytes + pkt_1 = base_pkt.clone() + payload_size = 60 - len(pkt_1.get_layer('l2')) + pkt_1.set_pkt_payload("a" * payload_size) + + pkt_1.set_layer_attr("l3_ip", "len", len(pkt_1.get_layer('l3_ip'))) + + + s1 = STLStream(packet = pkt_1, + mode = STLTXCont()) + + # stream 2 + pkt_2 = base_pkt.clone() + payload_size = 590 - len(pkt_2.get_layer('l2')) + pkt_2.set_pkt_payload("a" * payload_size) + + pkt_2.set_layer_attr("l3_ip", "len", len(pkt_2.get_layer('l3_ip'))) + + s2 = STLStream(packet = pkt_2, + mode = STLTXCont()) + + + # stream 3 + pkt_3 = base_pkt.clone() + payload_size = 1514 - len(pkt_3.get_layer('l2')) + pkt_3.set_pkt_payload("a" * payload_size) + + pkt_3.set_layer_attr("l3_ip", "len", len(pkt_3.get_layer('l3_ip'))) + + s3 = STLStream(packet = pkt_3, + mode = STLTXCont()) + + return [s1, s2, s3] + +# dynamic load +def register(): + return STLImix() |