I'm new to NS3. I have a query in changing the pointtopoint link datarate during the runtime. I tried a solution which is mentioned in https://stackoverflow.com/a/65514090/13121848 . But here SetDeviceAttribute is not resolved for me.
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 );
}
Inorder to change the datarate of a pointTopoint link, the PointToPointNetDevice installed in a node has to be retrieved. This can be done using the NetDeviceContainer where the node is associated. The example code is below,
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"));
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.