X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8e5684cc6c1d3bb451433394ddc4a64831f0e7f2..1b4f0ecf22879a1152f7b5fbcbf7bcdb416d21da:/src/surf/ns3/ns3_simulator.cpp diff --git a/src/surf/ns3/ns3_simulator.cpp b/src/surf/ns3/ns3_simulator.cpp index 8b43e80e5c..64230a0038 100644 --- a/src/surf/ns3/ns3_simulator.cpp +++ b/src/surf/ns3/ns3_simulator.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -7,6 +7,9 @@ #include "xbt/log.h" #include "xbt/sysdep.h" +#include +#include + #include std::map flowFromSock; // ns3::sock -> SgFlow @@ -16,7 +19,7 @@ static void datasent_cb(ns3::Ptr socket, uint32_t dataSent); XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ns3); -SgFlow::SgFlow(uint32_t totalBytes, simgrid::surf::NetworkNS3Action* action) +SgFlow::SgFlow(uint32_t totalBytes, simgrid::kernel::resource::NetworkNS3Action* action) { totalBytes_ = totalBytes; remaining_ = totalBytes; @@ -54,7 +57,8 @@ static void send_cb(ns3::Ptr sock, uint32_t txSpace) /* While not all is buffered and there remain space in the buffers */ while (flow->bufferedBytes_ < flow->totalBytes_ && sock->GetTxAvailable() > 0) { - uint32_t toWrite = std::min({flow->remaining_, sock->GetTxAvailable()}); + // Send at most 1040 bytes (data size in a TCP packet), as NS3 seems to not split correctly by itself + uint32_t toWrite = std::min({flow->remaining_, sock->GetTxAvailable(), std::uint32_t(1040)}); if (toWrite == 0) { // buffer full XBT_DEBUG("%f: buffer full on flow %p (still %u to go)", ns3::Simulator::Now().GetSeconds(), flow, flow->remaining_);