(Switch to English) (Возврат на главную страницу...)
|
|
ОГЛАВЛЕНИЕ:
I. ВведениеII. Краткое описание программы и интерфейса
III. Рабочие ограничения
IV. Благодарности
V. Где взять?
![]()
I. Введение Программа Network Emulator (в дальнейшем NE) была задумана в начале 1997 года как игрушка для ее автора. В процессе программирования было обнаружено, что знания по IP сетям, приобретенные до этого момента, были, в основном, отрывочными и часто не совсем верными. Проект NE превратился, по сути, в программу, обучающую ее программиста всем тонкостям технологии на разных уровнях: от базовых понятий (интерфейс, сокет) до особенностей обработки отдельных полей сетевых пакетов. Программа прошла путь от простейшего "роутера пакетов" до интеллектуального организатора виртуальных виртуальных машин: на любом из компьютеров можно запустить несколько программ - аналогов настоящих приложений. Все они будут исполнятся одновременно.
В дальнейшем появилось и другое приложение NE: обучение студентов принципу администрирования IP сетей. Данное направление использования было с успехом реализовано Дмитрием Каряевым в процессе проведения лабораторных работ по предмету "Сети ЭВМ" в Ульяновском Государственном Техническом Университете.
NE был протестирован на работоспособность в следующих операционных средах:
- Microsoft(R) Windows 95
- Microsoft(R) Windows 95 OSR2
- Microsoft(R) Windows 98
- Microsoft(R) Windows NT
II. Краткое описание программы и интерфейса Возможности и используемые технологии:
маршрутизация, система моделирования каналов, IP фильтрация (также в формате для роутеров Cisco), типы пакетов: ICMP, UDP, TCP, низкоуровневые ARP запросы, концепция интерфейсов, концепция сокетов (простой, дейтаграммный и потоковый), эмуляция хостов, свитчей и хабов, процессы: traceroute, talkd, talk, echoer, gated (с BGP), уровень помех на канале, система демонстрации сцены, возможность связывания нескольких NE через реальную сеть TCP/IP.NE сразу разрабатывалась как чисто визуальная среда создания виртуальных IP сетей путем сборки их из виртуальных компьютеров с виртуальными интерфейсами и виртуальными каналами связи между ними. Основным средством манипулирования объектами являются контекстные меню, появляющиеся при нажатии на них правой клавиши мыши.
Визуальными объектами являются:
- Хост
- Свитч
- Хаб
- Интерфейс
- Канал связи (универсальный)
- Коаксиальный кабель Ethernet
- Интерфейс к удаленной сети
В процессе работы оказалось, что визуальные средства плохо помогают, когда нужно выполнить много одинаковых операций или проследить какой-либо процесс в деталях. Проблема была решена вводом двух типов текстовых окон: окна консоли и окна приложения.
![]()
Окно консолиОкно приложения В окне консоли можно посмотреть список активных процессов, список сокетов, убить процесс и т.д. Окно приложения существует для организации диалога между процессом и пользователем, как это было бы при реальных процессах на настоящих машинах. Так как виртуальная операционная система представляет собой имитируемый UNIX, то естественным типом взаимодействия между программой и пользователем является текстовый диалог. Программы на машинах выполняются в виртуальной многозадачной среде виртуального UNIX, так что сбой виртуальной программы не повлияет на работоспособность остальных программ и, естественно, на работоспособность NE в целом.
Как уже было сказано, основное управление происходит нажатием правой клавиши мыши на объекте и использованием контекстного меню. Перемещение объектов выполняется перетягиванием объектов левой клавишей мыши.
Неочевидные действия:
Удаление объекта, помимо меню, - Del. Очистка окна (консоли или приложения) - Ctrl+L. Закрытие окна - Ctrl+D. Перемещение окна - Alt+<перетаскивание левой клавишей мыши>. Изменение размеров окна повторяет предыдущую операцию, но производится над IV-й четвертью окна (нижним правым краем размером 50%x50% от окна).
III. Рабочие ограничения Об интерфейсах. Интерфейсы здесь трех типов: Точка-Точка (point-to-point), Ethernet (или любая среда широковещания) и виртуальный интерфейс loopback, именуемый "заглушка". Так как Ethernet строится на коаксиале или на витой паре, то интерфейсы поддерживают один или несколько типов, и нужно при настройке указать, какой именно тип активен.
О хостах. Хост - это компьютер, подключенный к сети. Предположим, мы имеем настоящий компьютер. В него можно, в принципе установить пяток сетевых карт или модемов. Плюс - виртуальные интерфейсы. Получаем, что для среднего компьютера подходит ограничение в 8 интерфейсов. Поэтому, в NE на хост положено ограничение по количеству интерфейсов: 1 <= Ifaces <= 8. Далее. На хосте можно запускать программы. Ввиду редкого запуска программ, максимальное работающее их количество на хосте составляет 5 штук. Максимальное количество сокетов - тоже в пределах 5-10.
О свитчах и хабах. Свитчи и хабы имеют ограничение на количество интерфейсов 1 <= Ifaces <= 24. Свитчи могут иметь несколько специальных интерфейсов (Module), через которые происходит связь между самими свитчами. Все интерфейсы свитчей поддерживают только витую пару. В отличие от свитчей, хабы имеют один (единственный) интерфейс (первый, сверху слева), поддерживающий коаксиал. Этот интерфейс служит хабу для связи с общим кабелем Ethernet.
Коаксиальный кабель Ethernet также является объектом в структуре NE, так как он все же выполняет некоторый набор действий. Кабель Ethernet - это просто кусок коаксиального кабеля с терминаторами на его концах. К нему могут подключаться до десяти каналов связи. В реальных примерах таким каналом связи можно считать сочленение между коаксиальным кабелем и сетевой картой.
Канал связи - универсальный. Он связывает всех со всеми, при условии что в реальности разъемы объектов совместимы. Например, можно соединить первый интерфейс хаба (BNC), поддерживающий соединение через коаксиал, с кабелем Ethernet (так как он коаксиальный). Но нельзя соединить, например, любой интерфейс свича (UTP) с кабелем Ethernet, или интерфейс Ethernet с интерфейсом Точка-Точка.
Интерфейс к удаленной сети. На него положено ограничение по использованию портов: от 8300 до 8400. Интерфейс подключается только к интерфейсу Точка-Точка.
IV. Благодарности Огромная благодарность персонально Владимиру Бармину за готовность делиться информацией и начальный толчок к изучению UNIX и сетевых технологий. Много интересных идей было подано Дмитрием Каряевым. А его студенты (УлГТУ) популярно разъяснили мне, где я был неправ. Завершающая стадия тестирования происходила при непосредственном участии Кости Бекреева, который внес много предложений и вынес столько же багов. Отдельное спасибо Наталье и Майку Валкиным за большой вклад в меня на протяжении последних 18 лет.
V. Где взять? ![]()
Взять можно здесь: ne30r.zip (600 kb.). (Если Вы не используете Windows 98, перепишите add-on.zip (OleAuto32 & MSVBVM50 = 1100 kb.) поверх содержимого ne30r.zip).