gpt4 book ai didi

c++ - 如何在 ns3 中使用属性

转载 作者:行者123 更新时间:2023-11-28 05:59:36 24 4
gpt4 key购买 nike

如何使用 ns3 中的属性设置值?我在文件中定义了一个类的属性,我尝试在我的主要函数中设置。我无法改变它们。

我的问题:

这是定义:

TypeId MpTcpSocketBase::GetTypeId(void)
{
static TypeId tid = TypeId("ns3::MpTcpSocketBase")
.SetParent<TcpSocketBase>()
.AddConstructor<MpTcpSocketBase>()
.AddAttribute("CongestionControl",
"Congestion control algorithm",
EnumValue(Linked_Increases),
MakeEnumAccessor(&MpTcpSocketBase::SetCongestionCtrlAlgo),
MakeEnumChecker(Uncoupled_TCPs, "Uncoupled_TCPs",
Fully_Coupled, "Fully_Coupled",
RTT_Compensator, "RTT_Compensator",
Linked_Increases, "Linked_Increases",
COUPLED_INC, "COUPLED_INC",
COUPLED_EPSILON, "COUPLED_EPSILON",
COUPLED_SCALABLE_TCP, "COUPLED_SCALABLE_TCP",
COUPLED_FULLY, "COUPLED_FULLY",
UNCOUPLED, "UNCOUPLED"))

.AddAttribute("SchedulingAlgorithm",
"Algorithm for data distribution between sub-flows",
EnumValue(Round_Robin),
MakeEnumAccessor(&MpTcpSocketBase::SetDataDistribAlgo),
MakeEnumChecker(Round_Robin, "Round_Robin"))

.AddAttribute("PathManagement",
"Mechanism for establishing new sub-flows",
EnumValue(FullMesh),
MakeEnumAccessor(&MpTcpSocketBase::SetPathManager),
MakeEnumChecker(Default,"Default",
FullMesh, "FullMesh",
NdiffPorts, "NdiffPorts"))

.AddAttribute("MaxSubflows",
"Maximum number of sub-flows per each mptcp connection",
UintegerValue(8),
MakeUintegerAccessor(&MpTcpSocketBase::maxSubflows),
MakeUintegerChecker<uint8_t>())

.AddAttribute("RandomGap",
"Random gap between subflows setup",
UintegerValue(50),
MakeUintegerAccessor(&MpTcpSocketBase::m_rGap),
MakeUintegerChecker<uint32_t>())

.AddAttribute("Subflows",
"The list of sub-flows associated to this protocol.",
ObjectVectorValue(),
MakeObjectVectorAccessor(&MpTcpSocketBase::subflows),
MakeObjectVectorChecker<MpTcpSocketBase>())

.AddAttribute ("ShortFlowTCP", "Use TCP for short flows",
BooleanValue (false),
MakeBooleanAccessor (&MpTcpSocketBase::m_shortFlowTCP),
MakeBooleanChecker())

.AddAttribute ("AlphaPerAck", " Update alpha per ACK ",
BooleanValue (false),
MakeBooleanAccessor (&MpTcpSocketBase::m_alphaPerAck),
MakeBooleanChecker())

.AddAttribute ("ShortPlotting", " Activate large flow plotting ",
BooleanValue (false),
MakeBooleanAccessor (&MpTcpSocketBase::m_shortPlotting),
MakeBooleanChecker())

.AddAttribute ("LargePlotting", " Activate short flow plotting ",
BooleanValue (false),
MakeBooleanAccessor (&MpTcpSocketBase::m_largePlotting),
MakeBooleanChecker());

return tid;
}

这是用途:

Config::SetDefault("ns3::Ipv4GlobalRouting::FlowEcmpRouting", BooleanValue(true));
Config::SetDefault("ns3::TcpSocket::SegmentSize", UintegerValue(1400));
Config::SetDefault("ns3::TcpSocket::DelAckCount", UintegerValue(0));
Config::SetDefault("ns3::DropTailQueue::Mode", StringValue("QUEUE_MODE_PACKETS"));
Config::SetDefault("ns3::DropTailQueue::MaxPackets", UintegerValue(100));
Config::SetDefault("ns3::TcpL4Protocol::SocketType", TypeIdValue(MpTcpSocketBase::GetTypeId()));
Config::SetDefault("ns3::MpTcpSocketBase::MaxSubflows", UintegerValue(8)); // Sink
Config::SetDefault("ns3::MpTcpSocketBase::CongestionControl", StringValue("Uncoupled_TCPs"));
//Config::SetDefault("ns3::MpTcpSocketBase::PathManagement", StringValue("NdiffPorts"));

但这里没有任何变化,有什么方法可以在我的主函数中设置这个值。

最佳答案

manual 中解释了属性的使用

关于c++ - 如何在 ns3 中使用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33536305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com