Я установил симулятор, где N
подчиненные узлы отправляют данные на главный узел, используя BulkSendApp
, Проблема в том, что я не могу найти, как записать время завершения операции. Я знаю о входе с prefix_time
флаг (например)
export 'NS_LOG=BulkSendApplication=level_all|prefix_func|prefix_time
Но это просто регистрирует все пакеты. Я только хочу время завершения.
Есть ли способ получить его без изменения самого класса приложения?
Нет источника трассировки, чтобы уведомить вас о конечных событиях tx внутри этого приложения. Однако добавить его просто, либо в качестве источника трассировки, связанной с переменной m_totBytes, либо в качестве отслеживаемого обратного вызова. Например:
static TypeId BukSendApplication::GetTypeId (void)
{
static TypeId tid = // ...
// ...
.AddTraceSource ("TotBytes",
"Total number of bytes sent",
MakeTraceSourceAccessor (&BukSendApplication::m_totBytes))
;
return tid;
}
А также:
void TotBytes (uint32_t oldval, uint32_t newval) {}
Config::ConnectWithoutContext (
"/NodeList/0/ApplicationList/0/$ns3::BulkSendApplication/TotBytes",
MakeCallback (&TotBytesTracer));
Об этом также есть обширная документация: http://www.nsnam.org/docs/release/3.19/manual/html/tracing.html#overview
Я нашел простой и достаточно надежный способ сделать это (приветственные комментарии).
1.
Добавьте журнал pcap к отправляющим узлам:
для меня это было:
csma.EnablePcapAll ("tcp-bulk-send", false);
,
csma
помощник, который я использовал для построения топологии коммутатора. Когда это включено, вы получаете файл .pcap при запуске симуляции.
2.
использование tcpdump -nn -tt -r tcp-bulk-send-N-D.pcap
(N
= индекс узла; D
= индекс устройства)
Это напечатает журнал захвата пакета соответствующего узла. Теперь проверьте, когда был получен последний подтверждение. Вы также можете проверить, сколько пакетов было успешно отправлено (проверьте, сколько было получено на другой стороне), убедившись, что приложение использует уникальный порт сокета. Время прибытия последнего подтверждения в основном является необходимым временем завершения.