Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ycai
simbricks
Commits
ac10897c
"git@developer.sourcefind.cn:modelzoo/resnet50_tensorflow.git" did not exist on "097cea193add826684b1b5f9aa5aa8a6ecc63379"
Unverified
Commit
ac10897c
authored
Jan 14, 2025
by
Marvin Meiers
Browse files
experiments: add simple ping experiment that uses NS3Net
parent
6c657201
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
150 additions
and
0 deletions
+150
-0
experiments/pyexps/simple_ping_ns3.py
experiments/pyexps/simple_ping_ns3.py
+150
-0
No files found.
experiments/pyexps/simple_ping_ns3.py
0 → 100644
View file @
ac10897c
from
simbricks.orchestration
import
system
from
simbricks.orchestration
import
simulation
as
sim
from
simbricks.orchestration.simulation.net
import
ns3_components
from
simbricks.orchestration
import
instantiation
as
inst
from
simbricks.orchestration.helpers
import
simulation
as
sim_helpers
"""
Ping ns-3 Example:
One Qemu client: Host0, one Qemu server: Host1 connected through a switch
(One ns-3 client: Host2, one ns-3 server: Host3 connected through a switch)
________________________
| ns-3 |
HOST0 -- NIC0 -|-------- SWITCH --------|- NIC1 -- HOST1
| (HOST2 --| |-- HOST3) |
|________________________|
"""
instantiations
:
list
[
inst
.
Instantiation
]
=
[]
# ============ SYSTEM ============
sys
=
system
.
System
()
# create a host instance and a NIC instance then install the NIC on the host
host0
=
system
.
I40ELinuxHost
(
sys
)
cfg_disk0
=
system
.
DistroDiskImage
(
h
=
host0
,
name
=
"base"
)
host0
.
add_disk
(
cfg_disk0
)
tar_disk0
=
system
.
LinuxConfigDiskImage
(
h
=
host0
)
host0
.
add_disk
(
tar_disk0
)
pcie0
=
system
.
PCIeHostInterface
(
host0
)
host0
.
add_if
(
pcie0
)
nic0
=
system
.
IntelI40eNIC
(
sys
)
nic0
.
add_ipv4
(
"10.0.0.1"
)
pcichannel0
=
system
.
PCIeChannel
(
pcie0
,
nic0
.
_pci_if
)
# create a second host instance and a NIC instance
host1
=
system
.
I40ELinuxHost
(
sys
)
cfg_disk1
=
system
.
DistroDiskImage
(
h
=
host1
,
name
=
"base"
)
host1
.
add_disk
(
cfg_disk1
)
tar_disk1
=
system
.
LinuxConfigDiskImage
(
h
=
host1
)
host1
.
add_disk
(
tar_disk1
)
pcie1
=
system
.
PCIeHostInterface
(
host1
)
host1
.
add_if
(
pcie1
)
nic1
=
system
.
IntelI40eNIC
(
sys
)
nic1
.
add_ipv4
(
"10.0.0.2"
)
pcichannel1
=
system
.
PCIeChannel
(
pcie1
,
nic1
.
_pci_if
)
# create a host instance simulated in ns-3
# host2 = system.Host(sys)
# host2.parameters["ip"] = "10.0.0.3/24"
# host2_eth_if = system.EthInterface(host2)
# host2.add_if(host2_eth_if)
# create a second host instance simulated in ns-3
# host3 = system.Host(sys)
# host3.parameters["ip"] = "10.0.0.4/24"
# host3_eth_if = system.EthInterface(host3)
# host3.add_if(host3_eth_if)
switch
=
system
.
EthSwitch
(
sys
)
# connect switch to NICs
switch_nic0
=
system
.
EthInterface
(
switch
)
switch
.
add_if
(
switch_nic0
)
switch_nic0_chan
=
system
.
EthChannel
(
nic0
.
_eth_if
,
switch_nic0
)
switch_nic0_chan
.
latency
=
2
*
10
**
6
# 2ms
switch_nic1
=
system
.
EthInterface
(
switch
)
switch
.
add_if
(
switch_nic1
)
switch_nic1_chan
=
system
.
EthChannel
(
nic1
.
_eth_if
,
switch_nic1
)
switch_nic1_chan
.
latency
=
2
*
10
**
6
# 2ms
# connect switch to ns-3 hosts
# switch_host2 = system.EthInterface(switch)
# switch.add_if(switch_host2)
# switch_host2_chan = system.EthChannel(host2_eth_if, switch_host2)
# switch_host2_chan.latency = 2 * 10**6 # 2ms
# switch_host3 = system.EthInterface(switch)
# switch.add_if(switch_host3)
# switch_host3_chan = system.EthChannel(host3_eth_if, switch_host3)
# switch_host3_chan.latency = 2 * 10**6 # 2ms
# configure the software to run on the host
sleep_app
=
system
.
Sleep
(
host0
,
infinite
=
True
)
sleep_app
.
wait
=
False
host0
.
add_app
(
sleep_app
)
ping_app
=
system
.
PingClient
(
host1
,
"10.0.0.1"
)
ping_app
.
wait
=
True
host1
.
add_app
(
ping_app
)
# ping_app = system.Application(host3)
# ping_app.parameters['type_id'] = 'ns3::Ping'
# ping_app.parameters['start_time'] = '1s'
# ping_app.parameters['stop_time'] = '15s'
# ns3_ping_params = {
# 'Destination(Ipv4Address)': '10.0.0.3',
# #'Size': '16',
# 'Count': '10',
# 'Timeout': '1s',
# #'VerboseMode': 'Silent',
# }
# ping_app.parameters['ns3_params'] = ns3_ping_params
# ping_app.wait = True
# host3.add_app(ping_app)
# ============ SIMULATION ============
simulation
=
sim
.
Simulation
(
name
=
"simple-ping-ns3"
,
system
=
sys
)
host_inst0
=
sim
.
QemuSim
(
simulation
)
host_inst0
.
add
(
host0
)
host_inst0
.
name
=
"Server-Host"
nic_inst0
=
sim
.
I40eNicSim
(
simulation
=
simulation
)
nic_inst0
.
add
(
nic0
)
host_inst1
=
sim
.
QemuSim
(
simulation
)
host_inst1
.
add
(
host1
)
host_inst1
.
name
=
"Client-Host"
nic_inst1
=
sim
.
I40eNicSim
(
simulation
=
simulation
)
nic_inst1
.
add
(
nic1
)
net_inst
=
sim
.
NS3Net
(
simulation
)
# net_inst.add(host2)
# net_inst.add(host3)
net_inst
.
add
(
switch
)
#net_inst.use_file = False
net_inst
.
global_conf
.
stop_time
=
'60s'
# net_inst.global_conf.mapping["Progress"] = "100ms,20s"
# net_inst.logging.add_logging("Ping", ns3_components.NS3LoggingLevel.LEVEL_ALL)
# net_inst.logging.add_logging("BridgeNetDevice", ns3_components.NS3LoggingLevel.LEVEL_ALL)
# net_inst.logging.add_logging("SimpleNetDevice", ns3_components.NS3LoggingLevel.LEVEL_ALL)
# net_inst.logging.add_logging("SimbricksNetDevice", ns3_components.NS3LoggingLevel.LEVEL_ALL)
# sim_helpers.enable_sync_simulation(
# simulation=simulation, amount=500, ratio=sim.Time.Nanoseconds
# )
sim_helpers
.
disalbe_sync_simulation
(
simulation
=
simulation
)
print
(
simulation
.
name
+
" all simulators:"
)
sims
=
simulation
.
all_simulators
()
for
s
in
sims
:
print
(
s
)
instance
=
inst
.
Instantiation
(
sim
=
simulation
)
instance
.
preserve_tmp_folder
=
False
instance
.
create_checkpoint
=
False
instance
.
artifact_paths
=
[
"simbricks-workdir/output"
]
instantiations
.
append
(
instance
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment