150 likes | 448 Views
ВВЕДЕНИЕ В NS2. Киричёк Р.В. Network Simulator (ns-2) Почему специалисты используют имитационное моделирование сетей связи? подтверждение правильности работы протоколов ; создание экспериментальных топологий сетей; низкая цена в $, время, сотрудничество. Почему мы выбираем пакет ns 2?
E N D
ВВЕДЕНИЕ В NS2 Киричёк Р.В.
Network Simulator (ns-2) • Почему специалисты используют имитационное моделирование сетей связи? • подтверждениеправильностиработыпротоколов; • создание экспериментальных топологий сетей; • низкая цена в $, время, сотрудничество. • Почему мы выбираем пакет ns2? • Обеспечиваетимитацию: • протоколов: TCP, UDP, HTTP и т.д. • Модели трафика: Web Traffic, CBR и др. • Инструментызаданиянужнойтопологии • Большойпакетинструментоввизуализации • (люди верят, когда видят работу сети)
Языки программирования в NS2 • C++ планировщик событий и протоколы (чаще всего) • TCL scriptsпротоколы (главным образом расширения к ядру C ++) • TCL objectsвыставляют интерфейс языка C ++ (скрытые сценарии) в соответствии с конфигурацией системы (значения по умолчанию и т.д.)
Пример использования языка TCL set a 1 set b [expr $a + 2] proc list_total {list} { set tmp 0 foreach l $list { incr tmp $l } return $tmp } set c [list_total {1 2 3 4 5}] puts "a: $a b: $b c: $c" Пример использования объектного расширения языка TCL: oTCL Class car car instproc init (args) { $self instvar wheels set wheels 4 } Class vw -superclass car vw instproc init {args} { $self instvar wheels vendor set vendor "vw" eval $self next $args } set a [new car] puts "A: a car with [$a set wheels ] wheels" set b [new vw] puts "B: a [$b set vendor ] with [$b set wheels ] wheels"
Стадии моделирования простейшей сети:Шаг 1: Создание топологииСначала мы создаем объект моделирования (Simulator object), который будем использовать, чтобы сгенерировать узлы и каналы. Нижеописанный код создаст топологию (2 узла, 1 связь между ними), но не будет генерировать трафик. Можно задать любой другой код tcl с большим числом узлов, а время моделирования будет задаваться с помощью комады $ns at... Здесь мы зададим модельное время равное 5 секундам.#Создание объекта моделированияset ns [new Simulator] Ask ns for nodes set nO [$ns node] set nl [$ns node]#Создание дуплексного звена между узлами n0 & n1 $ns duplex-link $n0 $n1 1Mb 10ms DropTail#Вызов команды «exit 0»через 5 секунд модельного времени $ns at 5.0 "exit 0“#Запуск моделирования $ns run
Шаг 2: Создание агентов приложений Агенты осуществляют различные связи между узлами. Эти связи имеют различные типы протоколов: TCP, UDP и т.д. Здесь мы показываем простой пример создания UDP агента. Также необходимо создать агент - приемник UDP, для этого мы создадим Null agent (только в случае использования UDP!!!). #Создание агента UDP set udp1 [new Agent/UDP] #Создание агента-получателя set sink1 [new Agent/Null] #Присоединени агента UDP к node n0 $ns attach-agent $n0 $udp1 #Attach agent sinkl to node n1 $ns attach-agent $nl $sink1 #Connect the agents $ns connect $udp1 $sink1
TCP агенты Конечно вместо того, чтобы использовать UDP мы могли использовать TCP, но тогда мы должны будем использовать специализированный агент-приемник, чтобы сгенерировать подтверждения о доставке. #Create a TCP agent set tcp1 [new Agent/TCP] #Create a Null agent set sink1 [new Agent/TCPSink] #Attach agent tcp1 to node n0 $ns attach-agent $n0 $tcp1 #Attach agent sinkl to node n1 $ns attach-agent $nl $sink1 #Connect the agents $ns connect $tcp1 $sink1
Шаг 3: Создание приложений источниковОднако, наша сеть не будет передавать данные. Мы должны создать источник данных, который будет снабжать байтами нашего агента. Здесь мы генерируем источник с постоянной битовой скоростью передачи (CBR).#Create Source set cbr1 [new Application/Traffic/CBR]#Configure Source $cbrl set packetSize 500 $cbrl set interval 0.005#Attach source to agent $cbr1 attach-agent $udp1#Schedule cbr on$ns at 0.5 "$cbr1 start“#Schedule cbr off$ns at 4.5 "$cbr1 stop"
Шаг 4: Трассировка До текущего момента моделирования мы создали источники и генерируемый трафик, который передается в заданном нами направлении, но это не интересно для нас так как мы не можем сделать выводы о результатах моделирования. Далее мы зададим команды для отслеживания всех процессов в модели. Укажите в полном файле кода, что команды trace-all и nam-trace-all должны выполняться прежде, чем будут созданы узлы и агенты, но временные команды трассировки должны быть выполнены впоследствии: # all packet trace: $ns trace-all [open out.tr w] # animator trace: $ns namtrace-all [open out.nam w] #variable trace: set tf [open "cwnd.tr" w] set tracer [new Trace/Var] $tracer attach $tf $tcp trace cwnd $tracer
Шаг 4: Анимация работы сете в «nam» (Network Animator) Вы можете запускать network animator используя команду nam. %nam out.nam