Add a script to generate up-to-date NDN testbed topologies for Mini-NDN
Change-Id: I9686c65fe2f38fbc980c5fb54d876ebb3d9e7ede
This commit is contained in:
1 parent
ccd85b1cf1
commit
587b78ff64
7 files changed
+251
-236
No files matched your search
@@ -113,3 +113,16 @@ machine to an external machine.
|
||||
|
||||
Also, if the local machine has a public IP, Mini-NDN nodes can be
|
||||
reached via external machines.
|
||||
|
||||
Generate NDN testbed topology
|
||||
___________________________________________
|
||||
|
||||
Run the following install.sh command
|
||||
|
||||
::
|
||||
|
||||
python3 util/testbed_topo_generator.py
|
||||
|
||||
This will place a "testbed.conf" file in the topologies subdirectory,
|
||||
where it can be referenced as desired. To update the topology, simply
|
||||
rerun this command.
|
||||
+6
-1
@@ -103,7 +103,7 @@ else
|
||||
fi
|
||||
|
||||
function patchDummy {
|
||||
git -C $NDN_SRC/ndn-cxx apply $(pwd)/patches/ndn-cxx-dummy-keychain-from-ndnsim.patch
|
||||
git -C $NDN_SRC/ndn-cxx apply $(pwd)/util/patches/ndn-cxx-dummy-keychain-from-ndnsim.patch
|
||||
if [[ "$?" -ne 0 ]]; then
|
||||
echo "Patch might already be applied"
|
||||
fi
|
||||
@@ -320,6 +320,10 @@ function jNDN {
|
||||
popd
|
||||
}
|
||||
|
||||
function testbedTopo {
|
||||
python3 ./testbed_topo_generator.py
|
||||
}
|
||||
|
||||
function commonClientLibraries {
|
||||
ndn_cpp
|
||||
pyNDN
|
||||
@@ -369,6 +373,7 @@ else
|
||||
mininet
|
||||
minindn
|
||||
commonClientLibraries
|
||||
testbedTopo
|
||||
break
|
||||
;;
|
||||
c) commonClientLibraries;;
|
||||
|
||||
@@ -1,161 +0,0 @@
|
||||
[nodes]
|
||||
afa: _ radius=10.3354428445 angle=1.12640207075
|
||||
anyang: _ radius=14.3378634978 angle=2.99956859362
|
||||
arizona: _ radius=16.2305391314 angle=2.97033285094
|
||||
basel: _ radius=13.2717666497 angle=2.41932
|
||||
bern: _ radius=13.2717666497 angle=2.42933
|
||||
bupt: _ radius=29.2553552716 angle=3.07635893011
|
||||
byu: _ radius=19.3538454318 angle=3.77334112453
|
||||
cagliari: _ radius=13.5903793307 angle=1.1403443
|
||||
caida: _ radius=17.6030443241 angle=2.94302721088
|
||||
caruna: _ radius=13.6888312672 angle=1.172
|
||||
cnic: _ radius=13.0513265591 angle=2.87446074202
|
||||
copelabs: _ radius=16.206035855 angle=2.62082
|
||||
csu: _ radius=14.1056931988 angle=2.99266609146
|
||||
goettingen: _ radius=12.2349274272 angle=2.4715271786
|
||||
indonesia: _ radius=29.2553552716 angle=2.75021570319
|
||||
kisti: _ radius=11.5531281288 angle=2.98403796376
|
||||
lip6: _ radius=29.2553552716 angle=2.62295081967
|
||||
memphis: _ radius=15.264773513 angle=2.98360655738
|
||||
michigan: _ radius=17.7738038607 angle=2.98018269082
|
||||
minho: _ radius=16.206035855 angle=2.631
|
||||
msu: _ radius=19.6533436173 angle=3.64135462555
|
||||
mumbai_aws: _ radius=12.8934676597 angle=2.95081967213
|
||||
neu: _ radius=19.9001283692 angle=2.13894230769
|
||||
nist: _ radius=13.4257788269 angle=2.97670405522
|
||||
ntnu: _ radius=12.0281644432 angle=3.11561691113
|
||||
osaka: _ radius=19.3573834399 angle=3.53687143598
|
||||
padua: _ radius=13.5903793307 angle=1.1393442623
|
||||
pkusz: _ radius=11.1495655496 angle=2.87016
|
||||
remap: _ radius=16.5866430024 angle=2.99811
|
||||
srru: _ radius=12.8769009681 angle=3.63761863676
|
||||
systemx: _ radius=19.1697680538 angle=2.62274588692
|
||||
tno: _ radius=12.0148443703 angle=2.4603106126
|
||||
tongji: _ radius=11.1495655496 angle=2.87015
|
||||
uaslp: _ radius=19.0473935894 angle=2.96488127257
|
||||
uci: _ radius=19.2697694366 angle=2.94186046512
|
||||
ucla: _ radius=16.5866430024 angle=2.999107674
|
||||
ufpa: _ radius=29.2553552716 angle=3.51898188093
|
||||
uiuc: _ radius=29.2553552716 angle=2.98231233822
|
||||
urjc: _ radius=13.6888312672 angle=1.17169974116
|
||||
uum: _ radius=14.8351249127 angle=3.44434857636
|
||||
waseda: _ radius=19.3583257472 angle=2.99935233161
|
||||
wu: _ radius=19.4268485719 angle=4.31067173954
|
||||
[links]
|
||||
afa:mumbai_aws delay=100ms
|
||||
afa:bern delay=15ms
|
||||
afa:cagliari delay=25ms
|
||||
afa:padua delay=11ms
|
||||
afa:copelabs delay=36ms
|
||||
anyang:tongji delay=54ms
|
||||
anyang:srru delay=57ms
|
||||
anyang:msu delay=70ms
|
||||
anyang:bupt delay=33ms
|
||||
anyang:kisti delay=40ms
|
||||
anyang:waseda delay=40ms
|
||||
anyang:osaka delay=36ms
|
||||
arizona:caida delay=25ms
|
||||
arizona:remap delay=25ms
|
||||
arizona:waseda delay=75ms
|
||||
arizona:byu delay=30ms
|
||||
arizona:uaslp delay=100ms
|
||||
arizona:wu delay=33ms
|
||||
arizona:csu delay=18ms
|
||||
arizona:memphis delay=17ms
|
||||
basel:urjc delay=14ms
|
||||
basel:minho delay=23ms
|
||||
basel:ntnu delay=30ms
|
||||
basel:padua delay=9ms
|
||||
basel:lip6 delay=7ms
|
||||
basel:goettingen delay=10ms
|
||||
basel:bern delay=2ms
|
||||
basel:tno delay=14ms
|
||||
basel:systemx delay=9ms
|
||||
bern:lip6 delay=18ms
|
||||
bupt:pkusz delay=54ms
|
||||
bupt:waseda delay=48ms
|
||||
bupt:tongji delay=18ms
|
||||
bupt:srru delay=72ms
|
||||
bupt:indonesia delay=54ms
|
||||
bupt:kisti delay=33ms
|
||||
bupt:cnic delay=10ms
|
||||
byu:csu delay=8ms
|
||||
byu:remap delay=9ms
|
||||
cagliari:urjc delay=28ms
|
||||
cagliari:caruna delay=40ms
|
||||
cagliari:padua delay=25ms
|
||||
cagliari:wu delay=100ms
|
||||
caida:ufpa delay=155ms
|
||||
caida:ucla delay=3ms
|
||||
caida:uci delay=3ms
|
||||
caida:tongji delay=93ms
|
||||
caruna:urjc delay=17ms
|
||||
caruna:minho delay=27ms
|
||||
cnic:pkusz delay=20ms
|
||||
cnic:osaka delay=45ms
|
||||
copelabs:urjc delay=13ms
|
||||
copelabs:minho delay=4ms
|
||||
copelabs:padua delay=24ms
|
||||
copelabs:lip6 delay=22ms
|
||||
copelabs:ufpa delay=145ms
|
||||
csu:remap delay=16ms
|
||||
csu:kisti delay=106ms
|
||||
csu:michigan delay=15ms
|
||||
csu:ucla delay=16ms
|
||||
csu:uiuc delay=14ms
|
||||
goettingen:osaka delay=136ms
|
||||
goettingen:ntnu delay=40ms
|
||||
goettingen:padua delay=14ms
|
||||
goettingen:tno delay=12ms
|
||||
goettingen:systemx delay=10ms
|
||||
indonesia:waseda delay=49ms
|
||||
indonesia:tongji delay=61ms
|
||||
indonesia:srru delay=32ms
|
||||
indonesia:uum delay=100ms
|
||||
indonesia:kisti delay=150ms
|
||||
indonesia:ufpa delay=200ms
|
||||
kisti:waseda delay=39ms
|
||||
lip6:urjc delay=15ms
|
||||
lip6:michigan delay=69ms
|
||||
lip6:ntnu delay=25ms
|
||||
lip6:tno delay=9ms
|
||||
lip6:systemx delay=1ms
|
||||
memphis:michigan delay=12ms
|
||||
memphis:uaslp delay=100ms
|
||||
memphis:wu delay=17ms
|
||||
memphis:ufpa delay=115ms
|
||||
memphis:neu delay=21ms
|
||||
michigan:uiuc delay=5ms
|
||||
michigan:neu delay=14ms
|
||||
michigan:nist delay=13ms
|
||||
minho:urjc delay=13ms
|
||||
minho:padua delay=26ms
|
||||
msu:pkusz delay=71ms
|
||||
msu:srru delay=3ms
|
||||
msu:ucla delay=150ms
|
||||
msu:uum delay=100ms
|
||||
msu:tno delay=120ms
|
||||
mumbai_aws:uum delay=100ms
|
||||
neu:ntnu delay=69ms
|
||||
neu:nist delay=12ms
|
||||
nist:uiuc delay=12ms
|
||||
ntnu:systemx delay=24ms
|
||||
osaka:pkusz delay=63ms
|
||||
osaka:waseda delay=5ms
|
||||
osaka:srru delay=67ms
|
||||
osaka:tongji delay=63ms
|
||||
osaka:uum delay=100ms
|
||||
padua:urjc delay=15ms
|
||||
padua:pkusz delay=170ms
|
||||
padua:uiuc delay=80ms
|
||||
pkusz:tongji delay=54ms
|
||||
pkusz:srru delay=71ms
|
||||
pkusz:waseda delay=98ms
|
||||
remap:ucla delay=1ms
|
||||
remap:uci delay=1ms
|
||||
srru:uum delay=100ms
|
||||
tongji:waseda delay=98ms
|
||||
uaslp:ufpa delay=100ms
|
||||
uci:ucla delay=1ms
|
||||
uiuc:wu delay=9ms
|
||||
urjc:wu delay=86ms
|
||||
@@ -1,74 +0,0 @@
|
||||
[nodes]
|
||||
unibas: _ radius=13.2717666496574 angle=2.41932700603969
|
||||
bupt: _ radius=11.5095245566676 angle=2.87230371009491
|
||||
pku: _ radius=11.1495655496376 angle=2.87014667817084
|
||||
tongji: _ radius=11.1495655496376 angle=2.8701500000
|
||||
orange: _ radius=10.9327229663161 angle=2.7739430543572
|
||||
arizona: _ radius=16.2305391313912 angle=2.97033285094067
|
||||
byu: _ radius=19.353845431776 angle=3.77334112452928
|
||||
csu: _ radius=14.1056931988398 angle=2.99266609145815
|
||||
uiuc: _ radius=29.2553552716 angle=2.98231233822261
|
||||
memphis: _ radius=15.2647735129845 angle=2.98360655737705
|
||||
neu: _ radius=19.9001283692128 angle=2.13894230769231
|
||||
uci: _ radius=19.2697694366069 angle=2.94186046511628
|
||||
ucla: _ radius=16.5866430024476 angle=2.99910767400357
|
||||
remap: _ radius=16.5866430024476 angle=2.9991100000
|
||||
umich: _ radius=17.7738038607456 angle=2.98018269081901
|
||||
wustl: _ radius=19.426848571939 angle=4.31067173953721
|
||||
urjc: _ radius=13.6888312671789 angle=1.17169974115617
|
||||
systemx: _ radius=19.1697680538273 angle=2.62274588691716
|
||||
lip6: _ radius=29.2553552716 angle=2.62295081967213
|
||||
waseda: _ radius=19.3583257471934 angle=2.99935233160622
|
||||
anyang: _ radius=14.3378634978013 angle=2.99956859361519
|
||||
caida: _ radius=17.6030443241278 angle=2.94302721088435
|
||||
[links]
|
||||
bupt:pku delay=14ms
|
||||
pku:unibas delay=127ms
|
||||
pku:tongji delay=14ms
|
||||
bupt:anyang delay=33ms
|
||||
bupt:tongji delay=18ms
|
||||
anyang:tongji delay=54ms
|
||||
bupt:waseda delay=48ms
|
||||
tongji:waseda delay=98ms
|
||||
tongji:caida delay=93ms
|
||||
caida:ucla delay=3ms
|
||||
anyang:pku delay=38ms
|
||||
anyang:waseda delay=22ms
|
||||
ucla:pku delay=85ms
|
||||
ucla:remap delay=1ms
|
||||
caida:uci delay=3ms
|
||||
uci:ucla delay=1ms
|
||||
uci:remap delay=1ms
|
||||
ucla:csu delay=16ms
|
||||
remap:csu delay=16ms
|
||||
caida:arizona delay=25ms
|
||||
waseda:arizona delay=75ms
|
||||
remap:arizona delay=25ms
|
||||
arizona:wustl delay=33ms
|
||||
wustl:uiuc delay=9ms
|
||||
csu:uiuc delay=14ms
|
||||
uiuc:umich delay=5ms
|
||||
csu:byu delay=8ms
|
||||
byu:remap delay=9ms
|
||||
byu:arizona delay=30ms
|
||||
wustl:urjc delay=86ms
|
||||
wustl:memphis delay=17ms
|
||||
arizona:memphis delay=17ms
|
||||
waseda:orange delay=144ms
|
||||
orange:systemx delay=2ms
|
||||
unibas:systemx delay=10ms
|
||||
memphis:neu delay=21ms
|
||||
pku:neu delay=112ms
|
||||
csu:umich delay=15ms
|
||||
urjc:lip6 delay=15ms
|
||||
urjc:unibas delay=9ms
|
||||
lip6:systemx delay=2ms
|
||||
unibas:lip6 delay=18ms
|
||||
memphis:umich delay=12ms
|
||||
memphis:orange delay=56ms
|
||||
urjc:orange delay=15ms
|
||||
lip6:orange delay=3ms
|
||||
lip6:umich delay=69ms
|
||||
unibas:orange delay=18ms
|
||||
umich:neu delay=14ms
|
||||
csu:arizona delay=18ms
|
||||
@@ -0,0 +1,134 @@
|
||||
[nodes]
|
||||
UNIVH2C: _ radius=15.7232 angle=3.03408
|
||||
MINHO: _ radius=16.2060 angle=2.62083
|
||||
MSU: _ radius=19.6533 angle=3.64135
|
||||
AVEIRO: _ radius=16.2060 angle=2.62081
|
||||
BASEL: _ radius=13.2717 angle=2.41932
|
||||
WU: _ radius=19.4268 angle=4.31067
|
||||
NEU: _ radius=19.9001 angle=2.13894
|
||||
UASLP: _ radius=19.0473 angle=2.96488
|
||||
UIUC: _ radius=29.2553 angle=2.98231
|
||||
COPELABS: _ radius=16.2060 angle=2.62082
|
||||
PADUA: _ radius=13.5903 angle=1.13934
|
||||
CNIC: _ radius=13.05132 angle=2.87446
|
||||
LIP6: _ radius=29.2553 angle=2.62295
|
||||
ANYANG: _ radius=14.3378 angle=2.99956
|
||||
UFBA: _ radius=29.2553 angle=3.51898
|
||||
MUMBAI_AWS: _ radius=12.8934 angle=2.95081
|
||||
GIST: _ radius=11.5531 angle=2.98403
|
||||
LACL: _ radius=12.5144 angle=2.62296
|
||||
MICHIGAN: _ radius=17.7738 angle=2.98018
|
||||
AFA: _ radius=10.3354 angle=1.12640
|
||||
WASEDA: _ radius=19.3583 angle=2.99935
|
||||
CORUNA: _ radius=13.6888 angle=1.17180
|
||||
CSU: _ radius=14.1056 angle=2.99266
|
||||
TNO: _ radius=12.0148 angle=2.46031
|
||||
BERN: _ radius=13.2717 angle=2.41933
|
||||
URJC: _ radius=13.6888 angle=1.17169
|
||||
ARIZONA: _ radius=16.2305 angle=2.97033
|
||||
SRRU: _ radius=12.8769 angle=3.63761
|
||||
MEMPHIS: _ radius=15.2647 angle=2.98360
|
||||
OSAKA: _ radius=19.3573 angle=3.53687
|
||||
TONGJI: _ radius=11.1495 angle=2.87015
|
||||
UCLA: _ radius=16.5866 angle=2.99911
|
||||
UUM: _ radius=14.8351 angle=3.44434
|
||||
QUB: _ radius=17.8582321576696 angle=2.42743127401714
|
||||
SAVI: _ radius=19.5605 angle=4.04925
|
||||
GOETTINGEN: _ radius=12.2349 angle=2.47152
|
||||
UCLACS: _ radius=16.5866 angle=2.99910
|
||||
[links]
|
||||
MICHIGAN:NEU delay=14ms
|
||||
MICHIGAN:MEMPHIS delay=12ms
|
||||
MICHIGAN:UIUC delay=5ms
|
||||
MICHIGAN:CSU delay=15ms
|
||||
WU:ARIZONA delay=33ms
|
||||
ARIZONA:CSU delay=18ms
|
||||
ARIZONA:MEMPHIS delay=17ms
|
||||
UIUC:CSU delay=14ms
|
||||
UIUC:WU delay=9ms
|
||||
MEMPHIS:WU delay=17ms
|
||||
MEMPHIS:NEU delay=21ms
|
||||
CSU:UCLACS delay=16ms
|
||||
LIP6:MICHIGAN delay=69ms
|
||||
URJC:LIP6 delay=15ms
|
||||
URJC:WU delay=86ms
|
||||
BASEL:LIP6 delay=18ms
|
||||
BASEL:URJC delay=9ms
|
||||
WASEDA:TONGJI delay=98ms
|
||||
ARIZONA:WASEDA delay=75ms
|
||||
ANYANG:WASEDA delay=22ms
|
||||
ANYANG:TONGJI delay=54ms
|
||||
UIUC:PADUA delay=80ms
|
||||
BASEL:PADUA delay=9ms
|
||||
URJC:PADUA delay=15ms
|
||||
COPELABS:URJC delay=13ms
|
||||
COPELABS:PADUA delay=23ms
|
||||
COPELABS:LIP6 delay=21ms
|
||||
BASEL:GOETTINGEN delay=21ms
|
||||
PADUA:GOETTINGEN delay=21ms
|
||||
WASEDA:OSAKA delay=5ms
|
||||
GOETTINGEN:OSAKA delay=136ms
|
||||
ANYANG:OSAKA delay=36ms
|
||||
TONGJI:OSAKA delay=63ms
|
||||
COPELABS:MINHO delay=4ms
|
||||
BASEL:MINHO delay=23ms
|
||||
PADUA:MINHO delay=26ms
|
||||
URJC:MINHO delay=13ms
|
||||
UFBA:COPELABS delay=145ms
|
||||
UFBA:MEMPHIS delay=115ms
|
||||
SRRU:OSAKA delay=13ms
|
||||
SRRU:ANYANG delay=13ms
|
||||
TNO:GOETTINGEN delay=38ms
|
||||
TNO:LIP6 delay=38ms
|
||||
TNO:BASEL delay=38ms
|
||||
SRRU:MSU delay=5ms
|
||||
UCLACS:MSU delay=150ms
|
||||
TNO:MSU delay=120ms
|
||||
ANYANG:MSU delay=70ms
|
||||
CNIC:OSAKA delay=45ms
|
||||
BERN:BASEL delay=2ms
|
||||
BERN:AFA delay=15ms
|
||||
COPELABS:AFA delay=36ms
|
||||
PADUA:AFA delay=11ms
|
||||
MSU:UUM delay=26ms
|
||||
SRRU:UUM delay=42ms
|
||||
AFA:MUMBAI_AWS delay=72ms
|
||||
OSAKA:UUM delay=100ms
|
||||
UUM:MUMBAI_AWS delay=88ms
|
||||
UASLP:MEMPHIS delay=100ms
|
||||
UASLP:ARIZONA delay=32ms
|
||||
UASLP:UFBA delay=100ms
|
||||
MINHO:CORUNA delay=27ms
|
||||
URJC:CORUNA delay=17ms
|
||||
ANYANG:GIST delay=4ms
|
||||
MINHO:AVEIRO delay=2ms
|
||||
COPELABS:AVEIRO delay=4ms
|
||||
AFA:AVEIRO delay=45ms
|
||||
PADUA:UNIVH2C delay=50ms
|
||||
COPELABS:UNIVH2C delay=50ms
|
||||
URJC:UNIVH2C delay=52ms
|
||||
WU:MUMBAI_AWS delay=122ms
|
||||
UCLACS:ARIZONA delay=25ms
|
||||
WU:AVEIRO delay=75ms
|
||||
WU:UNIVH2C delay=75ms
|
||||
WU:UFBA delay=65ms
|
||||
UNIVH2C:UFBA delay=125ms
|
||||
AVEIRO:URJC delay=15ms
|
||||
UCLACS:WU delay=30ms
|
||||
NEU:SAVI delay=15ms
|
||||
MICHIGAN:SAVI delay=15ms
|
||||
LIP6:LACL delay=4ms
|
||||
BERN:LACL delay=18ms
|
||||
UNIVH2C:LACL delay=50ms
|
||||
QUB:WU delay=60ms
|
||||
QUB:TNO delay=15ms
|
||||
QUB:LIP6 delay=12ms
|
||||
QUB:NEU delay=60ms
|
||||
UCLA:ARIZONA delay=25ms
|
||||
UCLA:WU delay=30ms
|
||||
UCLA:UCLACS delay=1ms
|
||||
TONGJI:CNIC delay=18ms
|
||||
ANYANG:CNIC delay=33ms
|
||||
CSU:UCLA delay=16ms
|
||||
ANYANG:UCLA delay=100ms
|
||||
OSAKA:ARIZONA delay=100ms
|
||||
File renamed without changes.
Executable
+98
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- Mode:bash; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
|
||||
#
|
||||
# Copyright (C) 2015-2020, The University of Memphis,
|
||||
# Arizona Board of Regents,
|
||||
# Regents of the University of California.
|
||||
#
|
||||
# This file is part of Mini-NDN.
|
||||
# See AUTHORS.md for a complete list of Mini-NDN authors and contributors.
|
||||
#
|
||||
# Mini-NDN is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Mini-NDN is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Mini-NDN, e.g., in COPYING.md file.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# This script generates a testbed topology based on current data. Note
|
||||
# that this topology is memory intensive and can have issues on lower specced
|
||||
# systems due to its size.
|
||||
# To use, run with python3
|
||||
|
||||
import argparse
|
||||
import datetime
|
||||
import json
|
||||
import logging
|
||||
from os import path
|
||||
from urllib.request import urlopen
|
||||
|
||||
def testbedGen():
|
||||
"""Returns a string with the Mini-NDN topology version of the testbed"""
|
||||
topology = None
|
||||
connections = None
|
||||
hosts = []
|
||||
links = []
|
||||
try:
|
||||
with urlopen("https://ndndemo.arl.wustl.edu/testbedNodes.json") as url:
|
||||
topology = json.loads(url.read().decode())
|
||||
with urlopen("https://ndndemo.arl.wustl.edu/links.json") as url:
|
||||
connections = json.loads(url.read().decode())
|
||||
except:
|
||||
logging.error("Failed to retrieve testbed info from WUSTL servers")
|
||||
if __name__ == '__main__':
|
||||
from sys import exit
|
||||
exit(1)
|
||||
raise
|
||||
|
||||
logging.info("Generating testbed topology...")
|
||||
for node_name in topology:
|
||||
node = topology[node_name]
|
||||
if node['neighbors']:
|
||||
radius = node['hr_radius']
|
||||
angle = node['hr_angle']
|
||||
host_str = "{}: _ radius={} angle={}\n".format(node_name, radius, angle)
|
||||
hosts.append(host_str)
|
||||
logging.debug("Add node: {}".format(host_str)[:-1])
|
||||
else:
|
||||
# A node without neighbors shouldn't be considered part of the testbed
|
||||
# for testing purposes
|
||||
logging.debug("Node {} has no neighbors, passing...".format(node_name))
|
||||
for link in connections:
|
||||
node1 = link['start']
|
||||
node2 = link['end']
|
||||
# This value is equivalent to RTT in the testbed
|
||||
delay = link['nlsr_weight']
|
||||
link_str = "{}:{} delay={}ms\n".format(node1, node2, delay)
|
||||
logging.debug("Add link: {}".format(link_str)[:-1])
|
||||
links.append(link_str.strip())
|
||||
|
||||
topo_str = "[nodes]\n"
|
||||
for host in hosts:
|
||||
topo_str = topo_str + host
|
||||
topo_str = topo_str + "[links]\n"
|
||||
for link in links:
|
||||
topo_str = topo_str + link
|
||||
return topo_str.strip()
|
||||
|
||||
if __name__ == '__main__':
|
||||
default_path = path.dirname(__file__) + '/../topologies/testbed{}.conf'.format(str(datetime.date.today()))
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-l", "--log_level", help="Log level to output", default="info", choices=["debug", "info", "warning", "error"])
|
||||
parser.add_argument("-o", "--output_dir", help="File output location", default=default_path)
|
||||
args = parser.parse_args()
|
||||
log_level = getattr(logging, args.log_level.upper())
|
||||
topologies_path = path.abspath(args.output_dir)
|
||||
logging.basicConfig(format="%(levelname)s: %(message)s", level=log_level)
|
||||
topo = testbedGen()
|
||||
logging.info("Testbed generated, writing to file...")
|
||||
with open(topologies_path, "w") as file:
|
||||
file.writelines(topo)
|
||||
logging.info("Finished")
|
||||
Reference in new issue
Block a user