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 ΠΈ UdpEchoServerApplication. ΠΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠ°ΠΊΠ²Π°ΡΠ΅, ΡΠ΅Π·ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΡΡΠ°Π²Π»ΡΠ²Π°Ρ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ/ΡΡΡΠ²ΡΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ ΠΈ Π΅Ρ ΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ.
4.1.3 ΠΠ°Π½Π°Π»
Π ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠ°. Π§Π΅ΡΡΠΎ ΠΌΠ΅Π΄ΠΈΠΈΡΠ΅, ΠΏΠΎ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ Π΄Π°Π½Π½ΠΈ Π² ΡΠ΅Π·ΠΈ ΠΌΡΠ΅ΠΆΠΈ, ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ ββΠΊΠ°Π½Π°Π»ΠΈ. ΠΠΎΠ³Π°ΡΠΎ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Ethernet ΠΊΠ°Π±Π΅Π» Π² ΡΡΠ΅Π½Π΅Π½ ΠΊΠΎΠ½ΡΠ°ΠΊΡ, Π²ΠΈΠ΅ ΡΠ²ΡΡΠ·Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡΠ° ΡΠΈ ΠΊΡΠΌ Ethernet Π²ΡΡΠ·ΠΊΠ°. Π ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΡΡ ns-3 Π²ΡΠ·Π΅Π» Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΎΠ±Π΅ΠΊΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π΅Π½ ΠΊΠ°Π½Π°Π». Π’ΡΠΊ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° ΡΠ΅ Π½Π°ΡΠΈΡΠ° ΠΊΠ°Π½Π°Π» ΠΈ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π² C++ ΠΎΡ ΠΊΠ»Π°ΡΠ° Channel.
ΠΠ»Π°Ρ ΠΠ°Π½Π°Π»ΠΠ°Π½Π°Π» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Ρ ΠΎΡΡΠΎΠ²Π΅ ΠΊΡΠΌ ΡΡΡ . ΠΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΡΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π² ΡΠΌΠΈΡΡΠ» Π½Π° ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ°Π½Π°Π»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° Π½Π΅ΡΠΎ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ. Π‘ΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΊΠ°Π½Π°Π» ΠΌΠΎΠΆΠ΅ ΡΡΡΠΎ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΈ Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ Π³ΠΎΠ»ΡΠΌ Ethernet ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡ ΠΈΠ»ΠΈ ΡΡΠΈΠΈΠ·ΠΌΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΏΡΠ»Π½ΠΎ Ρ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π±Π΅Π·ΠΆΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ.
Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΊΠ°Π½Π°Π»Π° Π² ΡΠΎΠ·ΠΈ ΡΡΠΎΠΊ, Π½Π°ΡΠ΅ΡΠ΅Π½ CsmaChannelCsmaChannel, PointToPointChannelPointToPointChannel ΠΈ WifiChannelWifiChannel. CsmaChannel, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ°, ΠΊΠΎΡΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π° ΡΡΠ΅Π΄Π° Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½ Π΄ΠΎΡΡΡΠΏ ΡΡΡ ΡΠ΅Π½Π·ΠΎΡ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ. Π’ΠΎΠ²Π° Π½ΠΈ Π΄Π°Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° Ethernet.
4.1.4 ΠΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ
ΠΡΠ΅Π΄ΠΈ Π±Π΅ΡΠ΅ ΡΠ°ΠΊΠ°, ΡΠ΅ Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠ°, ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π·Π°ΠΊΡΠΏΠΈΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΌΡΠ΅ΠΆΠΎΠ² ΠΊΠ°Π±Π΅Π» ΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ (Π² ΠΊΠΎΠΌΠΏΡΡΡΡΠ½Π°ΡΠ° ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ) ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½Π° ΠΊΠ°ΡΡΠ°, ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π° Π² ΠΊΠΎΠΌΠΏΡΡΡΡΠ°. ΠΠΊΠΎ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½Π° ΠΊΠ°ΡΡΠ° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π½ΡΠΊΠΎΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ΅ ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ ββΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈ ΠΈΠ»ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°ΡΡΠΈ. ΠΠ½Π΅Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠΈ ΠΈΠ΄Π²Π°Ρ Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ Ρ Π°ΡΠ΄ΡΠ΅Ρ Π·Π° ΠΌΡΠ΅ΠΆΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ Π½Π΅ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΊΠ°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
ΠΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΠΊΠ°ΡΡΠ° Π½ΡΠΌΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Π½Π΅ΠΉΠ½ΠΈΡ Ρ Π°ΡΠ΄ΡΠ΅Ρ. Π Unix (ΠΈΠ»ΠΈ Linux) ΡΠ°ΡΡ ΠΎΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ ΡΠ΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ° ΠΊΠ°ΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ. Π£ΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ° ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (NIC) ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°) ΠΈ ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ ββΠ·Π°Π΅Π΄Π½ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (Π½Π΅ΡΠ½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°). Π Unix ΠΈ Linux Π½Π°ΡΠΈΡΠ°ΡΠ΅ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΈΠΌΠ΅Π½Π° ΠΊΠ°ΡΠΎ eth0.
Π ns-3 Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΎΠ±Ρ Π²Π°ΡΠ° ΠΊΠ°ΠΊΡΠΎ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΡΠ°ΠΊΠ° ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½ΠΈΡ Ρ Π°ΡΠ΄ΡΠ΅Ρ. Π ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π΅ "ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΎ" Π²ΡΠ² Π²ΡΠ·Π΅Π», Π·Π° Π΄Π° ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠΈΡΠ° Ρ Π΄ΡΡΠ³ΠΈ Π²ΡΠ·Π»ΠΈ ΡΡΠ΅Π· ΠΊΠ°Π½Π°Π»ΠΈ. Π’ΠΎΡΠ½ΠΎ ΠΊΠ°ΡΠΎ ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΡ, Π΅Π΄ΠΈΠ½ Π²ΡΠ·Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²ΡΡΠ·Π°Π½ ΠΊΡΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ°Π½Π°Π»ΠΈ ΡΡΠ΅Π· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° NetDevices.
ΠΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π½Π° Π΄Π°Π΄Π΅Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π² C++ ΠΎΡ ΠΊΠ»Π°ΡΠ° NetDevice. ΠΠ»Π°Ρ NetDevice ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ ΠΎΠ±Π΅ΠΊΡΠΈ Node ΠΈ Channel; ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ° ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π² ΡΠΌΠΈΡΡΠ»Π° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Π ΡΠΎΠ·ΠΈ ΡΡΠΎΠΊ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° NetDevice, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ CsmaNetDevice, PointToPointNetDevice ΠΈ WifiNetDevice. Π’ΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊΡΠΎ Ethernet ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΡ Π°Π΄Π°ΠΏΡΠ΅Ρ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΌΡΠ΅ΠΆΠ° Ethernet, CsmaNetDevice ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ CsmaChannel, PointToPointNetDevice ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ PointToPointChannelΠ WifiNetDevice - ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ WifiChannel.
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 configure β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).
#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/ΡΠ΄ΡΠΎ Π²ΡΠ² Π²Π΅ΡΡΠΈΡΡΠ°, ΠΊΠΎΡΡΠΎ ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ. Π ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΎΠ³Π°ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ΡΠΎ, Waf ΠΏΠΎΡΡΠ°Π²Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ns3 Π² ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅/ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ
ΠΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π½Π΅ ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° Π·Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ns-3, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠ°:
$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ
ΠΈΠ»ΠΈ
$ ./waf configure --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β, ΡΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΎΡΠ²Π΅Π΄Π΅Π½ΠΈ Π΄ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° API ns-3.
Π Π»ΡΠ²Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°. ΠΠΎΠ±ΡΠΎ ΠΌΡΡΡΠΎ Π·Π° Π½Π°ΡΠ°Π»ΠΎ Π΅ "ΠΊΠ½ΠΈΠ³Π°ΡΠ°" Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ 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, ΠΊΠΎΠΈΡΠΎ Π½Π°ΡΠΈΡΠ°ΠΌΠ΅ Π²ΡΠ·Π»ΠΈ. ΠΡΠΎΡΠΈΡΡ ΡΠ΅Π΄ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Create Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° nodes ΠΈ ΠΌΠΎΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π°. ΠΠ°ΠΊΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΠΈΡΠ»ΠΎΡΠΎΠ΄, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ns-3 Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π΄Π²Π° ΠΎΠ±Π΅ΠΊΡΠ° ΠΡΠ·Π΅Π» ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΊΡΠΌ ΡΠ΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π²ΡΡΡΠ΅ΡΠ½ΠΎ.
ΠΡΠ·Π»ΠΈΡΠ΅, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π² ΡΠΊΡΠΈΠΏΡΠ°, Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΠΏΡΠ°Π²ΡΡ Π½ΠΈΡΠΎ. Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΡΠΏΠΊΠ° Π² ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠ°ΡΠ°. ΠΠ°ΠΉ-ΠΏΡΠΎΡΡΠ°ΡΠ° ΡΠΎΡΠΌΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΌΠ΅, Π΅ Π²ΡΡΠ·ΠΊΠ° ΠΎΡ ΡΠΎΡΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π°. Π‘Π΅Π³Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ°ΠΊΠ°Π²Π° Π²ΡΡΠ·ΠΊΠ°.
PointToPointHelper
Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π²ΡΡΠ·ΠΊΠ° ΠΎΡ ΡΠΎΡΠΊΠ° Π΄ΠΎ ΡΠΎΡΠΊΠ°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠ·Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π», ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΠΎΠΌΠΎΡΠ΅Π½ ΠΎΠ±Π΅ΠΊΡ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ, Π·Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π·Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ°. Π‘ΠΏΠΎΠΌΠ½Π΅ΡΠ΅ ΡΠΈ, ΡΠ΅ Π½Π°ΡΠΈΡΠ΅ Π΄Π²Π΅ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ NetDevice ΠΈ ΠΠ°Π½Π°Π». Π ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ ΡΠ΅Π·ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈ ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°Π±Π΅Π»ΠΈ. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅Π·ΠΈ Π΄Π²Π΅ Π½Π΅ΡΠ° ΡΠ° ΡΡΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π΅Π΄Π½ΠΎ Ρ Π΄ΡΡΠ³ΠΎ ΠΈ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ° Π½Π° ΡΠΏΠΎΠ΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ethernet ΠΏΠΎ Π±Π΅Π·ΠΆΠΈΡΠ΅Π½ ΠΊΠ°Π½Π°Π». ΠΠ°ΡΠΈΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ Π² ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° ΡΠ»Π΅Π΄Π²Π°Ρ ΡΠ°Π·ΠΈ ΡΡΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° ΠΈ Π·Π°ΡΠΎΠ²Π° Π²ΠΈΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ Π² ΡΠΎΠ·ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ 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 ΠΈ Ρ.Π½.) Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅Π½ Π²ΡΠ·Π΅Π».
IPv4AddressHelper
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΠΌ Π½Π°ΡΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ 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 ΡΠ΅ ΠΎΠ±Π°Π΄ΠΈ UdpEchoServerApplication ΠΈ 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++, ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ ΡΡΠΊ, Π²Π·Π΅ΠΌΠ° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° node.Get(1) (ΠΊΠΎΠΉΡΠΎ Π²ΡΡΡΠ° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π» ΠΊΡΠΌ ΠΎΠ±Π΅ΠΊΡΠ° Π½Π° Π²ΡΠ·Π΅Π»Π° - Ptr ) ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π·Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ NodeContainerΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌ. ΠΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π² ΠΊΠΎΠ΄Π° Π½Π° C++ ΠΊΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°, ΡΠΎΠ³Π°Π²Π° ΠΏΠΎΡΡΡΡΠ΅ΡΠ΅ ΡΡΠ΅Π΄ Π½Π΅ΡΠ²Π½ΠΈΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ.
Π‘Π΅Π³Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠΎΠ²Π° echoServer.Install Π½Π° ΠΏΡΡ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ UdpEchoServerApplication Π½Π° Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π² NodeContainerΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ, Π²ΡΠ·Π΅Π» Ρ ΠΈΠ½Π΄Π΅ΠΊΡ 1. ΠΠ΅ΡΠΎΠ΄ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌ ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π΅Π΄Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ΅Π½ NodeContainer, ΡΡΠ΄ΡΡΠΆΠ°Ρ Π΅Π΄ΠΈΠ½ Π²ΡΠ·Π΅Π»), ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΎΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠ°Ρ ΠΊΠΎΠ³Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΡΡΠ°ΡΠΈΠΊ Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π° Π³ΠΎ ΡΠΏΡΠ΅ΡΠ΅ "Π‘ΠΏΡΠΈ ΡΠ΅". ΠΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ ΠΈ Π΄Π²Π°ΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠ°. Π’Π΅Π·ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ApplicationContainer ΠΠ°ΡΠ°Π»ΠΎ ΠΈ Π‘ΠΏΠΈΡΠ°Π½Π΅. Π’Π΅Π·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΎΡ ΡΠΈΠΏ ΠΡΠ΅ΠΌΠ΅. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠ·ΡΠΈΡΠ½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ Π½Π° 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. ΠΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ (Π²ΡΡΡΠ΅ Π² ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°) Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ "RemoteAddress" ΠΈ "RemotePort" Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π½Π°ΡΠ΅ΡΠΎ ΡΠΏΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ.
ΠΠ΅ΠΊΠ° ΡΠΈ ΡΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ IPv4InterfaceContainer Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° IP Π°Π΄ΡΠ΅ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠΌΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΡΠ»Π΅Π²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π·Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ ΡΠ΅ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° IP Π°Π΄ΡΠ΅ΡΠ° Π½Π° Π½ΡΠ»Π΅Π²ΠΈΡ Π²ΡΠ·Π΅Π» Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π·Π° Π²ΡΠ·Π»ΠΈ. ΠΡΡΠ²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π·Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° IP Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΏΡΡΠ²ΠΈΡ Π²ΡΠ·Π΅Π» Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π·Π° Π²ΡΠ·Π»ΠΈ. Π ΡΠ°ΠΊΠ°, Π² ΠΏΡΡΠ²ΠΈΡ ΡΠ΅Π΄ ΠΎΡ ΠΊΠΎΠ΄Π° (ΠΏΠΎ-Π³ΠΎΡΠ΅) ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ ΠΈ ΠΌΡ ΠΊΠ°Π·Π²Π°ΠΌΠ΅, ΡΠ΅ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈΡΡ Π°Π΄ΡΠ΅Ρ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ IP Π°Π΄ΡΠ΅ΡΡΡ, ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ Π½Π° Ρ ΠΎΡΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΡΡΡΠ²ΡΡΡΡ. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΠΊΠ°Π·Π²Π°ΠΌΠ΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΅Π΄ΠΈΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½ΠΈ Π΄ΠΎ ΠΏΠΎΡΡ Π΄Π΅Π²Π΅Ρ.
ΠΡΡΠΈΠ±ΡΡΡΡ "MaxPackets" ΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ Π±ΡΠΎΠΉ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. ΠΡΡΠΈΠ±ΡΡΡΡ "Interval" ΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊΠΎΠ»ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ°ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, Π° Π°ΡΡΠΈΠ±ΡΡΡΡ "PacketSize" ΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ»ΡΠΌ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡΡ ΡΠΎΠ²Π°Ρ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ°. Π‘ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π΅Π΄ΠΈΠ½ 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 ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊΠ° Π·Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ Ρ ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊΠ° Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° ΠΈ Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ::Π‘ΡΠΎΠΏ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°.
ΠΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π² ΡΡΠ΅Π±Π½ΠΈΠΊΠ° Π½Π΅ ΡΠ΅ ΠΎΠ±Π°ΠΆΠ΄Π°Ρ Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ::Π‘ΡΠΎΠΏ ΠΈΠ·ΡΠΈΡΠ½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ±ΠΈΡΠΈΡΡΠ° Π² ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° ΡΠ° ΠΈΠ·ΡΠ΅ΡΠΏΠ°Π½ΠΈ. Π’Π΅Π·ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΎΠ±Π°ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Simulator::Stop. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΡ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π² ΠΏΡΡΠ²Π°ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΡΠ΅ Π½Π°ΡΡΠΎΡΠΈ ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° 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. ΠΠ° ΠΎΠΏΠΈΡΠ°ΠΌΠ΅. ΠΡΡΠ½Π΅ΡΠ΅ ΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΎΡ Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΈ ΠΊΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ examples/tutorial/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)
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° (ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π°ΠΊΠΎ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ Π²Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π² 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. ΠΡ ΠΎ ΡΡΡΠ²ΡΡΡΡ ΡΠΈΡ ΠΎ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π² Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° Π½Π° Π΅Ρ ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ΅ ΡΠΎΠΉ Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠ²ΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΎΡ ΡΡΡΠ²ΡΡΠ°.
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
ΠΠ°ΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΡΠ° Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΈ. ΠΠΊΠΎ ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. ΠΠ΄ΠΈΠ½ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π² ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΡΡΠΎΠΊ - ΠΏΡΡΠ²ΠΎ.cc. ΠΠΊΠΎ ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ ΠΏΡΡΠ²ΠΎ.cc ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ ΡΠΎΠΊΡ-ΡΠΎ Π½Π°ΡΡΠΈΡ ΡΠ΅.
ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π³Π»Π°Π²Π½ΠΎ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° SRC. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄, ΠΊΠ°ΡΠΎ ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΈΠ»ΠΈ ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΊΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π²Π΄ΡΡΠ½ΠΎ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°. ΠΠΊΠΎ ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° src, ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ src. ΠΠΊΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΡΡΠ²ΠΈΡΡ ΡΠ°ΠΉΠ», ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ (ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ), Π΅ Π°Π±ΠΎΡΡ.Ρ. ΠΠΊΠΎ ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ Π²ΡΡΠ·ΠΊΠ°ΡΠ° Π°Π±ΠΎΡΡ.Ρ, ΡΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ Π΄ΠΎ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΡΠ°ΠΉΠ» Π·Π° Π°Π±ΠΎΡΡ.Ρ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΈ Π·Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΎΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, Π°ΠΊΠΎ Π±ΡΠ΄Π°Ρ ΠΎΡΠΊΡΠΈΡΠΈ Π½Π΅ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ. ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π·Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ Π² ΡΠ°Π·ΠΈ Π³Π»Π°Π²Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° src/ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ/ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ. Π§ΡΠ²ΡΡΠ²Π°ΠΉΡΠ΅ ΡΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΈ Π΄Π° Π±ΡΡΠΊΠ½Π΅ΡΠ΅ ΠΈΠ· Π΄ΡΡΠ²ΠΎΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈΡΠ΅, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΊΡΠ΄Π΅ ΠΈΠΌΠ° ΠΈ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΡΡΠΈΠ»Π° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ns-3.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com