Компьютерное моделирование локальных сетей реализующих технологию csma/CD

Вид материалаДокументы

Содержание


MO содержит следующие поля: MO
Подобный материал:
КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ ЛОКАЛЬНЫХ СЕТЕЙ РЕАЛИЗУЮЩИХ ТЕХНОЛОГИЮ CSMA/CD

Л.Г. Хиль, М.И. Хиль

Технологический институт ВНУ им. В. Даля (г. Северодонецк)

Чтобы получить количественные оценки характеристик для сетей, находящихся в стадии проектирования, целесообразно использовать средства имитационного моделирования. Имитационные модели воспроизводят процессы генерации сообщений приложениями, разбиение сообщений на пакеты и кадры определенных протоколов, задержки, связанные с обработкой сообщений, пакетов и кадров внутри сети, доступ компьютеров к разделяемой сетевой среде, процесс обработки поступающих пакетов маршрутизатором и т.д.

Результатом моделирования являются статистические данные о наиболее важных характеристиках сети: времени реакции сети, коэффициенте использования каналов и узлов, вероятности потерь пакетов и т.п. Преимуществом имитационных моделей является возможность работы в ускоренном масштабе времени, что дает возможность оценить работу сети в широком диапазоне варьируемых параметров.

В представленной работе разработана программа, осуществляющая имитационное моделирование компьютерных сетей, построенных по технологии CSMA/CD. Работа с программой производится с помощью панели инструментов, которая обеспечивает ввод и редактирование топологии (схемы) сети, ввод параметров компонент сети, моделирование, сохранение результатов. Редактирование топологии основано на технологии drag-and-drop, что существенно облегчает работу с программой. Выполняется автоматическое разбиение сети на сегменты.

Можно задавать основные параметры компонент сети. Для станции это - интенсивность потока пакетов, длина кадра (64-1518 байт), адрес (имя), задержка сигнала (bt), межпакетный интервал (bt). Для концентратора вводятся параметры: адрес (имя); задержка кадра (bt), количество портов. Автоматически задается физический номер устройства и номер сегмента сети которому принадлежат станция или концентратор. Для коммутатора можно задать задержку кадра, адрес (имя), количество портов, размер буфера на каждый порт (байт). Также автоматически задаются физический номер коммутатора и список присоединённых сегментов. При настройке соединений задаётся тип кабеля, а также длина кабеля в метрах. Параметры можно также выбирать из библиотеки сетевых компонент. При необходимости можно редактировать библиотеку.

Информация об устройствах сети записывается в массив phys[ ]. Элементы массива phys имеют следующую структуру:

phys[ ].typ – тип физического устройства (0 – нет, 1 – станция, 2 – концентратор, 3 – коммутатор);

phys[ ].delay – задержка для сигнала, вносимая устройством;

phys[ ].la – интенсивность потока пакетов из устройства;

phys[ ].cadrl – длина пакетов;

phys[ ].betwp – межпакетный интервал;

phys[ ].bufsize – размер буфера на каждый порт устройства;

phys[ ].name – идентификационное имя устройства;

phys[ ].segment – номер сегмента, к которому относится устройство;

phys[ ].ports – количество портов устройства;

phys[ ].consegs – количество присоединённых сегментов;

phys[ ].segs[ ] – список с номерами присоединённых сегментов.

В массиве MO хранится информация о передаваемых пакетах, а именно, время генерации пакета и станция – приёмник. Каждому столбцу таблицы соответствует устройство – генератор пакетов (станция, порт коммутатора или маршрутизатора).

Каждый элемент массива MO содержит следующие поля:

MO.time – время генерации пакета;

MO.dest – физический номер станции-приёмника.

Внутри каждого столбца в соответствии с i-ым физическим устройством генерируем времена поступления пакетов по экспоненциальному закону (в первоначальный момент времени ):

если (1)





Кроме того, в массиве pref[maxi] для каждого столбца массива MO записана следующую информация:

pref[ ].tophys – номер физического устройства, соответствующего данному столбцу;

pref[ ].watch – означает, на каком элементе данного столбца стоит указатель (используется в алгоритме «песочных часов»);

pref[ ].trying – количество попыток передачи пакета (при возникновении коллизий);

pref[ ].lasttime – время генерации последнего пакета в столбце.

Связи между элементами будем хранить в списке связей conn, каждый элемент которого имеет следующую структуру:

conn[ ].typ – тип соединения (витая пара 3, 4, 5 категории, оптоволоконный кабель);

conn[ ].f – физический номер в массиве phys первого соединяемого устройства;

conn[ ].s - физический номер в массиве phys второго соединяемого устройства;

conn[ ].len – длина соединения в метрах;

Для удобства поиска всегда conn[ ].f < conn[ ].s .

Для моделирования используется следующий алгоритм:

Первый шаг. Производится проверка топологии на соответствие ограничений сетевой технологии. При обнаружении ошибок происходит выход из модуля моделирования.

Второй шаг. Создаётся массив моделирования (). Заполняются столбцы массива для станций. Для этого производим генерацию времён поступления пакетов по экспоненциальному закону, учитывая интенсивность потока пакетов текущей станции. По равномерному закону распределения выбираются станции – приёмники для этих пакетов. Столбцы для коммутаторов остаются пустыми (для каждого порта коммутатора один столбец), т.к. в начальный момент времени к ним ещё не пришёл ни один пакет. Формируется второй массив, в котором будут записаны для каждого столбца массива указатели на пакеты. Записываем туда указатели на первый пакет для всех станций.

Третий шаг. Находим время поступления первого пакета. Для этого находим минимальное время в каждом столбце массива по указателям на пакеты. Увеличиваем указатель, чтобы он указывал на следующий пакет. Если указатель указывает за последний пакет столбца, генерируем снова столбец пакетов для данной станции, и устанавливаем указатель на первый пакет.

Четвёртый шаг. Распространяем пакет в пределах данного сегмента. При этом для каждого устройства, на которое он попадает, вычисляем начальное и конечное время пребывания пакета. Оно постоянно увеличивается при удалении от источника на величины задержек на уровнях PHY станций, концентраторов, за счёт NVP кабелей и конечного значения скорости света. Задержку распространения по кабелю рассчитываем по формуле

, (2)

где tC – время прохождения светом одного метра;

NVP – значение NVP для кабеля, соединяющего устройства;

l – длина кабеля.

При распространении используем алгоритм «волны». Просматриваются все устройства, соединенные с источником, и если это концентратор, запоминаем его. Затем просматриваем все устройства, соединённые с концентратором, кроме того, откуда пришёл пакет, и т.д. При попадании пакета к приёмнику, увеличиваем счётчик принятых пакетов. Если же пакет попадает на коммутатор и приёмник находится в другом сегменте, то записываем этот пакет в соответствующий столбец массива – портов коммутаторов. При этом из ёмкости буфера этого порта вычитаем длину пакета, и если буфер переполнен (результат отрицательный), то увеличиваем счётчик переполнений буфера.

Пятый шаг. Находим время поступления следующего пакета так же, как и на третьем шаге.

Шестой шаг. Сравниваем время поступления пакета на узел с временами пребывания предыдущего пакета. Здесь могут быть три варианта:
  • это время больше конечного времени пребывания предыдущего пакета плюс межпакетный интервал. Переходим на седьмой шаг.
  • это время больше начального времени пребывания предыдущего пакета, но меньше конечного времени пребывания предыдущего пакета плюс межпакетный интервал. Узел ожидает. Время поступления нового пакета пересчитывается как конечное время пребывания на данном узле предыдущего пакета плюс IPG (межпакетный интервал). Переходим на седьмой шаг.
  • это время меньше начального времени пребывания предыдущего пакета. Фиксируется коллизия. Находится устройство, которое первым обнаруживает коллизию. Для этого в текущем сегменте просматриваются все устройства, и находится то, у которого минимальное время наложения пакетов. От этого устройства по алгоритму «волны» распространяется сигнал ПРОБКА (32 bt) на все устройства сегмента. Увеличиваются счётчики попыток передачи для предыдущего и текущего пакетов. Вычисляются времена задержки пакетов (в bt) по формуле

(3)

где N – значение счётчика попыток.

Увеличивается счётчик коллизий для данного сегмента. Переходим на пятый шаг.

Седьмой шаг. Переходим на четвёртый шаг до тех пор, пока не будет промоделировано необходимое время работы сети.

В окне процесса моделирования можно увидеть следующие значения: момент выхода конкретного пакета, станция-источник, станция-приёмник, путь распространения пакета по сегменту, попадание пакета на порты коммутаторов, время ожидания, происхождение коллизий.

Ведётся статистика и отчёт по работе сети. В статистике отражаются такие показатели, как реальное время моделирования, количество переданных пакетов, количество принятых пакетов, количество коллизий, среднее время ожидания, общий объём переданной информации, вероятность отказов.

В разработанной программе существуют два метода сохранения результатов: в текстовый файл записывается содержимое окна процесса моделирования и экспорт статистических результатов по всем опытам в Microsoft Excel.

Соответственно сохраняется либо содержимое окна процесса моделирования либо статистические данные по всем опытам. При экспорте в Microsoft Excel данные по каждому опыту располагаются на отдельных листах, а на последнем листе изображена топология сети.

Таким образом, разработанная программа позволяет моделировать сети масштабов предприятия (около 1000 компонент, таких как станция, концентратор или коммутатор).

Программа может использоваться как при проектировании новых компьютерных сетей, так и для анализа работы существующих. Она может быть полезной для изучения процессов, протекающих в компьютерных сетях при проведении лабораторных и практических занятий по соответствующим учебным дисциплинам.