项目作者: 5GExchange

项目描述 :
Service Graph embedding algorithms for ESCAPE
高级语言: Python
项目地址: git://github.com/5GExchange/mapping.git
创建时间: 2018-12-04T15:55:31Z
项目社区:https://github.com/5GExchange/mapping

开源协议:Apache License 2.0

下载


Mapping Algorithms provided for ESCAPE

Introduction

This orchestration algorithm maps service graphs (consisting of (virtual) network
functions and logical connections) to resource graphs (consisting of virtualized
node and network resources) in a greedy backtracking manner, based on heuristics
and customizable preference value calculations.

Requirements

  • Python 2.7.6+
  • NFFG 1.0
    • NetworkX 1.11+
  • Gurobi

Structure

Files required to run the algorithm:

  1. * MappingAlgorithms.py ---> function MAP() is the entry point
  2. * Alg1_Core.py
  3. * GraphPreprocessor.py
  4. * Alg1_Helper.py
  5. * BacktrackHandler.py
  6. * UnifyExceptionTypes.py

Other files (appropriate PYTHONPATH setting maybe required, see StressTest-small.py):

  1. * StressTest-small.py
  2. * CarrierTopoBuilder.py
  3. * MIPBaseline.py
  4. * milp_solution_in_nffg.py

Utilities (can be outdated):

  1. * BatchTest-params.py
  2. * ParameterSearch.py
  3. * SimulatedAnnealing.py
  4. * StressTest.py
  5. * StressTest-agressive.py
  6. * StressTest-decent.py
  7. * StressTest-gwin.py
  8. * StressTest-normal.py
  9. * StressTest-sc8decent.py
  10. * StressTest-sharing.py
  11. * calc_mapping_times.py
  12. * calc_res_util_metrics.py
  13. * count_bt_successes.py
  14. * count_milp_successes.py
  15. * night_test.py

Running parameters

The parameters of the algorithm are:

  1. * ``enable_shortest_path_cache`` -- saves the calculated shortest paths for
  2. the resource graph into a file for later usage.
  3. * ``bw_factor``, ``res_factor``, ``lat_factor`` -- the coefficients of
  4. bandwidth, node resources and latency respectively, during network
  5. function placement preference value. Their sum is suggested to be 3.0.
  6. * ``bt_limit`` -- Backtracking depth limit of the algorithm.
  7. * ``bt_branching_factor`` -- The number of the top preferred placement
  8. options to remember.
  9. * ``mode`` -- Mapping operation mode:
  10. _NFFG.MODE_REMAP_ -- All network function and every reservation
  11. attribute of the resource graph are ignored.
  12. _NFFG.MODE_ADD_ -- The stored VNF information in the substrate
  13. graph is interpreted as reservation state. Their
  14. resource requirements are subtracted from the available.
  15. If an ID is present in both the substrate and request
  16. graphs, the resource requirements (and the whole
  17. instance) will be updated.
  18. _NFFG.MODE_DEL_ -- All the elements of the request will be
  19. deleted from the resource graph which has all of its
  20. connected components speficied in the service graph.
  21. * (``shortest_paths`` -- The shortest path matrix can be added as an input
  22. Python object.)
  23. * (``return_dist`` -- The MAP function returns a tuple of the mapped NFFG
  24. and the shortest path Python object)

Documentation

An example invocation of the orchestration algorithm for mapping a service graph
to a resource graph both given by an NFFG file, can be found in the main of
MappingAlgorithms.py.

The documentation for the input structure formats can be found in nffg-doc.pdf.

The project was mainly created for the needs of UNIFY, FP7 project
(http://fp7-unify.eu/). The algorithm is incorporated into the ESCAPE framework
available at https://sb.tmit.bme.hu/escape/.

For more details on the context and design of the algorithm is (will be)
available in the paper published in

IEEE NFV-SDN — 2nd Workshop for Orchestration for Software Defined Infrastructure
(O4SDI), 07th November 2016, Palo Alto, CA, USA.
title: Efficient Service Graph Embedding: A Practical Approach
authors: Balázs Németh, Balázs Sonkoly (Budapest University of Technology and
Economics), Matthias Rost (Technische Universität Berlin), Stefan Schmid (Aalborg
University)

License

Licensed under the Apache License, Version 2.0; see LICENSE file.

  1. Copyright (C) 2017 by
  2. Balazs Nemeth <balazs.nemeth@tmit.bme.hu>