Users can set limiters for switches (elements whose level > 0) in Fat-Tree.
Coordinates in Fat-tree are now characterized by: <level, id>, level 0
elements are the leaves (processing nodes).
Uniform limiter behavior in routes: src, destination and middle nodes.
Changes in tests:
1) cluster-multicpu: adjust timing due to new limiters.
2) flatifier tests must be adapted for these reasons:
- Changed callback to create limiters from XML. Radicals in XML are valid for leaves in the tree. Use internal ID instead.
- Changed order of links in the route from get_local_route of Fat-trees.
* @param id Internal identifier in the torus (for information)
* @return Limiter link
*/
-static sg4::Link* create_limiter(sg4::NetZone* zone, const std::vector<unsigned int>& /*coord*/, int id)
+static sg4::Link* create_limiter(sg4::NetZone* zone, const std::vector<unsigned int>& coord, int id)
{
return zone->create_link("limiter-" + std::to_string(id), 1e9)->seal();
}
*
*
* S3 S4 <-- Level 1 routers
- * / \ / \
- * / /\ \
- * link: 10GBps --> | / \ |
- * (full-duplex) | / \ |
+ * link:limiter - / \ / \
+ * + ++ +
+ * link: 10GBps --> | / \ |
+ * (full-duplex) | / \ |
+ * + + + +
+ * | / \ |
* S1 S2 <-- Level 2 routers
- * link:10GBps --> / | \ / | \
+ * link:limiter -> | |
+ * + +
+ * link:10GBps --> /|\ /|\
+ * / | \ / | \
* + + + + + +
* link:limiter -> / | \ / | \
* A B C D E F <-- Nodes
* 2) link: 10Gbs link connecting the components (created automatically)
*
* For example, a communication from A to C goes through:
- * <tt> A->limiter(A)->link(A-S1)->link(S1-C)->->limiter(C)->C</tt>
+ * <tt> A->limiter(A)->link(A-S1)->limiter(S1)->link(S1-C)->->limiter(C)->C</tt>
*
* More precisely, considering that A and C are StarZones, a
* communication from A-CPU-3 to C-CPU-7 goes through:
* 1) StarZone A: A-CPU-3 -> link-up-A-CPU-3 -> A-CPU-0
- * 2) A-CPU-0->limiter(A)->link(A-S1)->link(S1-C)->limiter(C)->C-CPU-0
+ * 2) A-CPU-0->limiter(A)->link(A-S1)->limiter(S1)->link(S1-C)->limiter(C)->C-CPU-0
* 3) StarZone C: C-CPU-0-> link-down-C-CPU-7 -> C-CPU-7
*
- * Note that limiters are only valid for leaves, not routers.
- *
* More details in: <a href="https://simgrid.org/doc/latest/Platform_examples.html#fat-tree-cluster">Fat-Tree
* Cluster</a>
*/
> [host0-cpu2:receiver-host0-cpu2:(4) 0.000083] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
> [host0-cpu1:receiver-host0-cpu1:(3) 0.000083] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
> [host0-cpu0:receiver-host0-cpu0:(2) 0.000083] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host1-cpu0:receiver-host1-cpu0:(10) 0.033296] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host1-cpu7:receiver-host1-cpu7:(17) 0.033504] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host1-cpu6:receiver-host1-cpu6:(16) 0.033504] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host1-cpu5:receiver-host1-cpu5:(15) 0.033504] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host1-cpu4:receiver-host1-cpu4:(14) 0.033504] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host1-cpu3:receiver-host1-cpu3:(13) 0.033504] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host1-cpu2:receiver-host1-cpu2:(12) 0.033504] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host1-cpu1:receiver-host1-cpu1:(11) 0.033504] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host5-cpu0:receiver-host5-cpu0:(42) 0.043420] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host4-cpu0:receiver-host4-cpu0:(34) 0.043420] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host3-cpu0:receiver-host3-cpu0:(26) 0.043420] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
-> [host2-cpu0:receiver-host2-cpu0:(18) 0.043420] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host1-cpu0:receiver-host1-cpu0:(10) 0.027921] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host1-cpu7:receiver-host1-cpu7:(17) 0.028052] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host1-cpu6:receiver-host1-cpu6:(16) 0.028052] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host1-cpu5:receiver-host1-cpu5:(15) 0.028052] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host1-cpu4:receiver-host1-cpu4:(14) 0.028052] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host1-cpu3:receiver-host1-cpu3:(13) 0.028052] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host1-cpu2:receiver-host1-cpu2:(12) 0.028052] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host1-cpu1:receiver-host1-cpu1:(11) 0.028052] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host5-cpu0:receiver-host5-cpu0:(42) 0.043476] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host4-cpu0:receiver-host4-cpu0:(34) 0.043476] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host3-cpu0:receiver-host3-cpu0:(26) 0.043476] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
+> [host2-cpu0:receiver-host2-cpu0:(18) 0.043476] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
> [host5-cpu7:receiver-host5-cpu7:(49) 0.043559] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
> [host5-cpu6:receiver-host5-cpu6:(48) 0.043559] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
> [host5-cpu5:receiver-host5-cpu5:(47) 0.043559] [s4u_torus_multicpu/INFO] I got a 'Hello, I'm alive and running on host0-cpu0'.
void add_link(FatTreeNode* parent, unsigned int parent_port, FatTreeNode* child, unsigned int child_port);
int get_level_position(const unsigned int level);
+ void generate_switches(const s4u::ClusterCallbacks& set_callbacks);
void generate_labels();
- void generate_switches();
int connect_node_to_parents(FatTreeNode* node);
bool are_related(FatTreeNode* parent, FatTreeNode* child) const;
bool is_in_sub_tree(FatTreeNode* root, FatTreeNode* node) const;
void set_topology(unsigned int n_levels, const std::vector<unsigned int>& down_links,
const std::vector<unsigned int>& up_links, const std::vector<unsigned int>& link_count);
void add_processing_node(int id, resource::LinkImpl* limiter, resource::LinkImpl* loopback);
+ /**
+ * @brief Build upper levels (switchs) in Fat-Tree
+ *
+ * Suppose that set_topology and add_processing_node have already been called
+ */
+ void build_upper_levels(const s4u::ClusterCallbacks& set_callbacks);
void generate_dot_file(const std::string& filename = "fat_tree.dot") const;
};
} // namespace routing
int k = this->num_parents_per_node_[currentNode->level];
d = d % k;
+
+ if (currentNode->limiter_link_)
+ into->link_list_.push_back(currentNode->limiter_link_);
+
into->link_list_.push_back(currentNode->parents[d]->up_link_);
if (latency)
*latency += currentNode->parents[d]->up_link_->get_latency();
- if (currentNode->limiter_link_)
- into->link_list_.push_back(currentNode->limiter_link_);
currentNode = currentNode->parents[d]->up_node_;
}
while (currentNode != destination) {
for (unsigned int i = 0; i < currentNode->children.size(); i++) {
if (i % this->num_children_per_node_[currentNode->level - 1] == destination->label[currentNode->level - 1]) {
+
into->link_list_.push_back(currentNode->children[i]->down_link_);
+
+ if (currentNode->limiter_link_)
+ into->link_list_.push_back(currentNode->limiter_link_);
+
if (latency)
*latency += currentNode->children[i]->down_link_->get_latency();
currentNode = currentNode->children[i]->down_node_;
- if (currentNode->limiter_link_)
- into->link_list_.push_back(currentNode->limiter_link_);
XBT_DEBUG("%d(%u,%u) is accessible through %d(%u,%u)", destination->id, destination->level,
destination->position, currentNode->id, currentNode->level, currentNode->position);
}
}
}
+ if (currentNode->limiter_link_) { // limiter for receiver/destination
+ into->link_list_.push_back(currentNode->limiter_link_);
+ }
// set gateways (if any)
into->gw_src_ = get_gateway(src->id());
into->gw_dst_ = get_gateway(dst->id());
}
-/* This function makes the assumption that parse_specific_arguments() and
- * addNodes() have already been called
- */
+void FatTreeZone::build_upper_levels(const s4u::ClusterCallbacks& set_callbacks)
+{
+ generate_switches(set_callbacks);
+ generate_labels();
+
+ unsigned int k = 0;
+ // Nodes are totally ordered, by level and then by position, in this->nodes
+ for (unsigned int i = 0; i < levels_; i++) {
+ for (unsigned int j = 0; j < nodes_by_level_[i]; j++) {
+ connect_node_to_parents(nodes_[k]);
+ k++;
+ }
+ }
+}
+
void FatTreeZone::do_seal()
{
if (this->levels_ == 0) {
return;
}
- this->generate_switches();
-
- if (XBT_LOG_ISENABLED(surf_route_fat_tree, xbt_log_priority_debug)) {
- std::stringstream msgBuffer;
+ if (not XBT_LOG_ISENABLED(surf_route_fat_tree, xbt_log_priority_debug)) {
+ return;
+ }
- msgBuffer << "We are creating a fat tree of " << this->levels_ << " levels "
- << "with " << this->nodes_by_level_[0] << " processing nodes";
- for (unsigned int i = 1; i <= this->levels_; i++) {
- msgBuffer << ", " << this->nodes_by_level_[i] << " switches at level " << i;
- }
- XBT_DEBUG("%s", msgBuffer.str().c_str());
- msgBuffer.str("");
- msgBuffer << "Nodes are : ";
+ /* for debugging purpose only, Fat-Tree is already build when seal is called */
+ std::stringstream msgBuffer;
- for (FatTreeNode const* node : this->nodes_) {
- msgBuffer << node->id << "(" << node->level << "," << node->position << ") ";
- }
- XBT_DEBUG("%s", msgBuffer.str().c_str());
+ msgBuffer << "We are creating a fat tree of " << this->levels_ << " levels "
+ << "with " << this->nodes_by_level_[0] << " processing nodes";
+ for (unsigned int i = 1; i <= this->levels_; i++) {
+ msgBuffer << ", " << this->nodes_by_level_[i] << " switches at level " << i;
}
+ XBT_DEBUG("%s", msgBuffer.str().c_str());
+ msgBuffer.str("");
+ msgBuffer << "Nodes are : ";
- this->generate_labels();
-
- unsigned int k = 0;
- // Nodes are totally ordered, by level and then by position, in this->nodes
- for (unsigned int i = 0; i < this->levels_; i++) {
- for (unsigned int j = 0; j < this->nodes_by_level_[i]; j++) {
- this->connect_node_to_parents(this->nodes_[k]);
- k++;
- }
+ for (FatTreeNode const* node : this->nodes_) {
+ msgBuffer << node->id << "(" << node->level << "," << node->position << ") ";
}
+ XBT_DEBUG("%s", msgBuffer.str().c_str());
- if (XBT_LOG_ISENABLED(surf_route_fat_tree, xbt_log_priority_debug)) {
- std::stringstream msgBuffer;
- msgBuffer << "Links are : ";
- for (FatTreeLink const* link : this->links_) {
- msgBuffer << "(" << link->up_node_->id << "," << link->down_node_->id << ") ";
- }
- XBT_DEBUG("%s", msgBuffer.str().c_str());
+ msgBuffer.clear();
+ msgBuffer << "Links are : ";
+ for (FatTreeLink const* link : this->links_) {
+ msgBuffer << "(" << link->up_node_->id << "," << link->down_node_->id << ") ";
}
+ XBT_DEBUG("%s", msgBuffer.str().c_str());
}
int FatTreeZone::connect_node_to_parents(FatTreeNode* node)
return true;
}
-void FatTreeZone::generate_switches()
+void FatTreeZone::generate_switches(const s4u::ClusterCallbacks& set_callbacks)
{
XBT_DEBUG("Generating switches.");
this->nodes_by_level_.resize(this->levels_ + 1, 0);
int k = 0;
for (unsigned int i = 0; i < this->levels_; i++) {
for (unsigned int j = 0; j < this->nodes_by_level_[i + 1]; j++) {
- auto* newNode = new FatTreeNode(--k, i + 1, j, nullptr, nullptr);
+ kernel::resource::LinkImpl* limiter = nullptr;
+ int id = --k;
+ if (set_callbacks.limiter) {
+ auto* s4u_link = set_callbacks.limiter(get_iface(), {i + 1, j}, id);
+ if (s4u_link)
+ limiter = s4u_link->get_impl();
+ }
+ auto* newNode = new FatTreeNode(id, i + 1, j, limiter, nullptr);
XBT_DEBUG("We create the switch %d(%u,%u)", newNode->id, newNode->level, newNode->position);
newNode->children.resize(this->num_children_per_node_[i] * this->num_port_lower_level_[i]);
if (i != this->levels_ - 1) {
zone->set_link_characteristics(bandwidth, latency, sharing_policy);
/* populating it */
- int tot_elements = std::accumulate(params.down.begin(), params.down.end(), 1, std::multiplies<>());
- for (int i = 0; i < tot_elements; i++) {
+ unsigned int tot_elements = std::accumulate(params.down.begin(), params.down.end(), 1, std::multiplies<>());
+ for (unsigned int i = 0; i < tot_elements; i++) {
kernel::routing::NetPoint* netpoint;
Link* limiter;
Link* loopback;
- zone->fill_leaf_from_cb(i, params.down, set_callbacks, &netpoint, &loopback, &limiter);
+ /* coordinates are based on 2 indexes: number of levels and id */
+ zone->fill_leaf_from_cb(i, {params.levels + 1, tot_elements}, set_callbacks, &netpoint, &loopback, &limiter);
zone->add_processing_node(i, limiter ? limiter->get_impl() : nullptr, loopback ? loopback->get_impl() : nullptr);
}
+ zone->build_upper_levels(set_callbacks);
return zone->get_iface();
}
simgrid::s4u::NetZone* zone,
const std::vector<unsigned int>& /*coord*/, int id)
{
- xbt_assert(static_cast<unsigned long>(id) < cluster->radicals.size(),
- "Zone(%s): error when creating limiter for host number %d in the zone. Insufficient number of radicals "
- "available "
- "(total = %zu). Check the 'radical' parameter in XML",
- cluster->id.c_str(), id, cluster->radicals.size());
-
- std::string link_id = std::string(cluster->id) + "_link_" + std::to_string(cluster->radicals[id]) + "_limiter";
+ std::string link_id = std::string(cluster->id) + "_link_" + std::to_string(id) + "_limiter";
XBT_DEBUG("Cluster: creating limiter link=%s bw=%f", link_id.c_str(), cluster->limiter_link);
simgrid::s4u::Link* limiter = zone->create_link(link_id, cluster->limiter_link)->seal();
> <link id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP" bandwidth="375000000" latency="0.000050000"/>
> <link id="bob_cluster_link_0_limiter" bandwidth="150000000" latency="0.000000000"/>
> <link id="bob_cluster_link_0_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
-> <link id="bob_cluster_link_1002_limiter" bandwidth="150000000" latency="0.000000000"/>
> <link id="bob_cluster_link_1002_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
-> <link id="bob_cluster_link_1003_limiter" bandwidth="150000000" latency="0.000000000"/>
> <link id="bob_cluster_link_1003_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
-> <link id="bob_cluster_link_1004_limiter" bandwidth="150000000" latency="0.000000000"/>
> <link id="bob_cluster_link_1004_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
+> <link id="bob_cluster_link_1_limiter" bandwidth="150000000" latency="0.000000000"/>
+> <link id="bob_cluster_link_2_limiter" bandwidth="150000000" latency="0.000000000"/>
+> <link id="bob_cluster_link_3_limiter" bandwidth="150000000" latency="0.000000000"/>
> <link id="green_link_in_chassis_0_between_routers_0_and_1_4_DOWN" bandwidth="125000000" latency="0.000050000"/>
> <link id="green_link_in_chassis_0_between_routers_0_and_1_4_UP" bandwidth="125000000" latency="0.000050000"/>
> <link id="green_link_in_chassis_1_between_routers_0_and_1_5_DOWN" bandwidth="125000000" latency="0.000050000"/>
> <link_ctn id="bob_cluster_link_0_loopback"/>
> </route>
> <route src="node-0.simgrid.org" dst="node-1002.simgrid.org">
-> <link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_UP"/><link_ctn id="bob_cluster_link_1002_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/>
+> <link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_UP"/><link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/>
> </route>
> <route src="node-0.simgrid.org" dst="node-1003.simgrid.org">
-> <link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_1003_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/>
+> <link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/>
> </route>
> <route src="node-0.simgrid.org" dst="node-1004.simgrid.org">
-> <link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_UP"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_1004_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/>
+> <link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_UP"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/>
> </route>
> <route src="node-1002.simgrid.org" dst="node-0.simgrid.org">
-> <link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_1002_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/>
+> <link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/>
> </route>
> <route src="node-1002.simgrid.org" dst="node-1002.simgrid.org">
> <link_ctn id="bob_cluster_link_1002_loopback"/>
> </route>
> <route src="node-1002.simgrid.org" dst="node-1003.simgrid.org">
-> <link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_1002_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_DOWN"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_1003_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/>
+> <link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_DOWN"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/>
> </route>
> <route src="node-1002.simgrid.org" dst="node-1004.simgrid.org">
-> <link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_1002_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_1004_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/>
+> <link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/>
> </route>
> <route src="node-1003.simgrid.org" dst="node-0.simgrid.org">
-> <link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_1003_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/>
+> <link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/>
> </route>
> <route src="node-1003.simgrid.org" dst="node-1002.simgrid.org">
-> <link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_1003_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_UP"/><link_ctn id="bob_cluster_link_1002_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/>
+> <link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_UP"/><link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/>
> </route>
> <route src="node-1003.simgrid.org" dst="node-1003.simgrid.org">
> <link_ctn id="bob_cluster_link_1003_loopback"/>
> </route>
> <route src="node-1003.simgrid.org" dst="node-1004.simgrid.org">
-> <link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_1003_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_UP"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_1004_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/>
+> <link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_UP"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/>
> </route>
> <route src="node-1004.simgrid.org" dst="node-0.simgrid.org">
-> <link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_1004_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/>
+> <link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/>
> </route>
> <route src="node-1004.simgrid.org" dst="node-1002.simgrid.org">
-> <link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_1004_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_DOWN"/><link_ctn id="bob_cluster_link_1002_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/>
+> <link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/>
> </route>
> <route src="node-1004.simgrid.org" dst="node-1003.simgrid.org">
-> <link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_1004_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_DOWN"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_1003_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/>
+> <link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_DOWN"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/>
> </route>
> <route src="node-1004.simgrid.org" dst="node-1004.simgrid.org">
> <link_ctn id="bob_cluster_link_1004_loopback"/>
> <host id="node-119.simgrid.org" speed="1000000000"/>
> <host id="node-120.simgrid.org" speed="1000000000"/>
> <link id="__loopback__" bandwidth="10000000000" latency="0.000000000" sharing_policy="FATPIPE"/>
-> <link id="bob_cluster_link_100_limiter" bandwidth="50000000" latency="0.000000000"/>
+> <link id="bob_cluster_link_-1_limiter" bandwidth="50000000" latency="0.000000000"/>
+> <link id="bob_cluster_link_-2_limiter" bandwidth="50000000" latency="0.000000000"/>
+> <link id="bob_cluster_link_-3_limiter" bandwidth="50000000" latency="0.000000000"/>
+> <link id="bob_cluster_link_-4_limiter" bandwidth="50000000" latency="0.000000000"/>
+> <link id="bob_cluster_link_0_limiter" bandwidth="50000000" latency="0.000000000"/>
> <link id="bob_cluster_link_100_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
-> <link id="bob_cluster_link_101_limiter" bandwidth="50000000" latency="0.000000000"/>
> <link id="bob_cluster_link_101_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
-> <link id="bob_cluster_link_119_limiter" bandwidth="50000000" latency="0.000000000"/>
> <link id="bob_cluster_link_119_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
-> <link id="bob_cluster_link_120_limiter" bandwidth="50000000" latency="0.000000000"/>
> <link id="bob_cluster_link_120_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
+> <link id="bob_cluster_link_1_limiter" bandwidth="50000000" latency="0.000000000"/>
+> <link id="bob_cluster_link_2_limiter" bandwidth="50000000" latency="0.000000000"/>
+> <link id="bob_cluster_link_3_limiter" bandwidth="50000000" latency="0.000000000"/>
> <link id="link_from_-1_-3_4_DOWN" bandwidth="125000000" latency="0.000050000"/>
> <link id="link_from_-1_-3_4_UP" bandwidth="125000000" latency="0.000050000"/>
> <link id="link_from_-1_-3_5_DOWN" bandwidth="125000000" latency="0.000050000"/>
> <link_ctn id="bob_cluster_link_100_loopback"/>
> </route>
> <route src="node-100.simgrid.org" dst="node-101.simgrid.org">
-> <link_ctn id="link_from_0_-1_0_UP"/><link_ctn id="bob_cluster_link_100_limiter"/><link_ctn id="link_from_1_-1_1_DOWN"/><link_ctn id="bob_cluster_link_101_limiter"/>
+> <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="link_from_0_-1_0_UP"/><link_ctn id="link_from_1_-1_1_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_1_limiter"/>
> </route>
> <route src="node-100.simgrid.org" dst="node-119.simgrid.org">
-> <link_ctn id="link_from_0_-1_0_UP"/><link_ctn id="bob_cluster_link_100_limiter"/><link_ctn id="link_from_-1_-3_4_UP"/><link_ctn id="link_from_-2_-3_8_DOWN"/><link_ctn id="link_from_2_-2_2_DOWN"/><link_ctn id="bob_cluster_link_119_limiter"/>
+> <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="link_from_0_-1_0_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="link_from_-1_-3_4_UP"/><link_ctn id="link_from_-2_-3_8_DOWN"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="link_from_2_-2_2_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_2_limiter"/>
> </route>
> <route src="node-100.simgrid.org" dst="node-120.simgrid.org">
-> <link_ctn id="link_from_0_-1_0_UP"/><link_ctn id="bob_cluster_link_100_limiter"/><link_ctn id="link_from_-1_-4_6_UP"/><link_ctn id="link_from_-2_-4_10_DOWN"/><link_ctn id="link_from_3_-2_3_DOWN"/><link_ctn id="bob_cluster_link_120_limiter"/>
+> <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="link_from_0_-1_0_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="link_from_-1_-4_6_UP"/><link_ctn id="link_from_-2_-4_10_DOWN"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="link_from_3_-2_3_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_3_limiter"/>
> </route>
> <route src="node-101.simgrid.org" dst="node-100.simgrid.org">
-> <link_ctn id="link_from_1_-1_1_UP"/><link_ctn id="bob_cluster_link_101_limiter"/><link_ctn id="link_from_0_-1_0_DOWN"/><link_ctn id="bob_cluster_link_100_limiter"/>
+> <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="link_from_1_-1_1_UP"/><link_ctn id="link_from_0_-1_0_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_0_limiter"/>
> </route>
> <route src="node-101.simgrid.org" dst="node-101.simgrid.org">
> <link_ctn id="bob_cluster_link_101_loopback"/>
> </route>
> <route src="node-101.simgrid.org" dst="node-119.simgrid.org">
-> <link_ctn id="link_from_1_-1_1_UP"/><link_ctn id="bob_cluster_link_101_limiter"/><link_ctn id="link_from_-1_-3_4_UP"/><link_ctn id="link_from_-2_-3_8_DOWN"/><link_ctn id="link_from_2_-2_2_DOWN"/><link_ctn id="bob_cluster_link_119_limiter"/>
+> <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="link_from_1_-1_1_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="link_from_-1_-3_4_UP"/><link_ctn id="link_from_-2_-3_8_DOWN"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="link_from_2_-2_2_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_2_limiter"/>
> </route>
> <route src="node-101.simgrid.org" dst="node-120.simgrid.org">
-> <link_ctn id="link_from_1_-1_1_UP"/><link_ctn id="bob_cluster_link_101_limiter"/><link_ctn id="link_from_-1_-4_6_UP"/><link_ctn id="link_from_-2_-4_10_DOWN"/><link_ctn id="link_from_3_-2_3_DOWN"/><link_ctn id="bob_cluster_link_120_limiter"/>
+> <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="link_from_1_-1_1_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="link_from_-1_-4_6_UP"/><link_ctn id="link_from_-2_-4_10_DOWN"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="link_from_3_-2_3_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_3_limiter"/>
> </route>
> <route src="node-119.simgrid.org" dst="node-100.simgrid.org">
-> <link_ctn id="link_from_2_-2_2_UP"/><link_ctn id="bob_cluster_link_119_limiter"/><link_ctn id="link_from_-2_-3_8_UP"/><link_ctn id="link_from_-1_-3_4_DOWN"/><link_ctn id="link_from_0_-1_0_DOWN"/><link_ctn id="bob_cluster_link_100_limiter"/>
+> <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="link_from_2_-2_2_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="link_from_-2_-3_8_UP"/><link_ctn id="link_from_-1_-3_4_DOWN"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="link_from_0_-1_0_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_0_limiter"/>
> </route>
> <route src="node-119.simgrid.org" dst="node-101.simgrid.org">
-> <link_ctn id="link_from_2_-2_2_UP"/><link_ctn id="bob_cluster_link_119_limiter"/><link_ctn id="link_from_-2_-4_10_UP"/><link_ctn id="link_from_-1_-4_6_DOWN"/><link_ctn id="link_from_1_-1_1_DOWN"/><link_ctn id="bob_cluster_link_101_limiter"/>
+> <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="link_from_2_-2_2_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="link_from_-2_-4_10_UP"/><link_ctn id="link_from_-1_-4_6_DOWN"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="link_from_1_-1_1_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_1_limiter"/>
> </route>
> <route src="node-119.simgrid.org" dst="node-119.simgrid.org">
> <link_ctn id="bob_cluster_link_119_loopback"/>
> </route>
> <route src="node-119.simgrid.org" dst="node-120.simgrid.org">
-> <link_ctn id="link_from_2_-2_2_UP"/><link_ctn id="bob_cluster_link_119_limiter"/><link_ctn id="link_from_3_-2_3_DOWN"/><link_ctn id="bob_cluster_link_120_limiter"/>
+> <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="link_from_2_-2_2_UP"/><link_ctn id="link_from_3_-2_3_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_3_limiter"/>
> </route>
> <route src="node-120.simgrid.org" dst="node-100.simgrid.org">
-> <link_ctn id="link_from_3_-2_3_UP"/><link_ctn id="bob_cluster_link_120_limiter"/><link_ctn id="link_from_-2_-3_8_UP"/><link_ctn id="link_from_-1_-3_4_DOWN"/><link_ctn id="link_from_0_-1_0_DOWN"/><link_ctn id="bob_cluster_link_100_limiter"/>
+> <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="link_from_3_-2_3_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="link_from_-2_-3_8_UP"/><link_ctn id="link_from_-1_-3_4_DOWN"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="link_from_0_-1_0_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_0_limiter"/>
> </route>
> <route src="node-120.simgrid.org" dst="node-101.simgrid.org">
-> <link_ctn id="link_from_3_-2_3_UP"/><link_ctn id="bob_cluster_link_120_limiter"/><link_ctn id="link_from_-2_-4_10_UP"/><link_ctn id="link_from_-1_-4_6_DOWN"/><link_ctn id="link_from_1_-1_1_DOWN"/><link_ctn id="bob_cluster_link_101_limiter"/>
+> <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="link_from_3_-2_3_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="link_from_-2_-4_10_UP"/><link_ctn id="link_from_-1_-4_6_DOWN"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="link_from_1_-1_1_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_1_limiter"/>
> </route>
> <route src="node-120.simgrid.org" dst="node-119.simgrid.org">
-> <link_ctn id="link_from_3_-2_3_UP"/><link_ctn id="bob_cluster_link_120_limiter"/><link_ctn id="link_from_2_-2_2_DOWN"/><link_ctn id="bob_cluster_link_119_limiter"/>
+> <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="link_from_3_-2_3_UP"/><link_ctn id="link_from_2_-2_2_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_2_limiter"/>
> </route>
> <route src="node-120.simgrid.org" dst="node-120.simgrid.org">
> <link_ctn id="bob_cluster_link_120_loopback"/>
> <link id="__loopback__" bandwidth="10000000000" latency="0.000000000" sharing_policy="FATPIPE"/>
> <link id="bob_cluster_link_0_limiter" bandwidth="50000000" latency="0.000000000"/>
> <link id="bob_cluster_link_0_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
-> <link id="bob_cluster_link_102_limiter" bandwidth="50000000" latency="0.000000000"/>
> <link id="bob_cluster_link_102_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
-> <link id="bob_cluster_link_103_limiter" bandwidth="50000000" latency="0.000000000"/>
> <link id="bob_cluster_link_103_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
> <link id="bob_cluster_link_1_limiter" bandwidth="50000000" latency="0.000000000"/>
> <link id="bob_cluster_link_1_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
+> <link id="bob_cluster_link_2_limiter" bandwidth="50000000" latency="0.000000000"/>
+> <link id="bob_cluster_link_3_limiter" bandwidth="50000000" latency="0.000000000"/>
> <link id="bob_cluster_link_from_0_to_0_DOWN" bandwidth="125000000" latency="0.000050000"/>
> <link id="bob_cluster_link_from_0_to_0_UP" bandwidth="125000000" latency="0.000050000"/>
> <link id="bob_cluster_link_from_0_to_1_DOWN" bandwidth="125000000" latency="0.000050000"/>
> <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="bob_cluster_link_from_0_to_1_UP"/><link_ctn id="bob_cluster_link_1_limiter"/>
> </route>
> <route src="node-0.simgrid.org" dst="node-102.simgrid.org">
-> <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="bob_cluster_link_from_0_to_2_UP"/><link_ctn id="bob_cluster_link_102_limiter"/>
+> <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="bob_cluster_link_from_0_to_2_UP"/><link_ctn id="bob_cluster_link_2_limiter"/>
> </route>
> <route src="node-0.simgrid.org" dst="node-103.simgrid.org">
-> <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="bob_cluster_link_from_0_to_1_UP"/><link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="bob_cluster_link_from_1_to_3_UP"/><link_ctn id="bob_cluster_link_103_limiter"/>
+> <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="bob_cluster_link_from_0_to_1_UP"/><link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="bob_cluster_link_from_1_to_3_UP"/><link_ctn id="bob_cluster_link_3_limiter"/>
> </route>
> <route src="node-1.simgrid.org" dst="node-0.simgrid.org">
> <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="bob_cluster_link_from_0_to_1_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
> <link_ctn id="bob_cluster_link_1_loopback"/>
> </route>
> <route src="node-1.simgrid.org" dst="node-102.simgrid.org">
-> <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="bob_cluster_link_from_0_to_1_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="bob_cluster_link_from_0_to_2_UP"/><link_ctn id="bob_cluster_link_102_limiter"/>
+> <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="bob_cluster_link_from_0_to_1_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="bob_cluster_link_from_0_to_2_UP"/><link_ctn id="bob_cluster_link_2_limiter"/>
> </route>
> <route src="node-1.simgrid.org" dst="node-103.simgrid.org">
-> <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="bob_cluster_link_from_1_to_3_UP"/><link_ctn id="bob_cluster_link_103_limiter"/>
+> <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="bob_cluster_link_from_1_to_3_UP"/><link_ctn id="bob_cluster_link_3_limiter"/>
> </route>
> <route src="node-102.simgrid.org" dst="node-0.simgrid.org">
-> <link_ctn id="bob_cluster_link_102_limiter"/><link_ctn id="bob_cluster_link_from_0_to_2_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
+> <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="bob_cluster_link_from_0_to_2_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
> </route>
> <route src="node-102.simgrid.org" dst="node-1.simgrid.org">
-> <link_ctn id="bob_cluster_link_102_limiter"/><link_ctn id="bob_cluster_link_from_2_to_3_UP"/><link_ctn id="bob_cluster_link_103_limiter"/><link_ctn id="bob_cluster_link_from_1_to_3_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/>
+> <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="bob_cluster_link_from_2_to_3_UP"/><link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="bob_cluster_link_from_1_to_3_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/>
> </route>
> <route src="node-102.simgrid.org" dst="node-102.simgrid.org">
> <link_ctn id="bob_cluster_link_102_loopback"/>
> </route>
> <route src="node-102.simgrid.org" dst="node-103.simgrid.org">
-> <link_ctn id="bob_cluster_link_102_limiter"/><link_ctn id="bob_cluster_link_from_2_to_3_UP"/><link_ctn id="bob_cluster_link_103_limiter"/>
+> <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="bob_cluster_link_from_2_to_3_UP"/><link_ctn id="bob_cluster_link_3_limiter"/>
> </route>
> <route src="node-103.simgrid.org" dst="node-0.simgrid.org">
-> <link_ctn id="bob_cluster_link_103_limiter"/><link_ctn id="bob_cluster_link_from_2_to_3_DOWN"/><link_ctn id="bob_cluster_link_102_limiter"/><link_ctn id="bob_cluster_link_from_0_to_2_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
+> <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="bob_cluster_link_from_2_to_3_DOWN"/><link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="bob_cluster_link_from_0_to_2_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
> </route>
> <route src="node-103.simgrid.org" dst="node-1.simgrid.org">
-> <link_ctn id="bob_cluster_link_103_limiter"/><link_ctn id="bob_cluster_link_from_1_to_3_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/>
+> <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="bob_cluster_link_from_1_to_3_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/>
> </route>
> <route src="node-103.simgrid.org" dst="node-102.simgrid.org">
-> <link_ctn id="bob_cluster_link_103_limiter"/><link_ctn id="bob_cluster_link_from_2_to_3_DOWN"/><link_ctn id="bob_cluster_link_102_limiter"/>
+> <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="bob_cluster_link_from_2_to_3_DOWN"/><link_ctn id="bob_cluster_link_2_limiter"/>
> </route>
> <route src="node-103.simgrid.org" dst="node-103.simgrid.org">
> <link_ctn id="bob_cluster_link_103_loopback"/>