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 ๋๋ ํ๋ก์ ํธ ์นํ์ด์ง์ ํ์๋ฉ๋๋ค:
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 ๋์ฐ๋ฏธ ์ค ์ผ๋ถ๋ฅผ ์ฌ์ฉํ์ผ๋ฏ๋ก ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ผ๋ถ ์์ค ์ฝ๋๋ฅผ ์ดํด๋ณผ ์ ์์ต๋๋ค. ์ต์ ์ฝ๋๋ ๋ค์ ๋งํฌ์ ์น ์๋ฒ์์ ๋ณผ ์ ์์ต๋๋ค.
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