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
d743d2a1
Commit
d743d2a1
authored
Aug 24, 2021
by
Antoine Kaufmann
Browse files
experiments: add support for proxied net-to-net connections
parent
f1b6c9de
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
0 deletions
+46
-0
experiments/simbricks/proxy.py
experiments/simbricks/proxy.py
+46
-0
No files found.
experiments/simbricks/proxy.py
View file @
d743d2a1
...
@@ -39,6 +39,9 @@ class NetProxy(SimProxy):
...
@@ -39,6 +39,9 @@ class NetProxy(SimProxy):
# List of tuples (nic, with_listener)
# List of tuples (nic, with_listener)
nics
=
None
nics
=
None
# List of tuples ((netL,netC), with_listener)
n2ns
=
None
# Shared memory size in GB
# Shared memory size in GB
shm_size
=
2048
shm_size
=
2048
...
@@ -55,6 +58,7 @@ class NetProxyListener(NetProxy):
...
@@ -55,6 +58,7 @@ class NetProxyListener(NetProxy):
super
().
__init__
()
super
().
__init__
()
self
.
listen
=
True
self
.
listen
=
True
self
.
nics
=
[]
self
.
nics
=
[]
self
.
n2ns
=
[]
def
add_nic
(
self
,
nic
):
def
add_nic
(
self
,
nic
):
self
.
nics
.
append
((
nic
,
True
))
self
.
nics
.
append
((
nic
,
True
))
...
@@ -62,11 +66,21 @@ class NetProxyListener(NetProxy):
...
@@ -62,11 +66,21 @@ class NetProxyListener(NetProxy):
# the network this nic connects to now also depends on the peer
# the network this nic connects to now also depends on the peer
nic
.
network
.
extra_deps
.
append
(
self
.
connecter
)
nic
.
network
.
extra_deps
.
append
(
self
.
connecter
)
# add net2net connection with listening network on the listener side
def
add_n2n
(
self
,
net_c
,
net_l
):
self
.
n2ns
.
append
(((
net_c
,
net_l
),
True
))
# the connecting network depends on our peer
net_c
.
extra_deps
.
append
(
self
.
connecter
)
def
dependencies
(
self
):
def
dependencies
(
self
):
deps
=
[]
deps
=
[]
for
(
nic
,
local
)
in
self
.
nics
:
for
(
nic
,
local
)
in
self
.
nics
:
if
local
:
if
local
:
deps
.
append
(
nic
)
deps
.
append
(
nic
)
for
((
net_c
,
net_l
),
local
)
in
self
.
n2ns
:
if
local
:
deps
.
append
(
net_l
)
return
deps
return
deps
def
sockets_cleanup
(
self
,
env
):
def
sockets_cleanup
(
self
,
env
):
...
@@ -74,6 +88,9 @@ class NetProxyListener(NetProxy):
...
@@ -74,6 +88,9 @@ class NetProxyListener(NetProxy):
for
(
nic
,
local
)
in
self
.
nics
:
for
(
nic
,
local
)
in
self
.
nics
:
if
not
local
:
if
not
local
:
socks
.
append
(
env
.
nic_eth_path
(
nic
))
socks
.
append
(
env
.
nic_eth_path
(
nic
))
for
((
net_c
,
net_l
),
local
)
in
self
.
n2ns
:
if
not
local
:
socks
.
append
(
env
.
n2n_eth_path
(
net_l
,
net_c
))
return
[]
return
[]
# sockets to wait for indicating the simulator is ready
# sockets to wait for indicating the simulator is ready
...
@@ -82,6 +99,9 @@ class NetProxyListener(NetProxy):
...
@@ -82,6 +99,9 @@ class NetProxyListener(NetProxy):
for
(
nic
,
local
)
in
self
.
nics
:
for
(
nic
,
local
)
in
self
.
nics
:
if
not
local
:
if
not
local
:
socks
.
append
(
env
.
nic_eth_path
(
nic
))
socks
.
append
(
env
.
nic_eth_path
(
nic
))
for
((
net_c
,
net_l
),
local
)
in
self
.
n2ns
:
if
not
local
:
socks
.
append
(
env
.
n2n_eth_path
(
net_l
,
net_c
))
return
socks
return
socks
class
NetProxyConnecter
(
NetProxy
):
class
NetProxyConnecter
(
NetProxy
):
...
@@ -92,6 +112,7 @@ class NetProxyConnecter(NetProxy):
...
@@ -92,6 +112,7 @@ class NetProxyConnecter(NetProxy):
self
.
listener
=
listener
self
.
listener
=
listener
listener
.
connecter
=
self
listener
.
connecter
=
self
self
.
nics
=
listener
.
nics
self
.
nics
=
listener
.
nics
self
.
n2ns
=
listener
.
n2ns
def
add_nic
(
self
,
nic
):
def
add_nic
(
self
,
nic
):
self
.
nics
.
append
((
nic
,
False
))
self
.
nics
.
append
((
nic
,
False
))
...
@@ -99,11 +120,20 @@ class NetProxyConnecter(NetProxy):
...
@@ -99,11 +120,20 @@ class NetProxyConnecter(NetProxy):
# the network this nic connects to now also depends on the proxy
# the network this nic connects to now also depends on the proxy
nic
.
network
.
extra_deps
.
append
(
self
.
listener
)
nic
.
network
.
extra_deps
.
append
(
self
.
listener
)
# add net2net connection with listening network on the connection side
def
add_n2n
(
self
,
net_c
,
net_l
):
self
.
n2ns
.
append
(((
net_c
,
net_l
),
False
))
# the connecting network depends on our peer
net_c
.
extra_deps
.
append
(
self
.
listener
)
def
dependencies
(
self
):
def
dependencies
(
self
):
deps
=
[
self
.
listener
]
deps
=
[
self
.
listener
]
for
(
nic
,
local
)
in
self
.
nics
:
for
(
nic
,
local
)
in
self
.
nics
:
if
not
local
:
if
not
local
:
deps
.
append
(
nic
)
deps
.
append
(
nic
)
for
((
net_c
,
net_l
),
local
)
in
self
.
n2ns
:
if
not
local
:
deps
.
append
(
net_l
)
return
deps
return
deps
def
sockets_cleanup
(
self
,
env
):
def
sockets_cleanup
(
self
,
env
):
...
@@ -111,6 +141,9 @@ class NetProxyConnecter(NetProxy):
...
@@ -111,6 +141,9 @@ class NetProxyConnecter(NetProxy):
for
(
nic
,
local
)
in
self
.
nics
:
for
(
nic
,
local
)
in
self
.
nics
:
if
local
:
if
local
:
socks
.
append
(
env
.
nic_eth_path
(
nic
))
socks
.
append
(
env
.
nic_eth_path
(
nic
))
for
((
net_c
,
net_l
),
local
)
in
self
.
n2ns
:
if
local
:
socks
.
append
(
env
.
n2n_eth_path
(
net_l
,
net_c
))
return
[]
return
[]
# sockets to wait for indicating the simulator is ready
# sockets to wait for indicating the simulator is ready
...
@@ -119,6 +152,9 @@ class NetProxyConnecter(NetProxy):
...
@@ -119,6 +152,9 @@ class NetProxyConnecter(NetProxy):
for
(
nic
,
local
)
in
self
.
nics
:
for
(
nic
,
local
)
in
self
.
nics
:
if
local
:
if
local
:
socks
.
append
(
env
.
nic_eth_path
(
nic
))
socks
.
append
(
env
.
nic_eth_path
(
nic
))
for
((
net_c
,
net_l
),
local
)
in
self
.
n2ns
:
if
local
:
socks
.
append
(
env
.
n2n_eth_path
(
net_l
,
net_c
))
return
socks
return
socks
...
@@ -136,6 +172,11 @@ class RDMANetProxyListener(NetProxyListener):
...
@@ -136,6 +172,11 @@ class RDMANetProxyListener(NetProxyListener):
for
(
nic
,
local
)
in
self
.
nics
:
for
(
nic
,
local
)
in
self
.
nics
:
cmd
+=
'-d '
if
local
else
'-n '
cmd
+=
'-d '
if
local
else
'-n '
cmd
+=
env
.
nic_eth_path
(
nic
)
+
' '
cmd
+=
env
.
nic_eth_path
(
nic
)
+
' '
for
((
net_c
,
net_l
),
local
)
in
self
.
n2ns
:
cmd
+=
'-d '
if
local
else
'-n '
cmd
+=
env
.
n2n_eth_path
(
net_l
,
net_c
)
+
' '
cmd
+=
f
' 0.0.0.0
{
self
.
port
}
'
cmd
+=
f
' 0.0.0.0
{
self
.
port
}
'
return
cmd
return
cmd
...
@@ -150,5 +191,10 @@ class RDMANetProxyConnecter(NetProxyConnecter):
...
@@ -150,5 +191,10 @@ class RDMANetProxyConnecter(NetProxyConnecter):
for
(
nic
,
local
)
in
self
.
nics
:
for
(
nic
,
local
)
in
self
.
nics
:
cmd
+=
'-n '
if
local
else
'-d '
cmd
+=
'-n '
if
local
else
'-d '
cmd
+=
env
.
nic_eth_path
(
nic
)
+
' '
cmd
+=
env
.
nic_eth_path
(
nic
)
+
' '
for
((
net_c
,
net_l
),
local
)
in
self
.
n2ns
:
cmd
+=
'-n '
if
local
else
'-d '
cmd
+=
env
.
n2n_eth_path
(
net_l
,
net_c
)
+
' '
cmd
+=
f
'
{
self
.
listener
.
ip
}
{
self
.
listener
.
port
}
'
cmd
+=
f
'
{
self
.
listener
.
ip
}
{
self
.
listener
.
port
}
'
return
cmd
return
cmd
\ No newline at end of file
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