Π£Ρ€ΠΎΠΊ Π·Π° симулатор Π½Π° ΠΌΡ€Π΅ΠΆΠ° 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 ΠΈ UdpEchoServerApplication. ΠšΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‡Π°ΠΊΠ²Π°Ρ‚Π΅, Ρ‚Π΅Π·ΠΈ прилоТСния ΡΡŠΡΡ‚Π°Π²Π»ΡΠ²Π°Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ прилоТСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚/ΡΡŠΡ€Π²ΡŠΡ€, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ ΠΈ Π΅Ρ…ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ.

4.1.3 Канал

Π’ рСалния свят ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ към ΠΌΡ€Π΅ΠΆΠ°. ЧСсто ΠΌΠ΅Π΄ΠΈΠΈΡ‚Π΅, ΠΏΠΎ ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Π΄Π°Π½Π½ΠΈ Π² Ρ‚Π΅Π·ΠΈ ΠΌΡ€Π΅ΠΆΠΈ, сС Π½Π°Ρ€ΠΈΡ‡Π°Ρ‚ ​​канали. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ethernet ΠΊΠ°Π±Π΅Π» Π² стСнСн ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚, Π²ΠΈΠ΅ ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚Π΅ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π° си към Ethernet Π²Ρ€ΡŠΠ·ΠΊΠ°. Π’ симулирания свят ns-3 възСл Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ с ΠΎΠ±Π΅ΠΊΡ‚, прСдставляващ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π΅Π½ ΠΊΠ°Π½Π°Π». Π’ΡƒΠΊ основната абстракция Π½Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ° сС Π½Π°Ρ€ΠΈΡ‡Π° ΠΊΠ°Π½Π°Π» ΠΈ Π΅ прСдставСна Π² C++ ΠΎΡ‚ класа Channel.

Клас КаналКанал прСдоставя ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° взаимодСйствиСто Π½Π° ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° хостовС към тях. ΠšΠ°Π½Π°Π»ΠΈΡ‚Π΅ ΡΡŠΡ‰ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ спСциализирани ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π² смисъл Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅. БпСциализацията Π½Π° ΠΊΠ°Π½Π°Π»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π° Π½Π΅Ρ‰ΠΎ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° просто ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»Π΅Π½ ΠΊΠ°Π½Π°Π» ΠΌΠΎΠΆΠ΅ ΡΡŠΡ‰ΠΎ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π° слоТни Π½Π΅Ρ‰Π° ΠΊΠ°Ρ‚ΠΎ голям Ethernet ΠΊΠΎΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈΠΈΠ·ΠΌΠ΅Ρ€Π½ΠΎ пространство, пълно с прСпятствия Π² случай Π½Π° Π±Π΅Π·ΠΆΠΈΡ‡Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΈ.

Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ спСциализирани вСрсии Π½Π° ΠΊΠ°Π½Π°Π»Π° Π² Ρ‚ΠΎΠ·ΠΈ ΡƒΡ€ΠΎΠΊ, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ CsmaChannelCsmaChannel, PointToPointChannelPointToPointChannel ΠΈ WifiChannelWifiChannel. CsmaChannel, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π° вСрсия Π½Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Π° ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ°, която ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Π° срСда с мноТСствСн Π΄ΠΎΡΡ‚ΡŠΠΏ със сСнзор Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π’ΠΎΠ²Π° Π½ΠΈ Π΄Π°Π²Π° функционалност, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° Ethernet.

4.1.4 ΠœΡ€Π΅ΠΆΠΎΠ²ΠΎ устройство

ΠŸΡ€Π΅Π΄ΠΈ бСшС Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Π°ΠΊΠΎ искатС Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ към ΠΌΡ€Π΅ΠΆΠ°, Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π·Π°ΠΊΡƒΠΏΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΌΡ€Π΅ΠΆΠΎΠ² ΠΊΠ°Π±Π΅Π» ΠΈ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΎ устройство, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΎ (Π² ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π½Π°Ρ‚Π° тСрминология) ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½Π° ΠΊΠ°Ρ€Ρ‚Π°, която Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° бъдС инсталирана Π² ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π°. Ако ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½Π° ΠΊΠ°Ρ€Ρ‚Π° изпълнява някои ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π΅ сС Π½Π°Ρ€ΠΈΡ‡Π°Ρ‚ ​​мрСТови интСрфСйсни ΠΊΠ°Ρ€Ρ‚ΠΈ ΠΈΠ»ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ. ДнСс ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡŽΡ‚Ρ€ΠΈ ΠΈΠ΄Π²Π°Ρ‚ с ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€ Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ² интСрфСйс ΠΈ Π½Π΅ сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ ΠΎΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ устройства.

ΠœΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π° няма Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±Π΅Π· софтуСрСн Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ управлява нСйния Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€. Π’ Unix (ΠΈΠ»ΠΈ Linux) част ΠΎΡ‚ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΎΡ‚ΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅ сС класифицира ΠΊΠ°Ρ‚ΠΎ устройство. Устройствата сС управляват с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ Π½Π° устройства, Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ устройства (NIC) сС управляват с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ устройства (Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ устройства) ΠΈ сС Π½Π°Ρ€ΠΈΡ‡Π°Ρ‚ ​​заСдно ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ устройства (Π½Π΅Ρ‚Π½ΠΈ устройства). Π’ Unix ΠΈ Linux Π½Π°Ρ€ΠΈΡ‡Π°Ρ‚Π΅ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ устройства с ΠΈΠΌΠ΅Π½Π° ΠΊΠ°Ρ‚ΠΎ eth0.

Π’ ns-3 абстракцията Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ устройство ΠΎΠ±Ρ…Π²Π°Ρ‰Π° ΠΊΠ°ΠΊΡ‚ΠΎ софтуСрния Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, Ρ‚Π°ΠΊΠ° ΠΈ модСлирания Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€. Π’ симулацията ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ устройство Π΅ "инсталирано" във възСл, Π·Π° Π΄Π° ΠΌΡƒ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π° с Π΄Ρ€ΡƒΠ³ΠΈ възли Ρ‡Ρ€Π΅Π· ΠΊΠ°Π½Π°Π»ΠΈ. Π’ΠΎΡ‡Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ истински ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€, Π΅Π΄ΠΈΠ½ възСл ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡΠ²ΡŠΡ€Π·Π°Π½ към мноТСство ΠΊΠ°Π½Π°Π»ΠΈ Ρ‡Ρ€Π΅Π· мноТСство устройства NetDevices.

ΠœΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° абстракция Π½Π° Π΄Π°Π΄Π΅Π½ΠΎ устройство Π΅ прСдставСна Π² C++ ΠΎΡ‚ класа NetDevice. Клас NetDevice прСдоставя ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ към ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Node ΠΈ Channel; ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС спСциализира ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π² смисъла Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅. Π’ Ρ‚ΠΎΠ·ΠΈ ΡƒΡ€ΠΎΠΊ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ няколко спСциализирани вСрсии Π½Π° NetDevice, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΈ CsmaNetDevice, PointToPointNetDevice ΠΈ WifiNetDevice. Π’ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ Ethernet мрСТовият Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с ΠΌΡ€Π΅ΠΆΠ° Ethernet, CsmaNetDevice ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с CsmaChannel, PointToPointNetDevice ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с PointToPointChannelИ WifiNetDevice - ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с WifiChannel.

4.1.5 Π’ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΡ†ΠΈ

Π’ Ρ€Π΅Π°Π»Π½Π° ΠΌΡ€Π΅ΠΆΠ° Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ хост ΠΊΠΎΠΌΠΏΡŽΡ‚Ρ€ΠΈ с Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ (ΠΈΠ»ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ) ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ. Π’ ns-3 Π±ΠΈΡ…ΠΌΠ΅ ΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Π΅ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ възли с ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π΅Π½ΠΈ NetDevices. Π’ голяма симулирана ΠΌΡ€Π΅ΠΆΠ° Ρ‰Π΅ трябва Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π’ΡŠΠ·Π΅Π», NetDevice ΠΈ Канал.

ΠžΡ‚ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° NetDevices към възли, NetDevices към Π²Ρ€ΡŠΠ·ΠΊΠΈ, присвояванС Π½Π° IP адрСси ΠΈ Ρ‚.Π½. Π² ns-3 са чСсто срСщана Π·Π°Π΄Π°Ρ‡Π°, Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π° възмоТно Π½Π°ΠΉ-лСсно, Π½ΠΈΠ΅ прСдоставямС Ρ‚Π°ΠΊΠ° Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΡ†ΠΈ. НапримСр, Π·Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ NetDevice, трябва Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ns-3 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ядрото, Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ MAC адрСс, Π΄Π° инсталиратС ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ устройство Π² Node, Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ протоколния стСк Π½Π° възСла ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ NetDevice към ΠΊΠ°Π½Π°Π»Π°. ΠžΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π° Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° мноТСство устройства към ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΊΠΎΠ²ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΈ слСд Ρ‚ΠΎΠ²Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈΡ‚Π΅ ΠΌΡ€Π΅ΠΆΠΈ Π² ΠΌΡ€Π΅ΠΆΠ° Π½Π° Internetworks. НиС прСдоставямС Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ Ρ‚Π΅Π·ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² лСсСн Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΌΠΎΠ΄Π΅Π» Π·Π° вашС удобство.

4.2 ΠŸΡŠΡ€Π²ΠΈ ns-3 скрипт

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

Ако няматС Ρ‚Π°ΠΊΠ°Π²Π° дирСктория, Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π½Π΅ стС ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° дирСктория ΠΏΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° вСрсията Π·Π° освобоТдаванС Π½Π° ns-3, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠ°:
$ ./waf configure β€”build-profile=release β€”out=build/release,
$ ./waf компилация

Ρ‚Π°ΠΌ трябва Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ структура Π½Π° дирСктория, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° слСдната:

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

ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² дирСкторията ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ/ΡƒΡ€ΠΎΠΊ. Врябва Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π° Ρ‚Π°ΠΌ, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ ΠΏΡŠΡ€Π²ΠΎ.cc. Π’ΠΎΠ²Π° Π΅ скрипт, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ създадС проста Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²Π° възСла ΠΈ Ρ‰Π΅ ΠΏΡ€Π΅Π΄Π°Π΄Π΅ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅. НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ скрипт Ρ€Π΅Π΄ ΠΏΠΎ Ρ€Π΅Π΄; Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ first.cc Π² любимия си Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€.

4.2.1 Π¨Π°Π±Π»ΠΎΠ½Π΅Π½ ΠΊΠΎΠ΄
ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Ρ€Π΅Π΄ във Ρ„Π°ΠΉΠ»Π° Π΅ Ρ€Π΅Π΄ΡŠΡ‚ Π·Π° Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Emacs. Π’ΠΎΠΉ ΠΊΠ°Π·Π²Π° Π½Π° emacs Π·Π° ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅ (стил Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅), ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π² нашия ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄.

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

Π’ΠΎΠ²Π° Π²ΠΈΠ½Π°Π³ΠΈ Π΅ доста ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ² Π²ΡŠΠΏΡ€ΠΎΡ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ трябва Π΄Π° изясним Π½Π΅Ρ‰Π°Ρ‚Π°, Π·Π° Π΄Π° Π³ΠΎ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ Π²Π΅Π΄Π½Π°Π³Π°. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ns-3, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Π΅ ΠΏΡ€ΠΈΠ΅Π» стил Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° отговаря цСлият Π΄ΠΎΠΏΡ€ΠΈΠ½Π΅ΡΡŠΠ» ΠΊΠΎΠ΄. Ако искатС Π΄Π° допринСсСтС с ΠΊΠΎΠ΄Π° си Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка Ρ‰Π΅ трябва Π΄Π° сС ΡΡŠΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ със стандарта Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ ns-3, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ описано във Ρ„Π°ΠΉΠ»Π° doc/codingstd.txt ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡƒΠ΅Π± страницата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: 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).

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

Π—Π° Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ΠΌ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π½Π° скриптовС Π½Π° високо Π½ΠΈΠ²ΠΎ Π΄Π° сС справят с голСмия Π±Ρ€ΠΎΠΉ Π·Π°Π³Π»Π°Π²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² систСмата, Π½ΠΈΠ΅ Π³ΠΈ Π³Ρ€ΡƒΠΏΠΈΡ€Π°ΠΌΠ΅ спорСд ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° ΠΈΠΌ Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡΠΌΠ΅ Π΅Π΄ΠΈΠ½ Π·Π°Π³Π»Π°Π²Π΅Π½ Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ рСкурсивно Ρ‰Π΅ Π·Π°Ρ€Π΅Π΄ΠΈ всички Π·Π°Π³Π»Π°Π²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ». ВмСсто Π΄Π° сС Π½Π°Π»Π°Π³Π° Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠ²Π° Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π°Π³Π»Π°Π²ΠΊΠ° Π²ΠΈ трябва ΠΈ Π΅Π²Π΅Π½Ρ‚ΡƒΠ°Π»Π½ΠΎ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ правилния списък със зависимости, Π½ΠΈΠ΅ Π²ΠΈ Π΄Π°Π²Π°ΠΌΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ Π³Ρ€ΡƒΠΏΠ° ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с голяма дСтайлност. Π’ΠΎΠ²Π° Π½Π΅ Π΅ Π½Π°ΠΉ-СфСктивният ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π½ΠΎ със сигурност ΠΏΡ€Π°Π²ΠΈ писанСто Π½Π° скриптовС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-лСсно.

ВсСки ΠΎΡ‚ ns-3 Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ сС поставя Π² дирСктория, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° ns3 (поддирСктория Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅), Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСса Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅. Π€Π°ΠΉΠ» ns3/core-module.h отговаря Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° ns-3, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² указатСля src/ядро във вСрсията, която стС инсталирали. Π’ списъка Π½Π° Ρ‚Π°Π·ΠΈ дирСктория Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ голям Π±Ρ€ΠΎΠΉ Π·Π°Π³Π»Π°Π²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ сглобяванСто, Waf поставя ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈ Π·Π°Π³Π»Π°Π²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² дирСкторията ns3 Π² поддирСктория ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅/отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ

Ако няматС Ρ‚Π°ΠΊΠ°Π²Π° дирСктория, Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π½Π΅ стС ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° дирСктория ΠΏΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° вСрсията Π·Π° освобоТдаванС Π½Π° ns-3, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠ°:
$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf компилация
ΠΈΠ»ΠΈ
$ ./waf configure --build-profile=optimized --out=build/optimized
$ ./waf компилация

ΠΈΠ»ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅/ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅, Π² зависимост ΠΎΡ‚ Π²Π°ΡˆΠ°Ρ‚Π° конфигурация. Waf ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‰Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Ρ„Π°ΠΉΠ» Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ» Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° всички ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈ Π·Π°Π³Π»Π°Π²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Въй ΠΊΠ°Ρ‚ΠΎ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, слСдватС Ρ€Π΅Π»ΠΈΠ³ΠΈΠΎΠ·Π½ΠΎ Ρ‚ΠΎΠ²Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ, Π²ΠΈΠ΅ Π²Π΅Ρ‡Π΅ стС Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ

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

Π·Π° Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄Π° изпълнява ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΈ тСстовС. Π’ΠΈΠ΅ ΡΡŠΡ‰ΠΎ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…Ρ‚Π΅

$ ./waf

Π·Π° сглобяванС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊΠ° Ρ‡Π΅ сСга, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π² дирСкторията ../../build/debug/ns3, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚Π°ΠΌ Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅, Π½Π°Ρ€Π΅Π΄ с Π΄Ρ€ΡƒΠ³ΠΈ, Π·Π°Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π°, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ ΠΏΠΎ-Π³ΠΎΡ€Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅Ρ‚Π΅, Ρ‡Π΅ Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ всички ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡ‚ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

4.2.3 ns3 пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°

Π‘Π»Π΅Π΄Π²Π°Ρ‰ Ρ€Π΅Π΄ Π² скрипта ΠΏΡŠΡ€Π²ΠΎ.cc Π΅ дСкларация Π½Π° пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°.

using namespace ns3;

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ns-3 Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π² пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π½Π° C++, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΎ ns3. Π’ΠΎΠ²Π° Π³Ρ€ΡƒΠΏΠΈΡ€Π° всички ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ns-3 Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΎΠ±Ρ…Π²Π°Ρ‚ извън Π³Π»ΠΎΠ±Π°Π»Π½ΠΎΡ‚ΠΎ пространство Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ сС надявамС Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ с Π΄Ρ€ΡƒΠ³ ΠΊΠΎΠ΄. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° C++ въвСТда пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ns-3 Π² тСкущия (Π³Π»ΠΎΠ±Π°Π»Π΅Π½) Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½ Ρ€Π΅Π³ΠΈΠΎΠ½. Π’ΠΎΠ²Π° Π΅ изискан Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ слСд Ρ‚Π°Π·ΠΈ дСкларация няма Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π·Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ns3::scope ΠΏΡ€Π΅Π΄ΠΈ цСлия си ns-3 ΠΊΠΎΠ΄, Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅. Ако Π½Π΅ стС Π·Π°ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ с пространствата ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, Π²ΠΈΠΆΡ‚Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ всСки ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ C++ ΠΈ сравнСтС пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ns3, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈ дСкларацията std using namespace std; Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с изходния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Cout ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ.

4.2.4 РСгистриранС

БлСдващият Ρ€Π΅Π΄ Π½Π° скрипта Π΅:

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π° изявлСниС ΠΊΠ°Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ място Π·Π° обсъТданС Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° систСма Π·Π° докумСнтация ΠšΠΈΡΠ»ΠΎΡ€ΠΎΠ΄. Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ уСбсайта Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ns-3, Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ° ДокумСнтация Π² Π»Π΅Π½Ρ‚Π°Ρ‚Π° Π·Π° навигация. Ако Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ Ρ‚Π°Π·ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠ°, Ρ‰Π΅ Π±ΡŠΠ΄Π΅Ρ‚Π΅ ΠΎΡ‚Π²Π΅Π΄Π΅Π½ΠΈ Π΄ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° страница с докумСнтация. Има Π²Ρ€ΡŠΠ·ΠΊΠ° β€žΠΠ°ΠΉ-Π½ΠΎΠ²Π° Π²Π΅Ρ€ΡΠΈΡβ€œ, която Ρ‰Π΅ Π²ΠΈ ΠΎΡ‚Π²Π΅Π΄Π΅ Π΄ΠΎ докумСнтацията Π·Π° Π½Π°ΠΉ-Π½ΠΎΠ²Π°Ρ‚Π° стабилна вСрсия Π½Π° ns-3. Ако ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° β€žΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ Π½Π° APIβ€œ, Ρ‰Π΅ Π±ΡŠΠ΄Π΅Ρ‚Π΅ ΠΎΡ‚Π²Π΅Π΄Π΅Π½ΠΈ Π΄ΠΎ страницата с докумСнтация Π½Π° API ns-3.

Π’ лявата част Π½Π° страницата Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΎ прСдставянС Π½Π° структурата Π½Π° докумСнтацията. Π”ΠΎΠ±Ρ€ΠΎ място Π·Π° Π½Π°Ρ‡Π°Π»ΠΎ Π΅ "ΠΊΠ½ΠΈΠ³Π°Ρ‚Π°" Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ ns-3 Π² Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΡ‚ΠΎ Π΄ΡŠΡ€Π²ΠΎ Π½Π° ns-3. Ако Ρ€Π°Π·ΠΊΡ€ΠΈΠ΅Ρ‚Π΅ ΠœΠΎΠ΄ΡƒΠ»ΠΈ, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ списък с докумСнтация Π·Π° ns-3 ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. ΠšΠ°ΠΊΡ‚ΠΎ бСшС обсъдСно ΠΏΠΎ-Π³ΠΎΡ€Π΅, концСпцията Π·Π° ΠΌΠΎΠ΄ΡƒΠ» Ρ‚ΡƒΠΊ Π΅ пряко ΡΠ²ΡŠΡ€Π·Π°Π½Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² ΠΌΠΎΠ΄ΡƒΠ»Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅. ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚Π° Π·Π° рСгистриранС ns-3 сС обсъТда Π² Ρ€Π°Π·Π΄Π΅Π» ИзползванС Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° Π·Π° рСгистриранС, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‰Π΅ сС Π²ΡŠΡ€Π½Π΅ΠΌ към Π½Π΅Π³ΠΎ ΠΏΠΎ-късно Π² Ρ‚ΠΎΠ·ΠΈ ΡƒΡ€ΠΎΠΊ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ Π·Π° Π³ΠΎΡ€Π½ΠΎΡ‚ΠΎ Ρ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈΠ΅, ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π° Π―Π΄Ρ€ΠΎΠΈ слСд Ρ‚ΠΎΠ²Π° отварянС Π½Π° ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ страницата Π’Π»ΠΈΠ·Π°Π½Π΅. ΠšΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ Π’Π»ΠΈΠ·Π°Π½Π΅.

Π‘Π΅Π³Π° трябва Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°Ρ‚Π΅ докумСнтацията ΠšΠΈΡΠ»ΠΎΡ€ΠΎΠ΄ Π·Π° ΠΌΠΎΠ΄ΡƒΠ» Π’Π»ΠΈΠ·Π°Π½Π΅. Π’ списъка с макроси Π² Π³ΠΎΡ€Π½Π°Ρ‚Π° част Π½Π° страницата Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ запис Π·Π° NS_LOG_COMPONENT_DEFINE. ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°, Π½Π΅ забравяйтС Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ β€žΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡ‚ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅β€œ Π½Π° рСгистрационния ΠΌΠΎΠ΄ΡƒΠ», Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ цяло. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅Π²ΡŠΡ€Ρ‚ΠΈΡ‚Π΅ Π½Π°Π΄ΠΎΠ»Ρƒ ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ β€žΠžΡ‰Π΅...β€œ ΠΏΠΎΠ΄ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π°.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΎΠ±Ρ‰Π° прСдстава ΠΊΠ°ΠΊΠ²ΠΎ сС случва, ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€Π΅Π΄ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ докумСнтацията Π·Π° конкрСтния NS_LOG_COMPONENT_DEFINE. Няма Π΄Π° Π΄ΡƒΠ±Π»ΠΈΡ€Π°ΠΌ докумСнтацията Ρ‚ΡƒΠΊ, Π½ΠΎ Π·Π° Π΄Π° обобщя, Ρ‚ΠΎΠ·ΠΈ Ρ€Π΅Π΄ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π·Π° рСгистрация, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ FirstScriptExample, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΈΠ»ΠΈ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΎΡ‚ΠΎ рСгистриранС Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Ρ‡Ρ€Π΅Π· ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠ° към ΠΈΠΌΠ΅.

4.2.5 Основна функция

Π’ слСдващитС Ρ€Π΅Π΄ΠΎΠ²Π΅ Π½Π° скрипта Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅,

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

Π’ΠΎΠ²Π° Π΅ просто дСкларация Π½Π° основната функция Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° (скрипт). ΠšΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ всяка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π½Π° C++, трябва Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ основна функция, тя сС изпълнява ΠΏΡŠΡ€Π²ΠΎ. Π’ΡƒΠΊ няма Π½ΠΈΡ‰ΠΎ особСно. Π’Π°ΡˆΠΈΡΡ‚ ns-3 скрипт Π΅ просто C++ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. БлСдният Ρ€Π΅Π΄ Π·Π°Π΄Π°Π²Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° способност Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° 1 наносСкунда, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅:

Time::SetResolution (Time::NS);

Π’Ρ€Π΅ΠΌΠ΅Π²Π°Ρ‚Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π½Π° способност ΠΈΠ»ΠΈ просто Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° способност Π΅ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠ°Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π²Π° стойност, която ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° (Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠ°Ρ‚Π° прСдставима Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π°). ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° способност Ρ‚ΠΎΡ‡Π½ΠΎ вСднъТ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ осигурява Ρ‚Π°Π·ΠΈ Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚, консумира ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ слСд ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° способност Π΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Π·Π°Π΄Π°Π΄Π΅Π½Π°, Π½ΠΈΠ΅ освобоТдавамС ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, прСдотвратявайки ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. (Ако Π½Π΅ Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° способност, тя ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‰Π΅ бъдС Π΅Π΄Π½Π° наносСкунда ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Ρ‰Π΅ бъдС освободСна, ΠΊΠΎΠ³Π°Ρ‚ΠΎ симулацията Π·Π°ΠΏΠΎΡ‡Π½Π΅.)

Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Π΄Π²Π° Ρ€Π΅Π΄Π° ΠΎΡ‚ скрипт сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π·Π° рСгистриранС, ΠΊΠΎΠΈΡ‚ΠΎ са Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Π² прилоТСния EchoClient ΠΈ EchoServer:

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

Ако ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ докумСнтацията Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Logging, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ ΠΈΠΌΠ° няколко Π½ΠΈΠ²Π° Π½Π° рСгистриранС/подробност, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π·Π° всСки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Π’Π΅Π·ΠΈ Π΄Π²Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ позволяват рСгистриранС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π΄ΠΎ Π½ΠΈΠ²ΠΎ INFO Π·Π° Π΅Ρ…ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. На Ρ‚ΠΎΠ²Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π²Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° симулация.

Π‘Π΅Π³Π° Ρ‰Π΅ сС Π·Π°Π΅ΠΌΠ΅ΠΌ със ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° топологията ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° симулацията. ИзползвамС ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π·Π° топология, Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚Π°Π·ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° възмоТно Π½Π°ΠΉ-лСсна.

4.2.6 ИзползванС Π½Π° асистСнти Π·Π° топология

Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΈΡ‚Π΅ Π΄Π²Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ Π² нашия скрипт Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‰Π΅ ΡΡŠΠ·Π΄Π°Π΄Π°Ρ‚ ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Node ns-3, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ прСдставляват ΠΊΠΎΠΌΠΏΡŽΡ‚Ρ€ΠΈΡ‚Π΅ Π² симулацията.

NodeContainer nodes;
nodes.Create (2);

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ, Π½Π΅ΠΊΠ° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ докумСнтацията Π·Π° класа NodeContainer. Π”Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° стигнСтС Π΄ΠΎ докумСнтацията Π·Π° Π΄Π°Π΄Π΅Π½ клас Π΅ Ρ‡Ρ€Π΅Π· Ρ€Π°Π·Π΄Π΅Π»Π° КласовС Π½Π° страници ΠšΠΈΡΠ»ΠΎΡ€ΠΎΠ΄. Ако Π²Π΅Ρ‡Π΅ стС ΠΎΡ‚Π²ΠΎΡ€ΠΈΠ»ΠΈ Doxygen, просто ΠΏΡ€Π΅Π²ΡŠΡ€Ρ‚Π΅Ρ‚Π΅ Π½Π°Π³ΠΎΡ€Π΅ Π΄ΠΎ Π³ΠΎΡ€Π½Π°Ρ‚Π° част Π½Π° страницата ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»Π° КласовС. Врябва Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΎΠ² Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈ, Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Π΅ списък с класовС. Под Ρ‚ΠΎΠ·ΠΈ Ρ€Π°Π·Π΄Π΅Π» Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ списък с всички класовС ns-3. ΠŸΡ€Π΅Π²ΡŠΡ€Ρ‚Π΅Ρ‚Π΅ Π½Π°Π΄ΠΎΠ»Ρƒ Π΄ΠΎ ns3::NodeContainer. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ клас, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π³ΠΎ, Π·Π° Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π΄ΠΎ докумСнтацията Π·Π° класа.

ΠšΠ°ΠΊΡ‚ΠΎ си спомнямС, Π΅Π΄Π½Π° ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ абстракции Π΅ Π²ΡŠΠ·Π΅Π»ΡŠΡ‚. Π’ΠΎΠΉ прСдставлява ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π°, към ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅Ρ‰Π° ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π½ΠΈ стСковС, прилоТСния ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ. АсистСнт ΠΏΠΎ топология NodeContainer прСдоставя ΡƒΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° създаванС, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ всякакви ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π’ΡŠΠ·Π΅Π», ΠΊΠΎΠΉΡ‚ΠΎ създавамС, Π·Π° Π΄Π° стартирамС симулацията. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Ρ€Π΅Π΄ ΠΏΠΎ-Π³ΠΎΡ€Π΅ просто Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π° NodeContainer, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°Ρ€ΠΈΡ‡Π°ΠΌΠ΅ възли. Вторият Ρ€Π΅Π΄ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Create Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° nodes ΠΈ ΠΌΠΎΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π΄Π° създадС Π΄Π²Π° възСла. ΠšΠ°ΠΊΡ‚ΠΎ Π΅ описано Π² ΠšΠΈΡΠ»ΠΎΡ€ΠΎΠ΄, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ изисква систСмата ns-3 Π΄Π° създадС Π΄Π²Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Π’ΡŠΠ·Π΅Π» ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ към Ρ‚Π΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎ.

Π’ΡŠΠ·Π»ΠΈΡ‚Π΅, създадСни Π² скрипта, всС ΠΎΡ‰Π΅ Π½Π΅ правят Π½ΠΈΡ‰ΠΎ. Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° Π² ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° топологията Π΅ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ възли към ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Най-простата Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΠΌΡ€Π΅ΠΆΠ°, която ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌΠ΅, Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²Π° възСла. Π‘Π΅Π³Π° Ρ‰Π΅ създадСм Ρ‚Π°ΠΊΠ°Π²Π° Π²Ρ€ΡŠΠ·ΠΊΠ°.

PointToPointHelper

БъздавамС Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠ·Π½Π°Ρ‚ ΠΌΠΎΠ΄Π΅Π», ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΠΎΠΌΠΎΡ‰Π΅Π½ ΠΎΠ±Π΅ΠΊΡ‚ Π½Π° топология, Π·Π° Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ниско Π½ΠΈΠ²ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°. Π‘ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅ си, Ρ‡Π΅ Π½Π°ΡˆΠΈΡ‚Π΅ Π΄Π²Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ абстракции NetDevice ΠΈ Канал. Π’ рСалния свят Ρ‚Π΅Π·ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‚ Π½Π° ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°Π±Π΅Π»ΠΈ. ОбикновСно Ρ‚Π΅Π·ΠΈ Π΄Π²Π΅ Π½Π΅Ρ‰Π° са тясно ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ Π΅Π΄Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΎ ΠΈ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° сподСлянС Π½Π° устройства, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ethernet ΠΏΠΎ Π±Π΅Π·ΠΆΠΈΡ‡Π΅Π½ ΠΊΠ°Π½Π°Π». ΠΠ°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΡ†ΠΈ Π² топологията слСдват Ρ‚Π°Π·ΠΈ тясна Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΈ Π·Π°Ρ‚ΠΎΠ²Π° Π²ΠΈΠ΅ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ‚ Π² Ρ‚ΠΎΠ·ΠΈ сцСнарий PointToPointHelper Π·Π° настройка ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ns-3 PointToPointNetDevice ΠΈ PointToPointChannel. Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ Ρ€Π΅Π΄Π° Π² скрипта:

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

ΠŸΡŠΡ€Π²Π° линия,

PointToPointHelper pointToPoint;

създава СкзСмпляр Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ Π² стСка PointToPointHelper. ΠžΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π½Π°ΠΉ-високо Π½ΠΈΠ²ΠΎ слСдният Ρ€Π΅Π΄,

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

ΠΊΠ°Π·Π²Π° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° PointToPointHelper ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ стойността "5 Mbit/s" (ΠΏΠ΅Ρ‚ ΠΌΠ΅Π³Π°Π±ΠΈΡ‚Π° Π² сСкунда) ΠΊΠ°Ρ‚ΠΎ "Бкорост Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅".

ΠžΡ‚ ΠΏΠΎ-ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, Π½ΠΈΠ·ΡŠΡ‚ "DataRate" ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°Ρ€ΠΈΡ‡Π°ΠΌΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ PointToPointNetDevice. Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ΠšΠΈΡΠ»ΠΎΡ€ΠΎΠ΄ Π·Π° клас ns3::PointToPointNetDevice ΠΈ Π² докумСнтацията към ΠΌΠ΅Ρ‚ΠΎΠ΄Π° GetTypeId Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ списък с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π·Π° устройството. Π‘Ρ€Π΅Π΄ тях Ρ‰Π΅ бъдС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ β€žΠ‘ΠΊΠΎΡ€ΠΎΡΡ‚ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅" ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΈ ΠΎΡ‚ потрСбитСля ns-3 ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈΠΌΠ°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ. ИзползвамС Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° лСсно настройванС Π½Π° симулацията Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅, ΠΊΠ°ΠΊΡ‚ΠΎ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² слСдващия Ρ€Π°Π·Π΄Π΅Π».

ПодобСн Π½Π° "Бкорост Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅" Π² PointToPointNetDevice Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° "Delay", ΡΠ²ΡŠΡ€Π·Π°Π½ с PointToPointChannel. ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° линия

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

Π’ΠΎΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈ PointToPointHelper ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ стойността "2 ms" (Π΄Π²Π΅ милисСкунди) ΠΊΠ°Ρ‚ΠΎ стойност Π½Π° забавянС Π½Π° разпространСниСто Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°, която впослСдствиС създава.

NetDeviceContainer

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠΌΠ°ΠΌΠ΅ Π² сцСнария NodeContainer, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π΄Π²Π° възСла. НиС ΠΈΠΌΠ°ΠΌΠ΅ PointToPointHelper, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π·Π° създаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ PointToPointNetDevices ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ PointToPointChannel. Π’ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ помощния ΠΎΠ±Π΅ΠΊΡ‚ Π½Π° топологията NodeContainer Π·Π° създаванС Π½Π° възли, Ρ‰Π΅ ΠΏΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ PointToPointHelper ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π° Π·Π° нас, ΡΠ²ΡŠΡ€Π·Π°Π½Π° със ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈ инсталиранСто Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ устройства. ИмамС Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ списък Π½Π° всички създадСни ΠΎΠ±Π΅ΠΊΡ‚ΠΈ NetDevice, Π·Π°Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ NetDeviceContainer Π΄Π° Π³ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ ΠΏΠΎ ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ NodeContainer Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅. Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΈΡ‚Π΅ Π΄Π²Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄,

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

пълна настройка Π½Π° устройството ΠΈ ΠΊΠ°Π½Π°Π»Π°. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Ρ€Π΅Π΄ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° устройството, спомСнат ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π° вторият Π²ΡŠΡ€ΡˆΠΈ основната Ρ€Π°Π±ΠΎΡ‚Π°. ΠœΠ΅Ρ‚ΠΎΠ΄ инсталирам ΠΎΠ±Π΅ΠΊΡ‚ PointToPointHelper ΠΏΡ€ΠΈΠ΅ΠΌΠ° NodeContainer ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€. Π’ΡŠΡ‚Ρ€Π΅ NetDeviceContainer Π·Π° всСки възСл, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² NodeContainer сС създава (Π·Π° комуникация ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° трябва Π΄Π° ΠΈΠΌΠ° Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π²Π΅) PointToPointNetDevice сС създава ΠΈ записва Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° устройството. PointToPointChannel Π΅ създадСн ΠΈ към Π½Π΅Π³ΠΎ са ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ΅Π½ΠΈ Π΄Π²Π΅ PointToPointNetDevices. Π‘Π»Π΅Π΄ създаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΡ‚Π΅, ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈ Π² PointToPointHelper, сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ Π² ΡΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΈΡ‚Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ.

Π‘Π»Π΅Π΄ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ pointToPoint.Install (възли) Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° възСла, всСки с инсталирано ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ устройство ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈ Π΅Π΄Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ тях. И Π΄Π²Π΅Ρ‚Π΅ устройства Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Π΄Π°Π½Π½ΠΈ със скорост ΠΎΡ‚ ΠΏΠ΅Ρ‚ ΠΌΠ΅Π³Π°Π±ΠΈΡ‚Π° Π² сСкунда със забавянС Π½Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ Π΄Π²Π΅ милисСкунди ΠΏΠΎ ΠΊΠ°Π½Π°Π»Π°.

InternetStackHelper

Π’Π΅Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ възли ΠΈ устройства, Π½ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ възли нямат инсталирани ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π½ΠΈ стСковС. Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΈΡ‚Π΅ Π΄Π²Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ Ρ‰Π΅ сС ΠΏΠΎΠ³Ρ€ΠΈΠΆΠ°Ρ‚ Π·Π° Ρ‚ΠΎΠ²Π°.

InternetStackHelper stack;
stack.Install (nodes);

InternetStackHelper - Π΅ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ Π·Π° топология Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ стСковС, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° PointToPointHelper Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ устройства ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°. ΠœΠ΅Ρ‚ΠΎΠ΄ инсталирам ΠΏΡ€ΠΈΠ΅ΠΌΠ° NodeContainer ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС изпълни, Ρ‚ΠΎΠΉ Ρ‰Π΅ инсталира ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ стСка (TCP, UDP, IP ΠΈ Ρ‚.Π½.) Π½Π° всСки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅Π½ възСл.

IPv4AddressHelper

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° трябва Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ Π½Π°ΡˆΠΈΡ‚Π΅ устройства с IP адрСси. НиС прСдоставямС асистСнт Π·Π° топология Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° IP адрСси. ЕдинствСният API, Π²ΠΈΠ΄ΠΈΠΌ Π·Π° потрСбитСля, Π΅ настройката Π½Π° основния IP адрСс ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° маска, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° дСйствитСлното Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° адрСситС (Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ Π½Π° ΠΏΠΎ-ниско Π½ΠΈΠ²ΠΎ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠ°). Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΈΡ‚Π΅ Π΄Π²Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ Π² нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ скрипт ΠΏΡŠΡ€Π²ΠΎ.cc,

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

Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°ΠΉΡ‚Π΅ помощния ΠΎΠ±Π΅ΠΊΡ‚ Π½Π° адрСса ΠΈ ΠΌΡƒ ΠΊΠ°ΠΆΠ΅Ρ‚Π΅, Ρ‡Π΅ трябва Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° разпрСдСля IP адрСси ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠ° 10.1.1.0, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΡ‚ΠΎΠ²Π°Ρ‚Π° маска 255.255.255.0 Π·Π° опрСдСлянС. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ‚Π΅ адрСси Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΈ Ρ‰Π΅ нарастват ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ адрСс ΠΎΡ‚ Ρ‚Π°Π·ΠΈ Π±Π°Π·Π° Ρ‰Π΅ бъдС 10.1.1.1, слСд Ρ‚ΠΎΠ²Π° 10.1.1.2 ΠΈ Ρ‚.Π½. Π’ дСйствитСлност, Π½Π° ниско Π½ΠΈΠ²ΠΎ, систСмата ns-3 запомня всички Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ IP адрСси ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Ρ„Π°Ρ‚Π°Π»Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°, Π°ΠΊΠΎ случайно ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ситуация, ΠΏΡ€ΠΈ която Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ адрСс сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ (ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Ρ‚Π°Π·ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ° Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Π° Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ).

БлСдният Ρ€Π΅Π΄ ΠΊΠΎΠ΄,

Ipv4InterfaceContainer interfaces = address.Assign (devices);

ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° дСйствитСлното присвояванС Π½Π° адрСса. Π’ ns-3 установявамС Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ IP адрСс ΠΈ устройство, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΎ ΠΎΠ±Π΅ΠΊΡ‚Π° IPv4 интСрфСйс. Π’ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ понякога сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ‚ списък с ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ устройства, създадСн ΠΎΡ‚ асистСнта Π·Π° ΠΏΠΎ-късна ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°, понякога сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ‚ списък с ΠΎΠ±Π΅ΠΊΡ‚ΠΈ IPv4 интСрфСйс. IPv4InterfaceContainer прСдоставя Ρ‚Π°Π·ΠΈ функционалност.

Π˜Π·Π³Ρ€Π°Π΄ΠΈΡ…ΠΌΠ΅ ΠΌΡ€Π΅ΠΆΠ° ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° с инсталирани стСковС ΠΈ присвоСни IP адрСси. Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ прилоТСния във всСки възСл, Π·Π° Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

4.2.7 ИзползванС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ

Π”Ρ€ΡƒΠ³Π° ΠΎΡ‚ основнитС абстракции Π½Π° систСмата ns-3 Π΅ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). Π’ Ρ‚ΠΎΠ·ΠΈ сцСнарий ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄Π²Π΅ спСциализации ΠΎΡ‚ Π±Π°Π·ΠΎΠ² клас ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ns-3 сС ΠΎΠ±Π°Π΄ΠΈ UdpEchoServerApplication ΠΈ UdpEchoClientApplication. ΠšΠ°ΠΊΡ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ‚Π΅ случаи, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ спомагатСлни ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ. Π’ΡƒΠΊ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ UdpEchoServerHelper ΠΈ UdpEchoClientHelper ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° улСснят ΠΆΠΈΠ²ΠΎΡ‚Π° Π½ΠΈ.

UdpEchoServerHelper

Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΊΠΎΠ΄ Π² нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ скрипт first.cc сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° UDP Π΅Ρ…ΠΎ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ ΠΏΠΎ-Ρ€Π°Π½ΠΎ.

UdpEchoServerHelper echoServer (9);

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

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Ρ€Π΅Π΄ ΠΊΠΎΠ΄ Π² горния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ създава UdpEchoServerHelper. ΠšΠ°ΠΊΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ самото ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° ΠΎΠ±Π΅ΠΊΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° създавамС Ρ€Π΅Π°Π»Π½ΠΈ прилоТСния. Π•Π΄Π½Π° ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈ Π΅ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π΄Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ Π½Π° конструктора Π½Π° помощния ΠΎΠ±Π΅ΠΊΡ‚. Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΡŠΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½ΠΈΡ‰ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, освСн Π°ΠΊΠΎ Π½Π΅ ΠΌΡƒ бъдС Π΄Π°Π΄Π΅Π½ Π½ΠΎΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Π°, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Ρ‰Π΅ ΡΠ»ΡƒΡˆΠ° Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Ρ‚ΠΎΠ·ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ΡΡŠΡ‰ΠΎ трябва Π΄Π° бъдС извСстСн Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° ΠΏΠΎΡ€Ρ‚Π° Π½Π° помощния конструктор. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ΡŠΡ‚ ΠΎΡ‚ своя страна просто Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ SetAttribute с ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½Π°Ρ‚Π° стойност. По-късно, Π°ΠΊΠΎ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ SetAttribute, Π·Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° стойност Π·Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Port.

Подобно Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ спомагатСлни ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΎΠ±Π΅ΠΊΡ‚ΡŠΡ‚ UdpEchoServerHelper ΠΈΠΌΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ инсталирам. Π˜Π·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ създава основно ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π΅Ρ…ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ Π³ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π° с хоста. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ инсталирам ΠΏΡ€ΠΈΠ΅ΠΌΠ° NodeContainer ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ ΡΡŠΡ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ инсталирам ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ смС Π²ΠΈΠΆΠ΄Π°Π»ΠΈ.

НСявното ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° C++, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ Ρ‚ΡƒΠΊ, Π²Π·Π΅ΠΌΠ° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° node.Get(1) (ΠΊΠΎΠΉΡ‚ΠΎ Π²Ρ€ΡŠΡ‰Π° ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π» към ΠΎΠ±Π΅ΠΊΡ‚Π° Π½Π° възСла - Ptr ) ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² конструктора Π·Π° анонимния ΠΎΠ±Π΅ΠΊΡ‚ NodeContainerΠΊΠΎΠΉΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π΅Π΄Π°Π²Π° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° инсталирам. Ако Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ΄Π° Π½Π° C++ ΠΊΠΎΠΉ подпис Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° ΠΈ изпълнява, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΠΎΡ‚ΡŠΡ€ΡΠ΅Ρ‚Π΅ срСд нСявнитС прСобразувания.

Π‘Π΅Π³Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π° echoServer.Install Π½Π° ΠΏΡŠΡ‚ Π΄Π° инсталиратС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ UdpEchoServerApplication Π½Π° Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ Π² NodeContainerΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ възли, възСл с индСкс 1. ΠœΠ΅Ρ‚ΠΎΠ΄ инсталирам Ρ‰Π΅ Π²ΡŠΡ€Π½Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ към всички прилоТСния (Π² Ρ‚ΠΎΠ·ΠΈ случай Π΅Π΄Π½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ΅Π½ NodeContainer, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ Π΅Π΄ΠΈΠ½ възСл), създадСн ΠΎΡ‚ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠ°.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚Π° трябва Π΄Π° посочат ΠΊΠΎΠ³Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ‚ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° посочитС Π²Ρ€Π΅ΠΌΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π° Π³ΠΎ спрСтС "Π‘ΠΏΡ€ΠΈ сС". ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΠΌΠ΅ ΠΈ Π΄Π²Π°Ρ‚Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. Π’Π΅Π·ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π° сС Π·Π°Π΄Π°Π²Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ApplicationContainer Начало ΠΈ Π‘ΠΏΠΈΡ€Π°Π½Π΅. Π’Π΅Π·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏ Π’Ρ€Π΅ΠΌΠ΅. Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½Π° послСдоватСлност ΠΎΡ‚ прСобразувания Π½Π° C++, Π·Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ C++ ΡƒΠ΄Π²ΠΎΠΈ 1.0 ΠΈ Π³ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°ΠΉΡ‚Π΅ Π² ΠΎΠ±Π΅ΠΊΡ‚ tns-3 Time, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Seconds Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π² сСкунди. НС забравяйтС, Ρ‡Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π° Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°, Π° C++ ΠΈΠΌΠ° свои собствСни ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°Ρ‚Π΅, Ρ‡Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ΠΈ ΠΏΠΎ Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ стС ΠΎΡ‡Π°ΠΊΠ²Π°Π»ΠΈ. Π”Π²Π° Ρ€Π΅Π΄Π°

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

Ρ‰Π΅ Π½Π°ΠΊΠ°Ρ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΅Ρ…ΠΎ ΡΡŠΡ€Π²ΡŠΡ€Π° Π΄Π° стартира (Π²ΠΊΠ»ΡŽΡ‡ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ) Π΅Π΄Π½Π° сСкунда слСд Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° симулацията ΠΈ Π΄Π° спрС (ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈ) слСд дСсСт сСкунди ΠΎΡ‚ симулацията. ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Ρ…ΠΌΠ΅ симулационно ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ (ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Π·Π° спиранС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ), ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ сС изпълни слСд дСсСт сСкунди, Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ симулирани ΠΏΠΎΠ½Π΅ дСсСт сСкунди Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

UdpEchoClientHelper

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅Ρ…ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ ΠΏΠΎ Π½Π°Ρ‡ΠΈΠ½, ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°. Има основСн ΠΎΠ±Π΅ΠΊΡ‚ UdpEchoClientApplication, която сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°
UdpEchoClientHelper.

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

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

Π—Π° Π΅Ρ…ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΎΠ±Π°Ρ‡Π΅ трябва Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ ΠΏΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°. ΠŸΡŠΡ€Π²ΠΈΡ‚Π΅ Π΄Π²Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° сС Π·Π°Π΄Π°Π²Π°Ρ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° създаванС UdpEchoClientHelper. ΠŸΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ (Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠ°) Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΡ‚Π΅ "RemoteAddress" ΠΈ "RemotePort" Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с Π½Π°ΡˆΠ΅Ρ‚ΠΎ споразумСниС Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° помощния конструктор.

НСка си спомним, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ IPv4InterfaceContainer Π·Π° прослСдяванС Π½Π° IP адрСситС, ΠΊΠΎΠΈΡ‚ΠΎ смС присвоили Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ устройства. НулСвият интСрфСйс Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π·Π° интСрфСйси Ρ‰Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° IP адрСса Π½Π° нулСвия възСл Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π·Π° възли. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ интСрфСйс Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π·Π° интСрфСйси ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° IP адрСса Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ възСл Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π·Π° възли. И Ρ‚Π°ΠΊΠ°, Π² ΠΏΡŠΡ€Π²ΠΈΡ Ρ€Π΅Π΄ ΠΎΡ‚ ΠΊΠΎΠ΄Π° (ΠΏΠΎ-Π³ΠΎΡ€Π΅) създавамС ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ ΠΈ ΠΌΡƒ ΠΊΠ°Π·Π²Π°ΠΌΠ΅, Ρ‡Π΅ отдалСчСният адрСс Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρ‰Π΅ бъдС IP Π°Π΄Ρ€Π΅ΡΡŠΡ‚, присвоСн Π½Π° хоста, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π° ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΊΠ°Π·Π²Π°ΠΌΠ΅, Ρ‡Π΅ трябва Π΄Π° ΡƒΡ€Π΅Π΄ΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½ΠΈ Π΄ΠΎ ΠΏΠΎΡ€Ρ‚ Π΄Π΅Π²Π΅Ρ‚.

ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ "MaxPackets" ΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° максималния Π±Ρ€ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠΌ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° симулацията. ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ "Interval" ΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊΠΎΠ»ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Ρ‡Π°ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ "PacketSize" ΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊΠΎΠ»ΠΊΠΎ голям трябва Π΄Π° бъдС полСзният Ρ‚ΠΎΠ²Π°Ρ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π‘ Ρ‚Π°Π·ΠΈ комбинация ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ Π΅Π΄ΠΈΠ½ 1024-Π±Π°ΠΉΡ‚ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ‚.

ΠšΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ Π΅Ρ…ΠΎ ΡΡŠΡ€Π²ΡŠΡ€Π°, Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΡ‚Π΅ Π½Π° Π΅Ρ…ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Начало ΠΈ Π‘ΠΏΠΈΡ€Π°Π½Π΅, Π½ΠΎ Ρ‚ΡƒΠΊ стартирамС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° сСкунда слСд Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° (Π΄Π²Π΅ сСкунди слСд Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° симулацията).

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

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ трябва Π΄Π° стартирамС симулацията. Π’ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° функция Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Бягай.

Simulator::Run ();

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ°Ρ…ΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ,

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

Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΏΠ»Π°Π½ΠΈΡ€Π°Ρ…ΠΌΠ΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² симулатора Π½Π° 1,0 сСкунди, 2,0 сСкунди ΠΈ Π΄Π²Π΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π½Π° 10,0 сСкунди. Π‘Π»Π΅Π΄ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Бягай, систСмата Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π° списъка с ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΠΈ Π΄Π° Π³ΠΈ изпълнява. ΠŸΡŠΡ€Π²ΠΎ Ρ‰Π΅ задСйства ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ слСд 1,0 сСкунди, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ задСйства ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΅Ρ…ΠΎ ΡΡŠΡ€Π²ΡŠΡ€Π° (Ρ‚ΠΎΠ²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ ΠΎΡ‚ своя страна ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠ»Π°Π½ΠΈΡ€Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ). Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ задСйства ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅, ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ Π½Π° t=2,0 сСкунди, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ стартира клиСнтското ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π΅Ρ…ΠΎ. ΠžΡ‚Π½ΠΎΠ²ΠΎ, Ρ‚ΠΎΠ²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. РСализацията Π½Π° стартовото ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Π² Π΅Ρ…ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° прСнос Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° симулацията Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ към ΡΡŠΡ€Π²ΡŠΡ€Π°.

ΠΠΊΡ‚ΡŠΡ‚ Π½Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€Π° Ρ‰Π΅ задСйства Π²Π΅Ρ€ΠΈΠ³Π° ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, ΠΊΠΎΠΈΡ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π°Π΄ кулиситС ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠ°Ρ‚Π° Π½Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π΅Ρ…ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ спорСд ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π·Π° Π²Ρ€Π΅ΠΌΠ΅, ΠΊΠΎΠΈΡ‚ΠΎ смС Π·Π°Π΄Π°Π»ΠΈ Π² скрипта.

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΌΠ΅ само Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ (Π½Π΅ забравяйтС, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ MaxPackets бСшС Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Π½Π° Π΅Π΄Π½ΠΎ), Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ ΠΏΠΈΠ½Π³ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‰Π΅ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ симулацията Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° готовност. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° сС случи, останалитС ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° Π‘ΠΏΠΈΡ€Π°Π½Π΅ Π·Π° ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ‚Π΅Π·ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΡ‚, няма Π΄Π° останат ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π·Π° ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Бягай Ρ‰Π΅ Π²ΡŠΡ€Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π°. Бимулацията Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π°.

ΠžΡΡ‚Π°Π²Π° само Π΄Π° почиститС слСд сСбС си. Π’ΠΎΠ²Π° става Ρ‡Ρ€Π΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° функция Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π£Π½ΠΈΡ‰ΠΎΠΆΠΈ. Въй ΠΊΠ°Ρ‚ΠΎ бяха ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΈΠ»ΠΈ ns-3 ΠΊΠΎΠ΄ Π½Π° ниско Π½ΠΈΠ²ΠΎ), ΠΊΠΎΠΈΡ‚ΠΎ са ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ ΠΊΡƒΠΊΠΈΡ‡ΠΊΠΈΡ‚Π΅ бяха Π²ΠΌΡŠΠΊΠ½Π°Ρ‚ΠΈ Π² симулатора, Π·Π° Π΄Π° ΡƒΠ½ΠΈΡ‰ΠΎΠΆΠ°Ρ‚ всички създадСни ΠΎΠ±Π΅ΠΊΡ‚ΠΈ. НС Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° прослСдяватС Π½ΠΈΡ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ сами - всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅, бСшС Π΄Π° сС ΠΎΠ±Π°Π΄ΠΈΡ‚Π΅ Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π£Π½ΠΈΡ‰ΠΎΠΆΠΈ ΠΈ ΠΈΠ·Π»Π΅Π·Ρ‚Π΅. БистСмата ns-3 Ρ‰Π΅ ΡΠ²ΡŠΡ€ΡˆΠΈ Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΆΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π° вмСсто вас. ΠžΡΡ‚Π°Π½Π°Π»ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΎΡ‚ нашия ΠΏΡŠΡ€Π²ΠΈ ns-3 скрипт, first.cc, правят Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π°:

Simulator::Destroy ();
return 0;
}

Кога Ρ‰Π΅ спрС симулатора?

ns-3 Π΅ симулатор Π½Π° дискрСтно ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ (DE). Π’ Ρ‚Π°ΠΊΡŠΠ² симулатор всяко ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° изпълнСниС ΠΈ симулацията ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Ρ‡Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Ρ€Π΅Π΄Π°, Π² ΠΊΠΎΠΉΡ‚ΠΎ сС появяват, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ симулацията Π½Π°ΠΏΡ€Π΅Π΄Π²Π°. Π‘ΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π½Π°ΠΊΠ°Ρ€Π°Ρ‚ Π±ΡŠΠ΄Π΅Ρ‰ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС прСнасрочи, Π·Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ отброяванСто Π² слСдващия ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»).

ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡ‚Π΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π°Ρ‚ ΠΎΡ‚ ΠΎΠ±Π΅ΠΊΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ IPv6 Ρ‰Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° услуги Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, съсСдни заявки ΠΈ Ρ‚.Π½. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€Π° ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ Ρ‚.Π½. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΅Π΄Π½ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π½ΡƒΠ»Π°, Π΅Π΄Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. Π‘ Π½Π°ΠΏΡ€Π΅Π΄Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° симулацията Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, ΠΊΠΎΠΈΡ‚ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ ΠΈΠ»ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ Π½ΠΎΠ²ΠΈ. Бимулацията Ρ‰Π΅ спрС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, Π°ΠΊΠΎ ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° Π·Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π΅ ΠΏΡ€Π°Π·Π½Π° ΠΈΠ»ΠΈ бъдС ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΎ спСциално ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Π‘ΠΏΠΈΡ€Π°Π½Π΅. Π‘ΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Π‘ΠΏΠΈΡ€Π°Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ функцията Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π‘Ρ‚ΠΎΠΏ (спиранС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ).

Има Ρ‚ΠΈΠΏΠΈΡ‡Π΅Π½ случай, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ Simulator::Stop Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π·Π° спиранС Π½Π° симулацията: ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ сС ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. Π‘Π°ΠΌΠΎΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈΡ‚Π΅ сС (ΠΈΠ»ΠΈ повтарящи сС) ΡΡŠΠ±ΠΈΡ‚ΠΈΡ са ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈΠ½Π°Π³ΠΈ сС прСнасрочват. ΠšΠ°Ρ‚ΠΎ слСдствиС, Ρ‚Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° Π·Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π½Π΅ ΠΏΡ€Π°Π·Π½Π°. Има ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ повтарящи сС ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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

β€’ RIPng – ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ ΠΈΠ·Π»ΡŠΡ‡Π²Π°Π½Π΅ Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅;

β€’ ΠΈ Π΄Ρ€.

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

Много ΠΎΡ‚ симулационнитС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° Π½Π΅ сС ΠΎΠ±Π°ΠΆΠ΄Π°Ρ‚ Π‘ΠΈΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€::Π‘Ρ‚ΠΎΠΏ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅ прСкратяват Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° Π² ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° са ΠΈΠ·Ρ‡Π΅Ρ€ΠΏΠ°Π½ΠΈ. Π’Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΎΠ±Π°Ρ‡Π΅ Ρ‰Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Simulator::Stop. НапримСр слСдният Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Ρ‰Π΅ насрочи ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ спиранС Π½Π° 11 сСкунди:

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

Π“ΠΎΡ€Π½ΠΎΡ‚ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ няма Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° симулация СстСствСно ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π° слСд 10 сСкунди. Но Π°ΠΊΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° спиранС Π² горния ΠΈΠ·Ρ€Π°Π· ΠΎΡ‚ 11 сСкунди Π½Π° 1 сСкунда, Ρ‰Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅, Ρ‡Π΅ симулацията спира ΠΏΡ€Π΅Π΄ΠΈ ΠΊΠ°ΠΊΡŠΠ²Ρ‚ΠΎ ΠΈ Π΄Π° Π΅ ΠΈΠ·Ρ…ΠΎΠ΄ Π΄Π° сС появи Π½Π° Π΅ΠΊΡ€Π°Π½Π° (Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Ρ…ΠΎΠ΄ΡŠΡ‚ сС появява слСд ΠΎΠΊΠΎΠ»ΠΎ 2 сСкунди Π²Ρ€Π΅ΠΌΠ΅ Π·Π° симулация).

Π’Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ Simulator::Stop, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ Simulator::Run; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай Simulator::Run ΠΌΠΎΠΆΠ΅ Π½ΠΈΠΊΠΎΠ³Π° Π΄Π° Π½Π΅ Π²ΡŠΡ€Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° основната ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, Π·Π° Π΄Π° изпълни спиранСто!

4.2.9 Π˜Π·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° вашия скрипт

НаправихмС ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ прости скриптовС Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½ΠΎ. Всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅, Π΅ Π΄Π° поставитС скрипта си Π² scratch дирСкторията ΠΈ Ρ‚ΠΎΠΉ Ρ‰Π΅ бъдС ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, Π°ΠΊΠΎ стартиратС Waf. Π”Π° ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅. Π’ΡŠΡ€Π½Π΅Ρ‚Π΅ сС Π² дирСкторията ΠΎΡ‚ Π½Π°ΠΉ-високо Π½ΠΈΠ²ΠΎ ΠΈ ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΡ‚Π΅ examples/tutorial/first.cc към ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° надраскат

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

Π‘Π΅Π³Π° ΠΈΠ·Π³Ρ€Π°Π΄Π΅Ρ‚Π΅ ΠΏΡŠΡ€Π²ΠΈΡ си ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ скрипт, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ WAF:

$ ./waf

Врябва Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‰ΠΈ, Ρ‡Π΅ Π²Π°ΡˆΠΈΡΡ‚ ΠΏΡŠΡ€Π²ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ създадСн ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

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

Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° стартиратС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° (ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Π°ΠΊΠΎ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ Π²Π°ΡˆΠ°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π² scratch дирСкторията, Ρ‚ΠΎΠ³Π°Π²Π° трябва Π΄Π° я стартиратС ΠΎΡ‚ надраскат):

$ ./waf --run scratch/myfirst

Врябва Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚:

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

Π’ΡƒΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ систСмата Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ провСрява Π΄Π°Π»ΠΈ Ρ„Π°ΠΉΠ»ΡŠΡ‚ Π΅ създадСн ΠΈ слСд Ρ‚ΠΎΠ²Π° Π³ΠΎ изпълнява. Π’ΠΈΠΆΠ΄Π°Ρ‚Π΅, Ρ‡Π΅ Π·Π°ΠΏΠΈΡΡŠΡ‚ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π° Π΅Ρ…ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠ» Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ 1024-Π±Π°ΠΉΡ‚ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎ Π΅Ρ…ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ 10.1.1.2. Π’ΠΈΠ΅ ΡΡŠΡ‰ΠΎ Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π·Π° рСгистриранС Π½Π° Π΅Ρ…ΠΎ ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» 1024 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ 10.1.1.1. Π•Ρ…ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Ρ‚ΠΈΡ…ΠΎ Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° Π½Π° Π΅Ρ…ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‡Π΅ Ρ‚ΠΎΠΉ Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» своя ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π°.

4.3 ns-3 Π˜Π·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄

Π‘Π΅Π³Π°, слСд ΠΊΠ°Ρ‚ΠΎ стС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ някои ΠΎΡ‚ ns-3 ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΡ†ΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ някои ΠΎΡ‚ изходния ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π° Ρ‚Π°Π·ΠΈ функционалност. ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС видян Π½Π° нашия ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ Π½Π° слСдната Π²Ρ€ΡŠΠ·ΠΊΠ°: 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€