Из нашего короткого обсуждения протоколов, используемых в окружении IPX следует, что IPX маршрутизуемый протокол, а для того, чтобы передать информацию маршрутизации используется Routing Information Protocol (RIP). IPX-версия RIP подобна IP-версии. Они используют тот же самый путь: одни маршрутизаторы периодически передают содержание своих таблиц маршрутов, а другие обучаются у них, слушая и интегрируя информацию, которую они получают. Хост должен знать только то, что является его локальной сетью, и на какую машину передавать пакеты для других сетей. Маршрутизатор ответственен за перенос этих пакетов.
В IPX-среде нужен еще один класс информации. Service Advertisement Protocol (SAP) несет информацию, какие сервисы являются доступными и на каких машинах. Это протокол SAP, который позволяет пользователям получать, например, списки серверов файлов или печати в сети. Протокол SAP работает при наличии компьютеров, которые обеспечивая сервисы, периодически передают список сервисов, которые они предлагают. Сетевые маршрутизаторы IPX собирают эту информацию и передают ее вместе с информацией о маршрутах. Чтобы быть правильным IPX-маршрутизатором, надо обрабатывать информацию RIP и SAP.
Точно так же, как IP, IPX в Linux обеспечивается демоном ipxd, чтобы выполнить задачи, связанные с управлением маршрутизацией. Снова, точно как с IP, это ядро, которое управляет пересылкой пакетов между сетевыми интерфейсами IPX, но выполняет это согласно набору правил, называемых таблицей маршрутизации IPX (IPX routing table). Демон ipxd поддерживает таблицу, слушая на каждом из активных сетевых интерфейсов и анализируя, когда изменение маршрутизации необходимо. Он также отвечает на запросы компьютеров, которые просят о информации маршрутизации.
Команда ipxd доступна в откомпилированном виде в ряде дистрибутивов и в исходниках с anonymous FTP http://metalab.unc.edu (файл /pub/Linux/system/filesystems/ncpfs/ipxripd-x.xx.tgz ).
Никакая конфигурация не является необходимой для ipxd. При запуске он автоматически управляет маршрутизацией IPX устройств, которые были конфигурированы. Вы должны гарантировать, что Ваши IPX-устройства конфигурированы правильно, используя команду ipx_interface прежде, чем запускаете ipxd. Каждые 30 секунд ipxd проверяет присоединенные локально IPX-сети и автоматически управляют ими. Это обеспечивает средства управления сетями на интерфейсах, которые не могут быть активны все время типа интерфейсов PPP.
Обычно ipxd запускается при старте системы из скрипта rc:
# /usr/sbin/ipxd |
Имеются случаи, когда мы могли бы поставить жесткий IPX-маршрут. Точно как с IP, мы можем делать это с IPX. Команда ipx_route пишет маршрут в таблицы IPX-маршрутизации. Синтаксис очень прост (IPX не поддерживает множественные подсети):
# ipx_route add 203a41bc 31a10103 00002a02b102 |
Вы можете находить адрес узла маршрутизатора командой tcpdump с параметром -e, чтобы отобразить уровень связи в заголовках и найти трафик от маршрутизатора. Если маршрутизатор Linux-машина, Вы можете просто использовать команду ifconfig, чтобы отобразить это.
Вы можете удалять маршрут, используя команду ipx_route:
# ipx_route del 203a41bc |
Вы можете просмотреть список маршрутов, которые являются активными в ядре, просмотром файла /proc/net/ipx_route. Наша таблица маршрутизации пока выглядит следующим образом:
# cat ipx_route Network Router_Net Router_Node 203A41BC 31A10103 00002a02b102 31A10103 Directly Connected |
Компьютеры с несколькими IPX-интерфейсами имеют уникальную комбинацию адресов сеть/узел для каждого из интерфейсов. Чтобы соединяться с таким компьютером, Вы можете использовать любую из этих комбинаций. Когда SAP объявляет сервисы, это обеспечивает адрес сети/узла, связанный с сервисом. На компьютерах с несколькими интерфейсами это означает, что один из интерфейсов должен быть выбран как интерфейс для внесения в таблицы маршрутов, это функция флажка primary интерфейса, о котором мы уже говорили ранее. Но это представляет проблему: маршрут к этому интерфейсу не может всегда быть оптимальным, и если происходит сбой, который изолирует эту сеть от остальной части сети, компьютер станет недостижим даже при том, что имеются другие возможные маршруты к другим интерфейсам. Другие маршруты никогда не будут известны другим компьютерам, потому что они не вносятся в таблицы маршрутов, и ядро не может узнать, что оно должно выбрать другой первичный интерфейс. Чтобы избежать этой проблемы, разработано устройство, которое позволяет IPX-компьютеру быть известным, как независимая от маршрута пара адресов сеть/узел. Это решает нашу проблему потому, что эта новая пара доступна через все интерфейсы.
Рассмотрим сервер, подключенный к двум сетям IPX. Он выбирает один из своих интерфейсов как primary, пусть это будет 0000001a:0800000010aa, и объявляет его точкой доступа для некоего сервиса. Это работает нормально для сети 0000001a, но пользователи сети 0000002c пойдут кружным путем через первую сеть, несмотря на то, что сервер имеет порт и в их сети.
Это решается созданием виртуальной сети, которая является полностью программной конструкцией. Ее лучше рассматривать, как находящуюся внутри IPX-машины. SAP-информация нужна только для распространения адреса этой сети. Такие виртуальные сети известны как внутренние (internal network). Но как другие компьютеры узнают, каким путем достичь этой сети? Удаленные компьютеры направляются к внутренней сети через непосредственно связанные сети главного компьютера. Это означает, что надо смотреть на записи маршрутов, которые обращаются к внутренним сетям машин, имеющих несколько сетевых IPX-интерфейсов. Таким образом, в каждый момент будет выбран оптимальный маршрут. Допустим, мы сконфигурировали внутреннюю IPX-сеть с адресом 0x10000010 и используем адрес хоста 00:00:00:00:00:01. Это тот адрес, который будет нашим первичным интерфейсом. Он будет сообщаться через SAP. Наша маршрутизация отразит эту сеть как доступную через любой из реальных сетевых портов, так что компьютеры будут всегда использовать самый лучший сетевой маршрут, чтобы соединиться с этим сервером.
Для созадния внутренней сети используйте команду ipx_internal_net, входящую в пакет IPX tools (автор Greg Page). Простой пример:
# ipx_internal_net add 10000010 000000000001 |
Для удаления внутренней сети IPX используйте:
# ipx_internal_net del |
Назад | Глобальное оглавление | Вперед |
Настройка интерфейса IPX | Локальное оглавление | Монтирование удаленных томов NetWare |