ВВЕДЕНИЕ В 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 { }] 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 #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]out.tr #animator trace: $ns namtrace-all [open out.nam w] #variable trace: set tf [open "cwnd.tr" w]cwnd.tr set tracer [new Trace/Var] $tracer attach $tf $tcp trace cwnd $tracer
Шаг 4: Анимация работы сете в «nam» (Network Animator) Вы можете запускать network animator используя команду nam. %nam out.nam
Trace Graph
СПАСИБО за ВНИМАНИЕ !