Beispiel #1
0
    def setup_tx_pipeline(cli, port, spec):
        setup_mclasses(cli, globals())
        if spec.imix:
            pkt_templates = [
                _build_pkt(spec, 60),
                _build_pkt(spec, 60),
                _build_pkt(spec, 60),
                _build_pkt(spec, 60),
                _build_pkt(spec, 60),
                _build_pkt(spec, 60),
                _build_pkt(spec, 60),
                _build_pkt(spec, 590),
                _build_pkt(spec, 590),
                _build_pkt(spec, 590),
                _build_pkt(spec, 1514)
            ]
        else:
            pkt_templates = [_build_pkt(spec, spec.pkt_size)]

        num_flows = spec.num_flows

        # Setup tx pipeline
        return Pipeline([
            Source(),
            Rewrite(templates=pkt_templates),
            RandomUpdate(fields=[{
                'offset': 30,
                'size': 4,
                'min': 0x0a000001,
                'max': 0x0a000001 + num_flows - 1
            }]),
            IPChecksum()
        ])
Beispiel #2
0
    def setup_tx_pipeline(cli, port, spec):
        setup_mclasses(cli, globals())
        SEQNO = 12345
        PORT_HTTP = 80
        eth = scapy.Ether(src=spec.src_mac, dst=spec.dst_mac)
        ip = scapy.IP(src=spec.src_ip, dst=spec.dst_ip)
        tcp = scapy.TCP(sport=spec.src_port, dport=PORT_HTTP, seq=SEQNO)

        payload_prefix = 'GET /pub/WWW/TheProject.html HTTP/1.1\r\nHost: www.'
        payload = payload_prefix + 'aaa.com\r\n\r\n'
        pkt_headers = eth / ip / tcp
        pkt_template = str(eth / ip / tcp / payload)

        num_cores = len(spec.tx_cores)
        flows_per_core = spec.num_flows / num_cores
        if spec.pps is not None:
            pps_per_core = spec.pps / num_cores
        else:
            pps_per_core = 5e6

        return Pipeline([
            FlowGen(template=pkt_template, pps=pps_per_core,
                    flow_rate=flows_per_core, flow_duration=5,
                    arrival='uniform', duration='uniform',
                    quick_rampup=False),
            RandomUpdate(fields=[{'offset': len(pkt_headers)  + len(payload_prefix),
                         'size': 1, 'min': 97, 'max': 122}]),
            RandomUpdate(fields=[{'offset': len(pkt_headers)  + \
                                            len(payload_prefix) + 1,
                                  'size': 1, 'min': 97, 'max': 122}]),
            IPChecksum()
        ])
Beispiel #3
0
    def setup_tx_pipeline(cli, port, spec):
        setup_mclasses(cli, globals())
        eth = scapy.Ether(src=spec.src_mac, dst=spec.dst_mac)
        ip = scapy.IP(src=spec.src_ip, dst=spec.dst_ip)
        tcp = scapy.TCP(sport=spec.src_port, dport=12345, seq=12345)
        payload = "meow"
        DEFAULT_TEMPLATE = str(eth / ip / tcp / payload)

        if spec.flow_rate is None:
            spec.flow_rate = spec.num_flows / spec.flow_duration

        num_cores = len(spec.tx_cores)
        flows_per_core = spec.num_flows / num_cores

        if spec.pps is not None:
            pps_per_core = spec.pps / num_cores
        else:
            pps_per_core = 5e6

        # Setup tx pipeline
        return Pipeline([
            FlowGen(template=DEFAULT_TEMPLATE,
                    pps=pps_per_core,
                    flow_rate=flows_per_core,
                    flow_duration=spec.flow_duration,
                    arrival=spec.arrival,
                    duration=spec.duration,
                    quick_rampup=True),
            IPChecksum()
        ])
Beispiel #4
0
 def setup_rx_pipeline(cli, port, spec):
     setup_mclasses(cli, globals())
     return Pipeline([Sink()])