def run(): Minindn.cleanUp() Minindn.verifyDependencies() topo = Topo() # Setup topo info("Setup\n") a = topo.addHost('a') b = topo.addHost('b') c = topo.addHost('c') topo.addLink(a, b, delay='10ms', bw=10) topo.addLink(b, c, delay='10ms', bw=10) ndn = Minindn(topo=topo) ndn.start() info("Configuring NFD\n") nfds = AppManager(ndn, ndn.net.hosts, Nfd, logLevel="DEBUG") #nlsr = AppManager(ndn, ndn.net.hosts, Nlsr, logLevel="DEBUG") # This is a fancy way of setting up the routes without violating DRY; # the important bit to note is the Nfdc command links = {"a": ["b"], "b": ["c"]} for first in links: for second in links[first]: host1 = ndn.net[first] host2 = ndn.net[second] interface = host2.connectionsTo(host1)[0][0] #info(interface) interface_ip = interface.IP() Nfdc.createFace(host1, interface_ip) Nfdc.registerRoute(host1, PREFIX, interface_ip, cost=0) info("Starting pings...\n") pingserver_log = open("/tmp/minindn/c/ndnpingserver.log", "w") pingserver = getPopen(ndn.net["c"], "ndnpingserver {}".format(PREFIX), stdout=pingserver_log, stderr=pingserver_log) ping1 = getPopen(ndn.net["a"], "ndnping {} -c 5".format(PREFIX), stdout=PIPE, stderr=PIPE) ping1.wait() info(ping1.stdout.read()) interface = ndn.net["b"].connectionsTo(ndn.net["a"])[0][0] info("Failing link\n") interface.config(delay="10ms", bw=10, loss=100) ping2 = getPopen(ndn.net["a"], "ndnping {} -c 5".format(PREFIX), stdout=PIPE, stderr=PIPE) ping2.wait() info(ping2.stdout.read()) interface.config(delay="10ms", bw=10, loss=0) MiniNDNCLI(ndn.net) info("Finished!\n") ndn.stop()
def main(): setLogLevel('info') Popen(['rm', '-r', '/tmp/minindn/'], stdout=PIPE, stderr=PIPE).communicate() ndn = Minindn() repos = { 'r1': { 'repoPrefix': '/repo/r1', 'servedPrefixes': ['/sensor/s1'], 'host': ndn.net['r1'] } } sensors = { 's1': { 'sensorPrefix': '/sensor/s1', 'host': ndn.net['s1'], 'service': 'repo' } # sensor is interested in repo service } users = { 'u1': { 'userPrefix': '/user/u1', 'host': ndn.net['u1'], 'service': 'repo' } # user is interested in repo service, and to find what prefixes it serves } repo_obj = Repo() bms = BMS(ndn, ndn.args, repo_obj, repos, sensors, users) bms.configureRepo() bms.configureSensor() bms.configureUsers() # insert some data into the repo bms.users['u1']["repoNames"] = getRepoNames(bms.users['u1']['host'].name, bms.users['u1']["logFile"]) bms.sensors['s1']["repoNames"] = getRepoNames( bms.sensors['s1']['host'].name, bms.sensors['s1']['logFile']) repo_obj.putDataIntoRepo(bms.sensors['s1']["host"], bms.sensors['s1']['repoNames'][0], bms.sensors['s1']["sensorPrefix"]) time.sleep(2) #make sure data is inserted into the repo repo_obj.getDataFromRepo(bms.users['u1']["host"], bms.users['u1']["repoNames"][0], bms.sensors['s1']["sensorPrefix"]) MiniNDNCLI(ndn.net) ndn.stop()
from mininet.log import setLogLevel, info from minindn.minindn import Minindn from minindn.apps.app_manager import AppManager from minindn.util import MiniNDNCLI from minindn.apps.nfd import Nfd from minindn.apps.nlsr import Nlsr from minindn.apps.tshark import Tshark if __name__ == '__main__': setLogLevel('info') Minindn.cleanUp() Minindn.verifyDependencies() ndn = Minindn() ndn.start() info('Starting tshark logging on nodes\n') tshark = AppManager(ndn, ndn.net.hosts, Tshark, logFolder="./log/") info('Starting NFD on nodes\n') nfds = AppManager(ndn, ndn.net.hosts, Nfd) info('Starting NLSR on nodes\n') nlsrs = AppManager(ndn, ndn.net.hosts, Nlsr) MiniNDNCLI(ndn.net) ndn.stop()