Упатство Π·Π° ΠΌΡ€Π΅ΠΆΠ΅Π½ симулатор ns-3. ПоглавјС 4

Упатство Π·Π° ΠΌΡ€Π΅ΠΆΠ΅Π½ симулатор ns-3. ПоглавјС 4
поглавјС 1,2
поглавјС 3

4 ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΡ‚
4.1 ΠšΠ»ΡƒΡ‡Π½ΠΈ апстракции
4.1.1 Јазол
4.1.2 ΠŸΡ€ΠΈΠΌΠ΅Π½Π°
4.1.3 Канал
4.1.4 НСто ΡƒΡ€Π΅Π΄
4.1.5 Вополошки асистСнти
4.2 ΠŸΡ€Π²Π° скрипта ns-3
4.2.1 Π¨ΠΈΡ„Ρ€Π° Π½Π° ΠΊΠΎΡ‚Π΅Π»
4.2.2 ΠŸΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ
4.2.3 ns3 имСнски простор
4.2.4 Π‘Π΅Ρ‡Π°
4.2.5 Π“Π»Π°Π²Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°
4.2.6 ΠšΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° асистСнти Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°
4.2.7 ΠšΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°
4.2.8 Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€
4.2.9 Π“Ρ€Π°Π΄Π΅ΡšΠ΅ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° скрипта
4.3 ns-3 Π˜Π·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄

Π“Π»Π°Π²Π° 4

ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΡ‚

ΠŸΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅ΡˆΡ‚ΠΎ ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΏΡ€Π΅Π΄ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅ Π΄Π° ΡƒΡ‡ΠΈΠΌΠ΅ ΠΈΠ»ΠΈ ΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅ ns-3 ΠΊΠΎΠ΄ Π΅ Π΄Π° објаснимС Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ основни ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΈ ΠΈ апстракции Π²ΠΎ систСмот. Π“ΠΎΠ»Π΅ΠΌ Π΄Π΅Π» ΠΎΠ΄ ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ Π·Π° Π½Π΅ΠΊΠΎΠ³ΠΎ, Π½ΠΎ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌΠ΅ Π΄Π° ΠΎΠ΄Π²ΠΎΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ овој Π΄Π΅Π» Π·Π° Π΄Π° сС осигуратС Π΄Π΅ΠΊΠ° Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π°Ρ‚Π΅ Π½Π° цврста основа.

4.1 ΠšΠ»ΡƒΡ‡Π½ΠΈ апстракции

Π’ΠΎ овој Π΄Π΅Π», ќС Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½Π΅ΠΊΠΎΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈ ΠΊΠΎΠΈ Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎ сС користат Π½Π° Π²Π΅Π±, Π½ΠΎ ΠΈΠΌΠ°Π°Ρ‚ спСцифично Π·Π½Π°Ρ‡Π΅ΡšΠ΅ Π²ΠΎ ns-3.

4.1.1 Јазол

Π’ΠΎ ΠΆΠ°Ρ€Π³ΠΎΠ½ΠΎΡ‚ Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΡΠΊΠΈΠΎΡ‚ ΡƒΡ€Π΅Π΄ ΡˆΡ‚ΠΎ сС ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ° сС Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π° домаќин ΠΈΠ»ΠΈ понСкогаш ΠΊΡ€Π°Π΅Π½ систСм. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ns-3 Π΅ ΠΌΡ€Π΅ΠΆΠ΅Π½ симулатор, Π° Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ симулатор, Π½Π°ΠΌΠ΅Ρ€Π½ΠΎ Π½Π΅ Π³ΠΎ користимС Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΡ‚ домаќин, бидСјќи Ρ‚ΠΎΠ° Π΅ тСсно ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΎ со Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΠΎΡ‚ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ. НамСсто Ρ‚ΠΎΠ°, Π½ΠΈΠ΅ користимС ΠΏΠΎΠΎΠΏΡˆΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½, исто Ρ‚Π°ΠΊΠ° користСн ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈ симулатори, кој ΠΏΠΎΡ‚Π΅ΠΊΠ½ΡƒΠ²Π° ΠΎΠ΄ Ρ‚Π΅ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π³Ρ€Π°Ρ„ΠΎΠ²ΠΈ: јазол (јазол).

Π’ΠΎ ns-3, основната Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΡΠΊΠΈΠΎΡ‚ ΡƒΡ€Π΅Π΄ сС Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π° јазол. Оваа Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° Π΅ прСтставСна Π²ΠΎ C++ со класата Node. Класа NodeNode (јазол) ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°ΡšΠ΅ со прСтстави Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΡΠΊΠΈ ΡƒΡ€Π΅Π΄ΠΈ Π²ΠΎ симулации.

ΠœΠΎΡ€Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Јазол ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ Π½Π° кој Π΄ΠΎΠ΄Π°Π²Π°Ρ‚Π΅ функционалност. ЌС Π΄ΠΎΠ΄Π°Π²Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΊΡƒΠΏΠΎΠ²ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠΈ со Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΈ ΡˆΡ‚ΠΎ ΠΌΡƒ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π°Π°Ρ‚ Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΎΡ‚ Π΄Π° Π²Ρ€ΡˆΠΈ корисна Ρ€Π°Π±ΠΎΡ‚Π°. Π“ΠΎ користимС истиот основСн ΠΌΠΎΠ΄Π΅Π» Π²ΠΎ ns-3.

4.1.2 ΠŸΡ€ΠΈΠΌΠ΅Π½Π°

ΠžΠΏΡˆΡ‚ΠΎ Π·Π΅ΠΌΠ΅Π½ΠΎ, ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΡΠΊΠΈΠΎΡ‚ софтвСр Π΅ ΠΏΠΎΠ΄Π΅Π»Π΅Π½ Π½Π° Π΄Π²Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈ класи. БистСмскиот софтвСр ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΡΠΊΠΈ рСсурси ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°, процСсорски циклуси, диск, ΠΌΡ€Π΅ΠΆΠ° ΠΈΡ‚Π½. спорСд нСкој ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΡΠΊΠΈ ΠΌΠΎΠ΄Π΅Π». БистСмскиот софтвСр ΠΎΠ±ΠΈΡ‡Π½ΠΎ Π½Π΅ Π³ΠΈ користи ΠΎΠ²ΠΈΠ΅ рСсурси Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠΎΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΌΡƒ користат Π½Π° корисникот. ΠšΠΎΡ€ΠΈΡΠ½ΠΈΠΊΠΎΡ‚ Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎ Π²ΠΎΠ΄ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° Π΄Π° постигнС ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Ρ†Π΅Π», која Π΄ΠΎΠ±ΠΈΠ²Π° ΠΈ користи рСсурси ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ ΠΎΠ΄ систСмскиот софтвСр.

ЧСсто Π»ΠΈΠ½ΠΈΡ˜Π°Ρ‚Π° Π½Π° Ρ€Π°Π·Π΄Π²ΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ систСмскиот ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½ΠΈΠΎΡ‚ софтвСр сС ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΡˆΡ‚ΠΎ сС случуваат Π²ΠΎ Π·Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈΠΎΡ‚ систСм. ns-3 Π½Π΅ΠΌΠ° вистински ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½ систСм ΠΈ Π·Π°Ρ‚ΠΎΠ° Π½Π΅ΠΌΠ° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π½Π° Π½ΠΈΠ²ΠΎΠ° Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈΠ»ΠΈ систСмски ΠΏΠΎΠ²ΠΈΡ†ΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, ΠΈΠΌΠ°ΠΌΠ΅ идСја Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. Π˜ΡΡ‚ΠΎ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π²ΠΎ β€žΡ€Π΅Π°Π»Π½ΠΈΠΎΡ‚ ΡΠ²Π΅Ρ‚β€œ софтвСрскитС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΈ Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ns-3 Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π½Π° ns-3 јазли Π·Π° Π΄Π° Π³ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π°Ρ‚ симулациитС Π²ΠΎ симулираниот свСт.

Π’ΠΎ ns-3, основната Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° Π·Π° корисничка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° која Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° активност Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°ΡšΠ΅ Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. Оваа Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° Π΅ прСтставСна Π²ΠΎ C++ со класата Application. ΠšΠ»Π°ΡΠ°Ρ‚Π° Application ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°ΡšΠ΅ со ΠΏΠΎΠ³Π»Π΅Π΄ΠΈΡ‚Π΅ Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° корисник Π²ΠΎ симулации. Од ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ сС ΠΎΡ‡Π΅ΠΊΡƒΠ²Π° Π΄Π° ја ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°Π°Ρ‚ класата Application Π²ΠΎ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅ Π·Π° Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Π°Ρ‚ Π½ΠΎΠ²ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’ΠΎ овој Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΡ˜Π°Π», ќС користимС ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄ класата Application Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° UdpEchoClientApplication ΠΈ ΠΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° UdpEchoServer. Како ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°Ρ‚Π΅, ΠΎΠ²ΠΈΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ сочинуваат Π·Π±ΠΈΡ€ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚/сСрвСр ΡˆΡ‚ΠΎ сС користат Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ ΠΈ Π΅Ρ…ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ.

4.1.3 Канал

Π’ΠΎ Ρ€Π΅Π°Π»Π½ΠΈΠΎΡ‚ свСт, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ²Ρ€Π·Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ Π½Π° ΠΌΡ€Π΅ΠΆΠ°. ЧСстопати ΠΌΠ΅Π΄ΠΈΡƒΠΌΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΊΡƒ ΠΊΠΎΠΈ сС прСнСсуваат ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π²ΠΎ ΠΎΠ²ΠΈΠ΅ ΠΌΡ€Π΅ΠΆΠΈ сС Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π°Π°Ρ‚ ΠΊΠ°Π½Π°Π»ΠΈ. Кога ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ‚Π΅ Π΅Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠ°Π±Π΅Π» Π²ΠΎ Ρ•ΠΈΠ΄Π΅Π½ ΡˆΡ‚Π΅ΠΊΠ΅Ρ€, Π³ΠΎ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°Ρ‚Π΅ Π²Π°ΡˆΠΈΠΎΡ‚ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ со Π΅Ρ‚Π΅Ρ€Π½Π΅Ρ‚ врска. Π’ΠΎ симулираниот свСт ns-3, јазол Π΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ со ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ ΡˆΡ‚ΠΎ прСтставува ΠΊΠ°Π½Π°Π» Π·Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. ОвдС, основната Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° Π½Π° комуникациската ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ° сС Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π° ΠΊΠ°Π½Π°Π» ΠΈ Π΅ прСтставСна Π²ΠΎ C++ со класата Channel.

Класа Канал Канал ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° хостовитС со Π½ΠΈΠ². ΠšΠ°Π½Π°Π»ΠΈΡ‚Π΅, исто Ρ‚Π°ΠΊΠ°, ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΎΠ΄ страна Π½Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΈΡ‚Π΅ Π²ΠΎ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° програмска смисла. Π‘ΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΊΠ°Π½Π°Π»ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π° Π½Π΅ΡˆΡ‚ΠΎ Сдноставно ΠΊΠ°ΠΊΠΎ ΠΆΠΈΡ†Π°. НамСнскиот ΠΊΠ°Π½Π°Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π° слоТСни Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ Π³ΠΎΠ»Π΅ΠΌ Ethernet ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΎΠ΄ΠΈΠΌΠ΅Π½Π·ΠΈΠΎΠ½Π°Π»Π΅Π½ простор ΠΏΠΎΠ»Π½ со ΠΏΡ€Π΅Ρ‡ΠΊΠΈ Π²ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ Π½Π° Π±Π΅Π·ΠΆΠΈΡ‡Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΈ.

ЌС користимС ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° ΠΊΠ°Π½Π°Π»ΠΎΡ‚ Π²ΠΎ ΠΎΠ²Π° упатство Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΎ CsmaChannelCsmaChannel, PointToPointChannelPointToPointChannel ΠΈ WifiChannelWifiChannel. CsmaChannel, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° комуникациска ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ° која ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° комуникациско ΠΎΠΏΠΊΡ€ΡƒΠΆΡƒΠ²Π°ΡšΠ΅ со ΠΏΠΎΠ²Π΅ΡœΠ΅ΠΊΡ€Π°Ρ‚Π΅Π½ пристап со носитСл. Ова Π½ΠΈ Π΄Π°Π²Π° функционалност слична Π½Π° Π΅Ρ‚Π΅Ρ€Π½Π΅Ρ‚.

4.1.4 НСто ΡƒΡ€Π΅Π΄

ΠŸΠΎΡ€Π°Π½ΠΎ, Π°ΠΊΠΎ сакатС Π΄Π° ΠΏΠΎΠ²Ρ€Π·Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ Π½Π° ΠΌΡ€Π΅ΠΆΠ°, Ρ‚Ρ€Π΅Π±Π°ΡˆΠ΅ Π΄Π° ΠΊΡƒΠΏΠΈΡ‚Π΅ спСцифичСн ΠΌΡ€Π΅ΠΆΠ΅Π½ ΠΊΠ°Π±Π΅Π» ΠΈ хардвСрски ΡƒΡ€Π΅Π΄ Π½Π°Ρ€Π΅Ρ‡Π΅Π½ (Π²ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€) ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠ° ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС инсталира Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΎΡ‚. Ако ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π»Π° Π½Π΅ΠΊΠΎΠΈ ΠΌΡ€Π΅ΠΆΠ½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΈΠ΅ сС Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π°Π»Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠΈ Π·Π° ΠΌΡ€Π΅ΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ ΠΈΠ»ΠΈ ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠΈ. ДСнСс, ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΈ Π΄ΠΎΠ°Ρ“Π°Π°Ρ‚ со ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ ΠΌΡ€Π΅ΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ ΠΈ корисницитС Π½Π΅ Π³ΠΈ Π³Π»Π΅Π΄Π°Π°Ρ‚ ΠΊΠ°ΠΊΠΎ посСбни ΡƒΡ€Π΅Π΄ΠΈ.

ΠœΡ€Π΅ΠΆΠ½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠ° Π½Π΅ΠΌΠ° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±Π΅Π· софтвСрски Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ ΡˆΡ‚ΠΎ Π³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Π½Π΅Ρ˜Π·ΠΈΠ½ΠΈΠΎΡ‚ Ρ…Π°Ρ€Π΄Π²Π΅Ρ€. Π’ΠΎ Unix (ΠΈΠ»ΠΈ Linux), Π΄Π΅Π» ΠΎΠ΄ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½Π°Ρ‚Π° ΠΎΠΏΡ€Π΅ΠΌΠ° Π΅ класифициран ΠΊΠ°ΠΊΠΎ ΡƒΡ€Π΅Π΄. Π£Ρ€Π΅Π΄ΠΈΡ‚Π΅ сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π°Ρ‚ со помош Π½Π° Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΈ Π·Π° ΡƒΡ€Π΅Π΄ΠΈ, Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΡƒΡ€Π΅Π΄ΠΈ (NIC) сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π°Ρ‚ со помош Π½Π° Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΈ Π·Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ (Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ) ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ сС Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π°Π°Ρ‚ ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ (ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ). Π’ΠΎ Unix ΠΈ Linux ΠŸΡ€ΠΈΡΡ‚Π°ΠΏΡƒΠ²Π°Ρ‚Π΅ Π΄ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ со имиња ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС eth0.

Π’ΠΎ ns-3, Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΠΎΡ‚ ΡƒΡ€Π΅Π΄ Π³ΠΈ ΠΎΠΏΡ„Π°ΡœΠ° ΠΈ софтвСрот Π½Π° Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΎΡ‚ ΠΈ Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ΠΎΡ‚ ΡˆΡ‚ΠΎ сС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°. Π’ΠΎ ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, ΠΌΡ€Π΅ΠΆΠ΅Π½ ΡƒΡ€Π΅Π΄ Π΅ β€žΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½β€œ Π²ΠΎ јазол Π·Π° Π΄Π° ΠΌΡƒ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со Π΄Ρ€ΡƒΠ³ΠΈ јазли ΠΏΡ€Π΅ΠΊΡƒ ΠΊΠ°Π½Π°Π»ΠΈ. Π˜ΡΡ‚ΠΎ ΠΊΠ°ΠΊΠΎ вистински ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€, Ρ˜Π°Π·ΠΎΠ»ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π΅ со повСќС ΠΊΠ°Π½Π°Π»ΠΈ ΠΏΡ€Π΅ΠΊΡƒ повСќС ΡƒΡ€Π΅Π΄ΠΈ NetDevices.

ΠœΡ€Π΅ΠΆΠ½Π°Ρ‚Π° Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° Π½Π° ΡƒΡ€Π΅Π΄ Π΅ прСтставСна Π²ΠΎ C++ со класата NetDevice. Класа NetDevice ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со врски со ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π½Π° јазол ΠΈ ΠΊΠ°Π½Π°Π»; Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ Π²ΠΎ смисла Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅. Π’ΠΎ ΠΎΠ²Π° упатство ќС користимС Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° NetDevice Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΈ CsmaNetDevice, PointToPointNetDevice ΠΈ WifiNetDevice. Π˜ΡΡ‚ΠΎ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ ΠΌΡ€Π΅ΠΆΠ΅Π½ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π·Π° Π΅Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π΅ Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ со ΠΌΡ€Π΅ΠΆΠ° Π•Ρ‚Π΅Ρ€Π½Π΅Ρ‚, CsmaNetDevice Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ со CsmaChannel, PointToPointNetDevice Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ со PointToPointChannelИ WifiNetDevice - Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π’ΠΈΡ„ΠΈ-ΠΊΠ°Π½Π°Π».

4.1.5 Вополошки асистСнти

Π’ΠΎ вистинска ΠΌΡ€Π΅ΠΆΠ°, ќС Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ домаќински ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΈ со Π΄ΠΎΠ΄Π°Π΄Π΅Π½ΠΈ (ΠΈΠ»ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ) ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠΈ. Π’ΠΎ ns-3 Π±ΠΈ Ρ€Π΅ΠΊΠ»Π΅ Π΄Π΅ΠΊΠ° ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ јазли со ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π΅Π½ΠΈ NetDevices. Π’ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° симулирана ΠΌΡ€Π΅ΠΆΠ°, ќС Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ врски ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΌΠ½ΠΎΠ³Ρƒ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Јазол, NetDevice ΠΈ ΠΊΠ°Π½Π°Π».

Од ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° NetDevices со јазли, NetDevices со врски, Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΡšΠ΅ IP адрСси ΠΈΡ‚Π½. Π²ΠΎ ns-3 сС Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½Π° Π·Π°Π΄Π°Ρ‡Π°, Π·Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ полСсно, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΠΌΠ΅ Ρ‚Π°ΠΊΠ°Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΈ ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΡ†ΠΈ Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ NetDevice, Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ns-3 ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚, Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ MAC адрСса, Π΄Π° Π³ΠΎ инсталиратС ΠΌΡ€Π΅ΠΆΠ½ΠΈΠΎΡ‚ ΡƒΡ€Π΅Π΄ Π²ΠΎ Node, Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ стСкот Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ Π½Π° Ρ˜Π°Π·ΠΎΠ»ΠΎΡ‚ ΠΈ ΠΏΠΎΡ‚ΠΎΠ° Π΄Π° Π³ΠΎ ΠΏΠΎΠ²Ρ€Π·Π΅Ρ‚Π΅ NetDevice со ΠΊΠ°Π½Π°Π»ΠΎΡ‚. ЌС Π±ΠΈΠ΄Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° ΡƒΡˆΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π° Π·Π° Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π°Ρ‚ повСќС ΡƒΡ€Π΅Π΄ΠΈ со врски со повСќС Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΏΠΎΡ‚ΠΎΠ° Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π°Ρ‚ ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅Ρ‡Π½ΠΈΡ‚Π΅ ΠΌΡ€Π΅ΠΆΠΈ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° Internetworks. НиС ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΠΌΠ΅ помошни ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° ΠΊΠΎΠΈ Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ ΠΎΠ²ΠΈΠ΅ ΠΌΠ½ΠΎΠ³Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΎ ΠΌΠΎΠ΄Π΅Π» кој Π΅ лСсСн Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π·Π° ваша погодност.

4.2 ΠŸΡ€Π²Π° скрипта ns-3

Ако стС Π³ΠΎ инсталиралС систСмот ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΠΎΠ³ΠΎΡ€Π΅, ќС Π³ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ ns-3 Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ Π½Π°Ρ€Π΅Ρ‡Π΅Π½ repos Π²ΠΎ Π²Π°ΡˆΠΈΠΎΡ‚ домашСн Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ. ΠžΠ΄Π΅Ρ‚Π΅ Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ ΠΏΠΎΡ€Π°ΠΊΠ°

Ако Π½Π΅ΠΌΠ°Ρ‚Π΅ Ρ‚Π°ΠΊΠΎΠ² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ, Ρ‚ΠΎΠ° Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Π½Π΅ стС Π³ΠΎ Π½Π°Π²Π΅Π»Π΅ ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ ΠΏΡ€ΠΈ Π³Ρ€Π°Π΄Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π·Π° издавањС Π½Π° ns-3, ΠΈΠ·Π³Ρ€Π°Π΄Π΅Ρ‚Π΅ Π²Π°ΠΊΠ°:
$ ./waf ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ˜Ρ‚Π΅ β€”build-profile=release β€”out=build/release,
$ ./waf ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ

Ρ‚Π°ΠΌΡƒ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ структура Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ слична Π½Π° слСдново:

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

ΠžΠ΄Π΅Ρ‚Π΅ Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ/упатство. Π’Ρ€Π΅Π±Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΡˆΡ‚ΠΎ сС Π½Π°ΠΎΡ“Π° Ρ‚Π°ΠΌΡƒ Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° ΠΏΡ€Π²ΠΎ.cc. Ова Π΅ скрипта ΡˆΡ‚ΠΎ ќС создадС Сдноставна врска ΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π΄Π²Π° јазли ΠΈ ќС прСнСсС Π΅Π΄Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Ρ˜Π°Π·Π»ΠΈΡ‚Π΅. АјдС Π΄Π° ја ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΠΎΠ²Π°Π° скрипта линија ΠΏΠΎ Ρ€Π΅Π΄ Π·Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΎΠ²Π°, ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Π³ΠΎ first.cc Π²ΠΎ Π²Π°ΡˆΠΈΠΎΡ‚ ΠΎΠΌΠΈΠ»Π΅Π½ ΡƒΡ€Π΅Π΄ΡƒΠ²Π°Ρ‡;

4.2.1 Π¨ΠΈΡ„Ρ€Π° Π½Π° ΠΊΠΎΡ‚Π΅Π»
ΠŸΡ€Π²Π°Ρ‚Π° линија Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π΅ Π»ΠΈΠ½ΠΈΡ˜Π°Ρ‚Π° Π·Π° Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΡƒΡ€Π΅Π΄ΡƒΠ²Π°Ρ‡ emacs. Вој ΠΈΠΌ ΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° emacs Π·Π° ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°ΡšΠ΅ (стил Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅) ΡˆΡ‚ΠΎ Π³ΠΈ користимС Π²ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΈΠ·Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄.

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

Ова Π΅ сСкогаш доста ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ²Π΅Ρ€Π·Π½ΠΎ ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅, ΠΏΠ° Π·Π°Ρ‚ΠΎΠ° Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ поставимС Ρ€Π΅ΠΊΠΎΡ€Π΄ΠΎΡ‚ Π·Π° вСднаш Π΄Π° Π³ΠΎ Ρ‚Ρ€Π³Π½Π΅ΠΌΠ΅ ΠΎΠ΄ ΠΏΠ°Ρ‚ΠΎΡ‚. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ ns-3, ΠΊΠ°ΠΊΠΎ ΠΈ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ΠΈΠΌΠ° усвоСно стил Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ со кој ΠΌΠΎΡ€Π° Π΄Π° ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Π°Ρ‚ ситС доставСни ΠΊΠΎΠ΄ΠΎΠ²ΠΈ. Ако сакатС Π΄Π° Π³ΠΎ придонСсСтС Π²Π°ΡˆΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚, Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ ќС ΠΌΠΎΡ€Π° Π΄Π° сС усогласитС со стандардот Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ ns-3, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ опишано Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° doc/codingstd.txt ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ΠΎ Π½Π° Π²Π΅Π±-страницата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚: https://www.nsnam.org/develop/contributing-code/coding-style/.

Π’ΠΈ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌΠ΅ Π΄Π° сС Π½Π°Π²ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° ΠΈΠ·Π³Π»Π΅Π΄ΠΎΡ‚ ΠΈ чувството Π½Π° ns-3 ΠΊΠΎΠ΄ΠΎΡ‚ ΠΈ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Ρ‚Π΅ овој стандард сСкогаш ΠΊΠΎΠ³Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ со Π½Π°ΡˆΠΈΠΎΡ‚ ΠΊΠΎΠ΄. Π¦Π΅Π»ΠΈΠΎΡ‚ Ρ‚ΠΈΠΌ Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ соработницитС сС согласија Π½Π° ΠΎΠ²Π° ΠΏΠΎ Π½Π΅ΠΊΠΎΠ΅ Π½Π΅Π³ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅. Π›ΠΈΠ½ΠΈΡ˜Π°Ρ‚Π° Π·Π° Ρ€Π΅ΠΆΠΈΠΌ Π½Π° emacs ΠΏΠΎΠ³ΠΎΡ€Π΅ Π³ΠΎ олСснува ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎΡ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π°ΠΊΠΎ Π³ΠΎ користитС ΡƒΡ€Π΅Π΄Π½ΠΈΠΊΠΎΡ‚ Π½Π° emacs.

Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΎΡ‚ ns-3 Π΅ Π»ΠΈΡ†Π΅Π½Ρ†ΠΈΡ€Π°Π½ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ GNU General Public License. ЌС Π³ΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅ соодвСтното ΠΏΡ€Π°Π²Π½ΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π½Π° GNU Π²ΠΎ сСкоја дистрибутивна Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ns-3. ЧСстопати ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΈΠ·Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ΅ Π·Π° авторски ΠΏΡ€Π°Π²Π° Π·Π° Π΅Π΄Π½Π° ΠΎΠ΄ институциитС учСснички Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ ns-3 Π½Π°Π΄ тСкстот ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΎΡ‚ Π½Π° GPL, ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ.

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

4.2.2 ΠŸΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ

Π‘Π°ΠΌΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° со ΡΠ΅Ρ€ΠΈΡ˜Π° изјави Π·Π° Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ (Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚).

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

Π—Π° Π΄Π° ΠΈΠΌ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ΠΌΠ΅ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ корисници Π·Π° ΡΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° високо Π½ΠΈΠ²ΠΎ Π΄Π° сС справат со Π³ΠΎΠ»Π΅ΠΌΠΈΠΎΡ‚ Π±Ρ€ΠΎΡ˜ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π·Π° заглавија присутни Π²ΠΎ систСмот, Π³ΠΈ Π³Ρ€ΡƒΠΏΠΈΡ€Π°ΠΌΠ΅ спорСд Π½ΠΈΠ²Π½Π°Ρ‚Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. ΠžΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΠΌΠ΅ Π΅Π΄Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° со Π·Π°Π³Π»Π°Π²ΠΈΠ΅ која Ρ€Π΅ΠΊΡƒΡ€Π·ΠΈΠ²Π½ΠΎ ќС Π³ΠΈ Π²Ρ‡ΠΈΡ‚Π° ситС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ со Π·Π°Π³Π»Π°Π²ΠΈΠ΅ ΡˆΡ‚ΠΎ сС користат Π²ΠΎ Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ». НамСсто Π΄Π° Π±Π°Ρ€Π°Ρ‚Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ ΡˆΡ‚ΠΎ Π²ΠΈ Ρ‚Ρ€Π΅Π±Π° ΠΈ Π΅Π²Π΅Π½Ρ‚ΡƒΠ°Π»Π½ΠΎ Π΄Π° ја Π΄ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ Ρ‚ΠΎΡ‡Π½Π°Ρ‚Π° листа Π½Π° зависности, Π½ΠΈΠ΅ Π²ΠΈ Π΄Π°Π²Π°ΠΌΠ΅ моТност Π΄Π° ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ Π³Ρ€ΡƒΠΏΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° грануларност. Π’ΠΎΠ° Π½Π΅ Π΅ Π½Π°Ρ˜Π΅Ρ„ΠΈΠΊΠ°ΡΠ½ΠΈΠΎΡ‚ пристап, Π½ΠΎ сСкако ΠΌΠ½ΠΎΠ³Ρƒ Π³ΠΎ олСснува ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ скрипти.

БСкоја ΠΎΠ΄ ns-3 Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π΅ смСстСна Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ Π½Π°Ρ€Π΅Ρ‡Π΅Π½ ns3 (ΠΈΠ·Π³Ρ€Π°Π΄Π΅Ρ‚Π΅ ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ) Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ со ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСсот Π½Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅. Π”Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ns3/core-module.h ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ ns-3, кој ќС Π³ΠΎ Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ src/core Π²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ ΡˆΡ‚ΠΎ стС Π³ΠΎ инсталиралС. Π’ΠΎ списокот Π½Π° овој Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ ќС Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ со Π·Π°Π³Π»Π°Π²ΠΈΠ΅. Кога Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ, Waf Π³ΠΈ поставува Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ со јавни заглавија Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ ns3 Π²ΠΎ ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ/Π΄Π΅Π±Π°Π³ΠΈΡ€Π°

Ако Π½Π΅ΠΌΠ°Ρ‚Π΅ Ρ‚Π°ΠΊΠΎΠ² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ, Ρ‚ΠΎΠ° Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Π½Π΅ стС Π³ΠΎ Π½Π°Π²Π΅Π»Π΅ ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ ΠΏΡ€ΠΈ Π³Ρ€Π°Π΄Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π·Π° издавањС Π½Π° ns-3, ΠΈΠ·Π³Ρ€Π°Π΄Π΅Ρ‚Π΅ Π²Π°ΠΊΠ°:
$ ./waf ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ˜ --build-profile=debug --out=build/debug
$ ./waf ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ
ΠΈΠ»ΠΈ
$ ./waf ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ˜ --build-profile=optimized --out=build/optimized
$ ./waf ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ

ΠΈΠ»ΠΈ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ/ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½, Π²ΠΎ зависност ΠΎΠ΄ Π²Π°ΡˆΠ°Ρ‚Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°. Waf исто Ρ‚Π°ΠΊΠ° автоматски ќС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΌΠΎΠ΄ΡƒΠ» со Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π·Π° Π΄Π° Π³ΠΈ Π²Ρ‡ΠΈΡ‚Π° ситС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ со јавни заглавија. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ, сС Ρ€Π°Π·Π±ΠΈΡ€Π°, Ρ€Π΅Π»ΠΈΠ³ΠΈΠΎΠ·Π½ΠΎ Π³ΠΎ слСдитС овој Π²ΠΎΠ΄ΠΈΡ‡, вСќС стС Π³ΠΎ сторилС Ρ‚ΠΎΠ°

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

Π·Π° Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° изданија Π·Π° ΠΎΡ‚ΡΡ‚Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΊΠΎΠΈ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΈ тСстови. Π’ΠΈΠ΅ исто Ρ‚Π°ΠΊΠ° Π½Π°ΠΏΡ€Π°Π²ΠΈΠ²Ρ‚Π΅

$ ./waf

Π΄Π° сС состави ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚. Па сСга ΠΊΠΎΠ³Π° ќС ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ ../../build/debug/ns3, ΠΏΠΎΡ‚ΠΎΠ° Ρ‚Π°ΠΌΡƒ ќС Π³ΠΈ Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅, ΠΌΠ΅Ρ“Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π·Π° заглавија Π½Π° Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ΠΈ ΠΏΠΎΠ³ΠΎΡ€Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ содрТината Π½Π° ΠΎΠ²ΠΈΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° Ρ‚ΠΈΠ΅ Π³ΠΈ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ ситС јавни Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΡˆΡ‚ΠΎ Π³ΠΈ користат соодвСтнитС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

4.2.3 ns3 имСнски простор

Π‘Π»Π΅Π΄Π½Π° линија Π²ΠΎ сцСнариото ΠΏΡ€Π²ΠΎ.cc Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡ˜Π° Π·Π° имСнски простор.

using namespace ns3;

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ ns-3 сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° Π²ΠΎ имСнскиот простор Π½Π° C++ Π½Π°Ρ€Π΅Ρ‡Π΅Π½ ns3. Ова Π³ΠΈ Π³Ρ€ΡƒΠΏΠΈΡ€Π° ситС Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со ns-3 Π²ΠΎ опсСг Π½Π°Π΄Π²ΠΎΡ€ ΠΎΠ΄ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΠΎΡ‚ имСнски простор, ΡˆΡ‚ΠΎ сС Π½Π°Π΄Π΅Π²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ќС ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π²ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° со Π΄Ρ€ΡƒΠ³ ΠΊΠΎΠ΄. ΠšΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ C++ Π³ΠΎ Π²ΠΎΠ²Π΅Π΄ΡƒΠ²Π° имСнскиот простор ns-3 Π²ΠΎ Ρ‚Π΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ‚ (Π³Π»ΠΎΠ±Π°Π»Π΅Π½) Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½ Ρ€Π΅Π³ΠΈΠΎΠ½. Ова Π΅ фантастичСн Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС ΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° ΠΏΠΎ ΠΎΠ²Π°Π° Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡ˜Π°, Π½Π΅ΠΌΠ° Π΄Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ ΠΏΠΈΡˆΡƒΠ²Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Π·Π° Π΄ΠΎΠ·Π²ΠΎΠ»Π° ns3::scope ΠΏΡ€Π΅Π΄ Ρ†Π΅Π»ΠΈΠΎΡ‚ ваш ns-3 ΠΊΠΎΠ΄ Π·Π° Π΄Π° Π³ΠΎ користитС. Ако Π½Π΅ стС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Π½ΠΈ со имСнскитС простори, ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π³ΠΎ рСчиси сСкој ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ Π²ΠΎ C++ ΠΈ спорСдСтС Π³ΠΎ имСнскиот простор ns3 ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ имСнскиот простор ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° std using namespace std; Π²ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° со ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ cout ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ.

4.2.4 Π‘Π΅Ρ‡Π°

Π‘Π»Π΅Π΄Π½Π°Ρ‚Π° линија Π½Π° сцСнариото Π΅,

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

ЌС ја користимС ΠΎΠ²Π°Π° изјава ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ мСсто Π·Π° Π΄Π° Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€Π°ΠΌΠ΅ Π·Π° Π½Π°ΡˆΠΈΠΎΡ‚ систСм Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠšΠΈΡΠ»ΠΎΡ€ΠΎΠ΄. Ако ја ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π²Π΅Π±-страницата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ ns-3, ќС Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ врска Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π²ΠΎ Π»Π΅Π½Ρ‚Π°Ρ‚Π° Π·Π° Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡ˜Π°. Ако ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° ΠΎΠ²Π°Π° врска, ќС Π±ΠΈΠ΄Π΅Ρ‚Π΅ ΠΏΡ€Π΅Ρ„Ρ€Π»Π΅Π½ΠΈ Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° страница Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°. Има врска β€žΠΠ°Ρ˜Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅β€œ ΡˆΡ‚ΠΎ ќС Π²Π΅ однСсС Π΄ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° Π½Π°Ρ˜Π½ΠΎΠ²Π°Ρ‚Π° стабилна Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° ns-3. Ако ја ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ врската β€žAPI Documentationβ€œ, ќС Π±ΠΈΠ΄Π΅Ρ‚Π΅ ΠΏΡ€Π΅Ρ„Ρ€Π»Π΅Π½ΠΈ Π½Π° страницата со Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ns-3 API.

На Π»Π΅Π²Π°Ρ‚Π° страна Π½Π° страницата ќС Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ Π³Ρ€Π°Ρ„ΠΈΡ‡ΠΊΠΈ ΠΏΡ€ΠΈΠΊΠ°Π· Π½Π° структурата Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Π”ΠΎΠ±Ρ€ΠΎ мСсто Π·Π° ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ Π΅ β€žΠΊΠ½ΠΈΠ³Π°Ρ‚Π°β€œ Π½Π° Modules ns-3 Π²ΠΎ Π΄Ρ€Π²ΠΎΡ‚ΠΎ Π·Π° Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡ˜Π° ns-3. Ако ΠΎΡ‚ΠΊΡ€ΠΈΠ΅Ρ‚Π΅ ΠœΠΎΠ΄ΡƒΠ»ΠΈ, ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ листа Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π·Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ns-3. Како ΡˆΡ‚ΠΎ бСшС дискутирано ΠΏΠΎΠ³ΠΎΡ€Π΅, ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΡ‚ Π½Π° ΠΌΠΎΠ΄ΡƒΠ» ΠΎΠ²Π΄Π΅ Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠΎΠ²Ρ€Π·Π°Π½ со Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ Π²ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ ΠΏΠΎΠ³ΠΎΡ€Π΅. ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠΎΡ‚ Π·Π° Π»ΠΎΠ³ΠΈΡ€Π°ΡšΠ΅ ns-3 Π΅ дискутиран Π²ΠΎ Π΄Π΅Π»ΠΎΡ‚ ΠšΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ Π·Π° Π»ΠΎΠ³ΠΈΡ€Π°ΡšΠ΅, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ќС сС Π²Ρ€Π°Ρ‚ΠΈΠΌΠ΅ Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΡ†Π½Π° Π²ΠΎ ΠΎΠ²Π° упатство, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅Ρ‚Π΅ Π·Π° Π³ΠΎΡ€Π½Π°Ρ‚Π° изјава глСдајќи Π³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ Основниа ΠΏΠΎΡ‚ΠΎΠ° ΠΎΡ‚Π²ΠΎΡ€Π°Ρ˜ΡœΠΈ ја ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Алатки Π·Π° Π΄Π΅Π±Π°Π³ΠΈΡ€Π°ΡšΠ΅Π° ΠΏΠΎΡ‚ΠΎΠ° ΡΠ΅Π»Π΅ΠΊΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° страницата Π’Π»Π΅Π·ΠΈ. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° Π’Π»Π΅Π·ΠΈ.

Π‘Π΅Π³Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°Ρ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠšΠΈΡΠ»ΠΎΡ€ΠΎΠ΄ Π·Π° ΠΌΠΎΠ΄ΡƒΠ» Π’Π»Π΅Π·ΠΈ. Π’ΠΎ списокот со ΠΌΠ°ΠΊΡ€ΠΎΠ° Π½Π° Π²Ρ€Π²ΠΎΡ‚ Π½Π° страницата, ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ запис Π·Π° NS_LOG_COMPONENT_DEFINE. ΠŸΡ€Π΅Π΄ Π΄Π° ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° врската, Π½Π΅ Π·Π°Π±ΠΎΡ€Π°Π²Π°Ρ˜Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ β€žΠ”Π΅Ρ‚Π°Π»Π΅Π½ ΠΎΠΏΠΈΡβ€œ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ Π·Π° Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡ˜Π° Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° Π²ΠΎΠΎΠΏΡˆΡ‚ΠΎ. Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° скролуватС Π½Π°Π΄ΠΎΠ»Ρƒ ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ β€žΠŸΠΎΠ²Π΅ΡœΠ΅...β€œ ΠΏΠΎΠ΄ Ρ‚Π°Π±Π΅Π»Π°Ρ‚Π°.

ΠžΡ‚ΠΊΠ°ΠΊΠΎ ќС ΠΈΠΌΠ°Ρ‚Π΅ ΠΎΠΏΡˆΡ‚Π° идСја Π·Π° Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ сС случува, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ја Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° спСцифичниот NS_LOG_COMPONENT_DEFINE. НСма Π΄Π° ја Π΄ΡƒΠΏΠ»ΠΈΡ€Π°ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΎΠ²Π΄Π΅, Π½ΠΎ Π΄Π° Ρ€Π΅Π·ΠΈΠΌΠΈΡ€Π°ΠΌΠ΅, ΠΎΠ²Π°Π° линија Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π·Π° Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° FirstScriptExample, кој Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ ΠΈΠ»ΠΈ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ Π΅Π²ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠΎΡ€Π°ΠΊΠΈ ΠΎΠ΄ ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° со ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΈΠΌΠ΅.

4.2.5 Π“Π»Π°Π²Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°

Π’ΠΎ слСднитС Ρ€Π΅Π΄ΠΎΠ²ΠΈ ΠΎΠ΄ сцСнариото ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅,

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

Ова Π΅ Сдноставно Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Π³Π»Π°Π²Π½Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° (скрипта). Како ΠΈ со сСкоја ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° C++, Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Π³Π»Π°Π²Π½Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°, Ρ‚Π°Π° ΠΏΡ€Π²ΠΎ сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°. НСма Π½ΠΈΡˆΡ‚ΠΎ посСбно ΠΎΠ²Π΄Π΅. Π’Π°ΡˆΠ°Ρ‚Π° ns-3 скрипта Π΅ само C++ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. Π‘Π»Π΅Π΄Π½Π°Ρ‚Π° линија ја поставува врСмСнската Ρ€Π΅Π·ΠΎΠ»ΡƒΡ†ΠΈΡ˜Π° Π½Π° 1 наносСкунда, ΡˆΡ‚ΠΎ Π΅ стандардно:

Time::SetResolution (Time::NS);

ВрСмСнската Ρ€Π΅Π·ΠΎΠ»ΡƒΡ†ΠΈΡ˜Π°, ΠΈΠ»ΠΈ Сдноставно Ρ€Π΅Π·ΠΎΠ»ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π°, Π΅ Π½Π°Ρ˜ΠΌΠ°Π»Π°Ρ‚Π° врСмСнска врСдност ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи (Π½Π°Ρ˜ΠΌΠ°Π»Π°Ρ‚Π° Ρ€Π΅ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ‚ΠΈΠ²Π½Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π΄Π²Π° ΠΏΠ°Ρ‚ΠΈ). ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π΅Π·ΠΎΠ»ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π° Ρ‚ΠΎΡ‡Π½ΠΎ Сднаш. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΡ‚ ΡˆΡ‚ΠΎ ја ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΎΠ²Π°Π° флСксибилност ја Ρ‚Ρ€ΠΎΡˆΠΈ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°, ΠΏΠ° ΡˆΡ‚ΠΎΠΌ Ρ€Π΅Π·ΠΎΠ»ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π° Π΅ Сксплицитно поставСна, ја ослободувамС ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°, ΡΠΏΡ€Π΅Ρ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΏΠΎΠ½Π°Ρ‚Π°ΠΌΠΎΡˆΠ½ΠΈ Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ°. (Ако Π½Π΅ ја поставитС Ρ€Π΅Π·ΠΎΠ»ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π° Сксплицитно, Ρ‚Π°Π° стандардно ќС Π±ΠΈΠ΄Π΅ Π΅Π΄Π½Π° наносСкунда ΠΈ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° ќС сС ослободи ΠΊΠΎΠ³Π° ќС Π·Π°ΠΏΠΎΡ‡Π½Π΅ ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°.)

Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ Π½Π° скрипта сС користат Π·Π° Π΄Π° сС ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° Π»ΠΎΠ³ΠΈΡ€Π°ΡšΠ΅ ΠΊΠΎΠΈ сС Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ EchoClient ΠΈ EchoServer:

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

Ако ја ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ‚Π° Logging, ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π½ΠΈΠ²ΠΎΠ° Π½Π° Π»ΠΎΠ³ΠΈΡ€Π°ΡšΠ΅/грануларност ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ Π½Π° сСкоја ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ОвиС Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ Π΅Π²ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΎΡ‚ΡΡ‚Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅ Π³Ρ€Π΅ΡˆΠΊΠΈ Π΄ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° INFO Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈ сСрвСритС Π½Π° Π΅Ρ…ΠΎ. На ΠΎΠ²Π° Π½ΠΈΠ²ΠΎ, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ќС ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΏΠΎΡ€Π°ΠΊΠΈ Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΈΡΠΏΡ€Π°ΡœΠ° ΠΈ ΠΏΡ€ΠΈΠΌΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°.

Π‘Π΅Π³Π° ќС сС ΡΠΏΡƒΡˆΡ‚ΠΈΠΌΠ΅ Π½Π° бизнисот со ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°Ρ‚Π° ΠΈ водСњС Π½Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. НиС користимС помошни ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° Π·Π° Π΄Π° ја Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΎΠ²Π°Π° Ρ€Π°Π±ΠΎΡ‚Π° ΡˆΡ‚ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ поСдноставна.

4.2.6 ΠšΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° асистСнти Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°

Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ Π²ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° скрипта Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ ќС Π³ΠΈ создадат ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Node ns-3 ΠΊΠΎΠΈ ќС Π³ΠΈ прСтставуваат ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΈΡ‚Π΅ Π²ΠΎ ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°.

NodeContainer nodes;
nodes.Create (2);

ΠŸΡ€Π΅Π΄ Π΄Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅, Π΄Π° ја најдСмС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° часот NodeContainer. Π”Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС дојдС Π΄ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° Π΄Π°Π΄Π΅Π½Π° класа Π΅ ΠΏΡ€Π΅ΠΊΡƒ Ρ˜Π°Π·ΠΈΡ‡Π΅Ρ‚ΠΎ Класи Π½Π° страницитС ΠšΠΈΡΠ»ΠΎΡ€ΠΎΠ΄. Ако вСќС ΠΈΠΌΠ°Ρ‚Π΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΎ Doxygen, Сдноставно ΡΠΊΡ€ΠΎΠ»ΡƒΠ²Π°Ρ˜Ρ‚Π΅ Π΄ΠΎ Π²Ρ€Π²ΠΎΡ‚ Π½Π° страницата ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π³ΠΎ Ρ‚Π°Π±ΠΎΡ‚ Класи. Π’Ρ€Π΅Π±Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΎΠ² сСт Π½Π° Ρ˜Π°Π·ΠΈΡ‡ΠΈΡšΠ°, ΠΎΠ΄ ΠΊΠΎΠΈ Π΅Π΄Π½Π°Ρ‚Π° Π΅ листа Π½Π° класи. Под ΠΎΠ²Π° Ρ˜Π°Π·ΠΈΡ‡Π΅ ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ листа Π½Π° ситС ns-3 класи. Π‘ΠΊΡ€ΠΎΠ»ΡƒΠ²Π°Ρ˜Ρ‚Π΅ Π½Π°Π΄ΠΎΠ»Ρƒ Π΄ΠΎ ns3::NodeContainer. Кога ќС Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ класа, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ја Π·Π° Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° часот.

Како ΡˆΡ‚ΠΎ сС сСќавамС, Π΅Π΄Π½Π° ΠΎΠ΄ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠ»ΡƒΡ‡Π½ΠΈ апстракции Π΅ Ρ˜Π°Π·ΠΎΠ»ΠΎΡ‚. Вој Π³ΠΎ прСтставува ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΎΡ‚ Π½Π° кој ќС Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΊΡƒΠΏΠΎΠ²ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠΈ. АсистСнт Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° NodeContainer ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅, ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΈ пристап Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ Π±ΠΈΠ»ΠΎ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Јазол, ΡˆΡ‚ΠΎ Π³ΠΎ создавамС Π·Π° Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. ΠŸΡ€Π²Π°Ρ‚Π° линија ΠΏΠΎΠ³ΠΎΡ€Π΅ Сдноставно Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π° NodeContainer, ΠΊΠΎΠΈ Π³ΠΈ Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ јазли. Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° линија Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ ΠšΡ€Π΅ΠΈΡ€Π°Ρ˜ Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΎΡ‚ Π½Π° јазли ΠΈ Π±Π°Ρ€Π° ΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π΄Π° создадС Π΄Π²Π° јазли. Како ΡˆΡ‚ΠΎ Π΅ опишано Π²ΠΎ ΠšΠΈΡΠ»ΠΎΡ€ΠΎΠ΄, ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π±Π°Ρ€Π° систСмот ns-3 Π΄Π° создадС Π΄Π²Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Јазол ΠΈ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΎ складира ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°Ρ‡ΠΈ ΠΊΠΎΠ½ ΠΎΠ²ΠΈΠ΅ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ.

ΠˆΠ°Π·Π»ΠΈΡ‚Π΅ создадСни Π²ΠΎ скриптата сè ΡƒΡˆΡ‚Π΅ Π½Π΅ ΠΏΡ€Π°Π²Π°Ρ‚ Π½ΠΈΡˆΡ‚ΠΎ. Π‘Π»Π΅Π΄Π½ΠΈΠΎΡ‚ Ρ‡Π΅ΠΊΠΎΡ€ Π²ΠΎ Π³Ρ€Π°Π΄Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°Ρ‚Π° Π΅ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ јазли со ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. ΠΠ°Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π°Ρ‚Π° Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΠΌΡ€Π΅ΠΆΠ° ΡˆΡ‚ΠΎ ја ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°ΠΌΠ΅ Π΅ врската ΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π΄Π²Π° јазли. Π‘Π΅Π³Π° ќС создадСмС Ρ‚Π°ΠΊΠ²Π° врска.

PointToPointHelper

Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ врска ΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΠΏΠΎΠ·Π½Π°Ρ‚Π° шСма, ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ помошСн ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° Π·Π° Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ниско Π½ΠΈΠ²ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Π·Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ. ΠŸΠΎΡ‚ΡΠ΅Ρ‚ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Π½Π°ΡˆΠΈΡ‚Π΅ Π΄Π²Π΅ ΠΊΠ»ΡƒΡ‡Π½ΠΈ апстракции NetDevice ΠΈ ΠΊΠ°Π½Π°Π». Π’ΠΎ Ρ€Π΅Π°Π»Π½ΠΈΠΎΡ‚ свСт, ΠΎΠ²ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Π°Ρ‚ Π½Π° ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠΈ ΠΈ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ ΠΊΠ°Π±Π»ΠΈ. Π’ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎ, ΠΎΠ²ΠΈΠ΅ Π΄Π²Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ сС тСсно ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ Π΅Π΄Π½Π° со Π΄Ρ€ΡƒΠ³Π° ΠΈ никој Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° смСта Π½Π° ΡΠΏΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΡšΠ΅, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΡ€Π΅Π΄ΠΈ Π•Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡ€Π΅ΠΊΡƒ Π±Π΅Π·ΠΆΠΈΡ‡Π΅Π½ ΠΊΠ°Π½Π°Π». ΠΠ°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΡ†ΠΈ Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° ја слСдат ΠΎΠ²Π°Π° блиска врска ΠΈ Π·Π°Ρ‚ΠΎΠ° ќС користитС СдинствСн ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ Π²ΠΎ ΠΎΠ²Π° сцСнарио PointToPointHelper Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΈ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ ns-3 ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ PointToPointNetDevice ΠΈ PointToPointChannel. Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ Π²ΠΎ сцСнариото:

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

ΠŸΡ€Π²Π° линија,

PointToPointHelper pointToPoint;

создава ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΊ ΠΎΠ΄ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ Π½Π° стСкот PointToPointHelper. Од Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° највисоко Π½ΠΈΠ²ΠΎ слСднава линија,

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

ΠΌΡƒ ΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΡ‚ PointToPointHelper користСтС ја врСдноста β€ž5 Mbit/sβ€œ (ΠΏΠ΅Ρ‚ ΠΌΠ΅Π³Π°Π±ΠΈΡ‚ΠΈ Π²ΠΎ сСкунда) ΠΊΠ°ΠΊΠΎ β€žΠ‘Ρ‚Π°ΠΏΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ".

Од ΠΏΠΎΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, Π½ΠΈΠ·Π°Ρ‚Π° β€žDataRateβ€œ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° ΠΎΠ½Π° ΡˆΡ‚ΠΎ Π½ΠΈΠ΅ Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ PointToPointNetDevice. Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π²ΠΎ ΠšΠΈΡΠ»ΠΎΡ€ΠΎΠ΄ Π·Π° час ns3::PointToPointNetDevice Π° Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ GetTypeId ќС Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ листа Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π·Π° ΡƒΡ€Π΅Π΄ΠΎΡ‚. ΠœΠ΅Ρ“Ρƒ Π½ΠΈΠ² ќС Π±ΠΈΠ΄Π΅ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΡ‚ β€žΠ‘Ρ‚Π°ΠΏΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ" ΠŸΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ ns-3 Π²ΠΈΠ΄Π»ΠΈΠ²ΠΈ Π·Π° корисникот ΠΈΠΌΠ°Π°Ρ‚ слични списоци Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ. НиС Π³ΠΎ користимС овој ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° лСсно ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π±Π΅Π· ΠΏΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π°, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π²ΠΎ слСдниот Π΄Π΅Π».

Π‘Π»ΠΈΡ‡Π½ΠΎ Π½Π° "Π‘Ρ‚Π°ΠΏΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ" Π²ΠΎ PointToPointNetDevice, ќС Π³ΠΎ Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΡ‚ "Delay" ΠΏΠΎΠ²Ρ€Π·Π°Π½ со PointToPointChannel. ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° линија

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

Π²Π΅Π»ΠΈ PointToPointHelper користСтС ја врСдноста β€ž2 msβ€œ (Π΄Π²Π΅ милисСкунди) ΠΊΠ°ΠΊΠΎ врСдност Π·Π° ΠΎΠ΄Π»ΠΎΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΡˆΠΈΡ€Π΅ΡšΠ΅Ρ‚ΠΎ Π·Π° врската ΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΡˆΡ‚ΠΎ послСдоватСлно ја создава.

NetDeviceContainer

Π’ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠΌΠ°ΠΌΠ΅ Π²ΠΎ сцСнариото NodeContainer, кој содрТи Π΄Π²Π° јазли. НиС ΠΈΠΌΠ°ΠΌΠ΅ PointToPointHelper, кој Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π·Π° создавањС ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ PointToPointNetDevices ΠΈ Π½ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ со помош Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ PointToPointChannel. Π˜ΡΡ‚ΠΎ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π³ΠΎ користСвмС ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΠΎΡ‚ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° NodeContainer Π·Π° создавањС јазли, ќС ΠΏΡ€Π°ΡˆΠ°ΠΌΠ΅ PointToPointHelper Π²Ρ€ΡˆΠ°Ρ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π·Π° нас ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со создавањС, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° ΠΈ ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΡƒΡ€Π΅Π΄ΠΈ. Ни Ρ‚Ρ€Π΅Π±Π° листа Π½Π° ситС создадСни ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ NetDevice, Π·Π°Ρ‚ΠΎΠ° користимС NetDeviceContainer Π΄Π° Π³ΠΈ складирамС Π½Π° ист Π½Π°Ρ‡ΠΈΠ½ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ користСвмС NodeContainer Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ˜Π°Π·Π»ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π³ΠΈ создадовмС. Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄,

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

ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚Π½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΡƒΡ€Π΅Π΄ΠΎΡ‚ ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΡ‚. ΠŸΡ€Π²Π°Ρ‚Π° линија Π³ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π½Π° ΡƒΡ€Π΅Π΄ΠΎΡ‚ спомСнат ΠΏΠΎΠ³ΠΎΡ€Π΅, Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ ја Π²Ρ€ΡˆΠΈ Π³Π»Π°Π²Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°. ΠœΠ΅Ρ‚ΠΎΠ΄ Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ PointToPointHelper ΠΏΡ€ΠΈΡ„Π°ΡœΠ° NodeContainer ΠΊΠ°ΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€. Π’Π½Π°Ρ‚Ρ€Π΅ NetDeviceContainer Π·Π° сСкој јазол Π»ΠΎΡ†ΠΈΡ€Π°Π½ Π²ΠΎ NodeContainer сС создава (Π·Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΌΠΎΡ€Π° Π΄Π° ΠΈΠΌΠ° Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π²Π΅ ΠΎΠ΄ Π½ΠΈΠ²) PointToPointNetDevice Π΅ ΠΊΡ€Π΅ΠΈΡ€Π°Π½ ΠΈ Π·Π°Ρ‡ΡƒΠ²Π°Π½ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π½Π° ΡƒΡ€Π΅Π΄ΠΎΡ‚. PointToPointChannel сС создава ΠΈ Π½Π° Π½Π΅Π³ΠΎ сС ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π΅Π½ΠΈ Π΄Π²Π° PointToPointNetDevices. По ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈΡ‚Π΅, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΡ‚Π΅ сС Π·Π°Ρ‡ΡƒΠ²Π°Π½ΠΈ Π²ΠΎ PointToPointHelper, сС користат Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ Π½Π° соодвСтнитС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ Π²ΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ.

ΠžΡ‚ΠΊΠ°ΠΊΠΎ ќС сС Ρ˜Π°Π²ΠΈΡ‚Π΅ pointToPoint.Install (јазли) ќС ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° јазли, сСкој со инсталиран ΠΌΡ€Π΅ΠΆΠ΅Π½ ΡƒΡ€Π΅Π΄ ΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈ Π΅Π΄Π½Π° врска ΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π½ΠΈΠ². Π”Π²Π°Ρ‚Π° ΡƒΡ€Π΅Π΄ΠΈ ќС Π±ΠΈΠ΄Π°Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ Π΄Π° прСнСсуваат ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ со Π±Ρ€Π·ΠΈΠ½Π° ΠΎΠ΄ ΠΏΠ΅Ρ‚ ΠΌΠ΅Π³Π°Π±ΠΈΡ‚ΠΈ Π²ΠΎ сСкунда со Π΄ΠΎΡ†Π½Π΅ΡšΠ΅ Π½Π° прСносот ΠΎΠ΄ Π΄Π²Π΅ милисСкунди ΠΏΡ€Π΅ΠΊΡƒ ΠΊΠ°Π½Π°Π»ΠΎΡ‚.

InternetStackHelper

Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ јазли ΠΈ ΡƒΡ€Π΅Π΄ΠΈ, Π½ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ јазли Π½Π΅ΠΌΠ°Π°Ρ‚ инсталирани стСкови Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ. Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ ќС сС ΠΏΠΎΠ³Ρ€ΠΈΠΆΠ°Ρ‚ Π·Π° ΠΎΠ²Π°.

InternetStackHelper stack;
stack.Install (nodes);

InternetStackHelper - Π΅ помошник Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° Π·Π° стСкови Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, слично Π½Π° PointToPointHelper Π·Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ ΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°. ΠœΠ΅Ρ‚ΠΎΠ΄ Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ Π·Π΅ΠΌΠ° NodeContainer ΠΊΠ°ΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€. Кога ќС сС ΠΈΠ·Π²Ρ€ΡˆΠΈ, ќС Π³ΠΎ инсталира стСкот Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ (TCP, UDP, IP, ΠΈΡ‚Π½.) Π½Π° сСкој ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΡΠΊΠΈ јазол.

IPv4Address Helper

ΠŸΠΎΡ‚ΠΎΠ° Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΈ ΠΏΠΎΠ²Ρ€Π·Π΅ΠΌΠ΅ Π½Π°ΡˆΠΈΡ‚Π΅ ΡƒΡ€Π΅Π΄ΠΈ со IP адрСси. ΠžΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΠΌΠ΅ асистСнт Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со распрСдСлбата Π½Π° IP адрСсата. ЕдинствСниот API ΡˆΡ‚ΠΎ Π΅ Π²ΠΈΠ΄Π»ΠΈΠ² Π·Π° корисникот Π΅ ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° основната IP адрСса ΠΈ ΠΌΡ€Π΅ΠΆΠ½Π°Ρ‚Π° маска ΡˆΡ‚ΠΎ ќС сС користат ΠΊΠΎΠ³Π° сС ΠΏΡ€Π°Π²ΠΈ вистинската Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° Π½Π° адрСси (ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ Π½Π° пониско Π½ΠΈΠ²ΠΎ Π²ΠΎ ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΠΊΠΎΡ‚). Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ Π²ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ скрипта ΠΏΡ€Π²ΠΎ.cc,

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

Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΎΡ‚ Π·Π° помошник Π·Π° адрСси ΠΈ ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΌΡƒ Π΄Π΅ΠΊΠ° Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π° IP адрСси ΠΎΠ΄ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° 10.1.1.0, ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја Π±ΠΈΡ‚-маската 255.255.255.0 Π·Π° ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ, Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈΡ‚Π΅ адрСси ќС Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π°Π°Ρ‚ ΠΎΠ΄ Π΅Π΄Π½Π° ΠΈ ќС сС Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π°Π°Ρ‚ ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½ΠΎ, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΏΡ€Π²Π°Ρ‚Π° адрСса распрСдСлСна ΠΎΠ΄ ΠΎΠ²Π°Π° Π±Π°Π·Π° ќС Π±ΠΈΠ΄Π΅ 10.1.1.1, ΠΏΠΎΡ‚ΠΎΠ° 10.1.1.2 ΠΈΡ‚Π½. Π’ΠΎ рСалноста, Π½Π° ниско Π½ΠΈΠ²ΠΎ, систСмот ns-3 Π³ΠΈ ΠΏΠ°ΠΌΡ‚ΠΈ ситС Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ IP адрСси ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Ρ„Π°Ρ‚Π°Π»Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π°ΠΊΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ создадСтС ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π° ΠΊΠΎΠ³Π° истата адрСса сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π΄Π²Π°ΠΏΠ°Ρ‚ΠΈ (ΠΏΠ°Ρ‚Π΅ΠΌ, ΠΎΠ²Π°Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π΅ Ρ‚Π΅ΡˆΠΊΠΎ Π΄Π° сС Π΄Π΅Π±Π°Π³ΠΈΡ€Π°).

Π‘Π»Π΅Π΄Π½Π°Ρ‚Π° линија Π½Π° ΠΊΠΎΠ΄,

Ipv4InterfaceContainer interfaces = address.Assign (devices);

ја Π²Ρ€ΡˆΠΈ вистинската Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π° адрСса. Π’ΠΎ ns-3 воспоставувамС Π°ΡΠΎΡ†ΠΈΡ˜Π°Ρ†ΠΈΡ˜Π° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ IP адрСса ΠΈ ΡƒΡ€Π΅Π΄ кој Π³ΠΎ користи ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΎΡ‚ IPv4 ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ. Π˜ΡΡ‚ΠΎ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ понСкогаш Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° список Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ создадСни ΠΎΠ΄ ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΠΊΠΎΡ‚ Π·Π° ΠΏΠΎΠ΄ΠΎΡ†Π½Π΅ΠΆΠ½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°, понСкогаш Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° листа Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ IPv4 ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ. IPv4InterfaceContainer ја ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΎΠ²Π°Π° функционалност.

Π˜Π·Π³Ρ€Π°Π΄ΠΈΠ²ΠΌΠ΅ ΠΌΡ€Π΅ΠΆΠ° ΠΎΠ΄ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°, со инсталирани стСкови ΠΈ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ IP адрСси. Π‘Π΅Π³Π° Π½ΠΈ Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ сСкој јазол Π·Π° Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜.

4.2.7 ΠšΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°

Π”Ρ€ΡƒΠ³Π° ΠΎΠ΄ Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ апстракции Π½Π° систСмот ns-3 Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° (Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°). Π’ΠΎ ΠΎΠ²Π° сцСнарио користимС Π΄Π²Π΅ ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄ основната класа Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΏΠΎΠ²ΠΈΠΊΠ°Π½ ns-3 ΠΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° UdpEchoServer ΠΈ UdpEchoClientApplication. Како ΠΈ Π²ΠΎ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ случаи, Π½ΠΈΠ΅ користимС помошни ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со основнитС ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ. ОвдС користимС UdpEchoServerHelper ΠΈ UdpEchoClientHelper ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π΄Π° Π½ΠΈ Π³ΠΎ олСснат ΠΆΠΈΠ²ΠΎΡ‚ΠΎΡ‚.

UdpEchoServerHelper

Π‘Π»Π΅Π΄Π½ΠΈΠ²Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ Π²ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° скрипта Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ first.cc сС користат Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° UDP Π΅Ρ…ΠΎ-сСрвСр Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π½Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ Ρ˜Π°Π·Π»ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π³ΠΈ создадовмС ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ.

UdpEchoServerHelper echoServer (9);

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

Π‘Π΅ создава ΠΏΡ€Π²Π°Ρ‚Π° линија Π½Π° ΠΊΠΎΠ΄ Π²ΠΎ Π³ΠΎΡ€Π½ΠΈΠΎΡ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ UdpEchoServerHelper. Како ΠΈ ΠΎΠ±ΠΈΡ‡Π½ΠΎ, ΠΎΠ²Π° Π½Π΅ Π΅ самата Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, Ρ‚ΠΎΠ° Π΅ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ кој Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠ΅ вистински Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π•Π΄Π½Π° ΠΎΠ΄ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈ Π΅ Π΄Π° Π³ΠΈ прСнСсСмС Π±Π°Ρ€Π°Π½ΠΈΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ Π½Π° конструкторот Π½Π° ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΠΎΡ‚ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚. Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΠΊΠΎΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½ΠΈΡˆΡ‚ΠΎ корисно освСн Π°ΠΊΠΎ Π½Π΅ ΠΌΡƒ Π³ΠΎ Π΄Π°Π΄Π΅ Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° Π½Π° кој сСрвСрот ќС ΡΠ»ΡƒΡˆΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, овој Π±Ρ€ΠΎΡ˜ ΠΌΠΎΡ€Π° Π΄Π° ΠΌΡƒ Π±ΠΈΠ΄Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚ ΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚. Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜, Π³ΠΎ прСнСсувамС Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° Π½Π° ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΠΎΡ‚ конструктор. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ΠΎΡ‚, ΠΏΠ°ΠΊ, Сдноставно Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ° SetAttribute со ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π°Ρ‚Π° врСдност. ΠŸΠΎΠ΄ΠΎΡ†Π½Π°, Π°ΠΊΠΎ сакатС, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ користитС SetAttribute Π·Π° Π΄Π° поставитС Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° врСдност Π·Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΡ‚ Port.

Како ΠΈ ΠΌΠ½ΠΎΠ³Ρƒ Π΄Ρ€ΡƒΠ³ΠΈ помошни ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΈ, ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΎΡ‚ UdpEchoServerHelper ΠΈΠΌΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅. Π‘ΠΎ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° овој ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ сС создава основна Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° Π΅Ρ…ΠΎ сСрвСр ΠΈ сС ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π° со Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΏΡ€ΠΈΡ„Π°ΡœΠ° NodeContainer ΠΊΠ°ΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ исто ΠΊΠ°ΠΊΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΡˆΡ‚ΠΎ Π³ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΌΠ΅.

Π˜ΠΌΠΏΠ»ΠΈΡ†ΠΈΡ‚Π½Π°Ρ‚Π° ΠΊΠΎΠ½Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° C++ ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΎΠ²Π΄Π΅ Π³ΠΎ Π·Π΅ΠΌΠ° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΎΡ‚ ΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ јазол. Π—Π΅ΠΌΠ΅Ρ‚Π΅ (1) (ΡˆΡ‚ΠΎ Π²Ρ€Π°ΡœΠ° ΠΏΠ°ΠΌΠ΅Ρ‚Π΅Π½ ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°Ρ‡ Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΎΡ‚ Π½Π° јазол - Ptr ) ΠΈ Π³ΠΎ користи Π²ΠΎ конструкторот Π·Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈΠΎΡ‚ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ NodeContainerкој ΠΏΠΎΡ‚ΠΎΠ° сС ΠΏΡ€Π΅Π΄Π°Π²Π° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅. Ако Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠ΄Ρ€Π΅Π΄ΠΈΡ‚Π΅ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ C++ кој ΠΌΠ΅Ρ‚ΠΎΠ΄ потпис Π΅ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π½ ΠΈ ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½, Ρ‚ΠΎΠ³Π°Ρˆ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ΠΌΠ΅Ρ“Ρƒ ΠΈΠΌΠΏΠ»ΠΈΡ†ΠΈΡ‚Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Π·ΠΈΠΈ.

Π‘Π΅Π³Π° Π³ΠΎ Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ‚ΠΎΠ° echoServer.Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜ Π·Π° Π΄Π° ја инсталиратС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° UdpEchoServer Π½Π° ΠΏΡ€ΠΎΠ½Π°Ρ˜Π΄Π΅Π½ΠΈ Π²ΠΎ NodeContainerкој Π³ΠΎ користимС Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со Π½Π°ΡˆΠΈΡ‚Π΅ јазли, јазол со индСкс 1. ΠœΠ΅Ρ‚ΠΎΠ΄ Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ќС Π²Ρ€Π°Ρ‚ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ ΡˆΡ‚ΠΎ содрТи ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°Ρ‡ΠΈ Π΄ΠΎ ситС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ (Π²ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜ Π΅Π΄Π½Π°, бидСјќи ΠΏΠΎΠΌΠΈΠ½Π°Π²ΠΌΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π° NodeContainer, кој содрТи Π΅Π΄Π΅Π½ јазол) создадСн ΠΎΠ΄ ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΠΊΠΎΡ‚.

АпликациитС Ρ‚Ρ€Π΅Π±Π° Π΄Π° спСцифицираат ΠΊΠΎΠ³Π° Π΄Π° ΠΏΠΎΡ‡Π½Π°Ρ‚ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π°Ρ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ "ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ" ΠΈ ΠΌΠΎΠΆΠ΅Π±ΠΈ ќС Ρ‚Ρ€Π΅Π±Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° ΠΎΠ΄Ρ€Π΅Π΄ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅ ΠΊΠΎΠ³Π° Π΄Π° Π³ΠΎ ΠΏΡ€Π΅ΠΊΠΈΠ½Π΅Ρ‚Π΅ "стоп". НиС Π³ΠΈ Π½ΡƒΠ΄ΠΈΠΌΠ΅ Π΄Π²Π΅Ρ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ. ОвиС Π²Ρ€Π΅ΠΌΠΈΡšΠ° сС поставСни со помош Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠšΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ ΠΈ Π‘Ρ‚ΠΎΠΏ. ОвиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΏΡ€ΠΈΡ„Π°ΡœΠ°Π°Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅. Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜ користимС Сксплицитна Π½ΠΈΠ·Π° ΠΎΠ΄ ΠΊΠΎΠ½Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° C++ Π·Π° Π΄Π° Π·Π΅ΠΌΠ΅ΠΌΠ΅ C++ двојно 1.0 ΠΈ ΠΏΡ€Π΅Ρ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Π³ΠΎ Π²ΠΎ tns-3 Time ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ кој Π³ΠΎ користи ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΎΡ‚ Seconds Π·Π° ΠΏΡ€Π΅Ρ‚Π²ΠΎΡ€Π°ΡšΠ΅ Π²ΠΎ сСкунди. Π—Π°ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Π·ΠΈΡ˜Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Π°Π²Ρ‚ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚, Π° C++ ΠΈΠΌΠ° свои ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сСкогаш Π΄Π° смСтатС Π½Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°Π²Ρ‚Π΅. Π”Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ

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

ќС ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° Π΅Ρ…ΠΎ сСрвСр Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ (автоматски Π΄Π° сС Π²ΠΊΠ»ΡƒΡ‡ΠΈ) Π΅Π΄Π½Π° сСкунда ΠΏΠΎ Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ Π΄Π° прСстанС (исклучи) ΠΏΠΎ дСсСт сСкунди ΠΎΠ΄ ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ‚ ΡˆΡ‚ΠΎ прогласивмС настан Π·Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π° (настан Π·Π° ΡΡ‚ΠΎΠΏΠΈΡ€Π°ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°), кој ќС сС ΠΈΠ·Π²Ρ€ΡˆΠΈ Π·Π° дСсСт сСкунди, ќС сС симулираат Π½Π°Ρ˜ΠΌΠ°Π»ΠΊΡƒ дСсСт сСкунди ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

UdpEchoClientHelper

ΠΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡˆΡ‚ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π½Π° Π½Π°Ρ‡ΠΈΠ½ рСчиси сличСн Π½Π° сСрвСрот. ΠŸΠΎΡΡ‚ΠΎΠΈ основСн ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ UdpEchoClientApplication, кој Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½
UdpEchoClientHelper.

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

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

Π‘Π΅ΠΏΠ°ΠΊ, Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Π΅Ρ…ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° поставимС ΠΏΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ. ΠŸΡ€Π²ΠΈΡ‚Π΅ Π΄Π²Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ сС поставСни Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° создавањС UdpEchoClientHelper. ПодавамС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΊΠΎΠΈ сС користат (Π²Π½Π°Ρ‚Ρ€Π΅ Π²ΠΎ ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΠΊΠΎΡ‚) Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΡ‚Π΅ β€žΠ”Π°Π»Π΅Ρ‡ΠΈΠ½ΡΠΊΠ° Π°Π΄Ρ€Π΅ΡΠ°β€œ ΠΈ "RemotePort" Π²ΠΎ согласност со Π½Π°ΡˆΠΈΠΎΡ‚ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π΄Π° Π³ΠΈ прСнСсСмС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΠΎΡ‚ конструктор.

Π”Π° потсСтимС Π΄Π΅ΠΊΠ° користСвмС IPv4InterfaceContainer Π·Π° слСдСњС Π½Π° IP адрСситС ΡˆΡ‚ΠΎ смС Π³ΠΈ Π΄ΠΎΠ΄Π΅Π»ΠΈΠ»Π΅ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΡƒΡ€Π΅Π΄ΠΈ. Нултиот ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΈ ќС ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° IP адрСсата Π½Π° Π½ΡƒΠ»Π°Π½ΠΈΠΎΡ‚ јазол Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π·Π° јазли. ΠŸΡ€Π²ΠΈΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° IP адрСсата Π½Π° ΠΏΡ€Π²ΠΈΠΎΡ‚ јазол Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π·Π° јазли. Π—Π½Π°Ρ‡ΠΈ, Π²ΠΎ ΠΏΡ€Π²Π°Ρ‚Π° линија Π½Π° ΠΊΠΎΠ΄ (ΠΏΠΎΠ³ΠΎΡ€Π΅), создавамС помошник ΠΈ ΠΌΡƒ ΠΊΠ°ΠΆΡƒΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° далСчинската адрСса Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ ќС Π±ΠΈΠ΄Π΅ IP адрСсата Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π° Π½Π° Ρ˜Π°Π·ΠΎΠ»ΠΎΡ‚ ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ сС Π½Π°ΠΎΡ“Π° сСрвСрот. НиС, исто Ρ‚Π°ΠΊΠ°, Π²Π΅Π»ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π΄ΠΎ ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° Π΄Π΅Π²Π΅Ρ‚.

Атрибутот β€žMaxPacketsβ€œ ΠΌΡƒ ΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ максималниот Π±Ρ€ΠΎΡ˜ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ испратимС Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Атрибутот β€žΠ˜Π½Ρ‚Π΅Ρ€Π²Π°Π»β€œ ΠΌΡƒ ΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ ΠΊΠΎΠ»ΠΊΡƒ Π΄ΠΎΠ»Π³ΠΎ Π΄Π° Ρ‡Π΅ΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΡ‚ β€žΠ“ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚β€œ ΠΌΡƒ ΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ ΠΊΠΎΠ»ΠΊΡƒ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ Π³ΠΎΠ»Π΅ΠΌΠΎ ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚. Π‘ΠΎ ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π° Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ ΠΌΡƒ ΠΊΠ°ΠΆΡƒΠ²Π°ΠΌΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Π΄Π° испрати Π΅Π΄Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΠ΄ 1024 Π±Π°Ρ˜Ρ‚ΠΈ.

Како ΠΈ кај сСрвСрот Π΅Ρ…ΠΎ, Π³ΠΈ поставивмС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΡ‚Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Π·Π° Π΅Ρ…ΠΎ ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ ΠΈ Π‘Ρ‚ΠΎΠΏ, Π½ΠΎ ΠΎΠ²Π΄Π΅ Π³ΠΎ стартувамС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ сСкунда ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ќС сС Π²ΠΊΠ»ΡƒΡ‡ΠΈ сСрвСрот (Π΄Π²Π΅ сСкунди ΠΏΠΎ ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚ Π½Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°).

4.2.8 Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€

Π’ΠΎ овој ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Ова Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ со помош Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€:: Π‘Ρ‚Π°Ρ€Ρ‚ΡƒΠ²Π°Ρ˜.

Simulator::Run ();

Кога Π³ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ°Π²ΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΡ€Π°Π½ΠΎ,

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

Π½ΠΈΠ΅ Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ Π·Π°ΠΊΠ°ΠΆΠ°Π²ΠΌΠ΅ настани Π²ΠΎ симулаторот Π½Π° 1,0 сСкунди, 2,0 сСкунди ΠΈ Π΄Π²Π° настани Π½Π° 10,0 сСкунди. По ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚ Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€:: Π‘Ρ‚Π°Ρ€Ρ‚ΡƒΠ²Π°Ρ˜, систСмот ќС ΠΏΠΎΡ‡Π½Π΅ Π΄Π° ја Π³Π»Π΅Π΄Π° листата Π½Π° Π·Π°ΠΊΠ°ΠΆΠ°Π½ΠΈ настани ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°. ΠŸΡ€Π²ΠΎ ќС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° настан Π·Π° 1,0 сСкунди, ΡˆΡ‚ΠΎ ќС ја Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° сСрвСрот Π·Π° Π΅Ρ…ΠΎ (овој настан Π·Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΠΊΠ°ΠΆΠ΅ ΠΌΠ½ΠΎΠ³Ρƒ Π΄Ρ€ΡƒΠ³ΠΈ настани). ΠŸΠΎΡ‚ΠΎΠ° ќС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° настан Π·Π°ΠΊΠ°ΠΆΠ°Π½ Π½Π° t=2,0 сСкунди ΡˆΡ‚ΠΎ ќС ја стартува Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Π΅Ρ…ΠΎ. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ, овој настан ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρƒ повСќС ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ настани. Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π΅Ρ…ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Π½Π° ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΈΠΎΡ‚ настан ќС ја Π·Π°ΠΏΠΎΡ‡Π½Π΅ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° прСнос Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° со ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎ сСрвСрот.

Π§ΠΈΠ½ΠΎΡ‚ Π½Π° ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎ сСрвСрот ќС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΡΠΈΠ½ΡŸΠΈΡ€ Π½Π° настани ΠΊΠΎΠΈ автоматски ќС сС Π·Π°ΠΊΠ°ΠΆΠ°Ρ‚ Π·Π°Π΄ сцСната ΠΈ ΠΊΠΎΠΈ ќС ја ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π°Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠ°Ρ‚Π° Π½Π° ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ Π΅Ρ…ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ спорСд врСмСнскитС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΡˆΡ‚ΠΎ Π³ΠΈ поставивмС Π²ΠΎ скриптата.

Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, бидСјќи ΠΈΡΠΏΡ€Π°ΡœΠ°ΠΌΠ΅ само Π΅Π΄Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ (Π·Π°ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΡ‚ MaxPackets бСшС поставСно Π½Π° Π΅Π΄Π΅Π½), Π»Π°Π½Π΅Ρ†ΠΎΡ‚ Π½Π° настани ΠΈΠ½ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ ΠΎΠ΄ овој СдинствСн ΠΏΠΈΠ½Π³ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ ќС Π·Π°Π²Ρ€ΡˆΠΈ ΠΈ ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ќС ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° подготвСност. Π¨Ρ‚ΠΎΠΌ ќС сС случи ΠΎΠ²Π°, прСостанатитС Π·Π°ΠΊΠ°ΠΆΠ°Π½ΠΈ настани ќС Π±ΠΈΠ΄Π°Ρ‚ настанитС Π‘Ρ‚ΠΎΠΏ Π·Π° сСрвСр ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚. Кога ΠΎΠ²ΠΈΠ΅ настани ќС сС ΠΈΠ·Π²Ρ€ΡˆΠ°Ρ‚, Π½Π΅ΠΌΠ° Π΄Π° останат настани Π·Π° ΠΏΠΎΠ½Π°Ρ‚Π°ΠΌΠΎΡˆΠ½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€:: Π‘Ρ‚Π°Ρ€Ρ‚ΡƒΠ²Π°Ρ˜ ќС ја Π²Ρ€Π°Ρ‚ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π°Ρ‚Π°. Π‘ΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π΅ Π·Π°Π²Ρ€ΡˆΠ΅Π½Π°.

ΠžΡΡ‚Π°Π½ΡƒΠ²Π° само Π΄Π° сС исчиститС ΠΏΠΎ сСбС. Ова сС ΠΏΡ€Π°Π²ΠΈ со ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π£Π½ΠΈΡˆΡ‚ΠΈ. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ Π±Π΅Π° ΠΏΠΎΠ²ΠΈΠΊΠ°Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π·Π° помош (ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ΠΎΡ‚ ns-3 Π½Π° ниско Π½ΠΈΠ²ΠΎ), ΠΊΠΎΠΈ сС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π²ΠΎ симулаторот Π±Π΅Π° Π²ΠΌΠ΅Ρ‚Π½Π°Ρ‚ΠΈ ΠΊΡƒΠΊΠΈ Π·Π° Π΄Π° Π³ΠΈ ΡƒΠ½ΠΈΡˆΡ‚Π°Ρ‚ ситС ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ ΡˆΡ‚ΠΎ Π±Π΅Π° создадСни. НС Ρ‚Ρ€Π΅Π±Π°ΡˆΠ΅ сами Π΄Π° слСдитС Π½ΠΈΠ΅Π΄Π΅Π½ ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ - сС ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π΅ Π΄Π° сС Ρ˜Π°Π²ΠΈΡ‚Π΅ Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π£Π½ΠΈΡˆΡ‚ΠΈ ΠΈ ΠΈΠ·Π»Π΅Π·Π΅Ρ‚Π΅. БистСмот ns-3 ќС ја Π·Π°Π²Ρ€ΡˆΠΈ ΠΎΠ²Π°Π° Π½Π°ΠΏΠΎΡ€Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π·Π° вас. ΠžΡΡ‚Π°Π½Π°Ρ‚ΠΈΡ‚Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΎΠ΄ Π½Π°ΡˆΠ°Ρ‚Π° ΠΏΡ€Π²Π° ns-3 скрипта, first.cc, Π³ΠΎ ΠΏΡ€Π°Π²Π°Ρ‚ Ρ‚ΠΎΠΊΠΌΡƒ Ρ‚ΠΎΠ°:

Simulator::Destroy ();
return 0;
}

Кога ќС прСстанС симулаторот?

ns-3 Π΅ симулатор Π·Π° дискрСтСн настан (DE). Π’ΠΎ Ρ‚Π°ΠΊΠΎΠ² симулатор, сСкој настан Π΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ со Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅, Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒΠ²Π° со ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° настанитС ΠΏΠΎ рСдослСдот ΡˆΡ‚ΠΎ сС случуваат Π΄ΠΎΠ΄Π΅ΠΊΠ° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π°ΠΏΡ€Π΅Π΄ΡƒΠ²Π°. НастанитС ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π°Ρ‚ Π·Π°ΠΊΠ°ΠΆΡƒΠ²Π°ΡšΠ΅ ΠΈΠ΄Π½ΠΈ настани (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Π·Π°ΠΊΠ°ΠΆΠ΅ Π·Π° Π΄Π° Π³ΠΎ Π·Π°Π²Ρ€ΡˆΠΈ Π±Ρ€ΠΎΠ΅ΡšΠ΅Ρ‚ΠΎ Π²ΠΎ слСдниот ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»).

ΠŸΠΎΡ‡Π΅Ρ‚Π½ΠΈΡ‚Π΅ настани ΠΎΠ±ΠΈΡ‡Π½ΠΎ сС ΠΈΠ½ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ ΠΎΠ΄ Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ΠΎΡ‚, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ IPv6 ќС Π·Π°ΠΊΠ°ΠΆΠ΅ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅ Π½Π° услуги Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, Π±Π°Ρ€Π°ΡšΠ° ΠΎΠ΄ сосСд ΠΈΡ‚Π½. ΠΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π³ΠΎ Π·Π°ΠΊΠ°ΠΆΡƒΠ²Π° ΠΏΡ€Π²ΠΈΠΎΡ‚ настан Π·Π° ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ Ρ‚Π°ΠΊΠ° Π½Π°Ρ‚Π°ΠΌΡƒ. Кога нСкој настан сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π°, Ρ‚ΠΎΡ˜ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π½ΡƒΠ»Π°, Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ повСќС настани. Како ΡˆΡ‚ΠΎ Π½Π°ΠΏΡ€Π΅Π΄ΡƒΠ²Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, сС случуваат настани, ΠΈΠ»ΠΈ Π·Π°Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ ΠΈΠ»ΠΈ создаваат Π½ΠΎΠ²ΠΈ. Π‘ΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° автоматски ќС прСстанС Π°ΠΊΠΎ Ρ€Π΅Π΄ΠΎΡ‚ Π·Π° настани Π΅ ΠΏΡ€Π°Π·Π΅Π½ ΠΈΠ»ΠΈ Π°ΠΊΠΎ сС ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ посСбСн настан Π‘Ρ‚ΠΎΠΏ. Настан Π‘Ρ‚ΠΎΠΏ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ ΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π‘Ρ‚ΠΎΠΏ (Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π·Π°ΡΡ‚Π°Π½ΡƒΠ²Π°ΡšΠ΅).

Има Ρ‚ΠΈΠΏΠΈΡ‡Π΅Π½ ΡΠ»ΡƒΡ‡Π°Ρ˜ ΠΊΠΎΠ³Π° Simulator::Stop Π΅ апсолутно Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π΅Π½ Π·Π° Π΄Π° сС Π·Π°ΠΏΡ€Π΅ ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°: ΠΊΠΎΠ³Π° ΠΈΠΌΠ° самоодрТливи настани. Π‘Π°ΠΌΠΎΠΎΠ΄Ρ€ΠΆΠ»ΠΈΠ²ΠΈ (ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡƒΠ²Π°Ρ‡ΠΊΠΈ) настани сС настани ΠΊΠΎΠΈ сСкогаш сС ΠΏΡ€Π΅Π·Π°ΠΊΠ°ΠΆΡƒΠ²Π°Π°Ρ‚. Како послСдица Π½Π° Ρ‚ΠΎΠ°, Ρ‚ΠΈΠ΅ сСкогаш ја ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π°Π°Ρ‚ Ρ€Π΅Π΄ΠΈΡ†Π°Ρ‚Π° Π·Π° настани Π½Π΅ ΠΏΡ€Π°Π·Π½Π°. ΠŸΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΊΠΎΠΈ содрТат настани ΡˆΡ‚ΠΎ сС ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡƒΠ²Π°Π°Ρ‚, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

β€’ FlowMonitor - ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° ΠΈΠ·Π³ΡƒΠ±Π΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ;

β€’ RIPng – ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ Π΅ΠΌΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ° Π½Π° Ρ€ΡƒΡ‚ΠΈΡ€Π°Ρ‡ΠΊΠ°Ρ‚Π° Ρ‚Π°Π±Π΅Π»Π°;

β€’ ΠΈΡ‚Π½.

Π’ΠΎ Ρ‚Π°ΠΊΠ²ΠΈ случаи Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π‘Ρ‚ΠΎΠΏ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΈ Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, ΠΊΠΎΠ³Π° ns-3 Π΅ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Π΅ΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°, RealtimeSimulator сС користи Π·Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ Π½Π° часовникот Π·Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π° со ΠΌΠ°ΡˆΠΈΠ½ΡΠΊΠΈΠΎΡ‚ часовник, ΠΈ Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π‘Ρ‚ΠΎΠΏ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΈ Π·Π° Π·Π°ΠΏΠΈΡ€Π°ΡšΠ΅ Π½Π° процСсот.

ΠœΠ½ΠΎΠ³Ρƒ ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ Π·Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π° Π²ΠΎ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΡ‚ Π½Π΅ ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π‘Ρ‚ΠΎΠΏ Сксплицитно, бидСјќи Ρ‚ΠΈΠ΅ автоматски Π·Π°Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ ΠΊΠΎΠ³Π° настанитС Π²ΠΎ Ρ€Π΅Π΄ΠΈΡ†Π° сС исцрпСни. ΠœΠ΅Ρ“ΡƒΡ‚ΠΎΠ°, ΠΎΠ²ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ќС Π³ΠΎ ΠΏΡ€ΠΈΡ„Π°Ρ‚Π°Ρ‚ ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚ Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π‘Ρ‚ΠΎΠΏ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слСдната Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° изјава Π²ΠΎ ΠΏΡ€Π²Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ќС Π·Π°ΠΊΠ°ΠΆΠ΅ Сксплицитно Π·Π°ΠΏΠΈΡ€Π°ΡšΠ΅ Π½Π° 11 сСкунди:

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

Π“ΠΎΡ€Π΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΎΡ‚ΠΎ Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ²Π°Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, бидСјќи ΠΎΠ²Π°Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π° ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π½ΠΎ Π·Π°Π²Ρ€ΡˆΡƒΠ²Π° ΠΏΠΎ 10 сСкунди. Но, Π°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Π·Π°ΠΏΠΈΡ€Π°ΡšΠ΅ Π²ΠΎ Π³ΠΎΡ€Π½Π°Ρ‚Π° изјава ΠΎΠ΄ 11 сСкунди Π½Π° 1 сСкунда, ќС Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅ Π΄Π΅ΠΊΠ° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π°ΠΏΠΈΡ€Π° ΠΏΡ€Π΅Π΄ Π±ΠΈΠ»ΠΎ кој ΠΈΠ·Π»Π΅Π· Π΄Π° сС појави Π½Π° Π΅ΠΊΡ€Π°Π½ΠΎΡ‚ (бидСјќи ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ сС случува ΠΏΠΎ ΠΎΠΊΠΎΠ»Ρƒ 2 сСкунди ΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΡΠΈΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π°).

Π’Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° сС Ρ˜Π°Π²ΠΈΡ‚Π΅ Π½Π° Simulator::Stop ΠΏΡ€Π΅Π΄ Π΄Π° ΠΏΠΎΠ²ΠΈΠΊΠ°Ρ‚Π΅ Simulator::Run; ΠΈΠ½Π°ΠΊΡƒ Simulator::Run ΠΌΠΎΠΆΠ΅Π±ΠΈ никогаш Π½Π΅ΠΌΠ° Π΄Π° ја Π²Ρ€Π°Ρ‚ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π°Ρ‚Π° Π½Π° Π³Π»Π°Π²Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠΈ стоп!

4.2.9 Π“Ρ€Π°Π΄Π΅ΡšΠ΅ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° скрипта

ΠšΡ€Π΅ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Сдноставни скрипти Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ²ΠΌΠ΅ Ρ‚Ρ€ΠΈΠ²ΠΈΡ˜Π°Π»Π½ΠΎ. Π‘Γ¨ ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π΅ Π΄Π° ја ставитС Π²Π°ΡˆΠ°Ρ‚Π° скрипта Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ scratch ΠΈ Ρ‚Π°Π° автоматски ќС Π±ΠΈΠ΄Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½Π° Π°ΠΊΠΎ ја стартуватС Waf. Π”Π° ΠΏΡ€ΠΎΠ±Π°ΠΌΠ΅. Π’Ρ€Π°Ρ‚Π΅Ρ‚Π΅ сС Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ Π½Π° највисоко Π½ΠΈΠ²ΠΎ ΠΈ ΠΊΠΎΠΏΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ/упатство/ΠΏΡ€Π².cc Π΄ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΡ‚ ΠΈΠ·Π³Ρ€Π΅Π±Π°Ρ‚

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

Π‘Π΅Π³Π° ΠΈΠ·Π³Ρ€Π°Π΄Π΅Ρ‚Π΅ Π³ΠΎ Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΊ Π½Π° скрипта ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΠΌΠ°Ρ„Ρ‚Π°:

$ ./waf

Π’Ρ€Π΅Π±Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΡ€Π°ΠΊΠΈ ΠΊΠΎΠΈ ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°Π°Ρ‚ Π΄Π΅ΠΊΠ° Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°Π½.

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

Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ (Π·Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° Π°ΠΊΠΎ ја ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ Π²Π°ΡˆΠ°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ scratch, Ρ‚ΠΎΠ³Π°Ρˆ ΠΌΠΎΡ€Π° Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ ΠΎΠ΄ ΠΈΠ·Π³Ρ€Π΅Π±Π°Ρ‚):

$ ./waf --run scratch/myfirst

Π’Ρ€Π΅Π±Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ сличСн ΠΈΠ·Π»Π΅Π·:

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

ОвдС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π΅ΠΊΠ° систСмот Π·Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅ ΠΏΠΎΡ‚Π²Ρ€Π΄ΡƒΠ²Π° Π΄Π΅ΠΊΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½Π° ΠΈ ΠΏΠΎΡ‚ΠΎΠ° ја ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°. Π“Π»Π΅Π΄Π°Ρ‚Π΅ Π΄Π΅ΠΊΠ° записот Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ‚Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Π΅Ρ…ΠΎ ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° Π΄Π΅ΠΊΠ° испратил Π΅Π΄ΠΈΠ½Π΅Ρ‡Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΠ΄ 1024 Π±Π°Ρ˜Ρ‚ΠΈ Π΄ΠΎ сСрвСрот Π·Π° Π΅Ρ…ΠΎ 10.1.1.2. И Π²ΠΈΠ΅ ја Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ‚Π° Π·Π° Π»ΠΎΠ³ΠΈΡ€Π°ΡšΠ΅ Π½Π° сСрвСрот Π·Π° Π΅Ρ…ΠΎ Π·Π° Π΄Π° ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° ΠΏΡ€ΠΈΠΌΠΈΠ» 1024 Π±Π°Ρ˜Ρ‚ΠΈ ΠΎΠ΄ 10.1.1.1. Echo сСрвСрот Ρ‚ΠΈΠ²ΠΊΠΎ Π³ΠΎ Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΡ†ΠΈΡ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π²ΠΎ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚ Π½Π° echo ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Π΄Π΅ΠΊΠ° Π³ΠΎ Π΄ΠΎΠ±ΠΈΠ» ΡΠ²ΠΎΡ˜ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π°Π·Π°Π΄ ΠΎΠ΄ сСрвСрот.

4.3 ns-3 Π˜Π·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄

Π‘Π΅Π³Π° ΠΊΠΎΠ³Π° користСвтС Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΡ†ΠΈΡ‚Π΅ ns-3, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ ΡˆΡ‚ΠΎ ја ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΎΠ²Π°Π° функционалност. ΠΠ°Ρ˜Π½ΠΎΠ²ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΠΈΠ΄ΠΈ Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ Π²Π΅Π± сСрвСр Π½Π° слСдниот Π»ΠΈΠ½ΠΊ: https://gitlab.com/nsnam/ns-3-dev.git. Π’Π°ΠΌΡƒ ќС ја Π²ΠΈΠ΄ΠΈΡ‚Π΅ страницата Π·Π° Ρ€Π΅Π·ΠΈΠΌΠ΅ Π½Π° Mercurial Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ Π΄Ρ€Π²ΠΎ Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ Π½Π° ns-3. На Π²Ρ€Π²ΠΎΡ‚ Π½Π° страницата ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ врски,

summary | shortlog | changelog | graph | tags | files

ΠžΠ΄Π΅Ρ‚Π΅ Π½Π°ΠΏΡ€Π΅Π΄ ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ја врската со Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅. Π’Π°ΠΊΠ° ќС ΠΈΠ·Π³Π»Π΅Π΄Π° Π½Π°Ρ˜Π²ΠΈΡΠΎΠΊΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ наши ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π°:

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

ΠΠ°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π½Π° скрипти сС Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ. Ако ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅, ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ листа Π½Π° ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΈ. Π•Π΄Π½Π° ΠΎΠ΄ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π²ΠΎ ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ упатство - ΠΏΡ€Π²ΠΎ.cc. Ако ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° ΠΏΡ€Π²ΠΎ.cc ќС Π³ΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΎΡ‚ ΡˆΡ‚ΠΎ ΡˆΡ‚ΠΎΡ‚ΡƒΠΊΡƒ Π³ΠΎ Π½Π°ΡƒΡ‡ΠΈΠ²Ρ‚Π΅.

Π˜Π·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π³Π»Π°Π²Π½ΠΎ сС Π½Π°ΠΎΡ“Π° Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ src. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ со ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° врската со Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ дСсно ΠΎΠ΄ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚. Ако ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ src, ќС Π΄ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ листа Π½Π° ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΈ src. Ако ΠΏΠΎΡ‚ΠΎΠ° ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° основниот ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ, ќС Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ листа Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ. ΠŸΡ€Π²Π°Ρ‚Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΡˆΡ‚ΠΎ ќС ја Π²ΠΈΠ΄ΠΈΡ‚Π΅ (Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΡ‚ Π½Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° овој Π²ΠΎΠ΄ΠΈΡ‡) Π΅ ΠΏΡ€Π΅ΠΊΠΈΠ½Π΅.ΠΆ. Ако ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° врската ΠΏΡ€Π΅ΠΊΠΈΠ½Π΅.ΠΆ, ќС Π±ΠΈΠ΄Π΅Ρ‚Π΅ испратСни Π΄ΠΎ ΠΈΠ·Π²ΠΎΡ€Π½Π°Ρ‚Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π·Π° ΠΏΡ€Π΅ΠΊΠΈΠ½Π΅.ΠΆ, кој содрТи корисни ΠΌΠ°ΠΊΡ€ΠΎΠ° Π·Π° ΠΈΠ·Π»Π΅Π· ΠΎΠ΄ скрипти Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ сС ΠΎΡ‚ΠΊΡ€ΠΈΡ˜Π°Ρ‚ Π°Π±Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΈ услови. Π˜Π·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π·Π° ΠΏΠΎΠΌΠΎΡˆΠ½ΠΈΡ†ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π³ΠΈ користСвмС Π²ΠΎ ΠΎΠ²Π° поглавјС ΠΌΠΎΠΆΠ΅ Π΄Π° сС најдС Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ src/Апликации/помошник. Π‘Π»ΠΎΠ±ΠΎΠ΄Π½ΠΎ Ρ•ΠΈΡ€ΠΊΠ°Ρ˜Ρ‚Π΅ ΠΎΠΊΠΎΠ»Ρƒ Π΄Ρ€Π²ΠΎΡ‚ΠΎ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΈ Π·Π° Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅Ρ‚Π΅ ΡˆΡ‚ΠΎ Π΅ ΠΊΠ°Π΄Π΅ ΠΈ Π΄Π° Π³ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ стилот Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ ns-3.

Π˜Π·Π²ΠΎΡ€: www.habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π΄ΠΎΠ²Π΅Ρ€Π»ΠΈΠ² хостинг Π·Π° ΡΠ°Ρ˜Ρ‚ΠΎΠ²ΠΈ со DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚Π°, VPS VDS сСрвСри πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ сигурСн Π²Π΅Π±-хостинг со DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚Π°, VPS VDS сСрвСри | ProHoster