Commit 40d7535c authored by Marvin Meiers's avatar Marvin Meiers Committed by Antoine Kaufmann
Browse files

experiments: merge the NetIf and NicIf e2e classes into one class

parent a91fd59c
......@@ -94,13 +94,15 @@ for congestion_control in types_of_congestion_control:
right_switch.mtu = f'{mtu-52}'
right_net.add_component(right_switch)
left_adapter = e2e.E2ESimbricksNetworkNetIf('left_adapter')
left_adapter = e2e.E2ENetworkSimbricks('left_adapter')
left_adapter.eth_latency = f'{link_latency}ns'
left_adapter.simbricks_component = right_net
left_adapter.listen = False
left_switch.add_component(left_adapter)
right_adapter = e2e.E2ESimbricksNetworkNicIf('right_adapter')
right_adapter = e2e.E2ENetworkSimbricks('right_adapter')
right_adapter.eth_latency = f'{link_latency}ns'
right_adapter.simbricks_component = left_net
right_adapter.listen = True
right_switch.add_component(right_adapter)
for i in range(1, num_ns3_hosts + 1):
......
......@@ -57,8 +57,10 @@ class CongestionControl(Enum):
@property
def ns3(self):
if self.ns3_str == "":
raise AttributeError(f"There is no ns3 implementation for "
f"{self.name} available")
raise AttributeError(
f"There is no ns3 implementation for "
f"{self.name} available"
)
return self.ns3_str
@property
......@@ -114,8 +116,7 @@ class E2EGlobalConfig(E2EBase):
def ns3_config(self) -> str:
self.mapping.update({
"StopTime": self.stop_time,
"MACStart": self.mac_start
"StopTime": self.stop_time, "MACStart": self.mac_start
})
return super().ns3_config()
......@@ -209,50 +210,51 @@ class E2ESimpleChannel(E2ETopologyChannel):
return super().ns3_config()
class E2ESimbricksNetwork(E2EComponent):
class E2ENetwork(E2EComponent):
def __init__(self, idd: str) -> None:
super().__init__(idd)
self.category = "Network"
self.peer = None
def set_peer(self, peer: E2ENetwork):
self.peer = peer
peer.peer = self
class E2ENetworkSimbricks(E2ENetwork):
def __init__(self, idd: str) -> None:
super().__init__(idd)
self.type = "Simbricks"
self.adapter_type = SimbricksAdapterType.NETWORK
self.unix_socket = ""
self.sync_delay = ""
self.poll_delay = ""
self.eth_latency = ""
self.peer = None
self.listen: tp.Optional[bool] = None
self.shm_path = ""
self.sync: SimbricksSyncMode = SimbricksSyncMode.SYNC_OPTIONAL
self.simbricks_component = None
def set_peer(self, peer: E2ESimbricksNetwork):
self.peer = peer
peer.peer = self
def ns3_config(self) -> str:
if self.listen is None:
raise AttributeError(
f"Listen mode not specified for simbricks adapter {self.id}"
)
self.mapping.update({
"UnixSocket": self.unix_socket,
"SyncDelay": self.sync_delay,
"PollDelay": self.poll_delay,
"EthLatency": self.eth_latency,
"Listen": "true" if self.listen else "false",
"ShmPath": self.shm_path,
"Sync": "" if self.sync is None else f"{self.sync.value}",
})
return super().ns3_config()
class E2ESimbricksNetworkNetIf(E2ESimbricksNetwork):
def __init__(self, idd: str) -> None:
super().__init__(idd)
self.type = "NetIf"
class E2ESimbricksNetworkNicIf(E2ESimbricksNetwork):
def __init__(self, idd: str) -> None:
super().__init__(idd)
self.type = "NicIf"
class E2EHost(E2EComponent):
def __init__(self, idd: str) -> None:
......
......@@ -80,12 +80,14 @@ class E2ELinkAssigner():
right_switch = link["right"]
link_type = link["type"]
if link_type == E2ELinkType.SIMBRICKS:
left_adapter = e2e.E2ESimbricksNetworkNetIf(f"_{idd}_left_adapter")
left_adapter = e2e.E2ENetworkSimbricks(f"_{idd}_left_adapter")
left_adapter.listen = False
left_switch.add_component(left_adapter)
link["left_adapter"] = left_adapter
right_adapter = e2e.E2ESimbricksNetworkNicIf(
right_adapter = e2e.E2ENetworkSimbricks(
f"_{idd}_right_adapter"
)
right_adapter.listen = True
right_switch.add_component(right_adapter)
link["right_adapter"] = right_adapter
elif link_type == E2ELinkType.NS3_SIMPLE_CHANNEL:
......
......@@ -961,7 +961,7 @@ class NS3E2ENet(NetSim):
# add all connected networks
for c in component.components:
if isinstance(c, e2e.E2ESimbricksNetworkNetIf):
if isinstance(c, e2e.E2ENetworkSimbricks) and not c.listen:
p_suf = ''
if c.peer:
p_suf = min(c.name, c.peer.name)
......@@ -975,10 +975,8 @@ class NS3E2ENet(NetSim):
for c in component.components:
if isinstance(c, e2e.E2ESimbricksHost):
self.resolve_socket_paths(env, c)
elif isinstance(c, e2e.E2ESimbricksNetworkNetIf):
self.resolve_socket_paths(env, c)
elif isinstance(c, e2e.E2ESimbricksNetworkNicIf):
self.resolve_socket_paths(env, c, True)
elif isinstance(c, e2e.E2ENetworkSimbricks):
self.resolve_socket_paths(env, c, c.listen)
params: tp.List[str] = []
params.append(self.e2e_global.ns3_config())
......
Subproject commit 60ee4197f52aad9ca4005195a1ae95a4c4016566
Subproject commit 968e0ed2b2a1ef5303975e836481298e4ac60295
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