(Switch to English) (Возврат на главную страницу...)

Network Emulator 3.0

ОГЛАВЛЕНИЕ:

I. Введение

II. Краткое описание программы и интерфейса

III. Рабочие ограничения

IV. Благодарности

V. Где взять?


I. Введение

    Программа Network Emulator (в дальнейшем NE) была задумана в начале 1997 года как игрушка для ее автора. В процессе программирования было обнаружено, что знания по IP сетям, приобретенные до этого момента, были, в основном, отрывочными и часто не совсем верными. Проект NE превратился, по сути, в программу, обучающую ее программиста всем тонкостям технологии на разных уровнях: от базовых понятий (интерфейс, сокет) до особенностей обработки отдельных полей сетевых пакетов. Программа прошла путь от простейшего "роутера пакетов" до интеллектуального организатора виртуальных виртуальных машин: на любом из компьютеров можно запустить несколько программ - аналогов настоящих приложений. Все они будут исполнятся одновременно.
    В дальнейшем появилось и другое приложение NE: обучение студентов принципу администрирования IP сетей. Данное направление использования было с успехом реализовано
Дмитрием Каряевым в процессе проведения лабораторных работ по предмету "Сети ЭВМ" в Ульяновском Государственном Техническом Университете.

    NE был протестирован на работоспособность в следующих операционных средах:

 

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).

     



    Lev Walkin, LMW28
    www.spelio.net.ru
    vlm@spelio.net.ru