繁体   English   中英

如何在ns3中使用属性

[英]How to use Attributes in ns3

如何使用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"));

但是这里没有任何变化,有什么办法可以在主函数中设置此值。

手册中说明了属性的使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM