ns3 Logging, CommandLine

Logging

$ export 'NS_LOG=UdpEchoClientApplciation=level_all'  # 모든 사건(?)을 Log로 출력
$ export 'NS_LOG=UdpEchoClientApplciation=level_all|prefix_time'  #시간을 prefix로 출력
$ export 'NS_LOG=*=level_all|prefix_func|prefix_time'

코드에

NS_LOG_COMPONENT_DEFINE ("HelloExample")
NS_LOG_INFO ("Hello");

가 정의되어 있다면

$ export NS_LOG=HelloExample=info

# 출력은
Hello
At time +2s ...

시뮬레이션이 끝나면 해당 시뮬레이션에서 사용한 로깅 모듈을 초기화 해주는 것이 좋다.

# LOG 초기화
$ export NS_LOG=

Command Line

우선 코드에

...
int
main (int argc, char *argv[])
{
  // 쓰겠다 하면
  CommandLine cmd;
  cmd.Parse (argc, argv);
  // 추가
  ...

를 추가한다.

int
main (int argc, char *argv[])
{
  uint32_t nPackets = 1;  // 변수 초기화
  CommandLine cmd;
  cmd.AddValue("npackets","Number of packets", nPackets);
  cmd.Parse (argc, argv);
  ...
  echoClient.SetAttribute("MaxPackets",UintegerValue(nPackets));
$ ./waf --run "simulation --npackets=6"

이렇게 하면 변수를 커맨드 라인을 통해 변경할 수 있다.

ns3 예제
ns3 기본 요소