
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. ΠΠ»Π°ΡΠ° NodeNode (ΡΠ°Π·ΠΎΠ») ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΊΠΈ ΡΡΠ΅Π΄ΠΈ Π²ΠΎ ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΈ.
ΠΠΎΡΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΠ°Π·ΠΎΠ» ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½Π° ΠΊΠΎΡ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. ΠΠ΅ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΡΠΏΠΎΠ²ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈΡΠΊΠΈ ΡΠΎ Π΄ΡΠ°ΡΠ²Π΅ΡΠΈ ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π°Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΡ Π΄Π° Π²ΡΡΠΈ ΠΊΠΎΡΠΈΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΈΡΡΠΈΠΎΡ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΌΠΎΠ΄Π΅Π» Π²ΠΎ ns-3.
4.1.2 ΠΡΠΈΠΌΠ΅Π½Π°
ΠΠΏΡΡΠΎ Π·Π΅ΠΌΠ΅Π½ΠΎ, ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΊΠΈΠΎΡ ΡΠΎΡΡΠ²Π΅Ρ Π΅ ΠΏΠΎΠ΄Π΅Π»Π΅Π½ Π½Π° Π΄Π²Π΅ ΡΠΈΡΠΎΠΊΠΈ ΠΊΠ»Π°ΡΠΈ. Π‘ΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ ΡΠΎΡΡΠ²Π΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°, ΠΏΡΠΎΡΠ΅ΡΠΎΡΡΠΊΠΈ ΡΠΈΠΊΠ»ΡΡΠΈ, Π΄ΠΈΡΠΊ, ΠΌΡΠ΅ΠΆΠ° ΠΈΡΠ½. ΡΠΏΠΎΡΠ΅Π΄ Π½Π΅ΠΊΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΊΠΈ ΠΌΠΎΠ΄Π΅Π». Π‘ΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ ΡΠΎΡΡΠ²Π΅Ρ ΠΎΠ±ΠΈΡΠ½ΠΎ Π½Π΅ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈ ΠΎΠ²ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ ΠΊΠΎΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΌΡ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ. ΠΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π²ΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½ΠΎ Π²ΠΎΠ΄ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° ΡΠ΅Π», ΠΊΠΎΡΠ° Π΄ΠΎΠ±ΠΈΠ²Π° ΠΈ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ ΡΠΎΡΡΠ²Π΅Ρ.
Π§Π΅ΡΡΠΎ Π»ΠΈΠ½ΠΈΡΠ°ΡΠ° Π½Π° ΡΠ°Π·Π΄Π²ΠΎΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΎΡΡΠ²Π΅Ρ ΡΠ΅ ΠΏΠΎΠ²Π»Π΅ΠΊΡΠ²Π° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΡΡΠΎ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π°Π°Ρ Π²ΠΎ Π·Π°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ. ns-3 Π½Π΅ΠΌΠ° Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ ΠΈ Π·Π°ΡΠΎΠ° Π½Π΅ΠΌΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡ Π½Π° Π½ΠΈΠ²ΠΎΠ° Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, ΠΈΠΌΠ°ΠΌΠ΅ ΠΈΠ΄Π΅ΡΠ° Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΡΡΠΎ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π²ΠΎ βΡΠ΅Π°Π»Π½ΠΈΠΎΡ ΡΠ²Π΅Ρβ ΡΠΎΡΡΠ²Π΅ΡΡΠΊΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ns-3 Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ns-3 ΡΠ°Π·Π»ΠΈ Π·Π° Π΄Π° Π³ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π°Ρ ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΈΡΠ΅ Π²ΠΎ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΈΠΎΡ ΡΠ²Π΅Ρ.
ΠΠΎ ns-3, ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΡΠ° Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΊΠΎΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°ΡΠ΅ Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠ²Π°Π° Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΡΠ° Π΅ ΠΏΡΠ΅ΡΡΡΠ°Π²Π΅Π½Π° Π²ΠΎ C++ ΡΠΎ ΠΊΠ»Π°ΡΠ°ΡΠ° Application. ΠΠ»Π°ΡΠ°ΡΠ° Application ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΏΠΎΠ³Π»Π΅Π΄ΠΈΡΠ΅ Π½Π° Π½Π°ΡΠ°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ Π²ΠΎ ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΈ. ΠΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ΅ ΠΎΡΠ΅ΠΊΡΠ²Π° Π΄Π° ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π°Ρ ΠΊΠ»Π°ΡΠ°ΡΠ° Application Π²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅ Π·Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°Π°Ρ Π½ΠΎΠ²ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠΎ ΠΎΠ²ΠΎΡ ΡΡΡΠΎΡΠΈΡΠ°Π», ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄ ΠΊΠ»Π°ΡΠ°ΡΠ° Application Π½Π°ΡΠ΅ΡΠ΅Π½Π° UdpEchoClientApplication ΠΈ ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° UdpEchoServer. ΠΠ°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠ΅ΠΊΡΠ²Π°ΡΠ΅, ΠΎΠ²ΠΈΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΡΠΈΠ½ΡΠ²Π°Π°Ρ Π·Π±ΠΈΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ/ΡΠ΅ΡΠ²Π΅Ρ ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΈ Π΅Ρ ΠΎ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ.
4.1.3 ΠΠ°Π½Π°Π»
ΠΠΎ ΡΠ΅Π°Π»Π½ΠΈΠΎΡ ΡΠ²Π΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½Π° ΠΌΡΠ΅ΠΆΠ°. Π§Π΅ΡΡΠΎΠΏΠ°ΡΠΈ ΠΌΠ΅Π΄ΠΈΡΠΌΠΈΡΠ΅ ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠΈ ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π²ΠΎ ΠΎΠ²ΠΈΠ΅ ΠΌΡΠ΅ΠΆΠΈ ΡΠ΅ Π½Π°ΡΠ΅ΠΊΡΠ²Π°Π°Ρ ΠΊΠ°Π½Π°Π»ΠΈ. ΠΠΎΠ³Π° ΠΏΡΠΈΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π΅ΡΠ΅ΡΠ½Π΅Ρ ΠΊΠ°Π±Π΅Π» Π²ΠΎ ΡΠΈΠ΄Π΅Π½ ΡΡΠ΅ΠΊΠ΅Ρ, Π³ΠΎ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π²Π°ΡΠΈΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΠΎ Π΅ΡΠ΅ΡΠ½Π΅Ρ Π²ΡΡΠΊΠ°. ΠΠΎ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΈΠΎΡ ΡΠ²Π΅Ρ ns-3, ΡΠ°Π·ΠΎΠ» Π΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π° ΠΊΠ°Π½Π°Π» Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠ²Π΄Π΅, ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΡΠ° Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠΊΠ°ΡΠ° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° ΡΠ΅ Π½Π°ΡΠ΅ΠΊΡΠ²Π° ΠΊΠ°Π½Π°Π» ΠΈ Π΅ ΠΏΡΠ΅ΡΡΡΠ°Π²Π΅Π½Π° Π²ΠΎ C++ ΡΠΎ ΠΊΠ»Π°ΡΠ°ΡΠ° Channel.
ΠΠ»Π°ΡΠ° ΠΠ°Π½Π°Π» ΠΠ°Π½Π°Π» ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΈ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° Ρ ΠΎΡΡΠΎΠ²ΠΈΡΠ΅ ΡΠΎ Π½ΠΈΠ². ΠΠ°Π½Π°Π»ΠΈΡΠ΅, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π±ΠΈΠ΄Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ ΡΡΡΠ°Π½Π° Π½Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈΡΠ΅ Π²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠ° ΡΠΌΠΈΡΠ»Π°. Π‘ΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ°Π½Π°Π»ΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° Π½Π΅ΡΡΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΊΠ°ΠΊΠΎ ΠΆΠΈΡΠ°. ΠΠ°ΠΌΠ΅Π½ΡΠΊΠΈΠΎΡ ΠΊΠ°Π½Π°Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° ΡΠ»ΠΎΠΆΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ Π³ΠΎΠ»Π΅ΠΌ Ethernet ΠΏΡΠ΅ΠΊΠΈΠ½ΡΠ²Π°Ρ ΠΈΠ»ΠΈ ΡΡΠΎΠ΄ΠΈΠΌΠ΅Π½Π·ΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΏΡΠΎΡΡΠΎΡ ΠΏΠΎΠ»Π½ ΡΠΎ ΠΏΡΠ΅ΡΠΊΠΈ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° Π±Π΅Π·ΠΆΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ.
ΠΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° ΠΊΠ°Π½Π°Π»ΠΎΡ Π²ΠΎ ΠΎΠ²Π° ΡΠΏΠ°ΡΡΡΠ²ΠΎ Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ CsmaChannelCsmaChannel, PointToPointChannelPointToPointChannel ΠΈ WifiChannelWifiChannel. CsmaChannel, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠΊΠ° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° ΠΊΠΎΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠΊΠΎ ΠΎΠΏΠΊΡΡΠΆΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ ΡΠΎ Π½ΠΎΡΠΈΡΠ΅Π». ΠΠ²Π° Π½ΠΈ Π΄Π°Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΡΠ»ΠΈΡΠ½Π° Π½Π° Π΅ΡΠ΅ΡΠ½Π΅Ρ.
4.1.4 ΠΠ΅ΡΠΎ ΡΡΠ΅Π΄
ΠΠΎΡΠ°Π½ΠΎ, Π°ΠΊΠΎ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½Π° ΠΌΡΠ΅ΠΆΠ°, ΡΡΠ΅Π±Π°ΡΠ΅ Π΄Π° ΠΊΡΠΏΠΈΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ ΠΌΡΠ΅ΠΆΠ΅Π½ ΠΊΠ°Π±Π΅Π» ΠΈ Ρ Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈ ΡΡΠ΅Π΄ Π½Π°ΡΠ΅ΡΠ΅Π½ (Π²ΠΎ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ) ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½Π° ΠΊΠ°ΡΡΠΈΡΠΊΠ° ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΡ. ΠΠΊΠΎ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½Π°ΡΠ° ΠΊΠ°ΡΡΠΈΡΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π»Π° Π½Π΅ΠΊΠΎΠΈ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΈΠ΅ ΡΠ΅ Π½Π°ΡΠ΅ΠΊΡΠ²Π°Π»Π΅ ΠΊΠ°ΡΡΠΈΡΠΊΠΈ Π·Π° ΠΌΡΠ΅ΠΆΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ ΠΈΠ»ΠΈ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΠΊΠ°ΡΡΠΈΡΠΊΠΈ. ΠΠ΅Π½Π΅Ρ, ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΈ Π΄ΠΎΠ°ΡΠ°Π°Ρ ΡΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ ΠΌΡΠ΅ΠΆΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Ρ Π°ΡΠ΄Π²Π΅Ρ ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ Π½Π΅ Π³ΠΈ Π³Π»Π΅Π΄Π°Π°Ρ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΡΠ΅Π±Π½ΠΈ ΡΡΠ΅Π΄ΠΈ.
ΠΡΠ΅ΠΆΠ½Π°ΡΠ° ΠΊΠ°ΡΡΠΈΡΠΊΠ° Π½Π΅ΠΌΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΡΠΎΡΡΠ²Π΅ΡΡΠΊΠΈ Π΄ΡΠ°ΡΠ²Π΅Ρ ΡΡΠΎ Π³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° Π½Π΅ΡΠ·ΠΈΠ½ΠΈΠΎΡ Ρ Π°ΡΠ΄Π²Π΅Ρ. ΠΠΎ Unix (ΠΈΠ»ΠΈ Linux), Π΄Π΅Π» ΠΎΠ΄ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½Π°ΡΠ° ΠΎΠΏΡΠ΅ΠΌΠ° Π΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ°Π½ ΠΊΠ°ΠΊΠΎ ΡΡΠ΅Π΄. Π£ΡΠ΅Π΄ΠΈΡΠ΅ ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π°Ρ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π΄ΡΠ°ΡΠ²Π΅ΡΠΈ Π·Π° ΡΡΠ΅Π΄ΠΈ, Π° ΠΌΡΠ΅ΠΆΠ½ΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈ (NIC) ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π°Ρ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π΄ΡΠ°ΡΠ²Π΅ΡΠΈ Π·Π° ΠΌΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ (Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ) ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ Π½Π°ΡΠ΅ΠΊΡΠ²Π°Π°Ρ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ (ΠΌΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ). ΠΠΎ Unix ΠΈ Linux ΠΡΠΈΡΡΠ°ΠΏΡΠ²Π°ΡΠ΅ Π΄ΠΎ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ ΡΠΎ ΠΈΠΌΠΈΡΠ° ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ eth0.
ΠΠΎ ns-3, Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ½ΠΈΠΎΡ ΡΡΠ΅Π΄ Π³ΠΈ ΠΎΠΏΡΠ°ΡΠ° ΠΈ ΡΠΎΡΡΠ²Π΅ΡΠΎΡ Π½Π° Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΎΡ ΠΈ Ρ Π°ΡΠ΄Π²Π΅ΡΠΎΡ ΡΡΠΎ ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°. ΠΠΎ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°, ΠΌΡΠ΅ΠΆΠ΅Π½ ΡΡΠ΅Π΄ Π΅ βΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½β Π²ΠΎ ΡΠ°Π·ΠΎΠ» Π·Π° Π΄Π° ΠΌΡ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ° ΡΠΎ Π΄ΡΡΠ³ΠΈ ΡΠ°Π·Π»ΠΈ ΠΏΡΠ΅ΠΊΡ ΠΊΠ°Π½Π°Π»ΠΈ. ΠΡΡΠΎ ΠΊΠ°ΠΊΠΎ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΡΠ°Π·ΠΎΠ»ΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ°Π½Π°Π»ΠΈ ΠΏΡΠ΅ΠΊΡ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ΅Π΄ΠΈ NetDevices.
ΠΡΠ΅ΠΆΠ½Π°ΡΠ° Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΡΠ° Π½Π° ΡΡΠ΅Π΄ Π΅ ΠΏΡΠ΅ΡΡΡΠ°Π²Π΅Π½Π° Π²ΠΎ C++ ΡΠΎ ΠΊΠ»Π°ΡΠ°ΡΠ° NetDevice. ΠΠ»Π°ΡΠ° NetDevice ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π²ΡΡΠΊΠΈ ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π½Π° ΡΠ°Π·ΠΎΠ» ΠΈ ΠΊΠ°Π½Π°Π»; Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ Π²ΠΎ ΡΠΌΠΈΡΠ»Π° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅. ΠΠΎ ΠΎΠ²Π° ΡΠΏΠ°ΡΡΡΠ²ΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° NetDevice Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ CsmaNetDevice, PointToPointNetDevice ΠΈ WifiNetDevice. ΠΡΡΠΎ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΠΌΡΠ΅ΠΆΠ΅Π½ Π°Π΄Π°ΠΏΡΠ΅Ρ Π·Π° Π΅ΡΠ΅ΡΠ½Π΅Ρ Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΠΌΡΠ΅ΠΆΠ° ΠΡΠ΅ΡΠ½Π΅Ρ, CsmaNetDevice Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ CsmaChannel, PointToPointNetDevice Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ PointToPointChannelΠ WifiNetDevice - Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΠΠΈΡΠΈ-ΠΊΠ°Π½Π°Π».
4.1.5 Π’ΠΎΠΏΠΎΠ»ΠΎΡΠΊΠΈ Π°ΡΠΈΡΡΠ΅Π½ΡΠΈ
ΠΠΎ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠ° ΠΌΡΠ΅ΠΆΠ°, ΡΠ΅ Π½Π°ΡΠ΄Π΅ΡΠ΅ Π΄ΠΎΠΌΠ°ΡΠΈΠ½ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΈ ΡΠΎ Π΄ΠΎΠ΄Π°Π΄Π΅Π½ΠΈ (ΠΈΠ»ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ) ΠΌΡΠ΅ΠΆΠ½ΠΈ ΠΊΠ°ΡΡΠΈΡΠΊΠΈ. ΠΠΎ ns-3 Π±ΠΈ ΡΠ΅ΠΊΠ»Π΅ Π΄Π΅ΠΊΠ° ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ ΡΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½ΠΈ NetDevices. ΠΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½Π° ΠΌΡΠ΅ΠΆΠ°, ΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π²ΡΡΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠ³Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΠΠ°Π·ΠΎΠ», NetDevice ΠΈ ΠΊΠ°Π½Π°Π».
ΠΠ΄ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° NetDevices ΡΠΎ ΡΠ°Π·Π»ΠΈ, NetDevices ΡΠΎ Π²ΡΡΠΊΠΈ, Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΠ΅ IP Π°Π΄ΡΠ΅ΡΠΈ ΠΈΡΠ½. Π²ΠΎ ns-3 ΡΠ΅ Π²ΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½Π° Π·Π°Π΄Π°ΡΠ°, Π·Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΠΎΠ° ΡΡΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π΅ΡΠ½ΠΎ, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ°ΠΊΠ°Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ NetDevice, ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ns-3 ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ, Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ MAC Π°Π΄ΡΠ΅ΡΠ°, Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΌΡΠ΅ΠΆΠ½ΠΈΠΎΡ ΡΡΠ΅Π΄ Π²ΠΎ Node, Π΄Π° Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΡΡΠ΅ΠΊΠΎΡ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ Π½Π° ΡΠ°Π·ΠΎΠ»ΠΎΡ ΠΈ ΠΏΠΎΡΠΎΠ° Π΄Π° Π³ΠΎ ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅ NetDevice ΡΠΎ ΠΊΠ°Π½Π°Π»ΠΎΡ. ΠΠ΅ Π±ΠΈΠ΄Π΅ ΠΏΠΎΡΡΠ΅Π±Π½Π° ΡΡΡΠ΅ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ° Π·Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ΅Π΄ΠΈ ΡΠΎ Π²ΡΡΠΊΠΈ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΈ ΠΏΠΎΡΠΎΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Ρ ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ Π²ΠΎ ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π½Π° Internetworks. ΠΠΈΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° ΠΊΠΎΠΈ Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π°Ρ ΠΎΠ²ΠΈΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΠΎ ΠΌΠΎΠ΄Π΅Π» ΠΊΠΎΡ Π΅ Π»Π΅ΡΠ΅Π½ Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π·Π° Π²Π°ΡΠ° ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΡΡ.
4.2 ΠΡΠ²Π° ΡΠΊΡΠΈΠΏΡΠ° ns-3
ΠΠΊΠΎ ΡΡΠ΅ Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»Π΅ ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΠΎΠ³ΠΎΡΠ΅, ΡΠ΅ Π³ΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ ns-3 Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ Π½Π°ΡΠ΅ΡΠ΅Π½ repos Π²ΠΎ Π²Π°ΡΠΈΠΎΡ Π΄ΠΎΠΌΠ°ΡΠ΅Π½ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ. ΠΠ΄Π΅ΡΠ΅ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ΠΏΠΎΡΠ°ΠΊΠ°
ΠΠΊΠΎ Π½Π΅ΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠΎΠ² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ, ΡΠΎΠ° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° Π½Π΅ ΡΡΠ΅ Π³ΠΎ Π½Π°Π²Π΅Π»Π΅ ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ ΠΏΡΠΈ Π³ΡΠ°Π΄Π΅ΡΠ΅ΡΠΎ Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° Π·Π° ΠΈΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π° ns-3, ΠΈΠ·Π³ΡΠ°Π΄Π΅ΡΠ΅ Π²Π°ΠΊΠ°:
$ ./waf ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΡΠ΅ βbuild-profile=release βout=build/release,
$ ./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. Π’ΠΎΡ ΠΈΠΌ ΠΊΠ°ΠΆΡΠ²Π° Π½Π° emacs Π·Π° ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΡΠ΅ (ΡΡΠΈΠ» Π½Π° ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅) ΡΡΠΎ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΠΈΠ·Π²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄.
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ΠΠ²Π° Π΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ Π΄ΠΎΡΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ²Π΅ΡΠ·Π½ΠΎ ΠΏΡΠ°ΡΠ°ΡΠ΅, ΠΏΠ° Π·Π°ΡΠΎΠ° ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ ΡΠ΅ΠΊΠΎΡΠ΄ΠΎΡ Π·Π° Π²Π΅Π΄Π½Π°Ρ Π΄Π° Π³ΠΎ ΡΡΠ³Π½Π΅ΠΌΠ΅ ΠΎΠ΄ ΠΏΠ°ΡΠΎΡ. ΠΡΠΎΠ΅ΠΊΡΠΎΡ ns-3, ΠΊΠ°ΠΊΠΎ ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΈΠΌΠ° ΡΡΠ²ΠΎΠ΅Π½ΠΎ ΡΡΠΈΠ» Π½Π° ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΊΠΎΡ ΠΌΠΎΡΠ° Π΄Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°Π°Ρ ΡΠΈΡΠ΅ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ. ΠΠΊΠΎ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠΈΠ΄ΠΎΠ½Π΅ΡΠ΅ΡΠ΅ Π²Π°ΡΠΈΠΎΡ ΠΊΠΎΠ΄ Π²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ, Π½Π° ΠΊΡΠ°ΡΠΎΡ ΡΠ΅ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΡΡΠΎΠ³Π»Π°ΡΠΈΡΠ΅ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΎΡ Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ ns-3, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° doc/codingstd.txt ΠΈΠ»ΠΈ ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½ΠΎ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ: .
ΠΠΈ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ΅ Π½Π°Π²ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° ΠΈΠ·Π³Π»Π΅Π΄ΠΎΡ ΠΈ ΡΡΠ²ΡΡΠ²ΠΎΡΠΎ Π½Π° ns-3 ΠΊΠΎΠ΄ΠΎΡ ΠΈ Π΄Π° Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ ΠΎΠ²ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΠ΄ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΠΊΠΎΠ³Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ ΡΠΎ Π½Π°ΡΠΈΠΎΡ ΠΊΠΎΠ΄. Π¦Π΅Π»ΠΈΠΎΡ ΡΠΈΠΌ Π·Π° ΡΠ°Π·Π²ΠΎΡ ΠΈ ΡΠΎΡΠ°Π±ΠΎΡΠ½ΠΈΡΠΈΡΠ΅ ΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠΈΡΠ° Π½Π° ΠΎΠ²Π° ΠΏΠΎ Π½Π΅ΠΊΠΎΠ΅ Π½Π΅Π³ΠΎΠ΄ΡΠ²Π°ΡΠ΅. ΠΠΈΠ½ΠΈΡΠ°ΡΠ° Π·Π° ΡΠ΅ΠΆΠΈΠΌ Π½Π° emacs ΠΏΠΎΠ³ΠΎΡΠ΅ Π³ΠΎ ΠΎΠ»Π΅ΡΠ½ΡΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΡΠ΅ Π°ΠΊΠΎ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΡΠ΅Π΄Π½ΠΈΠΊΠΎΡ Π½Π° emacs.
Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡΠΎΡ ns-3 Π΅ Π»ΠΈΡΠ΅Π½ΡΠΈΡΠ°Π½ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ GNU General Public License. ΠΠ΅ Π³ΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠ°Π²Π½ΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π½Π° GNU Π²ΠΎ ΡΠ΅ΠΊΠΎΡΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ns-3. Π§Π΅ΡΡΠΎΠΏΠ°ΡΠΈ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΡΠ²Π°ΡΠ΅ Π·Π° Π°Π²ΡΠΎΡΡΠΊΠΈ ΠΏΡΠ°Π²Π° Π·Π° Π΅Π΄Π½Π° ΠΎΠ΄ ΠΈΠ½ΡΡΠΈΡΡΡΠΈΠΈΡΠ΅ ΡΡΠ΅ΡΠ½ΠΈΡΠΊΠΈ Π²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ns-3 Π½Π°Π΄ ΡΠ΅ΠΊΡΡΠΎΡ ΠΈ Π°Π²ΡΠΎΡΠΎΡ Π½Π° GPL, ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ»Ρ.
/*
* 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, ΠΊΠΎΡ ΡΠ΅ Π³ΠΎ Π½Π°ΡΠ΄Π΅ΡΠ΅ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ src/core Π²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ ΡΡΠΎ ΡΡΠ΅ Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»Π΅. ΠΠΎ ΡΠΏΠΈΡΠΎΠΊΠΎΡ Π½Π° ΠΎΠ²ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ ΡΠ΅ Π½Π°ΡΠ΄Π΅ΡΠ΅ Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΡΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅. ΠΠΎΠ³Π° Π³ΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅ΡΠΎ, Waf Π³ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΡΠΎ ΡΠ°Π²Π½ΠΈ Π·Π°Π³Π»Π°Π²ΠΈΡΠ° Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ns3 Π²ΠΎ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ/Π΄Π΅Π±Π°Π³ΠΈΡΠ°
ΠΠΊΠΎ Π½Π΅ΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠΎΠ² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ, ΡΠΎΠ° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° Π½Π΅ ΡΡΠ΅ Π³ΠΎ Π½Π°Π²Π΅Π»Π΅ ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ ΠΏΡΠΈ Π³ΡΠ°Π΄Π΅ΡΠ΅ΡΠΎ Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° Π·Π° ΠΈΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π° ns-3, ΠΈΠ·Π³ΡΠ°Π΄Π΅ΡΠ΅ Π²Π°ΠΊΠ°:
$ ./waf ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Ρ --build-profile=debug --out=build/debug
$ ./waf ΠΈΠ·Π³ΡΠ°Π΄ΠΈ
ΠΈΠ»ΠΈ
$ ./waf ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Ρ --build-profile=optimized --out=build/optimized
$ ./waf ΠΈΠ·Π³ΡΠ°Π΄ΠΈ
ΠΈΠ»ΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ/ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½, Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ Π²Π°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°. Waf ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΌΠΎΠ΄ΡΠ» ΡΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π·Π° Π΄Π° Π³ΠΈ Π²ΡΠΈΡΠ° ΡΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΡΠΎ ΡΠ°Π²Π½ΠΈ Π·Π°Π³Π»Π°Π²ΠΈΡΠ°. ΠΠΈΠ΄Π΅ΡΡΠΈ, ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°, ΡΠ΅Π»ΠΈΠ³ΠΈΠΎΠ·Π½ΠΎ Π³ΠΎ ΡΠ»Π΅Π΄ΠΈΡΠ΅ ΠΎΠ²ΠΎΡ Π²ΠΎΠ΄ΠΈΡ, Π²Π΅ΡΠ΅ ΡΡΠ΅ Π³ΠΎ ΡΡΠΎΡΠΈΠ»Π΅ ΡΠΎΠ°
$ ./waf -d debug --enable-examples --enable-tests configureΠ·Π° Π΄Π° Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ. ΠΠΈΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠ²ΡΠ΅
$ ./wafΠ΄Π° ΡΠ΅ ΡΠΎΡΡΠ°Π²ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ. ΠΠ° ΡΠ΅Π³Π° ΠΊΠΎΠ³Π° ΡΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ../../build/debug/ns3, ΠΏΠΎΡΠΎΠ° ΡΠ°ΠΌΡ ΡΠ΅ Π³ΠΈ Π½Π°ΡΠ΄Π΅ΡΠ΅, ΠΌΠ΅ΡΡ Π΄ΡΡΠ³ΠΎΡΠΎ, Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π·Π° Π·Π°Π³Π»Π°Π²ΠΈΡΠ° Π½Π° ΡΠ΅ΡΠΈΡΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½ΠΈ ΠΏΠΎΠ³ΠΎΡΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° ΠΎΠ²ΠΈΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ΡΠ΅ Π΄Π΅ΠΊΠ° ΡΠΈΠ΅ Π³ΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΡΠΈΡΠ΅ ΡΠ°Π²Π½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΡΡΠΎ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ.
4.2.3 ns3 ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ
Π‘Π»Π΅Π΄Π½Π° Π»ΠΈΠ½ΠΈΡΠ° Π²ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΎΡΠΎ ΠΏΡΠ²ΠΎ.cc Π΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ° Π·Π° ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ.
using namespace ns3;ΠΡΠΎΠ΅ΠΊΡΠΎΡ ns-3 ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° Π²ΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ Π½Π° C++ Π½Π°ΡΠ΅ΡΠ΅Π½ ns3. ΠΠ²Π° Π³ΠΈ Π³ΡΡΠΏΠΈΡΠ° ΡΠΈΡΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ ns-3 Π²ΠΎ ΠΎΠΏΡΠ΅Π³ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΠΎΡ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ, ΡΡΠΎ ΡΠ΅ Π½Π°Π΄Π΅Π²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π²ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ°ΡΠ° ΡΠΎ Π΄ΡΡΠ³ ΠΊΠΎΠ΄. ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΡ C++ Π³ΠΎ Π²ΠΎΠ²Π΅Π΄ΡΠ²Π° ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ ns-3 Π²ΠΎ ΡΠ΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ (Π³Π»ΠΎΠ±Π°Π»Π΅Π½) Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠ΅Π³ΠΈΠΎΠ½. ΠΠ²Π° Π΅ ΡΠ°Π½ΡΠ°ΡΡΠΈΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° ΠΏΠΎ ΠΎΠ²Π°Π° Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ°, Π½Π΅ΠΌΠ° Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΡ Π·Π° Π΄ΠΎΠ·Π²ΠΎΠ»Π° ns3::scope ΠΏΡΠ΅Π΄ ΡΠ΅Π»ΠΈΠΎΡ Π²Π°Ρ ns-3 ΠΊΠΎΠ΄ Π·Π° Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅. ΠΠΊΠΎ Π½Π΅ ΡΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Π½ΠΈ ΡΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎΡΠΈ, ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π³ΠΎ ΡΠ΅ΡΠΈΡΠΈ ΡΠ΅ΠΊΠΎΡ ΡΡΠ΅Π±Π½ΠΈΠΊ Π²ΠΎ C++ ΠΈ ΡΠΏΠΎΡΠ΅Π΄Π΅ΡΠ΅ Π³ΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ ns3 ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ°ΡΠ° std using namespace std; Π²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ cout ΠΈ ΠΏΠΎΡΠΎΡΠΈ.
4.2.4 Π‘Π΅ΡΠ°
Π‘Π»Π΅Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΠΎΡΠΎ Π΅,
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");ΠΠ΅ ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΎΠ²Π°Π° ΠΈΠ·ΡΠ°Π²Π° ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠ΅ΡΡΠΎ Π·Π° Π΄Π° ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠ΅ Π·Π° Π½Π°ΡΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ΠΠΈΡΠ»ΠΎΡΠΎΠ΄. ΠΠΊΠΎ ΡΠ° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ns-3, ΡΠ΅ Π½Π°ΡΠ΄Π΅ΡΠ΅ Π²ΡΡΠΊΠ° Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π²ΠΎ Π»Π΅Π½ΡΠ°ΡΠ° Π·Π° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡΠ°. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° ΠΎΠ²Π°Π° Π²ΡΡΠΊΠ°, ΡΠ΅ Π±ΠΈΠ΄Π΅ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»Π΅Π½ΠΈ Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°. ΠΠΌΠ° Π²ΡΡΠΊΠ° βΠΠ°ΡΠ½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅β ΡΡΠΎ ΡΠ΅ Π²Π΅ ΠΎΠ΄Π½Π΅ΡΠ΅ Π΄ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° Π½Π°ΡΠ½ΠΎΠ²Π°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ns-3. ΠΠΊΠΎ ΡΠ° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π²ΡΡΠΊΠ°ΡΠ° βAPI Documentationβ, ΡΠ΅ Π±ΠΈΠ΄Π΅ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»Π΅Π½ΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΡΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ns-3 API.
ΠΠ° Π»Π΅Π²Π°ΡΠ° ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΡΠ΅ Π½Π°ΡΠ΄Π΅ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠΊΠ°Π· Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ°. ΠΠΎΠ±ΡΠΎ ΠΌΠ΅ΡΡΠΎ Π·Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊ Π΅ βΠΊΠ½ΠΈΠ³Π°ΡΠ°β Π½Π° Modules ns-3 Π²ΠΎ Π΄ΡΠ²ΠΎΡΠΎ Π·Π° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡΠ° ns-3. ΠΠΊΠΎ ΠΎΡΠΊΡΠΈΠ΅ΡΠ΅ ΠΠΎΠ΄ΡΠ»ΠΈ, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π»ΠΈΡΡΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π·Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ ns-3. ΠΠ°ΠΊΠΎ ΡΡΠΎ Π±Π΅ΡΠ΅ Π΄ΠΈΡΠΊΡΡΠΈΡΠ°Π½ΠΎ ΠΏΠΎΠ³ΠΎΡΠ΅, ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΡ Π½Π° ΠΌΠΎΠ΄ΡΠ» ΠΎΠ²Π΄Π΅ Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠ·Π°Π½ ΡΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΎΡ ΠΏΠΎΠ³ΠΎΡΠ΅. ΠΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° Π»ΠΎΠ³ΠΈΡΠ°ΡΠ΅ ns-3 Π΅ Π΄ΠΈΡΠΊΡΡΠΈΡΠ°Π½ Π²ΠΎ Π΄Π΅Π»ΠΎΡ ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΎΡ Π·Π° Π»ΠΎΠ³ΠΈΡΠ°ΡΠ΅, ΡΠ°ΠΊΠ° ΡΡΠΎ ΡΠ΅ ΡΠ΅ Π²ΡΠ°ΡΠΈΠΌΠ΅ Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΡΠ½Π° Π²ΠΎ ΠΎΠ²Π° ΡΠΏΠ°ΡΡΡΠ²ΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅ΡΠ΅ Π·Π° Π³ΠΎΡΠ½Π°ΡΠ° ΠΈΠ·ΡΠ°Π²Π° Π³Π»Π΅Π΄Π°ΡΡΠΈ Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΎΡ ΠΡΠ½ΠΎΠ²Π½ΠΈΠ° ΠΏΠΎΡΠΎΠ° ΠΎΡΠ²ΠΎΡΠ°ΡΡΠΈ ΡΠ° ΠΊΠ½ΠΈΠ³Π°ΡΠ° ΠΠ»Π°ΡΠΊΠΈ Π·Π° Π΄Π΅Π±Π°Π³ΠΈΡΠ°ΡΠ΅Π° ΠΏΠΎΡΠΎΠ° ΡΠ΅Π»Π΅ΠΊΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΠ»Π΅Π·ΠΈ. ΠΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° ΠΠ»Π΅Π·ΠΈ.
Π‘Π΅Π³Π° ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° ΠΠΈΡΠ»ΠΎΡΠΎΠ΄ Π·Π° ΠΌΠΎΠ΄ΡΠ» ΠΠ»Π΅Π·ΠΈ. ΠΠΎ ΡΠΏΠΈΡΠΎΠΊΠΎΡ ΡΠΎ ΠΌΠ°ΠΊΡΠΎΠ° Π½Π° Π²ΡΠ²ΠΎΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ°, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡ Π·Π° NS_LOG_COMPONENT_DEFINE. ΠΡΠ΅Π΄ Π΄Π° ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° Π²ΡΡΠΊΠ°ΡΠ°, Π½Π΅ Π·Π°Π±ΠΎΡΠ°Π²Π°ΡΡΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ βΠΠ΅ΡΠ°Π»Π΅Π½ ΠΎΠΏΠΈΡβ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΎΡ Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ° Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° Π²ΠΎΠΎΠΏΡΡΠΎ. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΊΡΠΎΠ»ΡΠ²Π°ΡΠ΅ Π½Π°Π΄ΠΎΠ»Ρ ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ βΠΠΎΠ²Π΅ΡΠ΅...β ΠΏΠΎΠ΄ ΡΠ°Π±Π΅Π»Π°ΡΠ°.
ΠΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΎΠΏΡΡΠ° ΠΈΠ΄Π΅ΡΠ° Π·Π° ΡΠΎΠ° ΡΡΠΎ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π°, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈΠΎΡ NS_LOG_COMPONENT_DEFINE. ΠΠ΅ΠΌΠ° Π΄Π° ΡΠ° Π΄ΡΠΏΠ»ΠΈΡΠ°ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° ΠΎΠ²Π΄Π΅, Π½ΠΎ Π΄Π° ΡΠ΅Π·ΠΈΠΌΠΈΡΠ°ΠΌΠ΅, ΠΎΠ²Π°Π° Π»ΠΈΠ½ΠΈΡΠ° Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ° Π½Π°ΡΠ΅ΡΠ΅Π½Π° FirstScriptExample, ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈΡΠ΅ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ ΠΎΠ΄ ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° ΡΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° ΠΈΠΌΠ΅.
4.2.5 ΠΠ»Π°Π²Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°
ΠΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²ΠΈ ΠΎΠ΄ ΡΡΠ΅Π½Π°ΡΠΈΠΎΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅,
int
main (int argc, char *argv[])
{ ΠΠ²Π° Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ° Π½Π° Π³Π»Π°Π²Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡΠ° Π½Π° Π²Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° (ΡΠΊΡΠΈΠΏΡΠ°). ΠΠ°ΠΊΠΎ ΠΈ ΡΠΎ ΡΠ΅ΠΊΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° C++, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π³Π»Π°Π²Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡΠ°, ΡΠ°Π° ΠΏΡΠ²ΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°. ΠΠ΅ΠΌΠ° Π½ΠΈΡΡΠΎ ΠΏΠΎΡΠ΅Π±Π½ΠΎ ΠΎΠ²Π΄Π΅. ΠΠ°ΡΠ°ΡΠ° ns-3 ΡΠΊΡΠΈΠΏΡΠ° Π΅ ΡΠ°ΠΌΠΎ C++ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. Π‘Π»Π΅Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° ΡΠ° ΠΏΠΎΡΡΠ°Π²ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠ°ΡΠ° ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΠ° Π½Π° 1 Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°, ΡΡΠΎ Π΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ:
Time::SetResolution (Time::NS);ΠΡΠ΅ΠΌΠ΅Π½ΡΠΊΠ°ΡΠ° ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΠ°, ΠΈΠ»ΠΈ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΠ°ΡΠ°, Π΅ Π½Π°ΡΠΌΠ°Π»Π°ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ (Π½Π°ΡΠΌΠ°Π»Π°ΡΠ° ΡΠ΅ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠ²Π½Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΡ Π΄Π²Π° ΠΏΠ°ΡΠΈ). ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΠ°ΡΠ° ΡΠΎΡΠ½ΠΎ Π΅Π΄Π½Π°Ρ. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ ΡΡΠΎ ΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΎΠ²Π°Π° ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ ΡΠ° ΡΡΠΎΡΠΈ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, ΠΏΠ° ΡΡΠΎΠΌ ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΠ°ΡΠ° Π΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²Π΅Π½Π°, ΡΠ° ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π°ΠΌΠ΅ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, ΡΠΏΡΠ΅ΡΡΠ²Π°ΡΡΠΈ ΠΏΠΎΠ½Π°ΡΠ°ΠΌΠΎΡΠ½ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ°. (ΠΠΊΠΎ Π½Π΅ ΡΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΠ°ΡΠ° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ, ΡΠ°Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ ΡΠ΅ Π±ΠΈΠ΄Π΅ Π΅Π΄Π½Π° Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π° ΠΈ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΡΠ΅ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°.)
Π‘Π»Π΅Π΄Π½ΠΈΡΠ΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° Π΄Π° ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ°Ρ Π΄Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° Π»ΠΎΠ³ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠΈ ΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ EchoClient ΠΈ EchoServer:
LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);ΠΠΊΠΎ ΡΠ° ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΡΠ° Logging, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π½ΠΈΠ²ΠΎΠ° Π½Π° Π»ΠΎΠ³ΠΈΡΠ°ΡΠ΅/Π³ΡΠ°Π½ΡΠ»Π°ΡΠ½ΠΎΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ²ΠΈΠ΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°Π°Ρ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ Π΄ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° INFO Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ Π½Π° Π΅Ρ ΠΎ. ΠΠ° ΠΎΠ²Π° Π½ΠΈΠ²ΠΎ, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΈΡΠΏΡΠ°ΡΠ° ΠΈ ΠΏΡΠΈΠΌΠ° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°.
Π‘Π΅Π³Π° ΡΠ΅ ΡΠ΅ ΡΠΏΡΡΡΠΈΠΌΠ΅ Π½Π° Π±ΠΈΠ·Π½ΠΈΡΠΎΡ ΡΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°ΡΠ° ΠΈ Π²ΠΎΠ΄Π΅ΡΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°. ΠΠΈΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π·Π° Π΄Π° ΡΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΠΎΠ²Π°Π° ΡΠ°Π±ΠΎΡΠ° ΡΡΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π°.
4.2.6 ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π°ΡΠΈΡΡΠ΅Π½ΡΠΈ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°
Π‘Π»Π΅Π΄Π½ΠΈΡΠ΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ Π²ΠΎ Π½Π°ΡΠ°ΡΠ° ΡΠΊΡΠΈΠΏΡΠ° Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ΅ Π³ΠΈ ΡΠΎΠ·Π΄Π°Π΄Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Node ns-3 ΠΊΠΎΠΈ ΡΠ΅ Π³ΠΈ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΈΡΠ΅ Π²ΠΎ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°.
NodeContainer nodes;
nodes.Create (2);ΠΡΠ΅Π΄ Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅, Π΄Π° ΡΠ° Π½Π°ΡΠ΄Π΅ΠΌΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° ΡΠ°ΡΠΎΡ NodeContainer. ΠΡΡΠ³ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ Π΄ΠΎΡΠ΄Π΅ Π΄ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° Π΄Π°Π΄Π΅Π½Π° ΠΊΠ»Π°ΡΠ° Π΅ ΠΏΡΠ΅ΠΊΡ ΡΠ°Π·ΠΈΡΠ΅ΡΠΎ ΠΠ»Π°ΡΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ ΠΠΈΡΠ»ΠΎΡΠΎΠ΄. ΠΠΊΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎ Doxygen, Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠΊΡΠΎΠ»ΡΠ²Π°ΡΡΠ΅ Π΄ΠΎ Π²ΡΠ²ΠΎΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΈ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π³ΠΎ ΡΠ°Π±ΠΎΡ ΠΠ»Π°ΡΠΈ. Π’ΡΠ΅Π±Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΎΠ² ΡΠ΅Ρ Π½Π° ΡΠ°Π·ΠΈΡΠΈΡΠ°, ΠΎΠ΄ ΠΊΠΎΠΈ Π΅Π΄Π½Π°ΡΠ° Π΅ Π»ΠΈΡΡΠ° Π½Π° ΠΊΠ»Π°ΡΠΈ. ΠΠΎΠ΄ ΠΎΠ²Π° ΡΠ°Π·ΠΈΡΠ΅ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π»ΠΈΡΡΠ° Π½Π° ΡΠΈΡΠ΅ ns-3 ΠΊΠ»Π°ΡΠΈ. Π‘ΠΊΡΠΎΠ»ΡΠ²Π°ΡΡΠ΅ Π½Π°Π΄ΠΎΠ»Ρ Π΄ΠΎ ns3::NodeContainer. ΠΠΎΠ³Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ΡΠ΅ ΠΊΠ»Π°ΡΠ°, ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ° Π·Π° Π΄Π° ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π²ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° ΡΠ°ΡΠΎΡ.
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°ΠΌΠ΅, Π΅Π΄Π½Π° ΠΎΠ΄ Π½Π°ΡΠΈΡΠ΅ ΠΊΠ»ΡΡΠ½ΠΈ Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΠΈ Π΅ ΡΠ°Π·ΠΎΠ»ΠΎΡ. Π’ΠΎΡ Π³ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΡ Π½Π° ΠΊΠΎΡ ΡΠ΅ Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΊΡΠΏΠΎΠ²ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈΡΠΊΠΈ. ΠΡΠΈΡΡΠ΅Π½Ρ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° NodeContainer ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΏΡΠΈΠ³ΠΎΠ΄Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅, ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΈ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ Π±ΠΈΠ»ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΠΠ°Π·ΠΎΠ», ΡΡΠΎ Π³ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π·Π° Π΄Π° ΡΠ° ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°. ΠΡΠ²Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° ΠΏΠΎΠ³ΠΎΡΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ° NodeContainer, ΠΊΠΎΠΈ Π³ΠΈ Π½Π°ΡΠ΅ΠΊΡΠ²Π°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈ. ΠΡΠΎΡΠ°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ ΠΡΠ΅ΠΈΡΠ°Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ Π½Π° ΡΠ°Π·Π»ΠΈ ΠΈ Π±Π°ΡΠ° ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ Π΄Π²Π° ΡΠ°Π·Π»ΠΈ. ΠΠ°ΠΊΠΎ ΡΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΠΎ ΠΠΈΡΠ»ΠΎΡΠΎΠ΄, ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π±Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ns-3 Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΠΠ°Π·ΠΎΠ» ΠΈ Π²Π½Π°ΡΡΠ΅ΡΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈ ΠΊΠΎΠ½ ΠΎΠ²ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ.
ΠΠ°Π·Π»ΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π²ΠΎ ΡΠΊΡΠΈΠΏΡΠ°ΡΠ° ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΠΏΡΠ°Π²Π°Ρ Π½ΠΈΡΡΠΎ. Π‘Π»Π΅Π΄Π½ΠΈΠΎΡ ΡΠ΅ΠΊΠΎΡ Π²ΠΎ Π³ΡΠ°Π΄Π΅ΡΠ΅ΡΠΎ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°ΡΠ° Π΅ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ ΡΠΎ ΠΌΡΠ΅ΠΆΠ°ΡΠ°. ΠΠ°ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π°ΡΠ° ΡΠΎΡΠΌΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ° ΡΡΠΎ ΡΠ° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°ΠΌΠ΅ Π΅ Π²ΡΡΠΊΠ°ΡΠ° ΠΎΠ΄ ΡΠΎΡΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΡ Π΄Π²Π° ΡΠ°Π·Π»ΠΈ. Π‘Π΅Π³Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΡΠ°ΠΊΠ²Π° Π²ΡΡΠΊΠ°.
PointToPointHelper
Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π²ΡΡΠΊΠ° ΠΎΠ΄ ΡΠΎΡΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΏΠΎΠ·Π½Π°ΡΠ° ΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΏΠΎΠΌΠΎΡΠ΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π·Π° Π΄Π° ΡΠ° ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΏΠΎΡΡΠ΅Π±Π½Π° Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ΡΠΎ. ΠΠΎΡΡΠ΅ΡΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Π½Π°ΡΠΈΡΠ΅ Π΄Π²Π΅ ΠΊΠ»ΡΡΠ½ΠΈ Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΠΈ NetDevice ΠΈ ΠΊΠ°Π½Π°Π». ΠΠΎ ΡΠ΅Π°Π»Π½ΠΈΠΎΡ ΡΠ²Π΅Ρ, ΠΎΠ²ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½ΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°Π°Ρ Π½Π° ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠ°ΡΡΠΈΡΠΊΠΈ ΠΈ ΠΌΡΠ΅ΠΆΠ½ΠΈΡΠ΅ ΠΊΠ°Π±Π»ΠΈ. ΠΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½ΠΎ, ΠΎΠ²ΠΈΠ΅ Π΄Π²Π΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠ΅ ΡΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ Π΅Π΄Π½Π° ΡΠΎ Π΄ΡΡΠ³Π° ΠΈ Π½ΠΈΠΊΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΌΠ΅ΡΠ° Π½Π° ΡΠΏΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΠ΅, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ΅Π΄ΠΈ ΠΡΠ΅ΡΠ½Π΅Ρ ΠΏΡΠ΅ΠΊΡ Π±Π΅Π·ΠΆΠΈΡΠ΅Π½ ΠΊΠ°Π½Π°Π». ΠΠ°ΡΠΈΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° ΡΠ° ΡΠ»Π΅Π΄Π°Ρ ΠΎΠ²Π°Π° Π±Π»ΠΈΡΠΊΠ° Π²ΡΡΠΊΠ° ΠΈ Π·Π°ΡΠΎΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ Π²ΠΎ ΠΎΠ²Π° ΡΡΠ΅Π½Π°ΡΠΈΠΎ PointToPointHelper Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΈ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ns-3 ΠΎΠ±ΡΠ΅ΠΊΡΠΈ PointToPointNetDevice ΠΈ PointToPointChannel. Π‘Π»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠΈ Π»ΠΈΠ½ΠΈΠΈ Π²ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΎΡΠΎ:
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));ΠΡΠ²Π° Π»ΠΈΠ½ΠΈΡΠ°,
PointToPointHelper pointToPoint;ΡΠΎΠ·Π΄Π°Π²Π° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ ΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π° ΡΡΠ΅ΠΊΠΎΡ PointToPointHelper. ΠΠ΄ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Π½Π°ΡΠ²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ ΡΠ»Π΅Π΄Π½Π°Π²Π° Π»ΠΈΠ½ΠΈΡΠ°,
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));ΠΌΡ ΠΊΠ°ΠΆΡΠ²Π° Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΡ PointToPointHelper ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° β5 Mbit/sβ (ΠΏΠ΅Ρ ΠΌΠ΅Π³Π°Π±ΠΈΡΠΈ Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π°) ΠΊΠ°ΠΊΠΎ βΠ‘ΡΠ°ΠΏΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ".
ΠΠ΄ ΠΏΠΎΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ°, Π½ΠΈΠ·Π°ΡΠ° βDataRateβ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° ΠΎΠ½Π° ΡΡΠΎ Π½ΠΈΠ΅ Π³ΠΎ Π½Π°ΡΠ΅ΠΊΡΠ²Π°ΠΌΠ΅ Π°ΡΡΠΈΠ±ΡΡ PointToPointNetDevice. ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π²ΠΎ ΠΠΈΡΠ»ΠΎΡΠΎΠ΄ Π·Π° ΡΠ°Ρ ns3::PointToPointNetDevice Π° Π²ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ GetTypeId ΡΠ΅ Π½Π°ΡΠ΄Π΅ΡΠ΅ Π»ΠΈΡΡΠ° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π·Π° ΡΡΠ΅Π΄ΠΎΡ. ΠΠ΅ΡΡ Π½ΠΈΠ² ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΡ βΠ‘ΡΠ°ΠΏΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ" ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ns-3 Π²ΠΈΠ΄Π»ΠΈΠ²ΠΈ Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΈΠΌΠ°Π°Ρ ΡΠ»ΠΈΡΠ½ΠΈ ΡΠΏΠΈΡΠΎΡΠΈ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈ. ΠΠΈΠ΅ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΎΠ²ΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° Π»Π΅ΡΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ° Π±Π΅Π· ΠΏΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ°, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ Π΄Π΅Π».
Π‘Π»ΠΈΡΠ½ΠΎ Π½Π° "Π‘ΡΠ°ΠΏΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ" Π²ΠΎ PointToPointNetDevice, ΡΠ΅ Π³ΠΎ Π½Π°ΡΠ΄Π΅ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΎΡ "Delay" ΠΏΠΎΠ²ΡΠ·Π°Π½ ΡΠΎ PointToPointChannel. ΠΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ°
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));Π²Π΅Π»ΠΈ PointToPointHelper ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° β2 msβ (Π΄Π²Π΅ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ) ΠΊΠ°ΠΊΠΎ Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π·Π° ΠΎΠ΄Π»ΠΎΠΆΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΡΠ΅ΡΠ΅ΡΠΎ Π·Π° Π²ΡΡΠΊΠ°ΡΠ° ΠΎΠ΄ ΡΠΎΡΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ° ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΡΠ° ΡΠΎΠ·Π΄Π°Π²Π°.
NetDeviceContainer
ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠΌΠ°ΠΌΠ΅ Π²ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΎΡΠΎ NodeContainer, ΠΊΠΎΡ ΡΠΎΠ΄ΡΠΆΠΈ Π΄Π²Π° ΡΠ°Π·Π»ΠΈ. ΠΠΈΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ PointToPointHelper, ΠΊΠΎΡ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ PointToPointNetDevices ΠΈ Π½ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ PointToPointChannel. ΠΡΡΠΎ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° NodeContainer Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΡΠ°Π·Π»ΠΈ, ΡΠ΅ ΠΏΡΠ°ΡΠ°ΠΌΠ΅ PointToPointHelper Π²ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΠΈ Π·Π° Π½Π°Ρ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈ. ΠΠΈ ΡΡΠ΅Π±Π° Π»ΠΈΡΡΠ° Π½Π° ΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ NetDevice, Π·Π°ΡΠΎΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ NetDeviceContainer Π΄Π° Π³ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΠΌΠ΅ Π½Π° ΠΈΡΡ Π½Π°ΡΠΈΠ½ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ NodeContainer Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ΅ ΡΡΠΎ Π³ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΎΠ²ΠΌΠ΅. Π‘Π»Π΅Π΄Π½ΠΈΡΠ΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄,
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ΅Π΄ΠΎΡ ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΡ. ΠΡΠ²Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Π³ΠΎ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π½Π° ΡΡΠ΅Π΄ΠΎΡ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΠΏΠΎΠ³ΠΎΡΠ΅, Π° Π²ΡΠΎΡΠΈΠΎΡ ΡΠ° Π²ΡΡΠΈ Π³Π»Π°Π²Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ°. ΠΠ΅ΡΠΎΠ΄ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ PointToPointHelper ΠΏΡΠΈΡΠ°ΡΠ° NodeContainer ΠΊΠ°ΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ. ΠΠ½Π°ΡΡΠ΅ NetDeviceContainer Π·Π° ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·ΠΎΠ» Π»ΠΎΡΠΈΡΠ°Π½ Π²ΠΎ NodeContainer ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π° (Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΎΠ΄ ΡΠΎΡΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ° ΠΌΠΎΡΠ° Π΄Π° ΠΈΠΌΠ° ΡΠΎΡΠ½ΠΎ Π΄Π²Π΅ ΠΎΠ΄ Π½ΠΈΠ²) PointToPointNetDevice Π΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ ΠΈ Π·Π°ΡΡΠ²Π°Π½ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π½Π° ΡΡΠ΅Π΄ΠΎΡ. PointToPointChannel ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π° ΠΈ Π½Π° Π½Π΅Π³ΠΎ ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½ΠΈ Π΄Π²Π° PointToPointNetDevices. ΠΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅, Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ ΡΠ΅ Π·Π°ΡΡΠ²Π°Π½ΠΈ Π²ΠΎ PointToPointHelper, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ Π²ΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ.
ΠΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ ΡΠ°Π²ΠΈΡΠ΅ pointToPoint.Install (ΡΠ°Π·Π»ΠΈ) ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° ΡΠ°Π·Π»ΠΈ, ΡΠ΅ΠΊΠΎΡ ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΠΌΡΠ΅ΠΆΠ΅Π½ ΡΡΠ΅Π΄ ΠΎΠ΄ ΡΠΎΡΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ° ΠΈ Π΅Π΄Π½Π° Π²ΡΡΠΊΠ° ΠΎΠ΄ ΡΠΎΡΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΡ Π½ΠΈΠ². ΠΠ²Π°ΡΠ° ΡΡΠ΅Π΄ΠΈ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ Π΄Π° ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ Π±ΡΠ·ΠΈΠ½Π° ΠΎΠ΄ ΠΏΠ΅Ρ ΠΌΠ΅Π³Π°Π±ΠΈΡΠΈ Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π° ΡΠΎ Π΄ΠΎΡΠ½Π΅ΡΠ΅ Π½Π° ΠΏΡΠ΅Π½ΠΎΡΠΎΡ ΠΎΠ΄ Π΄Π²Π΅ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΏΡΠ΅ΠΊΡ ΠΊΠ°Π½Π°Π»ΠΎΡ.
InternetStackHelper
Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ ΡΠ°Π·Π»ΠΈ ΠΈ ΡΡΠ΅Π΄ΠΈ, Π½ΠΎ Π½Π°ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ Π½Π΅ΠΌΠ°Π°Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅ΠΊΠΎΠ²ΠΈ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ. Π‘Π»Π΅Π΄Π½ΠΈΡΠ΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ³ΡΠΈΠΆΠ°Ρ Π·Π° ΠΎΠ²Π°.
InternetStackHelper stack;
stack.Install (nodes);InternetStackHelper - Π΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π·Π° ΡΡΠ΅ΠΊΠΎΠ²ΠΈ Π½Π° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ, ΡΠ»ΠΈΡΠ½ΠΎ Π½Π° PointToPointHelper Π·Π° ΠΌΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ ΠΎΠ΄ ΡΠΎΡΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ°. ΠΠ΅ΡΠΎΠ΄ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ Π·Π΅ΠΌΠ° NodeContainer ΠΊΠ°ΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ. ΠΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ, ΡΠ΅ Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΡΡΠ΅ΠΊΠΎΡ Π½Π° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ (TCP, UDP, IP, ΠΈΡΠ½.) Π½Π° ΡΠ΅ΠΊΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΊΠΈ ΡΠ°Π·ΠΎΠ».
IPv4Address Helper
ΠΠΎΡΠΎΠ° ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΠΏΠΎΠ²ΡΠ·Π΅ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈ ΡΠΎ IP Π°Π΄ΡΠ΅ΡΠΈ. ΠΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΠΌΠ΅ Π°ΡΠΈΡΡΠ΅Π½Ρ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π±Π°ΡΠ° Π½Π° IP Π°Π΄ΡΠ΅ΡΠ°ΡΠ°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΠΎΡ API ΡΡΠΎ Π΅ Π²ΠΈΠ΄Π»ΠΈΠ² Π·Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π΅ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° IP Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΌΡΠ΅ΠΆΠ½Π°ΡΠ° ΠΌΠ°ΡΠΊΠ° ΡΡΠΎ ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠ°ΡΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ° Π½Π° Π°Π΄ΡΠ΅ΡΠΈ (ΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Π½Π° ΠΏΠΎΠ½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΎ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΡ). Π‘Π»Π΅Π΄Π½ΠΈΡΠ΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ° ΠΏΡΠ²ΠΎ.cc,
Ipv4AddressHelper address;
address.SetBase ("10.1.1.0", "255.255.255.0");Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ Π·Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π·Π° Π°Π΄ΡΠ΅ΡΠΈ ΠΈ ΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΌΡ Π΄Π΅ΠΊΠ° ΡΡΠ΅Π±Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π° IP Π°Π΄ΡΠ΅ΡΠΈ ΠΎΠ΄ ΠΌΡΠ΅ΠΆΠ°ΡΠ° 10.1.1.0, ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ° Π±ΠΈΡ-ΠΌΠ°ΡΠΊΠ°ΡΠ° 255.255.255.0 Π·Π° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅. Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ, Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈΡΠ΅ Π°Π΄ΡΠ΅ΡΠΈ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π°Π°Ρ ΠΎΠ΄ Π΅Π΄Π½Π° ΠΈ ΡΠ΅ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°Π°Ρ ΠΌΠΎΠ½ΠΎΡΠΎΠ½ΠΎ, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΏΡΠ²Π°ΡΠ° Π°Π΄ΡΠ΅ΡΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΎΠ΄ ΠΎΠ²Π°Π° Π±Π°Π·Π° ΡΠ΅ Π±ΠΈΠ΄Π΅ 10.1.1.1, ΠΏΠΎΡΠΎΠ° 10.1.1.2 ΠΈΡΠ½. ΠΠΎ ΡΠ΅Π°Π»Π½ΠΎΡΡΠ°, Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΡΠΈΡΡΠ΅ΠΌΠΎΡ ns-3 Π³ΠΈ ΠΏΠ°ΠΌΡΠΈ ΡΠΈΡΠ΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ°ΡΠ°Π»Π½Π° Π³ΡΠ΅ΡΠΊΠ° Π°ΠΊΠΎ ΡΠ»ΡΡΠ°ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡΠ° ΠΊΠΎΠ³Π° ΠΈΡΡΠ°ΡΠ° Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΄Π²Π°ΠΏΠ°ΡΠΈ (ΠΏΠ°ΡΠ΅ΠΌ, ΠΎΠ²Π°Π° Π³ΡΠ΅ΡΠΊΠ° Π΅ ΡΠ΅ΡΠΊΠΎ Π΄Π° ΡΠ΅ Π΄Π΅Π±Π°Π³ΠΈΡΠ°).
Π‘Π»Π΅Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Π½Π° ΠΊΠΎΠ΄,
Ipv4InterfaceContainer interfaces = address.Assign (devices);ΡΠ° Π²ΡΡΠΈ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠ°ΡΠ° Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π° Π°Π΄ΡΠ΅ΡΠ°. ΠΠΎ ns-3 Π²ΠΎΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ Π°ΡΠΎΡΠΈΡΠ°ΡΠΈΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ IP Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΡΡΠ΅Π΄ ΠΊΠΎΡ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ IPv4 ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ. ΠΡΡΠΎ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ Π½ΠΈ ΡΡΠ΅Π±Π° ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΠΌΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΠ΄ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΡ Π·Π° ΠΏΠΎΠ΄ΠΎΡΠ½Π΅ΠΆΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ Π½ΠΈ ΡΡΠ΅Π±Π° Π»ΠΈΡΡΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ IPv4 ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ. IPv4InterfaceContainer ΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΎΠ²Π°Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ.
ΠΠ·Π³ΡΠ°Π΄ΠΈΠ²ΠΌΠ΅ ΠΌΡΠ΅ΠΆΠ° ΠΎΠ΄ ΡΠΎΡΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ°, ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅ΠΊΠΎΠ²ΠΈ ΠΈ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ. Π‘Π΅Π³Π° Π½ΠΈ ΡΡΠ΅Π±Π°Π°Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π²ΠΎ ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·ΠΎΠ» Π·Π° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ.
4.2.7 ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°
ΠΡΡΠ³Π° ΠΎΠ΄ Π³Π»Π°Π²Π½ΠΈΡΠ΅ Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ns-3 Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° (Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°). ΠΠΎ ΠΎΠ²Π° ΡΡΠ΅Π½Π°ΡΠΈΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π΄Π²Π΅ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΊΠ»Π°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΠ²ΠΈΠΊΠ°Π½ ns-3 ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° UdpEchoServer ΠΈ UdpEchoClientApplication. ΠΠ°ΠΊΠΎ ΠΈ Π²ΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ, Π½ΠΈΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ. ΠΠ²Π΄Π΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ UdpEchoServerHelper ΠΈ UdpEchoClientHelper ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π΄Π° Π½ΠΈ Π³ΠΎ ΠΎΠ»Π΅ΡΠ½Π°Ρ ΠΆΠΈΠ²ΠΎΡΠΎΡ.
UdpEchoServerHelper
Π‘Π»Π΅Π΄Π½ΠΈΠ²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ Π²ΠΎ Π½Π°ΡΠ°ΡΠ° ΡΠΊΡΠΈΠΏΡΠ° Π·Π° ΠΏΡΠΈΠΌΠ΅Ρ first.cc ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° UDP Π΅Ρ ΠΎ-ΡΠ΅ΡΠ²Π΅Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ΅ ΡΡΠΎ Π³ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΎΠ²ΠΌΠ΅ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ.
UdpEchoServerHelper echoServer (9);
ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));Π‘Π΅ ΡΠΎΠ·Π΄Π°Π²Π° ΠΏΡΠ²Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Π½Π° ΠΊΠΎΠ΄ Π²ΠΎ Π³ΠΎΡΠ½ΠΈΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ UdpEchoServerHelper. ΠΠ°ΠΊΠΎ ΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ, ΠΎΠ²Π° Π½Π΅ Π΅ ΡΠ°ΠΌΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΡΠΎΠ° Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΡ Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠ΅ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ΄Π½Π° ΠΎΠ΄ Π½Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈ Π΅ Π΄Π° Π³ΠΈ ΠΏΡΠ΅Π½Π΅ΡΠ΅ΠΌΠ΅ Π±Π°ΡΠ°Π½ΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΡ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π½ΠΈΡΡΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΎ ΠΎΡΠ²Π΅Π½ Π°ΠΊΠΎ Π½Π΅ ΠΌΡ Π³ΠΎ Π΄Π°Π΄Π΅ Π±ΡΠΎΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠ°ΡΠ° Π½Π° ΠΊΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠ΅ ΡΠ»ΡΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΎΠ²ΠΎΡ Π±ΡΠΎΡ ΠΌΠΎΡΠ° Π΄Π° ΠΌΡ Π±ΠΈΠ΄Π΅ ΠΏΠΎΠ·Π½Π°Ρ ΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ. ΠΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, Π³ΠΎ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°ΠΌΠ΅ Π±ΡΠΎΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΡ, ΠΏΠ°ΠΊ, Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π³ΠΎ ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ° SetAttribute ΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ. ΠΠΎΠ΄ΠΎΡΠ½Π°, Π°ΠΊΠΎ ΡΠ°ΠΊΠ°ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ SetAttribute Π·Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π·Π° Π°ΡΡΠΈΠ±ΡΡΠΎΡ Port.
ΠΠ°ΠΊΠΎ ΠΈ ΠΌΠ½ΠΎΠ³Ρ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΈ, ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ UdpEchoServerHelper ΠΈΠΌΠ° ΠΌΠ΅ΡΠΎΠ΄ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅. Π‘ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ²ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π° ΠΎΡΠ½ΠΎΠ²Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° Π΅Ρ ΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π° ΡΠΎ Π΄ΠΎΠΌΠ°ΡΠΈΠ½ΠΎΡ. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ ΠΏΡΠΈΡΠ°ΡΠ° NodeContainer ΠΊΠ°ΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΈΡΡΠΎ ΠΊΠ°ΠΊΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΡΡΠΎ Π³ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΌΠ΅.
ΠΠΌΠΏΠ»ΠΈΡΠΈΡΠ½Π°ΡΠ° ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° C++ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΎΠ²Π΄Π΅ Π³ΠΎ Π·Π΅ΠΌΠ° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ ΡΠ°Π·ΠΎΠ». ΠΠ΅ΠΌΠ΅ΡΠ΅ (1) (ΡΡΠΎ Π²ΡΠ°ΡΠ° ΠΏΠ°ΠΌΠ΅ΡΠ΅Π½ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ Π½Π° ΡΠ°Π·ΠΎΠ» - Ptr ) ΠΈ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΡ Π·Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ NodeContainerΠΊΠΎΡ ΠΏΠΎΡΠΎΠ° ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅. ΠΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠ΅ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ C++ ΠΊΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΡΠΏΠΈΡ Π΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ ΠΈ ΠΈΠ·Π²ΡΡΠ΅Π½, ΡΠΎΠ³Π°Ρ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΌΠ΅ΡΡ ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΠΈ.
Π‘Π΅Π³Π° Π³ΠΎ Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠΎΠ° echoServer.ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ Π·Π° Π΄Π° ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° UdpEchoServer Π½Π° ΠΏΡΠΎΠ½Π°ΡΠ΄Π΅Π½ΠΈ Π²ΠΎ NodeContainerΠΊΠΎΡ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π½Π°ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ, ΡΠ°Π·ΠΎΠ» ΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ 1. ΠΠ΅ΡΠΎΠ΄ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ ΡΠ΅ Π²ΡΠ°ΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΡΠΎ ΡΠΎΠ΄ΡΠΆΠΈ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈ Π΄ΠΎ ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ (Π²ΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ Π΅Π΄Π½Π°, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΏΠΎΠΌΠΈΠ½Π°Π²ΠΌΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π° NodeContainer, ΠΊΠΎΡ ΡΠΎΠ΄ΡΠΆΠΈ Π΅Π΄Π΅Π½ ΡΠ°Π·ΠΎΠ») ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ ΠΎΠ΄ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΡ.
ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠ°Π°Ρ ΠΊΠΎΠ³Π° Π΄Π° ΠΏΠΎΡΠ½Π°Ρ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π°Ρ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ "ΠΏΠΎΡΠ΅ΡΠΎΠΊ" ΠΈ ΠΌΠΎΠΆΠ΅Π±ΠΈ ΡΠ΅ ΡΡΠ΅Π±Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ³Π° Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΠΊΠΈΠ½Π΅ΡΠ΅ "ΡΡΠΎΠΏ". ΠΠΈΠ΅ Π³ΠΈ Π½ΡΠ΄ΠΈΠΌΠ΅ Π΄Π²Π΅ΡΠ΅ ΠΎΠΏΡΠΈΠΈ. ΠΠ²ΠΈΠ΅ Π²ΡΠ΅ΠΌΠΈΡΠ° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΡΠ΅ΡΠΎΠΊ ΠΈ Π‘ΡΠΎΠΏ. ΠΠ²ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΏΡΠΈΡΠ°ΡΠ°Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΎΠ΄ ΡΠΈΠΏΠΎΡ Π²ΡΠ΅ΠΌΠ΅. ΠΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½Π° Π½ΠΈΠ·Π° ΠΎΠ΄ ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° C++ Π·Π° Π΄Π° Π·Π΅ΠΌΠ΅ΠΌΠ΅ C++ Π΄Π²ΠΎΡΠ½ΠΎ 1.0 ΠΈ ΠΏΡΠ΅ΡΠ²ΠΎΡΠ΅ΡΠ΅ Π³ΠΎ Π²ΠΎ tns-3 Time ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΡ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ Seconds Π·Π° ΠΏΡΠ΅ΡΠ²ΠΎΡΠ°ΡΠ΅ Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠ°ΠΏΠΎΠΌΠ½Π΅ΡΠ΅ Π΄Π΅ΠΊΠ° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° Π°Π²ΡΠΎΡΠΎΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΎΡ, Π° C++ ΠΈΠΌΠ° ΡΠ²ΠΎΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΠ°ΠΊΠ° ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ Π΄Π° ΡΠΌΠ΅ΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΠΎΡΠ΅ΠΊΡΠ²Π°Π²ΡΠ΅. ΠΠ²Π΅ Π»ΠΈΠ½ΠΈΠΈ
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° Π΅Ρ ΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ (Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈ) Π΅Π΄Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΏΠΎ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ° ΠΈ Π΄Π° ΠΏΡΠ΅ΡΡΠ°Π½Π΅ (ΠΈΡΠΊΠ»ΡΡΠΈ) ΠΏΠΎ Π΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΎΠ΄ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°. ΠΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠΎΡ ΡΡΠΎ ΠΏΡΠΎΠ³Π»Π°ΡΠΈΠ²ΠΌΠ΅ Π½Π°ΡΡΠ°Π½ Π·Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ° (Π½Π°ΡΡΠ°Π½ Π·Π° ΡΡΠΎΠΏΠΈΡΠ°ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°), ΠΊΠΎΡ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ Π·Π° Π΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΡΠ΅ ΡΠ΅ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π°Ρ Π½Π°ΡΠΌΠ°Π»ΠΊΡ Π΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°.
UdpEchoClientHelper
ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠΎΠΏΡΡΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Π½Π° Π½Π°ΡΠΈΠ½ ΡΠ΅ΡΠΈΡΠΈ ΡΠ»ΠΈΡΠ΅Π½ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. ΠΠΎΡΡΠΎΠΈ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ UdpEchoClientApplication, ΠΊΠΎΡ Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½
UdpEchoClientHelper.
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));;Π‘Π΅ΠΏΠ°ΠΊ, Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ Π΅Ρ ΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ ΠΏΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ. ΠΡΠ²ΠΈΡΠ΅ Π΄Π²Π° Π°ΡΡΠΈΠ±ΡΡΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ UdpEchoClientHelper. ΠΠΎΠ΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ (Π²Π½Π°ΡΡΠ΅ Π²ΠΎ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΡ) Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ βΠΠ°Π»Π΅ΡΠΈΠ½ΡΠΊΠ° Π°Π΄ΡΠ΅ΡΠ°β ΠΈ "RemotePort" Π²ΠΎ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎΡΡ ΡΠΎ Π½Π°ΡΠΈΠΎΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ Π΄Π° Π³ΠΈ ΠΏΡΠ΅Π½Π΅ΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ.
ΠΠ° ΠΏΠΎΡΡΠ΅ΡΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ IPv4InterfaceContainer Π·Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° IP Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ ΡΡΠΎ ΡΠΌΠ΅ Π³ΠΈ Π΄ΠΎΠ΄Π΅Π»ΠΈΠ»Π΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈ. ΠΡΠ»ΡΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π·Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° IP Π°Π΄ΡΠ΅ΡΠ°ΡΠ° Π½Π° Π½ΡΠ»Π°Π½ΠΈΠΎΡ ΡΠ°Π·ΠΎΠ» Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π·Π° ΡΠ°Π·Π»ΠΈ. ΠΡΠ²ΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π·Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° IP Π°Π΄ΡΠ΅ΡΠ°ΡΠ° Π½Π° ΠΏΡΠ²ΠΈΠΎΡ ΡΠ°Π·ΠΎΠ» Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π·Π° ΡΠ°Π·Π»ΠΈ. ΠΠ½Π°ΡΠΈ, Π²ΠΎ ΠΏΡΠ²Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Π½Π° ΠΊΠΎΠ΄ (ΠΏΠΎΠ³ΠΎΡΠ΅), ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ ΠΈ ΠΌΡ ΠΊΠ°ΠΆΡΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠ°ΡΠ° Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΡΠ΅ Π±ΠΈΠ΄Π΅ IP Π°Π΄ΡΠ΅ΡΠ°ΡΠ° Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π° Π½Π° ΡΠ°Π·ΠΎΠ»ΠΎΡ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ΅ Π½Π°ΠΎΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. ΠΠΈΠ΅, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, Π²Π΅Π»ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΡΠ΅Π±Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π΄ΠΎ ΠΏΠΎΡΡΠ°ΡΠ° Π΄Π΅Π²Π΅Ρ.
ΠΡΡΠΈΠ±ΡΡΠΎΡ βMaxPacketsβ ΠΌΡ ΠΊΠ°ΠΆΡΠ²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΈΡΠΏΡΠ°ΡΠΈΠΌΠ΅ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°. ΠΡΡΠΈΠ±ΡΡΠΎΡ βΠΠ½ΡΠ΅ΡΠ²Π°Π»β ΠΌΡ ΠΊΠ°ΠΆΡΠ²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΊΠΎΠ»ΠΊΡ Π΄ΠΎΠ»Π³ΠΎ Π΄Π° ΡΠ΅ΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, Π° Π°ΡΡΠΈΠ±ΡΡΠΎΡ βΠΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΡβ ΠΌΡ ΠΊΠ°ΠΆΡΠ²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΊΠΎΠ»ΠΊΡ ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ Π³ΠΎΠ»Π΅ΠΌΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΡ. Π‘ΠΎ ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠ° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΌΡ ΠΊΠ°ΠΆΡΠ²Π°ΠΌΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ Π΄Π° ΠΈΡΠΏΡΠ°ΡΠΈ Π΅Π΄Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΠ΄ 1024 Π±Π°ΡΡΠΈ.
ΠΠ°ΠΊΠΎ ΠΈ ΠΊΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π΅Ρ ΠΎ, Π³ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΠ²ΠΌΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ Π·Π° Π΅Ρ ΠΎ ΠΏΠΎΡΠ΅ΡΠΎΠΊ ΠΈ Π‘ΡΠΎΠΏ, Π½ΠΎ ΠΎΠ²Π΄Π΅ Π³ΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΠΌΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ (Π΄Π²Π΅ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΏΠΎ ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°).
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 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΡΠΎ ΡΠ΅ ΡΠ° ΡΡΠ°ΡΡΡΠ²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ Π΅Ρ ΠΎ. ΠΠΎΠ²ΡΠΎΡΠ½ΠΎ, ΠΎΠ²ΠΎΡ Π½Π°ΡΡΠ°Π½ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π½Π°ΡΡΠ°Π½ΠΈ. ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° Π΅Ρ ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ Π½Π° ΠΏΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ Π½Π°ΡΡΠ°Π½ ΡΠ΅ ΡΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ ΡΠ°Π·Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π½ΠΎΡ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ° ΡΠΎ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ Π΄ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ.
Π§ΠΈΠ½ΠΎΡ Π½Π° ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ Π΄ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΡΠΈΠ½ΡΠΈΡ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ ΠΊΠΎΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ ΡΠ΅ Π·Π°ΠΊΠ°ΠΆΠ°Ρ Π·Π°Π΄ ΡΡΠ΅Π½Π°ΡΠ° ΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ Π΅Ρ ΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΡΠΏΠΎΡΠ΅Π΄ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΡΡΠΎ Π³ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΠ²ΠΌΠ΅ Π²ΠΎ ΡΠΊΡΠΈΠΏΡΠ°ΡΠ°.
ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΈΡΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ (Π·Π°ΠΏΠΎΠΌΠ½Π΅ΡΠ΅, Π°ΡΡΠΈΠ±ΡΡΠΎΡ MaxPackets Π±Π΅ΡΠ΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΎ Π½Π° Π΅Π΄Π΅Π½), Π»Π°Π½Π΅ΡΠΎΡ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ ΠΈΠ½ΠΈΡΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ ΠΎΠ²ΠΎΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΏΠΈΠ½Π³ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΡΠ΅ Π·Π°Π²ΡΡΠΈ ΠΈ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΎΡΡ. Π¨ΡΠΎΠΌ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ ΠΎΠ²Π°, ΠΏΡΠ΅ΠΎΡΡΠ°Π½Π°ΡΠΈΡΠ΅ Π·Π°ΠΊΠ°ΠΆΠ°Π½ΠΈ Π½Π°ΡΡΠ°Π½ΠΈ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ Π½Π°ΡΡΠ°Π½ΠΈΡΠ΅ Π‘ΡΠΎΠΏ Π·Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ. ΠΠΎΠ³Π° ΠΎΠ²ΠΈΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Ρ, Π½Π΅ΠΌΠ° Π΄Π° ΠΎΡΡΠ°Π½Π°Ρ Π½Π°ΡΡΠ°Π½ΠΈ Π·Π° ΠΏΠΎΠ½Π°ΡΠ°ΠΌΠΎΡΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ:: Π‘ΡΠ°ΡΡΡΠ²Π°Ρ ΡΠ΅ ΡΠ° Π²ΡΠ°ΡΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π°ΡΠ°. Π‘ΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ° Π΅ Π·Π°Π²ΡΡΠ΅Π½Π°.
ΠΡΡΠ°Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ ΠΈΡΡΠΈΡΡΠΈΡΠ΅ ΠΏΠΎ ΡΠ΅Π±Π΅. ΠΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΡΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡΠ° Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ::Π£Π½ΠΈΡΡΠΈ. ΠΠΈΠ΄Π΅ΡΡΠΈ Π±Π΅Π° ΠΏΠΎΠ²ΠΈΠΊΠ°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΠΏΠΎΠΌΠΎΡ (ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ΠΎΡ ns-3 Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ), ΠΊΠΎΠΈ ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ°ΠΊΠ° ΡΡΠΎ Π²ΠΎ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠΎΡ Π±Π΅Π° Π²ΠΌΠ΅ΡΠ½Π°ΡΠΈ ΠΊΡΠΊΠΈ Π·Π° Π΄Π° Π³ΠΈ ΡΠ½ΠΈΡΡΠ°Ρ ΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΡΡΠΎ Π±Π΅Π° ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ. ΠΠ΅ ΡΡΠ΅Π±Π°ΡΠ΅ ΡΠ°ΠΌΠΈ Π΄Π° ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π½ΠΈΠ΅Π΄Π΅Π½ ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ - ΡΠ΅ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π΅ Π΄Π° ΡΠ΅ ΡΠ°Π²ΠΈΡΠ΅ Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ::Π£Π½ΠΈΡΡΠΈ ΠΈ ΠΈΠ·Π»Π΅Π·Π΅ΡΠ΅. Π‘ΠΈΡΡΠ΅ΠΌΠΎΡ ns-3 ΡΠ΅ ΡΠ° Π·Π°Π²ΡΡΠΈ ΠΎΠ²Π°Π° Π½Π°ΠΏΠΎΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Π·Π° Π²Π°Ρ. ΠΡΡΠ°Π½Π°ΡΠΈΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΎΠ΄ Π½Π°ΡΠ°ΡΠ° ΠΏΡΠ²Π° ns-3 ΡΠΊΡΠΈΠΏΡΠ°, first.cc, Π³ΠΎ ΠΏΡΠ°Π²Π°Ρ ΡΠΎΠΊΠΌΡ ΡΠΎΠ°:
Simulator::Destroy ();
return 0;
}ΠΠΎΠ³Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ°Π½Π΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠΎΡ?
ns-3 Π΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π·Π° Π΄ΠΈΡΠΊΡΠ΅ΡΠ΅Π½ Π½Π°ΡΡΠ°Π½ (DE). ΠΠΎ ΡΠ°ΠΊΠΎΠ² ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ, ΡΠ΅ΠΊΠΎΡ Π½Π°ΡΡΠ°Π½ Π΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ ΡΠΎ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅, Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΡΠ²Π° ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½Π°ΡΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎ ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ΠΎΡ ΡΡΠΎ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π°Π°Ρ Π΄ΠΎΠ΄Π΅ΠΊΠ° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ° Π½Π°ΠΏΡΠ΅Π΄ΡΠ²Π°. ΠΠ°ΡΡΠ°Π½ΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π°Ρ Π·Π°ΠΊΠ°ΠΆΡΠ²Π°ΡΠ΅ ΠΈΠ΄Π½ΠΈ Π½Π°ΡΡΠ°Π½ΠΈ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΠΌΠ΅ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π·Π°ΠΊΠ°ΠΆΠ΅ Π·Π° Π΄Π° Π³ΠΎ Π·Π°Π²ΡΡΠΈ Π±ΡΠΎΠ΅ΡΠ΅ΡΠΎ Π²ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»).
ΠΠΎΡΠ΅ΡΠ½ΠΈΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ Π΅Π½ΡΠΈΡΠ΅ΡΠΎΡ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ IPv6 ΡΠ΅ Π·Π°ΠΊΠ°ΠΆΠ΅ ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°, Π±Π°ΡΠ°ΡΠ° ΠΎΠ΄ ΡΠΎΡΠ΅Π΄ ΠΈΡΠ½. ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π³ΠΎ Π·Π°ΠΊΠ°ΠΆΡΠ²Π° ΠΏΡΠ²ΠΈΠΎΡ Π½Π°ΡΡΠ°Π½ Π·Π° ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ ΡΠ°ΠΊΠ° Π½Π°ΡΠ°ΠΌΡ. ΠΠΎΠ³Π° Π½Π΅ΠΊΠΎΡ Π½Π°ΡΡΠ°Π½ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π°, ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½ΡΠ»Π°, Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ. ΠΠ°ΠΊΠΎ ΡΡΠΎ Π½Π°ΠΏΡΠ΅Π΄ΡΠ²Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°, ΡΠ΅ ΡΠ»ΡΡΡΠ²Π°Π°Ρ Π½Π°ΡΡΠ°Π½ΠΈ, ΠΈΠ»ΠΈ Π·Π°Π²ΡΡΡΠ²Π°Π°Ρ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π°Ρ Π½ΠΎΠ²ΠΈ. Π‘ΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΡΠ°Π½Π΅ Π°ΠΊΠΎ ΡΠ΅Π΄ΠΎΡ Π·Π° Π½Π°ΡΡΠ°Π½ΠΈ Π΅ ΠΏΡΠ°Π·Π΅Π½ ΠΈΠ»ΠΈ Π°ΠΊΠΎ ΡΠ΅ ΠΎΡΠΊΡΠΈΠ΅ ΠΏΠΎΡΠ΅Π±Π΅Π½ Π½Π°ΡΡΠ°Π½ Π‘ΡΠΎΠΏ. ΠΠ°ΡΡΠ°Π½ Π‘ΡΠΎΠΏ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ ΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ::Π‘ΡΠΎΠΏ (Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π·Π°ΡΡΠ°Π½ΡΠ²Π°ΡΠ΅).
ΠΠΌΠ° ΡΠΈΠΏΠΈΡΠ΅Π½ ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΠ³Π° Simulator::Stop Π΅ Π°ΠΏΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π΅Π½ Π·Π° Π΄Π° ΡΠ΅ Π·Π°ΠΏΡΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°: ΠΊΠΎΠ³Π° ΠΈΠΌΠ° ΡΠ°ΠΌΠΎΠΎΠ΄ΡΠΆΠ»ΠΈΠ²ΠΈ Π½Π°ΡΡΠ°Π½ΠΈ. Π‘Π°ΠΌΠΎΠΎΠ΄ΡΠΆΠ»ΠΈΠ²ΠΈ (ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΠ²Π°ΡΠΊΠΈ) Π½Π°ΡΡΠ°Π½ΠΈ ΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ ΠΊΠΎΠΈ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΡΠ΅ ΠΏΡΠ΅Π·Π°ΠΊΠ°ΠΆΡΠ²Π°Π°Ρ. ΠΠ°ΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΈΡΠ° Π½Π° ΡΠΎΠ°, ΡΠΈΠ΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΡΠ° ΠΎΠ΄ΡΠΆΡΠ²Π°Π°Ρ ΡΠ΅Π΄ΠΈΡΠ°ΡΠ° Π·Π° Π½Π°ΡΡΠ°Π½ΠΈ Π½Π΅ ΠΏΡΠ°Π·Π½Π°. ΠΠΎΡΡΠΎΡΠ°Ρ ΠΌΠ½ΠΎΠ³Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΠΎΠΈ ΡΠΎΠ΄ΡΠΆΠ°Ρ Π½Π°ΡΡΠ°Π½ΠΈ ΡΡΠΎ ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ²Π°Π°Ρ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ:
β’ FlowMonitor - ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΠΈΠ·Π³ΡΠ±Π΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ;
β’ RIPng β ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ Π΅ΠΌΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π½Π° ΡΡΡΠΈΡΠ°ΡΠΊΠ°ΡΠ° ΡΠ°Π±Π΅Π»Π°;
β’ ΠΈΡΠ½.
ΠΠΎ ΡΠ°ΠΊΠ²ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ::Π‘ΡΠΎΠΏ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΈ Π·Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΏΡΠ΅ΠΊΠΈΠ½ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ°. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΊΠΎΠ³Π° ns-3 Π΅ Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π΅ΠΌΡΠ»Π°ΡΠΈΡΠ°, RealtimeSimulator ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊΠΎΡ Π·Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΈΠΎΡ ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊ, ΠΈ Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ::Π‘ΡΠΎΠΏ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΈ Π·Π° Π·Π°ΠΏΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ.
ΠΠ½ΠΎΠ³Ρ ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π·Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ° Π²ΠΎ ΡΡΠ΅Π±Π½ΠΈΠΊΠΎΡ Π½Π΅ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°Π°Ρ Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ::Π‘ΡΠΎΠΏ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π·Π°Π²ΡΡΡΠ²Π°Π°Ρ ΠΊΠΎΠ³Π° Π½Π°ΡΡΠ°Π½ΠΈΡΠ΅ Π²ΠΎ ΡΠ΅Π΄ΠΈΡΠ° ΡΠ΅ ΠΈΡΡΡΠΏΠ΅Π½ΠΈ. ΠΠ΅ΡΡΡΠΎΠ°, ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ΅ Π³ΠΎ ΠΏΡΠΈΡΠ°ΡΠ°Ρ ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ::Π‘ΡΠΎΠΏ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄Π½Π°ΡΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ·ΡΠ°Π²Π° Π²ΠΎ ΠΏΡΠ²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ Π·Π°ΠΊΠ°ΠΆΠ΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΠ΅ Π½Π° 11 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ:
+ Simulator::Stop (Seconds (11.0));
Simulator::Run ();
Simulator::Destroy ();
return 0;
}ΠΠΎΡΠ΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΎΡΠΎ Π²ΡΡΡΠ½ΠΎΡΡ Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΎΠ²Π°Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΎΠ²Π°Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ° ΠΏΡΠΈΡΠΎΠ΄Π½ΠΎ Π·Π°Π²ΡΡΡΠ²Π° ΠΏΠΎ 10 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΎ, Π°ΠΊΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π·Π°ΠΏΠΈΡΠ°ΡΠ΅ Π²ΠΎ Π³ΠΎΡΠ½Π°ΡΠ° ΠΈΠ·ΡΠ°Π²Π° ΠΎΠ΄ 11 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π½Π° 1 ΡΠ΅ΠΊΡΠ½Π΄Π°, ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅ Π΄Π΅ΠΊΠ° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°ΡΠ° Π·Π°ΠΏΠΈΡΠ° ΠΏΡΠ΅Π΄ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡ ΠΈΠ·Π»Π΅Π· Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ Π½Π° Π΅ΠΊΡΠ°Π½ΠΎΡ (Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΈΠ·Π»Π΅Π·ΠΎΡ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° ΠΏΠΎ ΠΎΠΊΠΎΠ»Ρ 2 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ°).
ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΡΠ°Π²ΠΈΡΠ΅ Π½Π° Simulator::Stop ΠΏΡΠ΅Π΄ Π΄Π° ΠΏΠΎΠ²ΠΈΠΊΠ°ΡΠ΅ Simulator::Run; ΠΈΠ½Π°ΠΊΡ Simulator::Run ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½ΠΈΠΊΠΎΠ³Π°Ρ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ° Π²ΡΠ°ΡΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π°ΡΠ° Π½Π° Π³Π»Π°Π²Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΡΡΠΎΠΏ!
4.2.9 ΠΡΠ°Π΄Π΅ΡΠ΅ Π½Π° Π²Π°ΡΠ°ΡΠ° ΡΠΊΡΠΈΠΏΡΠ°
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° Π²Π°ΡΠΈΡΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΈ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠ²ΠΌΠ΅ ΡΡΠΈΠ²ΠΈΡΠ°Π»Π½ΠΎ. Π‘Γ¨ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π΅ Π΄Π° ΡΠ° ΡΡΠ°Π²ΠΈΡΠ΅ Π²Π°ΡΠ°ΡΠ° ΡΠΊΡΠΈΠΏΡΠ° Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ scratch ΠΈ ΡΠ°Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π°ΠΊΠΎ ΡΠ° ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Waf. ΠΠ° ΠΏΡΠΎΠ±Π°ΠΌΠ΅. ΠΡΠ°ΡΠ΅ΡΠ΅ ΡΠ΅ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ Π½Π° Π½Π°ΡΠ²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΈ ΠΊΠΎΠΏΠΈΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ/ΡΠΏΠ°ΡΡΡΠ²ΠΎ/ΠΏΡΠ².cc Π΄ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΡ ΠΈΠ·Π³ΡΠ΅Π±Π°Ρ
$ cd ../..
$ cp examples/tutorial/first.cc scratch/myfirst.ccΠ‘Π΅Π³Π° ΠΈΠ·Π³ΡΠ°Π΄Π΅ΡΠ΅ Π³ΠΎ Π²Π°ΡΠΈΠΎΡ ΠΏΡΠ² ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΌΠ°ΡΡΠ°:
$ ./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)Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ (Π·Π°Π±Π΅Π»Π΅ΠΆΠ΅ΡΠ΅ Π΄Π΅ΠΊΠ° Π°ΠΊΠΎ ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ Π²Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ scratch, ΡΠΎΠ³Π°Ρ ΠΌΠΎΡΠ° Π΄Π° ΡΠ° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΠΎΠ΄ ΠΈΠ·Π³ΡΠ΅Π±Π°Ρ):
$ ./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. Echo ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠΈΠ²ΠΊΠΎ Π³ΠΎ ΡΠ΅ΠΏΡΠΎΠ΄ΡΡΠΈΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΡ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΠΎ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ Π½Π° echo ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ Π΄Π΅ΠΊΠ° Π³ΠΎ Π΄ΠΎΠ±ΠΈΠ» ΡΠ²ΠΎΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ Π½Π°Π·Π°Π΄ ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ.
4.3 ns-3 ΠΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄
Π‘Π΅Π³Π° ΠΊΠΎΠ³Π° ΠΊΠΎΡΠΈΡΡΠ΅Π²ΡΠ΅ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈΡΠ΅ ns-3, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΡΠΎ ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΎΠ²Π°Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. ΠΠ°ΡΠ½ΠΎΠ²ΠΈΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ Π½Π° Π½Π°ΡΠΈΠΎΡ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ Π»ΠΈΠ½ΠΊ: . Π’Π°ΠΌΡ ΡΠ΅ ΡΠ° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π·Π° ΡΠ΅Π·ΠΈΠΌΠ΅ Π½Π° Mercurial Π·Π° Π½Π°ΡΠ΅ΡΠΎ Π΄ΡΠ²ΠΎ Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° 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ΠΠ°ΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π½Π° ΡΠΊΡΠΈΠΏΡΠΈ ΡΠ΅ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠΈ. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π»ΠΈΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ. ΠΠ΄Π½Π° ΠΎΠ΄ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π²ΠΎ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ΡΠΏΠ°ΡΡΡΠ²ΠΎ - ΠΏΡΠ²ΠΎ.cc. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° ΠΏΡΠ²ΠΎ.cc ΡΠ΅ Π³ΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΡ ΡΡΠΎ ΡΡΠΎΡΡΠΊΡ Π³ΠΎ Π½Π°ΡΡΠΈΠ²ΡΠ΅.
ΠΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π³Π»Π°Π²Π½ΠΎ ΡΠ΅ Π½Π°ΠΎΡΠ° Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ src. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠΊΠ½ΡΠ²Π°ΡΠ΅ Π½Π° Π²ΡΡΠΊΠ°ΡΠ° ΡΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π΄Π΅ΡΠ½ΠΎ ΠΎΠ΄ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ src, ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ Π»ΠΈΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ src. ΠΠΊΠΎ ΠΏΠΎΡΠΎΠ° ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΠΎΡ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ, ΡΠ΅ Π½Π°ΡΠ΄Π΅ΡΠ΅ Π»ΠΈΡΡΠ° Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ. ΠΡΠ²Π°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΡΠΎ ΡΠ΅ ΡΠ° Π²ΠΈΠ΄ΠΈΡΠ΅ (Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΡ Π½Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ²ΠΎΡ Π²ΠΎΠ΄ΠΈΡ) Π΅ ΠΏΡΠ΅ΠΊΠΈΠ½Π΅.ΠΆ. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° Π²ΡΡΠΊΠ°ΡΠ° ΠΏΡΠ΅ΠΊΠΈΠ½Π΅.ΠΆ, ΡΠ΅ Π±ΠΈΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ΅Π½ΠΈ Π΄ΠΎ ΠΈΠ·Π²ΠΎΡΠ½Π°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π·Π° ΠΏΡΠ΅ΠΊΠΈΠ½Π΅.ΠΆ, ΠΊΠΎΡ ΡΠΎΠ΄ΡΠΆΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈ ΠΌΠ°ΠΊΡΠΎΠ° Π·Π° ΠΈΠ·Π»Π΅Π· ΠΎΠ΄ ΡΠΊΡΠΈΠΏΡΠΈ Π΄ΠΎΠΊΠΎΠ»ΠΊΡ ΡΠ΅ ΠΎΡΠΊΡΠΈΡΠ°Ρ Π°Π±Π½ΠΎΡΠΌΠ°Π»Π½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈ. ΠΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π·Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈΡΠ΅ ΡΡΠΎ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ Π²ΠΎ ΠΎΠ²Π° ΠΏΠΎΠ³Π»Π°Π²ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ src/ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ/ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ. Π‘Π»ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΠΈΡΠΊΠ°ΡΡΠ΅ ΠΎΠΊΠΎΠ»Ρ Π΄ΡΠ²ΠΎΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π·Π° Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅ΡΠ΅ ΡΡΠΎ Π΅ ΠΊΠ°Π΄Π΅ ΠΈ Π΄Π° Π³ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΡΡΠΈΠ»ΠΎΡ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ns-3.
ΠΠ·Π²ΠΎΡ: www.habr.com
