Commit 6ad98ddb authored by Hejing Li's avatar Hejing Li
Browse files

add dctcp experiment script

parent 39cf74ee
import modes.experiments as exp
import modes.simulators as sim
import modes.nodeconfig as node
# iperf TCP_multi_client test
# naming convention following host-nic-net-app
# host: qemu/gem5-timing
# nic: cv/cb/ib
# net: switch/dumbbell/bridge
# app: DCTCPm
types_of_host = ['qemu', 'gt']
types_of_nic = ['cv','cb','ib']
types_of_net = ['dumbbell']
types_of_app = ['DCTCPm']
num_pairs = 2
max_k = 199680
k_step = 8320
link_rate_opt = '--LinkRate=10Gb/s ' # don't forget space at the end
link_latency_opt = '--LinkLatency=0 '
cpu_freq = '5GHz' #GHz
mtu = 9000
ip_start = '192.168.64.1'
experiments = []
# set network sim
net_class = sim.NS3DumbbellNet
for h in types_of_host:
for c in types_of_nic:
for k_val in range(0, max_k + 1, k_step):
net = net_class()
net.opt = link_rate_opt + link_latency_opt + f'--EcnTh={k_val}'
e = exp.Experiment( h + '-' + c + '-' + 'dumbbell' + '-' + 'DCTCPm' + f'{k_val}')
e.add_network(net)
e.checkpoint = True
# host
if h == 'qemu':
host_class = sim.QemuHost
elif h == 'gt':
host_class = sim.Gem5Host
else:
raise NameError(h)
# nic
if c == 'ib':
nic_class = sim.I40eNIC
nc_class = node.I40eDCTCPNode
elif c == 'cb':
nic_class = sim.CorundumBMNIC
nc_class = node.CorundumDCTCPNode
elif c == 'cv':
nic_class = sim.CorundumVerilatorNIC
nc_class = node.CorundumDCTCPNode
else:
raise NameError(c)
servers = sim.create_dctcp_hosts(e, num_pairs, 'server', net, nic_class, host_class,
nc_class, node.DctcpServer, cpu_freq, mtu)
clients = sim.create_dctcp_hosts(e, num_pairs, 'client', net, nic_class, host_class,
nc_class, node.DctcpClient, cpu_freq, mtu, ip_start=num_pairs+1)
i = 0
for cl in clients:
cl.node_config.app.server_ip = servers[i].node_config.ip
i += 1
# All the clients will not poweroff after finishing iperf test except the last one
# This is to prevent the simulation gets stuck when one of host exits.
# The last client waits for the output printed in other hosts, then cleanup
clients[num_pairs-1].node_config.app.is_last = True
clients[num_pairs-1].wait = True
print(e.name)
experiments.append(e)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment