import simbricks.orchestration.experiments as exp import simbricks.splitsim.specification as spec import simbricks.splitsim.impl as impl """ Simple Ping Example: Host 0 pings Host1 HOST0 -- NIC0 ------ SWITCH ------ NIC1 -- HOST1 """ system = spec.System() # create a host instance and a NIC instance then install the NIC on the host host0 = spec.LinuxHost(system) nic0 = spec.i40eNIC(system) host0.nic_driver = ['i40e'] host0.ip = '10.0.0.1' pcichannel0 = spec.PCI(system) pcichannel0.install(host0, nic0) host1 = spec.LinuxHost(system) nic1 = spec.i40eNIC(system) host1.nic_driver = ['i40e'] host1.ip = '10.0.0.2' pcichannel1 = spec.PCI(system) pcichannel1.install(host1, nic1) port0 = spec.NetDev() port1 = spec.NetDev() switch = spec.Switch(system) switch.install_netdev(port0) switch.install_netdev(port1) ethchannel0 = spec.Eth(system) ethchannel0.install(nic0, port0) ethchannel1 = spec.Eth(system) ethchannel1.install(nic1, port1) # configure the software to run on the host host0.app = spec.PingClient('10.0.0.2') host1.app = spec.Sleep() """ Execution Config """ experiments = [] e = exp.Experiment('simple_ping_sysconf') host_inst0 = impl.Gem5Sim(e) host_inst0.add(host0) host_inst1 = impl.Gem5Sim(e) host_inst1.add(host1) nic_inst0 = impl.I40eNicSim(e) nic_inst0.add(nic0) nic_inst1 = impl.I40eNicSim(e) nic_inst1.add(nic1) net_inst = impl.SwitchBMSim(e) net_inst.add(switch) experiments.append(e)