diff --git a/python/tools/dht/network.py b/python/tools/dht/network.py index a012c19997098d657dcc5186b021eaa8c9ff32b3..92f911c5e980a5c8a576830a7231f33a68f47918 100755 --- a/python/tools/dht/network.py +++ b/python/tools/dht/network.py @@ -30,7 +30,7 @@ import traceback import ipaddress import netifaces import numpy as np -from pyroute2.netns.process.proxy import NSPopen +from pyroute2 import NSPopen import msgpack from opendht import * diff --git a/python/tools/dht/virtual_network_builder.py b/python/tools/dht/virtual_network_builder.py index 8484dcb5b3032efbf42c8f0df7ea181de9b96e1c..7b9edf10f16e85ecc8f3ec1eafc91041217393fe 100755 --- a/python/tools/dht/virtual_network_builder.py +++ b/python/tools/dht/virtual_network_builder.py @@ -18,8 +18,7 @@ import argparse, subprocess -from pyroute2 import IPDB, NetNS -from pyroute2.netns.process.proxy import NSPopen +from pyroute2 import NDB, NetNS, NSPopen if __name__ == "__main__": parser = argparse.ArgumentParser(description='Creates a virtual network topology for testing') @@ -39,7 +38,7 @@ if __name__ == "__main__": ip = None try: - ip = IPDB() + ip = NDB() if args.remove: # cleanup interfaces for ifn in range(args.ifnum): @@ -61,11 +60,19 @@ if __name__ == "__main__": for ifn in range(args.ifnum): iface = args.ifname+str(ifn) if not iface in ip.interfaces: - ip.create(kind='veth', ifname=iface, peer=iface+'.1').commit() - - ip.create(kind='tuntap', ifname='tap'+args.ifname, mode='tap').commit() - - with ip.create(kind='bridge', ifname=brige_name) as i: + ip.interfaces.create( + kind='veth', + ifname=iface, + peer=iface+'.1', + ).commit() + + ip.interfaces.create( + kind='tuntap', + ifname='tap'+args.ifname, + mode='tap', + ).commit() + + with ip.interfaces.create(kind='bridge', ifname=brige_name) as i: for ifn in range(args.ifnum): iface = args.ifname+str(ifn) i.add_port(ip.interfaces[iface]) @@ -74,37 +81,43 @@ if __name__ == "__main__": i.add_ip(local_addr4+'1/24') if args.ipv6: i.add_ip(local_addr6+'1/64') - i.up() + i.set('state', 'up') with ip.interfaces['tap'+args.ifname] as tap: - tap.up() + tap.set('state', 'up') for ifn in range(args.ifnum): iface = args.ifname+str(ifn) - nns = NetNS('node'+str(ifn)) + nsname = 'node'+str(ifn) + nns = NetNS(nsname) iface1 = iface+'.1' with ip.interfaces[iface1] as i: - i.net_ns_fd = nns.netns + i['net_ns_fd'] = nns.netns with ip.interfaces[iface] as i: - i.up() - - ip_ns = IPDB(nl=nns) + i.set('state', 'up') + + ip_ns = NDB(sources=[ + { + 'target': 'localhost', + 'netns': nsname, + 'kind': 'netns', + } + ]) try: - with ip_ns.interfaces.lo as lo: - lo.up() + with ip_ns.interfaces['lo'] as lo: + lo.set('state', 'up') with ip_ns.interfaces[iface1] as i: if args.ipv4: i.add_ip(local_addr4+str(ifn+8)+'/24') if args.ipv6: i.add_ip(local_addr6+str(ifn+8)+'/64') - i.up() + i.set('state', 'up') finally: - ip_ns.release() + ip_ns.close() nsp = NSPopen(nns.netns, ["tc", "qdisc", "add", "dev", iface1, "root", "netem", "delay", str(args.delay)+"ms", str(int(args.delay/2))+"ms", "loss", str(args.loss)+"%", "25%"], stdout=subprocess.PIPE) - #print(nsp.communicate()[0].decode()) nsp.communicate() nsp.wait() nsp.release() @@ -118,4 +131,4 @@ if __name__ == "__main__": print('Error',e) finally: if ip: - ip.release() + ip.close()