--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+<platform version="3">
+
+ <process host="a" function="master">
+ <argument value="100"/>
+ <argument value="c"/>
+ <argument value="1"/>
+ </process>
+
+ <process host="c" function="slave">
+ <argument value="1"/>
+ </process>
+
+</platform>
--- /dev/null
+<?xml version='1.0'?>
+ <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+ <platform version="3">
+ <!--
+
+ a ______1______ b _____2_____ c
+
+ -->
+
+ <AS id="AS0" routing="Full">
+
+ <host id="a" power="1000000000"/>
+ <host id="b" power="1000000000"/>
+ <host id="c" power="1000000000"/>
+
+ <link id="1" bandwidth="1000" latency="0.01"/>
+ <link id="2" bandwidth="1000" latency="0.01"/>
+
+ <route src="a" dst="b">
+ <link_ctn id="1"/>
+ </route>
+ <route src="b" dst="c">
+ <link_ctn id="2"/>
+ </route>
+
+ </AS>
+ </platform>
\ No newline at end of file
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
<platform version="3">
- <AS id="AS0" routing="Full">
+ <!--
+
+ S1 ______1______ C1
+
+ S2 _______2_____ C2
+ S3 ________3____ C2
+
+ -->
+
+ <AS id="AS0" routing="Full">
<host id="S1" power="1000000000"/>
<host id="C1" power="1000000000"/>
<host id="S2" power="1000000000"/>
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+<platform version="3">
+
+ <process host="c-2.me" function="master">
+ <argument value="100"/>
+ <argument value="c-6.me"/>
+ <argument value="1"/>
+ </process>
+
+ <process host="c-6.me" function="slave">
+ <argument value="1"/>
+ </process>
+
+</platform>
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+<!-- _________
+ | |
+ | router |
+ ____________|__________|_____________ backbone
+ | | | | | |
+ l0| l1| l2| l97| l96 | | l99
+ | | | ........ | | |
+ | |
+ c-0.me c-99.me
+-->
+<platform version="3">
+<AS id="AS0" routing="Full">
+ <cluster id="my_cluster_1" prefix="c-" suffix=".me"
+ radical="0-99" power="1000000000" bw="125000000" lat="5E-5"
+ bb_bw="2250000000" bb_lat="5E-4"/>
+</AS>
+</platform>
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+<platform version="3">
+
+ <process host="c-30.me" function="master">
+ <argument value="100"/>
+ <argument value="c-160.me"/>
+ <argument value="1"/>
+ </process>
+
+ <process host="c-160.me" function="slave">
+ <argument value="1"/>
+ </process>
+
+</platform>
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+<platform version="3">
+
+<!--
+ __________________________________________________
+ ____|_____ |
+ | | |
+ | router1 | |
+ ____________|__________|_____________ csma1 |
+ | | | | | | |backbone
+ l0| l1| l2| l97| l98| | l99 |
+ | | | ........ | | | |
+ | | |
+ c-0.me c-99.me |
+ ___________________________________________________|
+ ___|______
+ | |
+ | router2 |
+ ____________|__________|_____________ csma2
+ | | | | | |
+ l100|l101| | l197| l198| | l199
+ | | | ........ | | |
+ | |
+ c-100.me c-199.me
+-->
+<AS id="AS0" routing="Full">
+ <cluster id="my_cluster_1" prefix="c-" suffix=".me"
+ radical="0-99" power="1000000000" bw="125000000" lat="5E-5"
+ bb_bw="2250000000" bb_lat="5E-4"/>
+
+ <cluster id="my_cluster_2" prefix="c-" suffix=".me"
+ radical="100-199" power="1000000000" bw="125000000" lat="5E-5"
+ bb_bw="2250000000" bb_lat="5E-4"/>
+
+ <link id="backbone" bandwidth="1250000000" latency="5E-4"/>
+
+ <ASroute src="my_cluster_1" dst="my_cluster_2"
+ gw_src="c-my_cluster_1_router.me"
+ gw_dst="c-my_cluster_2_router.me">
+ <link_ctn id="backbone"/>
+ </ASroute>
+ <ASroute src="my_cluster_2" dst="my_cluster_1"
+ gw_src="c-my_cluster_2_router.me"
+ gw_dst="c-my_cluster_1_router.me">
+ <link_ctn id="backbone"/>
+ </ASroute>
+</AS>
+</platform>
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network_ns3, surf,
"Logging specific to the SURF network NS3 module");
+#define MAX_LENGHT_IPV4 16 //255.255.255.255\0
+
extern routing_global_t global_routing;
extern xbt_dict_t dict_socket;
{
char *temp = xbt_strdup(bdw);
xbt_free(bdw);
- bdw = bprintf("%fbps",atof(temp));
+ bdw = bprintf("%fBps",atof(temp));
xbt_free(temp);
}
ns3_add_host(A_surfxml_host_id)
);
}
+
+static void ns3_free_dynar(void * elmts){
+ if(elmts)
+ free(elmts);
+ return;
+}
+
void parse_ns3_add_link(void)
{
XBT_DEBUG("NS3_ADD_LINK '%s'",A_surfxml_link_id);
- if(!IPV4addr) IPV4addr = xbt_dynar_new(sizeof(char*),free);
+ if(!IPV4addr) IPV4addr = xbt_dynar_new(MAX_LENGHT_IPV4*sizeof(char),ns3_free_dynar);
tmgr_trace_t bw_trace;
tmgr_trace_t state_trace;
}
}
-
-
//Create links
unsigned int cpt;
int elmts;
{
XBT_DEBUG("Starting topology generation");
+ xbt_dynar_shrink(IPV4addr,0);
+
//get the onelinks from the parsed platform
xbt_dynar_t onelink_routes = global_routing->get_onelink_routes();
if (!onelink_routes)
if( strcmp(src,dst) && ((surf_ns3_link_t)link)->created){
XBT_DEBUG("Route from '%s' to '%s' with link '%s'",src,dst,((surf_ns3_link_t)link)->data->id);
- char * link_bdw = bprintf("%sBps",((surf_ns3_link_t)link)->data->bdw);
- char * link_lat = bprintf("%ss",(((surf_ns3_link_t)link)->data->lat));
+ char * link_bdw = bprintf("%s",((surf_ns3_link_t)link)->data->bdw);
+ char * link_lat = bprintf("%s",(((surf_ns3_link_t)link)->data->lat));
+ replace_lat_ns3(link_lat);
+ replace_bdw_ns3(link_bdw);
((surf_ns3_link_t)link)->created = 0;
// XBT_DEBUG("src (%s), dst (%s), src_id = %d, dst_id = %d",src,dst, src_id, dst_id);
ns3_simulator(min);
time_to_next_flow_completion = ns3_time() - surf_get_clock();
+// XBT_INFO("min : %f",min);
+// XBT_INFO("ns3 time : %f",ns3_time());
+// XBT_INFO("surf time : %f",surf_get_clock());
+
xbt_assert(time_to_next_flow_completion,
"Time to next flow completion not initialized!\n");
char* addr = (char*)xbt_dynar_get_ptr(IPV4addr,node2->node_num);
- XBT_INFO("ns3_create_flow %d Bytes from %d to %d with Interface %s",TotalBytes, node1->node_num, node2->node_num,addr);
+ XBT_DEBUG("ns3_create_flow %d Bytes from %d to %d with Interface %s",TotalBytes, node1->node_num, node2->node_num,addr);
ns3_sim->create_flow_NS3(src_node,
dst_node,
port_number,
number_of_links++;
}
XBT_DEBUG("Number of nodes in Cluster_nodes: %d",Cluster_nodes.GetN());
-
}
void * ns3_add_AS(char * id)
static char* transformIpv4Address (Ipv4Address from){
std::stringstream sstream;
- sstream << interfaces.GetAddress(interfaces.GetN()-2);
+ sstream << from ;
std::string s = sstream.str();
size_t size = s.size() + 1;
char* IPaddr = bprintf("%s",s.c_str());
free(adr);
interfaces.Add(address.Assign (netA));
+ XBT_DEBUG("Have write '%s' for Node '%d'",transformIpv4Address(interfaces.GetAddress(interfaces.GetN()-2)),src);
xbt_dynar_set(IPV4addr,src,
transformIpv4Address(interfaces.GetAddress(interfaces.GetN()-2)));
+ XBT_DEBUG("Have write '%s' for Node '%d'",transformIpv4Address(interfaces.GetAddress(interfaces.GetN()-1)),dst);
xbt_dynar_set(IPV4addr,dst,
transformIpv4Address(interfaces.GetAddress(interfaces.GetN()-1)));
toWrite = min (toWrite, localSocket->GetTxAvailable ());
int amountSent = localSocket->Send (&data[0], toWrite, 0);
-// cout << Simulator::Now () << " AmountSend: " << amountSent << " Towrite: " << toWrite << endl;
if(amountSent < 0)
return;
(mysocket->sentBytes) += amountSent;