Как изменить данные ссылки точка-точка во время выполнения в NS3

Я новичок в NS3. У меня есть запрос на изменение данных связи точка-точка во время выполнения. Я попробовал решение, упомянутое в https://stackoverflow.com/a/65514090/13121848 . Но здесь SetDeviceAttribute для меня не разрешен.

      void
ModifyLinkRate(PointToPointNetDevice *dev) {
   dev->SetDeviceAttribute("DataRate", StringValue ("1Mbps"));
   //dev->SetAttribute("DataRate", StringValue ("1Mbps"));
}
int
main (int argc, char *argv[])
{
...
   PointToPointHelper pointToPoint;
   pointToPoint.SetDeviceAttribute ("DataRate", StringValue (linkRate));
...
   Simulator::Schedule(Seconds(2.0), &ModifyLinkRate, &pointToPoint );
}

1 ответ

Чтобы изменить данные ссылки pointTopoint, необходимо получить PointToPointNetDevice, установленный на узле. Это можно сделать с помощью NetDeviceContainer, с которым связан узел. Пример кода ниже,

      void
ModifyLinkRate(NetDeviceContainer *ptp, DataRate lr) {
    StaticCast<PointToPointNetDevice>(ptp->Get(0))->SetDataRate(lr);
}
int
main (int argc, char *argv[])
{
...
   PointToPointHelper pointToPoint;
   pointToPoint.SetDeviceAttribute ("DataRate", StringValue (linkRate));
...
   NetDeviceContainer p2pDevices = pointToPoint.Install (p2pNodes);
...
    Simulator::Schedule(Seconds(2.0), &ModifyLinkRate, &p2pDevices,DataRate("20Mbps"));
}
Другие вопросы по тегам