A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
Add model Reno, NewReno and Tahoe with ns3
[simgrid.git]
/
src
/
surf
/
surf.c
diff --git
a/src/surf/surf.c
b/src/surf/surf.c
index
e8d350f
..
8acdd35
100644
(file)
--- a/
src/surf/surf.c
+++ b/
src/surf/surf.c
@@
-131,6
+131,11
@@
s_surf_model_description_t surf_network_model_description[] = {
{"GTNets",
"Network Pseudo-model using the GTNets simulator instead of an analytic model",
NULL, surf_network_model_init_GTNETS},
+#endif
+#ifdef HAVE_NS3
+ {"NS3",
+ "Use NS3 tcp model",
+ NULL, surf_network_model_init_NS3},
#endif
{"Reno",
"Model using lagrange_solve instead of lmm_solve (experts only)", NULL,
@@
-382,9
+387,14
@@
void surf_exit(void)
if (surf_path)
xbt_dynar_free(&surf_path);
+ xbt_lib_free(&host_lib);
+ xbt_lib_free(&link_lib);
+ xbt_lib_free(&as_router_lib);
+
tmgr_finalize();
surf_parse_lex_destroy();
surf_parse_free_callbacks();
+
NOW = 0; /* Just in case the user plans to restart the simulation afterward */
}
@@
-432,14
+442,30
@@
double surf_solve(double max_date)
XBT_DEBUG("Looking for next action end");
xbt_dynar_foreach(model_list, iter, model) {
- XBT_DEBUG("Running for Resource [%s]", model->name);
- model_next_action_end = model->model_private->share_resources(NOW);
- XBT_DEBUG("Resource [%s] : next action end = %f",
- model->name, model_next_action_end);
- if (((min < 0.0) || (model_next_action_end < min))
- && (model_next_action_end >= 0.0))
- min = model_next_action_end;
+
+ if(strcmp(model->name,"network NS3") ){
+ XBT_DEBUG("Running for Resource [%s]", model->name);
+ model_next_action_end = model->model_private->share_resources(NOW);
+ XBT_DEBUG("Resource [%s] : next action end = %f",
+ model->name, model_next_action_end);
+ if (((min < 0.0) || (model_next_action_end < min))
+ && (model_next_action_end >= 0.0))
+ min = model_next_action_end;
+ }
+ }
+
+ XBT_DEBUG("Min for other resources : %f", min);
+
+
+ if(surf_network_model->name && !strcmp(surf_network_model->name,"network NS3")){
+ // run until min or next flow
+ model_next_action_end = surf_network_model->model_private->share_resources(min);
+ XBT_DEBUG("Min for NS3 : %f", model_next_action_end);
+ if ( ((min < 0.0) || (model_next_action_end < min)) && ( model_next_action_end >= 0.0 ))
+ min = model_next_action_end;
}
+
+
XBT_DEBUG("Next action end : %f", min);
XBT_DEBUG("Looking for next event");