ВВЕДЕНИЕ В NS 2 Киричёк Р. В.
Network Simulator (ns-2) Почему специалисты используют имитационное моделирование сетей связи? • подтверждение правильности работы протоколов; • создание экспериментальных топологий сетей; • низкая цена в $, время, сотрудничество. Почему мы выбираем пакет ns 2? Обеспечивает имитацию: • протоколов: TCP, UDP, HTTP и т. д. • Модели трафика: Web Traffic, CBR и др. • Инструменты задания нужной топологии • Большой пакет инструментов визуализации • (люди верят, когда видят работу сети)
Языки программирования в NS 2 • C++ планировщик событий и протоколы (чаще всего) • TCL scripts протоколы (главным образом расширения к ядру C ++) • TCL objects выставляют интерфейс языка C ++ (скрытые сценарии) в соответствии с конфигурацией системы (значения по умолчанию и т. д. )
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: o. TCL Class 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 n. O [$ns node] set nl [$ns node] #Создание дуплексного звена между узлами n 0 & n 1 $ns duplex-link $n 0 $n 1 1 Mb 10 ms Drop. Tail #Вызов команды «exit 0» через 5 секунд модельного времени $ns at 5. 0 "exit 0“ #Запуск моделирования $ns run
• Шаг 2: Создание агентов приложений Агенты осуществляют различные связи между узлами. Эти связи имеют различные типы протоколов: TCP, UDP и т. д. Здесь мы показываем простой пример создания UDP агента. Также необходимо создать агент - приемник UDP, для этого мы создадим Null agent (только в случае использования UDP!!!). #Создание агента UDP set udp 1 [new Agent/UDP] #Создание агента-получателя set sink 1 [new Agent/Null] #Присоединени агента UDP к node n 0 $ns attach-agent $n 0 $udp 1 #Attach agent sinkl to node n 1 $ns attach-agent $nl $sink 1 #Connect the agents $ns connect $udp 1 $sink 1
• TCP агенты Конечно вместо того, чтобы использовать UDP мы могли использовать TCP, но тогда мы должны будем использовать специализированный агент-приемник, чтобы сгенерировать подтверждения о доставке. #Create a TCP agent set tcp 1 [new Agent/TCP] #Create a Null agent set sink 1 [new Agent/TCPSink] #Attach agent tcp 1 to node n 0 $ns attach-agent $n 0 $tcp 1 #Attach agent sinkl to node n 1 $ns attach-agent $nl $sink 1 #Connect the agents $ns connect $tcp 1 $sink 1
Шаг 3: Создание приложений источников Однако, наша сеть не будет передавать данные. Мы должны создать источник данных, который будет снабжать байтами нашего агента. Здесь мы генерируем источник с постоянной битовой скоростью передачи (CBR). #Create Source set cbr 1 [new Application/Traffic/CBR] #Configure Source $cbrl set packet. Size 500 $cbrl set interval 0. 005 #Attach source to agent $cbr 1 attach-agent $udp 1 #Schedule cbr on $ns at 0. 5 "$cbr 1 start“ #Schedule cbr off $ns at 4. 5 "$cbr 1 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
Trace Graph
СПАСИБО за ВНИМАНИЕ !