ns-3 ๋„คํŠธ์›Œํฌ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ํŠœํ† ๋ฆฌ์–ผ. ์ œ4์žฅ

ns-3 ๋„คํŠธ์›Œํฌ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ํŠœํ† ๋ฆฌ์–ผ. ์ œ4์žฅ
1,2 ์žฅ
3ํ™”

4 ๊ฐœ๋… ๊ฐœ์š”
4.1 ์ฃผ์š” ์ถ”์ƒํ™”
4.1.1 ๋…ธ๋“œ
4.1.2 ์ ์šฉ
4.1.3 ์ฑ„๋„
4.1.4 ๋„ท ๋””๋ฐ”์ด์Šค
4.1.5 ์œ„์ƒํ•™์  ๋ณด์กฐ์ž
4.2 ์ฒซ ๋ฒˆ์งธ ns-3 ์Šคํฌ๋ฆฝํŠธ
4.2.1 ์ƒ์šฉ๊ตฌ ์ฝ”๋“œ
4.2.2 ํ”Œ๋Ÿฌ๊ทธ์ธ
4.2.3 ns3 ๋„ค์ž„์ŠคํŽ˜์ด์Šค
4.2.4 ๋กœ๊น…
4.2.5 ์ฃผ์š” ๊ธฐ๋Šฅ
4.2.6 ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ ์‚ฌ์šฉ
4.2.7 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์šฉ
4.2.8 ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ
4.2.9 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ
4.3 ns-3 ์†Œ์Šค ์ฝ”๋“œ

์žฅ 4

๊ฐœ๋… ๊ฐœ์š”

ns-3 ์ฝ”๋“œ๋ฅผ ๋ฐฐ์šฐ๊ฑฐ๋‚˜ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ ํ•  ์ผ์€ ์‹œ์Šคํ…œ์˜ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ถ”์ƒํ™”๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์ด ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋ถ„๋ช…ํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํƒ„ํƒ„ํ•œ ๊ธฐ์ดˆ ์œ„์—์„œ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์„ ๋‚ด์–ด ์ด ์„น์…˜์„ ์ฝ์–ด ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

4.1 ์ฃผ์š” ์ถ”์ƒํ™”

์ด ์„น์…˜์—์„œ๋Š” ์›น์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€๋งŒ ns-3์—์„œ๋Š” ํŠน์ •ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ๋ช‡ ๊ฐ€์ง€ ์šฉ์–ด๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

4.1.1 ๋…ธ๋“œ

์ธํ„ฐ๋„ท ์ „๋ฌธ ์šฉ์–ด์—์„œ๋Š” ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜๋Š” ์ปดํ“จํ„ฐ ์žฅ์น˜๋ฅผ ํ˜ธ์ŠคํŠธ ๋˜๋Š” ์ตœ์ข… ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ns-3์€ ์ธํ„ฐ๋„ท ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ๋„คํŠธ์›Œํฌ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ํ˜ธ์ŠคํŠธ๋ผ๋Š” ์šฉ์–ด๋ฅผ ์˜๋„์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ธํ„ฐ๋„ท ๋ฐ ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ๊ณผ ๋ฐ€์ ‘ํ•œ ๊ด€๋ จ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋Œ€์‹ , ๊ทธ๋ž˜ํ”„ ์ด๋ก ์—์„œ ์œ ๋ž˜ํ•œ ๋‹ค๋ฅธ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ๋„ ์‚ฌ์šฉ๋˜๋Š” ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.๋…ธ๋“œ).

ns-3์—์„œ๋Š” ์ปดํ“จํŒ… ์žฅ์น˜์˜ ๊ธฐ๋ณธ ์ถ”์ƒํ™”๋ฅผ ๋…ธ๋“œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ถ”์ƒํ™”๋Š” C++์—์„œ Node ํด๋ž˜์Šค๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. ์ˆ˜์—… ๋…ธ๋“œ๋…ธ๋“œ (๋…ธ๋“œ)๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜์—์„œ ์ปดํ“จํŒ… ์žฅ์น˜์˜ ํ‘œํ˜„์„ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์ดํ•ดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค ๋…ธ๋“œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ปดํ“จํ„ฐ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ ์œ ์šฉํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋“œ๋ผ์ด๋ฒ„์™€ ํ•จ๊ป˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ, ํ”„๋กœํ† ์ฝœ ์Šคํƒ, ์ฃผ๋ณ€ ์žฅ์น˜ ์นด๋“œ ๋“ฑ์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ns-3์—์„œ๋„ ๋™์ผํ•œ ๊ธฐ๋ณธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

4.1.2 ์ ์šฉ

์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํ“จํ„ฐ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ํด๋ž˜์Šค๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ผ๋ถ€ ์ปดํ“จํŒ… ๋ชจ๋ธ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ, ํ”„๋กœ์„ธ์„œ ์‚ฌ์ดํด, ๋””์Šคํฌ, ๋„คํŠธ์›Œํฌ ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ปดํ“จํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง์ ‘์ ์ธ ํ˜œํƒ์„ ์ฃผ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด์— ์˜ํ•ด ์ œ์–ด๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ํš๋“ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ํŠน์ • ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์šด์˜ ์ฒด์ œ ํŠธ๋žฉ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ถŒํ•œ ์ˆ˜์ค€ ๋ณ€๊ฒฝ์—์„œ ์‹œ์Šคํ…œ๊ณผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ„์˜ ๊ตฌ๋ถ„์„ ์ด ๊ทธ๋ ค์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ns-3์—๋Š” ์šด์˜ ์ฒด์ œ์— ๋Œ€ํ•œ ์‹ค์ œ ๊ฐœ๋…์ด ์—†์œผ๋ฏ€๋กœ ๊ถŒํ•œ ์ˆ˜์ค€์ด๋‚˜ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๊ฐœ๋…๋„ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์•ฑ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. "์‹ค์ œ ์„ธ๊ณ„" ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜์–ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ns-3 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ns-3 ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜์–ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜๋œ ์„ธ๊ณ„์—์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

ns-3์—์„œ ๋ชจ๋ธ๋ง์„ ์œ„ํ•œ ์ผ๋ถ€ ํ™œ๋™์„ ์ƒ์„ฑํ•˜๋Š” ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ ์ถ”์ƒํ™”๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์ด ์ถ”์ƒํ™”๋Š” C++์—์„œ Application ํด๋ž˜์Šค๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. Application ํด๋ž˜์Šค๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜์—์„œ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด๊ธฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ƒˆ๋กœ์šด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ด€์ ์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํด๋ž˜์Šค๋ฅผ ์ „๋ฌธํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” Application ํด๋ž˜์Šค์˜ ํŠน์ˆ˜ํ™”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. UdpEchoClient์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ะธ UdpEchoServer์‘์šฉ ํ”„๋กœ๊ทธ๋žจ. ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋“ฏ์ด ์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ์ƒ์„ฑํ•˜๊ณ  ์—์ฝ”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

4.1.3 ์ฑ„๋„

ํ˜„์‹ค ์„ธ๊ณ„์—์„œ๋Š” ์ปดํ“จํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๋Š” ๋ฏธ๋””์–ด๋ฅผ ์ฑ„๋„์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋”๋„ท ์ผ€์ด๋ธ”์„ ๋ฒฝ๋ฉด ์ฝ˜์„ผํŠธ์— ์—ฐ๊ฒฐํ•˜๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ์ด๋”๋„ท ๋งํฌ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ด์…˜๋œ ns-3 ์„ธ๊ณ„์—์„œ๋Š” ๋…ธ๋“œ๊ฐ€ ํ†ต์‹  ์ฑ„๋„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ์ฒด์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ†ต์‹  ํ•˜์œ„ ๋„คํŠธ์›Œํฌ์˜ ๊ธฐ๋ณธ ์ถ”์ƒํ™”๋ฅผ ์ฑ„๋„์ด๋ผ๊ณ  ํ•˜๋ฉฐ C++์—์„œ๋Š” ์ฑ„๋„ ํด๋ž˜์Šค๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์Šค ์ฑ„๋„Channel ์„œ๋ธŒ๋„ท ๊ฐœ์ฒด์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ด€๋ฆฌํ•˜๊ณ  ํ˜ธ์ŠคํŠธ๋ฅผ ๊ฐœ์ฒด์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฑ„๋„์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธก๋ฉด์—์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ „๋ฌธํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฑ„๋„ ์ „๋ฌธํ™”๋Š” ์ „์„ ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•œ ๊ฒƒ์„ ๋ชจ๋ธ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์šฉ ์ฑ„๋„์€ ๋Œ€ํ˜• ์ด๋”๋„ท ์Šค์œ„์น˜๋‚˜ ๋ฌด์„  ๋„คํŠธ์›Œํฌ์˜ ๊ฒฝ์šฐ ์žฅ์• ๋ฌผ๋กœ ๊ฐ€๋“ ์ฐฌ XNUMX์ฐจ์› ๊ณต๊ฐ„๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๊ฒƒ์„ ๋ชจ๋ธ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์ฑ„๋„์˜ ํŠน์ˆ˜ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Csma์ฑ„๋„CsmaChannel, PointToPointChannelPointToPointChannel ะธ Wifi์ฑ„๋„Wifi์ฑ„๋„. Csma์ฑ„๋„์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ˜์†กํŒŒ ๊ฐ์ง€ ๋‹ค์ค‘ ์•ก์„ธ์Šค ํ†ต์‹  ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ•˜๋Š” ํ†ต์‹  ์„œ๋ธŒ๋„ท ๋ฒ„์ „์„ ๋ชจ๋ธ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ด๋”๋„ท๊ณผ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

4.1.4 ๋„ท ๋””๋ฐ”์ด์Šค

์˜ˆ์ „์—๋Š” ์ปดํ“จํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ํŠน์ • ๋„คํŠธ์›Œํฌ ์ผ€์ด๋ธ”๊ณผ ์ปดํ“จํ„ฐ์— ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ์ฃผ๋ณ€ ์žฅ์น˜ ์นด๋“œ(PC ์šฉ์–ด๋กœ)๋ผ๋Š” ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋ฅผ ๊ตฌ์ž…ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋ณ€ ์žฅ์น˜ ์นด๋“œ๊ฐ€ ์ผ๋ถ€ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๊ฒฝ์šฐ ์ด๋ฅผ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ์นด๋“œ ๋˜๋Š” ๋„คํŠธ์›Œํฌ ์นด๋“œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ๋Š” ํ†ตํ•ฉ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ํ•˜๋“œ์›จ์–ด์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๋ณ„๋„์˜ ์žฅ์น˜๋กœ ์ธ์‹๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์นด๋“œ๋Š” ํ•˜๋“œ์›จ์–ด๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹์†Œํ”„ํŠธ์›จ์–ด ๋“œ๋ผ์ด๋ฒ„ ์—†์ด๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Unix(๋˜๋Š” Linux)์—์„œ๋Š” ์ฃผ๋ณ€ ์žฅ๋น„๊ฐ€ ์žฅ์น˜๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค. ์žฅ์น˜๋Š” ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌ๋˜๊ณ , ๋„คํŠธ์›Œํฌ ์žฅ์น˜(NIC)๋Š” ๋„คํŠธ์›Œํฌ ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„(๋„คํŠธ์›Œํฌ ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„)์„ ํ†ต์นญํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค(๋„ท ์žฅ์น˜). Unix์™€ Linux์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. eth0.

ns-3์—์„œ ๋„คํŠธ์›Œํฌ ์žฅ์น˜ ์ถ”์ƒํ™”๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋“œ๋ผ์ด๋ฒ„์™€ ๋ชจ๋ธ๋ง๋˜๋Š” ํ•˜๋“œ์›จ์–ด๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ด์…˜์—์„œ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋Š” ์ฑ„๋„์„ ํ†ตํ•ด ๋‹ค๋ฅธ ๋…ธ๋“œ์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋“œ์— "์„ค์น˜"๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์ปดํ“จํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋…ธ๋“œ๋Š” ์—ฌ๋Ÿฌ ์žฅ์น˜๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ฑ„๋„์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NetDevices.

์žฅ์น˜์˜ ๋„คํŠธ์›Œํฌ ์ถ”์ƒํ™”๋Š” C++์—์„œ ํด๋ž˜์Šค๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. NetDevice. ์ˆ˜์—… NetDevice ๋…ธ๋“œ ๋ฐ ์ฑ„๋„ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๋Š” ์˜๋ฏธ์—์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ „๋ฌธํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž์Šต์„œ์—์„œ๋Š” NetDevice์˜ ์—ฌ๋Ÿฌ ํŠน์ˆ˜ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. CsmaNet์žฅ์น˜, PointToPointNet์žฅ์น˜ ะธ WifiNet์žฅ์น˜. ์ด๋”๋„ท ๋„คํŠธ์›Œํฌ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ๋„คํŠธ์›Œํฌ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„๋œ ๊ฒƒ์ฒ˜๋Ÿผ Ethernet, CsmaNet์žฅ์น˜ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Csma์ฑ„๋„, PointToPointNet์žฅ์น˜ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ์ธํŠธํˆฌํฌ์ธํŠธ์ฑ„๋„๊ณผ WifiNet์žฅ์น˜ - ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์™€์ดํŒŒ์ด ์ฑ„๋„.

4.1.5 ์œ„์ƒํ•™์  ๋ณด์กฐ์ž

์‹ค์ œ ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ์นด๋“œ๊ฐ€ ์ถ”๊ฐ€๋œ(๋˜๋Š” ๋‚ด์žฅ๋œ) ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ns-3์—์„œ๋Š” NetDevice๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์ฒด ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ, NetDevice ะธ ์ฑ„๋„.

NetDevice๋ฅผ ๋…ธ๋“œ์— ์—ฐ๊ฒฐํ•˜๊ณ  NetDevice๋ฅผ ๋งํฌ์— ์—ฐ๊ฒฐํ•˜๊ณ  IP ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ns-3์—์„œ๋Š” ์ด ์ž‘์—…์„ ์ตœ๋Œ€ํ•œ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์†Œ์œ„ ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด NetDevice๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋งŽ์€ ns-3 ์ปค๋„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ , MAC ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๋…ธ๋“œ์— ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋ฅผ ์„ค์น˜ํ•˜๊ณ , ๋…ธ๋“œ์˜ ํ”„๋กœํ† ์ฝœ ์Šคํƒ์„ ๊ตฌ์„ฑํ•œ ๋‹ค์Œ NetDevice๋ฅผ ์ฑ„๋„์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์žฅ์น˜๋ฅผ ๋‹ค์ค‘ ์ง€์  ๋งํฌ์— ์—ฐ๊ฒฐํ•œ ๋‹ค์Œ ๊ฐœ๋ณ„ ๋„คํŠธ์›Œํฌ๋ฅผ Internetworks ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋” ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ท€ํ•˜์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๋งŽ์€ ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ๋ชจ๋ธ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ ๊ฐœ์ฒด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

4.2 ์ฒซ ๋ฒˆ์งธ ns-3 ์Šคํฌ๋ฆฝํŠธ

์œ„์—์„œ ์ œ์•ˆํ•œ ๋Œ€๋กœ ์‹œ์Šคํ…œ์„ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์˜ repos๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ns-3 ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ ๊ณต๊ฐœ

ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด ns-3์˜ ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „์„ ๋นŒ๋“œํ•  ๋•Œ ์ถœ๋ ฅ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋นŒ๋“œํ•˜์„ธ์š”.
$ ./waf ๊ตฌ์„ฑ โ€”๋นŒ๋“œ ํ”„๋กœํ•„=๋ฆด๋ฆฌ์Šค โ€”์•„์›ƒ=๋นŒ๋“œ/๋ฆด๋ฆฌ์Šค,
$ ./waf ๋นŒ๋“œ

๊ฑฐ๊ธฐ์—์„œ ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AUTHORS       examples      scratch       utils       waf.bat*
bindings      LICENSE       src           utils.py    waf-tools
build         ns3           test.py*      utils.pyc   wscript
CHANGES.html  README        testpy-output VERSION     wutils.py
doc           RELEASE_NOTES testpy.supp   waf*        wutils.pyc

๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ ์˜ˆ์ œ/ํŠœํ† ๋ฆฌ์–ผ. ๊ฑฐ๊ธฐ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒŒ์ผ์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ.cc. ์ด๋Š” ๋‘ ๋…ธ๋“œ ์‚ฌ์ด์— ๊ฐ„๋‹จํ•œ ์ง€์  ๊ฐ„ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๊ณ  ๋…ธ๋“œ ๊ฐ„์— ํ•˜๋‚˜์˜ ํŒจํ‚ท์„ ์ „์†กํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•œ ์ค„์”ฉ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์ฆ๊ฒจ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ง‘๊ธฐ์—์„œ first.cc๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

4.2.1 ์ƒ์šฉ๊ตฌ ์ฝ”๋“œ
ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์€ ํŽธ์ง‘๊ธฐ ๋ชจ๋“œ ์ค„์ž…๋‹ˆ๋‹ค. ์ด๋งฅ์Šค. ์ด๋Š” ์†Œ์Šค ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹ ์ง€์ • ๊ทœ์น™(์ฝ”๋”ฉ ์Šคํƒ€์ผ)์„ emacs์— ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */

์ด๊ฑด ํ•ญ์ƒ ๋…ผ๋ž€์ด ๋งŽ์€ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋กœ ๊ธฐ๋ก์„ ์„ธ์›Œ์„œ ๋ฐ”๋กœ์žก์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ns-3 ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ์—ฌ๋œ ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋”ฉ ์Šคํƒ€์ผ์„ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์— ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜๋ ค๋ฉด ๊ฒฐ๊ตญ ํŒŒ์ผ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ns-3 ์ฝ”๋”ฉ ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ/codingstd.txt ๋˜๋Š” ํ”„๋กœ์ ํŠธ ์›นํŽ˜์ด์ง€์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค: https://www.nsnam.org/develop/contributing-code/coding-style/.

ns-3 ์ฝ”๋“œ์˜ ๋ชจ์–‘๊ณผ ๋Š๋‚Œ์— ์ต์ˆ™ํ•ด์ง€๊ณ  ์ฝ”๋“œ๋กœ ์ž‘์—…ํ•  ๋•Œ๋งˆ๋‹ค ์ด ํ‘œ์ค€์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๊ฐœ๋ฐœํŒ€๊ณผ ๊ธฐ์—ฌ์ž๋“ค์€ ์•ฝ๊ฐ„์˜ ๋ถˆํ‰ ๋์— ์ด์— ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ emacs ๋ชจ๋“œ ํ–‰์„ ์‚ฌ์šฉํ•˜๋ฉด emacs ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์˜ฌ๋ฐ”๋ฅธ ํ˜•์‹์„ ์‰ฝ๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ns-3 ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. GNU ์ผ๋ฐ˜ ๊ณต์ค‘ ์‚ฌ์šฉ ํ—ˆ๊ฐ€์„œ. ๊ฐ ns-3 ๋ฐฐํฌ ํŒŒ์ผ์—์„œ ์ ์ ˆํ•œ GNU ๋ฒ•์  ํ—ค๋”๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด GPL ํ…์ŠคํŠธ ๋ฐ ์ž‘์„ฑ์ž ์œ„์— ns-3 ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๋Š” ๊ธฐ๊ด€ ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•œ ์ €์ž‘๊ถŒ ํ‘œ์‹œ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

/* 
* This program is free software; you can redistribute it and/or modify 
* it under the terms of the GNU General Public License version 2 as 
* published by the Free Software Foundation; 
*
* This program is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
* GNU General Public License for more details. 
* 
* You should have received a copy of the GNU General Public License 
* along with this program; if not, write to the Free Software 
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
*/

4.2.2 ํ”Œ๋Ÿฌ๊ทธ์ธ

์ฝ”๋“œ ์ž์ฒด๋Š” ์ผ๋ จ์˜ ํฌํ•จ ๋ฌธ(ํฌํ•จ).

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"

๊ณ ๊ธ‰ ์Šคํฌ๋ฆฝํŒ… ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” ์ˆ˜๋งŽ์€ ํ—ค๋” ํŒŒ์ผ์— ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ธฐ ์œ„ํ•ด ์šฉ๋„์— ๋”ฐ๋ผ ํฐ ๋ชจ๋“ˆ๋กœ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ฃผ์–ด์ง„ ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ํ—ค๋” ํŒŒ์ผ์„ ์žฌ๊ท€์ ์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ๋‹จ์ผ ํ—ค๋” ํŒŒ์ผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ํ—ค๋”๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ์ข…์†์„ฑ ๋ชฉ๋ก์„ ์–ป์„ ํ•„์š” ์—†์ด ํŒŒ์ผ ๊ทธ๋ฃน์„ ๋งค์šฐ ์„ธ๋ฐ€ํ•˜๊ฒŒ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์•„๋‹ˆ์ง€๋งŒ ํ™•์‹คํžˆ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์ด ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

๊ฐ ns-3 ํฌํ•จ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. ns3 (๋นŒ๋“œ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ) ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์ค‘์— ํŒŒ์ผ ์ด๋ฆ„ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ns3/core-module.h ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ns-3 ๋ชจ๋“ˆ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค/์ฝ”์–ด ์„ค์น˜ํ•œ ๋ฆด๋ฆฌ์Šค์—์„œ. ์ด ๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก์—์„œ ๋งŽ์€ ์ˆ˜์˜ ํ—ค๋” ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ๋ฆฝ์„ ํ•˜๊ฒŒ ๋˜๋ฉด, ์™€ํ”„ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ns3 ๋””๋ ‰ํ† ๋ฆฌ์— ๊ณต๊ฐœ ํ—ค๋” ํŒŒ์ผ์„ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ/๋””๋ฒ„๊ทธ

ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด ns-3์˜ ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „์„ ๋นŒ๋“œํ•  ๋•Œ ์ถœ๋ ฅ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋นŒ๋“œํ•˜์„ธ์š”.
$ ./waf ๊ตฌ์„ฑ --build-profile=debug --out=๋นŒ๋“œ/๋””๋ฒ„๊ทธ
$ ./waf ๋นŒ๋“œ
๋˜๋Š”
$ ./waf ๊ตฌ์„ฑ --build-profile=์ตœ์ ํ™” --out=๋นŒ๋“œ/์ตœ์ ํ™”
$ ./waf ๋นŒ๋“œ

๋˜๋Š” ๋นŒ๋“œ/์ตœ์ ํ™”, ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์™€ํ”„ ๋˜ํ•œ ๋ชจ๋“  ๊ณต๊ฐœ ํ—ค๋” ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“ˆ ํฌํ•จ ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋‹น์‹ ์€ ์ด ๊ฐ€์ด๋“œ๋ฅผ ์ข…๊ต์ ์œผ๋กœ ๋”ฐ๋ฅด๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฏธ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

$ ./waf -d debug --enable-examples --enable-tests configure

์˜ˆ์ œ์™€ ํ…Œ์ŠคํŠธ๊ฐ€ ํฌํ•จ๋œ ๋””๋ฒ„๊ทธ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ๋„ ๊ทธ๋žฌ์–ด์š”

$ ./waf

ํ”„๋กœ์ ํŠธ๋ฅผ ์กฐ๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณด๋ฉด ../../๋นŒ๋“œ/๋””๋ฒ„๊ทธ/ns3๋ฅผ ํด๋ฆญํ•˜๋ฉด ์œ„์— ํ‘œ์‹œ๋œ XNUMX๊ฐœ ๋ชจ๋“ˆ์˜ ํ—ค๋” ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๋ฉด ํ•ด๋‹น ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๊ณต์šฉ ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.2.3 ns3 ๋„ค์ž„์ŠคํŽ˜์ด์Šค

์Šคํฌ๋ฆฝํŠธ์˜ ๋‹ค์Œ ์ค„ ์ฒซ ๋ฒˆ์งธ.cc ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์„ ์–ธ์ž…๋‹ˆ๋‹ค.

using namespace ns3;

ns-3 ํ”„๋กœ์ ํŠธ๋Š” ns3์ด๋ผ๋Š” C++ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋“  ns-3 ๊ด€๋ จ ์„ ์–ธ์„ ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์™ธ๋ถ€์˜ ๋ฒ”์œ„๋กœ ๊ทธ๋ฃนํ™”ํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ์ฝ”๋“œ์™€์˜ ํ†ตํ•ฉ์— ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. C++ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ns-3 ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ํ˜„์žฌ(์ „์—ญ) ์„ ์–ธ ์˜์—ญ์— ๋„์ž…๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ด ์„ ์–ธ ํ›„์— ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ns-3 ์ฝ”๋“œ ์•ž์— ns3::scope ๊ถŒํ•œ ์—ฐ์‚ฐ์ž๋ฅผ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฉ‹์ง„ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด ๊ฑฐ์˜ ๋ชจ๋“  C++ ๊ต๊ณผ์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  std ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์„ ์–ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ns3 ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋น„๊ตํ•ด ๋ณด์„ธ์š”. using namespace std; ์ถœ๋ ฅ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ ์ž‘์—…์˜ ์˜ˆ ์ฝ”์šฐํŠธ ๊ทธ๋ฆฌ๊ณ  ์ŠคํŠธ๋ฆผ.

4.2.4 ๋กœ๊น…

์Šคํฌ๋ฆฝํŠธ์˜ ๋‹ค์Œ ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

์šฐ๋ฆฌ๋Š” ์ด ์„ฑ๋ช…์„œ๋ฅผ ๋ฌธ์„œ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•œ ํŽธ๋ฆฌํ•œ ์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋…์†Œ. ns-3 ํ”„๋กœ์ ํŠธ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋ฉด ํƒ์ƒ‰ ๋ชจ์Œ์— ๋ฌธ์„œ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์„ค๋ช…์„œ ํŽ˜์ด์ง€๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค. ns-3์˜ ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „์— ๋Œ€ํ•œ ๋ฌธ์„œ๋กœ ์ด๋™ํ•˜๋Š” "์ตœ์‹  ๋ฆด๋ฆฌ์Šค" ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. "API ์„ค๋ช…์„œ" ๋งํฌ๋ฅผ ์„ ํƒํ•˜๋ฉด ns-3 API ์„ค๋ช…์„œ ํŽ˜์ด์ง€๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€ ์™ผ์ชฝ์—๋Š” ๋ฌธ์„œ ๊ตฌ์กฐ์˜ ๊ทธ๋ž˜ํ”ฝ ํ‘œํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๊ธฐ ์ข‹์€ ๊ณณ์€ ns-3 ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ๋ชจ๋“ˆ ns-3 "์ฑ…"์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐœํ•˜๋ฉด ๋ชจ๋“ˆ, ns-3 ๋ชจ๋“ˆ ๋ฌธ์„œ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์—ฌ๊ธฐ์„œ ๋ชจ๋“ˆ์˜ ๊ฐœ๋…์€ ์œ„ ๋ชจ๋“ˆ์— ํฌํ•จ๋œ ํŒŒ์ผ๊ณผ ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ns-3 ๋กœ๊น… ํ•˜์œ„ ์‹œ์Šคํ…œ์€ ์„น์…˜์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊น… ๋ชจ๋“ˆ ์‚ฌ์šฉ์ด๋ฏ€๋กœ ์ด ํŠœํ† ๋ฆฌ์–ผ์˜ ๋’ท๋ถ€๋ถ„์—์„œ ๋‹ค์‹œ ๋‹ค๋ฃจ๊ฒ ์ง€๋งŒ, ๋ชจ๋“ˆ์„ ์‚ดํŽด๋ณด๋ฉด ์œ„์˜ ์„ค๋ช…์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ๊ทธ๋ฆฌ๊ณ  ์ฑ…์„ ํŽผ์น˜๋ฉด ๋””๋ฒ„๊น… ๋„๊ตฌ๊ทธ๋Ÿฐ ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด ๋กœ๊น…. ํด๋ฆญ ๋กœ๊น….

์ด์ œ ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋…์†Œ ๋ชจ๋“ˆ์šฉ ๋กœ๊น…. ํŽ˜์ด์ง€ ์ƒ๋‹จ์˜ ๋งคํฌ๋กœ ๋ชฉ๋ก์— NS_LOG_COMPONENT_DEFINE์— ๋Œ€ํ•œ ํ•ญ๋ชฉ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๊ธฐ ์ „์— ๋“ฑ๋ก ๋ชจ๋“ˆ์˜ "์ƒ์„ธ ์„ค๋ช…"์„ ๋ณด๊ณ  ์ผ๋ฐ˜์ ์ธ ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜์‹ญ์‹œ์˜ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์•„๋ž˜๋กœ ์Šคํฌ๋กคํ•˜๊ฑฐ๋‚˜ ์ฐจํŠธ ์•„๋ž˜์˜ "๋”๋ณด๊ธฐ..."๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์•„์ด๋””์–ด๋ฅผ ์–ป์€ ํ›„์—๋Š” ํŠน์ • NS_LOG_COMPONENT_DEFINE์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. ์—ฌ๊ธฐ์— ๋ฌธ์„œ๋ฅผ ๋ณต์ œํ•˜์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ์š”์•ฝํ•˜๋ฉด ์ด ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋“ฑ๋ก ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. FirstScript์˜ˆ, ์ด๋ฆ„์„ ์ฐธ์กฐํ•˜์—ฌ ๋ฉ”์‹œ์ง€์˜ ์ฝ˜์†” ๋กœ๊น…์„ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.2.5 ์ฃผ์š” ๊ธฐ๋Šฅ

๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ ์ค„์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

int 
main (int argc, char *argv[])
{ 

์ด๊ฒƒ์€ ๋‹จ์ˆœํžˆ ํ”„๋กœ๊ทธ๋žจ(์Šคํฌ๋ฆฝํŠธ)์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์„ ์–ธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ C++ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฉ”์ธ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์•ผ ํ•˜๋ฉฐ ์ด๊ฒƒ์ด ๋จผ์ € ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ํŠน๋ณ„ํ•œ ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. ns-3 ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹จ์ง€ C++ ํ”„๋กœ๊ทธ๋žจ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์ค„์€ ์‹œ๊ฐ„ ๋ถ„ํ•ด๋Šฅ์„ ๊ธฐ๋ณธ๊ฐ’์ธ 1๋‚˜๋…ธ์ดˆ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Time::SetResolution (Time::NS);

์‹œ๊ฐ„ ๋ถ„ํ•ด๋Šฅ ๋˜๋Š” ๊ฐ„๋‹จํžˆ ๋ถ„ํ•ด๋Šฅ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์‹œ๊ฐ„ ๊ฐ’์ž…๋‹ˆ๋‹ค(๋‘ ์‹œ๊ฐ„ ์‚ฌ์ด์— ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ฐจ์ด). ํ•ด์ƒ๋„๋Š” ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ๋งŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ•˜๋ฏ€๋กœ ํ•ด์ƒ๋„๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜์—ฌ ์ถ”๊ฐ€ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. (ํ•ด์ƒ๋„๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์€ XNUMX๋‚˜๋…ธ์ดˆ๋กœ ์„ค์ •๋˜๋ฉฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์‹œ์ž‘๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.)

๋‹ค์Œ ๋‘ ์ค„์˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋‚ด์žฅ๋œ ๋‘ ๊ฐœ์˜ ๋กœ๊น… ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์—์ฝ”ํด๋ผ์ด์–ธํŠธ ะธ ์—์ฝ”์„œ๋ฒ„:

LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);

๋กœ๊น… ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ์„ค๋ช…์„œ๋ฅผ ์ฝ์œผ๋ฉด ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ˆ˜์ค€์˜ ๋กœ๊น…/์„ธ๋ถ„์„ฑ์ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ์ค„์˜ ์ฝ”๋“œ๋Š” ์—์ฝ” ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„์— ๋Œ€ํ•ด INFO ์ˆ˜์ค€์— ๋Œ€ํ•œ ๋””๋ฒ„๊ทธ ๋กœ๊น…์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ˆ˜์ค€์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ค‘์— ํŒจํ‚ท์„ ๋ณด๋‚ด๊ณ  ๋ฐ›์„ ๋•Œ ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ํ† ํด๋กœ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ์ž‘์—…์„ ์ตœ๋Œ€ํ•œ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

4.2.6 ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ ์‚ฌ์šฉ

์Šคํฌ๋ฆฝํŠธ์˜ ๋‹ค์Œ ๋‘ ์ค„์˜ ์ฝ”๋“œ๋Š” ์‹ค์ œ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์—์„œ ์ปดํ“จํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Node ns-3 ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

NodeContainer nodes;
nodes.Create (2);

๊ณ„์†ํ•˜๊ธฐ ์ „์— ์ˆ˜์—…์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ. ํŠน์ • ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋ฌธ์„œ์— ์ ‘๊ทผํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ํƒญ์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ํŽ˜์ด์ง€์— ๋…์†Œ. ์ด๋ฏธ Doxygen์ด ์—ด๋ ค ์žˆ๋‹ค๋ฉด ํŽ˜์ด์ง€ ์ƒ๋‹จ๊นŒ์ง€ ์Šคํฌ๋กคํ•˜์—ฌ ํด๋ž˜์Šค ํƒญ์„ ์„ ํƒํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ํƒญ ์„ธํŠธ๊ฐ€ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•˜๋ฉฐ ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ํด๋ž˜์Šค ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์ด ํƒญ ์•„๋ž˜์—๋Š” ๋ชจ๋“  ns-3 ํด๋ž˜์Šค ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋กœ ์Šคํฌ๋กคํ•˜์—ฌ ns3::๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ. ํด๋ž˜์Šค๋ฅผ ์ฐพ์œผ๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์„ ํƒํ•˜์—ฌ ํ•ด๋‹น ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋ฌธ์„œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ•ต์‹ฌ ์ถ”์ƒํ™” ์ค‘ ํ•˜๋‚˜๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœํ† ์ฝœ ์Šคํƒ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์ฃผ๋ณ€ ์žฅ์น˜ ์นด๋“œ ๋“ฑ์„ ์ถ”๊ฐ€ํ•  ์ปดํ“จํ„ฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋“  ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑ, ๊ด€๋ฆฌ ๋ฐ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ, ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์€ ๋‹จ์ˆœํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ, ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋…ธ๋“œ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„์—์„œ๋Š” ๋…ธ๋“œ ๊ฐœ์ฒด์— ๋Œ€ํ•ด Create ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ์— ๋‘ ๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ๋…์†Œ, ์ปจํ…Œ์ด๋„ˆ๋Š” ns-3 ์‹œ์Šคํ…œ์— ๋‘ ๊ฐœ์˜ ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ ๋‚ด๋ถ€์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ์—์„œ ์ƒ์„ฑ๋œ ๋…ธ๋“œ๋Š” ์•„์ง ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ† ํด๋กœ์ง€ ๊ตฌ์ถ•์˜ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋…ธ๋“œ๋ฅผ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ง€์›ํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ์˜ ๋„คํŠธ์›Œํฌ๋Š” ๋‘ ๋…ธ๋“œ ๊ฐ„์˜ ์ง€์  ๊ฐ„ ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋Ÿฌํ•œ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํฌ์ธํŠธํˆฌํฌ์ธํŠธ๋„์šฐ๋ฏธ

์—ฐ๊ฒฐ์— ํ•„์š”ํ•œ ํ•˜์œ„ ์ˆ˜์ค€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์นœ์ˆ™ํ•œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์  ๊ฐ„ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋‘ ๊ฐ€์ง€ ํ•ต์‹ฌ ์ถ”์ƒํ™”๋ฅผ ๊ธฐ์–ตํ•˜์„ธ์š”. NetDevice ะธ ์ฑ„๋„. ์‹ค์ œ ์„ธ๊ณ„์—์„œ ์ด๋Ÿฌํ•œ ์šฉ์–ด๋Š” ๋Œ€๋žต ์ฃผ๋ณ€ ์žฅ์น˜ ์นด๋“œ ๋ฐ ๋„คํŠธ์›Œํฌ ์ผ€์ด๋ธ”์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ๋‘ ๊ฐ€์ง€๋Š” ์„œ๋กœ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ์žฅ์น˜ ๋“ฑ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ์•„๋ฌด๋„ ์—†์Šต๋‹ˆ๋‹ค. Ethernet ๋ฌด์„  ์ฑ„๋„์„ ํ†ตํ•ด. ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ๋Š” ์ด๋Ÿฌํ•œ ๊ธด๋ฐ€ํ•œ ๊ด€๊ณ„๋ฅผ ๋”ฐ๋ฅด๋ฏ€๋กœ ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ๋‹จ์ผ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํฌ์ธํŠธํˆฌํฌ์ธํŠธ๋„์šฐ๋ฏธ ns-3 ๊ฐœ์ฒด ์„ค์ • ๋ฐ ์—ฐ๊ฒฐ์šฉ PointToPointNet์žฅ์น˜ ะธ ํฌ์ธํŠธํˆฌํฌ์ธํŠธ์ฑ„๋„. ์Šคํฌ๋ฆฝํŠธ์˜ ๋‹ค์Œ ์„ธ ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); 
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

์ฒซ ๋ฒˆ์งธ ์ค„,

PointToPointHelper pointToPoint;

์Šคํƒ์— ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํฌ์ธํŠธํˆฌํฌ์ธํŠธ๋„์šฐ๋ฏธ. ์ตœ์ƒ์œ„ ์ˆ˜์ค€์˜ ๊ด€์ ์—์„œ ๋‹ค์Œ ์ค„์€

pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));

์‚ฌ๋ฌผ์„ ๋งํ•ด์ค€๋‹ค ํฌ์ธํŠธํˆฌํฌ์ธํŠธ๋„์šฐ๋ฏธ ๊ฐ’ "5 Mbit/s"(์ดˆ๋‹น XNUMX๋ฉ”๊ฐ€๋น„ํŠธ)๋ฅผ "๋ฐ์ดํ„ฐ ์†๋„".

๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ "DataRate" ๋ฌธ์ž์—ด์€ ์†์„ฑ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. PointToPointNet์žฅ์น˜. ๋‹น์‹ ์ด ๋ณด๋ฉด ๋…์†Œ ๋ฐ˜์„ ์œ„ํ•ด์„œ ns3::PointToPointNetDevice ๊ทธ๋ฆฌ๊ณ  ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ์—์„œ ์œ ํ˜• ID ๊ฐ€์ ธ์˜ค๊ธฐ ์žฅ์น˜์— ๋Œ€ํ•ด ์ •์˜๋œ ์†์„ฑ ๋ชฉ๋ก์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์ค‘์—๋Š” โ€œ๋ฐ์ดํ„ฐ ์†๋„" ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ns-3 ๊ฐ์ฒด์—๋Š” ์œ ์‚ฌํ•œ ์†์„ฑ ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๊ณ ๋„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์Šทํ•˜๋‹ค "๋ฐ์ดํ„ฐ ์†๋„" PointToPointNetDevice์—์„œ PointToPointChannel๊ณผ ์—ฐ๊ฒฐ๋œ "Delay" ํŠน์„ฑ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์ค„

pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

ะณะพะฒะพั€ะธั‚ ํฌ์ธํŠธํˆฌํฌ์ธํŠธ๋„์šฐ๋ฏธ ์ดํ›„์— ์ƒ์„ฑ๋˜๋Š” ์ง€์  ๊ฐ„ ๋งํฌ์˜ ์ „ํŒŒ ์ง€์—ฐ ๊ฐ’์œผ๋กœ "2ms"(XNUMX๋ฐ€๋ฆฌ์ดˆ) ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

NetDevice์ปจํ…Œ์ด๋„ˆ

ํ˜„์žฌ ์šฐ๋ฆฌ๋Š” ์Šคํฌ๋ฆฝํŠธ์— ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ, ์—ฌ๊ธฐ์—๋Š” ๋‘ ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํฌ์ธํŠธํˆฌํฌ์ธํŠธ๋„์šฐ๋ฏธ, ๊ฐ์ฒด ์ƒ์„ฑ์„ ์œ„ํ•ด ์ค€๋น„๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. PointToPointNet์žฅ์น˜ PointToPointChannel ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. NodeContainer ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์งˆ๋ฌธํ•ฉ๋‹ˆ๋‹ค. ํฌ์ธํŠธํˆฌํฌ์ธํŠธ๋„์šฐ๋ฏธ ๋‹น์‚ฌ ์žฅ์น˜์˜ ์ƒ์„ฑ, ๊ตฌ์„ฑ ๋ฐ ์„ค์น˜์™€ ๊ด€๋ จ๋œ ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ๋ชจ๋“  ๊ฐ์ฒด์˜ ๋ชฉ๋ก์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. NetDevice, ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” NetDevice์ปจํ…Œ์ด๋„ˆ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ณด๊ด€ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‘ ์ค„์˜ ์ฝ”๋“œ๋Š”

NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);

์žฅ์น˜ ๋ฐ ์ฑ„๋„ ์„ค์ •์„ ์™„๋ฃŒํ•˜์„ธ์š”. ์ฒซ ๋ฒˆ์งธ ์ค„์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์žฅ์น˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ์ค„์€ ์ฃผ์š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ• ์„ค์น˜ ์‚ฌ๋ฌผ ํฌ์ธํŠธํˆฌํฌ์ธํŠธ๋„์šฐ๋ฏธ ๋ฐ›์•„๋“ค์ด๋‹ค ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ. ๋‚ด๋ถ€์— NetDevice์ปจํ…Œ์ด๋„ˆ ์œ„์น˜ํ•œ ๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•ด ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(์ ๋Œ€์  ํ†ต์‹ ์˜ ๊ฒฝ์šฐ ์ •ํ™•ํžˆ ๋‘ ๊ฐœ๊ฐ€ ์žˆ์–ด์•ผ ํ•จ). PointToPointNet์žฅ์น˜ ์ƒ์„ฑ๋˜์–ด ์žฅ์น˜ ์ปจํ…Œ์ด๋„ˆ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํฌ์ธํŠธํˆฌํฌ์ธํŠธ์ฑ„๋„ ์ƒ์„ฑ๋˜๊ณ  ๋‘ ๊ฐœ๊ฐ€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. PointToPointNet์žฅ์น˜. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ํฌ์ธํŠธํˆฌํฌ์ธํŠธ๋„์šฐ๋ฏธ, ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ํ•ด๋‹น ์†์„ฑ์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ „ํ™”๋ฅผ ๊ฑธ๊ณ  ๋‚˜๋ฉด pointToPoint.Install(๋…ธ๋“œ) ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ์—๋Š” ์ง€์ ๊ฐ„ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๊ณ  ๋…ธ๋“œ ์‚ฌ์ด์— ํ•˜๋‚˜์˜ ์ง€์ ๊ฐ„ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ์žฅ์น˜ ๋ชจ๋‘ ์ฑ„๋„์„ ํ†ตํ•ด XNUMX๋ฐ€๋ฆฌ์ดˆ์˜ ์ „์†ก ์ง€์—ฐ์„ ํ†ตํ•ด ์ดˆ๋‹น XNUMX๋ฉ”๊ฐ€๋น„ํŠธ์˜ ์†๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋„๋ก ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ธํ„ฐ๋„ท์Šคํƒํ—ฌํผ

์ด์ œ ๋…ธ๋“œ์™€ ์žฅ์น˜๊ฐ€ ๊ตฌ์„ฑ๋˜์—ˆ์ง€๋งŒ ๋…ธ๋“œ์— ํ”„๋กœํ† ์ฝœ ์Šคํƒ์ด ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‘ ์ค„์˜ ์ฝ”๋“œ๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

InternetStackHelper stack;
stack.Install (nodes);

์ธํ„ฐ๋„ท์Šคํƒํ—ฌํผ - ์ง€์ ๊ฐ„ ๋„คํŠธ์›Œํฌ ์žฅ์น˜์šฉ PointToPointHelper์™€ ์œ ์‚ฌํ•œ ์ธํ„ฐ๋„ท ์Šคํƒ์šฉ ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ์ž…๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ• ์„ค์น˜ NodeContainer๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰๋˜๋ฉด ๊ฐ ์ปจํ…Œ์ด๋„ˆ ๋…ธ๋“œ์— ์ธํ„ฐ๋„ท ์Šคํƒ(TCP, UDP, IP ๋“ฑ)์ด ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

IPv4AddressHelper

๊ทธ๋Ÿฐ ๋‹ค์Œ ์žฅ์น˜๋ฅผ IP ์ฃผ์†Œ์™€ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. IP ์ฃผ์†Œ ํ• ๋‹น์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ† ํด๋กœ์ง€ ๋„์šฐ๋ฏธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜๋Š” ์œ ์ผํ•œ API๋Š” ์‹ค์ œ ์ฃผ์†Œ ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•  ๊ธฐ๋ณธ IP ์ฃผ์†Œ์™€ ๋„ท๋งˆ์Šคํฌ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ด ์ž‘์—…์€ ๋„์šฐ๋ฏธ ๋‚ด์˜ ํ•˜์œ„ ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค). ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ์˜ ๋‹ค์Œ ๋‘ ์ค„์˜ ์ฝ”๋“œ ์ฒซ ๋ฒˆ์งธ.cc,

Ipv4AddressHelper address;
address.SetBase ("10.1.1.0", "255.255.255.0");

์ฃผ์†Œ ๋„์šฐ๋ฏธ ๊ฐœ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ณ  10.1.1.0 ๋น„ํŠธ๋งˆ์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ 255.255.255.0์—์„œ IP ์ฃผ์†Œ ํ• ๋‹น์„ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ• ๋‹น๋œ ์ฃผ์†Œ๋Š” 10.1.1.1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋‹จ์กฐ๋กญ๊ฒŒ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ์ด ๋ฒ ์ด์Šค์—์„œ ํ• ๋‹น๋œ ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ๋Š” 10.1.1.2, ๊ทธ ๋‹ค์Œ์—๋Š” 3 ๋“ฑ์ด ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ns-XNUMX ์‹œ์Šคํ…œ์€ ๋‚ฎ์€ ์ˆ˜์ค€์—์„œ ํ• ๋‹น๋œ IP ์ฃผ์†Œ๋ฅผ ๋ชจ๋‘ ๊ธฐ์–ตํ•˜๊ณ  ์‹ค์ˆ˜๋กœ ๋™์ผํ•œ ์ฃผ์†Œ๊ฐ€ ๋‘ ๋ฒˆ ์ƒ์„ฑ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋ฉด ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค(๊ทธ๋Ÿฐ๋ฐ ์ด ์˜ค๋ฅ˜๋Š” ๋””๋ฒ„๊น…์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค).

๋‹ค์Œ ์ฝ”๋“œ ์ค„์€

Ipv4InterfaceContainer interfaces = address.Assign (devices);

์‹ค์ œ ์ฃผ์†Œ ํ• ๋‹น์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ns-3์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ IP ์ฃผ์†Œ์™€ ์žฅ์น˜ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. IPv4์ธํ„ฐํŽ˜์ด์Šค. ๋‚˜์ค‘์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ณด์กฐ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๋„คํŠธ์›Œํฌ ์žฅ์น˜ ๋ชฉ๋ก์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐœ์ฒด ๋ชฉ๋ก์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. IPv4์ธํ„ฐํŽ˜์ด์Šค. IPv4์ธํ„ฐํŽ˜์ด์Šค ์ปจํ…Œ์ด๋„ˆ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์Šคํƒ์ด ์„ค์น˜๋˜๊ณ  IP ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋œ ์ง€์  ๊ฐ„ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํŠธ๋ž˜ํ”ฝ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๊ฐ ๋…ธ๋“œ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

4.2.7 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์šฉ

ns-3 ์‹œ์Šคํ…œ์˜ ๋˜ ๋‹ค๋ฅธ ์ฃผ์š” ์ถ”์ƒํ™”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜). ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๊ธฐ๋ณธ ํด๋ž˜์Šค ์ „๋ฌธํ™”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ns-3์ด ํ˜ธ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. UdpEchoServer์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ะธ UdpEchoClient์‘์šฉ ํ”„๋กœ๊ทธ๋žจ. ์ด์ „ ์‚ฌ๋ก€์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณด์กฐ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ๊ฐœ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” UdpEchoServer๋„์šฐ๋ฏธ ะธ UDPEchoํด๋ผ์ด์–ธํŠธ๋„์›€๋ง์šฐ๋ฆฌ์˜ ์‚ถ์„ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฌผ๊ฑด๋“ค์ž…๋‹ˆ๋‹ค.

UdpEchoServer๋„์šฐ๋ฏธ

first.cc ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ์˜ ๋‹ค์Œ ์ฝ”๋“œ ์ค„์€ ์ด์ „์— ๋งŒ๋“  ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜์—์„œ UDP ์—์ฝ” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

UdpEchoServerHelper echoServer (9);

ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));

์œ„ ์Šค๋‹ˆํŽซ์˜ ์ฒซ ๋ฒˆ์งธ ์ฝ”๋“œ ์ค„์€ ๋‹ค์Œ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. UdpEchoServer๋„์šฐ๋ฏธ. ๋Š˜ ๊ทธ๋ ‡๋“ฏ์ด ์ด๊ฒƒ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ทœ์น™ ์ค‘ ํ•˜๋‚˜๋Š” ํ•„์ˆ˜ ์†์„ฑ์„ ๋„์šฐ๋ฏธ ๊ฐœ์ฒด์˜ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์„œ๋ฒ„๊ฐ€ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•  ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด ๋„์šฐ๋ฏธ๋Š” ์œ ์šฉํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฒˆํ˜ธ๋Š” ํด๋ผ์ด์–ธํŠธ์—๋„ ์•Œ๋ ค์ ธ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋„์šฐ๋ฏธ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” ์ฐจ๋ก€๋กœ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์†์„ฑ ์„ค์ • ์ „๋‹ฌ๋œ ๊ฐ’์œผ๋กœ ๋‚˜์ค‘์— ์›ํ•˜๋Š” ๊ฒฝ์šฐ SetAttribute๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Port ํŠน์„ฑ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋งŽ์€ ๋ณด์กฐ ๊ฐœ์ฒด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐœ์ฒด๋„ UdpEchoServer๋„์šฐ๋ฏธ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์š” ์„ค์น˜. ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ธฐ๋ณธ ์—์ฝ” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํšจ๊ณผ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ์ด๋ฅผ ํ˜ธ์ŠคํŠธ์— ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ๊ทธ ๋ฐฉ๋ฒ•์€ ์„ค์น˜ ๋ฐ›์•„๋“ค์ด๋‹ค ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์„ค์น˜ ์šฐ๋ฆฌ๊ฐ€ ๋ณธ ๋ฐฉ๋ฒ•.

์—ฌ๊ธฐ์„œ ์ž‘๋™ํ•˜๋Š” C++ ์•”์‹œ์  ๋ณ€ํ™˜์€ ๋ฉ”์„œ๋“œ์˜ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ.Get(1) (๋…ธ๋“œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค - Ptr )์„ ์ต๋ช… ๊ฐ์ฒด์˜ ์ƒ์„ฑ์ž์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์„ค์น˜. C++ ์ฝ”๋“œ์—์„œ ์–ด๋–ค ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์ปดํŒŒ์ผ๋˜๊ณ  ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์•”์‹œ์  ๋ณ€ํ™˜์„ ์‚ดํŽด๋ณด์„ธ์š”.

์ด์ œ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค echoServer.์„ค์น˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค UdpEchoServer์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์—์„œ ๋ฐœ๊ฒฌ๋จ ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ์šฐ๋ฆฌ๋Š” ๋…ธ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์ธ๋ฑ์Šค 1์˜ ๋…ธ๋“œ). ์„ค์น˜ ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ์—๋Š” ์ต๋ช… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ „๋‹ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค). ๋…ธ๋“œ์ปจํ…Œ์ด๋„ˆ, ํ•˜๋‚˜์˜ ๋…ธ๋“œ ํฌํ•จ) ๋„์šฐ๋ฏธ๊ฐ€ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํŠธ๋ž˜ํ”ฝ ์ƒ์„ฑ์„ ์‹œ์ž‘ํ•  ์‹œ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "์‹œ์ž‘" ์ค‘์ง€ํ•  ์‹œ๊ฐ„์„ ์ถ”๊ฐ€๋กœ ์ง€์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. "๋ฉˆ์ถ”๋‹ค". ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์„ ๋ชจ๋‘ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ๊ฐ„์€ ๋‹ค์Œ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ ์Šคํƒ€ํŠธ ะธ ์ค‘์ง€. ์ด ๋ฉ”์†Œ๋“œ๋Š” ์œ ํ˜•์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. Time. ์ด ๊ฒฝ์šฐ ์šฐ๋ฆฌ๋Š” ๋ช…์‹œ์ ์ธ C++ ๋ณ€ํ™˜ ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ C++๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋”๋ธ” 1.0์„ ์‚ฌ์šฉํ•˜์—ฌ Seconds ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” tns-3 Time ๊ฐœ์ฒด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€ํ™˜ ๊ทœ์น™์€ ๋ชจ๋ธ ์ž‘์„ฑ์ž๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ C++์—๋Š” ์ž์ฒด ๊ทœ์น™์ด ์žˆ์œผ๋ฏ€๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์˜ˆ์ƒํ•œ ๋Œ€๋กœ ๋ณ€ํ™˜๋  ๊ฒƒ์ด๋ผ๊ณ  ํ•ญ์ƒ ๊ธฐ๋Œ€ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋‘ ์ค„

serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));

์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์‹œ์ž‘๋œ ํ›„ XNUMX์ดˆ ํ›„์— ์—์ฝ” ์„œ๋ฒ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘(์ž๋™์œผ๋กœ ์ผœ์ง)๋˜๊ณ  ์‹œ๋ฎฌ๋ ˆ์ด์…˜ XNUMX์ดˆ ํ›„์— ์ค‘์ง€(๊บผ์ง)๋ฉ๋‹ˆ๋‹ค. XNUMX์ดˆ ํ›„์— ์‹คํ–‰๋˜๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ด๋ฒคํŠธ(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ค‘์ง€ ์ด๋ฒคํŠธ)๋ฅผ ์„ ์–ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์†Œ XNUMX์ดˆ ๋™์•ˆ ๋„คํŠธ์›Œํฌ ์ž‘๋™์ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜๋ฉ๋‹ˆ๋‹ค.

UdpEchoClient๋„์šฐ๋ฏธ

ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—์ฝ” ์„œ๋ฒ„์™€ ๊ฑฐ์˜ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐœ์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. UdpEchoClient์‘์šฉ ํ”„๋กœ๊ทธ๋žจ, ๊ด€๋ฆฌ๋˜๋Š”
UdpEchoClient๋„์šฐ๋ฏธ.

UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);
echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));

ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));;

๊ทธ๋Ÿฌ๋‚˜ ์—์ฝ” ํด๋ผ์ด์–ธํŠธ์˜ ๊ฒฝ์šฐ ๋‹ค์„ฏ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์†์„ฑ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ ๋‘ ์†์„ฑ์€ ์ƒ์„ฑ ์‹œ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. UdpEchoClient๋„์šฐ๋ฏธ. ์†์„ฑ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜(๋„์šฐ๋ฏธ ๋‚ด๋ถ€)๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. "์›๊ฒฉ ์ฃผ์†Œ" ะธ "์›๊ฒฉํฌํŠธ" ์šฐ๋ฆฌ์˜ ๊ณ„์•ฝ์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„์šฐ๋ฏธ ์ƒ์„ฑ์ž์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ž IPv4์ธํ„ฐํŽ˜์ด์Šค ์ปจํ…Œ์ด๋„ˆ ์žฅ์น˜์— ํ• ๋‹นํ•œ IP ์ฃผ์†Œ๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ์ปจํ…Œ์ด๋„ˆ์˜ null ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋…ธ๋“œ ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” null ๋…ธ๋“œ์˜ IP ์ฃผ์†Œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ์ปจํ…Œ์ด๋„ˆ์˜ ์ฒซ ๋ฒˆ์งธ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋…ธ๋“œ ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ์˜ IP ์ฃผ์†Œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„(์œ„)์—์„œ ๋„์šฐ๋ฏธ๋ฅผ ๋งŒ๋“ค๊ณ  ํด๋ผ์ด์–ธํŠธ์˜ ์›๊ฒฉ ์ฃผ์†Œ๊ฐ€ ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ์— ํ• ๋‹น๋œ IP ์ฃผ์†Œ๊ฐ€ ๋  ๊ฒƒ์ž„์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋˜ํ•œ ํŒจํ‚ท์ด ํฌํŠธ XNUMX๋กœ ์ „์†ก๋˜๋„๋ก ์ค€๋น„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

"MaxPackets" ์†์„ฑ์€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ค‘์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํŒจํ‚ท ์ˆ˜๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์•Œ๋ ค์ค๋‹ˆ๋‹ค. "Interval" ์†์„ฑ์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํŒจํ‚ท ๊ฐ„ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์•Œ๋ ค์ฃผ๊ณ , "PacketSize" ์†์„ฑ์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํŒจํ‚ท์˜ ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ด ์†์„ฑ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋‹จ์ผ 1024๋ฐ”์ดํŠธ ํŒจํ‚ท์„ ๋ณด๋‚ด๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.

์—์ฝ” ์„œ๋ฒ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—์ฝ” ํด๋ผ์ด์–ธํŠธ์˜ ์†์„ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ€ํŠธ ะธ ์ค‘์ง€, ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ๋Š” ์„œ๋ฒ„๊ฐ€ ์ผœ์ง„ ํ›„ XNUMX์ดˆ(์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹œ์ž‘ ํ›„ XNUMX์ดˆ)์— ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

4.2.8 ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ

์ด ์‹œ์ ์—์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ „์—ญ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ::์‹คํ–‰.

Simulator::Run ();

์ด์ „์— ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ,

serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
... 
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));

์šฐ๋ฆฌ๋Š” ์‹ค์ œ๋กœ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ 1,0์ดˆ, 2,0์ดˆ์— ์ด๋ฒคํŠธ๋ฅผ ์˜ˆ์•ฝํ–ˆ๊ณ , 10,0์ดˆ์— ๋‘ ๊ฐœ์˜ ์ด๋ฒคํŠธ๋ฅผ ์˜ˆ์•ฝํ–ˆ์Šต๋‹ˆ๋‹ค. ํ†ตํ™” ํ›„ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ::์‹คํ–‰, ์‹œ์Šคํ…œ์€ ์˜ˆ์ •๋œ ์ด๋ฒคํŠธ ๋ชฉ๋ก์„ ํ™•์ธํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. 1,0์ดˆ ํ›„์— ๋จผ์ € ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์—์ฝ” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค(์ด ์ด๋ฒคํŠธ๋Š” ์ฐจ๋ก€๋กœ ๋‹ค๋ฅธ ๋งŽ์€ ์ด๋ฒคํŠธ๋ฅผ ์˜ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฐ ๋‹ค์Œ t=2,0์ดˆ์— ์˜ˆ์•ฝ๋œ ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์—์ฝ” ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ ๋ง์”€๋“œ๋ฆฌ์ง€๋งŒ, ์ด๋ฒˆ ํ–‰์‚ฌ์—๋Š” ๋” ๋งŽ์€ ํ–‰์‚ฌ๊ฐ€ ๊ณ„ํš๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—์ฝ” ํด๋ผ์ด์–ธํŠธ์˜ ์‹œ์ž‘ ์ด๋ฒคํŠธ ๊ตฌํ˜„์€ ์„œ๋ฒ„์— ํŒจํ‚ท์„ ์ „์†กํ•˜์—ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ๋‹จ๊ณ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„์— ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š” ์ž‘์—…์€ ๋’ค์—์„œ ์ž๋™์œผ๋กœ ์˜ˆ์•ฝ๋˜๊ณ  ์Šคํฌ๋ฆฝํŠธ์—์„œ ์„ค์ •ํ•œ ํƒ€์ด๋ฐ ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ์—์ฝ” ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ์ผ๋ จ์˜ ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ํŒจํ‚ท๋งŒ ์ „์†กํ•˜๋ฏ€๋กœ(์†์„ฑ ๊ธฐ์–ต) ์ตœ๋Œ€ ํŒจํ‚ท XNUMX๋กœ ์„ค์ •๋จ), ์ด ๋‹จ์ผ ํด๋ผ์ด์–ธํŠธ ping์— ์˜ํ•ด ์‹œ์ž‘๋œ ์ด๋ฒคํŠธ ์ฒด์ธ์ด ์ข…๋ฃŒ๋˜๊ณ  ์‹œ๋ฎฌ๋ ˆ์ด์…˜์€ ๋Œ€๊ธฐ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋‚˜๋จธ์ง€ ์˜ˆ์ •๋œ ์ด๋ฒคํŠธ๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ค‘์ง€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์šฉ. ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋‚จ์ง€ ์•Š์œผ๋ฉฐ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ::์‹คํ–‰ ์ œ์–ด๊ถŒ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚จ์€ ๊ฒƒ์€ ์Šค์Šค๋กœ ์ฒญ์†Œํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ „์—ญ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ::ํŒŒ๊ดด. ์ƒ์„ฑ๋œ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ํŒŒ๊ดดํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์— ํ›„ํฌ๊ฐ€ ์‚ฝ์ž…๋˜๋„๋ก ๊ตฌ์„ฑ๋œ ๋„์šฐ๋ฏธ ํ•จ์ˆ˜(๋˜๋Š” ํ•˜์œ„ ์ˆ˜์ค€ ns-3 ์ฝ”๋“œ)๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ์ฒด๋ฅผ ์ง์ ‘ ์ถ”์ ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ::ํŒŒ๊ดด ๊ทธ๋ฆฌ๊ณ  ๋‚˜๊ฐ€์„ธ์š”. ns-3 ์‹œ์Šคํ…œ์ด ์ด๋Ÿฌํ•œ ์–ด๋ ค์šด ์ž‘์—…์„ ๋Œ€์‹  ์ˆ˜ํ–‰ํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ns-3 ์Šคํฌ๋ฆฝํŠธ์ธ first.cc์˜ ๋‚˜๋จธ์ง€ ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Simulator::Destroy ();
return 0;
}

์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ์–ธ์ œ ๋ฉˆ์ถ”๋‚˜์š”?

ns-3์€ DE(์ด์‚ฐ ์ด๋ฒคํŠธ) ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ๋Š” ๊ฐ ์ด๋ฒคํŠธ๊ฐ€ ์‹คํ–‰ ์‹œ๊ฐ„๊ณผ ์—ฐ๊ด€๋˜์–ด ์žˆ์œผ๋ฉฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์ง„ํ–‰๋จ์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๋กœ ์ธํ•ด ํ–ฅํ›„ ์ด๋ฒคํŠธ๊ฐ€ ์˜ˆ์•ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํƒ€์ด๋จธ๋Š” ๋‹ค์Œ ๊ฐ„๊ฒฉ์— ๊ณ„์‚ฐ์„ ์™„๋ฃŒํ•˜๋„๋ก ์ž์ฒด ์ผ์ •์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ์ด๋ฒคํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์—”ํ„ฐํ‹ฐ์— ์˜ํ•ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด IPv6๋Š” ๋„คํŠธ์›Œํฌ์—์„œ ์„œ๋น„์Šค ๊ฒ€์ƒ‰, ์ด์›ƒ ์š”์ฒญ ๋“ฑ์„ ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ท ์ „์†ก ์ด๋ฒคํŠธ ๋“ฑ์„ ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋ฉด XNUMX๊ฐœ, XNUMX๊ฐœ ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์ง„ํ–‰๋จ์— ๋”ฐ๋ผ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ํ๊ฐ€ ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ ํŠน์ˆ˜ ์ด๋ฒคํŠธ๊ฐ€ ๊ฐ์ง€๋˜๋ฉด ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์ž๋™์œผ๋กœ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค. ์ค‘์ง€. ์ด๋ฒคํŠธ ์ค‘์ง€ ํ•จ์ˆ˜์— ์˜ํ•ด ์ƒ์„ฑ๋จ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ::์ •์ง€ (์ •์ง€ ์‹œ๊ฐ„).

์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์ค‘์ง€ํ•˜๊ธฐ ์œ„ํ•ด Simulator::Stop์ด ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•œ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ž์ฒด ์œ ์ง€ ์ด๋ฒคํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ž์ฒด ์œ ์ง€(๋˜๋Š” ๋ฐ˜๋ณต) ์ด๋ฒคํŠธ๋Š” ํ•ญ์ƒ ์ผ์ •์ด ๋ณ€๊ฒฝ๋˜๋Š” ์ด๋ฒคํŠธ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ทธ๋“ค์€ ํ•ญ์ƒ ์ด๋ฒคํŠธ ํ๋ฅผ ๋น„์–ด ์žˆ์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต๋˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๊ณผ ๋ชจ๋“ˆ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

โ€ข FlowMonitor - ์†์‹ค๋œ ํŒจํ‚ท์„ ์ •๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

โ€ข RIPng โ€“ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ” ์—…๋ฐ์ดํŠธ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

โ€ข ๋“ฑ.

๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ::์ •์ง€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ค‘์ง€ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ns-3์ด ์—๋ฎฌ๋ ˆ์ด์…˜ ๋ชจ๋“œ์— ์žˆ์„ ๋•Œ RealtimeSimulator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํด๋ก์„ ๋จธ์‹  ํด๋ก๊ณผ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ::์ •์ง€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ต๊ณผ์„œ์— ๋‚˜์˜ค๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ”„๋กœ๊ทธ๋žจ ์ค‘ ์ƒ๋‹น์ˆ˜๋Š” ํ˜ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ::์ •์ง€ ๋Œ€๊ธฐ ์ค‘์ธ ์ด๋ฒคํŠธ๊ฐ€ ์†Œ์ง„๋˜๋ฉด ์ž๋™์œผ๋กœ ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํ”„๋กœ๊ทธ๋žจ์€ Simulator::Stop ํ˜ธ์ถœ๋„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฒซ ๋ฒˆ์งธ ์˜ˆ์ œ ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹ค์Œ ์ถ”๊ฐ€ ๋ช…๋ น๋ฌธ์€ 11์ดˆ์— ๋ช…์‹œ์ ์œผ๋กœ ์ค‘์ง€๋˜๋„๋ก ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค.

+ Simulator::Stop (Seconds (11.0));
  Simulator::Run ();
  Simulator::Destroy ();
  return 0;
}

์œ„์˜ ๋‚ด์šฉ์€ ์ด ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์„ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด ํŠน์ • ์‹œ๋ฎฌ๋ ˆ์ด์…˜์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ 10์ดˆ ํ›„์— ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์œ„ ๋ช…๋ น๋ฌธ์—์„œ ์ค‘์ง€ ์‹œ๊ฐ„์„ 11์ดˆ์—์„œ 1์ดˆ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์ถœ๋ ฅ์ด ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๊ธฐ ์ „์— ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์ค‘์ง€๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ถœ๋ ฅ์€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹œ๊ฐ„์˜ ์•ฝ 2์ดˆ ํ›„์— ๋ฐœ์ƒํ•˜๋ฏ€๋กœ).

Simulator::Run์„ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— Simulator::Stop์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Simulator::Run์€ ์ค‘์ง€๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ ํ”„๋กœ๊ทธ๋žจ์— ์ œ์–ด๊ถŒ์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

4.2.9 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ

์šฐ๋ฆฌ๋Š” ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ํ•ด์•ผ ํ•  ์ผ์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์Šคํฌ๋ž˜์น˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. ์™€ํ”„. ํ•ด๋ณด์ž. ์ตœ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋Œ์•„๊ฐ€์„œ ๋ณต์‚ฌํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ์ œ/ํŠœํ† ๋ฆฌ์–ผ/first.cc ์นดํƒˆ๋กœ๊ทธ์— ํ• ํ€ด๋‹ค

$ cd ../.. 
$ cp examples/tutorial/first.cc scratch/myfirst.cc

์ด์ œ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ ์ƒ˜ํ”Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋นŒ๋“œํ•˜์„ธ์š”. waf:

$ ./waf

์ฒซ ๋ฒˆ์งธ ์˜ˆ์ œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
[614/708] cxx: scratch/myfirst.cc -> build/debug/scratch/myfirst_3.o
[706/708] cxx_link: build/debug/scratch/myfirst_3.o -> build/debug/scratch/myfirst
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (2.357s)

์ด์ œ ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์Šคํฌ๋ž˜์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋นŒ๋“œํ•˜๋Š” ๊ฒฝ์šฐ ์Šคํฌ๋ž˜์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค). ํ• ํ€ด๋‹ค):

$ ./waf --run scratch/myfirst

๋น„์Šทํ•œ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.418s) Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2

์—ฌ๊ธฐ์„œ๋Š” ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ํŒŒ์ผ์ด ๋นŒ๋“œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ ๋‹ค์Œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—์ฝ” ํด๋ผ์ด์–ธํŠธ์˜ ๊ตฌ์„ฑ ์š”์†Œ ํ•ญ๋ชฉ์€ ๋‹จ์ผ 1024๋ฐ”์ดํŠธ ํŒจํ‚ท์„ ์—์ฝ” ์„œ๋ฒ„ 10.1.1.2๋กœ ๋ณด๋ƒˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์—์ฝ” ์„œ๋ฒ„์˜ ๋กœ๊น… ๊ตฌ์„ฑ ์š”์†Œ๋„ 1024์—์„œ 10.1.1.1๋ฐ”์ดํŠธ๋ฅผ ๋ฐ›์•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—์ฝ” ์„œ๋ฒ„๋Š” ์ž๋™์œผ๋กœ ํŒจํ‚ท์„ ์žฌ์ƒํ•˜๋ฉฐ ์—์ฝ” ํด๋ผ์ด์–ธํŠธ์˜ ๋กœ๊ทธ์—์„œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํŒจํ‚ท์„ ๋‹ค์‹œ ์ˆ˜์‹ ํ–ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.3 ns-3 ์†Œ์Šค ์ฝ”๋“œ

์ด์ œ ns-3 ๋„์šฐ๋ฏธ ์ค‘ ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฏ€๋กœ ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์ผ๋ถ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ์ฝ”๋“œ๋Š” ๋‹ค์Œ ๋งํฌ์˜ ์›น ์„œ๋ฒ„์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://gitlab.com/nsnam/ns-3-dev.git. ์—ฌ๊ธฐ์—์„œ ns-3 ๊ฐœ๋ฐœ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ Mercurial ์š”์•ฝ ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ์ƒ๋‹จ์— ์—ฌ๋Ÿฌ ๋งํฌ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

summary | shortlog | changelog | graph | tags | files

๊ณ„์†ํ•ด์„œ ํŒŒ์ผ ๋งํฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ตœ์ƒ์œ„ ์ˆ˜์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

drwxr-xr-x                               [up]
drwxr-xr-x                               bindings python  files
drwxr-xr-x                               doc              files
drwxr-xr-x                               examples         files
drwxr-xr-x                               ns3              files
drwxr-xr-x                               scratch          files
drwxr-xr-x                               src              files
drwxr-xr-x                               utils            files
-rw-r--r-- 2009-07-01 12:47 +0200 560    .hgignore        file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1886   .hgtags          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1276   AUTHORS          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 30961  CHANGES.html     file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 17987  LICENSE          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 3742   README           file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 16171  RELEASE_NOTES    file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 6      VERSION          file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 88110  waf              file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 28     waf.bat          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 35395  wscript          file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 7673   wutils.py        file | revisions | annotate

์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค ์˜ˆ. ์˜ˆ์ œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜ ํŠœํ† ๋ฆฌ์–ผ - first.cc. ํด๋ฆญํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ.cc ๋ฐฉ๊ธˆ ๋ฐฐ์šด ์ฝ”๋“œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ๋Š” ์ฃผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. SRC. ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์„ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ํŒŒ์ผ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. src ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด src ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•ต์‹ฌ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํŒŒ์ผ ๋ชฉ๋ก์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ๊ฐ€์ด๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋‹น์‹œ) ๋ณด๊ฒŒ ๋  ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ค‘๋‹จ.h. ๋งํฌ๋ฅผ ํด๋ฆญํ•˜์‹œ๋ฉด ์ค‘๋‹จ.h, ์†Œ์Šค ํŒŒ์ผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ค‘๋‹จ.h์—๋Š” ๋น„์ •์ƒ์ ์ธ ์กฐ๊ฑด์ด ๊ฐ์ง€๋œ ๊ฒฝ์šฐ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ๋งคํฌ๋กœ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์žฅ์—์„œ ์‚ฌ์šฉํ•œ ๋„์šฐ๋ฏธ์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๋‹ค์Œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. src/์‘์šฉ ํ”„๋กœ๊ทธ๋žจ/๋„์šฐ๋ฏธ. ns-3 ํ”„๋กœ๊ทธ๋žจ์˜ ์Šคํƒ€์ผ๊ณผ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๋ ค๋ฉด ๋””๋ ‰ํ† ๋ฆฌ ํŠธ๋ฆฌ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์‚ดํŽด๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€