[英]How to change pointopoint link datarate during run time in 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 );
}
為了改變點對點鏈路的數據速率,必須檢索安裝在節點中的 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"));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.