ns2 에서 예제파일 소스 궁금증 입니다.

boramhw의 이미지

안녕하세요?

ns2를 설치하고 예제를 돌리고 있는 학생입니다.

예제의 많은 부분은 이해를 하였는데요 다음과 같은 부분은 잘 모르겠어서 이렇게 질문을 올립니다.

1. nam trace란?

추적하는 내용을 out.nam 에 Write한다는 건 알겠는데 정확히 무슨 내용을 trace해서 남기는지 모르겠습니다.

소스는 다음과 같습니다.

#이 부분은 nam trace를 생성해주고
set nf [open out.nam w]
$ns namtrace-all $nf

#finish proc안에서 실행시키는 것 같습니다.
proc finish {} {
global ns nf
$ns flush-trace
#Close the trace file
close $nf
#Execute nam on the trace file
exec nam out.nam &
exit 0
}

그리고 생성된 out.nam을 열어 보았더니
V -t * -v 1.0a5 -a 0
A -t * -n 1 -p 0 -o 0xffffffff -c 31 -a 1
A -t * -h 1 -m 2147483647 -s 0
n -t * -a 0 -s 0 -S UP -v circle -c black -i black
n -t * -a 1 -s 1 -S UP -v circle -c black -i black
l -t * -s 0 -d 1 -S UP -r 1000000 -D 0.01 -c black -o right
+ -t 0.5 -s 0 -d 1 -p cbr -e 500 -c 0 -i 0 -a 0 -x {0.0 1.0 0 ------- null}
- -t 0.5 -s 0 -d 1 -p cbr -e 500 -c 0 -i 0 -a 0 -x {0.0 1.0 0 ------- null}
h -t 0.5 -s 0 -d 1 -p cbr -e 500 -c 0 -i 0 -a 0 -x {0.0 1.0 -1 ------- null}
+ -t 0.505 -s 0 -d 1 -p cbr -e 500 -c 0 -i 1 -a 0 -x {0.0 1.0 1 ------- null}
.....

이런 식으로 나오더라구요

2. finish procedure 를 정의해 주는 부분의 코드들이 명확하게 이해되지 않습니다.

proc finish {} {
global ns nf //global 변수로 ns, nf생성
$ns flush-trace //flush-trace가 뭔가요?

#Close the trace file
close $nf //trace file을 닫아 주는 이유가 뭐죠?

#Execute nam on the trace file
exec nam out.nam & //이 부분에서 위에서 생성하였던 nam trace를 실행시키고
exit 0 //종료하는 것 같습니다.
}

저의 궁금증을 해결해 주신다면 정말 감사하겠습니다

모두들 좋은 하루 되세요^^

ckebabo의 이미지

예전 기억을 더듬어 말씀드리자면,

ns2 패키지 안에 아마 nam이라는 것도 들어있을 것입니다. 이건 단순히 텍스트로 시뮬레이션 결과를 보는게 아니라 눈으로 볼 수 있도록 한 것입니다. 따라서 nam용 포맷으로 시뮬레이션 결과를 출력하면 nam이라는 것으로 그 내용을 애니메이션 처럼 볼 수 있습니다. 패킷이 흘러가고 뭐 그런것들을 말이죠.

그리고 finish procedure 안의 flush-trace는 프로그래밍을 하신분이라면 짐작을 하시겠지만, 시뮬레이션 내용을 출력하기 위해 열었던 파일에 아직 기록하지 않은 부분을 강제로 기록하는 것이고, 이후에 파일을 닫는 것이죠. 그 아래 부분은 말씀하신 내용이 맞습니다.

추가적으로 프로시저안의 global은 변수의 생성이 아니라 프로시저안에서 전역변수를 사용하고자 할 때 선언하는 용도로 사용하는 키워드 입니다. ns2 시뮬레이션은 tcl스크립트를 이용해서 하기 때문에 tcl의 간단한 문법은 익히시는것이 정신건강에 좋을듯 하네요... :)

brucesabu의 이미지

Nam Trace file format에 대한 자세한 설명입니다.(메뉴얼)
http://www.isi.edu/nsnam/ns/doc/node613.html

참고하시면 되겠네요..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.