Compare commits

...

22 commits

Author SHA1 Message Date
Maximilian Kratz 37013ac53f
Merge pull request #64 from Echtzeitsysteme/hotfix/model-affected-paths
Adds tests for affected paths + adds repair/update functionality to all VNE algorithms that operate with paths
2024-04-12 13:23:21 +02:00
Maximilian Kratz 358fc441ea Fixes conflicting method name for resetting the model +clean up in tests 2024-04-12 12:14:08 +02:00
Maximilian Kratz eb1dd2c77e Snapshot: Adds path bug tests for the pipelined PM MdVNE algos
which currently break other tests
2024-04-11 15:35:26 +02:00
Maximilian Kratz 17ce1d6fb8 Adds tests for the path bug for various algos + minor fix in GIPS migration algo 2024-04-11 15:35:26 +02:00
Maximilian Kratz 70fc23962d Implements a basic test to check for the bug in the GIPS-based algorithm 2024-04-11 13:57:46 +02:00
Maximilian Kratz ecb24ce053 Fixes the bandwidth handling of affected paths for all PM-based algos
Notice: the fake ILP algorithm gets fixed implicitly by adapting the ModelFacade methods for manual embedding virtual elements
2024-04-11 13:18:48 +02:00
Maximilian Kratz 18a6ca1816
Merge pull request #63 from Echtzeitsysteme/hotfix/mdvne-facade-fixes-tests
Adds tests for the recent fixes of the ModelFacade loadModel method
2024-04-10 14:42:45 +02:00
Maximilian Kratz 12afb58f3e Adds tests for the recent fixes of the ModelFacade loadModel method 2024-04-10 09:47:59 +02:00
Maximilian Kratz 97ce667031
Merge pull request #62 from Echtzeitsysteme/feature/model-facade-embedding-check-test
Adds tests for the generic embedding check method of the model facade
2024-04-05 15:10:07 +02:00
Maximilian Kratz 0fde92c579 Extends the new test cases with a few extra tests 2024-04-05 15:07:18 +02:00
Maximilian Kratz d4f36749cc Adds tests for the generic embedding check method of the model facade 2024-04-03 16:04:51 +02:00
Maximilian Kratz 984fbb45fe Enforces the correct code style 2024-03-29 08:28:23 +01:00
Maximilian Kratz 725cb43c8e
Merge pull request #61 from Echtzeitsysteme/hotfix/gips-migration-algo
Fixes the GIPS migration algorithm to use the correct GIPS project
2024-03-29 08:25:05 +01:00
Maximilian Kratz 8aaecf3e8d Fixes the GIPS migration algorithm to use the correct GIPS project
Furthermore, this commit contains the necessary adaptions for the renaming of the sequence-based GIPS VNE algorithm
2024-03-29 07:56:08 +01:00
Maximilian Kratz 8a212c58ef
Merge pull request #60 from Echtzeitsysteme/feature/update-base-java-version-jdk17
Updates base required Java version of all projects to JDK 17
2024-03-13 10:29:21 +01:00
Maximilian Kratz 7528af6ac5 Updates base required Java version of all projects to JDK 17 2024-03-13 10:28:42 +01:00
Maximilian Kratz 4640ff167b
Merge pull request #59 from Echtzeitsysteme/feature/update-gurobi-v1101
Updates Gurobi dependency to v11.0.1
2024-03-13 10:20:20 +01:00
Maximilian Kratz 71a4bbb90b Updates Gurobi dependency to v11.0.1 2024-03-13 10:10:57 +01:00
Maximilian Kratz 967f874f8e
Merge pull request #56 from Echtzeitsysteme/feature/update-gurobi-v1100
Updates Gurobi dependency to v11.0.0
2024-03-13 09:44:46 +01:00
Maximilian Kratz 98fe64d9ca Updates Gurobi dependency to v11.0.0 2024-02-23 11:30:55 +01:00
Maximilian Kratz 97d27fc6d6
Merge pull request #55 from Echtzeitsysteme/feature/mdvne-model-generic-embedding
Adds tests for the new generic embedding method of the model facade
2024-02-16 13:10:19 +01:00
Maximilian Kratz 19254d1f0d Adds tests for the new generic embedding method of the model facade 2024-02-14 16:35:42 +01:00
57 changed files with 1711 additions and 220 deletions

View file

@ -7,7 +7,7 @@
* Install [Temurin JDK17](https://adoptium.net/) or newer.
* Install [GIPS](https://gips.dev) as described [here](https://github.com/Echtzeitsysteme/gips#installation-development) or use the [pre-built Eclipse](https://github.com/Echtzeitsysteme/gips-eclipse-build).
* Install [Gurobi](https://www.gurobi.com/) in version `10.0.3` and activate a license for your computer.
* Install [Gurobi](https://www.gurobi.com/) in version `11.0.1` and activate a license for your computer.
* Currently, Gurobi is the default ILP solver used in **iflye**.
* Install [IBM ILOG CPLEX](https://www.ibm.com/products/ilog-cplex-optimization-studio) in version `22.1.1`.
* CPLEX is an alternative ILP solver in **iflye**. You do not need it explicitely, but if you did not install and configure it properly, at least one test case will fail.
@ -16,9 +16,9 @@
* Additionally, the runtime workspace needs some environment variables to access the Gurobi and the CPLEX solver. Do not forget to adapt them to your individual setup:
```
GRB_LICENSE_FILE=/home/mkratz/gurobi.lic
GUROBI_HOME=/opt/gurobi1003/linux64/
LD_LIBRARY_PATH=/opt/gurobi1003/linux64/lib/
PATH=/opt/gurobi1003/linux64/bin/:/opt/ibm/ILOG/CPLEX_Studio2211/cplex/bin/x86-64_linux/:$PATH
GUROBI_HOME=/opt/gurobi1101/linux64/
LD_LIBRARY_PATH=/opt/gurobi1101/linux64/lib/
PATH=/opt/gurobi1101/linux64/bin/:/opt/ibm/ILOG/CPLEX_Studio2211/cplex/bin/x86-64_linux/:$PATH
```
### Project setup (manual)

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: examples
Bundle-SymbolicName: examples
Bundle-Version: 0.0.3.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-16
Bundle-RequiredExecutionEnvironment: JavaSE-17
Automatic-Module-Name: examples
Export-Package: examples.algorithms,
examples.generators,

View file

@ -53,7 +53,7 @@ public class VneGipsSeqAlgorithmExampleTiny {
algo.execute();
// GlobalMetricsManager.stopRuntime();
ModelFacade.getInstance().validateModel();
// Save model to file

View file

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="main/java/|test/java/" kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="lib/gurobi/gurobi-10.0.3.jar"/>
<classpathentry exported="true" kind="lib" path="lib/gurobi/gurobi-javadoc-10.0.3.jar"/>
<classpathentry exported="true" kind="lib" path="lib/gurobi/gurobi-11.0.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/gurobi/gurobi-javadoc-11.0.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cplex/cplex-22.1.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>

View file

@ -5,11 +5,11 @@ Bundle-SymbolicName: ilp
Bundle-Version: 0.0.3.qualifier
Bundle-ClassPath: ilp.jar,
lib/cplex/cplex-22.1.1.jar,
lib/gurobi/gurobi-10.0.3.jar,
lib/gurobi/gurobi-javadoc-10.0.3.jar
lib/gurobi/gurobi-11.0.1.jar,
lib/gurobi/gurobi-javadoc-11.0.1.jar
Automatic-Module-Name: ilp
Bundle-RequiredExecutionEnvironment: JavaSE-16
Export-Package: gurobi;version="10.0.3",
Bundle-RequiredExecutionEnvironment: JavaSE-17
Export-Package: com.gurobi.gurobi;version="11.0.1",
ilog.concert,
ilog.cplex,
ilp.solver.examples,

View file

@ -2,5 +2,5 @@ source.ilp.jar = src/
bin.includes = META-INF/,\
ilp.jar,\
lib/cplex/cplex-22.1.1.jar,\
lib/gurobi/gurobi-10.0.3.jar,\
lib/gurobi/gurobi-javadoc-10.0.3.jar
lib/gurobi/gurobi-11.0.1.jar,\
lib/gurobi/gurobi-javadoc-11.0.1.jar

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,11 +1,11 @@
package ilp.solver.examples;
import gurobi.GRB;
import gurobi.GRBEnv;
import gurobi.GRBException;
import gurobi.GRBLinExpr;
import gurobi.GRBModel;
import gurobi.GRBVar;
import com.gurobi.gurobi.GRB;
import com.gurobi.gurobi.GRBEnv;
import com.gurobi.gurobi.GRBException;
import com.gurobi.gurobi.GRBLinExpr;
import com.gurobi.gurobi.GRBModel;
import com.gurobi.gurobi.GRBVar;
/**
* Simple example to solve an optimization problem with the Gurobi solver [1].

View file

@ -4,12 +4,13 @@ import static org.junit.jupiter.api.Assertions.fail;
import org.junit.jupiter.api.Test;
import gurobi.GRB;
import gurobi.GRBEnv;
import gurobi.GRBException;
import gurobi.GRBLinExpr;
import gurobi.GRBModel;
import gurobi.GRBVar;
import com.gurobi.gurobi.GRB;
import com.gurobi.gurobi.GRBEnv;
import com.gurobi.gurobi.GRBException;
import com.gurobi.gurobi.GRBLinExpr;
import com.gurobi.gurobi.GRBModel;
import com.gurobi.gurobi.GRBVar;
import ilp.solver.examples.GurobiExample;
/**

View file

@ -10,17 +10,18 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.stream.Collectors;
import gurobi.GRB;
import gurobi.GRB.DoubleAttr;
import gurobi.GRB.DoubleParam;
import gurobi.GRB.IntParam;
import gurobi.GRB.StringAttr;
import gurobi.GRBConstr;
import gurobi.GRBEnv;
import gurobi.GRBException;
import gurobi.GRBLinExpr;
import gurobi.GRBModel;
import gurobi.GRBVar;
import com.gurobi.gurobi.GRB;
import com.gurobi.gurobi.GRB.DoubleAttr;
import com.gurobi.gurobi.GRB.DoubleParam;
import com.gurobi.gurobi.GRB.IntParam;
import com.gurobi.gurobi.GRB.StringAttr;
import com.gurobi.gurobi.GRBConstr;
import com.gurobi.gurobi.GRBEnv;
import com.gurobi.gurobi.GRBException;
import com.gurobi.gurobi.GRBLinExpr;
import com.gurobi.gurobi.GRBModel;
import com.gurobi.gurobi.GRBVar;
import ilp.wrapper.IlpSolverException;
import ilp.wrapper.IncrementalIlpSolver;
import ilp.wrapper.SolverStatus;

View file

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="main/java/|test/java/" kind="src" path="src"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="main/java/|test/java/" kind="src" path="src"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -1,6 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: network.generators
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-SymbolicName: network.generators; singleton:=true
Bundle-Version: 0.0.3.qualifier
Require-Bundle: org.eclipse.emf.ecore

View file

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="lib" path="lib/unix4j/unix4j-base-0.6.jar"/>
<classpathentry kind="lib" path="lib/unix4j/unix4j-command-0.6.jar"/>
<classpathentry kind="lib" path="lib/unix4j/unix4j-perf-0.6.jar"/>
<classpathentry kind="lib" path="lib/unix4j/unix4j-tools-0.6.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="lib" path="lib/unix4j/unix4j-base-0.6.jar"/>
<classpathentry kind="lib" path="lib/unix4j/unix4j-command-0.6.jar"/>
<classpathentry kind="lib" path="lib/unix4j/unix4j-perf-0.6.jar"/>
<classpathentry kind="lib" path="lib/unix4j/unix4j-tools-0.6.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -1,6 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: network.metrics
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-SymbolicName: network.metrics; singleton:=true
Bundle-Version: 0.0.3.qualifier
Require-Bundle: org.eclipse.emf.ecore,

View file

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model.rules"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model.rules"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model.rules"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model.rules"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model.rules"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model.rules"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry combineaccessrules="false" kind="src" path="/network.model"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -1,15 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="lib" path="lib/gs/gs-core-2.0.jar"/>
<classpathentry kind="lib" path="lib/gs/gs-core-2.0-javadoc.jar"/>
<classpathentry kind="lib" path="lib/gs/gs-core-2.0-sources.jar"/>
<classpathentry kind="lib" path="lib/gs/gs-ui-swing-2.0.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="lib" path="lib/gs/gs-core-2.0.jar"/>
<classpathentry kind="lib" path="lib/gs/gs-core-2.0-javadoc.jar"/>
<classpathentry kind="lib" path="lib/gs/gs-core-2.0-sources.jar"/>
<classpathentry kind="lib" path="lib/gs/gs-ui-swing-2.0.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -8,7 +8,7 @@ Require-Bundle: org.eclipse.emf.ecore,
network.generators,
org.emoflon.smartemf
Automatic-Module-Name: test.singleton.true
Bundle-RequiredExecutionEnvironment: JavaSE-16
Bundle-RequiredExecutionEnvironment: JavaSE-17
Export-Package: org.graphstream.graph,
org.graphstream.graph.implementations,
org.graphstream.stream,

View file

@ -1,8 +1,8 @@
# Environment variables/config for the program
export GRB_LICENSE_FILE="/home/mkratz/gurobi.lic"
export GUROBI_HOME="/opt/gurobi1003/linux64/"
export LD_LIBRARY_PATH="/opt/gurobi1003/linux64/lib/"
PATH=$PATH:~/opt/gurobi1003/linux64/bin/:~/opt/ibm/ILOG/CPLEX_Studio2211/cplex/bin/x86-64_linux/
export GUROBI_HOME="/opt/gurobi1101/linux64/"
export LD_LIBRARY_PATH="/opt/gurobi1101/linux64/lib/"
PATH=$PATH:~/opt/gurobi1101/linux64/bin/:~/opt/ibm/ILOG/CPLEX_Studio2211/cplex/bin/x86-64_linux/
# Legacy ENVs used by Cardygan-ILP
#export GUROBI_JAR_PATH="/opt/gurobi811/linux64/lib/gurobi.jar"

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: statistics
Bundle-SymbolicName: statistics
Bundle-Version: 0.0.3.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-16
Bundle-RequiredExecutionEnvironment: JavaSE-17
Automatic-Module-Name: statistics
Export-Package: statistics
Require-Bundle: vne.scenarios

View file

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -11,7 +11,7 @@ Require-Bundle: org.eclipse.emf.ecore,
ilp,
org.emoflon.smartemf
Automatic-Module-Name: test.singleton.true
Bundle-RequiredExecutionEnvironment: JavaSE-16
Bundle-RequiredExecutionEnvironment: JavaSE-17
Import-Package: org.junit.jupiter.api
Export-Package: test.algorithms.fakeilp,
test.algorithms.generic,

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<model:Root xmlns:model="platform:/resource/network.model/model/Model.ecore" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">
<networks xsi:type="model:SubstrateNetwork" root="/" name="net">
<nodes xsi:type="model:SubstrateSwitch" network="//@networks.0" name="sw" depth="0" incomingLinks="//@networks.0/@links.0 //@networks.0/@links.1" outgoingLinks="//@networks.0/@links.2 //@networks.0/@links.3" incomingPaths="//@networks.0/@paths.2 //@networks.0/@paths.4" paths="//@networks.0/@paths.0 //@networks.0/@paths.1 //@networks.0/@paths.2 //@networks.0/@paths.3 //@networks.0/@paths.4 //@networks.0/@paths.5" outgoingPaths="//@networks.0/@paths.3 //@networks.0/@paths.5" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="srv1" depth="1" cpu="0" memory="0" storage="0" residualCpu="0" residualMemory="0" residualStorage="0" outgoingLinks="//@networks.0/@links.0" incomingLinks="//@networks.0/@links.2" outgoingPaths="//@networks.0/@paths.0 //@networks.0/@paths.2" paths="//@networks.0/@paths.0 //@networks.0/@paths.1 //@networks.0/@paths.2 //@networks.0/@paths.3" incomingPaths="//@networks.0/@paths.1 //@networks.0/@paths.3" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="srv2" depth="1" cpu="0" memory="0" storage="0" residualCpu="0" residualMemory="0" residualStorage="0" outgoingLinks="//@networks.0/@links.1" incomingLinks="//@networks.0/@links.3" outgoingPaths="//@networks.0/@paths.1 //@networks.0/@paths.4" paths="//@networks.0/@paths.0 //@networks.0/@paths.1 //@networks.0/@paths.4 //@networks.0/@paths.5" incomingPaths="//@networks.0/@paths.0 //@networks.0/@paths.5" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.0" name="ln1" bandwidth="1" residualBandwidth="1" paths="//@networks.0/@paths.0 //@networks.0/@paths.2" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.0" name="ln2" bandwidth="2" residualBandwidth="2" paths="//@networks.0/@paths.1 //@networks.0/@paths.4" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.1" name="ln3" bandwidth="1" residualBandwidth="1" paths="//@networks.0/@paths.1 //@networks.0/@paths.3" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.2" name="ln4" bandwidth="2" residualBandwidth="2" paths="//@networks.0/@paths.0 //@networks.0/@paths.5" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.0 //@networks.0/@links.3" name="path-srv1-sw-srv2" bandwidth="1" hops="2" residualBandwidth="1" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.1" links="//@networks.0/@links.1 //@networks.0/@links.2" name="path-srv2-sw-srv1" bandwidth="1" hops="2" residualBandwidth="1" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.0" links="//@networks.0/@links.0" name="path-srv1-sw" bandwidth="1" hops="1" residualBandwidth="1" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.1" links="//@networks.0/@links.2" name="path-sw-srv1" bandwidth="1" hops="1" residualBandwidth="1" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.0" links="//@networks.0/@links.1" name="path-srv2-sw" bandwidth="2" hops="1" residualBandwidth="2" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.3" name="path-sw-srv2" bandwidth="2" hops="1" residualBandwidth="2" />
</networks>
</model:Root>

View file

@ -0,0 +1,262 @@
<?xml version="1.0" encoding="UTF-8"?>
<model:Root xmlns:model="platform:/resource/network.model/model/Model.ecore" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">
<networks xsi:type="model:SubstrateNetwork" root="/" name="sub" guests="//@networks.1 //@networks.2 //@networks.3 //@networks.4">
<nodes xsi:type="model:SubstrateSwitch" network="//@networks.0" name="sub_csw_0" depth="0" outgoingLinks="//@networks.0/@links.0 //@networks.0/@links.2" incomingLinks="//@networks.0/@links.1 //@networks.0/@links.3" incomingPaths="//@networks.0/@paths.0 //@networks.0/@paths.26 //@networks.0/@paths.50 //@networks.0/@paths.72 //@networks.0/@paths.92 //@networks.0/@paths.110 //@networks.0/@paths.126 //@networks.0/@paths.140 //@networks.0/@paths.152 //@networks.0/@paths.162" outgoingPaths="//@networks.0/@paths.1 //@networks.0/@paths.27 //@networks.0/@paths.51 //@networks.0/@paths.73 //@networks.0/@paths.93 //@networks.0/@paths.111 //@networks.0/@paths.127 //@networks.0/@paths.141 //@networks.0/@paths.153 //@networks.0/@paths.163" paths="//@networks.0/@paths.0 //@networks.0/@paths.1 //@networks.0/@paths.6 //@networks.0/@paths.7 //@networks.0/@paths.16 //@networks.0/@paths.17 //@networks.0/@paths.18 //@networks.0/@paths.19 //@networks.0/@paths.20 //@networks.0/@paths.21 //@networks.0/@paths.22 //@networks.0/@paths.23 //@networks.0/@paths.24 //@networks.0/@paths.25 //@networks.0/@paths.26 //@networks.0/@paths.27 //@networks.0/@paths.32 //@networks.0/@paths.33 //@networks.0/@paths.40 //@networks.0/@paths.41 //@networks.0/@paths.42 //@networks.0/@paths.43 //@networks.0/@paths.44 //@networks.0/@paths.45 //@networks.0/@paths.46 //@networks.0/@paths.47 //@networks.0/@paths.48 //@networks.0/@paths.49 //@networks.0/@paths.50 //@networks.0/@paths.51 //@networks.0/@paths.56 //@networks.0/@paths.57 //@networks.0/@paths.62 //@networks.0/@paths.63 //@networks.0/@paths.64 //@networks.0/@paths.65 //@networks.0/@paths.66 //@networks.0/@paths.67 //@networks.0/@paths.68 //@networks.0/@paths.69 //@networks.0/@paths.70 //@networks.0/@paths.71 //@networks.0/@paths.72 //@networks.0/@paths.73 //@networks.0/@paths.78 //@networks.0/@paths.79 //@networks.0/@paths.82 //@networks.0/@paths.83 //@networks.0/@paths.84 //@networks.0/@paths.85 //@networks.0/@paths.86 //@networks.0/@paths.87 //@networks.0/@paths.88 //@networks.0/@paths.89 //@networks.0/@paths.90 //@networks.0/@paths.91 //@networks.0/@paths.92 //@networks.0/@paths.93 //@networks.0/@paths.98 //@networks.0/@paths.99 //@networks.0/@paths.100 //@networks.0/@paths.101 //@networks.0/@paths.102 //@networks.0/@paths.103 //@networks.0/@paths.104 //@networks.0/@paths.105 //@networks.0/@paths.106 //@networks.0/@paths.107 //@networks.0/@paths.108 //@networks.0/@paths.109 //@networks.0/@paths.110 //@networks.0/@paths.111 //@networks.0/@paths.114 //@networks.0/@paths.115 //@networks.0/@paths.126 //@networks.0/@paths.127 //@networks.0/@paths.130 //@networks.0/@paths.131 //@networks.0/@paths.140 //@networks.0/@paths.141 //@networks.0/@paths.144 //@networks.0/@paths.145 //@networks.0/@paths.152 //@networks.0/@paths.153 //@networks.0/@paths.156 //@networks.0/@paths.157 //@networks.0/@paths.162 //@networks.0/@paths.163 //@networks.0/@paths.166 //@networks.0/@paths.167" />
<nodes xsi:type="model:SubstrateSwitch" network="//@networks.0" name="sub_csw_1" depth="0" outgoingLinks="//@networks.0/@links.4 //@networks.0/@links.6" incomingLinks="//@networks.0/@links.5 //@networks.0/@links.7" incomingPaths="//@networks.0/@paths.2 //@networks.0/@paths.28 //@networks.0/@paths.52 //@networks.0/@paths.74 //@networks.0/@paths.94 //@networks.0/@paths.112 //@networks.0/@paths.128 //@networks.0/@paths.142 //@networks.0/@paths.154 //@networks.0/@paths.164" paths="//@networks.0/@paths.2 //@networks.0/@paths.3 //@networks.0/@paths.28 //@networks.0/@paths.29 //@networks.0/@paths.52 //@networks.0/@paths.53 //@networks.0/@paths.74 //@networks.0/@paths.75 //@networks.0/@paths.94 //@networks.0/@paths.95 //@networks.0/@paths.112 //@networks.0/@paths.113 //@networks.0/@paths.128 //@networks.0/@paths.129 //@networks.0/@paths.142 //@networks.0/@paths.143 //@networks.0/@paths.154 //@networks.0/@paths.155 //@networks.0/@paths.164 //@networks.0/@paths.165" outgoingPaths="//@networks.0/@paths.3 //@networks.0/@paths.29 //@networks.0/@paths.53 //@networks.0/@paths.75 //@networks.0/@paths.95 //@networks.0/@paths.113 //@networks.0/@paths.129 //@networks.0/@paths.143 //@networks.0/@paths.155 //@networks.0/@paths.165" />
<nodes xsi:type="model:SubstrateSwitch" network="//@networks.0" name="sub_rsw_0" depth="1" outgoingLinks="//@networks.0/@links.1 //@networks.0/@links.5 //@networks.0/@links.8 //@networks.0/@links.10 //@networks.0/@links.12 //@networks.0/@links.14 //@networks.0/@links.16" incomingLinks="//@networks.0/@links.0 //@networks.0/@links.4 //@networks.0/@links.9 //@networks.0/@links.11 //@networks.0/@links.13 //@networks.0/@links.15 //@networks.0/@links.17" incomingPaths="//@networks.0/@paths.4 //@networks.0/@paths.30 //@networks.0/@paths.54 //@networks.0/@paths.76 //@networks.0/@paths.96 //@networks.0/@paths.114 //@networks.0/@paths.130 //@networks.0/@paths.144 //@networks.0/@paths.156 //@networks.0/@paths.166" paths="//@networks.0/@paths.0 //@networks.0/@paths.1 //@networks.0/@paths.2 //@networks.0/@paths.3 //@networks.0/@paths.4 //@networks.0/@paths.5 //@networks.0/@paths.6 //@networks.0/@paths.7 //@networks.0/@paths.8 //@networks.0/@paths.9 //@networks.0/@paths.10 //@networks.0/@paths.11 //@networks.0/@paths.12 //@networks.0/@paths.13 //@networks.0/@paths.14 //@networks.0/@paths.15 //@networks.0/@paths.16 //@networks.0/@paths.17 //@networks.0/@paths.18 //@networks.0/@paths.19 //@networks.0/@paths.20 //@networks.0/@paths.21 //@networks.0/@paths.22 //@networks.0/@paths.23 //@networks.0/@paths.24 //@networks.0/@paths.25 //@networks.0/@paths.26 //@networks.0/@paths.27 //@networks.0/@paths.28 //@networks.0/@paths.29 //@networks.0/@paths.30 //@networks.0/@paths.31 //@networks.0/@paths.32 //@networks.0/@paths.33 //@networks.0/@paths.34 //@networks.0/@paths.35 //@networks.0/@paths.36 //@networks.0/@paths.37 //@networks.0/@paths.38 //@networks.0/@paths.39 //@networks.0/@paths.40 //@networks.0/@paths.41 //@networks.0/@paths.42 //@networks.0/@paths.43 //@networks.0/@paths.44 //@networks.0/@paths.45 //@networks.0/@paths.46 //@networks.0/@paths.47 //@networks.0/@paths.48 //@networks.0/@paths.49 //@networks.0/@paths.50 //@networks.0/@paths.51 //@networks.0/@paths.52 //@networks.0/@paths.53 //@networks.0/@paths.54 //@networks.0/@paths.55 //@networks.0/@paths.56 //@networks.0/@paths.57 //@networks.0/@paths.58 //@networks.0/@paths.59 //@networks.0/@paths.60 //@networks.0/@paths.61 //@networks.0/@paths.62 //@networks.0/@paths.63 //@networks.0/@paths.64 //@networks.0/@paths.65 //@networks.0/@paths.66 //@networks.0/@paths.67 //@networks.0/@paths.68 //@networks.0/@paths.69 //@networks.0/@paths.70 //@networks.0/@paths.71 //@networks.0/@paths.72 //@networks.0/@paths.73 //@networks.0/@paths.74 //@networks.0/@paths.75 //@networks.0/@paths.76 //@networks.0/@paths.77 //@networks.0/@paths.78 //@networks.0/@paths.79 //@networks.0/@paths.80 //@networks.0/@paths.81 //@networks.0/@paths.82 //@networks.0/@paths.83 //@networks.0/@paths.84 //@networks.0/@paths.85 //@networks.0/@paths.86 //@networks.0/@paths.87 //@networks.0/@paths.88 //@networks.0/@paths.89 //@networks.0/@paths.90 //@networks.0/@paths.91 //@networks.0/@paths.92 //@networks.0/@paths.93 //@networks.0/@paths.94 //@networks.0/@paths.95 //@networks.0/@paths.96 //@networks.0/@paths.97 //@networks.0/@paths.98 //@networks.0/@paths.99 //@networks.0/@paths.100 //@networks.0/@paths.101 //@networks.0/@paths.102 //@networks.0/@paths.103 //@networks.0/@paths.104 //@networks.0/@paths.105 //@networks.0/@paths.106 //@networks.0/@paths.107 //@networks.0/@paths.108 //@networks.0/@paths.109 //@networks.0/@paths.114 //@networks.0/@paths.115 //@networks.0/@paths.130 //@networks.0/@paths.131 //@networks.0/@paths.144 //@networks.0/@paths.145 //@networks.0/@paths.156 //@networks.0/@paths.157 //@networks.0/@paths.166 //@networks.0/@paths.167" outgoingPaths="//@networks.0/@paths.5 //@networks.0/@paths.31 //@networks.0/@paths.55 //@networks.0/@paths.77 //@networks.0/@paths.97 //@networks.0/@paths.115 //@networks.0/@paths.131 //@networks.0/@paths.145 //@networks.0/@paths.157 //@networks.0/@paths.167" />
<nodes xsi:type="model:SubstrateSwitch" network="//@networks.0" name="sub_rsw_1" depth="1" outgoingLinks="//@networks.0/@links.3 //@networks.0/@links.7 //@networks.0/@links.18 //@networks.0/@links.20 //@networks.0/@links.22 //@networks.0/@links.24 //@networks.0/@links.26" incomingLinks="//@networks.0/@links.2 //@networks.0/@links.6 //@networks.0/@links.19 //@networks.0/@links.21 //@networks.0/@links.23 //@networks.0/@links.25 //@networks.0/@links.27" incomingPaths="//@networks.0/@paths.6 //@networks.0/@paths.32 //@networks.0/@paths.56 //@networks.0/@paths.78 //@networks.0/@paths.98 //@networks.0/@paths.116 //@networks.0/@paths.132 //@networks.0/@paths.146 //@networks.0/@paths.158 //@networks.0/@paths.168" paths="//@networks.0/@paths.6 //@networks.0/@paths.7 //@networks.0/@paths.16 //@networks.0/@paths.17 //@networks.0/@paths.18 //@networks.0/@paths.19 //@networks.0/@paths.20 //@networks.0/@paths.21 //@networks.0/@paths.22 //@networks.0/@paths.23 //@networks.0/@paths.24 //@networks.0/@paths.25 //@networks.0/@paths.32 //@networks.0/@paths.33 //@networks.0/@paths.40 //@networks.0/@paths.41 //@networks.0/@paths.42 //@networks.0/@paths.43 //@networks.0/@paths.44 //@networks.0/@paths.45 //@networks.0/@paths.46 //@networks.0/@paths.47 //@networks.0/@paths.48 //@networks.0/@paths.49 //@networks.0/@paths.56 //@networks.0/@paths.57 //@networks.0/@paths.62 //@networks.0/@paths.63 //@networks.0/@paths.64 //@networks.0/@paths.65 //@networks.0/@paths.66 //@networks.0/@paths.67 //@networks.0/@paths.68 //@networks.0/@paths.69 //@networks.0/@paths.70 //@networks.0/@paths.71 //@networks.0/@paths.78 //@networks.0/@paths.79 //@networks.0/@paths.82 //@networks.0/@paths.83 //@networks.0/@paths.84 //@networks.0/@paths.85 //@networks.0/@paths.86 //@networks.0/@paths.87 //@networks.0/@paths.88 //@networks.0/@paths.89 //@networks.0/@paths.90 //@networks.0/@paths.91 //@networks.0/@paths.98 //@networks.0/@paths.99 //@networks.0/@paths.100 //@networks.0/@paths.101 //@networks.0/@paths.102 //@networks.0/@paths.103 //@networks.0/@paths.104 //@networks.0/@paths.105 //@networks.0/@paths.106 //@networks.0/@paths.107 //@networks.0/@paths.108 //@networks.0/@paths.109 //@networks.0/@paths.110 //@networks.0/@paths.111 //@networks.0/@paths.112 //@networks.0/@paths.113 //@networks.0/@paths.114 //@networks.0/@paths.115 //@networks.0/@paths.116 //@networks.0/@paths.117 //@networks.0/@paths.118 //@networks.0/@paths.119 //@networks.0/@paths.120 //@networks.0/@paths.121 //@networks.0/@paths.122 //@networks.0/@paths.123 //@networks.0/@paths.124 //@networks.0/@paths.125 //@networks.0/@paths.126 //@networks.0/@paths.127 //@networks.0/@paths.128 //@networks.0/@paths.129 //@networks.0/@paths.130 //@networks.0/@paths.131 //@networks.0/@paths.132 //@networks.0/@paths.133 //@networks.0/@paths.134 //@networks.0/@paths.135 //@networks.0/@paths.136 //@networks.0/@paths.137 //@networks.0/@paths.138 //@networks.0/@paths.139 //@networks.0/@paths.140 //@networks.0/@paths.141 //@networks.0/@paths.142 //@networks.0/@paths.143 //@networks.0/@paths.144 //@networks.0/@paths.145 //@networks.0/@paths.146 //@networks.0/@paths.147 //@networks.0/@paths.148 //@networks.0/@paths.149 //@networks.0/@paths.150 //@networks.0/@paths.151 //@networks.0/@paths.152 //@networks.0/@paths.153 //@networks.0/@paths.154 //@networks.0/@paths.155 //@networks.0/@paths.156 //@networks.0/@paths.157 //@networks.0/@paths.158 //@networks.0/@paths.159 //@networks.0/@paths.160 //@networks.0/@paths.161 //@networks.0/@paths.162 //@networks.0/@paths.163 //@networks.0/@paths.164 //@networks.0/@paths.165 //@networks.0/@paths.166 //@networks.0/@paths.167 //@networks.0/@paths.168 //@networks.0/@paths.169" outgoingPaths="//@networks.0/@paths.7 //@networks.0/@paths.33 //@networks.0/@paths.57 //@networks.0/@paths.79 //@networks.0/@paths.99 //@networks.0/@paths.117 //@networks.0/@paths.133 //@networks.0/@paths.147 //@networks.0/@paths.159 //@networks.0/@paths.169" guestSwitches="//@networks.4/@nodes.2" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="sub_srv_0" depth="2" cpu="32" memory="512" storage="1000" residualCpu="14" residualMemory="6" residualStorage="762" incomingLinks="//@networks.0/@links.8" outgoingLinks="//@networks.0/@links.9" outgoingPaths="//@networks.0/@paths.0 //@networks.0/@paths.2 //@networks.0/@paths.4 //@networks.0/@paths.6 //@networks.0/@paths.8 //@networks.0/@paths.10 //@networks.0/@paths.12 //@networks.0/@paths.14 //@networks.0/@paths.16 //@networks.0/@paths.18 //@networks.0/@paths.20 //@networks.0/@paths.22 //@networks.0/@paths.24" paths="//@networks.0/@paths.0 //@networks.0/@paths.1 //@networks.0/@paths.2 //@networks.0/@paths.3 //@networks.0/@paths.4 //@networks.0/@paths.5 //@networks.0/@paths.6 //@networks.0/@paths.7 //@networks.0/@paths.8 //@networks.0/@paths.9 //@networks.0/@paths.10 //@networks.0/@paths.11 //@networks.0/@paths.12 //@networks.0/@paths.13 //@networks.0/@paths.14 //@networks.0/@paths.15 //@networks.0/@paths.16 //@networks.0/@paths.17 //@networks.0/@paths.18 //@networks.0/@paths.19 //@networks.0/@paths.20 //@networks.0/@paths.21 //@networks.0/@paths.22 //@networks.0/@paths.23 //@networks.0/@paths.24 //@networks.0/@paths.25" incomingPaths="//@networks.0/@paths.1 //@networks.0/@paths.3 //@networks.0/@paths.5 //@networks.0/@paths.7 //@networks.0/@paths.9 //@networks.0/@paths.11 //@networks.0/@paths.13 //@networks.0/@paths.15 //@networks.0/@paths.17 //@networks.0/@paths.19 //@networks.0/@paths.21 //@networks.0/@paths.23 //@networks.0/@paths.25" guestServers="//@networks.2/@nodes.1" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="sub_srv_1" depth="2" cpu="32" memory="512" storage="1000" residualCpu="32" residualMemory="512" residualStorage="1000" incomingLinks="//@networks.0/@links.10" outgoingLinks="//@networks.0/@links.11" outgoingPaths="//@networks.0/@paths.9 //@networks.0/@paths.26 //@networks.0/@paths.28 //@networks.0/@paths.30 //@networks.0/@paths.32 //@networks.0/@paths.34 //@networks.0/@paths.36 //@networks.0/@paths.38 //@networks.0/@paths.40 //@networks.0/@paths.42 //@networks.0/@paths.44 //@networks.0/@paths.46 //@networks.0/@paths.48" paths="//@networks.0/@paths.8 //@networks.0/@paths.9 //@networks.0/@paths.26 //@networks.0/@paths.27 //@networks.0/@paths.28 //@networks.0/@paths.29 //@networks.0/@paths.30 //@networks.0/@paths.31 //@networks.0/@paths.32 //@networks.0/@paths.33 //@networks.0/@paths.34 //@networks.0/@paths.35 //@networks.0/@paths.36 //@networks.0/@paths.37 //@networks.0/@paths.38 //@networks.0/@paths.39 //@networks.0/@paths.40 //@networks.0/@paths.41 //@networks.0/@paths.42 //@networks.0/@paths.43 //@networks.0/@paths.44 //@networks.0/@paths.45 //@networks.0/@paths.46 //@networks.0/@paths.47 //@networks.0/@paths.48 //@networks.0/@paths.49" incomingPaths="//@networks.0/@paths.8 //@networks.0/@paths.27 //@networks.0/@paths.29 //@networks.0/@paths.31 //@networks.0/@paths.33 //@networks.0/@paths.35 //@networks.0/@paths.37 //@networks.0/@paths.39 //@networks.0/@paths.41 //@networks.0/@paths.43 //@networks.0/@paths.45 //@networks.0/@paths.47 //@networks.0/@paths.49" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="sub_srv_2" depth="2" cpu="32" memory="512" storage="1000" residualCpu="8" residualMemory="398" residualStorage="775" incomingLinks="//@networks.0/@links.12" outgoingLinks="//@networks.0/@links.13" outgoingPaths="//@networks.0/@paths.11 //@networks.0/@paths.35 //@networks.0/@paths.50 //@networks.0/@paths.52 //@networks.0/@paths.54 //@networks.0/@paths.56 //@networks.0/@paths.58 //@networks.0/@paths.60 //@networks.0/@paths.62 //@networks.0/@paths.64 //@networks.0/@paths.66 //@networks.0/@paths.68 //@networks.0/@paths.70" paths="//@networks.0/@paths.10 //@networks.0/@paths.11 //@networks.0/@paths.34 //@networks.0/@paths.35 //@networks.0/@paths.50 //@networks.0/@paths.51 //@networks.0/@paths.52 //@networks.0/@paths.53 //@networks.0/@paths.54 //@networks.0/@paths.55 //@networks.0/@paths.56 //@networks.0/@paths.57 //@networks.0/@paths.58 //@networks.0/@paths.59 //@networks.0/@paths.60 //@networks.0/@paths.61 //@networks.0/@paths.62 //@networks.0/@paths.63 //@networks.0/@paths.64 //@networks.0/@paths.65 //@networks.0/@paths.66 //@networks.0/@paths.67 //@networks.0/@paths.68 //@networks.0/@paths.69 //@networks.0/@paths.70 //@networks.0/@paths.71" incomingPaths="//@networks.0/@paths.10 //@networks.0/@paths.34 //@networks.0/@paths.51 //@networks.0/@paths.53 //@networks.0/@paths.55 //@networks.0/@paths.57 //@networks.0/@paths.59 //@networks.0/@paths.61 //@networks.0/@paths.63 //@networks.0/@paths.65 //@networks.0/@paths.67 //@networks.0/@paths.69 //@networks.0/@paths.71" guestServers="//@networks.3/@nodes.1" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="sub_srv_3" depth="2" cpu="32" memory="512" storage="1000" residualCpu="14" residualMemory="6" residualStorage="762" incomingLinks="//@networks.0/@links.14" outgoingLinks="//@networks.0/@links.15" outgoingPaths="//@networks.0/@paths.13 //@networks.0/@paths.37 //@networks.0/@paths.59 //@networks.0/@paths.72 //@networks.0/@paths.74 //@networks.0/@paths.76 //@networks.0/@paths.78 //@networks.0/@paths.80 //@networks.0/@paths.82 //@networks.0/@paths.84 //@networks.0/@paths.86 //@networks.0/@paths.88 //@networks.0/@paths.90" paths="//@networks.0/@paths.12 //@networks.0/@paths.13 //@networks.0/@paths.36 //@networks.0/@paths.37 //@networks.0/@paths.58 //@networks.0/@paths.59 //@networks.0/@paths.72 //@networks.0/@paths.73 //@networks.0/@paths.74 //@networks.0/@paths.75 //@networks.0/@paths.76 //@networks.0/@paths.77 //@networks.0/@paths.78 //@networks.0/@paths.79 //@networks.0/@paths.80 //@networks.0/@paths.81 //@networks.0/@paths.82 //@networks.0/@paths.83 //@networks.0/@paths.84 //@networks.0/@paths.85 //@networks.0/@paths.86 //@networks.0/@paths.87 //@networks.0/@paths.88 //@networks.0/@paths.89 //@networks.0/@paths.90 //@networks.0/@paths.91" incomingPaths="//@networks.0/@paths.12 //@networks.0/@paths.36 //@networks.0/@paths.58 //@networks.0/@paths.73 //@networks.0/@paths.75 //@networks.0/@paths.77 //@networks.0/@paths.79 //@networks.0/@paths.81 //@networks.0/@paths.83 //@networks.0/@paths.85 //@networks.0/@paths.87 //@networks.0/@paths.89 //@networks.0/@paths.91" guestServers="//@networks.2/@nodes.0" guestSwitches="//@networks.2/@nodes.2" guestLinks="//@networks.2/@links.0 //@networks.2/@links.1" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="sub_srv_4" depth="2" cpu="32" memory="512" storage="1000" residualCpu="8" residualMemory="398" residualStorage="775" incomingLinks="//@networks.0/@links.16" outgoingLinks="//@networks.0/@links.17" outgoingPaths="//@networks.0/@paths.15 //@networks.0/@paths.39 //@networks.0/@paths.61 //@networks.0/@paths.81 //@networks.0/@paths.92 //@networks.0/@paths.94 //@networks.0/@paths.96 //@networks.0/@paths.98 //@networks.0/@paths.100 //@networks.0/@paths.102 //@networks.0/@paths.104 //@networks.0/@paths.106 //@networks.0/@paths.108" paths="//@networks.0/@paths.14 //@networks.0/@paths.15 //@networks.0/@paths.38 //@networks.0/@paths.39 //@networks.0/@paths.60 //@networks.0/@paths.61 //@networks.0/@paths.80 //@networks.0/@paths.81 //@networks.0/@paths.92 //@networks.0/@paths.93 //@networks.0/@paths.94 //@networks.0/@paths.95 //@networks.0/@paths.96 //@networks.0/@paths.97 //@networks.0/@paths.98 //@networks.0/@paths.99 //@networks.0/@paths.100 //@networks.0/@paths.101 //@networks.0/@paths.102 //@networks.0/@paths.103 //@networks.0/@paths.104 //@networks.0/@paths.105 //@networks.0/@paths.106 //@networks.0/@paths.107 //@networks.0/@paths.108 //@networks.0/@paths.109" incomingPaths="//@networks.0/@paths.14 //@networks.0/@paths.38 //@networks.0/@paths.60 //@networks.0/@paths.80 //@networks.0/@paths.93 //@networks.0/@paths.95 //@networks.0/@paths.97 //@networks.0/@paths.99 //@networks.0/@paths.101 //@networks.0/@paths.103 //@networks.0/@paths.105 //@networks.0/@paths.107 //@networks.0/@paths.109" guestServers="//@networks.3/@nodes.0" guestSwitches="//@networks.3/@nodes.2" guestLinks="//@networks.3/@links.0 //@networks.3/@links.1" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="sub_srv_5" depth="2" cpu="32" memory="512" storage="1000" residualCpu="21" residualMemory="227" residualStorage="768" incomingLinks="//@networks.0/@links.18" outgoingLinks="//@networks.0/@links.19" outgoingPaths="//@networks.0/@paths.17 //@networks.0/@paths.41 //@networks.0/@paths.63 //@networks.0/@paths.83 //@networks.0/@paths.101 //@networks.0/@paths.110 //@networks.0/@paths.112 //@networks.0/@paths.114 //@networks.0/@paths.116 //@networks.0/@paths.118 //@networks.0/@paths.120 //@networks.0/@paths.122 //@networks.0/@paths.124" paths="//@networks.0/@paths.16 //@networks.0/@paths.17 //@networks.0/@paths.40 //@networks.0/@paths.41 //@networks.0/@paths.62 //@networks.0/@paths.63 //@networks.0/@paths.82 //@networks.0/@paths.83 //@networks.0/@paths.100 //@networks.0/@paths.101 //@networks.0/@paths.110 //@networks.0/@paths.111 //@networks.0/@paths.112 //@networks.0/@paths.113 //@networks.0/@paths.114 //@networks.0/@paths.115 //@networks.0/@paths.116 //@networks.0/@paths.117 //@networks.0/@paths.118 //@networks.0/@paths.119 //@networks.0/@paths.120 //@networks.0/@paths.121 //@networks.0/@paths.122 //@networks.0/@paths.123 //@networks.0/@paths.124 //@networks.0/@paths.125" incomingPaths="//@networks.0/@paths.16 //@networks.0/@paths.40 //@networks.0/@paths.62 //@networks.0/@paths.82 //@networks.0/@paths.100 //@networks.0/@paths.111 //@networks.0/@paths.113 //@networks.0/@paths.115 //@networks.0/@paths.117 //@networks.0/@paths.119 //@networks.0/@paths.121 //@networks.0/@paths.123 //@networks.0/@paths.125" guestServers="//@networks.4/@nodes.1" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="sub_srv_6" depth="2" cpu="32" memory="512" storage="1000" residualCpu="9" residualMemory="429" residualStorage="836" incomingLinks="//@networks.0/@links.20" outgoingLinks="//@networks.0/@links.21" outgoingPaths="//@networks.0/@paths.19 //@networks.0/@paths.43 //@networks.0/@paths.65 //@networks.0/@paths.85 //@networks.0/@paths.103 //@networks.0/@paths.119 //@networks.0/@paths.126 //@networks.0/@paths.128 //@networks.0/@paths.130 //@networks.0/@paths.132 //@networks.0/@paths.134 //@networks.0/@paths.136 //@networks.0/@paths.138" paths="//@networks.0/@paths.18 //@networks.0/@paths.19 //@networks.0/@paths.42 //@networks.0/@paths.43 //@networks.0/@paths.64 //@networks.0/@paths.65 //@networks.0/@paths.84 //@networks.0/@paths.85 //@networks.0/@paths.102 //@networks.0/@paths.103 //@networks.0/@paths.118 //@networks.0/@paths.119 //@networks.0/@paths.126 //@networks.0/@paths.127 //@networks.0/@paths.128 //@networks.0/@paths.129 //@networks.0/@paths.130 //@networks.0/@paths.131 //@networks.0/@paths.132 //@networks.0/@paths.133 //@networks.0/@paths.134 //@networks.0/@paths.135 //@networks.0/@paths.136 //@networks.0/@paths.137 //@networks.0/@paths.138 //@networks.0/@paths.139" incomingPaths="//@networks.0/@paths.18 //@networks.0/@paths.42 //@networks.0/@paths.64 //@networks.0/@paths.84 //@networks.0/@paths.102 //@networks.0/@paths.118 //@networks.0/@paths.127 //@networks.0/@paths.129 //@networks.0/@paths.131 //@networks.0/@paths.133 //@networks.0/@paths.135 //@networks.0/@paths.137 //@networks.0/@paths.139" guestServers="//@networks.1/@nodes.1" guestSwitches="//@networks.1/@nodes.2" guestLinks="//@networks.1/@links.2 //@networks.1/@links.3" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="sub_srv_7" depth="2" cpu="32" memory="512" storage="1000" residualCpu="9" residualMemory="429" residualStorage="836" incomingLinks="//@networks.0/@links.22" outgoingLinks="//@networks.0/@links.23" outgoingPaths="//@networks.0/@paths.21 //@networks.0/@paths.45 //@networks.0/@paths.67 //@networks.0/@paths.87 //@networks.0/@paths.105 //@networks.0/@paths.121 //@networks.0/@paths.135 //@networks.0/@paths.140 //@networks.0/@paths.142 //@networks.0/@paths.144 //@networks.0/@paths.146 //@networks.0/@paths.148 //@networks.0/@paths.150" paths="//@networks.0/@paths.20 //@networks.0/@paths.21 //@networks.0/@paths.44 //@networks.0/@paths.45 //@networks.0/@paths.66 //@networks.0/@paths.67 //@networks.0/@paths.86 //@networks.0/@paths.87 //@networks.0/@paths.104 //@networks.0/@paths.105 //@networks.0/@paths.120 //@networks.0/@paths.121 //@networks.0/@paths.134 //@networks.0/@paths.135 //@networks.0/@paths.140 //@networks.0/@paths.141 //@networks.0/@paths.142 //@networks.0/@paths.143 //@networks.0/@paths.144 //@networks.0/@paths.145 //@networks.0/@paths.146 //@networks.0/@paths.147 //@networks.0/@paths.148 //@networks.0/@paths.149 //@networks.0/@paths.150 //@networks.0/@paths.151" incomingPaths="//@networks.0/@paths.20 //@networks.0/@paths.44 //@networks.0/@paths.66 //@networks.0/@paths.86 //@networks.0/@paths.104 //@networks.0/@paths.120 //@networks.0/@paths.134 //@networks.0/@paths.141 //@networks.0/@paths.143 //@networks.0/@paths.145 //@networks.0/@paths.147 //@networks.0/@paths.149 //@networks.0/@paths.151" guestServers="//@networks.1/@nodes.0" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="sub_srv_8" depth="2" cpu="32" memory="512" storage="1000" residualCpu="32" residualMemory="512" residualStorage="1000" incomingLinks="//@networks.0/@links.24" outgoingLinks="//@networks.0/@links.25" outgoingPaths="//@networks.0/@paths.23 //@networks.0/@paths.47 //@networks.0/@paths.69 //@networks.0/@paths.89 //@networks.0/@paths.107 //@networks.0/@paths.123 //@networks.0/@paths.137 //@networks.0/@paths.149 //@networks.0/@paths.152 //@networks.0/@paths.154 //@networks.0/@paths.156 //@networks.0/@paths.158 //@networks.0/@paths.160" paths="//@networks.0/@paths.22 //@networks.0/@paths.23 //@networks.0/@paths.46 //@networks.0/@paths.47 //@networks.0/@paths.68 //@networks.0/@paths.69 //@networks.0/@paths.88 //@networks.0/@paths.89 //@networks.0/@paths.106 //@networks.0/@paths.107 //@networks.0/@paths.122 //@networks.0/@paths.123 //@networks.0/@paths.136 //@networks.0/@paths.137 //@networks.0/@paths.148 //@networks.0/@paths.149 //@networks.0/@paths.152 //@networks.0/@paths.153 //@networks.0/@paths.154 //@networks.0/@paths.155 //@networks.0/@paths.156 //@networks.0/@paths.157 //@networks.0/@paths.158 //@networks.0/@paths.159 //@networks.0/@paths.160 //@networks.0/@paths.161" incomingPaths="//@networks.0/@paths.22 //@networks.0/@paths.46 //@networks.0/@paths.68 //@networks.0/@paths.88 //@networks.0/@paths.106 //@networks.0/@paths.122 //@networks.0/@paths.136 //@networks.0/@paths.148 //@networks.0/@paths.153 //@networks.0/@paths.155 //@networks.0/@paths.157 //@networks.0/@paths.159 //@networks.0/@paths.161" />
<nodes xsi:type="model:SubstrateServer" network="//@networks.0" name="sub_srv_9" depth="2" cpu="32" memory="512" storage="1000" residualCpu="21" residualMemory="227" residualStorage="768" incomingLinks="//@networks.0/@links.26" outgoingLinks="//@networks.0/@links.27" outgoingPaths="//@networks.0/@paths.25 //@networks.0/@paths.49 //@networks.0/@paths.71 //@networks.0/@paths.91 //@networks.0/@paths.109 //@networks.0/@paths.125 //@networks.0/@paths.139 //@networks.0/@paths.151 //@networks.0/@paths.161 //@networks.0/@paths.162 //@networks.0/@paths.164 //@networks.0/@paths.166 //@networks.0/@paths.168" paths="//@networks.0/@paths.24 //@networks.0/@paths.25 //@networks.0/@paths.48 //@networks.0/@paths.49 //@networks.0/@paths.70 //@networks.0/@paths.71 //@networks.0/@paths.90 //@networks.0/@paths.91 //@networks.0/@paths.108 //@networks.0/@paths.109 //@networks.0/@paths.124 //@networks.0/@paths.125 //@networks.0/@paths.138 //@networks.0/@paths.139 //@networks.0/@paths.150 //@networks.0/@paths.151 //@networks.0/@paths.160 //@networks.0/@paths.161 //@networks.0/@paths.162 //@networks.0/@paths.163 //@networks.0/@paths.164 //@networks.0/@paths.165 //@networks.0/@paths.166 //@networks.0/@paths.167 //@networks.0/@paths.168 //@networks.0/@paths.169" incomingPaths="//@networks.0/@paths.24 //@networks.0/@paths.48 //@networks.0/@paths.70 //@networks.0/@paths.90 //@networks.0/@paths.108 //@networks.0/@paths.124 //@networks.0/@paths.138 //@networks.0/@paths.150 //@networks.0/@paths.160 //@networks.0/@paths.163 //@networks.0/@paths.165 //@networks.0/@paths.167 //@networks.0/@paths.169" guestServers="//@networks.4/@nodes.0" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.2" name="sub_ln_0" bandwidth="10000" residualBandwidth="10000" paths="//@networks.0/@paths.1 //@networks.0/@paths.7 //@networks.0/@paths.17 //@networks.0/@paths.19 //@networks.0/@paths.21 //@networks.0/@paths.23 //@networks.0/@paths.25 //@networks.0/@paths.27 //@networks.0/@paths.33 //@networks.0/@paths.41 //@networks.0/@paths.43 //@networks.0/@paths.45 //@networks.0/@paths.47 //@networks.0/@paths.49 //@networks.0/@paths.51 //@networks.0/@paths.57 //@networks.0/@paths.63 //@networks.0/@paths.65 //@networks.0/@paths.67 //@networks.0/@paths.69 //@networks.0/@paths.71 //@networks.0/@paths.73 //@networks.0/@paths.79 //@networks.0/@paths.83 //@networks.0/@paths.85 //@networks.0/@paths.87 //@networks.0/@paths.89 //@networks.0/@paths.91 //@networks.0/@paths.93 //@networks.0/@paths.99 //@networks.0/@paths.101 //@networks.0/@paths.103 //@networks.0/@paths.105 //@networks.0/@paths.107 //@networks.0/@paths.109 //@networks.0/@paths.114 //@networks.0/@paths.130 //@networks.0/@paths.144 //@networks.0/@paths.156 //@networks.0/@paths.166" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.0" name="sub_ln_1" bandwidth="10000" residualBandwidth="10000" paths="//@networks.0/@paths.0 //@networks.0/@paths.6 //@networks.0/@paths.16 //@networks.0/@paths.18 //@networks.0/@paths.20 //@networks.0/@paths.22 //@networks.0/@paths.24 //@networks.0/@paths.26 //@networks.0/@paths.32 //@networks.0/@paths.40 //@networks.0/@paths.42 //@networks.0/@paths.44 //@networks.0/@paths.46 //@networks.0/@paths.48 //@networks.0/@paths.50 //@networks.0/@paths.56 //@networks.0/@paths.62 //@networks.0/@paths.64 //@networks.0/@paths.66 //@networks.0/@paths.68 //@networks.0/@paths.70 //@networks.0/@paths.72 //@networks.0/@paths.78 //@networks.0/@paths.82 //@networks.0/@paths.84 //@networks.0/@paths.86 //@networks.0/@paths.88 //@networks.0/@paths.90 //@networks.0/@paths.92 //@networks.0/@paths.98 //@networks.0/@paths.100 //@networks.0/@paths.102 //@networks.0/@paths.104 //@networks.0/@paths.106 //@networks.0/@paths.108 //@networks.0/@paths.115 //@networks.0/@paths.131 //@networks.0/@paths.145 //@networks.0/@paths.157 //@networks.0/@paths.167" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.3" name="sub_ln_2" bandwidth="10000" residualBandwidth="10000" paths="//@networks.0/@paths.6 //@networks.0/@paths.16 //@networks.0/@paths.18 //@networks.0/@paths.20 //@networks.0/@paths.22 //@networks.0/@paths.24 //@networks.0/@paths.32 //@networks.0/@paths.40 //@networks.0/@paths.42 //@networks.0/@paths.44 //@networks.0/@paths.46 //@networks.0/@paths.48 //@networks.0/@paths.56 //@networks.0/@paths.62 //@networks.0/@paths.64 //@networks.0/@paths.66 //@networks.0/@paths.68 //@networks.0/@paths.70 //@networks.0/@paths.78 //@networks.0/@paths.82 //@networks.0/@paths.84 //@networks.0/@paths.86 //@networks.0/@paths.88 //@networks.0/@paths.90 //@networks.0/@paths.98 //@networks.0/@paths.100 //@networks.0/@paths.102 //@networks.0/@paths.104 //@networks.0/@paths.106 //@networks.0/@paths.108 //@networks.0/@paths.111 //@networks.0/@paths.115 //@networks.0/@paths.127 //@networks.0/@paths.131 //@networks.0/@paths.141 //@networks.0/@paths.145 //@networks.0/@paths.153 //@networks.0/@paths.157 //@networks.0/@paths.163 //@networks.0/@paths.167" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.0" name="sub_ln_3" bandwidth="10000" residualBandwidth="10000" paths="//@networks.0/@paths.7 //@networks.0/@paths.17 //@networks.0/@paths.19 //@networks.0/@paths.21 //@networks.0/@paths.23 //@networks.0/@paths.25 //@networks.0/@paths.33 //@networks.0/@paths.41 //@networks.0/@paths.43 //@networks.0/@paths.45 //@networks.0/@paths.47 //@networks.0/@paths.49 //@networks.0/@paths.57 //@networks.0/@paths.63 //@networks.0/@paths.65 //@networks.0/@paths.67 //@networks.0/@paths.69 //@networks.0/@paths.71 //@networks.0/@paths.79 //@networks.0/@paths.83 //@networks.0/@paths.85 //@networks.0/@paths.87 //@networks.0/@paths.89 //@networks.0/@paths.91 //@networks.0/@paths.99 //@networks.0/@paths.101 //@networks.0/@paths.103 //@networks.0/@paths.105 //@networks.0/@paths.107 //@networks.0/@paths.109 //@networks.0/@paths.110 //@networks.0/@paths.114 //@networks.0/@paths.126 //@networks.0/@paths.130 //@networks.0/@paths.140 //@networks.0/@paths.144 //@networks.0/@paths.152 //@networks.0/@paths.156 //@networks.0/@paths.162 //@networks.0/@paths.166" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.2" name="sub_ln_4" bandwidth="10000" residualBandwidth="10000" paths="//@networks.0/@paths.3 //@networks.0/@paths.29 //@networks.0/@paths.53 //@networks.0/@paths.75 //@networks.0/@paths.95" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.1" name="sub_ln_5" bandwidth="10000" residualBandwidth="10000" paths="//@networks.0/@paths.2 //@networks.0/@paths.28 //@networks.0/@paths.52 //@networks.0/@paths.74 //@networks.0/@paths.94" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.3" name="sub_ln_6" bandwidth="10000" residualBandwidth="10000" paths="//@networks.0/@paths.113 //@networks.0/@paths.129 //@networks.0/@paths.143 //@networks.0/@paths.155 //@networks.0/@paths.165" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.1" name="sub_ln_7" bandwidth="10000" residualBandwidth="10000" paths="//@networks.0/@paths.112 //@networks.0/@paths.128 //@networks.0/@paths.142 //@networks.0/@paths.154 //@networks.0/@paths.164" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.4" name="sub_ln_8" bandwidth="1000" residualBandwidth="125" paths="//@networks.0/@paths.1 //@networks.0/@paths.3 //@networks.0/@paths.5 //@networks.0/@paths.7 //@networks.0/@paths.9 //@networks.0/@paths.11 //@networks.0/@paths.13 //@networks.0/@paths.15 //@networks.0/@paths.17 //@networks.0/@paths.19 //@networks.0/@paths.21 //@networks.0/@paths.23 //@networks.0/@paths.25" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.2" name="sub_ln_9" bandwidth="1000" residualBandwidth="125" paths="//@networks.0/@paths.0 //@networks.0/@paths.2 //@networks.0/@paths.4 //@networks.0/@paths.6 //@networks.0/@paths.8 //@networks.0/@paths.10 //@networks.0/@paths.12 //@networks.0/@paths.14 //@networks.0/@paths.16 //@networks.0/@paths.18 //@networks.0/@paths.20 //@networks.0/@paths.22 //@networks.0/@paths.24" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.5" name="sub_ln_10" bandwidth="1000" residualBandwidth="1000" paths="//@networks.0/@paths.8 //@networks.0/@paths.27 //@networks.0/@paths.29 //@networks.0/@paths.31 //@networks.0/@paths.33 //@networks.0/@paths.35 //@networks.0/@paths.37 //@networks.0/@paths.39 //@networks.0/@paths.41 //@networks.0/@paths.43 //@networks.0/@paths.45 //@networks.0/@paths.47 //@networks.0/@paths.49" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.2" name="sub_ln_11" bandwidth="1000" residualBandwidth="1000" paths="//@networks.0/@paths.9 //@networks.0/@paths.26 //@networks.0/@paths.28 //@networks.0/@paths.30 //@networks.0/@paths.32 //@networks.0/@paths.34 //@networks.0/@paths.36 //@networks.0/@paths.38 //@networks.0/@paths.40 //@networks.0/@paths.42 //@networks.0/@paths.44 //@networks.0/@paths.46 //@networks.0/@paths.48" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.6" name="sub_ln_12" bandwidth="1000" residualBandwidth="102" paths="//@networks.0/@paths.10 //@networks.0/@paths.34 //@networks.0/@paths.51 //@networks.0/@paths.53 //@networks.0/@paths.55 //@networks.0/@paths.57 //@networks.0/@paths.59 //@networks.0/@paths.61 //@networks.0/@paths.63 //@networks.0/@paths.65 //@networks.0/@paths.67 //@networks.0/@paths.69 //@networks.0/@paths.71" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.2" name="sub_ln_13" bandwidth="1000" residualBandwidth="102" paths="//@networks.0/@paths.11 //@networks.0/@paths.35 //@networks.0/@paths.50 //@networks.0/@paths.52 //@networks.0/@paths.54 //@networks.0/@paths.56 //@networks.0/@paths.58 //@networks.0/@paths.60 //@networks.0/@paths.62 //@networks.0/@paths.64 //@networks.0/@paths.66 //@networks.0/@paths.68 //@networks.0/@paths.70" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.7" name="sub_ln_14" bandwidth="1000" residualBandwidth="125" paths="//@networks.0/@paths.12 //@networks.0/@paths.36 //@networks.0/@paths.58 //@networks.0/@paths.73 //@networks.0/@paths.75 //@networks.0/@paths.77 //@networks.0/@paths.79 //@networks.0/@paths.81 //@networks.0/@paths.83 //@networks.0/@paths.85 //@networks.0/@paths.87 //@networks.0/@paths.89 //@networks.0/@paths.91" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.2" name="sub_ln_15" bandwidth="1000" residualBandwidth="125" paths="//@networks.0/@paths.13 //@networks.0/@paths.37 //@networks.0/@paths.59 //@networks.0/@paths.72 //@networks.0/@paths.74 //@networks.0/@paths.76 //@networks.0/@paths.78 //@networks.0/@paths.80 //@networks.0/@paths.82 //@networks.0/@paths.84 //@networks.0/@paths.86 //@networks.0/@paths.88 //@networks.0/@paths.90" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.8" name="sub_ln_16" bandwidth="1000" residualBandwidth="102" paths="//@networks.0/@paths.14 //@networks.0/@paths.38 //@networks.0/@paths.60 //@networks.0/@paths.80 //@networks.0/@paths.93 //@networks.0/@paths.95 //@networks.0/@paths.97 //@networks.0/@paths.99 //@networks.0/@paths.101 //@networks.0/@paths.103 //@networks.0/@paths.105 //@networks.0/@paths.107 //@networks.0/@paths.109" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.2" name="sub_ln_17" bandwidth="1000" residualBandwidth="102" paths="//@networks.0/@paths.15 //@networks.0/@paths.39 //@networks.0/@paths.61 //@networks.0/@paths.81 //@networks.0/@paths.92 //@networks.0/@paths.94 //@networks.0/@paths.96 //@networks.0/@paths.98 //@networks.0/@paths.100 //@networks.0/@paths.102 //@networks.0/@paths.104 //@networks.0/@paths.106 //@networks.0/@paths.108" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.9" name="sub_ln_18" bandwidth="1000" residualBandwidth="411" paths="//@networks.0/@paths.16 //@networks.0/@paths.40 //@networks.0/@paths.62 //@networks.0/@paths.82 //@networks.0/@paths.100 //@networks.0/@paths.111 //@networks.0/@paths.113 //@networks.0/@paths.115 //@networks.0/@paths.117 //@networks.0/@paths.119 //@networks.0/@paths.121 //@networks.0/@paths.123 //@networks.0/@paths.125" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.3" name="sub_ln_19" bandwidth="1000" residualBandwidth="411" paths="//@networks.0/@paths.17 //@networks.0/@paths.41 //@networks.0/@paths.63 //@networks.0/@paths.83 //@networks.0/@paths.101 //@networks.0/@paths.110 //@networks.0/@paths.112 //@networks.0/@paths.114 //@networks.0/@paths.116 //@networks.0/@paths.118 //@networks.0/@paths.120 //@networks.0/@paths.122 //@networks.0/@paths.124" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.10" name="sub_ln_20" bandwidth="1000" residualBandwidth="743" paths="//@networks.0/@paths.18 //@networks.0/@paths.42 //@networks.0/@paths.64 //@networks.0/@paths.84 //@networks.0/@paths.102 //@networks.0/@paths.118 //@networks.0/@paths.127 //@networks.0/@paths.129 //@networks.0/@paths.131 //@networks.0/@paths.133 //@networks.0/@paths.135 //@networks.0/@paths.137 //@networks.0/@paths.139" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.3" name="sub_ln_21" bandwidth="1000" residualBandwidth="743" paths="//@networks.0/@paths.19 //@networks.0/@paths.43 //@networks.0/@paths.65 //@networks.0/@paths.85 //@networks.0/@paths.103 //@networks.0/@paths.119 //@networks.0/@paths.126 //@networks.0/@paths.128 //@networks.0/@paths.130 //@networks.0/@paths.132 //@networks.0/@paths.134 //@networks.0/@paths.136 //@networks.0/@paths.138" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.11" name="sub_ln_22" bandwidth="1000" residualBandwidth="743" paths="//@networks.0/@paths.20 //@networks.0/@paths.44 //@networks.0/@paths.66 //@networks.0/@paths.86 //@networks.0/@paths.104 //@networks.0/@paths.120 //@networks.0/@paths.134 //@networks.0/@paths.141 //@networks.0/@paths.143 //@networks.0/@paths.145 //@networks.0/@paths.147 //@networks.0/@paths.149 //@networks.0/@paths.151" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.3" name="sub_ln_23" bandwidth="1000" residualBandwidth="743" paths="//@networks.0/@paths.21 //@networks.0/@paths.45 //@networks.0/@paths.67 //@networks.0/@paths.87 //@networks.0/@paths.105 //@networks.0/@paths.121 //@networks.0/@paths.135 //@networks.0/@paths.140 //@networks.0/@paths.142 //@networks.0/@paths.144 //@networks.0/@paths.146 //@networks.0/@paths.148 //@networks.0/@paths.150" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.12" name="sub_ln_24" bandwidth="1000" residualBandwidth="1000" paths="//@networks.0/@paths.22 //@networks.0/@paths.46 //@networks.0/@paths.68 //@networks.0/@paths.88 //@networks.0/@paths.106 //@networks.0/@paths.122 //@networks.0/@paths.136 //@networks.0/@paths.148 //@networks.0/@paths.153 //@networks.0/@paths.155 //@networks.0/@paths.157 //@networks.0/@paths.159 //@networks.0/@paths.161" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.3" name="sub_ln_25" bandwidth="1000" residualBandwidth="1000" paths="//@networks.0/@paths.23 //@networks.0/@paths.47 //@networks.0/@paths.69 //@networks.0/@paths.89 //@networks.0/@paths.107 //@networks.0/@paths.123 //@networks.0/@paths.137 //@networks.0/@paths.149 //@networks.0/@paths.152 //@networks.0/@paths.154 //@networks.0/@paths.156 //@networks.0/@paths.158 //@networks.0/@paths.160" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.13" name="sub_ln_26" bandwidth="1000" residualBandwidth="411" paths="//@networks.0/@paths.24 //@networks.0/@paths.48 //@networks.0/@paths.70 //@networks.0/@paths.90 //@networks.0/@paths.108 //@networks.0/@paths.124 //@networks.0/@paths.138 //@networks.0/@paths.150 //@networks.0/@paths.160 //@networks.0/@paths.163 //@networks.0/@paths.165 //@networks.0/@paths.167 //@networks.0/@paths.169" />
<links xsi:type="model:SubstrateLink" network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.3" name="sub_ln_27" bandwidth="1000" residualBandwidth="411" paths="//@networks.0/@paths.25 //@networks.0/@paths.49 //@networks.0/@paths.71 //@networks.0/@paths.91 //@networks.0/@paths.109 //@networks.0/@paths.125 //@networks.0/@paths.139 //@networks.0/@paths.151 //@networks.0/@paths.161 //@networks.0/@paths.162 //@networks.0/@paths.164 //@networks.0/@paths.166 //@networks.0/@paths.168" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.0" links="//@networks.0/@links.9 //@networks.0/@links.1" name="path-sub_srv_0-sub_rsw_0-sub_csw_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.0 //@networks.0/@links.8" name="path-sub_csw_0-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.1" links="//@networks.0/@links.9 //@networks.0/@links.5" name="path-sub_srv_0-sub_rsw_0-sub_csw_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.4 //@networks.0/@links.8" name="path-sub_csw_1-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2" links="//@networks.0/@links.9" name="path-sub_srv_0-sub_rsw_0" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.8" name="path-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.3" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3" links="//@networks.0/@links.9 //@networks.0/@links.1 //@networks.0/@links.2" name="path-sub_srv_0-sub_rsw_0-sub_csw_0-sub_rsw_1" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.8" name="path-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.9 //@networks.0/@links.10" name="path-sub_srv_0-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.11 //@networks.0/@links.8" name="path-sub_srv_1-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.9 //@networks.0/@links.12" name="path-sub_srv_0-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.13 //@networks.0/@links.8" name="path-sub_srv_2-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.9 //@networks.0/@links.14" name="path-sub_srv_0-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="2" residualBandwidth="125" guestLinks="//@networks.2/@links.2" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.15 //@networks.0/@links.8" name="path-sub_srv_3-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="2" residualBandwidth="125" guestLinks="//@networks.2/@links.3" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.9 //@networks.0/@links.16" name="path-sub_srv_0-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.17 //@networks.0/@links.8" name="path-sub_srv_4-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.9 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.18" name="path-sub_srv_0-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.19 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.8" name="path-sub_srv_5-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.9 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.20" name="path-sub_srv_0-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.21 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.8" name="path-sub_srv_6-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.9 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.22" name="path-sub_srv_0-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.23 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.8" name="path-sub_srv_7-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.9 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.24" name="path-sub_srv_0-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.4" links="//@networks.0/@links.25 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.8" name="path-sub_srv_8-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.4" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.9 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.26" name="path-sub_srv_0-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.4" nodes="//@networks.0/@nodes.4 //@networks.0/@nodes.13 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.8 //@networks.0/@links.27 //@networks.0/@links.3 //@networks.0/@links.0" name="path-sub_srv_9-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_0" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.0" links="//@networks.0/@links.11 //@networks.0/@links.1" name="path-sub_srv_1-sub_rsw_0-sub_csw_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.0 //@networks.0/@links.10" name="path-sub_csw_0-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.1" links="//@networks.0/@links.11 //@networks.0/@links.5" name="path-sub_srv_1-sub_rsw_0-sub_csw_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.4 //@networks.0/@links.10" name="path-sub_csw_1-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2" links="//@networks.0/@links.11" name="path-sub_srv_1-sub_rsw_0" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.10" name="path-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.3" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3" links="//@networks.0/@links.11 //@networks.0/@links.1 //@networks.0/@links.2" name="path-sub_srv_1-sub_rsw_0-sub_csw_0-sub_rsw_1" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.10" name="path-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.11 //@networks.0/@links.12" name="path-sub_srv_1-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.13 //@networks.0/@links.10" name="path-sub_srv_2-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.11 //@networks.0/@links.14" name="path-sub_srv_1-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.15 //@networks.0/@links.10" name="path-sub_srv_3-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.11 //@networks.0/@links.16" name="path-sub_srv_1-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.17 //@networks.0/@links.10" name="path-sub_srv_4-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.11 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.18" name="path-sub_srv_1-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.19 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.10" name="path-sub_srv_5-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.11 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.20" name="path-sub_srv_1-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.21 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.10" name="path-sub_srv_6-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.11 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.22" name="path-sub_srv_1-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.23 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.10" name="path-sub_srv_7-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.11 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.24" name="path-sub_srv_1-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.5" links="//@networks.0/@links.25 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.10" name="path-sub_srv_8-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.5" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.11 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.26" name="path-sub_srv_1-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.5" nodes="//@networks.0/@nodes.5 //@networks.0/@nodes.13 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.10 //@networks.0/@links.27 //@networks.0/@links.3 //@networks.0/@links.0" name="path-sub_srv_9-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_1" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.0" links="//@networks.0/@links.13 //@networks.0/@links.1" name="path-sub_srv_2-sub_rsw_0-sub_csw_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.0 //@networks.0/@links.12" name="path-sub_csw_0-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.1" links="//@networks.0/@links.13 //@networks.0/@links.5" name="path-sub_srv_2-sub_rsw_0-sub_csw_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.4 //@networks.0/@links.12" name="path-sub_csw_1-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2" links="//@networks.0/@links.13" name="path-sub_srv_2-sub_rsw_0" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.12" name="path-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.3" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3" links="//@networks.0/@links.13 //@networks.0/@links.1 //@networks.0/@links.2" name="path-sub_srv_2-sub_rsw_0-sub_csw_0-sub_rsw_1" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.12" name="path-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.13 //@networks.0/@links.14" name="path-sub_srv_2-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.15 //@networks.0/@links.12" name="path-sub_srv_3-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.13 //@networks.0/@links.16" name="path-sub_srv_2-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="2" residualBandwidth="102" guestLinks="//@networks.3/@links.2" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.17 //@networks.0/@links.12" name="path-sub_srv_4-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="2" residualBandwidth="102" guestLinks="//@networks.3/@links.3" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.13 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.18" name="path-sub_srv_2-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.19 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.12" name="path-sub_srv_5-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.13 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.20" name="path-sub_srv_2-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.21 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.12" name="path-sub_srv_6-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.13 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.22" name="path-sub_srv_2-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.23 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.12" name="path-sub_srv_7-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.13 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.24" name="path-sub_srv_2-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.6" links="//@networks.0/@links.25 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.12" name="path-sub_srv_8-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.6" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.13 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.26" name="path-sub_srv_2-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.6" nodes="//@networks.0/@nodes.6 //@networks.0/@nodes.13 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.12 //@networks.0/@links.27 //@networks.0/@links.3 //@networks.0/@links.0" name="path-sub_srv_9-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_2" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.0" links="//@networks.0/@links.15 //@networks.0/@links.1" name="path-sub_srv_3-sub_rsw_0-sub_csw_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.0 //@networks.0/@links.14" name="path-sub_csw_0-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.1" links="//@networks.0/@links.15 //@networks.0/@links.5" name="path-sub_srv_3-sub_rsw_0-sub_csw_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.4 //@networks.0/@links.14" name="path-sub_csw_1-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2" links="//@networks.0/@links.15" name="path-sub_srv_3-sub_rsw_0" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.14" name="path-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.3" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3" links="//@networks.0/@links.15 //@networks.0/@links.1 //@networks.0/@links.2" name="path-sub_srv_3-sub_rsw_0-sub_csw_0-sub_rsw_1" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.14" name="path-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.15 //@networks.0/@links.16" name="path-sub_srv_3-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.17 //@networks.0/@links.14" name="path-sub_srv_4-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.15 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.18" name="path-sub_srv_3-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.19 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.14" name="path-sub_srv_5-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.15 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.20" name="path-sub_srv_3-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.21 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.14" name="path-sub_srv_6-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.15 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.22" name="path-sub_srv_3-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.23 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.14" name="path-sub_srv_7-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.15 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.24" name="path-sub_srv_3-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.7" links="//@networks.0/@links.25 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.14" name="path-sub_srv_8-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.7" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.15 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.26" name="path-sub_srv_3-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.7" nodes="//@networks.0/@nodes.7 //@networks.0/@nodes.13 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.14 //@networks.0/@links.27 //@networks.0/@links.3 //@networks.0/@links.0" name="path-sub_srv_9-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_3" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.0" links="//@networks.0/@links.17 //@networks.0/@links.1" name="path-sub_srv_4-sub_rsw_0-sub_csw_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.0 //@networks.0/@links.16" name="path-sub_csw_0-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.1" links="//@networks.0/@links.5 //@networks.0/@links.17" name="path-sub_srv_4-sub_rsw_0-sub_csw_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.4 //@networks.0/@links.16" name="path-sub_csw_1-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2" links="//@networks.0/@links.17" name="path-sub_srv_4-sub_rsw_0" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.16" name="path-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.3" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3" links="//@networks.0/@links.17 //@networks.0/@links.1 //@networks.0/@links.2" name="path-sub_srv_4-sub_rsw_0-sub_csw_0-sub_rsw_1" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.16" name="path-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.17 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.18" name="path-sub_srv_4-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.19 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.16" name="path-sub_srv_5-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.17 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.20" name="path-sub_srv_4-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.21 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.16" name="path-sub_srv_6-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.17 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.22" name="path-sub_srv_4-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.23 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.16" name="path-sub_srv_7-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.17 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.24" name="path-sub_srv_4-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.8" links="//@networks.0/@links.25 //@networks.0/@links.3 //@networks.0/@links.0 //@networks.0/@links.16" name="path-sub_srv_8-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.8" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.17 //@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.26" name="path-sub_srv_4-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.8" nodes="//@networks.0/@nodes.8 //@networks.0/@nodes.13 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.16 //@networks.0/@links.27 //@networks.0/@links.3 //@networks.0/@links.0" name="path-sub_srv_9-sub_rsw_1-sub_csw_0-sub_rsw_0-sub_srv_4" bandwidth="1000" hops="4" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.0" links="//@networks.0/@links.19 //@networks.0/@links.3" name="path-sub_srv_5-sub_rsw_1-sub_csw_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.2 //@networks.0/@links.18" name="path-sub_csw_0-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.1" links="//@networks.0/@links.19 //@networks.0/@links.7" name="path-sub_srv_5-sub_rsw_1-sub_csw_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.6 //@networks.0/@links.18" name="path-sub_csw_1-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.19 //@networks.0/@links.3 //@networks.0/@links.0" name="path-sub_srv_5-sub_rsw_1-sub_csw_0-sub_rsw_0" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.18" name="path-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.3" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3" links="//@networks.0/@links.19" name="path-sub_srv_5-sub_rsw_1" bandwidth="1000" hops="1" residualBandwidth="411" guestLinks="//@networks.4/@links.2" />
<paths network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.18" name="path-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="1" residualBandwidth="411" guestLinks="//@networks.4/@links.3" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.19 //@networks.0/@links.20" name="path-sub_srv_5-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.21 //@networks.0/@links.18" name="path-sub_srv_6-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.19 //@networks.0/@links.22" name="path-sub_srv_5-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.23 //@networks.0/@links.18" name="path-sub_srv_7-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.19 //@networks.0/@links.24" name="path-sub_srv_5-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.9" links="//@networks.0/@links.25 //@networks.0/@links.18" name="path-sub_srv_8-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.9" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.19 //@networks.0/@links.26" name="path-sub_srv_5-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.9" nodes="//@networks.0/@nodes.9 //@networks.0/@nodes.13 //@networks.0/@nodes.3" links="//@networks.0/@links.18 //@networks.0/@links.27" name="path-sub_srv_9-sub_rsw_1-sub_srv_5" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.0" links="//@networks.0/@links.21 //@networks.0/@links.3" name="path-sub_srv_6-sub_rsw_1-sub_csw_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.2 //@networks.0/@links.20" name="path-sub_csw_0-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.1" links="//@networks.0/@links.21 //@networks.0/@links.7" name="path-sub_srv_6-sub_rsw_1-sub_csw_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.6 //@networks.0/@links.20" name="path-sub_csw_1-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.21 //@networks.0/@links.3 //@networks.0/@links.0" name="path-sub_srv_6-sub_rsw_1-sub_csw_0-sub_rsw_0" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.20" name="path-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.3" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3" links="//@networks.0/@links.21" name="path-sub_srv_6-sub_rsw_1" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.20" name="path-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.21 //@networks.0/@links.22" name="path-sub_srv_6-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="2" residualBandwidth="743" guestLinks="//@networks.1/@links.1" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.23 //@networks.0/@links.20" name="path-sub_srv_7-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="2" residualBandwidth="743" guestLinks="//@networks.1/@links.0" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.21 //@networks.0/@links.24" name="path-sub_srv_6-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.10" links="//@networks.0/@links.25 //@networks.0/@links.20" name="path-sub_srv_8-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.10" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.21 //@networks.0/@links.26" name="path-sub_srv_6-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.10" nodes="//@networks.0/@nodes.10 //@networks.0/@nodes.13 //@networks.0/@nodes.3" links="//@networks.0/@links.20 //@networks.0/@links.27" name="path-sub_srv_9-sub_rsw_1-sub_srv_6" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.0" links="//@networks.0/@links.23 //@networks.0/@links.3" name="path-sub_srv_7-sub_rsw_1-sub_csw_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.2 //@networks.0/@links.22" name="path-sub_csw_0-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.1" links="//@networks.0/@links.23 //@networks.0/@links.7" name="path-sub_srv_7-sub_rsw_1-sub_csw_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.6 //@networks.0/@links.22" name="path-sub_csw_1-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.23 //@networks.0/@links.3 //@networks.0/@links.0" name="path-sub_srv_7-sub_rsw_1-sub_csw_0-sub_rsw_0" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.22" name="path-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.3" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3" links="//@networks.0/@links.23" name="path-sub_srv_7-sub_rsw_1" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.22" name="path-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.23 //@networks.0/@links.24" name="path-sub_srv_7-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.11" links="//@networks.0/@links.25 //@networks.0/@links.22" name="path-sub_srv_8-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.11" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.23 //@networks.0/@links.26" name="path-sub_srv_7-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.11" nodes="//@networks.0/@nodes.11 //@networks.0/@nodes.13 //@networks.0/@nodes.3" links="//@networks.0/@links.22 //@networks.0/@links.27" name="path-sub_srv_9-sub_rsw_1-sub_srv_7" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.0" links="//@networks.0/@links.25 //@networks.0/@links.3" name="path-sub_srv_8-sub_rsw_1-sub_csw_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.2 //@networks.0/@links.24" name="path-sub_csw_0-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.1" links="//@networks.0/@links.25 //@networks.0/@links.7" name="path-sub_srv_8-sub_rsw_1-sub_csw_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.6 //@networks.0/@links.24" name="path-sub_csw_1-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.25 //@networks.0/@links.3 //@networks.0/@links.0" name="path-sub_srv_8-sub_rsw_1-sub_csw_0-sub_rsw_0" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.2 //@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.24" name="path-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.3" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3" links="//@networks.0/@links.25" name="path-sub_srv_8-sub_rsw_1" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.3 //@networks.0/@nodes.12" links="//@networks.0/@links.24" name="path-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="1" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.12" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.25 //@networks.0/@links.26" name="path-sub_srv_8-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.12" nodes="//@networks.0/@nodes.12 //@networks.0/@nodes.13 //@networks.0/@nodes.3" links="//@networks.0/@links.24 //@networks.0/@links.27" name="path-sub_srv_9-sub_rsw_1-sub_srv_8" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.0" nodes="//@networks.0/@nodes.13 //@networks.0/@nodes.3 //@networks.0/@nodes.0" links="//@networks.0/@links.27 //@networks.0/@links.3" name="path-sub_srv_9-sub_rsw_1-sub_csw_0" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.0" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.2 //@networks.0/@links.26" name="path-sub_csw_0-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.1" nodes="//@networks.0/@nodes.13 //@networks.0/@nodes.3 //@networks.0/@nodes.1" links="//@networks.0/@links.7 //@networks.0/@links.27" name="path-sub_srv_9-sub_rsw_1-sub_csw_1" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.1" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.1 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.6 //@networks.0/@links.26" name="path-sub_csw_1-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="2" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.2" nodes="//@networks.0/@nodes.13 //@networks.0/@nodes.3 //@networks.0/@nodes.0 //@networks.0/@nodes.2" links="//@networks.0/@links.0 //@networks.0/@links.3 //@networks.0/@links.27" name="path-sub_srv_9-sub_rsw_1-sub_csw_0-sub_rsw_0" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.2" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.0 //@networks.0/@nodes.2 //@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.1 //@networks.0/@links.2 //@networks.0/@links.26" name="path-sub_rsw_0-sub_csw_0-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="3" residualBandwidth="1000" />
<paths network="//@networks.0" source="//@networks.0/@nodes.13" target="//@networks.0/@nodes.3" nodes="//@networks.0/@nodes.13 //@networks.0/@nodes.3" links="//@networks.0/@links.27" name="path-sub_srv_9-sub_rsw_1" bandwidth="1000" hops="1" residualBandwidth="411" guestLinks="//@networks.4/@links.0" />
<paths network="//@networks.0" source="//@networks.0/@nodes.3" target="//@networks.0/@nodes.13" nodes="//@networks.0/@nodes.3 //@networks.0/@nodes.13" links="//@networks.0/@links.26" name="path-sub_rsw_1-sub_srv_9" bandwidth="1000" hops="1" residualBandwidth="411" guestLinks="//@networks.4/@links.1" />
</networks>
<networks xsi:type="model:VirtualNetwork" root="/" host="//@networks.0" name="v0" cpu="46" memory="166" storage="328">
<nodes xsi:type="model:VirtualServer" network="//@networks.1" host="//@networks.0/@nodes.11" name="v0_srv_0" depth="1" cpu="23" memory="83" storage="164" outgoingLinks="//@networks.1/@links.0" incomingLinks="//@networks.1/@links.1" />
<nodes xsi:type="model:VirtualServer" network="//@networks.1" host="//@networks.0/@nodes.10" name="v0_srv_1" depth="1" cpu="23" memory="83" storage="164" outgoingLinks="//@networks.1/@links.2" incomingLinks="//@networks.1/@links.3" />
<nodes xsi:type="model:VirtualSwitch" network="//@networks.1" host="//@networks.0/@nodes.10" name="v0_sw_0" depth="0" incomingLinks="//@networks.1/@links.0 //@networks.1/@links.2" outgoingLinks="//@networks.1/@links.1 //@networks.1/@links.3" />
<links xsi:type="model:VirtualLink" network="//@networks.1" source="//@networks.1/@nodes.0" target="//@networks.1/@nodes.2" host="//@networks.0/@paths.135" name="v0_ln_0" bandwidth="257" />
<links xsi:type="model:VirtualLink" network="//@networks.1" source="//@networks.1/@nodes.2" target="//@networks.1/@nodes.0" host="//@networks.0/@paths.134" name="v0_ln_1" bandwidth="257" />
<links xsi:type="model:VirtualLink" network="//@networks.1" source="//@networks.1/@nodes.1" target="//@networks.1/@nodes.2" host="//@networks.0/@nodes.10" name="v0_ln_2" bandwidth="257" />
<links xsi:type="model:VirtualLink" network="//@networks.1" source="//@networks.1/@nodes.2" target="//@networks.1/@nodes.1" host="//@networks.0/@nodes.10" name="v0_ln_3" bandwidth="257" />
</networks>
<networks xsi:type="model:VirtualNetwork" root="/" host="//@networks.0" name="v1" cpu="36" memory="1012" storage="476">
<nodes xsi:type="model:VirtualServer" network="//@networks.2" host="//@networks.0/@nodes.7" name="v1_srv_0" depth="1" cpu="18" memory="506" storage="238" outgoingLinks="//@networks.2/@links.0" incomingLinks="//@networks.2/@links.1" />
<nodes xsi:type="model:VirtualServer" network="//@networks.2" host="//@networks.0/@nodes.4" name="v1_srv_1" depth="1" cpu="18" memory="506" storage="238" outgoingLinks="//@networks.2/@links.2" incomingLinks="//@networks.2/@links.3" />
<nodes xsi:type="model:VirtualSwitch" network="//@networks.2" host="//@networks.0/@nodes.7" name="v1_sw_0" depth="0" incomingLinks="//@networks.2/@links.0 //@networks.2/@links.2" outgoingLinks="//@networks.2/@links.1 //@networks.2/@links.3" />
<links xsi:type="model:VirtualLink" network="//@networks.2" source="//@networks.2/@nodes.0" target="//@networks.2/@nodes.2" host="//@networks.0/@nodes.7" name="v1_ln_0" bandwidth="875" />
<links xsi:type="model:VirtualLink" network="//@networks.2" source="//@networks.2/@nodes.2" target="//@networks.2/@nodes.0" host="//@networks.0/@nodes.7" name="v1_ln_1" bandwidth="875" />
<links xsi:type="model:VirtualLink" network="//@networks.2" source="//@networks.2/@nodes.1" target="//@networks.2/@nodes.2" host="//@networks.0/@paths.12" name="v1_ln_2" bandwidth="875" />
<links xsi:type="model:VirtualLink" network="//@networks.2" source="//@networks.2/@nodes.2" target="//@networks.2/@nodes.1" host="//@networks.0/@paths.13" name="v1_ln_3" bandwidth="875" />
</networks>
<networks xsi:type="model:VirtualNetwork" root="/" host="//@networks.0" name="v2" cpu="48" memory="228" storage="450">
<nodes xsi:type="model:VirtualServer" network="//@networks.3" host="//@networks.0/@nodes.8" name="v2_srv_0" depth="1" cpu="24" memory="114" storage="225" outgoingLinks="//@networks.3/@links.0" incomingLinks="//@networks.3/@links.1" />
<nodes xsi:type="model:VirtualServer" network="//@networks.3" host="//@networks.0/@nodes.6" name="v2_srv_1" depth="1" cpu="24" memory="114" storage="225" outgoingLinks="//@networks.3/@links.2" incomingLinks="//@networks.3/@links.3" />
<nodes xsi:type="model:VirtualSwitch" network="//@networks.3" host="//@networks.0/@nodes.8" name="v2_sw_0" depth="0" incomingLinks="//@networks.3/@links.0 //@networks.3/@links.2" outgoingLinks="//@networks.3/@links.1 //@networks.3/@links.3" />
<links xsi:type="model:VirtualLink" network="//@networks.3" source="//@networks.3/@nodes.0" target="//@networks.3/@nodes.2" host="//@networks.0/@nodes.8" name="v2_ln_0" bandwidth="898" />
<links xsi:type="model:VirtualLink" network="//@networks.3" source="//@networks.3/@nodes.2" target="//@networks.3/@nodes.0" host="//@networks.0/@nodes.8" name="v2_ln_1" bandwidth="898" />
<links xsi:type="model:VirtualLink" network="//@networks.3" source="//@networks.3/@nodes.1" target="//@networks.3/@nodes.2" host="//@networks.0/@paths.60" name="v2_ln_2" bandwidth="898" />
<links xsi:type="model:VirtualLink" network="//@networks.3" source="//@networks.3/@nodes.2" target="//@networks.3/@nodes.1" host="//@networks.0/@paths.61" name="v2_ln_3" bandwidth="898" />
</networks>
<networks xsi:type="model:VirtualNetwork" root="/" host="//@networks.0" name="v3" cpu="22" memory="570" storage="464">
<nodes xsi:type="model:VirtualServer" network="//@networks.4" host="//@networks.0/@nodes.13" name="v3_srv_0" depth="1" cpu="11" memory="285" storage="232" outgoingLinks="//@networks.4/@links.0" incomingLinks="//@networks.4/@links.1" />
<nodes xsi:type="model:VirtualServer" network="//@networks.4" host="//@networks.0/@nodes.9" name="v3_srv_1" depth="1" cpu="11" memory="285" storage="232" outgoingLinks="//@networks.4/@links.2" incomingLinks="//@networks.4/@links.3" />
<nodes xsi:type="model:VirtualSwitch" network="//@networks.4" host="//@networks.0/@nodes.3" name="v3_sw_0" depth="0" incomingLinks="//@networks.4/@links.0 //@networks.4/@links.2" outgoingLinks="//@networks.4/@links.1 //@networks.4/@links.3" />
<links xsi:type="model:VirtualLink" network="//@networks.4" source="//@networks.4/@nodes.0" target="//@networks.4/@nodes.2" host="//@networks.0/@paths.168" name="v3_ln_0" bandwidth="589" />
<links xsi:type="model:VirtualLink" network="//@networks.4" source="//@networks.4/@nodes.2" target="//@networks.4/@nodes.0" host="//@networks.0/@paths.169" name="v3_ln_1" bandwidth="589" />
<links xsi:type="model:VirtualLink" network="//@networks.4" source="//@networks.4/@nodes.1" target="//@networks.4/@nodes.2" host="//@networks.0/@paths.116" name="v3_ln_2" bandwidth="589" />
<links xsi:type="model:VirtualLink" network="//@networks.4" source="//@networks.4/@nodes.2" target="//@networks.4/@nodes.1" host="//@networks.0/@paths.117" name="v3_ln_3" bandwidth="589" />
</networks>
<networks xsi:type="model:VirtualNetwork" root="/" name="v4" cpu="14" memory="536" storage="494">
<nodes xsi:type="model:VirtualServer" network="//@networks.5" name="v4_srv_0" depth="1" cpu="7" memory="268" storage="247" outgoingLinks="//@networks.5/@links.0" incomingLinks="//@networks.5/@links.1" />
<nodes xsi:type="model:VirtualServer" network="//@networks.5" name="v4_srv_1" depth="1" cpu="7" memory="268" storage="247" outgoingLinks="//@networks.5/@links.2" incomingLinks="//@networks.5/@links.3" />
<nodes xsi:type="model:VirtualSwitch" network="//@networks.5" name="v4_sw_0" depth="0" incomingLinks="//@networks.5/@links.0 //@networks.5/@links.2" outgoingLinks="//@networks.5/@links.1 //@networks.5/@links.3" />
<links xsi:type="model:VirtualLink" network="//@networks.5" source="//@networks.5/@nodes.0" target="//@networks.5/@nodes.2" name="v4_ln_0" bandwidth="457" />
<links xsi:type="model:VirtualLink" network="//@networks.5" source="//@networks.5/@nodes.2" target="//@networks.5/@nodes.0" name="v4_ln_1" bandwidth="457" />
<links xsi:type="model:VirtualLink" network="//@networks.5" source="//@networks.5/@nodes.1" target="//@networks.5/@nodes.2" name="v4_ln_2" bandwidth="457" />
<links xsi:type="model:VirtualLink" network="//@networks.5" source="//@networks.5/@nodes.2" target="//@networks.5/@nodes.1" name="v4_ln_3" bandwidth="457" />
</networks>
</model:Root>

View file

@ -0,0 +1,83 @@
package test.algorithms.generic;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import model.SubstrateNetwork;
import model.VirtualNetwork;
/**
* Abstract test class for a VNE algorithm implementation to trigger the minimum
* path/link bandwidth bug. This test is based on a scenario created by Marco
* Volle in his master's thesis.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
public abstract class AVneAlgorithmPathBandwidthBugTest extends AAlgorithmTest {
/**
* Substrate network.
*/
SubstrateNetwork sNet;
/**
* Virtual network.
*/
VirtualNetwork vNet;
@Override
public abstract void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets);
@AfterEach
public abstract void resetAlgo();
@BeforeEach
public void reset() {
facade.resetAll();
}
//
// Tests
//
@Test
public void testScenario34() {
// Load the model file
facade.loadModel("resources/triggerPathResidualBwBug.xmi");
assertNotNull(facade.getNetworkById("sub"));
assertFalse(facade.getAllPathsOfNetwork("sub").isEmpty());
assertThrows(InternalError.class, () -> {
facade.validateModel();
});
facade.updateAllPathsResidualBandwidth("sub");
// validation must not fail before the embedding
facade.validateModel();
sNet = (SubstrateNetwork) facade.getNetworkById("sub");
vNet = (VirtualNetwork) facade.getNetworkById("v4");
// Sanity check
assertNotNull(sNet);
assertNotNull(vNet);
assertNull(vNet.getHost());
initAlgo(sNet, Set.of(vNet));
assertTrue(algo.execute());
// validation must not fail
facade.validateModel();
}
}

View file

@ -6,7 +6,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import algorithms.AlgorithmConfig;

View file

@ -0,0 +1,38 @@
package test.algorithms.gips;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import algorithms.AlgorithmConfig;
import algorithms.AlgorithmConfig.Objective;
import algorithms.gips.VneGipsAlgorithm;
import model.SubstrateNetwork;
import model.VirtualNetwork;
import test.algorithms.generic.AVneAlgorithmPathBandwidthBugTest;
/**
* Test class for the VNE GIPS algorithm implementation to trigger the minimum
* path/link bandwidth bug.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
public class VneGipsAlgorithmPathBandwidthBugTest extends AVneAlgorithmPathBandwidthBugTest {
@Override
public void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets) {
// The algorithm is only able to use the total communication objective C because
// it is hard-coded in GIPSL
AlgorithmConfig.obj = Objective.TOTAL_COMMUNICATION_OBJECTIVE_C;
algo = VneGipsAlgorithm.prepare(sNet, vNets);
}
@AfterEach
public void resetAlgo() {
facade.resetAll();
if (algo != null) {
((VneGipsAlgorithm) algo).dispose();
}
}
}

View file

@ -0,0 +1,38 @@
package test.algorithms.gips.migration;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import algorithms.AlgorithmConfig;
import algorithms.AlgorithmConfig.Objective;
import algorithms.gips.VneGipsMigrationAlgorithm;
import model.SubstrateNetwork;
import model.VirtualNetwork;
import test.algorithms.generic.AVneAlgorithmPathBandwidthBugTest;
/**
* Test class for the VNE GIPS migration algorithm implementation to trigger the
* minimum path/link bandwidth bug.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
public class VneGipsMigrationAlgorithmPathBandwidthBugTest extends AVneAlgorithmPathBandwidthBugTest {
@Override
public void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets) {
// The algorithm is only able to use the total communication objective C because
// it is hard-coded in GIPSL
AlgorithmConfig.obj = Objective.TOTAL_COMMUNICATION_OBJECTIVE_C;
algo = VneGipsMigrationAlgorithm.prepare(sNet, vNets);
}
@AfterEach
public void resetAlgo() {
facade.resetAll();
if (algo != null) {
((VneGipsMigrationAlgorithm) algo).dispose();
}
}
}

View file

@ -0,0 +1,38 @@
package test.algorithms.gips.seq;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import algorithms.AlgorithmConfig;
import algorithms.AlgorithmConfig.Objective;
import algorithms.gips.VneGipsSeqAlgorithm;
import model.SubstrateNetwork;
import model.VirtualNetwork;
import test.algorithms.generic.AVneAlgorithmPathBandwidthBugTest;
/**
* Test class for the VNE GIPS sequence algorithm implementation to trigger the
* minimum path/link bandwidth bug.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
public class VneGipsSeqAlgorithmPathBandwidthBugTest extends AVneAlgorithmPathBandwidthBugTest {
@Override
public void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets) {
// The algorithm is only able to use the total communication objective C because
// it is hard-coded in GIPSL
AlgorithmConfig.obj = Objective.TOTAL_COMMUNICATION_OBJECTIVE_C;
algo = VneGipsSeqAlgorithm.prepare(sNet, vNets);
}
@AfterEach
public void resetAlgo() {
facade.resetAll();
if (algo != null) {
((VneGipsSeqAlgorithm) algo).dispose();
}
}
}

View file

@ -0,0 +1,37 @@
package test.algorithms.pm;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import algorithms.AlgorithmConfig;
import algorithms.AlgorithmConfig.Objective;
import algorithms.pm.VnePmMdvneAlgorithm;
import model.SubstrateNetwork;
import model.VirtualNetwork;
import test.algorithms.generic.AVneAlgorithmPathBandwidthBugTest;
/**
* Test class to trigger the minimum path/link bandwidth bug.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
public class VnePmMdvneAlgorithmPathBandwidthBugTest extends AVneAlgorithmPathBandwidthBugTest {
@Override
public void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets) {
// The algorithm is only able to use the total communication objective C because
// it is hard-coded in GIPSL
AlgorithmConfig.obj = Objective.TOTAL_COMMUNICATION_OBJECTIVE_C;
algo = VnePmMdvneAlgorithm.prepare(sNet, vNets);
}
@AfterEach
public void resetAlgo() {
facade.resetAll();
if (algo != null) {
((VnePmMdvneAlgorithm) algo).dispose();
}
}
}

View file

@ -0,0 +1,37 @@
package test.algorithms.pm.migration;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import algorithms.AlgorithmConfig;
import algorithms.AlgorithmConfig.Objective;
import algorithms.pm.VnePmMdvneAlgorithmMigration;
import model.SubstrateNetwork;
import model.VirtualNetwork;
import test.algorithms.generic.AVneAlgorithmPathBandwidthBugTest;
/**
* Test class to trigger the minimum path/link bandwidth bug.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
public class VnePmMdvneAlgorithmMigrationPathBandwidthBugTest extends AVneAlgorithmPathBandwidthBugTest {
@Override
public void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets) {
// The algorithm is only able to use the total communication objective C because
// it is hard-coded in GIPSL
AlgorithmConfig.obj = Objective.TOTAL_COMMUNICATION_OBJECTIVE_C;
algo = VnePmMdvneAlgorithmMigration.prepare(sNet, vNets);
}
@AfterEach
public void resetAlgo() {
facade.resetAll();
if (algo != null) {
((VnePmMdvneAlgorithmMigration) algo).dispose();
}
}
}

View file

@ -0,0 +1,33 @@
package test.algorithms.pm.pipeline;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import algorithms.pm.VnePmMdvneAlgorithmPipelineThreeStagesA;
import model.SubstrateNetwork;
import model.VirtualNetwork;
import test.algorithms.generic.AVneAlgorithmPathBandwidthBugTest;
/**
* Test class to trigger the minimum path/link bandwidth bug.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
//@Disabled
public class VnePmMdvneAlgorithmPipelineThreeStagesAPathBandwidthBugTest extends AVneAlgorithmPathBandwidthBugTest {
@Override
public void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets) {
algo = VnePmMdvneAlgorithmPipelineThreeStagesA.prepare(sNet, vNets);
}
@AfterEach
public void resetAlgo() {
facade.resetAll();
if (algo != null) {
((VnePmMdvneAlgorithmPipelineThreeStagesA) algo).dispose();
}
}
}

View file

@ -0,0 +1,33 @@
package test.algorithms.pm.pipeline;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import algorithms.pm.VnePmMdvneAlgorithmPipelineThreeStagesB;
import model.SubstrateNetwork;
import model.VirtualNetwork;
import test.algorithms.generic.AVneAlgorithmPathBandwidthBugTest;
/**
* Test class to trigger the minimum path/link bandwidth bug.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
//@Disabled
public class VnePmMdvneAlgorithmPipelineThreeStagesBPathBandwidthBugTest extends AVneAlgorithmPathBandwidthBugTest {
@Override
public void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets) {
algo = VnePmMdvneAlgorithmPipelineThreeStagesB.prepare(sNet, vNets);
}
@AfterEach
public void resetAlgo() {
facade.resetAll();
if (algo != null) {
((VnePmMdvneAlgorithmPipelineThreeStagesB) algo).dispose();
}
}
}

View file

@ -0,0 +1,33 @@
package test.algorithms.pm.pipeline;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import algorithms.pm.VnePmMdvneAlgorithmPipelineTwoStagesRackA;
import model.SubstrateNetwork;
import model.VirtualNetwork;
import test.algorithms.generic.AVneAlgorithmPathBandwidthBugTest;
/**
* Test class to trigger the minimum path/link bandwidth bug.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
//@Disabled
public class VnePmMdvneAlgorithmPipelineTwoStagesRackAPathBandwidthBugTest extends AVneAlgorithmPathBandwidthBugTest {
@Override
public void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets) {
algo = VnePmMdvneAlgorithmPipelineTwoStagesRackA.prepare(sNet, vNets);
}
@AfterEach
public void resetAlgo() {
facade.resetAll();
if (algo != null) {
((VnePmMdvneAlgorithmPipelineTwoStagesRackA) algo).dispose();
}
}
}

View file

@ -0,0 +1,33 @@
package test.algorithms.pm.pipeline;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import algorithms.pm.VnePmMdvneAlgorithmPipelineTwoStagesRackB;
import model.SubstrateNetwork;
import model.VirtualNetwork;
import test.algorithms.generic.AVneAlgorithmPathBandwidthBugTest;
/**
* Test class to trigger the minimum path/link bandwidth bug.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
//@Disabled
public class VnePmMdvneAlgorithmPipelineTwoStagesRackBPathBandwidthBugTest extends AVneAlgorithmPathBandwidthBugTest {
@Override
public void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets) {
algo = VnePmMdvneAlgorithmPipelineTwoStagesRackB.prepare(sNet, vNets);
}
@AfterEach
public void resetAlgo() {
facade.resetAll();
if (algo != null) {
((VnePmMdvneAlgorithmPipelineTwoStagesRackB) algo).dispose();
}
}
}

View file

@ -0,0 +1,32 @@
package test.algorithms.pm.pipeline;
import java.util.Set;
import org.junit.jupiter.api.AfterEach;
import algorithms.pm.VnePmMdvneAlgorithmPipelineTwoStagesVnet;
import model.SubstrateNetwork;
import model.VirtualNetwork;
import test.algorithms.generic.AVneAlgorithmPathBandwidthBugTest;
/**
* Test class to trigger the minimum path/link bandwidth bug.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
public class VnePmMdvneAlgorithmPipelineTwoStagesVnetPathBandwidthBugTest extends AVneAlgorithmPathBandwidthBugTest {
@Override
public void initAlgo(final SubstrateNetwork sNet, final Set<VirtualNetwork> vNets) {
algo = VnePmMdvneAlgorithmPipelineTwoStagesVnet.prepare(sNet, vNets);
}
@AfterEach
public void resetAlgo() {
facade.resetAll();
if (algo != null) {
((VnePmMdvneAlgorithmPipelineTwoStagesVnet) algo).dispose();
}
}
}

View file

@ -0,0 +1,372 @@
package test.model;
import static org.junit.Assert.assertNull;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
import facade.ModelFacade;
import facade.config.ModelFacadeConfig;
import generators.OneTierNetworkGenerator;
import generators.config.OneTierConfig;
import model.Link;
import model.Node;
import model.SubstrateLink;
import model.SubstrateNetwork;
import model.SubstratePath;
import model.SubstrateServer;
import model.SubstrateSwitch;
import model.VirtualLink;
import model.VirtualServer;
import model.VirtualSwitch;
/**
* Test class for the ModelFacade that tests some embedding tasks.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
public class ModelFacadeEmbeddingGenericTest extends ModelFacadeEmbeddingTest {
@Test
public void testEmbedNetworkToNetwork() {
// No guests before embedding anything
assertTrue(((SubstrateNetwork) ModelFacade.getInstance().getNetworkById("sub")).getGuests().isEmpty());
ModelFacade.getInstance().embedGeneric("sub", "virt");
assertFalse(((SubstrateNetwork) ModelFacade.getInstance().getNetworkById("sub")).getGuests().isEmpty());
assertEquals("virt",
((SubstrateNetwork) ModelFacade.getInstance().getNetworkById("sub")).getGuests().get(0).getName());
}
@Test
public void testEmbedServerToServer() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 1, 1, 1, 0);
ModelFacade.getInstance().embedGeneric("1", "2");
assertEquals(1, ((SubstrateServer) ModelFacade.getInstance().getServerById("1")).getGuestServers().size());
assertEquals("1", ((VirtualServer) ModelFacade.getInstance().getServerById("2")).getHost().getName());
}
@Test
public void testEmbedServerToServerRejectCpu() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 2, 1, 1, 0);
assertThrows(UnsupportedOperationException.class, () -> {
ModelFacade.getInstance().embedGeneric("1", "2");
});
}
@Test
public void testEmbedServerToServerRejectMemory() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 1, 2, 1, 0);
assertThrows(UnsupportedOperationException.class, () -> {
ModelFacade.getInstance().embedGeneric("1", "2");
});
}
@Test
public void testEmbedServerToServerRejectStorage() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 1, 1, 2, 0);
assertThrows(UnsupportedOperationException.class, () -> {
ModelFacade.getInstance().embedGeneric("1", "2");
});
}
@Test
public void testEmbedSwitchToServer() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 0, 0, 0, 0);
ModelFacade.getInstance().addSwitchToNetwork("2", "virt", 0);
ModelFacade.getInstance().embedGeneric("1", "2");
assertEquals(1, ((SubstrateServer) ModelFacade.getInstance().getServerById("1")).getGuestSwitches().size());
assertEquals("1", ((VirtualSwitch) ModelFacade.getInstance().getSwitchById("2")).getHost().getName());
}
@Test
public void testEmbedSwitchtoSwitch() {
ModelFacade.getInstance().addSwitchToNetwork("1", "sub", 0);
ModelFacade.getInstance().addSwitchToNetwork("2", "virt", 0);
ModelFacade.getInstance().embedGeneric("1", "2");
assertEquals(1, ((SubstrateSwitch) ModelFacade.getInstance().getSwitchById("1")).getGuestSwitches().size());
assertEquals("1", ((VirtualSwitch) ModelFacade.getInstance().getSwitchById("2")).getHost().getName());
}
@Test
public void testEmbedLinkToServer() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 0, 0, 0, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 0, 0, 0, 0);
ModelFacade.getInstance().addServerToNetwork("3", "virt", 0, 0, 0, 0);
ModelFacade.getInstance().addLinkToNetwork("4", "virt", 0, "2", "3");
ModelFacade.getInstance().embedGeneric("1", "4");
assertEquals(1, ((SubstrateServer) ModelFacade.getInstance().getServerById("1")).getGuestLinks().size());
assertEquals("1", ((VirtualLink) ModelFacade.getInstance().getLinkById("4")).getHost().getName());
}
@Test
public void testEmbedLinkBwIgnore() {
// Set ignore bandwidth to true in ModelFacadeConfig.
ModelFacadeConfig.IGNORE_BW = true;
ModelFacade.getInstance().addServerToNetwork("srv1", "sub", 0, 0, 0, 0);
ModelFacade.getInstance().addServerToNetwork("srv2", "sub", 0, 0, 0, 0);
ModelFacade.getInstance().addLinkToNetwork("l3", "sub", 10, "srv1", "srv2");
ModelFacade.getInstance().addLinkToNetwork("l4", "sub", 10, "srv2", "srv1");
ModelFacade.getInstance().addServerToNetwork("srv5", "virt", 0, 0, 0, 0);
ModelFacade.getInstance().addServerToNetwork("srv6", "virt", 0, 0, 0, 0);
ModelFacade.getInstance().addLinkToNetwork("l7", "virt", 12, "srv5", "srv6");
ModelFacade.getInstance().addLinkToNetwork("l8", "virt", 12, "srv6", "srv5");
ModelFacade.getInstance().createAllPathsForNetwork("sub");
final String pathName = "path-srv1-srv2";
ModelFacade.getInstance().embedGeneric(pathName, "l7");
final SubstratePath subPath = ModelFacade.getInstance().getPathById(pathName);
assertEquals(1, subPath.getGuestLinks().size());
assertEquals("l7", subPath.getGuestLinks().get(0).getName());
// Reset configuration afterwards
ModelFacadeConfig.IGNORE_BW = false;
}
@Test
public void testEmbedMultipleNetworksToNetwork() {
ModelFacade.getInstance().embedNetworkToNetwork("sub", "virt");
ModelFacade.getInstance().addNetworkToRoot("virt_2", true);
ModelFacade.getInstance().embedGeneric("sub", "virt_2");
assertFalse(((SubstrateNetwork) ModelFacade.getInstance().getNetworkById("sub")).getGuests().isEmpty());
assertEquals(2, ((SubstrateNetwork) ModelFacade.getInstance().getNetworkById("sub")).getGuests().size());
assertEquals("virt",
((SubstrateNetwork) ModelFacade.getInstance().getNetworkById("sub")).getGuests().get(0).getName());
assertEquals("virt_2",
((SubstrateNetwork) ModelFacade.getInstance().getNetworkById("sub")).getGuests().get(1).getName());
}
@Test
public void testEmbedLinkToPathNormal() {
ModelFacadeConfig.IGNORE_BW = false;
ModelFacadeConfig.LINK_HOST_EMBED_PATH = false;
// Substrate network
final OneTierConfig subConfig = new OneTierConfig(2, 1, false, 1, 1, 1, 1);
final OneTierNetworkGenerator gen = new OneTierNetworkGenerator(subConfig);
gen.createNetwork("net", false);
assertFalse(ModelFacade.getInstance().getAllPathsOfNetwork("net").isEmpty());
// Virtual elements
ModelFacade.getInstance().addNetworkToRoot("v", true);
ModelFacade.getInstance().addServerToNetwork("vsrv", "v", 1, 1, 1, 1);
ModelFacade.getInstance().addSwitchToNetwork("vsw", "v", 0);
ModelFacade.getInstance().addLinkToNetwork("vl", "v", 1, "vsrv", "vsw");
final SubstratePath sp = ModelFacade.getInstance().getPathFromSourceToTarget("net_srv_0", "net_sw_0");
assertTrue(ModelFacade.getInstance().embedGeneric(sp.getName(), "vl"));
final VirtualLink guest = (VirtualLink) ModelFacade.getInstance().getLinkById("vl");
assertEquals(sp, guest.getHost());
assertEquals(guest, sp.getGuestLinks().get(0));
// Sub links must not have an embedding
sp.getLinks().forEach(l -> {
final SubstrateLink sl = l;
assertTrue(sl.getGuestLinks().isEmpty());
});
}
@Test
public void testEmbedLinkToPathAlsoSubLinks() {
ModelFacadeConfig.IGNORE_BW = false;
ModelFacadeConfig.LINK_HOST_EMBED_PATH = true;
// Substrate network
final OneTierConfig subConfig = new OneTierConfig(2, 1, false, 1, 1, 1, 1);
final OneTierNetworkGenerator gen = new OneTierNetworkGenerator(subConfig);
gen.createNetwork("net", false);
assertFalse(ModelFacade.getInstance().getAllPathsOfNetwork("net").isEmpty());
// Virtual elements
ModelFacade.getInstance().addNetworkToRoot("v", true);
ModelFacade.getInstance().addServerToNetwork("vsrv", "v", 1, 1, 1, 1);
ModelFacade.getInstance().addSwitchToNetwork("vsw", "v", 0);
ModelFacade.getInstance().addLinkToNetwork("vl", "v", 1, "vsrv", "vsw");
final SubstratePath sp = ModelFacade.getInstance().getPathFromSourceToTarget("net_srv_0", "net_sw_0");
assertTrue(ModelFacade.getInstance().embedGeneric(sp.getName(), "vl"));
// Sub links must have an embedding
sp.getLinks().forEach(l -> {
final SubstrateLink sl = l;
assertFalse(sl.getGuestLinks().isEmpty());
assertEquals(1, sl.getGuestLinks().size());
});
}
@Test
public void testEmbedLinkToPathIgnoreBw() {
// Set ignore bandwidth to true in ModelFacadeConfig.
ModelFacadeConfig.IGNORE_BW = true;
ModelFacadeConfig.LINK_HOST_EMBED_PATH = false;
// Substrate network
final OneTierConfig subConfig = new OneTierConfig(2, 1, false, 1, 1, 1, 1);
final OneTierNetworkGenerator gen = new OneTierNetworkGenerator(subConfig);
gen.createNetwork("net", false);
assertFalse(ModelFacade.getInstance().getAllPathsOfNetwork("net").isEmpty());
// Virtual elements
ModelFacade.getInstance().addNetworkToRoot("v", true);
ModelFacade.getInstance().addServerToNetwork("vsrv", "v", 1, 1, 1, 1);
ModelFacade.getInstance().addSwitchToNetwork("vsw", "v", 0);
ModelFacade.getInstance().addLinkToNetwork("vl", "v", 10, "vsrv", "vsw");
final SubstratePath sp = ModelFacade.getInstance().getPathFromSourceToTarget("net_srv_0", "net_sw_0");
assertTrue(ModelFacade.getInstance().embedGeneric(sp.getName(), "vl"));
final VirtualLink guest = (VirtualLink) ModelFacade.getInstance().getLinkById("vl");
assertEquals(sp, guest.getHost());
assertEquals(guest, sp.getGuestLinks().get(0));
}
@Test
public void testRemoveNetworkEmbedding() {
ModelFacadeConfig.LINK_HOST_EMBED_PATH = false;
// Substrate network
final OneTierConfig subConfig = new OneTierConfig(2, 1, false, 5, 5, 5, 10);
final OneTierNetworkGenerator gen = new OneTierNetworkGenerator(subConfig);
gen.createNetwork("net", false);
assertFalse(ModelFacade.getInstance().getAllPathsOfNetwork("net").isEmpty());
// Virtual elements
ModelFacade.getInstance().addNetworkToRoot("v", true);
ModelFacade.getInstance().addServerToNetwork("vsrv1", "v", 1, 1, 1, 1);
ModelFacade.getInstance().addServerToNetwork("vsrv2", "v", 1, 1, 1, 1);
ModelFacade.getInstance().addSwitchToNetwork("vsw", "v", 0);
ModelFacade.getInstance().addLinkToNetwork("vl1", "v", 1, "vsrv1", "vsw");
ModelFacade.getInstance().addLinkToNetwork("vl2", "v", 1, "vsw", "vsrv1");
ModelFacade.getInstance().addLinkToNetwork("vl3", "v", 1, "vsrv2", "vsw");
ModelFacade.getInstance().addLinkToNetwork("vl4", "v", 1, "vsw", "vsrv2");
ModelFacade.getInstance().embedGeneric("net", "v");
ModelFacade.getInstance().embedGeneric("net_sw_0", "vsw");
ModelFacade.getInstance().embedGeneric("net_srv_0", "vsrv1");
ModelFacade.getInstance().embedGeneric("net_srv_1", "vsrv2");
final SubstratePath path1 = ModelFacade.getInstance().getPathFromSourceToTarget("net_srv_0", "net_sw_0");
final SubstratePath path2 = ModelFacade.getInstance().getPathFromSourceToTarget("net_sw_0", "net_srv_0");
final SubstratePath path3 = ModelFacade.getInstance().getPathFromSourceToTarget("net_srv_1", "net_sw_0");
final SubstratePath path4 = ModelFacade.getInstance().getPathFromSourceToTarget("net_sw_0", "net_srv_1");
ModelFacade.getInstance().embedGeneric(path1.getName(), "vl1");
ModelFacade.getInstance().embedGeneric(path2.getName(), "vl2");
ModelFacade.getInstance().embedGeneric(path3.getName(), "vl3");
ModelFacade.getInstance().embedGeneric(path4.getName(), "vl4");
// Remove embedding
ModelFacade.getInstance().removeNetworkEmbedding("v");
// Check all virtual elements
for (final Node n : ModelFacade.getInstance().getAllServersOfNetwork("v")) {
final VirtualServer vsrv = (VirtualServer) n;
assertNull(vsrv.getHost());
}
for (final Node n : ModelFacade.getInstance().getAllSwitchesOfNetwork("v")) {
final VirtualSwitch vsw = (VirtualSwitch) n;
assertNull(vsw.getHost());
}
for (final Link l : ModelFacade.getInstance().getAllLinksOfNetwork("v")) {
final VirtualLink vl = (VirtualLink) l;
assertNull(vl.getHost());
}
// Check all substrate elements
for (final Node n : ModelFacade.getInstance().getAllServersOfNetwork("net")) {
final SubstrateServer ssrv = (SubstrateServer) n;
assertTrue(ssrv.getGuestServers().isEmpty());
assertEquals(ssrv.getCpu(), ssrv.getResidualCpu());
assertEquals(ssrv.getMemory(), ssrv.getResidualMemory());
assertEquals(ssrv.getStorage(), ssrv.getResidualStorage());
}
for (final Node n : ModelFacade.getInstance().getAllSwitchesOfNetwork("net")) {
final SubstrateSwitch ssw = (SubstrateSwitch) n;
assertTrue(ssw.getGuestSwitches().isEmpty());
}
for (final Link l : ModelFacade.getInstance().getAllLinksOfNetwork("net")) {
final SubstrateLink sl = (SubstrateLink) l;
assertTrue(sl.getGuestLinks().isEmpty());
assertEquals(sl.getBandwidth(), sl.getResidualBandwidth());
}
for (final SubstratePath p : ModelFacade.getInstance().getAllPathsOfNetwork("net")) {
final SubstratePath sp = p;
assertTrue(sp.getGuestLinks().isEmpty());
assertEquals(sp.getBandwidth(), sp.getResidualBandwidth());
}
}
/*
* Negative tests.
*/
@Test
public void testEmbedLinkToPathRejectBw() {
ModelFacadeConfig.IGNORE_BW = false;
// Substrate network
final OneTierConfig subConfig = new OneTierConfig(2, 1, false, 1, 1, 1, 1);
final OneTierNetworkGenerator gen = new OneTierNetworkGenerator(subConfig);
gen.createNetwork("net", false);
assertFalse(ModelFacade.getInstance().getAllPathsOfNetwork("net").isEmpty());
// Virtual elements
ModelFacade.getInstance().addNetworkToRoot("v", true);
ModelFacade.getInstance().addServerToNetwork("vsrv", "v", 1, 1, 1, 1);
ModelFacade.getInstance().addSwitchToNetwork("vsw", "v", 0);
ModelFacade.getInstance().addLinkToNetwork("vl", "v", 10, "vsrv", "vsw");
final SubstratePath sp = ModelFacade.getInstance().getPathFromSourceToTarget("net_srv_0", "net_sw_0");
assertThrows(UnsupportedOperationException.class, () -> {
ModelFacade.getInstance().embedGeneric(sp.getName(), "vl");
});
}
@Test
public void testEmbedNetworkToNetworkVirtNotExist() {
assertThrows(IllegalArgumentException.class, () -> {
ModelFacade.getInstance().embedGeneric("sub", "aaa");
});
}
@Test
public void testEmbedNetworkToNetworkSubNotExist() {
assertThrows(IllegalArgumentException.class, () -> {
ModelFacade.getInstance().embedGeneric("aaa", "virt");
});
}
@Test
public void testEmbedNetworkToNetworkAlreadyEmbedded() {
ModelFacade.getInstance().embedNetworkToNetwork("sub", "virt");
assertThrows(IllegalArgumentException.class, () -> {
ModelFacade.getInstance().embedGeneric("sub", "virt");
});
}
}

View file

@ -0,0 +1,227 @@
package test.model;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import facade.ModelFacade;
import facade.config.ModelFacadeConfig;
import generators.OneTierNetworkGenerator;
import generators.config.OneTierConfig;
import model.SubstrateNetwork;
import model.SubstratePath;
/**
* Test class for the ModelFacade that tests some embedding tasks.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
public class ModelFacadeIsEmbeddingPossibleGenericTest extends ModelFacadeEmbeddingTest {
@Test
public void testEmbedNetworkToNetwork() {
// No guests before embedding anything
assertTrue(((SubstrateNetwork) ModelFacade.getInstance().getNetworkById("sub")).getGuests().isEmpty());
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric("sub", "virt", false));
}
@Test
public void testEmbedServerToServer() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 1, 1, 1, 0);
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric("1", "2", false));
}
@Test
public void testEmbedServerToServerCpuIgnore() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 2, 1, 1, 0);
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric("1", "2", true));
}
@Test
public void testEmbedServerToServerMemoryIgnore() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 1, 2, 1, 0);
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric("1", "2", true));
}
@Test
public void testEmbedServerToServerStorageIgnore() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 1, 1, 2, 0);
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric("1", "2", true));
}
@Test
public void testEmbedSwitchToServer() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 0, 0, 0, 0);
ModelFacade.getInstance().addSwitchToNetwork("2", "virt", 0);
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric("1", "2", false));
}
@Test
public void testEmbedSwitchtoSwitch() {
ModelFacade.getInstance().addSwitchToNetwork("1", "sub", 0);
ModelFacade.getInstance().addSwitchToNetwork("2", "virt", 0);
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric("1", "2", false));
}
@Test
public void testEmbedLinkToServer() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 0, 0, 0, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 0, 0, 0, 0);
ModelFacade.getInstance().addServerToNetwork("3", "virt", 0, 0, 0, 0);
ModelFacade.getInstance().addLinkToNetwork("4", "virt", 0, "2", "3");
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric("1", "2", false));
}
@Test
public void testEmbedLinkBwIgnore() {
ModelFacade.getInstance().addServerToNetwork("srv1", "sub", 0, 0, 0, 0);
ModelFacade.getInstance().addServerToNetwork("srv2", "sub", 0, 0, 0, 0);
ModelFacade.getInstance().addLinkToNetwork("l3", "sub", 10, "srv1", "srv2");
ModelFacade.getInstance().addLinkToNetwork("l4", "sub", 10, "srv2", "srv1");
ModelFacade.getInstance().addServerToNetwork("srv5", "virt", 0, 0, 0, 0);
ModelFacade.getInstance().addServerToNetwork("srv6", "virt", 0, 0, 0, 0);
ModelFacade.getInstance().addLinkToNetwork("l7", "virt", 12, "srv5", "srv6");
ModelFacade.getInstance().addLinkToNetwork("l8", "virt", 12, "srv6", "srv5");
ModelFacade.getInstance().createAllPathsForNetwork("sub");
final String pathName = "path-srv1-srv2";
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric(pathName, "l7", true));
}
@Test
public void testEmbedMultipleNetworksToNetwork() {
ModelFacade.getInstance().embedNetworkToNetwork("sub", "virt");
ModelFacade.getInstance().addNetworkToRoot("virt_2", true);
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric("sub", "virt_2", false));
}
@Test
public void testEmbedLinkToPathNormal() {
// Substrate network
final OneTierConfig subConfig = new OneTierConfig(2, 1, false, 1, 1, 1, 1);
final OneTierNetworkGenerator gen = new OneTierNetworkGenerator(subConfig);
gen.createNetwork("net", false);
assertFalse(ModelFacade.getInstance().getAllPathsOfNetwork("net").isEmpty());
// Virtual elements
ModelFacade.getInstance().addNetworkToRoot("v", true);
ModelFacade.getInstance().addServerToNetwork("vsrv", "v", 1, 1, 1, 1);
ModelFacade.getInstance().addSwitchToNetwork("vsw", "v", 0);
ModelFacade.getInstance().addLinkToNetwork("vl", "v", 1, "vsrv", "vsw");
final SubstratePath sp = ModelFacade.getInstance().getPathFromSourceToTarget("net_srv_0", "net_sw_0");
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric(sp.getName(), "vl", false));
}
@Test
public void testEmbedLinkToPathIgnoreBw() {
// Set ignore bandwidth to true in ModelFacadeConfig.
ModelFacadeConfig.IGNORE_BW = true;
ModelFacadeConfig.LINK_HOST_EMBED_PATH = false;
// Substrate network
final OneTierConfig subConfig = new OneTierConfig(2, 1, false, 1, 1, 1, 1);
final OneTierNetworkGenerator gen = new OneTierNetworkGenerator(subConfig);
gen.createNetwork("net", false);
assertFalse(ModelFacade.getInstance().getAllPathsOfNetwork("net").isEmpty());
// Virtual elements
ModelFacade.getInstance().addNetworkToRoot("v", true);
ModelFacade.getInstance().addServerToNetwork("vsrv", "v", 1, 1, 1, 1);
ModelFacade.getInstance().addSwitchToNetwork("vsw", "v", 0);
ModelFacade.getInstance().addLinkToNetwork("vl", "v", 10, "vsrv", "vsw");
final SubstratePath sp = ModelFacade.getInstance().getPathFromSourceToTarget("net_srv_0", "net_sw_0");
assertTrue(ModelFacade.getInstance().isEmbeddingPossibleGeneric(sp.getName(), "vl", true));
}
/*
* Negative tests.
*/
@Test
public void testEmbedServerToServerRejectCpu() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 2, 1, 1, 0);
assertFalse(ModelFacade.getInstance().isEmbeddingPossibleGeneric("1", "2", false));
}
@Test
public void testEmbedServerToServerRejectMemory() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 1, 2, 1, 0);
assertFalse(ModelFacade.getInstance().isEmbeddingPossibleGeneric("1", "2", false));
}
@Test
public void testEmbedServerToServerRejectStorage() {
ModelFacade.getInstance().addServerToNetwork("1", "sub", 1, 1, 1, 0);
ModelFacade.getInstance().addServerToNetwork("2", "virt", 1, 1, 2, 0);
assertFalse(ModelFacade.getInstance().isEmbeddingPossibleGeneric("1", "2", false));
}
@Test
public void testEmbedLinkToPathRejectBw() {
// Substrate network
final OneTierConfig subConfig = new OneTierConfig(2, 1, false, 1, 1, 1, 1);
final OneTierNetworkGenerator gen = new OneTierNetworkGenerator(subConfig);
gen.createNetwork("net", false);
assertFalse(ModelFacade.getInstance().getAllPathsOfNetwork("net").isEmpty());
// Virtual elements
ModelFacade.getInstance().addNetworkToRoot("v", true);
ModelFacade.getInstance().addServerToNetwork("vsrv", "v", 1, 1, 1, 1);
ModelFacade.getInstance().addSwitchToNetwork("vsw", "v", 0);
ModelFacade.getInstance().addLinkToNetwork("vl", "v", 10, "vsrv", "vsw");
final SubstratePath sp = ModelFacade.getInstance().getPathFromSourceToTarget("net_srv_0", "net_sw_0");
assertFalse(ModelFacade.getInstance().isEmbeddingPossibleGeneric(sp.getName(), "vl", false));
}
@Test
public void testEmbedNetworkToNetworkVirtNotExist() {
assertThrows(IllegalArgumentException.class, () -> {
ModelFacade.getInstance().isEmbeddingPossibleGeneric("sub", "aaa", false);
});
}
@Test
public void testEmbedNetworkToNetworkSubNotExist() {
assertThrows(IllegalArgumentException.class, () -> {
ModelFacade.getInstance().isEmbeddingPossibleGeneric("aaa", "virt", false);
});
}
@Disabled
@Test
public void testEmbedNetworkToNetworkAlreadyEmbedded() {
ModelFacade.getInstance().embedNetworkToNetwork("sub", "virt");
assertFalse(ModelFacade.getInstance().isEmbeddingPossibleGeneric("sub", "virt", false));
}
}

View file

@ -0,0 +1,143 @@
package test.model;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import facade.ModelFacade;
import model.SubstrateNode;
import model.SubstratePath;
/**
* Test class for the ModelFacade that tests the correct loading mechanism of
* the ModelFacade.
*
* @author Maximilian Kratz {@literal <maximilian.kratz@es.tu-darmstadt.de>}
*/
public class ModelFacadePathLoadTest {
private final String referenceModelFile = "resources/pathLoadModel.xmi";
@BeforeEach
public void resetModel() {
ModelFacade.getInstance().resetAll();
}
@Test
public void testGetAllPathsFromFile() {
// Pre-test: no paths present
assertThrows(IndexOutOfBoundsException.class, () -> {
ModelFacade.getInstance().getAllPathsOfNetwork("net");
});
// Load the model file
ModelFacade.getInstance().loadModel(referenceModelFile);
final List<SubstratePath> allPaths = ModelFacade.getInstance().getAllPathsOfNetwork("net");
// Check total number of paths
assertFalse(allPaths.isEmpty());
assertEquals(6, allPaths.size());
// Check individual source and targets
final Set<Tuple<String, String>> mapping = new HashSet<>();
mapping.add(new Tuple<>("srv1", "sw"));
mapping.add(new Tuple<>("sw", "srv1"));
mapping.add(new Tuple<>("srv2", "sw"));
mapping.add(new Tuple<>("sw", "srv2"));
mapping.add(new Tuple<>("srv1", "srv2"));
mapping.add(new Tuple<>("srv2", "srv1"));
ModelFacadePathBasicTest.checkPathSourcesAndTargets(mapping, allPaths);
}
@Test
public void testGetPathByIdFromFile() {
// Pre-test: no paths present
assertNull(ModelFacade.getInstance().getPathById("path-srv1-sw-srv2"));
assertNull(ModelFacade.getInstance().getPathById("path-srv2-sw-srv1"));
assertNull(ModelFacade.getInstance().getPathById("path-srv1-sw"));
assertNull(ModelFacade.getInstance().getPathById("path-sw-srv1"));
assertNull(ModelFacade.getInstance().getPathById("path-srv2-sw"));
assertNull(ModelFacade.getInstance().getPathById("path-sw-srv2"));
// Load the model file
ModelFacade.getInstance().loadModel(referenceModelFile);
assertNotNull(ModelFacade.getInstance().getPathById("path-srv1-sw-srv2"));
assertNotNull(ModelFacade.getInstance().getPathById("path-srv2-sw-srv1"));
assertNotNull(ModelFacade.getInstance().getPathById("path-srv1-sw"));
assertNotNull(ModelFacade.getInstance().getPathById("path-sw-srv1"));
assertNotNull(ModelFacade.getInstance().getPathById("path-srv2-sw"));
assertNotNull(ModelFacade.getInstance().getPathById("path-sw-srv2"));
}
@Test
public void testGetPathFromSourceToTargetNodeFromFile() {
// Load the model file
ModelFacade.getInstance().loadModel(referenceModelFile);
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget(getNode("srv1"), getNode("srv2")));
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget(getNode("srv2"), getNode("srv1")));
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget(getNode("srv1"), getNode("sw")));
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget(getNode("sw"), getNode("srv1")));
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget(getNode("srv2"), getNode("sw")));
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget(getNode("sw"), getNode("srv2")));
}
@Test
public void testGetPathFromSourceToTargetIdFromFile() {
// Load the model file
ModelFacade.getInstance().loadModel(referenceModelFile);
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget("srv1", "srv2"));
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget("srv2", "srv1"));
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget("srv1", "sw"));
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget("sw", "srv1"));
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget("srv2", "sw"));
assertNotNull(ModelFacade.getInstance().getPathFromSourceToTarget("sw", "srv2"));
}
@Test
public void testGetPathsFromSourceToTargetNodeFromFile() {
// Load the model file
ModelFacade.getInstance().loadModel(referenceModelFile);
assertNotNull(ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("srv1"), getNode("srv2")));
assertEquals(1, ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("srv1"), getNode("srv2")).size());
assertNotNull(ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("srv2"), getNode("srv1")));
assertEquals(1, ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("srv2"), getNode("srv1")).size());
assertNotNull(ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("srv1"), getNode("sw")));
assertEquals(1, ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("srv1"), getNode("sw")).size());
assertNotNull(ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("sw"), getNode("srv1")));
assertEquals(1, ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("sw"), getNode("srv1")).size());
assertNotNull(ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("srv2"), getNode("sw")));
assertEquals(1, ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("srv2"), getNode("sw")).size());
assertNotNull(ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("sw"), getNode("srv2")));
assertEquals(1, ModelFacade.getInstance().getPathsFromSourceToTarget(getNode("sw"), getNode("srv2")).size());
}
/**
* Utility method(s).
*/
private SubstrateNode getNode(final String id) {
return (SubstrateNode) ModelFacade.getInstance().getNodeById(id);
}
}

View file

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -1,6 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: vne.algorithms
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-SymbolicName: vne.algorithms; singleton:=true
Bundle-Version: 0.0.3.qualifier
Require-Bundle: org.eclipse.emf.ecore,

View file

@ -43,9 +43,13 @@ public class VneGipsAlgorithm extends AbstractAlgorithm {
"The VNE GIPS algorithm can only be used with the total communication cost C.");
}
// TODO: Time measurement
// TODO: Time measurement
final ResourceSet model = ModelFacade.getInstance().getResourceSet();
final boolean gipsSuccess = MdvneGipsIflyeAdapter.execute(model);
// Workaround to fix the residual bandwidth of other paths possibly affected by
// virtual link to substrate path embeddings
ModelFacade.getInstance().updateAllPathsResidualBandwidth(sNet.getName());
return gipsSuccess;
}

View file

@ -1,11 +1,9 @@
package algorithms.gips;
import java.io.File;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.emoflon.gips.gipsl.examples.mdvne.MdvneGipsIflyeAdapter;
import org.emoflon.gips.gipsl.examples.mdvne.migration.MdvneMigrationGipsIflyeAdapter;
import algorithms.AbstractAlgorithm;
@ -57,8 +55,16 @@ public class VneGipsMigrationAlgorithm extends AbstractAlgorithm {
}
}
// Sanity check
ModelFacade.getInstance().validateModel();
ModelFacade.getInstance().updateAllPathsResidualBandwidth(sNet.getName());
final ResourceSet model = ModelFacade.getInstance().getResourceSet();
final boolean gipsSuccess = MdvneGipsIflyeAdapter.execute(model);
final boolean gipsSuccess = MdvneMigrationGipsIflyeAdapter.execute(model);
// Workaround to fix the residual bandwidth of other paths possibly affected by
// virtual link to substrate path embeddings
ModelFacade.getInstance().updateAllPathsResidualBandwidth(sNet.getName());
return gipsSuccess;
}
@ -92,7 +98,7 @@ public class VneGipsMigrationAlgorithm extends AbstractAlgorithm {
* Resets the algorithm instance.
*/
public void dispose() {
MdvneGipsIflyeAdapter.resetInit();
MdvneMigrationGipsIflyeAdapter.resetInit();
if (instance == null) {
return;
}

View file

@ -4,7 +4,7 @@ import java.util.HashSet;
import java.util.Set;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.emoflon.gips.gipsl.examples.mdvne.seq.MdvneGipsIflyeAdapter;
import org.emoflon.gips.gipsl.examples.mdvne.seq.MdvneSeqGipsIflyeAdapter;
import algorithms.AbstractAlgorithm;
import algorithms.AlgorithmConfig;
@ -43,9 +43,13 @@ public class VneGipsSeqAlgorithm extends AbstractAlgorithm {
"The VNE GIPS algorithm can only be used with the total communication cost C.");
}
// TODO: Time measurement
// TODO: Time measurement
final ResourceSet model = ModelFacade.getInstance().getResourceSet();
final boolean gipsSuccess = MdvneGipsIflyeAdapter.execute(model);
final boolean gipsSuccess = MdvneSeqGipsIflyeAdapter.execute(model);
// Workaround to fix the residual bandwidth of other paths possibly affected by
// virtual link to substrate path embeddings
ModelFacade.getInstance().updateAllPathsResidualBandwidth(sNet.getName());
return gipsSuccess;
}
@ -79,7 +83,7 @@ public class VneGipsSeqAlgorithm extends AbstractAlgorithm {
* Resets the algorithm instance.
*/
public void dispose() {
MdvneGipsIflyeAdapter.resetInit();
MdvneSeqGipsIflyeAdapter.resetInit();
if (instance == null) {
return;
}

View file

@ -679,6 +679,10 @@ public class VnePmMdvneAlgorithm extends AbstractAlgorithm {
}
}
// Workaround to fix the residual bandwidth of other paths possibly affected by
// virtual link to substrate path embeddings
facade.updateAllPathsResidualBandwidth(sNet.getName());
return rejectedNetworks;
}

View file

@ -205,6 +205,10 @@ public class VnePmMdvneAlgorithmPipelineStageRackA extends VnePmMdvneAlgorithm {
}
}
// Workaround to fix the residual bandwidth of other paths possibly affected by
// virtual link to substrate path embeddings
facade.updateAllPathsResidualBandwidth(sNet.getName());
return rejectedNetworks;
}

View file

@ -205,6 +205,10 @@ public class VnePmMdvneAlgorithmPipelineStageRackB extends VnePmMdvneAlgorithm {
}
}
// Workaround to fix the residual bandwidth of other paths possibly affected by
// virtual link to substrate path embeddings
facade.updateAllPathsResidualBandwidth(sNet.getName());
return rejectedNetworks;
}

View file

@ -305,6 +305,10 @@ public class VnePmMdvneAlgorithmPipelineStageVnet extends VnePmMdvneAlgorithm {
}
}
// Workaround to fix the residual bandwidth of other paths possibly affected by
// virtual link to substrate path embeddings
facade.updateAllPathsResidualBandwidth(sNet.getName());
return rejectedNetworks;
}

View file

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="lib/commons-cli/commons-cli-1.5.0.jar"/>
<classpathentry kind="lib" path="lib/commons-cli/commons-cli-1.5.0-javadoc.jar"/>
<classpathentry kind="lib" path="lib/commons-cli/commons-cli-1.5.0-sources.jar"/>
<classpathentry kind="lib" path="lib/commons-csv/commons-csv-1.9.0.jar"/>
<classpathentry kind="lib" path="lib/commons-csv/commons-csv-1.9.0-sources.jar"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="lib/commons-cli/commons-cli-1.5.0.jar"/>
<classpathentry kind="lib" path="lib/commons-cli/commons-cli-1.5.0-javadoc.jar"/>
<classpathentry kind="lib" path="lib/commons-cli/commons-cli-1.5.0-sources.jar"/>
<classpathentry kind="lib" path="lib/commons-csv/commons-csv-1.9.0.jar"/>
<classpathentry kind="lib" path="lib/commons-csv/commons-csv-1.9.0-sources.jar"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View file

@ -10,7 +10,7 @@ Bundle-ClassPath: scenarios.jar,
lib/commons-csv/commons-csv-1.9.0.jar,
lib/commons-csv/commons-csv-1.9.0-sources.jar
Automatic-Module-Name: vne.scenarios
Bundle-RequiredExecutionEnvironment: JavaSE-16
Bundle-RequiredExecutionEnvironment: JavaSE-17
Export-Package: org.apache.commons.cli,
org.apache.commons.csv,
scenario.util,