From 301d6ca6e36efdc5a1534615d57f3527560befad Mon Sep 17 00:00:00 2001 From: Yaroslav Brustinov Date: Tue, 23 Feb 2016 11:23:08 -0500 Subject: [PATCH] hltapi: add line rate and bps support --- .../functional_tests/hltapi_stream_builder_test.py | 34 ++++++++++-------- .../stl/trex_stl_lib/trex_stl_hltapi.py | 40 +++++++++++++-------- .../stl/trex_stl_lib/trex_stl_streams.py | 15 ++++---- scripts/exp/hlt_david1.pcap | Bin 8140 -> 4192 bytes scripts/exp/hlt_david2.pcap | Bin 8118 -> 4158 bytes scripts/exp/hlt_david3.pcap | Bin 10264 -> 10264 bytes scripts/exp/hlt_david4.pcap | Bin 1624 -> 1624 bytes scripts/stl/hlt/hlt_david1.py | 2 +- scripts/stl/hlt/hlt_david3.py | 2 +- scripts/stl/hlt/hlt_tcp_ranges.py | 1 + scripts/stl/hlt/hlt_udp_inc_dec_len_9k.py | 2 ++ 11 files changed, 56 insertions(+), 40 deletions(-) diff --git a/scripts/automation/regression/unit_tests/functional_tests/hltapi_stream_builder_test.py b/scripts/automation/regression/unit_tests/functional_tests/hltapi_stream_builder_test.py index 297034db..30a9f6f8 100755 --- a/scripts/automation/regression/unit_tests/functional_tests/hltapi_stream_builder_test.py +++ b/scripts/automation/regression/unit_tests/functional_tests/hltapi_stream_builder_test.py @@ -47,7 +47,7 @@ class CTRexHltApi_Test(unittest.TestCase): flags: 3 isg: 0.0 mode: - pps: 1 + percentage: 10.0 type: continuous packet: binary: AAAAAAAAAAABAAABCABFAAAyAAAAAEAGusUAAAAAwAAAAQQAAFAAAAABAAAAAVAAD+U1/QAAISEhISEhISEhIQ== @@ -92,7 +92,8 @@ TBD ip_dst_addr = '5.5.5.5', ip_dst_count = 2, ip_dst_mode = 'random', - name = 'test_ip_ranges') + name = 'test_ip_ranges', + rate_pps = 1) self.test_yaml = test_stream.dump_to_yaml(self.yaml_save_location()) self.golden_yaml = ''' - name: test_ip_ranges @@ -102,7 +103,7 @@ TBD flags: 3 isg: 0.0 mode: - pps: 1 + pps: 1.0 type: continuous packet: binary: AAAAAAAAAAABAAABCABFAAAyAAAAAEAGrxPAqAEBBQUFBQQAAFAAAAABAAAAAVAAD+UqSwAAISEhISEhISEhIQ== @@ -150,7 +151,8 @@ TBD tcp_dst_port_mode = 'random', tcp_dst_port_count = 10, tcp_dst_port = 1234, - name = 'test_tcp_ranges') + name = 'test_tcp_ranges', + rate_pps = '2') self.test_yaml = test_stream.dump_to_yaml(self.yaml_save_location()) self.golden_yaml = ''' - name: test_tcp_ranges @@ -160,7 +162,7 @@ TBD flags: 3 isg: 0.0 mode: - pps: 1 + pps: 2.0 type: continuous packet: binary: AAAAAAAAAAABAAABCABFAAAyAAAAAEAGusUAAAAAwAAAAQQABNIAAAABAAAAAVAAD+UxewAAISEhISEhISEhIQ== @@ -227,7 +229,8 @@ TBD udp_dst_port_mode = 'increment', udp_dst_port_count = 10, udp_dst_port = 1234, - name = 'test_udp_ranges') + name = 'test_udp_ranges', + rate_percent = 20,) self.test_yaml = test_stream.dump_to_yaml(self.yaml_save_location()) self.golden_yaml = ''' - name: test_udp_ranges @@ -237,7 +240,7 @@ TBD flags: 3 isg: 0.0 mode: - pps: 1 + percentage: 20.0 type: continuous packet: binary: AAAAAAAAAAABAAABCABFAAAyAAAAAEARuroAAAAAwAAAAQTSBNIAHsmgISEhISEhISEhISEhISEhISEhISEhIQ== @@ -287,7 +290,8 @@ TBD test_stream = STLHltStream(length_mode = 'decrement', frame_size_min = 100, frame_size_max = 3000, - name = 'test_pkt_len_by_framesize') + name = 'test_pkt_len_by_framesize', + rate_bps = 1000) self.test_yaml = test_stream.dump_to_yaml(self.yaml_save_location()) self.golden_yaml = ''' - name: test_pkt_len_by_framesize @@ -297,7 +301,7 @@ TBD flags: 3 isg: 0.0 mode: - pps: 1 + bps_L2: 1000.0 type: continuous packet: binary: AAAAAAAAAAABAAABCABFAAuqAAAAAEAGr00AAAAAwAAAAQQAAFAAAAABAAAAAVAAD+UwiwAAISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEh @@ -343,7 +347,7 @@ TBD flags: 3 isg: 0.0 mode: - pps: 1 + percentage: 10.0 type: continuous packet: binary: AAAAAAAAAAABAAABCABFAAGQAAAAAEARuVwAAAAAwAAAAQQAAFABfCaTISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEh @@ -397,7 +401,7 @@ TBD flags: 3 isg: 0.0 mode: - pps: 1 + percentage: 10.0 type: continuous packet: binary: AAAAAAAAAAABAAABgQAwAAgARQAALgAAAABABrrJAAAAAMAAAAEEAABQAAAAAQAAAAFQAA/leEMAACEhISEhIQ== @@ -429,7 +433,7 @@ TBD flags: 3 isg: 0.0 mode: - pps: 1 + percentage: 10.0 type: continuous packet: binary: AAAAAAAAAAABAAABgQAwAYEAMAKBADADgQAwBAgARQAARgAAAABABrqxAAAAAMAAAAEEAABQAAAAAQAAAAFQAA/l6p0AACEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIQ== @@ -461,7 +465,7 @@ TBD flags: 3 isg: 0.0 mode: - pps: 1 + percentage: 10.0 type: continuous packet: binary: AAAAAAAAAAABAAABgQAwAYEAMAKBADPogQAwBIEAMAUIAEUAAEIAAAAAQAa6tQAAAADAAAABBAAAUAAAAAEAAAABUAAP5SzkAAAhISEhISEhISEhISEhISEhISEhISEhISEhIQ== @@ -540,7 +544,7 @@ TBD flags: 3 isg: 0.0 mode: - pps: 1 + percentage: 10.0 type: continuous packet: binary: AAAAAAAAAAABAAABht1gAAAAAG4GQP6AAAAAAAAAAAAAAAAAABL+gAAAAAAAAAAAAAAAAAAiBAAAUAAAAAEAAAABUAAP5ctLAAAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISE= @@ -570,7 +574,7 @@ TBD flags: 3 isg: 0.0 mode: - pps: 1 + percentage: 10.0 type: continuous packet: binary: AAAAAAAAAAABAAABht1gAAAAAG4RQBERIiIzM0REVVVmZnd3iIgRERERERERERERERERERERBAAAUABucjohISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISE= diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_hltapi.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_hltapi.py index 581ea418..593c4c47 100755 --- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_hltapi.py +++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_hltapi.py @@ -27,9 +27,9 @@ traffic_config_kwargs = { 'port_handle2': None, # stream builder parameters 'transmit_mode': 'continuous', # ( continuous | multi_burst | single_burst ) - 'rate_pps': 1, # TODO: support bps and percent once stateless API will, use rate_percent by default + 'rate_pps': None, 'rate_bps': None, - 'rate_percent': 100, + 'rate_percent': 10, 'stream_id': None, 'name': None, 'bidirectional': 0, @@ -663,55 +663,67 @@ class CTRexHltApi(object): def STLHltStream(**user_kwargs): kwargs = merge_kwargs(traffic_config_kwargs, user_kwargs) + # verify rate is given by at most one arg + rate_args = set(['rate_pps', 'rate_bps', 'rate_percent']) + intersect_rate_args = list(rate_args & set(user_kwargs.keys())) + if len(intersect_rate_args) > 1: + raise STLError('More than one rate argument specified: %s' % intersect_rate_args) + try: + rate_key = intersect_rate_args[0] + except IndexError: + rate_key = 'rate_percent' + if kwargs['length_mode'] == 'imix': # several streams with given length streams_arr = [] user_kwargs['length_mode'] = 'fixed' if kwargs['l3_imix1_size'] < 32 or kwargs['l3_imix2_size'] < 32 or kwargs['l3_imix3_size'] < 32 or kwargs['l3_imix4_size'] < 32: raise STLError('l3_imix*_size should be at least 32') - total_rate = kwargs['l3_imix1_ratio'] + kwargs['l3_imix2_ratio'] + kwargs['l3_imix3_ratio'] + kwargs['l3_imix4_ratio'] - if total_rate == 0: + total_ratio = kwargs['l3_imix1_ratio'] + kwargs['l3_imix2_ratio'] + kwargs['l3_imix3_ratio'] + kwargs['l3_imix4_ratio'] + if total_ratio == 0: raise STLError('Used length_mode imix, but all the ratios are 0') save_to_yaml = kwargs.get('save_to_yaml') - rate_pps = float(kwargs['rate_pps']) + total_rate = float(kwargs[rate_key]) if kwargs['l3_imix1_ratio'] > 0: if save_to_yaml and type(save_to_yaml) is str: user_kwargs['save_to_yaml'] = save_to_yaml.replace('.yaml', '_imix1.yaml') user_kwargs['frame_size'] = kwargs['l3_imix1_size'] - user_kwargs['rate_pps'] = rate_pps * kwargs['l3_imix1_ratio'] / total_rate + user_kwargs[rate_key] = total_rate * kwargs['l3_imix1_ratio'] / total_ratio streams_arr.append(STLHltStream(**user_kwargs)) if kwargs['l3_imix2_ratio'] > 0: if save_to_yaml and type(save_to_yaml) is str: user_kwargs['save_to_yaml'] = save_to_yaml.replace('.yaml', '_imix2.yaml') user_kwargs['frame_size'] = kwargs['l3_imix2_size'] - user_kwargs['rate_pps'] = rate_pps * kwargs['l3_imix2_ratio'] / total_rate + user_kwargs[rate_key] = total_rate * kwargs['l3_imix2_ratio'] / total_ratio streams_arr.append(STLHltStream(**user_kwargs)) if kwargs['l3_imix3_ratio'] > 0: if save_to_yaml and type(save_to_yaml) is str: user_kwargs['save_to_yaml'] = save_to_yaml.replace('.yaml', '_imix3.yaml') user_kwargs['frame_size'] = kwargs['l3_imix3_size'] - user_kwargs['rate_pps'] = rate_pps * kwargs['l3_imix3_ratio'] / total_rate + user_kwargs[rate_key] = total_rate * kwargs['l3_imix3_ratio'] / total_ratio streams_arr.append(STLHltStream(**user_kwargs)) if kwargs['l3_imix4_ratio'] > 0: if save_to_yaml and type(save_to_yaml) is str: user_kwargs['save_to_yaml'] = save_to_yaml.replace('.yaml', '_imix4.yaml') user_kwargs['frame_size'] = kwargs['l3_imix4_size'] - user_kwargs['rate_pps'] = rate_pps * kwargs['l3_imix4_ratio'] / total_rate + user_kwargs[rate_key] = total_rate * kwargs['l3_imix4_ratio'] / total_ratio streams_arr.append(STLHltStream(**user_kwargs)) return streams_arr # packet generation packet = generate_packet(**user_kwargs) try: + # TODO: verify if bps is L1 or L2, use L2 for now + rate_types_dict = {'rate_pps': 'pps', 'rate_bps': 'bps_L2', 'rate_percent': 'percentage'} + rate_stateless = {rate_types_dict[rate_key]: float(kwargs[rate_key])} transmit_mode = kwargs['transmit_mode'] - rate_pps = kwargs['rate_pps'] pkts_per_burst = kwargs['pkts_per_burst'] if transmit_mode == 'continuous': - transmit_mode_class = STLTXCont(pps = rate_pps) + transmit_mode_class = STLTXCont(**rate_stateless) elif transmit_mode == 'single_burst': - transmit_mode_class = STLTXSingleBurst(pps = rate_pps, total_pkts = pkts_per_burst) + transmit_mode_class = STLTXSingleBurst(total_pkts = pkts_per_burst, **rate_stateless) elif transmit_mode == 'multi_burst': - transmit_mode_class = STLTXMultiBurst(pps = rate_pps, total_pkts = pkts_per_burst, - count = int(kwargs['burst_loop_count']), ibg = kwargs['inter_burst_gap']) + transmit_mode_class = STLTXMultiBurst(total_pkts = pkts_per_burst, count = int(kwargs['burst_loop_count']), + ibg = kwargs['inter_burst_gap'], **rate_stateless) else: raise STLError('transmit_mode %s not supported/implemented') except Exception as e: diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py index f79d25c3..df30db5f 100644 --- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py +++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_streams.py @@ -64,9 +64,9 @@ class STLTXMode(object): # continuous mode class STLTXCont(STLTXMode): - def __init__ (self, pps = None, bps_L1 = None, bps_L2 = None, percentage = None): + def __init__ (self, **kwargs): - super(STLTXCont, self).__init__(pps, bps_L1, bps_L2, percentage) + super(STLTXCont, self).__init__(**kwargs) self.fields['type'] = 'continuous' @@ -76,12 +76,12 @@ class STLTXCont(STLTXMode): # single burst mode class STLTXSingleBurst(STLTXMode): - def __init__ (self, total_pkts = 1, pps = None, bps_L1 = None, bps_L2 = None, percentage = None): + def __init__ (self, total_pkts = 1, **kwargs): if not isinstance(total_pkts, int): raise STLArgumentError('total_pkts', total_pkts) - super(STLTXSingleBurst, self).__init__(pps, bps_L1, bps_L2, percentage) + super(STLTXSingleBurst, self).__init__(**kwargs) self.fields['type'] = 'single_burst' self.fields['total_pkts'] = total_pkts @@ -96,10 +96,7 @@ class STLTXMultiBurst(STLTXMode): pkts_per_burst = 1, ibg = 0.0, # usec not SEC count = 1, - pps = None, - bps_L1 = None, - bps_L2 = None, - percentage = None): + **kwargs): if not isinstance(pkts_per_burst, int): raise STLArgumentError('pkts_per_burst', pkts_per_burst) @@ -110,7 +107,7 @@ class STLTXMultiBurst(STLTXMode): if not isinstance(count, int): raise STLArgumentError('count', count) - super(STLTXMultiBurst, self).__init__(pps, bps_L1, bps_L2, percentage) + super(STLTXMultiBurst, self).__init__(**kwargs) self.fields['type'] = 'multi_burst' self.fields['pkts_per_burst'] = pkts_per_burst diff --git a/scripts/exp/hlt_david1.pcap b/scripts/exp/hlt_david1.pcap index 54013ae88ad855f9ac0a7d778c8c05479ceb5826..6c9a1cc80230b163686d68e0bde5f564ca9d39c8 100644 GIT binary patch delta 211 zcmX?O|3G2GHV$?MAW&dnm^@$5AIx?@VkaQ68<5xwk=O^3*bkA|jEo2~m5|s@NbDpC in~eboQW!V?<8xsGyP*k5%_1cBVI=lrBsMb>*e(D`J0_a| delta 175 zcmaE$aK?VaHV$@11_lP*XIzsHa``hdZ_Z`&WMXFq3Q2ddfrQvufox7aCa^RcM4AmK zWG2E3mgWGmRd#TIr8yzeTtFeA7#6TJH;`@b#1EF{*(mv!m5~Rch!-dUvy~qr#19mL O*(wNR!)z4-O9KFG`z780 diff --git a/scripts/exp/hlt_david2.pcap b/scripts/exp/hlt_david2.pcap index 8a75dd014d6ffea520c195ee0a2c3c95d9f2707c..2c76a8a86047fb2102f173e38879a17d52adf667 100644 GIT binary patch delta 210 zcmdmHzfWPq77lg>AP`_+m^@L?7tB^fVjCf`osrlfNbD3Ob}16O4T(J+iM;}ey%WM_ g1-W70=8t@?OkgLRL{f4KiTxUh{RfH7%LsNp0C*H8bpQYW delta 175 zcmdm|u+4tM77lhs1_lP*XIzsP^7%3{Z_Z}(WMXFq3Q2ddfrQvufox7aCa^RcM4AmK zWG2E3mgWGmRd#TIr8yzeTtFeA7#6TJH;`@b#1EF{*(mv!m5~Rch!-dUvy~qr#19mL O*(wNR!)z4-O9KGjN+fIm diff --git a/scripts/exp/hlt_david3.pcap b/scripts/exp/hlt_david3.pcap index 2044d2f3b13551e3e2341836bd18ec72690014ef..d7c43f2b0be65de7cae797cfd42f0ea3eb4fcd0b 100644 GIT binary patch delta 200 zcmbOcFe6}t1QRO*5b$r5{mlqw$-`NCaF!jM182>FvsS}dyWylK{!3&dgrxsQ`^quehDQxd_{05bu!t1XTI delta 121 zcmW;6%MpMe3_!t25K$2DbCIr69%X2SGQK@*w{Fj^B5(UdlpRm(dFH?iuN*n?#+eIO K-ud8@um1t$hb3wN diff --git a/scripts/exp/hlt_david4.pcap b/scripts/exp/hlt_david4.pcap index 46995494e7023c47e5f44c85587c38ad03049aeb..a28d8ab1f7e33cb91d78b88688512764bf796556 100644 GIT binary patch delta 187 zcmcb?bAx9>1|!47On+7eAYh!h*Bi`Wn#{`xW5q&Q%#+tbSuB(P!dbpd5Ou7R=R#R* tlixyF>=R`nlI#<6Aq)R>PrPS&=QGeH&8iHv{eO(u73ntg{&e9