кетом. Определить время доставки пакета адресату.
12.Провести анализ функционирования очереди. Для этого найти событие удаления пакета из сети, и провести регистрацию всех событий в этой очереди, предшествующих удалению пакета. Убедиться, что удаление пакета произошло в соответствии с настройками сети.
13.Запустить на выполнение программу, разработанную в результате предварительной подготовки. Убедиться в соответствии функционирования программы исходному заданию. В случае расхождения – доработать программу.
14.В отчет следует внести файлы программ, разработанные на этапе предварительной подготовки и в результате экспериментальных исследований, а также файлы, полученные по результатам анализа материалов моделирования сети.
Литература
1. The ns Manual./Kevin Fall, Kannan Varadhan. Доступно по
адресу: http://www.isi.edu/nsnam/ns/ns-documentation.html.
2. Tutorial for Network Simulator ns /Marc Greis. Доступно по адресу: http://www.isi.edu/nsnam/ns/tutorial/nsindex.html.
41
РАБОТА № 4
ИССЛЕДОВАНИЕ ХАРАКТЕРИСТИК ТСР С ПОМОЩЬЮ СЕТЕВОГО ИМИТАТОРА NS2
Целью работы «Исследование характеристик ТСР с помощью сетевого имитатора NS2» является экспериментальное исследование основных характеристик сетей ЭВМ путем компьютерного моделирования, углубление знаний и расширение сведений об основных протоколах стека TCP/IP (протокола транспортного уровня ТСР), а также закрепление навыков работы с сетевым имитатором NS2.
КРАТКИЕ СВЕДЕНИЯ О МОДЕЛЯХ TCP AGENTS ИМИТАТОРА NS2
Основное содержание данной раздела использовано из учеб-
ных материалов VINT group: The ns Manual (formerly ns Notes
and Documentation). The VINT Project/ Kevin Fall, Kannan Varadhan, 2009. Доступно по адресу: http://www.isi.edu/nsnam/ns/nsdocumentation.html. Копия этого руководства размещена в папке
S:\БогомоловСИ\NS\Metod\.
Этот раздел описывает функционирование агентов TCP в ns. Есть два основных типа моделей агентов TCP: Однонаправленные агенты и двунаправленные агенты. Однонаправленные агенты далее подразделены на семейства отправителей TCP (которые отрабатывают различные перегрузки и методы контроля ошибок) и получателей ("стоки"). Двунаправленный агент симметричен в том смысле, что он представляет и отправителя и получателя.
В настоящее время поддержаны однонаправленные TCP агенты отправители:
•Agent/TCP - “tahoe” TCP отправитель •Agent/TCP/Reno - “Reno” TCP отправитель •Agent/TCP/Newreno - Reno с модификацией
•Agent/TCP/Sack1 - TCP с выборочным повтором (по RFC 2018)
•Agent/TCP/Vegas - TCP Vegas
•Agent/TCP/Fack - Reno TCP с ускоренным подтверждение •Agent/TCP/Linux – ТСР отправитель с поддержкой SACK,
42
выполняемой модулем управления очередью ядра Linux.
На данный момент поддержаны однонаправленные TCP агенты получатели:
•Agent/TCPSink - TCP получатель с одним ACK на пакет
•Agent/TCPSink/DelAck - TCP получатель с управляемой за-
держкой на ACK
•Agent/TCPSink/Sack1 - получатель с выборочными ACK (по RFC 2018)
•Agent/TCPSink/Sack1/DelAck - Sack1 с DelAck
Двунаправленный экспериментальный получатель поддерживает только форму Reno TCP:
•Agent/TCP/FullTcp
Данный раздел содержит краткий обзор и пример конфигурирования основных TCP агентов отправителей и получателей (получатели не требует никакой конфигурации). Также кратко представлены внутренние основы агента отправителя и описание дополнений для других типов агентов, которые были включены в симулятор.
Однонаправленные отправители
Симулятор поддерживает несколько версий абстрактного отправителя TCP. Эти объекты пытаются фиксировать сущность перегрузок TCP и поведение контроля ошибок, но не предназначены для того, чтобы быть точными копиями реального выполнения TCP. Они не содержат динамического объявления окна, они выполняют вычисления номеров сегмента и номеров ACK целиком в единицах пакетов, нет никаких SYN/FIN соединений establishment/teardown, и никакие данные никогда не передаются (например, никакие контрольные суммы или срочные данные).
Базовый отправитель TCP (Tahoe TCP)
Агент TCP “Tahoe” Agent/TCP выполняет контроль перегрузки в сети и оценку времени кругооборота способом, подобным версии TCP, выпущенной с релизом 4.3BSD “Tahoe” UN’X систем UC Berkeley. Окно переполнения cwnd_ увеличивается на один пакет с новым ACK, полученным в течение медленного пуска (пока cwnd_ < ssthresh_ - порог перегрузки) и увеличивается на 1/cwnd_ для каждого нового ACK, полученного на этапе избегания перегрузки (когда cwnd_ ≥ .ssthresh).
Отклик на перегрузку Tahoe TCP предполагает, что пакет
43
был потерян (из-за перегрузки в сети) когда он обнаруживает признак NUMDUPACKS (определен в tcp.h, на данный момент равен 3) дубликатов ACK, или когда истекает таймер повторной передачи. В любом случае Tahoe TCP реагирует установкой порога перегрузки ssthresh_ на половину текущего размера окна (минимальное из значений окна переполнения cwnd_ или окна пользователя window _) или 2, какое больше. Затем он инициализирует cwnd_ снова к значению windowInit_ (стартовый размер окна при медленном пуске). Обычно это вынуждает вводить TCP медленным пуском.
Оценка времени кругооборота и выбор таймаута RTO Четыре переменные используются для оценки времени кругооборота и установки таймера повторной передачи: оценка времени кругооборота rtt_, сглаженная оценка времени кругооборота srtt_, отклонение оценки времени кругооборота rttvar_, период тактового генератора tcpTick_ и экспоненциальная константа отсрочки времени кругооборота backoff_. TCP инициализирует rttvar к 3/tcpTick_ и backoff к 1. Когда устанавливается любой будущий таймер повторной передачи, то таймаут устанавливают на текущее время плюс max (bt (a + 4v + 1), 64) секунды, где b – текущее значение backoff, t - значение tcpTick, a - значение srtt, и v - зна-
чение rttvar.
Отчеты времени кругооборота прибывают с новым ACKs. Отчет RTT вычисляется как разница между текущим временем и полем “time echo” в ACK пакете. Когда первый отсчет принят, его значение используется как начальное значение для srtt_. Половина первого отсчета используется как начальное значение для rttvar_. Для последующих отсчетов значения сглаженной оценки времени кругооборота srtt_ и отклонения оценки времени кругооборота rttvar_ модифицируются следующим образом:
srtt = 7/8 srtt + 1/8 sample,
rttvar = 3/4 rttvar + 1/4 |sample - .srtt|,
где sample – отсчет времени кругооборота
Конфигурации
Пуск TCP моделирования требует создания и конфигурирования агента, прикрепления источника данных прикладного уровня (генератора трафика), и пуска агента и генератора трафика.
44
Простые конфигурации
Создание агента
set ns [new Simulator] ;# инициализация преамбулы
set node1 [$ns node] ;# постоянное размещение агента на этом узле
set node2 [$ns node] ;# постоянное размещение агента на этом узле
set tcp1 [$ns create-connection TCP $node1 TCPSink $node2
42]
$tcp set window_ 50 ;# конфигурация TCP агента set ftp1 [new Application/FTP]
$ftp1 attach-agent $tcp1
$ns at 0.0 "$ftp start"
Этот пример иллюстрирует использование симулятором встроенной функции create-connection. Аргументы этой функции: создать агента отправителя, узел отправителя, создать агента получателя, узел получателя, и идентификатор потока ID для использования в соединении. Функция выполняет создание этих двух агентов, установление поля потока ID в агентах, прикрепление агентов источника и приемника к соответствующим узлам, и наконец соединение агентов (то есть установление соответствующих адресов и портов источника и получателя). Значение возвращаемой функции - имя созданного исходного агента.
Источник данных TCP агент TCP не формирует никаких собственных прикладных данных; вместо этого, пользователь моделирования может подключить любой модуль формирования трафика к агенту TCP для генерации данных. Для TCP обычно используются два приложения: FTP и Telnet. FTP представляет оптовую передачу данных большого размера, и telnet выбирает ее размеры передачи беспорядочно из tcplib (см. файл tcplib-
telnet.cc).
Другие параметры конфигурации
В дополнение к описанному выше параметру window_ агент TCP поддерживает дополнительные переменные конфигурации. Каждая из переменных, описанных в этом подразделе, является и переменной класса, и переменной экземпляра. Изменение переменной класса изменяет заданное по умолчанию значение для всех агентов, которые созданы впоследствии. Изменение пере-
45