
4 ΠΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ°
4.1 ΠΠ»ΡΡΠΎΠ²ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ
4.1.1 Π£Π·Π΅Π» (Node)
4.1.2 ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Application)
4.1.3 ΠΠ°Π½Π°Π» (Channel)
4.1.4 ΠΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ (Net Device)
4.1.5 Π’ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ
4.2 ΠΡΡΠ²ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ns-3
4.2.1 ΠΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠΎΠ΄ (Boilerplate)
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 Π£Π·Π΅Π» (Node)
Π ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΆΠ°ΡΠ³ΠΎΠ½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΡΠ΅ Π½Π°ΡΠΈΡΠ° Ρ ΠΎΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΊΡΠ°ΠΉΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠ°, ΡΠ΅ nsβ3 Π΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Π° ΠΌΡΠ΅ΠΆΠ°, Π° Π½Π΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ, Π½Π°ΡΠΎΡΠ½ΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π° Ρ ΠΎΡΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠΉ Π΅ ΡΡΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎ-ΠΎΠ±Ρ ΡΠ΅ΡΠΌΠΈΠ½, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ Π΄ΡΡΠ³ΠΈ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Ρ ΠΎΠΆΠ΄Π° ΠΎΡ ΡΠ΅ΠΎΡΠΈΡΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ β ΡΠ·Π΅Π» (Node).node).
Π ns-3 ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΠ΅ Π½Π°ΡΠΈΡΠ° ΡΠ·Π΅Π». Π’Π°Π·ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π² C++ ΡΡΠ΅Π· ΠΊΠ»Π°ΡΠ° Node. NodeNode (ΡΠ·Π΅Π») ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π² ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΈ.
Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ Node ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΡ, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. Π©Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠ΅ΠΊΠΎΠ²Π΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π°Π²Π°Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎΠ»Π΅Π·Π½Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΡΠ°ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΌΠΎΠ΄Π΅Π» Π² ns-3.
4.1.2 ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Application)
ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠΎΡΡΡΠ΅ΡΡΡ Π·Π° ΠΊΠΎΠΌΠΏΡΡΡΠΈ ΡΠ΅ Π΄Π΅Π»ΠΈ Π½Π° Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΊΠ»Π°ΡΠ°. Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΡ ΡΠΎΡΡΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΊΠ°ΡΠΎ ΠΏΠ°ΠΌΠ΅Ρ, ΡΠΈΠΊΠ»ΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°, Π΄ΠΈΡΠΊ, ΠΌΡΠ΅ΠΆΠ° ΠΈ Π΄Ρ. Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½Π° ΠΌΠΎΠ΄Π΅Π». Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΡ ΡΠΎΡΡΡΠ΅Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅Π·ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΠΎΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π° ΠΏΠΎΠ»Π·Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π° Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠ΅Π», ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ΡΡΡΡΠΈ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΡΠΎΡΡΡΠ΅Ρ.
Π§Π΅ΡΡΠΎ Π»ΠΈΠ½ΠΈΡΡΠ° Π½Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ½ΠΈΡ ΡΠΎΡΡΡΠ΅Ρ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π° ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΡΡΡΠΏΠ²Π° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. Π ns-3 Π½ΡΠΌΠ° ΡΠ΅Π°Π»Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ Π½ΡΠΌΠ° ΠΏΠΎΠ½ΡΡΠΈΡ Π·Π° Π½ΠΈΠ²Π° Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΈΠ΄Π΅Ρ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΊΡΠΎ Π² βΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡβ, Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ, ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠΈ, ΡΠ°ΠΊΠ° ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ns-3 ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π²ΡΠ·Π»ΠΈΡΠ΅ ns-3 Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΈΡΠ΅ Π² ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΡΡ.
Π ns-3 ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅, Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. Π’Π°Π·ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π² C++ ΠΊΠ»Π°ΡΠΎΠΌ Application (ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). ΠΠ»Π°ΡΡΡ Application ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π½Π°ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π». ΠΡΠ°ΠΊΠ²Π° ΡΠ΅ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΊΠ»Π°ΡΠ° Application Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π°Ρ Π½ΠΎΠ²ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΊΠ»Π°ΡΠ° Application, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ UdpEchoClientApplication ΠΈ UdpEchoServerApplication. ΠΠ°ΠΊΡΠΎ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π°ΡΠ΅, ΡΠ΅Π·ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΠΌΠΈΡΠ°Ρ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ/ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ ΠΈ Π΅Ρ ΠΎ-ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ.
4.1.3 ΠΠ°Π½Π°Π» (Channel)
Π ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠ°. Π§Π΅ΡΡΠΎ ΡΡΠ΅Π΄ΠΈΡΠ΅, ΠΏΡΠ΅Π· ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ Π΄Π°Π½Π½ΠΈ Π² ΡΠ΅Π·ΠΈ ΠΌΡΠ΅ΠΆΠΈ, ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ ΠΊΠ°Π½Π°Π»ΠΈ. ΠΠΎΠ³Π°ΡΠΎ ΡΠ²ΡΡΠ·Π²Π°ΡΠ΅ Ethernet ΠΊΠ°Π±Π΅Π» ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠ°ΠΊΡ Π½Π° ΡΡΠ΅Π½Π°ΡΠ°, Π²ΠΈΠ΅ ΡΠ²ΡΡΠ·Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡΠ° ΠΊΡΠΌ Ethernet ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π΅Π½ ΠΊΠ°Π½Π°Π». Π ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΡΡ Π½Π° ns-3, Π²ΡΠ·Π΅Π» ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ ΠΎΠ±Π΅ΠΊΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΠΊΠ°Π½Π°Π». ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° ΡΡΠΊ ΡΠ΅ Π½Π°ΡΠΈΡΠ° ΠΊΠ°Π½Π°Π» ΠΈ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Ρ C++ ΠΊΠ»Π°Ρ Channel (ΠΊΠ°Π½Π°Π»).
ΠΠ»Π°Ρ ChannelChannel ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Π² ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ Ρ Π²ΡΠ·Π»ΠΈΡΠ΅. ΠΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΡΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ°Π½Π°Π»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° Π½Π΅ΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΡΠΎ ΠΊΠ°Π±Π΅Π». Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΡ ΠΊΠ°Π½Π°Π» ΡΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΈ Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ Π³ΠΎΠ»ΡΠΌ Ethernet ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡ ΠΈΠ»ΠΈ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΏΡΠ»Π½ΠΎ Ρ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π±Π΅Π·ΠΆΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ.
Π ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΊΠ°Π½Π°Π»Π°, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ CsmaChannelCsmaChannel, PointToPointChannelPointToPointChannel ΠΈ WifiChannelWifiChannel. CsmaChannel, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π° ΡΡΠ΅Π΄Π° Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π½ΠΎΡΠΈΡΠ΅Π»Ρ. Π’ΠΎΠ²Π° Π½ΠΈ Π΄Π°Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° Ethernet.
4.1.4 ΠΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ (Net Device)
ΠΡΠ΅Π΄ΠΈΡΠ½ΠΎ, Π·Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠ°, ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π·Π°ΠΊΡΠΏΠΈΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΡΠ΅ΠΆΠΎΠ² ΠΊΠ°Π±Π΅Π» ΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ (Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° ΠΠ) ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½Π° ΠΏΠ»Π°ΡΠΊΠ°, ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π° Π² ΠΊΠΎΠΌΠΏΡΡΡΡΠ°. ΠΠΊΠΎ Π½Π° ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½Π°ΡΠ° ΠΏΠ»Π°ΡΠΊΠ° Π±ΡΡ Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π½ΡΠΊΠΎΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ΅ ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΈ ΠΏΠ»Π°ΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°ΡΡΠΈ. ΠΠ½Π΅Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠΈ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΡ Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ Π·Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π΅ Π³ΠΈ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΊΠ°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
ΠΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΠΊΠ°ΡΡΠΈΡΠΊΠ° Π½ΡΠΌΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅. Π Unix (ΠΈΠ»ΠΈ Linux), ΡΠ°ΡΡ ΠΎΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ ΡΠ΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ° ΠΊΠ°ΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ. Π£ΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ° ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (NIC) ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (network device drivers) ΠΈ ΠΈΠΌΠ°Ρ ΠΎΠ±ΡΠΎΡΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (net devices). Π 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. Π Π³ΠΎΠ»ΡΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅ΠΌ ΠΌΡΠ΅ΠΆΠ° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π²ΡΡΠ·ΠΊΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠ±Π΅ΠΊΡΠΈ. Node, NetDevice ΠΈ Channel.
ΠΠΎΠ½Π΅ΠΆΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° NetDevices ΠΊΡΠΌ Π²ΡΠ·Π»ΠΈ, NetDevices ΠΊΡΠΌ ΠΊΠ°Π½Π°Π»ΠΈ, Π½Π°Π·Π½Π°ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° IP Π°Π΄ΡΠ΅ΡΠΈ ΠΈ Ρ.Π½. Π² nsβ3 Π΅ ΠΎΠ±ΡΠ° Π·Π°Π΄Π°ΡΠ°, Π·Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ NetDevice, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° nsβ3, Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ MAC Π°Π΄ΡΠ΅Ρ, Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΠΎΠ²Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π² Node, Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΡΡΠ΅ΠΊΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅ Π½Π° Π²ΡΠ·Π΅Π»Π° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ NetDevice ΠΊΡΠΌ Channel. Π©Π΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΎΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π·Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΊΡΠΌ ΠΌΠ½ΠΎΠ³ΠΎΡΠΎΡΠΊΠΎΠ²ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΌΡΠ΅ΠΆΠΈ Π² ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½Π° ΠΌΡΠ΅ΠΆΠ° (Internetworks). ΠΠΈΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π·Π° Π²Π°ΡΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Ρ ΡΠ΅Π·ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² Π»Π΅ΡΠ΅Π½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΌΠΎΠ΄Π΅Π».
4.2 ΠΡΡΠ²ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ns-3
ΠΠΊΠΎ ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΊΠ°ΠΊΡΠΎ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π²Π΅ΡΡΠΈΡ Π½Π° nsβ3 Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΠΈΠΌΠ΅ repos Π²ΡΠ² Π²Π°ΡΠ°ΡΠ° Π΄ΠΎΠΌΠ°ΡΠ½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ. ΠΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° release
ΠΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π·Π½Π°ΡΠΈ Π½Π΅ ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈΠ·Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ns-3, ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
$ ./waf configure --build-profile=release --out=build/release,
$ ./waf build
ΡΠ°ΠΌ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠ° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΡΠ»Π΅Π΄Π½Π°ΡΠ°:
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ΠΡΠΈΠ΄Π΅ΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° examples/tutorial. Π’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅ first.cc. Π’ΠΎΠ²Π° Π΅ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΠΏΡΠΎΡΡo ΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ° ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π° ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π΄Π΅ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ . ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΡΠΊΡΠΈΠΏΡ ΡΠ΅Π΄ ΠΏΠΎ ΡΠ΅Π΄, Π·Π° ΡΠ΅Π»ΡΠ° ΠΎΡΠ²ΠΎΡΠ΅ΡΠ΅ first.cc Π² Π»ΡΠ±ΠΈΠΌΠΈΡ ΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ.
4.2.1 ΠΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠΎΠ΄ (Boilerplate)
ΠΡΡΠ²ΠΈΡΡ ΡΠ΅Π΄ Π² ΡΠ°ΠΉΠ»Π° Π΅ ΡΠ΅Π΄ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π° ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° 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/core Π² ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈΡ ΠΎΡ Π²Π°Ρ ΡΠ΅Π»ΠΈΠΉΠ·. Π ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΎΠ³Π°ΡΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, Waf ΠΏΠΎΡΡΠ°Π²Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡΠ΅ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ns3 Π² ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ build/debug
ΠΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π·Π½Π°ΡΠΈ Π½Π΅ ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈΠ·Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ns-3, ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf build
ΠΈΠ»ΠΈ
$ ./waf configure --build-profile=optimized --out=build/optimized
$ ./waf build
ΠΈΠ»ΠΈ build/optimized, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π²Π°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. Waf ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ ΡΠ°ΠΉΠ» Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π’ΡΠΉ ΠΊΠ°ΡΠΎ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΡΡΠΈΠΊΡΠ½ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠ΅ ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, Π²ΠΈΠ΅ Π²Π΅ΡΠ΅ ΡΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ
$ ./waf -d debug --enable-examples --enable-tests configureΠ·Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ»Π°Π΄ΡΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅. ΠΠΈΠ΅ ΡΡΡΠΎ ΡΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ
$ ./wafΠ·Π° Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π’Π°ΠΊΠ° ΡΠ΅ ΡΠ΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ../../build/debug/ns3, ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅, ΡΡΠ΅Π΄ Π΄ΡΡΠ³ΠΎΡΠΎ, Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΡΠ΅ΡΠΈΡΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π°, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ ΠΏΠΎ-Π³ΠΎΡΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ΡΠ΅, ΡΠ΅ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ.
4.2.3 ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° ns3
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΡΠ΅Π΄ Π² ΡΠΊΡΠΈΠΏΡΠ° first.cc Π΅ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°.
using namespace ns3;ΠΡΠΎΠ΅ΠΊΡ nsβ3 Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° C++, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ ns3. Π’ΠΎΠ²Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ nsβ3 Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ Π² Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ ΠΈΠ·Π²ΡΠ½ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ, ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ Π½Π°Π΄ΡΠ²Π°ΠΌΠ΅, ΡΠ΅ ΡΠ»Π΅ΡΠ½ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Ρ Π΄ΡΡΠ³ ΠΊΠΎΠ΄. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° C++ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π²Π½Π°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° nsβ3 Π² ΡΠ΅ΠΊΡΡΠΈΡ (Π³Π»ΠΎΠ±Π°Π»Π΅Π½) Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠ΅Π³ΠΈΠΎΠ½. Π’ΠΎΠ²Π° Π΅ ΡΠ²ΠΎΠ΅ΠΎΠ±ΡΠ°Π·Π΅Π½ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΠΊΠ°ΠΆΠ΅, ΡΠ΅ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ ns3:: ΠΏΡΠ΅Π΄ΠΈ ΡΠ΅Π»ΠΈΡ nsβ3 ΠΊΠΎΠ΄, Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅. ΠΠΊΠΎ Π½Π΅ ΡΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΡΠ° Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ°, ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΏΠΎΡΡΠΈ Π²ΡΡΠΊΠΎ ΡΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ C++ ΠΈ ΡΡΠ°Π²Π½Π΅ΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° ns3 Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° std ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ. using namespace std; Π² ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ cout ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²Π΅ΡΠ΅.
4.2.4 ΠΠΎΠ³ΠΈΡΠ°Π½Π΅
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΡΠ΅Π΄ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° Π΅
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΎΠ²Π° ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΌΡΡΡΠΎ Π·Π° Π΄ΠΈΡΠΊΡΡΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ Π½Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. DoxygenΠΠΊΠΎ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΠ΅Π±ΡΠ°ΠΉΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° nsβ3, ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π»ΠΈΠ½ΠΊ βΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡβ (Documentation) Π² Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½Π°ΡΠ° Π»Π΅Π½ΡΠ°. ΠΠΎΠ³Π°ΡΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ Π»ΠΈΠ½ΠΊ, ΡΠ΅ ΡΠ΅ ΠΎΠ·ΠΎΠ²Π΅ΡΠ΅ Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΠΌΠ° Π»ΠΈΠ½ΠΊ Π·Π° βΠΠΎΡΠ»Π΅Π΄Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅β, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π²ΠΈ ΠΎΡΠ²Π΅Π΄Π΅ Π΄ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° nsβ3. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ Π»ΠΈΠ½ΠΊΠ° βAPI Documentationβ, ΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π½Π΅ΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° API Π½Π° nsβ3.
ΠΡ Π»ΡΠ²Π°ΡΠ° ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°. ΠΠΎΠ±ΡΠΎ ΠΌΡΡΡΠΎ Π·Π° Π½Π°ΡΠ°Π»ΠΎ Π΅ βΠΊΠ½ΠΈΠ³Π°ΡΠ°β Modules nsβ3 Π² Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΠΎΡΠΎ Π΄ΡΡΠ²ΠΎ Π½Π° nsβ3. ΠΠΊΠΎ ΡΠ°Π·ΡΠΈΡΠΈΡΠ΅ Modules, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π·Π° ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ Π½Π° nsβ3. ΠΠ°ΠΊΡΠΎ Π±Π΅ΡΠ΅ ΠΎΠ±ΡΡΠ΄Π΅Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅, ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° ΠΌΠΎΠ΄ΡΠ» ΡΡΠΊ Π΅ ΠΏΡΡΠΊΠΎ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π° ΠΏΠΎ-Π³ΠΎΡΠ΅. ΠΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅ Π½Π° nsβ3 ΡΠ΅ Π΄ΠΈΡΠΊΡΡΠΈΡΠ° Π² ΡΠ΅ΠΊΡΠΈΡΡΠ° ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ Π½Π΅Ρ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ Π² ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ Ρ Π³ΠΎΡΠ΅ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎΡΠΎ ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΡΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π° ΠΡΠ½ΠΎΠ²Π΅Π½, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΊΠ½ΠΈΠ³Π°ΡΠ° Debugging tools, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Logging. ΠΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ Logging.
Π‘Π΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Doxygen Π·Π° ΠΌΠΎΠ΄ΡΠ»Π° Logging. Π ΡΠΏΠΈΡΡΠΊΠ° Ρ ΠΌΠ°ΠΊΡΠΎΡΠΈ Π² Π³ΠΎΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠ° Π·Π° NS_LOG_COMPONENT_DEFINE. ΠΡΠ΅Π΄ΠΈ Π΄Π° ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ°, Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ βΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅β Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π² ΡΡΠ»ΠΎΡΡ. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π²ΡΡΡΠΈΡΠ΅ Π½Π°Π΄ΠΎΠ»Ρ ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ βMoreβ¦β ΠΏΠΎΠ΄ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ°.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΎΠ±ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° Π·Π° ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°, ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅ΡΠ΅ ΠΈ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡΠ΅ 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. ΠΡΡΠ³ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΡΠΎΠ·ΠΈ ΠΊΠ»Π°Ρ Π΅ ΡΡΠ΅Π· ΡΠ°Π·Π΄Π΅Π»Π° Classes Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Doxygen. ΠΠΊΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ Doxygen, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π²ΡΡΡΠ΅ΡΠ΅ Π½Π°Π³ΠΎΡΠ΅ Π΄ΠΎ Π³ΠΎΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΈ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° Classes. Π’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΎΠ² Π½Π°Π±ΠΎΡ ΠΎΡ ΡΠ°Π·Π΄Π΅Π»ΠΈ, Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π΅ ΡΠΏΠΈΡΡΠΊ Ρ ΠΊΠ»Π°ΡΠΎΠ²Π΅. ΠΠΎΠ΄ ΡΠΎΠ·ΠΈ ΡΠ°Π·Π΄Π΅Π» ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ns-3. ΠΡΠ΅Π²ΡΡΡΠ΅ΡΠ΅ Π½Π°Π΄ΠΎΠ»Ρ Π΄ΠΎ ns3 :: NodeContainer. ΠΠΎΠ³Π°ΡΠΎ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΠ°, ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π³ΠΎ, Π·Π° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΊΠ»Π°ΡΠ°.
ΠΠ°ΠΊΡΠΎ ΡΠΈ ΡΠΏΠΎΠΌΠ½ΡΠΌΠ΅, Π΅Π΄Π½ΠΎ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ Π΅ Π²ΡΠ·Π΅Π»ΡΡ. Π’ΠΎΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ°, ΠΊΡΠΌ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ ΡΡΠ΅ΠΊΠΎΠ²Π΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈ. Π’ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈΡΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ NodeContainer ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, NodeΠΊΠΎΠΈΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. ΠΡΡΠ²ΠΈΡΡ ΡΠ΅Π΄ ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΠ²ΡΠ²Π° NodeContainer, ΠΊΠΎΠΉΡΠΎ Π½Π°ΡΠΈΡΠ°ΠΌΠ΅ nodes. ΠΡΠΎΡΠΈΡΡ ΡΠ΅Π΄ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Create Π·Π° ΠΎΠ±Π΅ΠΊΡΠ° nodes ΠΈ ΠΈΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π°. ΠΠ°ΠΊΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Doxygen, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ ΠΈΡΠΊΠ° ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ns-3 Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π΄Π²Π° ΠΎΠ±Π΅ΠΊΡΠ° Node ΠΈ Π·Π°ΠΏΠ°Π·Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈΡΠ΅ ΠΊΡΠΌ ΡΠ΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π² ΡΠ΅Π±Π΅ ΡΠΈ.
Π‘ΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ Π² ΡΠΊΡΠΈΠΏΡΠ° Π²ΡΠ·Π»ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π½ΠΈΡΠΎ. Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΡΠΏΠΊΠ° ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ Ρ ΠΌΡΠ΅ΠΆΠ°ΡΠ°. ΠΠ°ΠΉ-ΠΏΡΠΎΡΡΠ°ΡΠ° ΡΠΎΡΠΌΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΌΠ΅, Π΅ Π²ΡΡΠ·ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π°. Π‘Π΅Π³Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ°ΠΊΠ°Π²Π° Π²ΡΡΠ·ΠΊΠ°.
PointToPointHelper
Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π΄Π²ΡΡΠΎΡΠΊΠΎΠ²Π° Π²ΡΡΠ·ΠΊΠ°, Π΄Π΅ΠΉΡΡΠ²Π°ΠΉΠΊΠΈ ΠΏΠΎ ΠΏΠΎΠ·Π½Π°Ρ Π½ΠΈ ΡΠ°Π±Π»ΠΎΠ½, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΏΠΎΠΌΠΎΡΠ΅Π½ ΠΎΠ±Π΅ΠΊΡ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° Π½ΠΈΡΠΊΠΎΡΠ°Π²Π½Π΅Π²Π° ΡΠ°Π±ΠΎΡΠ° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅. ΠΠ°ΠΏΠΎΠΌΠ½ΡΠΌΠ΅, ΡΠ΅ Π΄Π²Π΅ΡΠ΅ Π½ΠΈ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ NetDevice ΠΈ Channel. Π ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ ΡΠ΅Π·ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π½Π° ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΠΈ ΠΊΠ°ΡΡΠΈ ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°Π±Π΅Π»ΠΈ. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅Π·ΠΈ Π΄Π²Π΅ Π½Π΅ΡΠ° ΡΠ° ΡΡΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ, ΠΈ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ° Π½Π° ΠΎΠ±ΠΌΠ΅Π½, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΡΠΎΠΉΡΡΠ²Π° 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 Mbpsβ (ΠΏΠ΅Ρ ΠΌΠ΅Π³Π°Π±ΠΈΡΠ° Π² ΡΠ΅ΠΊΡΠ½Π΄Π°) ΠΊΠ°ΡΠΎ βDataRateΒ».
ΠΡ ΠΏΠΎ-ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ°, ΡΠ΅Π΄ΡΡ βDataRateβ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΡΠΈΡΠ°ΠΌΠ΅ Π°ΡΡΠΈΠ±ΡΡ PointToPointNetDevice. ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Doxygen Π·Π° ΠΊΠ»Π°ΡΠ° ns3::PointToPointNetDevice ΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° GetTypeId ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ Π°ΡΡΠΈΠ±ΡΡΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π·Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ. Π‘ΡΠ΅Π΄ ΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π°ΡΡΠΈΠ±ΡΡΡΡ βDataRateβ. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΎΠ±Π΅ΠΊΡΠΈ nsβ3 ΠΈΠΌΠ°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΏΠΈΡΡΡΠΈ Ρ Π°ΡΡΠΈΠ±ΡΡΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° Π»Π΅ΡΠ½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ ΠΏΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅, ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΡΠ°Π·Π΄Π΅Π».
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° βDataRateβ Π² 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 (nodes) ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π°, Π²ΡΠ΅ΠΊΠΈ Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ βΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ°β ΠΈ Π΅Π΄ΠΈΠ½ ΠΊΠ°Π½Π°Π» βΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ°β ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ . Π Π΄Π²Π΅ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ Π΄Π° ΠΏΡΠ΅Π΄Π°Π²Π°Ρ Π΄Π°Π½Π½ΠΈ Ρ ΡΠΊΠΎΡΠΎΡΡ ΠΏΠ΅Ρ ΠΌΠ΅Π³Π°Π±ΠΈΡΠ° Π² ΡΠ΅ΠΊΡΠ½Π΄Π° Ρ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ ΠΏΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΎΡ Π΄Π²Π΅ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
InternetStackHelper
Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ Π²ΡΠ·Π»ΠΈ ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½ΠΎ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ Π½Π΅ ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅ΠΊΠΎΠ²Π΅ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ. Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π²Π΅ ΡΠ΅Π΄Π° ΠΊΠΎΠ΄ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ³ΡΠΈΠΆΠ°Ρ Π·Π° ΡΠΎΠ²Π°.
InternetStackHelper stack;
stack.Install (nodes);InternetStackHelper Π΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΡΠ΅ΠΊΠΎΠ²Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° PointToPointHelper Π·Π° Π΄Π²ΡΡΠΎΡΠΊΠΎΠ²ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΠ΅ΡΠΎΠ΄ΡΡ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° NodeContainer ΠΊΠ°ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΉ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΡΠ΅ΠΊΠ° (TCP, UDP, IP ΠΈ Ρ.Π½.) Π½Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π» Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
Ipv4AddressHelper
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΠΌ Π½Π°ΡΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ IP Π°Π΄ΡΠ΅ΡΠΈ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° IP Π°Π΄ΡΠ΅ΡΠΈΡΠ΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ Π²ΠΈΠ΄ΠΈΠΌ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ API Π΅ Π·Π°Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅Π½ IP Π°Π΄ΡΠ΅Ρ ΠΈ ΠΌΠ°ΡΠΊΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΡΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ (ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π° ΠΏΠΎ-Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ Π² ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°). Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π²Π΅ ΡΠ΅Π΄Π° ΠΊΠΎΠ΄ Π² Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΊΡΠΈΠΏΡ first.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 Π°Π΄ΡΠ΅ΡΠ° Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΎΠ±Π΅ΠΊΡ Ipv4Interface. ΠΠ°ΠΊΡΠΎ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π½ΠΈ ΡΡΡΠ±Π²Π° ΡΠΏΠΈΡΡΠΊ Ρ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ° Π·Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π½ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΡΠΏΠΈΡΡΠΊ Ρ ΠΎΠ±Π΅ΠΊΡΠΈ Ipv4Interface. Ipv4InterfaceContainer ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ.
Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ ΠΌΡΠ΅ΠΆΠ° ΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ°, Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅ΠΊΠΎΠ²Π΅ ΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ. Π‘Π΅Π³Π° Π½ΠΈ ΡΡΡΠ±Π²Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊ Π² Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π²ΡΠ·Π»ΠΈΡΠ΅.
4.2.7 ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ
ΠΡΠ΅ Π΅Π΄Π½Π° ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ns-3 Π΅ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). Π ΡΠΎΠ·ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄Π²Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Π±Π°Π·ΠΎΠ²ΠΈΡ ΠΊΠ»Π°Ρ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ns-3, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ UdpEchoServerApplication ΠΈ UdpEchoClientApplication. ΠΠ°ΠΊΡΠΎ ΠΈ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, Π·Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΠΌΠ΅ Π±Π°Π·ΠΎΠ²ΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ. Π’ΡΠΊ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ UdpEchoServerHelper ΠΈ UdpEchoClientHelperΠΎΠ±Π΅ΠΊΡΠΈ, Π·Π° Π΄Π° ΡΠ»Π΅ΡΠ½ΠΈΠΌ ΠΆΠΈΠ²ΠΎΡΠ° ΡΠΈ.
UdpEchoServerHelper
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΊΠΎΠ΄ Π² Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ΅Π½ ΡΠΊΡΠΈΠΏΡ first.cc ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ UDP echo server Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ Π²ΡΠ·Π»ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΡΠ·Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ ΠΏΠΎ-ΡΠ°Π½ΠΎ.
UdpEchoServerHelper echoServer (9);
ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));ΠΡΡΠ²ΠΈΡΡ ΡΠ΅Π΄ ΠΊΠΎΠ΄ Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈΡ ΠΏΠΎ-Π³ΠΎΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΡΠ·Π΄Π°Π²Π° UdpEchoServerHelper. ΠΠ°ΠΊ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΎ, ΡΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠΈ, Π° ΠΎΠ±Π΅ΠΊΡ, ΠΊΠΎΠΉΡΠΎ Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ΅Π°Π»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΄Π½ΠΎ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΡΠΏΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΡ Π΅ Π΄Π° ΠΏΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ Π½Π΅ ΠΌΡ Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ Π½ΠΎΠΌΠ΅Ρ Π½Π° ΠΏΠΎΡΡΠ°, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ²ΡΡΡΡ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΡΠΎΠ·ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ° Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΡΠ°. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡΡ, ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π°, ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° SetAttribute Ρ ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ΠΎΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠΎ-ΠΊΡΡΠ½ΠΎ, ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° SetAttribute ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ Π½ΠΎΠ²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ° βΠΠΎΡΡβ.
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΎΠ±Π΅ΠΊΡΡΡ UdpEchoServerHelper ΠΈΠΌΠ° ΠΌΠ΅ΡΠΎΠ΄ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅. ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π΅Ρ ΠΎ-ΡΡΡΠ²ΡΡ ΠΈ ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ ΠΌΡ ΠΊΡΠΌ Π²ΡΠ·Π΅Π». ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΅, ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΡΡ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° NodeContainter ΠΏΡΠΈΠ΅ΠΌΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈΠ΄ΡΡ ΠΌΠ΅.
ΠΠ΅ΡΠ²Π½ΠΎΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ C++, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠΊ ΡΠ°Π±ΠΎΡΠΈ, ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° node.Get (1) (ΠΊΠΎΠΉΡΠΎ Π²ΡΡΡΠ° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π» ΠΊΡΠΌ ΠΎΠ±Π΅ΠΊΡ Π½Π° Π²ΡΠ·Π΅Π» β Ptr) ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π·Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ NodeContainer, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅. ΠΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π² C++ ΠΊΠΎΠ΄Π°, ΠΌΠ΅ΡΠΎΠ΄ΡΡ Ρ ΠΊΠ°ΠΊΠ²Π° ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°, ΡΠΎ ΡΡΡΡΠ΅ΡΠ΅ ΡΡΠ΅Π΄ Π½Π΅ΡΠ²Π½ΠΈΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ.
Π’ΡΠΊ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ echoServer.Install ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ UdpEchoServerApplication Π½Π° Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² NodeContainer, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ, Π²ΡΠ·Π΅Π» Ρ ΠΈΠ½Π΄Π΅ΠΊΡ 1. ΠΠ΅ΡΠΎΠ΄ΡΡ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π΅Π΄Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ΅Π½ NodeContainer, ΡΡΠ΄ΡΡΠΆΠ°Ρ Π΅Π΄ΠΈΠ½ Π²ΡΠ·Π΅Π»), ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΎΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π΄Π° ΠΏΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊ βstartβ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΏΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π° ΡΠΏΡΠ°Ρ βstopβ. ΠΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΠΈ Π΄Π²Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°. Π’Π΅Π·ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ ApplicationContainer Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΉ ΠΈ Π‘ΠΏΡΠΈ. Π’Π΅Π·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΎΡ ΡΠΈΠΏ ΠΡΠ΅ΠΌΠ΅. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ²Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ C++, Π·Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ C++ double 1.0 ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π² ΠΎΠ±Π΅ΠΊΡ tnsβ3 Time, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΠ±Π΅ΠΊΡ Seconds Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π² ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Ρ ΠΎΡ Π°Π²ΡΠΎΡΠ° Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°, Π° C++ ΠΈΠΌΠ° ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈ ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΎΡΠ°ΠΊΠ²Π°ΡΠ΅. ΠΠ²Π΅ Π»ΠΈΠ½ΠΈΠΈ,
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ echo-ΡΡΡΠ²ΡΡ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° (Π²ΠΊΠ»ΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ) ΡΠ»Π΅Π΄ Π΅Π΄Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΎΡ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° ΠΈ ΡΠ΅ ΡΠΏΡΠ΅ (ΠΈΠ·ΠΊΠ»ΡΡΠΈ) ΡΠ»Π΅Π΄ Π΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ. ΠΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΠΎΠ±ΡΠ²ΠΈΡ ΠΌΠ΅ ΡΡΠ±ΠΈΡΠΈΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ (ΡΡΠ±ΠΈΡΠΈΠ΅ Π½Π° ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ), ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ ΡΠ»Π΅Π΄ Π΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΈ Π½Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ Π΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°.
UdpEchoClientHelper
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ echo ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠ²Π° ΠΏΠΎ Π½Π°ΡΠΈΠ½, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ Π½Π° ΡΡΡΠ²ΡΡΠ°. ΠΠΌΠ° ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΎΠ±Π΅ΠΊΡ 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));ΠΠ±Π°ΡΠ΅ Π·Π° echo-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ ΠΏΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°. ΠΡΡΠ²ΠΈΡΠ΅ Π΄Π²Π° Π°ΡΡΠΈΠ±ΡΡΠ° ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ UdpEchoClientHelper. ΠΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ (Π²ΡΡΡΠ΅ Π² ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°) Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ Β«RemoteAddressΒ» ΠΈ Β«RemotePortΒ» Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π½Π°ΡΠ΅ΡΠΎ ΡΠΏΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°.
ΠΠ΅ΠΊΠ° ΠΏΡΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ ΡΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Ipv4InterfaceContainer Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° IP Π°Π΄ΡΠ΅ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠΌΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΡΠ»Π΅Π²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ ΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° IP Π°Π΄ΡΠ΅ΡΠ° Π½Π° Π½ΡΠ»Π΅Π²ΠΈΡ Π²ΡΠ·Π΅Π» Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ Π²ΡΠ·Π»ΠΈ. ΠΡΡΠ²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° IP Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΏΡΡΠ²ΠΈΡ Π²ΡΠ·Π΅Π» Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ Π²ΡΠ·Π»ΠΈ. Π ΡΠ°ΠΊΠ°, Π² ΠΏΡΡΠ²ΠΈΡ ΡΠ΅Π΄ Π½Π° ΠΊΠΎΠ΄Π° (ΠΎΡΠ³ΠΎΡΠ΅) ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ° ΠΈ ΠΌΡ ΠΊΠ°Π·Π²Π°ΠΌΠ΅, ΡΠ΅ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈΡΡ Π°Π΄ΡΠ΅Ρ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ IP Π°Π΄ΡΠ΅ΡΡΡ, Π½Π°Π·Π½Π°ΡΠ΅Π½ Π½Π° Π²ΡΠ·Π΅Π»Π°, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΡΡΡΠ²ΡΡΡΡ. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΠΊΠ°Π·Π²Π°ΠΌΠ΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π΄ΠΎ Π΄Π΅Π²Π΅ΡΠΈΡ ΠΏΠΎΡΡ.
ΠΡΡΠΈΠ±ΡΡΡΡ Β«MaxPacketsΒ» ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π·Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. ΠΡΡΠΈΠ±ΡΡΡΡ Β«IntervalΒ» ΡΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊΠΎΠ»ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΈΠ·ΡΠ°ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, Π° Π°ΡΡΠΈΠ±ΡΡΡΡ Β«PacketSizeΒ» ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ»ΡΠΌΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°ΡΠ° Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½ΠΎΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ°. Π‘ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ Ρ ΡΠ°Π·ΠΌΠ΅Ρ 1024 Π±Π°ΠΉΡΠ°.
ΠΠ°ΠΊΡΠΎ Π² ΡΠ»ΡΡΠ°Ρ Ρ Π΅Ρ ΠΎ ΡΡΡΠ²ΡΡ, Π½ΠΈΠ΅ Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ Π½Π° Π΅Ρ ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΉ ΠΈ Π‘ΠΏΡΠΈ, Π½ΠΎ ΡΡΠΊ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ΠΊΡΠ½Π΄Π° ΡΠ»Π΅Π΄ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠ° (Π΄Π²Π΅ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΠ»Π΅Π΄ ΡΡΠ°ΡΡΠ° Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°).
4.2.8 Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ
ΠΠ° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. Π’ΠΎΠ²Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Simulator::Run.
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 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. Π‘Π»Π΅Π΄ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Simulator::Run, ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π° ΡΠΏΠΈΡΡΠΊΠ° Ρ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°. ΠΡΡΠ²ΠΎ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ ΡΠ»Π΅Π΄ 1,0 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΅Ρ ΠΎ ΡΡΡΠ²ΡΡΠ° (ΡΠΎΠ²Π° ΡΡΠ±ΠΈΡΠΈΠ΅ ΠΌΠΎΠΆΠ΅, ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π°, Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ ΡΡΠ±ΠΈΡΠΈΡ). Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ, ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎ Π·Π° t = 2,0 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΅Ρ ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡΠ½ΠΎΠ²ΠΎ, ΡΠΎΠ²Π° ΡΡΠ±ΠΈΡΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΎΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ±ΠΈΡΠΈΡ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π² Π΅Ρ ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°, ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΉΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π½Π° ΡΡΡΠ²ΡΡΠ°.
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π²Π΅ΡΠΈΠ³Π° ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π·Π°Π΄ ΡΡΠ΅Π½Π°ΡΠ° ΠΈ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° Π΅Ρ ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΈ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠΌΠ΅ Π·Π°Π΄Π°Π»ΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΡ.
Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ (Π΄Π° ΠΏΡΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, Π°ΡΡΠΈΠ±ΡΡΡΡ MaxPackets Π±Π΅ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ°), Π²Π΅ΡΠΈΠ³Π°ΡΠ° ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ, ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Π½Π° ΠΎΡ ΡΠ°Π·ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ° Π΅Ρ ΠΎ Π·Π°ΡΠ²ΠΊΠ°, ΡΠ΅ ΠΏΡΠΈΠΊΠ»ΡΡΠΈ ΠΈ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠ°ΠΊΠ°Π½Π΅. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠΈ, ΠΎΡΡΠ°Π²Π°ΡΠΈΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΡΠ±ΠΈΡΠΈΡ Π‘ΠΏΡΠΈ Π·Π° ΡΡΡΠ²ΡΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅Π·ΠΈ ΡΡΠ±ΠΈΡΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΡ, Π·Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½ΡΠΌΠ° Π΄Π° ΠΎΡΡΠ°Π½Π°Ρ ΡΡΠ±ΠΈΡΠΈΡ ΠΈ Simulator::Run ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π°. ΠΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π΅ Π·Π°Π²ΡΡΡΠ΅Π½ΠΎ.
ΠΡΡΠ°Π²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ±Π΅ΡΠ΅ ΡΠ»Π΅Π΄ ΡΠ΅Π±Π΅ ΡΠΈ. Π’ΠΎΠ²Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Ρ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Simulator::Destroy. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π±ΡΡ Π° ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ Ρ Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ns-3), ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ°ΠΊΠ°, ΡΠ΅ Π΄Π° ΡΠ΅ Π²ΠΌΡΠΊΠ½Π°Ρ ΠΊΡΠΊΠΈ Π² ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ° Π·Π° ΡΠ½ΠΈΡΠΎΠΆΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ. ΠΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠ°ΠΌΠΈ β Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ Simulator::Destroy ΠΈ Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ΡΠ΅. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ns-3 ΡΠ΅ ΡΠ²ΡΡΡΠΈ ΡΠ°Π·ΠΈ ΡΡΡΠ΄Π½Π° ΡΠ°Π±ΠΎΡΠ° Π²ΠΌΠ΅ΡΡΠΎ Π²Π°Ρ. ΠΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΎΡ Π½Π°ΡΠΈΡ ΠΏΡΡΠ²ΠΈ ns-3 ΡΠΊΡΠΈΠΏΡ, first.cc, ΠΏΡΠ°Π²ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠΎΠ²Π°:
Simulator::Destroy ();
return 0;
}ΠΠΎΠ³Π° ΡΠ΅ ΡΠΏΡΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΡΡ?
ns-3 β ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ (DE). Π ΡΠ°ΠΊΡΠ² ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π²ΡΡΠΊΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ Π΅ ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΡ Π² ΡΠ΅Π΄Π° Π½Π° ΡΡΡ Π½ΠΎΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. Π‘ΡΠ±ΠΈΡΠΈΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Ρ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±ΡΠ΄Π΅ΡΠΈ ΡΡΠ±ΠΈΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΉΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π½Π°ΡΡΠΎΡΠΈ, Π·Π° Π΄Π° Π·Π°Π²ΡΡΡΠΈ Π±ΡΠΎΠ΅Π½Π΅ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»).
ΠΠ°ΡΠ°Π»Π½ΠΈΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Ρ ΠΎΡ ΠΎΠ±Π΅ΠΊΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ IPv6 ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°, Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΡΠ΅Π΄ΠΈ ΠΈ Ρ.Π½. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΏΡΡΠ²ΠΎΡΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ ΠΈ Ρ.Π½. ΠΠΎΠ³Π°ΡΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΎ, ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½ΡΠ»Π°, Π΅Π΄Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ. Π‘ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°, ΡΡΠ±ΠΈΡΠΈΡΡΠ° ΠΏΡΠΎΡΡΠΎ Π·Π°Π²ΡΡΡΠ²Π°Ρ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠ΄ΡΡ Π½ΠΎΠ²ΠΈ. Π‘ΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΡΠΏΡΠ΅, Π°ΠΊΠΎ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ Π΅ ΠΏΡΠ°Π·Π½Π° ΠΈΠ»ΠΈ Π±ΡΠ΄Π΅ ΠΎΡΠΊΡΠΈΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅. Π‘ΠΏΡΠΈ. Π‘ΡΠ±ΠΈΡΠΈΠ΅ Π‘ΠΏΡΠΈ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Simulator::Stop (ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ).
ΠΠΌΠ° ΡΠΈΠΏΠΈΡΠ΅Π½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π°ΡΠΎ Simulator::Stop Π΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π·Π° ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°: ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎΠΈΠ·Π΄ΡΡΠΆΠ°ΡΠΈ ΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ. Π‘Π°ΠΌΠΎΠΈΠ·Π΄ΡΡΠΆΠ°ΡΠΈΡΠ΅ ΡΠ΅ (ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅) ΡΡΠ±ΠΈΡΠΈΡ β ΡΠΎΠ²Π° ΡΠ° ΡΡΠ±ΠΈΡΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ ΠΏΡΠ΅Π½Π°ΡΡΠΎΡΠ²Π°Ρ. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π°, ΡΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ Π½Π΅ΠΏΡΠ°Π·Π½Π°. ΠΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
β’ FlowMonitor β ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π·Π°Π³ΡΠ±Π΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ;
β’ RIPng β ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½Π° ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΡ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ;
β’ ΠΈ Ρ.Π½.
Π ΡΠ°ΠΊΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΈ Simulator::Stop Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ns-3 Π΅ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π΅ΠΌΡΠ»ΡΡΠΈΡ, RealtimeSimulator ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π·Π° Π΄Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΡΠ°ΡΠΎΠ²Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° Ρ ΡΠ°ΡΠΎΠ²Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°, ΠΈ Simulator::Stop Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°.
ΠΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π² ΡΡΠ΅Π±Π½ΠΈΠΊΠ° Π½Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ Simulator::Stop ΡΠ²Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ Π·Π°Π²ΡΡΡΠ²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΈ ΠΈΠ·ΡΠ΅ΡΠΏΠ²Π°Π½Π΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ° Π² ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° 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 Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ scratch
$ cd ../..
$ cp examples/tutorial/first.cc scratch/myfirst.ccΠ‘Π΅Π³Π° ΡΠ³Π»ΠΎΠ±Π΅ΡΠ΅ ΠΏΡΡΠ²ΠΈΡ ΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ΅Π½ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ waf:
$ ./wafΠ’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠ΅ Π²Π°ΡΠΈΡΡ ΠΏΡΡΠ²ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½.
Waf: ΠΠ»ΠΈΠ·Π°Π½Π΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ `\/home\/craigdo\/repos\/ns-3-allinone\/ns-3-dev\/build'\n[614\/708] cxx: scratch\/myfirst.cc -> build\/debug\/scratch\/myfirst_3.o\n[706\/708] cxx_link: build\/debug\/scratch\/myfirst_3.o -> build\/debug\/scratch\/myfirst\nWaf: ΠΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ `\/home\/craigdo\/repos\/ns-3-allinone\/ns-3-dev\/build'\n'build' Π·Π°Π²ΡΡΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ (2.357s)Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° (ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π°ΠΊΠΎ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΡΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° scratch, ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Ρ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΎΡ scratch):
$ .\/waf --run scratch/myfirstΠ’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΈΠ·Ρ ΠΎΠ΄:
Waf: ΠΠ»ΠΈΠ·Π°Π½Π΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ `\/home\/craigdo\/repos\/ns-3-allinone\/ns-3-dev\/build'\nWaf: ΠΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ `\/home\/craigdo\/repos\/ns-3-allinone\/ns-3-dev\/build'\n'build' Π·Π°Π²ΡΡΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ (0.418s) ΠΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ 1024 Π±Π°ΠΉΡΠ° Π΄ΠΎ 10.1.1.2\nΠΠΎΠ»ΡΡΠ΅Π½ΠΈ 1024 Π±Π°ΠΉΡΠ° ΠΎΡ 10.1.1.1\nΠΠΎΠ»ΡΡΠ΅Π½ΠΈ 1024 Π±Π°ΠΉΡΠ° ΠΎΡ 10.1.1.2Π’ΡΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°, ΡΠ΅ ΡΠ°ΠΉΠ»ΡΡ Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°. ΠΠΈΠΆΠ΄Π°ΡΠ΅ Π·Π°ΠΏΠΈΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π° Π΅Ρ ΠΎ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠ» Π΅Π΄ΠΈΠ½ 1024-Π±ΠΈΡΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ ΠΊΡΠΌ Π΅Ρ ΠΎ ΡΡΡΠ²ΡΡΠ° 10.1.1.2. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΈΠΆΠ΄Π°ΡΠ΅ Π·Π°ΠΏΠΈΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² Π»ΠΎΠ³ ΡΠ°ΠΉΠ»Ρ Π½Π° Π΅Ρ ΠΎ ΡΡΡΠ²ΡΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» 1024 Π±Π°ΠΉΡΠ° ΠΎΡ 10.1.1.1. ΠΡ ΠΎ ΡΡΡΠ²ΡΡΡΡ ΠΌΡΠ»ΡΠ°Π»ΠΈΠ²ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ Π²ΠΈΠΆΠ΄Π°ΡΠ΅ Π² Π»ΠΎΠ³ ΡΠ°ΠΉΠ»Π° Π½Π° Π΅Ρ ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ΅ Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΎΡ ΡΡΡΠ²ΡΡΠ°.
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ΠΠ°ΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° examples. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈ, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ. ΠΠ΄ΠΈΠ½ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°ΡΠ° tutorial β first.cc. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° first.cc ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ ΡΠΎΠΊΡ-ΡΠΎ ΠΈΠ·ΡΡΠΈΡ ΡΠ΅.
ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ src. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄, ΠΊΠ°ΡΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΈΠ»ΠΈ Π²ΡΡΡ Ρ Π²ΡΡΠ·ΠΊΠ°ΡΠ° Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π²Π΄ΡΡΠ½ΠΎ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° src, ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π½Π° src. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π°, Π°ΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° core, ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΡΡΠ²ΠΈΡΡ ΡΠ°ΠΉΠ», ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ (ΠΊΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ) β abort.h. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ Π²ΡΡΠ·ΠΊΠ°ΡΠ° abort.h, ΡΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΎΡΠ²Π΅Π΄Π΅Π½ΠΈ Π΄ΠΎ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΡΠ°ΠΉΠ» Π·Π° abort.h, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΈ Π·Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΎΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, Π°ΠΊΠΎ ΡΠ΅ ΠΎΡΠΊΡΠΈΡΡ Π½Π΅Π½ΠΎΡΠΌΠ°Π»Π½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ. ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π·Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ Π² ΡΠ°Π·ΠΈ Π³Π»Π°Π²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° src/Applications/helper. ΠΠ΅ ΡΠ΅ ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡΠ΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈΡΠ΅, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈ ΠΊΡΠ΄Π΅ Π΅ ΠΈ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ ΡΡΡ ΡΡΠΈΠ»Π° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ns-3.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
