[str, 'grpc', 'experiment type, one of: grpc, quic, quic0rtt'],
            'bw': [
                float, 100,
                'link bandwidth, one of: 0.01, 0.1, 1, 10, 100, 1000'
            ],
            'delay': [str, '100us', 'link delays, one of: 1us, 100us, 10ms'],
            'size':
            [int, 1000, 'lambda request input size, one of: 100, 1000, 10000']
        }, {
            'cpu_limit': -1.0,
            'nat': False,
            'controller': 'flat',
            'balancing': 'rr-async',
            'edgetype': 'router',
            'tclink': 'wotc'
        })

    experiment = LinearQuic(**vars(args))

    experiment.runExperiment(
        topo.LinearTopo(
            4,  # hosts
            # linkargs
            dict(
                bw=experiment.confopts['bw'],  # <<<<<<<<<<<<<<<<
                delay=experiment.confopts['delay'],  # <<<<<<<<<<<
                loss=0,
                max_queue_size=1000,
                use_htb=True),
            dict()))  # hostargs
            [int, 1000, 'lambda request input size, one of: 100, 1000, 10000'],
            'loss': [int, 0, 'link loss probability'],
            'numclients': [int, 1, 'number of client threads']
        }, {
            'cpu_limit': -1.0,
            'nat': False,
            'controller': 'flat',
            'balancing': 'rr-async',
            'edgetype': 'router',
            'tclink': 'wotc',
            'pingtest': 'none'
        })

    experiment = QuicRouterComputer(**vars(args))

    # delay and bandwidth
    link_types = {
        'slow': ['50ms', 1],
        'medium': ['10ms', 10],
        'fast': ['100us', 100],
    }

    experiment.runExperiment(
        topo.LinearTopo(
            4,
            dict(delay=link_types[experiment.confopts['link']][0],
                 bw=link_types[experiment.confopts['link']][1],
                 loss=experiment.confopts['loss'],
                 max_queue_size=1000,
                 use_htb=True), dict()))