Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ВВЕДЕНИЕ
Практически все сети (пожалуй, кроме самых небольших, состоящих из нескольких компьютеров) являются сегодня составными, т. е. состоящими из нескольких сетей, каждая из которых может работать на основе собственной технологии канального уровня (хотя это и не обязательно). Такое положение дел складывается по разным причинам: историческим - общая сеть создавалась постепенно, объединяя все большее число изолированных до этого сетей; техническим - разделенной на части сетью легче управлять и т. п. С развитием Internet количество сетей, не относящихся к составным, резко уменьшилось. Даже сети небольших офисов или домашние сети все чаще становятся постоянными или временными (на время подключения по телефонной сети) членами этой самой большой в мире составной сети.
Сложные составные сети состоят из большого количества элементов маршрутизаторов, концентраторов, коммутаторов, модемов, мостов и т.п. телекоммуникационного оборудования.
При разработке сложных составных сетей нередко встает задача предварительного моделирования такой сети с целью проверки используемых технических решений. Анализ работы созданной модели сети позволяет до ее физической реализации оценить характеристики проектируемой сети, а также разработать необходимую конфигурацию интеллектуальных сетевых устройств.
Данная задача, при всей ее кажущейся простоте, является довольно сложной из-за большого разнообразия применяемого оборудования.
В сложных составных сетях почти всегда существует несколько альтернативных маршрутов для передачи пакетов между двумя конечными узлами. Задачу выбора маршрутов из нескольких возможных решают маршрутизаторы, а также конечные узлы.
Отработка вариантов выбора различных маршрутов в сети тоже является предметом моделирования. В данном случае моделирование позволяет обнаружить потенциальные проблемы, связанные с использованием различных протоколов маршрутизации пакетов.
Итак, целью дипломного проекта является разработка программы сетевого эмулятора, позволяющая представить в графическом виде топологию сети, описать характеристики различных сетевых устройств, а также в режиме демонстрации показать работу спроектированной сети.
1. ОБЗОР ЭМУЛЯТОРОВ СЕТЕВОГО ОБОРУДОВАНИЯ
Эмулятор - это продукт, созданный для имитации одной системы другой и преследующий цель полного восприятия данных и достижения идентичных результатов, для запуска программного обеспечения (American Heritage Dictionary, Second College Edition, s.v. "emulate").
Сетевой эмулятор это продукт, созданный для имитации работы сетевого телекоммуникационного оборудования, преследующий цель создания среды, отражающей работу реальной телекоммуникационной сети. В общем случае, любая телекоммуникационная сеть является частью сети электросвязи.
Сеть электросвязи представляет многофункциональную непрерывно меняющуюся и развивающуюся восстанавливаемую систему, срок жизни которой во много раз больше срока жизни ее многочисленных и разнородных элементов. Ее развитие идет как в направлении расширения, охвата и увеличения числа пользователей и требований по доставке, так и в направлении введения новых видов связи и услуг. К особенностям сети электросвязи как большой системы также относятся: большое число разнообразных (по функциям и объемам передаваемых сообщений) оконечных пунктов и узлов, неоднородное их распределение по территории страны; использование линий (каналов) с различной средой распространения и пропускной способностью; малая связность (непосредственная связь каждого пункта лишь с небольшим числом пунктов, как правило, соседних) и неоднородность тяготений (по видам связи и объемам) между отдельными оконечными пунктами
Основой сети связи является ее структура пункты и линии (каналы) связи. Сеть с N пунктами характеризуется прежде всего их расположением географией сети, что определяется либо перечнем координат всех пунктов а1, ..., аn, либо расстояниями между ними: кратчайшими (по прямой) lijкр или по линиям сети lij. Расстояния могут быть записаны в виде матриц Lкр = || lijкр || или L= || lij ||.
Все пункты сети по своей роли в доставке информации можно разделить на два основных класса:
1. Оконечные пункты − ОП, содержащие аппаратуру ввода, вывода, а иногда и обработки информации. Оконечный пункт обеспечивает взаимодействие пользователей с сетью по вводу, выводу и обработке сообщений, но не осуществляет функций транзита. Он характеризуется аппаратурой ввода и вывода, наличием дополнительных устройств, наличием персонала, а также стоимостью и областью обслуживания (индивидуальный абонент, квартира, предприятие или учреждение, район, город и т. п.). Оконечный пункт, расположенный непосредственно у определенного пользователя-абонента, называется абонентским пунктом (АП). В телекоммуникационной сфере для обозначения оконечного пункта используется такое понятие как хост (host). Хост это персональный компьютер, рабочая станция, сервер или иное устройство, подключенное к сети и обеспечивающее пользователю связь с другими хостами сети. Связь между пользователями осуществляется с помощью специальных программ (электронная почта, Telnet, FTP). Иногда для обозначения хостов используют термины data terminal equipment (терминальное оборудование), DTE, node (узел), station (станция).
В некоторых случаях в качестве оконечного пункта сети может рассматриваться узел другой сети. По отношению к сети оконечные пункты являются источниками и потребителями нагрузки, и с этой точки зрения они могут характеризоваться матрицей тяготений.
2. Узлы связи УС, осуществляющие распределение информации на сети:
а) коммутационные узлы КУ, обеспечивающие коммутацию каналов КК, сообщений КС или пакетов КП между сходящимися в узле каналами или линиями от оконечных пунктов и других узлов; б) сетевые (некоммутационные) узлы, в которых осуществляется кроссировка (долговременная коммутация) сходящихся в узле линий для организации пучков прямых каналов. В общем случае узлы всегда выполняют несколько функций, т. е. в коммутационном узле часть каналов может быть скроссирована и имеются каналы, которые не могут быть использованы для транзита. Всякий узел содержит каналообразующую аппаратуру и системы, обеспечивающие распределение сообщений: кросс, системы коммутации каналов, сообщений или пакетов, а также устройства управления УУ и может содержать ЭВМ или другие устройства для хранения и обработки информации.
Наиболее часто применяемыми устройствами на узлах связи являются маршрутизаторы. Маршрутизатор (router) - система, отвечающая за принятие решений о выборе одного из нескольких путей передачи сетевого трафика. Для выполнения этой задачи используются протоколы маршрутизации, обеспечивающие сведения о сети и алгоритмы выбора наилучшего пути на основе нескольких критериев, называемых метрикой маршрутизации ("routing metrics"). В терминах OSI маршрутизатор является промежуточной системой сетевого уровня. Иначе можно сказать что маршрутизатор это зависящий от протокола компонент межсетевого взаимодействия, настроенный так, чтобы знать какие сегменты ЛВС взаимодействуют с ним, и отвечающий за передачу пакетов между сегментами по наилучшему пути. Маршрутизатор должен распознавать различные протоколы сетевого уровня, которые могут использоваться для объединения сетей. Многопротокольные маршрутизаторы могут работать с различными протоколами.
Отдельные пункты сети соединяются между собой линиями связи, содержащими каналы для передачи сообщений. Пункты, соединенные непосредственно линиями связи или пучками прямых каналов, будем называть смежными. Под каналом связи или просто каналом в сети будем понимать комплекс устройств и среду распространения, обеспечивающие передачу сообщений (перенос сигналов) из одной точки пространства в другую, причем полюсами (концами) канала будем считать либо точки подключения устройств ввода или вывода информации, либо входы или выходы коммутационных систем. Канал может соединять либо смежные узлы, либо с помощью устройств кроссировки проходить через несколько узлов и соединять несмежные пункты сети. Такие каналы или их пучки будем называть прямыми. Для передачи сообщений между пунктами, не соединенными прямыми каналами, используются коммутационные узлы.
Все эмуляторы телекоммуникационных сетей и сетевого оборудования можно разделить на две основные группы:
1. Аппаратно-реализованные эмуляторы.
2. Программно-реализованные эмуляторы.
К перовой группе относят, как правило, узко специализированное оборудование, позволяющее при подключении к нему реального телекоммуникационного оборудования имитировать работу реальной телекоммуникационной сети, либо какой-то ее части (как правило каналов связи). В аппаратных эмуляторах на аппаратном уровне реализованы процессы, протекающие в реальных сетях возникновение задержек, потерь пакетов, искажения передаваемых данных и т.п. событий. Основная цель разработки и применения аппаратных эмуляторов исследование работы реального телекоммуникационного оборудования в различных условиях и при различных характеристиках каналов.
Ко второй группе эмуляторов относят специально разработанные программы, позволяющие имитировать работу оборудования и каналов связи, а также работу командных интерфейсов активного сетевого оборудования. Основная цель использования программных эмуляторов применение в качестве обучающих систем для подготовки персонала коммутационных узлов. Также, данные программы используются в научно-исследовательской деятельности, для постановки научных экспериментов.
1.3 Сравнительный анализ существующих программных эмуляторов сетей и сетевого оборудования.
Исходя из цели данного дипломного проекта, рассмотрим и сравним имеющиеся программные эмуляторы сетей и сетевого оборудования различных фирм производителей. В настоящее время существует несколько программных продуктов, выполняющие функции сетевого эмулятора:
Рассмотрим функциональные возможности каждой из представленных программ:
Network Emulator 3.0/4.0. представляет собой платформу для проведения научных экспериментов, а также систему для углубленного изучения работы сетевых протоколов и моделирования различных сетей. Позволяет дописывать и добавлять в программу собственные модули. Обладает следующими достоинствами/характеристиками:
- поддержка IP маршрутизации
- IP фильтрация совместимая с Cisco маршрутизаторами
- поддержка пакетов следующих типов: ICMP, UDP, TCP, низкоуровневых ARP запросов
- TCP реализация, основанная на RFC 793
- ICMP переназначение и ICMP реализация, основанная на RFC 792
- Address Resolution Protocol (ARP) эмуляция
- реализация концепции интерфейсов
- эмуляция сетевых устройств: host (компьютер), концентратор (hub), коммутатор (switch).
- Реализация: низкоуровневых сокетов (raw socket), дейтаграмм (datagram), потоков (stream).
- Реализация процессов (processes):trace route процесс (UNIX traceroute), talk daemon процесс (UNIX talk daemon), talk client процесс (UNIX talk), telnet процесс (UNIX telnet), echo сервер (UNIX inet daemon internal echo service),
- BGP демон маршрутизации эмуляция, основанная на RFC 1163
- Реализация каналов: поддержка уровня надежности (эмуляция шумов в линии), соединение точка-точка, Ethernet ЛВС - BNC и TP коннекторы.
- Возможность соединить два сетевых эмулятора через реальную сеть через TCP соединение.
- Простой генератор трафика
- Хорошая система предварительного просмотра
К недостаткам данной программы относится отсутствие привязки сетевых объектов к реальному оборудованию. По этой причине использовать данное программное обеспечение могут только опытные инженеры, хорошо знакомые с основами построения телекоммуникационных сетей.
RouterSim's Network Visualizer 3.0/4.0 программное обеспечения, предназначенное для визуального построения сетей, реализованных на базе оборудования Cisco Systems. По сути данная программа представляет собой электронный макет, позволяющий произвести настройку небольшой сети. Обладает следующими достоинствами/характеристиками:
- поддержка протоколов IP/IPX/DECnet/AppleTalk, а также их маршрутизации
- поддержка стандартных и расширенных Cisco фильтров
- Address Resolution Protocol (ARP) эмуляция
- реализация концепции командных интерфейсов
- эмуляция сетевых устройств: host (компьютер), коммутатор Catalyst 1912 (switch), маршрутизаторы Cisco 2621 и Cisco 2501 (routers).
- Реализация: Cisco IOS более 400 команд, включая поддержку протоколов маршрутизации (RIP, OSPF, IGRP, EIGRP, BGP).
- Реализация каналов: соединение точка-точка, Ethernet ЛВС - TP коннекторы.
- Хорошая система предварительного просмотра
Несомненным достоинством данного эмулятора является хорошая проработка поддержки Cisco IOS. Данное программное обеспечение позволяет детально разобраться с возможностями конфигурирования оборудования Cisco. Простота интерфейса позволяет даже слабо подготовленному специалисту создать небольшую сеть на базе оборудования Cisco и произвести его детальную настройку.
К недостаткам данной программы относится небольшое количество поддерживаемого оборудования на одной сетевой карте можно одновременно использовать 5 маршрутизаторов Cisco 2501, один маршрутизатор Cisco 2621, шесть коммутаторов Catalyst 1912A, 8 компьютеров (hosts).
Boson NetSim 5.0/6.0 программное обеспечение, предназначенное для визуального построения сетей, реализованных на базе оборудования, аналогичного оборудованию Cisco Systems. Данная программа представляет собой программный эмулятор, позволяющий произвести настройку достаточно большой сети. Обладает следующими достоинствами/характеристиками:
- поддержка протоколов IP/IPX, а также их маршрутизации
- поддержка стандартных и расширенных фильтров, аналогичных фильтрам Cisco
- Address Resolution Protocol (ARP) эмуляция
- реализация концепции командных интерфейсов
- эмуляция большого количества сетевых устройств: host (компьютер), коммутаторы (switch) 4-х моделей начиная с 1900 серии до 5000-ых моделей, маршрутизаторы (routers) 8-ми моделей начиная с 800-ых моделей и заканчивая 4500 серией.
- Реализация: Cisco IOS более 200 команд, включая поддержку протоколов маршрутизации (RIP, OSPF, IGRP, EIGRP, BGP).
- Реализация каналов: соединение точка-точка, Ethernet ЛВС - TP коннекторы, ISDN.
- Хорошая система предварительного просмотра
Данное программное обеспечение позволяет детально разобраться с возможностями конфигурирования оборудования, аналогичному оборудованию Cisco. Интерфейса программы позволяет создать достаточно большую сеть (до 200 объектов) и произвести детальную настройку оборудования.
К недостаткам данной программы относится недостаточно удобный интерфейс достаточно легко запутаться в контексте какого оборудования в данный момент находишься.
SemSim 2.2. эмулятор, предназначенный для изучения программного обеспечения Cisco IOS. Данная программа представляет собой программный эмулятор, позволяющий произвести изучение функций Cisco IOS и провести ряд работ над виртуальным оборудованием. Данное программное обеспечение предназначено исключительно для использования в целях обучения. Оно обладает следующими достоинствами/характеристиками:
- поддержка протокола IP, а также его маршрутизации
- поддержка стандартных и расширенных фильтров, аналогичных фильтрам Cisco
- Address Resolution Protocol (ARP) эмуляция
- реализация концепции командных интерфейсов
- эмуляция Cisco маршрутизатора.
- Реализация: Cisco IOS более 200 команд, включая поддержку протоколов маршрутизации (RIP, IGRP).
- Реализация каналов: соединение точка-точка, Ethernet.
- Хорошая справочная система
Данное программное обеспечение позволяет, выполняя задания, подготовленные разработчиком детально разобраться с возможностями конфигурирования Cisco IOS.
К недостатку данной программы относится невозможность создания собственных сценариев построения сети.
2 ПРОБЛЕМА МОДЕЛИРОВАНИЯ ПРОТОКОЛОВ СЕТВОГО УРОВНЯ
2.1 Понятие и суть моделирования. Моделирование протоколов сетевого уровня
Материальное моделирование - это моделирование, при котором исследование объекта выполняется с использованием его материального аналога (от греч. analogia - соответствие, соразмерность), воспроизводящего основные физические, геометрические, динамические и функциональные характеристики данного объекта.
Идеальное моделирование отличается от материального тем, что оно основано не на материальной аналогии объекта и модели, а на аналогии идеальной, мыслимой и всегда носит теоретический характер.
Под моделью (от лат. modulus - мера, образец, норма) понимают такой материальный или мысленно представляемый объект, который в процессе познания (изучения) замещает объект-оригинал, сохраняя некоторые важные для данного исследования типичные его черты. Процесс построения и использования модели называется моделированием.
Самым важным и наиболее распространенным предназначением моделей является их применение при изучении и прогнозировании поведения сложных процессов и явлений.
С помощью моделей помощью выявляются наиболее существенные факторы, формирующие те или иные свойства объекта, поскольку сама модель отражает лишь некоторые основные характеристики исходного объекта.
Модель позволяет научиться правильно управлять объектом, апробируя различные варианты управления на модели этого объекта.
Модель - это инструмент, ориентированный в первую очередь на исследование поведения и свойств конкретного объекта в целях управления этим объектом или предсказания его свойств.
Целью компьютерного моделирования протоколов сетевого уровня является создание программной среды отражающей реальные процессы, протекающие в сетях передачи данных, при использовании этих протоколов объектами сети передачи данных. Данная программная среда должна наиболее полно отражать все особенности работы протоколов сетевого уровня, а также особенности работы моделируемых сетевых устройств, поскольку невозможно рассматривать моделирование сетевого протокола в отрыве от моделирования сетевых объектов, использующих данные протоколы. Результатом создания компьютерной модели протоколов сетевого уровня станет программа, эмулирующая работу реального сетевого оборудования и набор данных в памяти, отражающий структуру моделируемого протокола.
2.2 Моделирование IP протокола
Цель моделирования: Создание в памяти компьютера структуры IP пакета, отражающего реальную структуру моделируемого пакета, с учетом дополнительных характеристик данного пакета.
Для определения характеристик IP пакета, подлежащих моделированию, рассмотрим структуру IP пакета и перечислим поля подлежащие моделированию.
IP-дейтаграмма состоит из заголовка и данных.
Заголовок дейтаграммы состоит из 32-разрядных слов и имеет переменную длину, зависящую от размера поля "Options", но всегда кратную 32 битам. За заголовком непосредственно следуют данные, передаваемые в дейтаграмме.
Формат заголовка:
Рисунок 1.
Значения полей заголовка следующие.
Ver (4 бита) - версия протокола IP, в настоящий момент используется версия 4, новые разработки имеют номера версий 6-8.
IHL (Internet Header Length) (4 бита) - длина заголовка в 32-битных словах; диапазон допустимых значений от 5 (минимальная длина заголовка, поле "Options" отсутствует) до 15 (т.е. может быть максимум 40 байт опций).
TOS (Type Of Service) (8 бит) - значение поля определяет приоритет дейтаграммы и желаемый тип маршрутизации. Структура байта TOS:
Рисунок 2.
Три младших бита ("Precedence") определяют приоритет дейтаграммы:
111 - управление сетью
110 - межсетевое управление
101 - CRITIC-ECP
100 - более чем мгновенно
011 - мгновенно
010 - немедленно
001 - срочно
000 - обычно
Биты D,T,R,C определяют желаемый тип маршрутизации:
D (Delay) - выбор маршрута с минимальной задержкой,
T (Throughput) - выбор маршрута с максимальной пропускной способностью,
R (Reliability) - выбор маршрута с максимальной надежностью,
C (Cost) - выбор маршрута с минимальной стоимостью.
В дейтаграмме может быть установлен только один из битов D,T,R,C. Старший бит байта не используется.
Реальный учет приоритетов и выбора маршрута в соответствии со значением байта TOS зависит от маршрутизатора, его программного обеспечения и настроек. Маршрутизатор может поддерживать расчет маршрутов для всех типов TOS, для части или игнорировать TOS вообще. Маршрутизатор может учитывать значение приоритета при обработке всех дейтаграмм или при обработке дейтаграмм, исходящих только из некоторого ограниченного множества узлов сети, или вовсе игнорировать приоритет.
Total Length (16 бит) - длина всей дейтаграммы в октетах, включая заголовок и данные, максимальное значение 65535, минимальное - 21 (заголовок без опций и один октет в поле данных).
ID (Identification) (16 бит), Flags (3 бита), Fragment Offset (13 бит) используются для фрагментации и сборки дейтаграмм и будут подробнее рассмотрены ниже в п. 2.4.1.
TTL (Time To Live) (8 бит) - "время жизни" дейтаграммы. Устанавливается отправителем, измеряется в секундах. Каждый маршрутизатор, через который проходит дейтаграмма, переписывает значение TTL, предварительно вычтя из него время, потраченное на обработку дейтаграммы. Так как в настоящее время скорость обработки данных на маршрутизаторах велика, на одну дейтаграмму тратится обычно меньше секунды, поэтому фактически каждый маршрутизатор вычитает из TTL единицу. При достижении значения TTL=0 дейтаграмма уничтожается, при этом отправителю может быть послано соответствующее ICMP-сообщение. Контроль TTL предотвращает зацикливание дейтаграммы в сети.
Protocol (8 бит) - определяет программу (вышестоящий протокол стека), которой должны быть переданы данные дейтаграммы для дальнейшей обработки. Коды некоторых протоколов приведены в таблице 1.
Код |
Протокол |
Описание |
1 |
ICMP |
Протокол контрольных сообщений |
2 |
IGMP |
Протокол управления группой хостов |
4 |
IP |
IP поверх IP (инкапсуляция) |
6 |
TCP |
TCP |
8 |
EGP |
Протокол внешней маршрутизации (устарел) |
9 |
IGP |
Протокол внутренней маршрутизации (устарел) |
17 |
UDP |
UDP |
46 |
RSVP |
Протокол резервирования ресурсов при мультикастинге |
88 |
IGRP |
Протокол внутренней маршрутизации от фирмы cisco |
89 |
OSPF |
Протокол внутренней маршрутизации |
Таблица 1.
Header Checksum (16 бит) - контрольная сумма заголовка, представляет из себя 16 бит, дополняющие биты в сумме всех 16-битовых слов заголовка. Перед вычислением контрольной суммы значение поля "Header Checksum" обнуляется. Поскольку маршрутизаторы изменяют значения некоторых полей заголовка при обработке дейтаграммы (как минимум, поля "TTL"), контрольная сумма каждым маршрутизатором пересчитывается заново. Если при проверке контрольной суммы обнаруживается ошибка, дейтаграмма уничтожается.
Source Address (32 бита) - IP-адрес отправителя.
Destination Address (32 бита) - IP-адрес получателя.
Options - опции, поле переменной длины. Опций может быть одна, несколько или ни одной. Опции определяют дополнительные услуги модуля IP по обработке дейтаграммы, в заголовок которой они включены.
Padding - выравнивание заголовка по границе 32-битного слова, если список опций занимает нецелое число 32-битных слов. Поле "Padding" заполняется нулями.
Разрабатываемая модель IP пакета должна включать в себя все вышеперечисленные поля. Помимо данных полей необходимо ввести дополнительные поля, учитывающие следующее:
2.3 Моделирование протоколов маршрутизации
Цель моделирования: Создание в памяти компьютера механизма получения таблицы маршрутизации для любого сетевого объекта.
Процесс маршрутизации дейтаграмм состоит в определении следующего узла (next hop) в пути следования дейтаграммы и пересылки дейтаграммы этому узлу, который является либо узлом назначения, либо промежуточным маршрутизатором, задача которого - определить следующий узел и переслать ему дейтаграмму. Ни узел-отправитель, ни любой промежуточный маршрутизатор не имеют информации о всей цепочке, по которой пересылается дейтаграмма; каждый маршрутизатор, а также узел-отправитель, основываясь на адресе назначения дейтаграммы, находит только следующий узел ее маршрута.
Маршрутизация дейтаграмм осуществляется на уровне протокола IP.
Маршрутизация выполняется на основе данных, содержащихся в таблице маршрутов. Строка в таблице маршрутов состоит из следующих полей:
адрес сети назначения;
адрес следующего маршрутизатора (то есть узла, который знает, куда дальше отправить дейтаграмму, адресованную в сеть назначения);
вспомогательные поля.
Таблица может составляться вручную или с помощью специализированных протоколов. Каждый узел сети, в том числе и хост, имеет таблицу маршрутов, хотя бы самую простую.
Таблица маршрутов может заполняться различными способами. Статическая маршрутизация применяется в том случае, когда используемые маршруты не могут измениться в течение времени, например, в случае, где просто отсутствуют какие-либо альтернативные маршруты. Статические маршруты конфигурируются администратором сети или конкретного узла.
В случае объединения сетей со сложной топологией, когда существует несколько вариантов маршрутов от одного узла к другому и (или) когда состояние сетей (топология, качество каналов связи) изменяется с течением времени, таблицы маршрутов составляются динамически с помощью различных протоколов маршрутизации.
Протоколы маршрутизации не осуществляют собственно маршрутизацию дейтаграмм - она в любом случае производится модулем IP согласно записям в таблице маршрутов. Протоколы маршрутизации на основании тех или иных алгоритмов динамически редактируют таблицу маршрутов, то есть вносят и удаляют записи, при этом часть записей может по-прежнему статически вноситься администратором.
В зависимости от алгоритма работы различают дистанционно-векторные протоколы (distance vector protocols) и протоколы состояния связей (link state protocols).
По области применения существует разделение на протоколы внешней (exterior) и внутренней (interior) маршрутизации.
Дистанционно-векторные протоколы реализуют алгоритм Беллмана-Форда (Bellman-Ford). Общая схема их работы такова: каждый маршрутизатор периодически широковещательно рассылает информацию о расстоянии от себя до всех известных ему сетей ("вектор расстояний"). В начальный момент времени, разумеется, рассылается информация только о тех сетях, к которым маршрутизатор подключен непосредственно.
Также каждый маршрутизатор, получив от кого-либо вектор расстояний, в соответствии с полученной информацией корректирует уже имеющиеся у него данные о достижимости сетей или добавляет новые, указывая маршрутизатор, от которого получен вектор, в качестве следующего маршрутизатора на пути в данные сети. Через некоторое время алгоритм сходится и все маршрутизаторы имеют информацию о маршрутах до всех сетей.
Дистанционно-векторные протоколы хорошо работают только в небольших сетях.
При работе протоколов состояния связей каждый маршрутизатор контролирует состояние своих связей с соседями и при изменении состояния (например, при обрыве связи) рассылает широковещательное сообщение, после получения которого все остальные маршрутизаторы корректируют свои базы данных и пересчитывают маршруты. В отличие от дистанционно-векторных протоколов протоколы состояния связей создают на каждом маршрутизаторе базу данных, описывающую полный граф сети и позволяющую локально и, следовательно, быстро производить расчет маршрутов.
Распространенный протокол такого типа, OSPF, базируется на алгоритме SPF (Shortest Path First) поиска кратчайшего пути в графе, предложенном Дейкстрой (E.W.Dijkstra).
Протоколы состояния связей существенно сложнее дистанционно-векторных, но обеспечивают более быстрое, оптимальное и корректное вычисление маршрутов.
Протоколы внутренней маршрутизации (например, RIP, OSPF; собирательное название IGP - Interior Gateway Protocols) применяются на маршрутизаторах, действующих внутри автономных систем. Автономная система - это наиболее крупное деление Интернет, представляющее из себя объединение сетей с одинаковой маршрутизационной политикой и общей администрацией, например, совокупность сетей компании Глобал Один и ее клиентов в России.
Область действия того или иного протокола внутренней маршрутизации может охватывать не всю автономную систему, а только некоторое объединение сетей, являющееся частью автономной системы. Такое объединение мы будем называть системой сетей, или просто системой, иногда с указанием протокола маршрутизации, действующего в этой системе, например: RIP-система, OSPF-система.
Маршрутизация между автономными системами осуществляется пограничными (border) маршрутизаторами, таблицы маршрутов которых составляются с помощью протоколов внешней маршрутизации (собирательное название EGP - Exterior Gateway Protocols). Особенность протоколов внешней маршрутизации состоит в том, что при расчете маршрутов они должны учитывать не только топологию графа сети, но и политические ограничения, вводимые администрацией автономных систем на маршрутизацию через свои сети трафика других автономных систем. В настоящее время наиболее распространенным протоколом внешней маршрутизации является BGP
Типы записей в таблице маршрутизации:
Каждая запись в таблице маршрутизации считается маршрутом и может иметь один из следующих типов.
1) Маршрут к сети
Маршрут к сети ведет к сети, входящей в объединенную сеть и имеющей указанный код (идентификатор).
2) Маршрут к узлу
Маршрут к узлу ведет к конкретному узлу в объединенной сети, обладающему указанным адресом (кодом сети и кодом узла). Маршруты к узлу обычно используются для создания пользовательских маршрутов к отдельным узлам с целью оптимизации или контроля сетевого трафика.
3) Маршрут по умолчанию
Маршрут по умолчанию используется, если в таблице маршрутизации не были найдены подходящие маршруты. Например, если маршрутизатор или узел не могут найти нужный маршрут к сети или маршрут к узлу, то используется маршрут по умолчанию. Маршрут по умолчанию упрощает настройку узлов. Вместо того чтобы настраивать на узлах маршруты ко всем сетям объединенной сети, используется один маршрут по умолчанию для перенаправления всех пакетов с адресами сетей, не обнаруженными в таблице маршрутизации.
Рассмотрим структуру таблицы маршрутизации сетевого объекта. Данная структура подлежит моделированию наряду с моделированием структуры IP пакета.
Каждая запись таблицы маршрутизации состоит из следующих информационных полей.
1) Код сети
Код сети (или адрес узла для маршрута к узлу). На IP-маршрутизаторах существует дополнительное поле маски подсети, позволяющее выделить код IP-сети из IP-адреса назначения.
2) Адрес пересылки
Адрес, по которому перенаправляются пакеты. Адресом пересылки может быть аппаратный адрес или IP-адрес узла. Для сетей, к которым непосредственно подключен узел или маршрутизатор, поле адреса пересылки может содержать адрес интерфейса, подключенного к сети.
3) Интерфейс
Сетевой интерфейс, используемый при перенаправлении пакетов, предназначенных для сети с данным кодом. Он может задаваться номером порта или другим логическим идентификатором.
4) Метрика
Стоимость использования маршрута. Обычно лучшими считаются маршруты, имеющие наименьшую метрику. При наличии нескольких маршрутов к нужной сети назначения выбирается маршрут с наименьшей метрикой. Некоторые алгоритмы маршрутизации позволяют хранить в таблице маршрутизации только один маршрут к сети с данным кодом, даже при наличии нескольких таких маршрутов. В таком случае метрика используется маршрутизатором для выбора маршрута, заносимого в таблицу маршрутизации.
Вышеприведенный список содержит лишь список полей типичной таблицы маршрутизации, используемой маршрутизаторами. Поля реальных таблиц маршрутизации различных маршрутизируемых протоколов могут отличаться.
Использованные средства разработки
В качестве среды разработки была использована среда Borland Delphy 7.0. Delphi - это достаточно новый продукт Borland International для быстрого создания приложений (RAD).
Высокопроизводительный инструмент визуального построения приложений, работающих с базами данных в архитектуре клиент-сервер, Internet/Intranet, а также для локальных машин и файл-серверной архитектуры. Этот инструментарий включает в себя настоящий компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в Microsoft Visual Basic или в других инструментах визуального проектирования. Лежащий в основе Delphi язык - Object Pascal, который является расширением объектно-ориентированного языка Pascal (Turbo/Borland Pascal, начиная с версии 5.5). В Delphi также входят локальный SQL-сервер InterBase 4.0, генераторы отчетов, библиотеки визуальных компонентов, и прочие компоненты, необходимое для того, чтобы чувствовать себя совершенно уверенным при профессиональной разработке информационных систем или просто программ для Windows-среды.
Delphi предназначен прежде всего профессиональным разработчикам, желающим очень быстро разрабатывать приложения. Delphi производит небольшие по размерам высокоэффективные исполняемые модули (.exe и .dll).
Преимущества Delphi по сравнению с аналогичными программными продуктами:
Быстрота разработки приложения.
Высокая производительность разработанного приложения.
Низкие требования разработанного приложения к ресурсам компьютера.
Наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi.
Возможность разработки новых компонент и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходниках)
Удачная проработка иерархии объектов
Де-факто уже доступно огромное количество визуальных компонентов третьих фирм, часть из которых freeware, часть shareware, часть - коммерческие.
Состав разрабатываемого комплекса эмулятора маршрутизируемой IP сети
При создании любой компьютерной модели, весь процесс моделирования делится на 2 этапа.
Учитывая вышесказанное, при разработке эмулятора маршрутизируемой IP сети, были спроектированы два программных модуля:
- модуль подготовки исходных данных - Network_object_editor.exe
- модуль эмулятора - IP_network_emulator.exe
На рисунке 3 изображена структурная схема программного комплекса «Эмулятор IP сети»
Модули «Редактор объектов сетевого эмулятора» и «Эмулятор сети» выполнены в виде отдельных исполняемых модулей в среде Windows. Вспомогательные компоненты хранятся в виде дополнительных файлов.
Рисунок 3.
Структура модуля подготовки исходных данных
Рассмотрим структуру модуля подготовки данных. Функциональная структурная схема изображена на рисунке 4. Она включает в себя графический интерфейс пользователя, при помощи которого оператор выполняет необходимые действия по созданию шаблонов сетевых объектов, а также подмодули, осуществляющие непосредственно изменение данных объектов различных типов.
Рисунок 4.
Основное назначение модуля редактора создание конфигурационного файла Net-Objects.ini.
В данном модуле предусмотрена подготовка макетов сетевых объектов следующих типов:
1. Каналы.
2. Узлы (Host).
3. Модемы.
4. Мосты.
5. Конверторы.
6. Концентраторы.
7. Коммутаторы
8. Маршрутизаторы/коммутаторы с поддержкой маршрутизации 3-го уровня.
Устройства типов: 1,3,4,5,6,7 работают на 1 и 2 уровне эталонной модели OSI, устройства типов 1 и 8 на 1,2 и 3 уровне.
Классификация объектов по типам произведена на основе анализа телекоммуникационного рынка. Выбранная классификация объектов позволяет создать необходимое количество шаблонов сетевых объектов для дальнейшего их использования в сетевом эмуляторе.
Характеристики шаблонов всех объектов сети заносятся в файл Net-Objects.ini в виде отдельных секций.
Имя каждой секции заносится в файл в виде [Имя_объекта+{номер}]. Таким образом, для каждого объекта формируются уникальные имена.
В каждой секции отдельный параметр записывается в виде:
Имя_Параметра = Значение_параметра.
Рассмотрим и приведем, учитывая их важность, структуру данных с указанием типов полей подготавливаемых шаблонов для объекта каждого типа.
Структура объекта:
Chanell_rec = record /// Запись для канала
Name: string; /// Имя канала
UIN: integer; /// Уникальный номер объекта
Description: string; /// Описание объекта
Bitmap: string; /// Название графического объекта из катлога bitmaps
Length: integer; /// Длина канала в метрах
CanDelete: boolean; /// Возможно-ли удалить запись в редакторе
Данная структура позволяет создать шаблон канала связи любого типа. Параметр Length позовляет вычислить задержку пакета при прохождении по каналу связи.
Структура объекта:
Host_rec = record
Name: string; /// Имя объекта
UIN: integer; /// Уникальный номер объекта
Description: string; /// Описание объекта
Bitmap: string; /// Название графического объекта из катлога bitmaps
Vendor_eq: Integer; /// эквивалент производителю
/// Основные характеристики хоста
IP_address: string; /// IP адрес
Mask: string; /// маска
Gateway: string; /// шлюз
DNS: string; /// IP адрес DNS сервера
Routing_table: string; /// Таблица маршрутизации (все роуты разделяются ;)
Interface_type: integer; /// Тип интерфейса
Interface_type_description: string; /// Описание типа интерфейса
/// Дополнительные характеристики хоста
DNS_server: boolean; /// HOST - DNS server ?
FTP_server: boolean; /// HOST - FTP server ?
WWW_server: boolean; /// HOST - WWW server ?
TELNET_server: boolean; /// HOST - Telnet server ?
/// Параметры ДНС сервера
DNS_server_forward_table: string; /// Прямая зона ДНС сервера, все записи через ;
DNS_server_reverse_table: string; /// Обратная зона ДНС сервера, все записи через ;
/// Параметры FTP сервера
FTP_server_directories: string; /// Сисок катологов сервера через ";"
/// Параметры WWW сервера
WWW_server_HTML: string; /// HTML страница веб-сервера
/// Параметры Telnet сервера
TELNET_server_directories: string; /// Сисок катологов сервера через ";"
Connected_OBJIndex:integer; /// Индекс подключеного объекта
Connected_IFIndex:integer; /// Индекс подключеного интерфейса
Connected_IF_type:integer; /// Тип подключаемого интерфейса
IF_connected:boolean; /// Интерфейс подключен?
CanDelete: boolean; /// Возможно-ли удалить запись в редакторе
Данная структура позволяет описать оконечный узел (host), любого типа, а также определить определенную сетевую роль для узла. Наиболее важными параметрами узла являются IP_address, Mask, Gateway а также Routing_table.
Структура объекта:
Modem_rec = record /// Запись для модема
Name: string; /// Название
UIN: integer; /// Уникальный номер объекта
Description: string; /// Описание объекта
Bitmap: string; /// Название графического объекта из катлога bitmaps
Vendor_eq: Integer; /// эквивалент производителю
Remote_managment: boolean; /// Удаленное администрирование ?
Interface_type: integer; /// Тип интерфейса
Interface_type_description: string; /// Описание интерфейса
Line_code:integer; /// Тип кодирования
Line_code_description:string; /// Описание Кодирования линии
Line_length_max:integer; /// Максимальная длина линии
Line_type_code:integer; /// Тип линии (двух, 4-х пров, коаксиал, оптика, и т.п.
RM_Interface_type:integer; /// Тип управляющего интерфейса
RM_Interface_type_description:string; /// Описание управляющего интерфейса
RM_Interface_SPEED: integer; /// Скорость в упр. интерфейсе
RM_Interface_IP: string; /// IP адрес для упр.
RM_Interface_MASK: string; /// маска
RM_Interface_GW: string; /// шлюз
Delay: integer; /// Задержка, вносимая оборудованием в мсек.
CanDelete: boolean; /// Возможно-ли удалить запись в редакторе
Данная структура позволяет описать шаблон модема. В данном типе используется предустановленное количество интерфейсов (1) и линейных выходов (1).
Структура объекта:
Bridge_rec = record /// Запись для моста
Name: string; /// Название
UIN: integer; /// Уникальный номер объекта
Description: string; /// Описание объекта
Bitmap: string; /// Название графического объекта из катлога bitmaps
Vendor_eq: Integer; /// эквивалент производителю
Remote_managment: boolean; /// Удаленное администрирование ?
Interface_type: integer; /// Тип интерфейса
Interface_type_description: string; /// Описание интерфейса
Line_code:integer; /// Тип кодирования
Line_length_max:integer; /// Максимальная длина линии
Line_code_description:string; /// Описание Кодирования линии
Line_type_code:integer; /// Тип линии (двух, 4-х пров, коаксиал, оптика, и т.п.
RM_Interface_type:integer; /// Тип управляющего интерфейса
RM_Interface_type_description:string; /// Описание управляющего интерфейса
RM_Interface_SPEED: integer; /// Скорость в упр. интерфейсе
RM_Interface_IP: string; /// IP адрес для упр.
RM_Interface_MASK: string; /// маска
RM_Interface_GW: string; /// шлюз
Delay: integer; /// Задержка, вносимая оборудованием в мсек.
CanDelete: boolean; /// Возможно-ли удалить запись в редакторе
Данная структура позволяет описать шаблон моста.
Структура объекта:
Media_converter_rec = record /// Запись для медиа конвертера
Name: string; /// Название
UIN: integer; /// Уникальный номер объекта
Description: string; /// Описание объекта
Bitmap: string; /// Название графического объекта из катлога bitmaps
Vendor_eq: Integer; /// эквивалент производителю
Remote_managment: boolean; /// Удаленное администрирование ?
Interface_type: integer; /// Тип интерфейса
Interface_type_description: string; /// Описание интерфейса
Line_code:integer; /// Тип кодирования
Line_length_max:integer; /// Максимальная длина линии
Line_code_description:string; /// Описание Кодирования линии
Line_type_code:integer; /// Тип линии (двух, 4-х пров, коаксиал, оптика, и т.п.
RM_Interface_type:integer; /// Тип управляющего интерфейса
RM_Interface_type_description:string; /// Описание управляющего интерфейса
RM_Interface_SPEED: integer; /// Скорость в упр. интерфейсе
RM_Interface_IP: string; /// IP адрес для упр.
RM_Interface_MASK: string; /// маска
RM_Interface_GW: string; /// шлюз
Delay: integer; /// Задержка, вносимая оборудованием в мсек.
CanDelete: boolean; /// Возможно-ли удалить запись в редакторе
Данная структура позволяет описать шаблон конвертора.
Структура объекта:
L2hub_rec = record /// Запись для концентратора
Name: string; /// Название
UIN: integer; /// Уникальный номер объекта
Description: string; /// Описание объекта
Bitmap: string; /// Название графического объекта из катлога bitmaps
Vendor_eq: Integer; /// эквивалент производителю
Remote_managment: boolean; /// Удаленное администрирование ?
Interface1_count: integer; /// Количество интерфейсов 1-го типа
Interface1_type: integer; /// Тип интерфейса
Interface1_type_description: string; /// Описание интерфейса
Interface2_count: integer; /// Количество интерфейсов 2-го типа
Interface2_type: integer; /// Тип интерфейса
Interface2_type_description: string; /// Описание интерфейса
…………….
Interface10_count: integer; /// Количество интерфейсов 10-го типа
Interface10_type: integer; /// Тип интерфейса
Interface10_type_description: string; /// Описание интерфейса
RM_Interface_type:integer; /// Тип управляющего интерфейса
RM_Interface_type_description:string; /// Описание управляющего интерфейса
RM_Interface_SPEED: integer; /// Скорость в упр. интерфейсе
RM_Interface_IP: string; /// IP адрес для упр.
RM_Interface_MASK: string; /// маска
RM_Interface_GW: string; /// шлюз
Delay: integer; /// Задержка, вносимая оборудованием в мсек.
CanDelete: boolean; /// Возможно-ли удалить запись в редакторе
Данная структура позволяет описать шаблон концентратора. В данном типе возможно задание до 10 различных типов сетевых интерфейсов с произвольным количеством портов для каждого типа интерфейсов.
Структура объекта:
L2switch_rec = record /// Запись для коммутатора
Name: string; /// Название
UIN: integer; /// Уникальный номер объекта
Description: string; /// Описание объекта
Bitmap: string; /// Название графического объекта из катлога bitmaps
Vendor_eq: Integer; /// эквивалент производителю
Remote_managment: boolean; /// Удаленное администрирование ?
Interface1_count: integer; /// Количество интерфейсов 1-го типа
Interface1_type: integer; /// Тип интерфейса
Interface1_type_description: string; /// Описание интерфейса
Interface2_count: integer; /// Количество интерфейсов 2-го типа
Interface2_type: integer; /// Тип интерфейса
Interface2_type_description: string; /// Описание интерфейса
…………
Interface10_count: integer; /// Количество интерфейсов 10-го типа
Interface10_type: integer; /// Тип интерфейса
Interface10_type_description: string; /// Описание интерфейса
RM_Interface_type:integer; /// Тип управляющего интерфейса
RM_Interface_type_description:string; /// Описание управляющего интерфейса
RM_Interface_SPEED: integer; /// Скорость в упр. интерфейсе
RM_Interface_IP: string; /// IP адрес для упр.
RM_Interface_MASK: string; /// маска
RM_Interface_GW: string; /// шлюз
Delay: integer; /// Задержка, вносимая оборудования
CanDelete: boolean; /// Возможно-ли удалить запись в редакторе
Данная структура позволяет описать шаблон коммутатора. В данном типе возможно задание до 10 различных типов сетевых интерфейсов с произвольным количеством портов для каждого типа интерфейсов.
Структура объекта:
L3s_router_rec = record /// Запись для коммутатора 3 уровня, маршрутизатора
Name: string; /// Название
UIN: integer; /// Уникальный номер объекта
Description: string; /// Описание объекта
Bitmap: string; /// Название графического объекта из катлога bitmaps
Vendor_eq: Integer; /// эквивалент производителю
Remote_managment: boolean; /// Удаленное администрирование ?
Interface1_count: integer; /// Количество интерфейсов 1-го типа
Interface1_type: integer; /// Тип интерфейса
Interface1_type_description: string; /// Описание интерфейса
Interface2_count: integer; /// Количество интерфейсов 2-го типа
Interface2_type: integer; /// Тип интерфейса
Interface2_type_description: string; /// Описание интерфейса
……………………
Interface10_count: integer; /// Количество интерфейсов 10-го типа
Interface10_type: integer; /// Тип интерфейса
Interface10_type_description: string; /// Описание интерфейса
Static_routing_support: boolean; /// Статический роутинг ?
Static_routing_table: string; /// Таблица статического роутинга через ","
RIP_routing_support: boolean; /// RIP роутинг ?
RIP_networks: string; /// Таблица IP сетей через ","
OSPF_routing_support: boolean; /// OSPF роутинг ?
OSPF_parametrs: string; /// OSPF параметы через ","
OSPF_if: string; /// OSPF Интерфейсы через ","
EIGRP_routing_support: boolean; /// EIGRP роутинг ?
EIGRP_networks: string; /// Таблица IP сетей через ","
RM_Interface_type:integer; /// Тип управляющего интерфейса
RM_Interface_type_description:string; /// Описание управляющего интерфейса
RM_Interface_SPEED: integer; /// Скорость в упр. интерфейсе
RM_Interface_IP: string; /// IP адрес для упр.
RM_Interface_MASK: string; /// маска
RM_Interface_GW: string; /// шлюз
Delay: integer; /// Задержка, вносимая оборудования
CanDelete: boolean; /// Возможно-ли удалить запись в редакторе
Данная структура позволяет описать шаблон маршрутизатора. В данном типе возможно задание до 10 различных типов сетевых интерфейсов с произвольным количеством портов для каждого типа интерфейсов. Также, данная структура предусматривает наличие специфических параметров, описывающих возможности оборудования в плане применяемых протоколов динамической маршрутизации.
Дополнительно используются структуры, описывающие производителей оборудования, возможные варианты интерфейсов оборудования, типов кодирования сигналов и т.п. характеристики. Приведем краткий обзор этих данных:
/////////////////////////// Описание типов поставщиков оборудования
vendor_unknown: tip = (name: 'Неизвестный производитель'; data: 0);
vendor_cisco: tip = (name: 'Cisco Systems'; data: 1);
vendor_3com: tip = (name: '3com'; data: 2);
vendor_at: tip = (name: 'Allied Telesyn'; data: 3);
vendor_avaya: tip = (name: 'Alvaya'; data: 4);
vendor_tainet: tip = (name: 'Tainet'; data: 5);
vendor_rad: tip = (name: 'RAD'; data: 6);
vendor_zyx: tip = (name: 'ZyXel'; data: 7);
vendor_penril: tip = (name: 'Penril'; data: 8);
vendor_zelax: tip = (name: 'Zelax'; data: 9);
vendor_microsoft: tip = (name: 'Microsoft corp.'; data: 10);
vendor_Linux: tip = (name: 'Linux'; data: 11);
/////////////////////////// Описание типов интерфейсов оборудования на физическом уровне
if_unknown: tip = (name: 'Неизвестный физический интерфейс'; data: 0);
if_ehernet: tip = (name: 'Ethernet'; data: 1);
if_Fastehernet: tip = (name: 'Fast Ethernet' ; data: 2);
if_Gigabitehernet:tip = (name: 'Gigabit Ethernet'; data: 3);
if_10Gigabitehernet:tip = (name: '10 Gigabit Ethernet'; data: 4);
if_async: tip = (name: 'Asyncnious interface (RS-232)'; data: 5);
if_sync: tip = (name: 'Synchro interface (RS-232, V.35, RS-449, RS-530)'; data: 6);
if_e1: tip = (name: 'E1 interface (G703)'; data: 7);
if_atm: tip = (name: 'ATM interface'; data: 8);
if_token_ring: tip = (name: 'Token Ring interface'; data: 9);
if_FDDI: tip = (name: 'FDDI interface'; data: 10);
/////////////////////////// Описание типов протоколов канального уровня
l2_enc_unknown: tip = (name: 'Неизвестный протокол канального уровня'; data: 0);
l2_enc_ppp: tip = (name: 'Point-to-point protocol (PPP)'; data: 1);
l2_enc_hdlc: tip = (name: 'HDLC protocol (HDLC)'; data: 2);
l2_enc_x25: tip = (name: 'X.25 protocol'; data: 3);
l2_enc_frame_relay: tip = (name: 'Frame relay protocol'; data: 4);
l2_enc_ethernet:tip = (name: 'Ethernet protocol (802.2, 802.3, ethernet-snap, ethernet II)'; data: 5);
l2_enc_fastethernet:tip = (name: 'Fast Ethernet protocol (802.3u)'; data: 6);
l2_enc_gigabitethernet:tip = (name: 'Gigabit Ethernet protocol (802.3ab)'; data: 7);
l2_enc_10gigabitethernet:tip = (name: '10 Gigabit Ethernet protocol'; data: 8);
l2_enc_atm:tip = (name: 'ATM protocol'; data: 9);
l2_enc_token_ring:tip = (name: 'Token Ring protocol'; data: 10);
l2_enc_fddi:tip = (name: 'FDDI protocol'; data: 11);
/////////////////////////// Описание типов протоколов сетевого уровня
l3_protocol_unknown: tip = (name: 'Неизвестный протокол сетевого уровня'; data: 0);
l3_protocol_x25: tip = (name: 'X.25 protocol'; data: 1);
l3_protocol_frame_relay: tip = (name: 'Frame relay protocol'; data: 2);
l3_protocol_IP: tip = (name: 'IP protocol'; data: 3);
l3_protocol_IPX: tip = (name: 'IPX protocol'; data: 4);
l3_protocol_ATM: tip = (name: 'ATM protocol'; data: 5);
/////////////////////////// Описание типов протоколов линейного кодирования
l1_code_unknown: tip = (name: 'Неизвестный тип линейного кодирования'; data: 0);
l1_code_hdb3:tip = (name: 'HDB 3'; data: 1);
l1_code_nrz:tip = (name: 'NRZ'; data: 2);
l1_code_b2q:tip = (name: 'B2Q'; data: 3);
l1_code_PAM:tip = (name: 'PAM'; data: 4);
/////////////////////////// Описание типов линейного выхода (для модемов, бриджей и т.п.)
line_type_unknown: tip = (name: 'Неизвестный тип линейного выхода'; data: 0);
line_type_2wire: tip = (name: '2-х проводная медная пара'; data: 1);
line_type_4wire: tip = (name: '4-х проводная медная пара'; data: 2);
line_type_coaxial: tip = (name: 'коаксиальный выход'; data: 3);
line_type_fiber_LC: tip = (name: 'оптический LC выход'; data: 4);
line_type_fiber_SC: tip = (name: 'оптический SC выход'; data: 5);
Алгоритм работы модуля подготовки данных
На рисунке 5 изображена блок схема алгоритма работы программы. Результатом работы изображенного на рисунке алгоритма будет заполнение данными массива памяти программного модуля в соответствии с приведенной в п.3.3. структурой.
Все введенные пользователем данные сохраняются в файле Net-Objects.ini. В процессе сохранения данных предыдущая версия файла Net-Objects.ini сохраняется под другим именем, чтобы при необходимости, можно было осуществить откат сделанных изменений с момента предпоследнего сохранения данных.
Основной цикл данного модуля ожидание вода команды от оператора ЭВМ. После ввода команды она анализируется, и предпринимаются необходимые действия, которые включают в себя возможность создания новых объектов, их редактирования и удаления.
В случае отказа оператора от проведения изменений программа осуществляет откат к ранее имеющемуся состоянию.
К особенности программы, реализованной на базе вышеуказанного алгоритма, относится отсутствие использования специализированных баз данных или СУБД общего применения (например как interbase или mysql). Все данные считываются из конфигурационного файла Net-Objects.ini при запуске программы в оперативную память, в заранее подготовленный массив. Все произведенные изменения заносятся в память в заполненный массив данных объектов. Только по запросу оператора данные могут быть выгружены на диск, обратно в файл Net-Objects.ini. Данное решение значительно понижает требования к компьютерам, на которых будет запускаться данное ПО, облегчается инсталляция и перенос программного обеспечения с одного компьютера на другой. Отсутствие использования специализированных СУБД реализовано за счет использования динамических массивов данных, поддерживаемых средой Borland Delphi 7.0.
Рисунок 5
Реализация программного модуля редактора сетевых объектов в среде Delphi
На основе разработанного алгоритма в среде Delphi создана программа, выполняющая функции редактора сетевых объектов. Внешний вид интерфейса пользователя программы изображен на рисунке 6.
Рисунок 6.
При помощи кнопок управления в нижней части программы можно произвести следующие действия:
При создании или редактировании шаблона канала открывается диалоговое окно, изображенное на рисунке 7.
Рисунок 7
При создании или редактировании шаблона узла открывается диалоговое окно, изображенное на рисунке 8.
Рисунок. 8
При создании или редактировании шаблона модема открывается диалоговое окно, изображенное на рисунке 9.
Рисунок 9.
При создании или редактировании шаблона моста или конвертора открывается диалоговое окно, аналогичное изображенному окну на рисунке 9.
При создании или редактировании шаблона концентратора открывается диалоговое окно, изображенное на рисунке 10.
Рисунок 10.
При создании или редактировании шаблона коммутатора открывается диалоговое окно, аналогичное изображенному окну на рисунке 10.
При создании или редактировании маршрутизатора открывается диалоговое окно, изображенное на рисунке 11.
Рисунок 11.
Структура модуля эмулятора работы IP сети
Рассмотрим структуру модуля эмулятора работы IP сети. Функциональная структурная схема изображена на рисунке 12. Она включает в себя:
Рисунок 12.
Основные задачи модуля эмулятора:
Для создания сетевых карт возможно применение следующих типов шаблонов:
1. Каналы.
2. Узлы (Host).
3. Модемы.
4. Мосты.
5. Конверторы.
6. Концентраторы.
7. Коммутаторы
8. Маршрутизаторы/коммутаторы с поддержкой маршрутизации.
Параметры шаблонов сетевых объектов считываются из файла Net-Objects.ini.
Структура используемых данных аналогична структуре, описанной в п 3.3.
Помимо объектов, указанных в п. 3.3 эмулятор сети использует дополнительные массивы данных, позволяющие эффективно производить имитацию работы сети:
Учитывая значение вышеописанных массивов для работы сетевого эмулятора рассмотрим более подробно их структуру.
Структура массива сетевых объектов:
Net_object_rec = record /// Запись объекта в базе данных карты
Name: string; /// Имя
Description: string; /// Описание объекта
Bitmap: string; /// Название графического объекта из катлога bitmaps
GroupID: Integer; /// Идентификатор группы
ID: Integer; /// Идентификатор объекта в группе
Trust_ID: Integer; /// Сквозной номер объекта (для привязки к bitmap)
UIN: integer; /// Уникальный номер объекта
Console_number:integer; /// Номер назначеной консоли
ConsoleEditor:TJvMemo; /// Ссылка на объект виртуальную консоль
ConsoleBuffer:string; /// буфер консоли
X:integer; /// Позиция X объекта на карте
Y:integer; /// Позиция Y объекта на карте
Refresh: boolean; /// Обновить графическое представление объекта?
Object_is_created:boolean; /// Объект создан?
Object_Handle: Integer; /// Handle объекта.
Net_obj:TJvImgBtn; /// Ссылка на объект графическую репрезентацию сетевого объекта на сетевой карте
Chanell: Chanell_rec; /// Структура для канала
Host:Host_rec; /// Структура для узла
Modem:Modem_rec; /// Структура для модема
Bridge:Bridge_rec; /// Структура для моста
Media_converter:Media_converter_rec; /// Структура для медиа-конвертера
L2hub:L2hub_rec; /// Структура для хаба
L2switch:L2switch_rec; /// Структура для свитча
L3s_router:L3s_router_rec; /// Структура для маршрутизатора
Special:Special_rec; /// Структура для специального объекта
PingMode:boolean; /// режим ping процесса в объекте True=Пинг запущен
PingDestination:string; /// IP адрес назначения пинга
PingsCount:integer; /// счетчик отправленных пакетов
PingsMaxCount:integer; /// Сколько пингов надо послать
PingStartTime:tdatetime; /// время отправки ping пакета
PingEndTime:tdatetime; /// время, когда пинг пакет считается потерянным (не получено эхо)
PingRequestMode:Boolean; /// режим пинга узла true=посылка пакета, false=ожидание ответа
Структура массива Интерфейсов:
If_object_rec = record /// Запись интерфейса в базе данных карты
Name: string; /// Имя
Description: string; /// Описание объекта
UIN: integer; /// Уникальный номер объекта, к которому относится интерфейс
Parent_UIN:integer; /// Уникальный номер родительского объекта
ID: integer; /// порядковый номер интерфейса
Slot:integer; /// номер слота, в который установлен интерфейс
Port:integer; /// номер порта, в который установлен интерфейс
Interface_type: integer; /// Тип интерфейса
IP_Encapsulation:integer; /// Тип энкапсуляции IP протокола
MAC:int64; /// физический адрес
MTU:Integer; /// Размер MTU
Speed: Int64; /// Скорость
Bandwidth: Int64; /// Скорость (административный параметр)
IP_address: string; /// Ip address
IP_mask:string; /// Mask
DCD: Boolean; /// Сигнал DCD
DSR: Boolean; /// Сигнал DSR
DTR: Boolean; /// Сигнал DTR
RTS: Boolean; /// Сигнал RTS
CTS: Boolean; /// Сигнал CTS
Packets_Input:integer; /// Количество принятых пакетов
Packets_Output:integer; /// Количество отправленых пакетов
Bytes_Input:integer; /// Количество принятых байт
Bytes_Output:integer; /// Количество отправленых байт
Errors_Input:integer; /// Количество принятых пакетов с ошибками
Errors_Output:integer; /// Количество отправленых пакетов с ошибками
CD_transitions: integer; /// Количество пропаданий CD
Структура массива записей маршрута:
Routing_table_rec = record /// Запись базе маршрутизации
UIN: integer; /// Уникальный номер объекта, к которому относится запись в таблице маршрутизации
IP_network: string; /// Ip сеть
IP_mask:string; /// Mask
Route_Type:String; /// Тип записи (статика, присоеденненая, динамика и т.п.)
Metric: Integer; /// Метрика
IP_route_destanation: string; /// IP адрес, через который роутится сетка
IF_route_destanation: integer; /// Интерфейс, через который роутится сетка
Структура массива соединений:
Link_table_rec = record /// Запись базе соединений
UIN1: integer; /// Уникальный номер 1 интерфейса
OBJ1:integer; /// Ссылка на объект, к которому принадлежит интерфейс1
UIN2: integer; /// Уникальный номер 2 интерфейса
OBJ2:integer; /// Ссылка на объект, к которому принадлежит интерфейс2
IfType:integer; /// Тип соединенных интерфейсов
Структура массива IP пакетов:
IP_Packets_table_rec = record /// Запись базе IP пакетов
UIN: integer; /// Уникальный номер объекта, к которому относится пакет в данный момент
Can_Deleted: Boolean; /// Пакет может быть удален
Busy: Boolean; /// Пакет занят процессом
If_UIN: integer; /// Идентификатор интерфейса, со стороны которого пришел пакет.
IP_Version:byte; /// Версия протокола (4 бита)
IP_Header_Length:byte; /// Длина заголовка (4 бита)
IP_TOS:byte; /// Тип сервиса
IP_Total_Length:word; /// общая длина IP пакета
IP_Identification:word; /// Идентификатор пакета
IP_Frag_Flag:byte; /// Идентификатор фрагментации (2 бита)
IP_Frag_Offset:word; /// Смещение фрагмента (13 бит)
IP_TTL:byte; /// Время жизни RFC 791
IP_Protocol:byte; /// IP протокол
IP_Header_Checksum:word; /// Контрольная сумма заголовка
IP_source: string; /// IP адрес отправителя пакета
IP_destination: string; /// IP адрес назначения пакета
IP_option:dword; ///
IP_data: array[1..1480] of byte; /// Поле данных пакета
Алгоритм работы модуля эмулятора IP сети
На рисунках 13,14 и 15 изображена блок схема алгоритма работы программы. Результатом работы изображенного на рисунке алгоритма будет:
Все введенные пользователем данные сохраняются в виде файлов в каталоге maps.
В данном программном модуле присутствуют несколько постоянно работающих циклов.
1. Цикл обработки интерфейсных команд модуля эмулятора IPсети. Основная функция ожидание вода команды от оператора ЭВМ. После ввода команды она анализируется, и предпринимаются необходимые действия, которые включают в себя возможность создания новых объектов, их редактирования и удаления.
2. Цикл независимого процесса обработки сетевых пакетов. Основная функция сканирование массива сетевых пакетов с периодом 10 мсек. с целью обнаружения новых пакетов. В случае обнаружения сетевого пакета производится его обработка согласно алгоритму изображенному на рисунке 15. В результате такой обработки пакет логически перемещается от одного сетевого объекта к другому, пока не достигнет адреса назначения, либо не будет отброшен по каким-либо причинам и соответственно удален из массива сетевых пакетов. В этом же цикле реализован алгоритм выбора маршрута в каждом из сетевых объектов на основе анализа маршрутной информации из таблицы маршрутизации.
К нестандартным особенностям данного алгоритма можно отнести следующие характеристики алгоритма:
1. Цикл независимого процесса обработки сетевых пакетов единый для всех объектов. При таком подходе достигается определенная стандартизация в подходе к обработке сетевых пакетов в эмулируемом сетевом оборудовании.
2. Для хранения данных, описывающих свойства всех сетевых интерфейсов, хранения таблицы маршрутизации каждого из сетевого объекта, хранения связей интерфейсов друг с другом также используются единые массивы данных. Принадлежность записи к конкретному сетевому объекту определяется специальным идентификатором, присутствующим в каждом из массивов. Такой подход позволяет также унифицировать подход к обработке информации содержащейся в данных таблицах.
К особенности реализации программы, построенной на базе данного алгоритма относится отсутствие использования специализированных баз данных или СУБД общего применения (например, таких как interbase или mysql). Отсутствие использования специализированных СУБД реализовано за счет использования динамических массивов данных, поддерживаемых средой Borland Delphi 7.0.
Рисунок 13.
Рисунок 14.
Рисунок 15.
Реализация программного модуля сетевого эмулятора в среде Delphi
На основе разработанных алгоритмов в среде Delphi создана программа, выполняющая функции сетевого эумлятора. Внешний вид интерфейса пользователя программы изображен на рисунке 16.
Рисунок 16.
При помощи кнопок управления в верхней и левой части программы можно произвести следующие действия:
Рисунок 17.
Рисунок 18.
Рисунок 19.
4 РАЗРАБОТКА ТЕХНИЧЕСКОЙ ДОКУМЕНТАЦИИ ПО ИСПОЛЬЗОВАНИЮ ЭМУЛЯТОРА
4.1 Системные требования для работы программы сетевого эмулятора
Для обеспечения нормальной работы программного комплекса «Эмулятор IP сети» необходимо использовать следующее оборудование:
4.2 Порядок установки программного обеспечения
Для установки программного обеспечения на компьютере необходимо выполнить следующие действия:
4.3 Порядок проведения работы с программным комплексом
Работа с программным комплексом «Эмулятор IP сети» должна проходить в два этапа.
На первом этапе необходимо с помощью программы Network_object_editor.exe отредактировать необходимые шаблоны сетевых объектов.
На втором этапе необходимо запустить программу IP_network_emulator.exe для последующего построения макета сети и проведения необходимых экспериментов по изучению сети.
Рассмотрим подробно порядок работы с программой Network_object_editor.exe.
После запуска программы пользователь попадает в основное меню программы (рисунок 20).
Рисунок 20.
При помощи закладок в верхней части программы необходимо выбрать нужный тип оборудования (например тип узлы, рисунок 22). Далее необходимо выбрать интересующий шаблон или добавить новый (рисунок 23). После внесения необходимых изменений необходимо выбрать в меню «Файл» пункт «Сохранить», затем пункт «Выход» (рисунок 21).
Рисунок 22.
Рисунок 22.
Рисунок 23.
Рассмотрим подробно порядок работы с программой IP_network_emulator.exe.
После запуска программы пользователь попадает в основное меню программы (рисунок 24).
Рисунок 24.
Для начала работы - создания собственной сетевой карты пользователю необходимо переключиться в режим конструктора, для чего необходимо выбрать в меню «Редактор» пункт «Редактировать сетевую карту». После этого на экране появится дополнительная панель (рисунок 25).
Рисунок 25.
При нажатии «мышкой» на необходимые шаблоны объектов они будут добавлены на сетевую карту (рисунок 26). Для перемещения объектов по карте необходимо использовать механизм Drag And Drop (перетаскивания объектов мышкой в нужные координаты).
Рисунок 26.
Следующим этапом действий будет соединение виртуальных интерфейсов объектов друг с другом. Для этого необходимо правой кнопкой «мышки» вызвать контекстное меню на необходимом объекте и выбрать пункт «соединить интерфейс» (Рисунок 27).
Рисунок 27.
После выбора данного пункта появится диалоговое окно окно выбора интерфейса, который будет подключаться к какому-либо другому сетевому объекту (Рисунок 28).
Рисунок 28.
Далее, выбрав источник подключения, необходимо выбрать объект, к которому будет происходить подключение. В результате этого появится диалоговое окно выбора назначения подключения (Рисунок 29).
Рисунок 29.
По завершении выбора на сетевой карте отразится соответствующее подключение в виде линии, связывающей между собой объекты (Рисунок 30). При организации подключений необходимо обратить внимание, что подключения, возможно, осуществлять только между интерфейсами одинаковых типов. В случае выбора объекта подключения, не содержащего интерфейсы аналогичные типу интерфейса источника подключения, в диалоговом окне назначения подключения будут отсутствовать какие-либо данные о доступных интерфейсах для подключения.
Рисунок 30.
В результате проведения процедуры подключения сетевых объектов друг к другу будет получена некая сетевая топология (например: рисунок 31).
Рисунок 31.
После завершения создания топологии сети необходимо выйти из режима конструктора, для чего необходимо в меню «Редактор» выбрать пункт «Завершить редактирование сетевой карты».
Следующим и завершающим этапом работы с программой является запуск необходимого числа виртуальных консолей и проведение экспериментов над полученной таким образом сетью.
Для запуска виртуальной консоли необходимо выделить мышкой интересующий объект, затем правой кнопкой мышки вызвать контекстное меню и выбрать пункт «Запустить консоль» (Рисунок 27). После этого запустится виртуальная консоль выбранного объекта (рисунок 32).
Рисунок 31.
Данная виртуальная консоль поддерживает различные наборы команд (в зависимости от типа оборудования). Так, например, на рисунке 31 приведен вид консоли для объектов типа «оконечный узел» (хост).
Узнать список доступных команд возможно набрав команду HELP.
Список команд аналогичен командам, применяемым в широко известных ОС Windows, Linux, а также командам поддерживаемых производителями различного сетевого оборудования.
Исследовать работоспособность полученной сети возможно применяя команды PING и TRACEROUTE.
5 РАСЧЕТ НАДЕЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
5.1 Расчет характеристик надежности программного обеспечения
Используемые в данном случае модели надежности представляют интерес прежде всего для прогнозирования отказов в процессе эксплуатации и отладки программы. При этом значения параметров моделей определяют в процессе эксплуатации или отладки программы по данным о моментах возникновения отказов. Отсутствие общих справочных данных объясняется тем, что каждый программист является уникальным технологическим объектом по созданию программ, а каждая его программа - эксклюзивное изделие.
5.2 Методика расчета при прогнозировании отказов программного обеспечения
Рассматриваемая модель основана на следующих допущениях: время до следующего отказа распределено экспоненциально; интенсивность отказов программы пропорциональна количеству оставшихся в программе ошибок.
Согласно этим допущениям вероятность безотказной работы программ как функция времени ti равна:
P(ti)=exp(-li × ti), (1)
где li=С × (N-(i-1)). (2)
Здесь С - коэффициент пропорциональности; N - первоначальное число ошибок программы.
В выражении (1) отсчет времени ti начинается от момента последнего (i-1) отказа программы, а значение li изменяется при прогнозировании разных отказов. Значения C и N в выражении (2) определяются по экспериментально зафиксированным интервалам времени Dti между моментами возникновения отказов в процессе отладки программы. На основе методики максимума правдоподобия значение N получают как решение нелинейного уравнения:
, (3)
где К число экспериментально полученных интервалов между отказами.
Реально значение N получают методом подбора, основываясь на том, что это целое число.
Значение коэффициента пропорциональности С получают как:
. (4)
Данная методика работает для К³2, т.е. надо иметь хотя бы два экспериментально полученных интервала между моментами возникновения ошибок.
5.3 Расчет прогнозирования отказов программного продукта «Эмулятор работы IP сети»
В ходе отладки программы «Эмулятор работы IP сети» зафиксированы интервалы времени Dt1=10, Dt2=20, Dt3=25 между отказами программы. Значения Dt определяются в числе прогонов программы при тестировании. Определим вероятность работоспособности программы P(t4)=exp(-l4 × t4), т.е. отсутствия следующего, четвертого отказа, начиная от момента устранения третьего отказа и среднее время Т4 до следующего отказа программы.
Решаем уравнение (3) относительно N методом перебора.
Для N=4 имеем при К=3
,
152~155
Для N=5
,
210~205,
Наименьшую ошибку обеспечивает N=4, откуда в соответствии с выражением (4):
.
Таким образом вероятность безотказной работы в отсутствии 4-го отказа составляет
P(t4)=exp(-0,02 × t4), а T4=1/l4=50.
Отсчет t4 начинается после возникновения третьего отказа и определяется в единицах времени или в числе прогонов программы.
ЗАКЛЮЧЕНИЕ
Бурное развитие компьютерной техники и сетевых технологий, привело к ускорению удовлетворения потребности современного общества в совершенствовании научных знаний, что в свою очередь позволило повысить технический уровень обработки информации. Современные сетевые технологи достигли качественно-нового уровня, что в свою очередь, позволило удовлетворить потребности общества в информационных услугах.
Однако такое бурное развитие техники привело так же к значительному усложнению техники и используемого сетевого оборудования. Использование широкого спектра телекоммуникационного оборудования для решения народнохозяйственных задач повысило эффективность производства. Но и это же привело к повышению ответственности технического персонала за принятие решений в области управления высокотехнологичным сетевым оборудованием.
В связи с этим возрастает роль вспомогательных средств, позволяющих проводить обучение специалистов навыкам работы с таким оборудованием, а также потребность в средствах моделирования реальных телекоммуникационных систем.
Компьютерное моделирование позволяет отработать на программной модели реальные различные штатные и нештатные ситуации при эксплуатации сложного оборудования.
Применение в качестве учебного и исследовательского инструмента, разработанной в данном дипломе программы позволит обеспечить более качественную подготовку инженеров - телекоммуникационщиков.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ