Beispiel #1
0
 def nrr_topology(cls):
     """Return topology for testing NRR caching strategies
     """
     # Topology sketch
     #
     # 0 ---- 2----- 4
     #        |       \
     #        |        s
     #        |       /
     # 1 ---- 3 ---- 5
     #
     topology = IcnTopology(fnss.Topology())
     nx.add_path(topology, [0, 2, 4, "s", 5, 3, 1])
     topology.add_edge(2, 3)
     receivers = (0, 1)
     source = "s"
     caches = (2, 3, 4, 5)
     contents = (1, 2, 3, 4)
     fnss.add_stack(topology, source, 'source', {'contents': contents})
     for v in caches:
         fnss.add_stack(topology, v, 'router', {'cache_size': 1})
     for v in receivers:
         fnss.add_stack(topology, v, 'receiver', {})
     fnss.set_delays_constant(topology, 1, 'ms')
     return topology
Beispiel #2
0
 def nrr_topology(cls):
     """Return topology for testing NRR caching strategies
     """
     # Topology sketch
     #
     # 0 ---- 2----- 4
     #        |       \
     #        |        s
     #        |       /
     # 1 ---- 3 ---- 5
     #
     topology = IcnTopology(fnss.Topology())
     nx.add_path(topology, [0, 2, 4, "s", 5, 3, 1])
     topology.add_edge(2, 3)
     receivers = (0, 1)
     source = "s"
     caches = (2, 3, 4, 5)
     contents = (1, 2, 3, 4)
     fnss.add_stack(topology, source, 'source', {'contents': contents})
     for v in caches:
         fnss.add_stack(topology, v, 'router', {'cache_size': 1})
     for v in receivers:
         fnss.add_stack(topology, v, 'receiver', {})
     fnss.set_delays_constant(topology, 1, 'ms')
     return topology
Beispiel #3
0
 def partition_topology(cls):
     #
     #      +-- s1 --+
     #     /     |    \
     #   c1-----[]----c2
     #         /  \
     #        r1  r2
     #
     topo = fnss.Topology()
     icr_candidates = ["c1", "router", "c2"]
     nx.add_path(topo, icr_candidates)
     topo.add_edge("r1", "router")
     topo.add_edge("r2", "router")
     topo.add_edge("c1", "s1")
     topo.add_edge("c2", "s1")
     topo.graph['icr_candidates'] = set(icr_candidates)
     contents = (1, 2, 3, 4)
     for router in icr_candidates:
         if router in ("c1", "c2"):
             props = {'cache_size': 1}
         fnss.add_stack(topo, router, 'router', **props)
     for src in ['s1']:
         fnss.add_stack(topo, src, 'source', {'contents': contents})
     for rcv in ['r1', 'r2']:
         fnss.add_stack(topo, rcv, 'receiver')
     topo.graph['cache_assignment'] = {"r1": "c1", "r2": "c2"}
     return IcnTopology(topo)
Beispiel #4
0
    def my_topology(cls):
        """Return my topology for testing caching strategies
        """
        # Topology sketch
        #            0
        #         /     \
        #        /       \
        #       /         \
        #      1           2
        #    /   \       /  \
        #   3     4     5    6
        #  / \   / \   / \  / \
        # 7   8 9  10 11 1213 14
        #
        k = 2
        h = 3
        delay = 5
        topology = IcnTopology(fnss.k_ary_tree_topology(k, h))
        receivers = [
            v for v in topology.nodes_iter() if topology.node[v]['depth'] == h
        ]
        sources = [
            v for v in topology.nodes_iter() if topology.node[v]['depth'] == 0
        ]
        routers = [
            v for v in topology.nodes_iter()
            if topology.node[v]['depth'] > 0 and topology.node[v]['depth'] < h
        ]
        topology.graph['icr_candidates'] = set(routers)
        for v in receivers:
            fnss.add_stack(topology, v, 'receiver')
        for v in routers:
            fnss.add_stack(topology, v, 'router', {'cache_size': 2})

        contents = (1, 2, 3)
        fnss.add_stack(topology, source, 'source', {'contents': contents})

        # set weights and delays on all links
        fnss.set_weights_constant(topology, 1.0)
        fnss.set_delays_constant(topology, delay, 'ms')
        fnss.set_delays_constant(topology, 20, 'ms', [(0, 1), (0, 2)])
        # label links as internal
        for u, v in topology.edges_iter():
            topology.edge[u][v]['type'] = 'internal'
        return IcnTopology(topology)
Beispiel #5
0
 def on_path_topology(cls):
     """Return topology for testing on-path caching strategies
     """
     # Topology sketch
     #
     # 0 ---- 1 ---- 2 ---- 3 ---- 4
     #               |
     #               |
     #               5
     #
     topology = IcnTopology(fnss.line_topology(5))
     topology.add_edge(2, 5)
     source = 4
     receivers = (0, 5)
     caches = (1, 2, 3)
     contents = caches
     fnss.add_stack(topology, source, 'source', {'contents': contents})
     for v in caches:
         fnss.add_stack(topology, v, 'router', {'cache_size': 1})
     for v in receivers:
         fnss.add_stack(topology, v, 'receiver', {})
     return topology
 def build_topology(cls):
     # Topology sketch
     #
     # 0 ---- 1 ---- 2 ---- 3 ---- 4
     #        |             |
     #        |             |
     #        5 -- 6 - 7 -- 8
     #
     topology = IcnTopology()
     nx.add_path(topology, [0, 1, 2, 3, 4], a=1, b=1)
     nx.add_path(topology, [1, 5, 6, 7, 8, 3], b=2, c=2)
     source = 4
     receiver = 0
     caches = (1, 2, 3, 5, 6, 7, 8)
     contents = [1, 2, 3]
     fnss.add_stack(topology, source, 'source', {'contents': contents})
     fnss.add_stack(topology, receiver, 'receiver', {})
     for v in caches:
         fnss.add_stack(topology, v, 'router', {'cache_size': 1})
     return topology