Материал: 1308

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

кетом. Определить время доставки пакета адресату.

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