Расчет пропускной способности UDP в NS3

У меня есть топология клиент/сервер в NS3, и я хочу рассчитать пропускную способность UDP-трафика на сервере. Эта строка кода sink = StaticCast<PacketSink> (tcpServerApp.Get (0)); не работает, поскольку ее можно использовать только для расчета пропускной способности TCP-пакетов. Как рассчитать пропускную способность для полученного UDP-трафика на сервере?

Спасибо


person Reza.P    schedule 07.04.2020    source источник


Ответы (2)


Вы можете рассчитать пропускную способность пакетов UDP, используя следующий код. Вы должны использовать этот код после Simulation::Run();

      uint64_t rxBytes = 0;

      rxBytes = payloadSize * DynamicCast<UdpServer> (serverApp.Get (0))->GetReceived ();
      double throughput = (rxBytes * 8) / (simulationTime * 1000000.0); //Mbit/s
      std::cout << "throughput = " << throughput << " Mbit/s" << std::endl;
person a4arshad    schedule 08.04.2020
comment
Я реализовал этот код, но получил ошибку SIGSEGV. В чем может быть проблема? - person Reza.P; 09.04.2020
comment
Прежде всего, этот код должен работать. Вам нужно соответствующим образом изменить переменные. Не видя вашего полного сообщения об ошибке, я не могу вам помочь. - person a4arshad; 10.04.2020
comment
Миллион благодарностей за ваше время. Вот код, который я использовал: Simulator::Run(); uint64_t rxBytes = 0; rxBytes = 1400 * DynamicCast‹UdpServer›(ServerApp.Get(0))->GetReceived(); двойная пропускная способность = (rxBytes * 8) / (10 * 1000000,0); // Мбит/с std::cout ‹‹ пропускная способность = ‹‹ пропускная способность ‹‹ Мбит/с ‹‹ std::endl; и это ошибка: Команда ['/home/reza/ns-3/ns-allinone-3.30/ns-3.30/build/scratch/my-complete-topology-quic-tcp'] завершена сигналом SIGSEGV. Запустите его под отладчиком, чтобы получить больше информации (./waf --run ‹program› --command-template=gdb --args %s ‹args›). - person Reza.P; 10.04.2020
comment
Запустите его под gdb, и вы узнаете больше об ошибке. - person a4arshad; 11.04.2020

Спасибо из-за ответа. Я реализовал код:

uint64_t rxBytes = 0;
  rxBytes = 1400 * DynamicCast<UdpServer> (ServerApp.Get (0))->GetReceived ();
  double throughput = (rxBytes * 8) / (10 * 1000000.0); //Mbit/s
  std::cout << "throughput = " << throughput << " Mbit/s" << std::end

Но я получил ошибку SIGSEGV. В чем может быть проблема?

Спасибо

person Reza.P    schedule 09.04.2020