def runExperiment():
    setLogLevel('info')

    info("Starting network")
    topo = Topo()
    sta1 = topo.addStation("sta1", range=150, speed=5)
    sta2 = topo.addStation("sta2", range=200)
    ap1 = topo.addAccessPoint("ap1", position="150,150,0", range=150)
    topo.addLink(sta1, ap1, delay="10ms")
    topo.addLink(sta2, ap1, delay="10ms")
    ndnwifi = MinindnWifi(topo=topo)
    a = ndnwifi.net["sta1"]
    b = ndnwifi.net["sta2"]
    # Test for model-based mobility
    if ndnwifi.args.modelMob:
        ndnwifi.startMobilityModel(model='GaussMarkov')
    #Test for replay based mobility
    if ndnwifi.args.mobility:
        info("Running with mobility...")

        p1, p2, p3, p4 = dict(), dict(), dict(), dict()
        p1 = {'position': '150.0,150.0,0.0'}
        p2 = {'position': '140.0,130.0,0.0'}

        p3 = {'position': '250.0,250.0,0.0'}
        p4 = {'position': '301.0,301.0,0.0'}

        ndnwifi.net.mobility(a, 'start', time=1, **p1)
        ndnwifi.net.mobility(a, 'stop', time=12, **p3)
        ndnwifi.net.mobility(b, 'start', time=2, **p2)
        ndnwifi.net.mobility(b, 'stop', time=22, **p4)
        ndnwifi.net.stopMobility(time=23)
        ndnwifi.startMobility(time=0, mob_rep=1, reverse=False)

    ndnwifi.start()
    info("Starting NFD")
    sleep(2)
    nfds = AppManager(ndnwifi, ndnwifi.net.stations, Nfd)

    info("Starting pingserver...")
    NDNPing.startPingServer(b, "/example")
    Nfdc.createFace(a, b.IP())
    Nfdc.registerRoute(a, "/example", b.IP())

    info("Starting ping...")
    NDNPing.ping(a, "/example", 10)

    # Start the CLI
    MiniNDNWifiCLI(ndnwifi.net)
    ndnwifi.net.stop()
    ndnwifi.cleanUp()
Ejemplo n.º 2
0
def runExperiment():
    setLogLevel('info')

    info("Starting network")
    ndnwifi = MinindnWifi()
    a = ndnwifi.net["sta1"]
    b = ndnwifi.net["sta2"]
    # Test for model-based mobility
    if ndnwifi.args.modelMob:
        ndnwifi.startMobilityModel(model='GaussMarkov')
    #Test for replay based mobility
    if ndnwifi.args.mobility:
        info("Running with mobility...")

        p1, p2, p3, p4 = dict(), dict(), dict(), dict()
        p1 = {'position': '40.0,30.0,0.0'}
        p2 = {'position': '40.0,40.0,0.0'}
        p3 = {'position': '31.0,10.0,0.0'}
        p4 = {'position': '200.0,200.0,0.0'}

        ndnwifi.net.mobility(a, 'start', time=1, **p1)
        ndnwifi.net.mobility(b, 'start', time=2, **p2)
        ndnwifi.net.mobility(a, 'stop', time=12, **p3)
        ndnwifi.net.mobility(b, 'stop', time=22, **p4)
        ndnwifi.net.stopMobility(time=23)
        ndnwifi.startMobility(time=0, mob_rep=1, reverse=False)

    ndnwifi.start()
    info("Starting NFD")
    sleep(2)
    nfds = AppManager(ndnwifi, ndnwifi.net.stations, Nfd)

    info("Starting pingserver...")
    NDNPing.startPingServer(b, "/example")
    Nfdc.createFace(a, b.IP())
    Nfdc.registerRoute(a, "/example", b.IP())

    info("Starting ping...")
    NDNPing.ping(a, "/example", nPings=10)

    sleep(10)
    # Start the CLI
    MiniNDNWifiCLI(ndnwifi.net)
    ndnwifi.net.stop()
    ndnwifi.cleanUp()
Ejemplo n.º 3
0
def runExperiment():
    setLogLevel('info')

    info("Starting network")
    ndnwifi = MinindnWifi(
        controller=lambda name: RemoteController(
            name, ip='127.0.0.1', port=6633),
        topoFile='/home/vagrant/icnsimulations/topologies/topo-tiny.conf')

    ndnwifi.start()
    sleep(2)

    nApId = 1
    for pAp in ndnwifi.net.aps:
        strApId = '1000000000' + str(nApId).zfill(6)
        subprocess.call(
            ['ovs-vsctl', 'set-controller',
             str(pAp), 'tcp:127.0.0.1:6633'])
        subprocess.call([
            'ovs-vsctl', 'set', 'bridge',
            str(pAp), 'other-config:datapath-id=' + strApId
        ])
        nApId += 1

    # Set IPs for access points
    nNextIP = 4
    lstIntfSet = []
    for pAp in ndnwifi.net.aps:
        lstIntf = pAp.intfList()
        for pIntf in lstIntf:
            strIntf = pIntf.name
            if (strIntf != 'lo') and (strIntf not in lstIntfSet):
                strIP = '10.0.0.' + str(nNextIP) + '/24'
                info('AP=%s; Intf=%s; IP=%s\n' % (str(pAp), strIntf, strIP))
                pAp.setIP(strIP, intf=pIntf)
                nNextIP += 1
                lstIntfSet.append(strIntf)

    # Set IPs for hosts
    for pStation in ndnwifi.net.stations:
        lstIntf = pStation.intfList()
        for pIntf in lstIntf:
            strIntf = pIntf.name
            if (strIntf != 'lo') and (strIntf not in lstIntfSet):
                strIP = '10.0.0.' + str(nNextIP) + '/24'
                info('STATION=%s; Intf=%s; IP=%s\n' %
                     (str(pStation), strIntf, strIP))
                pStation.setIP(strIP, intf=pIntf)
                nNextIP += 1
                lstIntfSet.append(strIntf)

    info("Starting NFD\n")
    nfds = AppManager(ndnwifi, ndnwifi.net.stations + ndnwifi.net.aps, Nfd)
    # nlsrs = AppManager(ndnwifi, ndnwifi.net.aps, Nlsr)

    # Create faces linking every node and instantiate producers
    info("Creating faces and instantiating producers...\n")
    hshProducers = {}
    for pHostOrig in ndnwifi.net.stations + ndnwifi.net.aps:
        for pHostDest in ndnwifi.net.stations + ndnwifi.net.aps:
            if (pHostDest != pHostOrig):
                info('Register, pHostOrig=%s; pHostDest=%s\n' %
                     (str(pHostOrig), str(pHostDest)))
                Nfdc.createFace(pHostOrig, pHostDest.IP())
                Nfdc.registerRoute(pHostOrig, interestFilterForHost(pHostDest),
                                   pHostDest.IP())

        getPopen(pHostOrig, 'producer %s &' % interestFilterForHost(pHostOrig))

    # cons = ndnwifi.net.stations['h0']
    # getPopen(cons, 'consumer-with-timer h0')

    # Start the CLI
    if (c_bShowCli):
        MiniNDNWifiCLI(ndnwifi.net)

    ndnwifi.net.stop()
    ndnwifi.cleanUp()
Ejemplo n.º 4
0
        for pHostDest in ndnwifi.net.stations + ndnwifi.net.aps:
            if (pHostDest != pHostOrig):
                info('Register, pHostOrig=%s; pHostDest=%s\n' %
                     (str(pHostOrig), str(pHostDest)))
                Nfdc.createFace(pHostOrig, pHostDest.IP())
                Nfdc.registerRoute(pHostOrig, interestFilterForHost(pHostDest),
                                   pHostDest.IP())

        getPopen(pHostOrig, 'producer %s &' % interestFilterForHost(pHostOrig))

    # cons = ndnwifi.net.stations['h0']
    # getPopen(cons, 'consumer-with-timer h0')

    # Start the CLI
    if (c_bShowCli):
        MiniNDNWifiCLI(ndnwifi.net)

    ndnwifi.net.stop()
    ndnwifi.cleanUp()


def interestFilterForHost(pHost):
    return '/%s' % (str(pHost))


if __name__ == '__main__':
    try:
        runExperiment()
    except Exception as e:
        MinindnWifi.handleException()
Ejemplo n.º 5
0
    producer.cmd(cmd)
    cmd = 'avahi-publish-service {} {} {} {} -d hello.local | ts `date +%s.%N` &>> avahi.log &'.format('printer', '_ndnsd._udp', 5683, '/mylight-myhouse')
    producer.cmd(cmd)
    time.sleep(0.1)
    # Popen(['cp', 'test.info', '/usr/local/etc/ndn/ndnsd_default.info'], stdout=PIPE, stderr=PIPE).communicate() 

def startConsumer (consumers):
    for consumer in consumers:
        # consumer.cmd('tshark -o ip.defragment:TRUE -o ip.check_checksum:FALSE -ni any -f "udp port 5353" -w {}.pcap &> /dev/null &'.format(consumer.name))  
        # for i in range(0, 10):i
        i=0
        cmd = 'echo "Fetching service, consumer: {}" | ts `date +%s.%N` &> avahi_{}.log &'.format(str(i), str(i))
        consumer.cmd (cmd)
        cmd = 'avahi-browse -rt {} -d hello.local  | ts `date +%s.%N` &>> avahi_{}.log &'.format('_ndnsd._udp', str(i))
        consumer.cmd(cmd)

if __name__ == '__main__':
    subprocess.call(['rm','-rf','/tmp/minindn/*'])
    subprocess.call(['killall','tshark'])
    setLogLevel('info')
    ndnwifi = MinindnWifi()
    producers = ndnwifi.net['p1']
    consumers = [ndnwifi.net['c1']]
    start(ndnwifi)
    startProducer(producers)
    startConsumer(consumers)
    MiniNDNWifiCLI(ndnwifi.net)
    subprocess.call(['killall','tshark'])
    ndnwifi.stop()
    ndnwifi.cleanUp()
Ejemplo n.º 6
0
import ndnsd_experiment_base as neb
from mininet.log import setLogLevel, info
from minindn.wifi.minindnwifi import MinindnWifi
from minindn.util import MiniNDNWifiCLI, getPopen
from minindn.helpers.nfdc import Nfdc
from time import sleep

numberOfUpdates = 10
jitter = 5

if __name__ == '__main__':
    neb.subprocess.call(['rm', '-r', '/tmp/minindn/'])
    setLogLevel('info')
    ndn = MinindnWifi()
    producers = dict()
    consumers = dict()
    producers = neb.generateNodes('P', 2)
    consumers = neb.generateNodes('C', 3)
    print(consumers, producers)
    exp = neb.NDNSDExperiment(ndn, producers, consumers, 'wifi')
    sleep(2)
    exp.startProducer()
    exp.startConsumer()

    # neb.registerRouteToAllNeighbors(ndn, hosts, '/discovery/printer')
    # set sync prefix, /discovery/printers, to multicast on all the stations.
    for node in ndn.net.stations:
        Nfdc.registerRoute(node, '/discovery/printer', '224.0.23.170')
        Nfdc.registerRoute(node, '/ndnsd', '224.0.23.170')
        Nfdc.setStrategy(node, '/discovery/printer', Nfdc.STRATEGY_MULTICAST)
        sleep(1)