Esempio n. 1
0
def _create_experiment(name, cluster, topo):
    logger.debug("creating experiment with name={}, cluster={}".format(
        name, cluster['name']))
    c = clusters[cluster['name']]
    t = create_topo(topo)
    experiment = maxinet.Experiment(c, t, switch=OVSSwitch)
    experiments[name] = experiment
    return name
Esempio n. 2
0
def main():

    # Dict for static mapping
    for i in range(3):
        for j in range(3):
            for k in range(3):
                pass

    # mapping = {"h1111": 0,
    # "h2": 0,
    # "h3": 1,
    # "h4": 1,
    # "s1": 0,
    # "s2": 0,
    # "s3": 1,
    # "s4": 1,
    # "s5": 0,
    # "s6": 1,
    # "s7": 1
    # }

    # Create cluster and topology
    cluster = maxinet.Cluster()
    topo = MultilayerGrid()

    exp = maxinet.Experiment(cluster, topo)
    # exp = maxinet.Experiment(cluster, topo, nodemapping=mapping)
    exp.setup()

    if len(sys.argv) > 1:
        if sys.argv[1] == '-d':
            # Into the CLI mode, for debugging
            exp.CLI(locals(), globals())
            exp.stop()

    # Start Iperf script on all hosts.
    else:
        time.sleep(1)
        # Loop over all hosts
        for i in range(3):
            for j in range(3):
                for k in range(3):
                    hname = 'h%d%d%d' % (i + 1, j + 1, k + 1)
                    # Run go script at background
                    exp.get_node(hname).cmd(
                        "~/bin/iperf-server-client-demo-pc -min 30 -max 40 &")

    # Enter infinite loop
    try:
        while 1:
            time.sleep(10)
    except KeyboardInterrupt:
        print('KeyboardInterrupt detected!')
        exp.stop()
Esempio n. 3
0
def setupNetwork(hps, sw_ip_fname):
    topo = GeneratedTopo(hps=hps, sw_ip_fname=sw_ip_fname)
    print('*** Setup Maxinet Cluster')

    cluster = maxinet.Cluster()

    exp = maxinet.Experiment(cluster, topo, switch=OVSSwitch)
    exp.setup()

    print('*** Done setup Maxinet Cluster')

    return exp
Esempio n. 4
0
def hello_world():
    topo = Topo()
    topo.addHost("h1", cls=Docker, ip="10.0.0.251", dimage="ubuntu:trusty")
    topo.addHost("h2", cls=Docker, ip="10.0.0.252", dimage="ubuntu:trusty")
    topo.addSwitch("s1", dpid=Tools.makeDPID(1))
    topo.addLink("h1", "s1")
    topo.addLink("h2", "s1")

    # start cluster
    cluster = maxinet.Cluster(minWorkers=1, maxWorkers=2)

    # start experiment with OVSSwitch on cluster
    exp = maxinet.Experiment(cluster, topo, switch=OVSSwitch)
    exp.setup()
    return 'Welcome to our Library!'
Esempio n. 5
0
    def _setup_exp(self, exp_info):
        self._run_controller(exp_info.topo)
        if not exp_info.placement:
            placement = "round_robin"
        else:
            placement = exp_info.placement

        try:
            cur_exp = maxinet.Experiment(
                self._cur_cluster,
                exp_info.topo,
                switch=OVSSwitch,
                nodemapping=self._get_placement_mapping(placement))
            self._pre_exp_setup()
            cur_exp.setup()
        except Exception as e:
            logger.error(e)
            self._cleanup_cur_exp()

        self._check_dps_conn(wait=30)

        return cur_exp
Esempio n. 6
0
#!/usr/bin/python2

#
# Minimal example showing how to use MaxiNet
#

import time

from MaxiNet.Frontend import maxinet
from MaxiNet.tools import FatTree
from mininet.node import OVSSwitch

topo = FatTree(30, 10, 0.1)
cluster = maxinet.Cluster(minWorkers=7, maxWorkers=7)

exp = maxinet.Experiment(cluster, topo, switch=OVSSwitch)
exp.setup()

print exp.get_node("h1").cmd("ifconfig")  # call mininet cmd function of h1
print exp.get_node("h30").cmd("ifconfig")

print "waiting 5 seconds for routing algorithms on the controller to converge"
time.sleep(5)

print exp.get_node("h30").cmd("ping -c 100 10.0.0.1")

exp.stop()
Esempio n. 7
0
#!/usr/bin/python2

#
# This example shows how to use MaxiNet's CommandLineInterface (CLI).
# Using the CLI, commands can be run interactively at emulated hosts.
# Thanks to our build-in py command you can dynamically change the
# topology.
#

from MaxiNet.Frontend import maxinet
from MaxiNet.tools import FatTree

topo = FatTree(4, 10, 0.1)
cluster = maxinet.Cluster()

exp = maxinet.Experiment(cluster, topo)
exp.setup()

exp.CLI(locals(), globals())

exp.stop()
Esempio n. 8
0
#!/usr/bin/python2

#
# Minimal example showing how to use MaxiNet
#

import time

from MaxiNet.Frontend import maxinet
from MaxiNet.tools import FatTree
from mininet.node import OVSSwitch

topo = FatTree(4, 10, 0.1)
cluster = maxinet.Cluster()

exp = maxinet.Experiment(cluster,
                         topo,
                         switch=OVSSwitch,
                         distriopt_mapper="EmbeddedPartition")
exp.setup()

print exp.get_node("h1").cmd("ifconfig")  # call mininet cmd function of h1
print exp.get_node("h4").cmd("ifconfig")

print "waiting 5 seconds for routing algorithms on the controller to converge"
time.sleep(5)

print exp.get_node("h1").cmd("ping -c 5 10.0.0.4")

exp.stop()
Esempio n. 9
0
def main():

    # app.exe > ../logs/save_to.log 2>&1 &
    cluster = maxinet.Cluster()
    mn = maxinet.Experiment(cluster,
                            Topology(),
                            switch=OVSSwitch,
                            nodemapping=mapping,
                            controller='10.0.0.4')
    mn.setup()
    auth = mn.get('auth')
    s1 = mn.get('s1')
    scada = mn.get('scada')

    evs = []
    for h in mn.hosts:
        if 'ev' in h.name:
            evs.append(h)

    for sw in mn.switches:
        sw.cmd('rm -rf /var/run/wpa_supplicant')
        sw.cmd('rm -rf /home/arthurazs/git/3AS/logs/s*.log')
        sw.cmd('rm -rf /home/arthurazs/git/3AS/logs/auth')
        sw.cmd('rm -rf /home/arthurazs/git/3AS/logs/mms')
        sw.cmd('rm -rf /home/arthurazs/git/3AS/logs/pcap')

    logger.info("*** Disabling hosts ipv6\n")
    for h in mn.hosts:
        h.cmd("sysctl -w net.ipv6.conf.all.disable_ipv6=1")
        h.cmd("sysctl -w net.ipv6.conf.default.disable_ipv6=1")
        h.cmd("sysctl -w net.ipv6.conf.lo.disable_ipv6=1")
        if h.MAC() == scada.MAC():
            for ev in evs:
                h.setARP(ev.IP(), ev.MAC())
        else:
            h.setARP(scada.IP(), scada.MAC())

    logger.info("*** Disabling switches ipv6\n")
    for sw in mn.switches:
        sw.cmd("sysctl -w net.ipv6.conf.all.disable_ipv6=1")
        sw.cmd("sysctl -w net.ipv6.conf.default.disable_ipv6=1")
        sw.cmd("sysctl -w net.ipv6.conf.lo.disable_ipv6=1")

    logger.info("*** Setting ARP tables\n")
    scada.setARP('10.0.1.1', '00:00:00:00:00:01')
    for ev in evs:
        ev.setARP('10.0.1.1', '00:00:00:00:00:01')

    logger.info("*** Creating log folders\n")
    for sw in mn.switches:
        sw.cmd('mkdir -p ' + PCAP_LOGS)
        sw.cmd('mkdir -p ' + AUTH_LOGS)
        sw.cmd('mkdir -p ' + MMS_LOGS)

    logger.info("*** Setting up traffic dumpers\n")
    pcap(s1, name='openflow', intf='lo', port='1812 and port not 53')
    pcap(auth, name='freeradius', intf='lo')
    pcap(auth, name='sdn-hostapd')
    pcap(scada)

    logger.info("*** Configuring bridge between 'auth' and 'controller'\n")
    s1.cmd('ifconfig s1 10.0.1.1 netmask 255.255.0.0')
    s1.cmd('ovs-vsctl set bridge s1 other-config:hwaddr=00:00:00:00:00:01')
    s1.setARP('10.0.1.2', '00:00:00:00:00:02')
    s1.setARP('10.0.1.3', '00:00:00:00:00:03')
    for ev in evs:
        s1.setARP(ev.IP(), ev.MAC())
    auth.setARP('10.0.1.1', '00:00:00:00:00:01')
    pcap(s1, name='controller', intf='s1', port='53')

    logger.info("*** Starting RADIUS (freeradius) \n")
    logger.info("*** Starting Authenticator (hostapd)\n")
    freeradius(auth)
    hostapd(auth)

    logger.info("*** Starting SCADA\n")
    scada.cmd('screen -L -Logfile', MMS_LOGS + 'scada.log',
              '-S scada -dm python3 ' + IEDS_ROOT + 'scada.py')

    logger.info("*** Starting EVs\n")
    sleep(1, 'Starting EVs')
    for ev in evs:
        wpa(ev)

    sleep(1, 'Experiment')

    for ev in evs:
        wpa_cli(ev, 'ev.sh', ev.name)

    logger.info("*** Running experiment\n")
    sleep(5, 'Experiment')

    logger.info("*** Finishing experiment\n")
    for sw in mn.switches:
        sw.cmd('screen -S scada -X quit')
        sw.cmd("kill -2 $(ps aux | grep '[w]ired' | awk '{print $2}')")
        sw.cmd('pkill -2 hostapd')
        sw.cmd('pkill -2 freeradius')
        sw.cmd('pkill -2 server_ied')
        sw.cmd('ovs-ofctl dump-flows ' + sw.name + ' > ' + LOGS + sw.name +
               '.log')
        sw.cmd('chmod +r ' + AUTH_LOGS + 'freeradius.log')
        sw.cmd('pkill -2 tcpdump')

    sleep(5, 'Experiment')

    mn.stop()
Esempio n. 10
0
        Topo.__init__(self, **opts)

    def build(self):
        h1 = self.addHost('h1', ip="10.0.0.1")
        h2 = self.addHost('h2', ip="10.0.0.2")
        s1 = self.addSwitch('s1', dpid='1')
        h1s1 = self.addLink(h1, s1, cls=TCULink)
        h2s1 = self.addLink(h2, s1, cls=TCULink)


topo = DC()
print "Done Topo"
cluster = maxinet.Cluster()
print "Done Cluster"

exp = maxinet.Experiment(cluster, DC(), switch=UserSwitch)
exp.setup()

print "set up done"

print "waiting 5 seconds for routing algorithms on the controller to converge"
time.sleep(5)

exp.CLI(locals(), globals())
exp.stop()



#print exp.get_node("h1").cmd("ifconfig")  # call mininet cmd function of h1
#print exp.get_node("h4").cmd("ifconfig")
#print exp.get_node("h1").cmd("ping -c 5 10.0.0.4")
Esempio n. 11
0
with open('./conf/hostnamemapping.mxn', 'r') as file:
    lines = file.read()
    hostnamemapping = eval('{' + lines + '}')
file.close()
print('hostnamemapping: %s' % hostnamemapping)

print('Setting node mapping...')
nodemapping = {}
with open('./conf/nodemapping.mxn', 'r') as file:
    lines = file.read()
    nodemapping = eval('{' + lines + '}')
file.close()
print('nodemapping: %s' % nodemapping)

# start cluster
print('****Starting Cluster')
cluster = maxinet.Cluster(minWorkers=2, maxWorkers=2)

print('****Startng experiment')
exp = maxinet.Experiment(cluster,
                         topo,
                         switch=OVSSwitch,
                         nodemapping=nodemapping,
                         hostnamemapping=hostnamemapping)
exp.setup()

raw_input('[Continue]')

print('****Closing all')
exp.stop()
Esempio n. 12
0
topo = FatTree(4, 10, 0.1)

mapping = {
    "h1": 0,
    "h2": 0,
    "h3": 1,
    "h4": 1,
    "s1": 0,
    "s2": 0,
    "s3": 1,
    "s4": 1,
    "s5": 0,
    "s6": 1,
    "s7": 1
}

cluster = maxinet.Cluster(minWorkers=2, maxWorkers=2)

exp = maxinet.Experiment(cluster, topo, nodemapping=mapping)
exp.setup()

print exp.get_node("h1").cmd("ifconfig")  # call mininet cmd function of h1
print exp.get_node("h4").cmd("ifconfig")

print "waiting 5 seconds for routing algorithms on the controller to converge"
time.sleep(5)

print exp.get_node("h1").cmd("ping -c 5 10.0.0.4")

exp.stop()
Esempio n. 13
0
 def topology(self, clusterNodesLength):
     print('\nCreating Mininet network...\n')
     topo = Topo()
     cluster = maxinet.Cluster(minWorkers=1, maxWorkers=clusterNodesLength)
     self.exp = maxinet.Experiment(cluster, topo, switch=OVSSwitch)
     self.exp.setup()