IPX/SPX
Стек IPX/SPX.
Цей стек є оригінальним стеком протоколів фірми Novell, розробленим для мережевої операційної системи NetWare ще на початку 80-х років. Протоколи мережевого і сеансового рівнів Internetwork Packet Exchange (IPX) і Sequenced Packet Exchange (SPX), які й дали назву стеку, є прямою адаптацією протоколів XNS фірми Xerox, поширених набагато менше, ніж стек IPX/SPX. Популярність стека IPX/SPX безпосередньо пов'язана з операційною системою Novell NetWare, що ще зберігає світове лідерство за числом встановлених систем, хоча останнім часом її популярність дещо знизилася і за темпами росту вона відстає від Microsoft Windows NT. Багато особливостей стека IPX/SPX обумовлені орієнтацією ранніх версій ОС NetWare (до версії 4.0) на роботу в локальних мережах невеликих розмірів, що складаються з персональних комп'ютерів із скромними ресурсами. Зрозуміло, що для таких комп'ютерів компанії Novell потрібні були протоколи, для реалізації яких потрібна була б мінімальна кількість оперативної пам'яті (обмеженої в IBM-сумісних комп'ютерах під керуванням MS-DOS обсягом 640 Кбайт) і які б швидко працювали на процесорах невеликої обчислювальної потужності. У результаті, протоколи стека IPX/SPX донедавна добре працювали в локальних мережах, і не дуже – у великих корпоративних мережах, тому що вони занадто перевантажували повільні глобальні зв'язки широкомовними пакетами, що інтенсивно використовуються декількома протоколами цього стека (наприклад, для встановлення зв'язку між клієнтами і серверами). Ця обставина, а також той факт, що стек IPX/SPX є власністю фірми Novell і на його реалізацію потрібно одержувати ліцензію (тобто відкриті специфікації не підтримувалися), довгий час обмежували поширеність його тільки мережами NetWare. Проте з моменту випуску версії NetWare 4.0 Novell внесла і продовжує вносити у свої протоколи серйозні зміни, спрямовані на їхню адаптацію для роботи в корпоративних мережах. Зараз стек IPX/ SPX реалізований не тільки в NetWare, але й у декількох інших популярних мережевих ОС, наприклад SCO UNIX, Sun Solaris, Microsoft Windows NT.
Сімейство протоколів фірми Novell і їх відповідність моделі ISO / OSI представлено на малюнку 1.0.
На фізичному і канальном рівнях в мережах Novell використовуються всі популярні протоколи цих рівнів (Ethernet, Token Ring, FDDI та інші).
На мережевому рівні в стеке Novell працює протокол IPX, а також протоколи обміну маршрутною інформацією RIP і NLSP (аналог протоколу OSPF стека TCP / IP). IPX є протоколом, який займається питаннями адресації і маршрутизації пакетів в мережах Novell. Маршрутні рішення IPX засновані на адресних полях в заголовку його пакету, а також на інформації, що надходить від протоколів обміну маршрутною інформацією. Наприклад, IPX використовує інформацію, що поставляється або протоколом RIP, або протоколом NLSP (NetWare Link State Protocol) для передачі пакетів комп'ютера призначення або наступного маршрутизатор. Протокол IPX підтримує тільки дейтаграммний спосіб обміну повідомленнями, за рахунок чого економно споживає обчислювальні ресурси. Отже, протокол IPX забезпечує виконання трьох функцій: завдання адреси, встановлення маршруту та розсилку дейтаграмм.
Транспортному рівню моделі OSI в стеке Novell відповідає протокол SPX, який здійснює передачу повідомлень з встановленням сполук.
На верхніх прикладному, представницькому і сеансовом рівнях працюють протоколи NCP і SAP. Протокол NCP (NetWare Core Protocol) є протоколом взаємодії сервера NetWare і оболонки робочої станції. Цей протокол прикладного рівня реалізує архітектуру клієнт-сервер на верхніх рівнях моделі OSI. За допомогою функцій цього протоколу робоча станція проводить підключення до сервера, відображає каталоги сервера на локальні букви дисководів, переглядає файлову систему сервера, копіює вилучені файли, змінює їх атрибути і т.п., а також здійснює розподіл мережевого принтера між робочими станціями.
SAP (Service Advertising Protocol) - протокол оголошення про сервіс - концептуально подібний до протоколу RIP. Подібно до того, як протокол RIP дозволяє маршрутизаторам маршрутної обмінюватися інформацією, протокол SAP дає можливість мережних пристроям обмінюватися інформацією про наявні мережевих сервісах.
Сервери та маршрутизатори використовують SAP для оголошення про своїх сервісних послуги та мережевих контактах. Протокол SAP дозволяє мережних пристроїв постійно коригувати дані про те, які сервісні послуги є зараз у мережі. При старті сервери використовують SAP для оповіщення що залишилася частини мережі про свої послуги. Коли сервер завершує роботу, то він використовує SAP для того, щоб сповістити мережа про припинення дії своїх послуг.
У мережах Novell сервери NetWare 3.x кожну хвилину розсилають шіроковещательние пакети SAP. Пакети SAP в значній мірі засмічують мережу, тому однією з основних завдань маршрутизаторів, що виходять на глобальні зв'язку, є фільтрація трафіку SAP-пакетів і RIP-пакетів.
Загальна характеристика протоколу IPX
Протокол Internetwork Packet Exchange (IPX) є оригінальним протоколом мережного рівня стека Novell, розробленим на початку 80-х років на основі протоколу Internetwork Datagram Protocol (IDP) компанії Xerox.
Протокол IPX відповідає мережному рівневі моделі ISO/OSI (мал. 2.00) і підтримує, як і протокол IP, тільки дейтаграммный (без установлення з'єднань) спосіб обміну повідомленнями. У мережі NetWare найбільш швидка передача даних при найбільш ощадливому використанні пам'яті реалізується саме протоколом IPX.
Надійну передачу пакетів може здійснювати транспортний протокол SPX (Sequenced Packet Exchange Protocol), що працює з установленням з'єднання і відновлює пакети при їхній втраті або ушкодженні. Як видно з мал. 2.00, використання протоколу SPX не є обов'язковим при виконанні операцій передачі повідомлень протоколами прикладного рівня.
Прикладний рівень стека IPX/SPX складають два протоколи: NCP і SAP. Протокол NCP (NetWare Core Protocol) підтримує всі основні служби операційної системи Novell NetWare - файлову службу, службу печатки і т.д. Протокол SAP (Service Advertising Protocol) виконує допоміжну роль. За допомогою протоколу SAP кожен комп'ютер, що готовий надати яку-небудь службу для клієнтів мережі, повідомляє про це широкомовно по мережі, вказуючи в SAP-пакетах тип служби (наприклад, файлова), а також своя мережна адреса. Наявність протоколу SAP дозволяє різко зменшити адміністративні роботи з конфигурированию клієнтського програмного забезпечення, тому що всю необхідну інформацію для роботи клієнти довідаються з оголошень SAP (крім маршрутизаторів за замовчуванням, про які можна довідатися за допомогою протоколу IPX).
На відміну від протоколу IP, що споконвічно розроблявся для глобальних мереж, протокол IPX створювався для застосування в локальних мережах. Саме тому він є одним із самих економічних протоколів у відношенні вимог до обчислювальних ресурсів і добре працює в порівняно невеликих локальних мережах.
Специфіка адресації в протоколі IPX є джерелом як достоїнств, так і недоліків цього протоколу. Протокол IPX працює з мережними адресами, що включають три компоненти:
- номер мережі (4 байти);
- номер вузла (6 байт);
- номер сокета (2 байти).
Номер мережі на відміну від протоколу IP має завжди фіксовану довжину - 4 байти. У принципі для корпоративних мереж ця довжина є надлишкової, тому що навряд чи в підприємства виникне потреба розділити свою мережу на 4 мільярди подсетей. У період домінування мереж IPX/SPX компанія Novell розглядала можливість створення єдиного всесвітнього центра по розподілі IPX-адрес, аналогічного центрові InterNIC. Однак стрімке зростання популярності мережі Internet позбавив це починання змісту. Хоча протоколи IPX/SPX як і раніше працюють у величезній кількості корпоративних мереж, замінити IP у всесвітній мережі вони вже не зможуть. Треба відзначити, що фахівці компанії Novell приклали чимало зусиль, щоб у новій версії 6 протокол IP придбав деякі риси, властиві протоколові IPX, і тим самим полегшив перехід користувачів IPX на IPv6 (коли це стане практично необхідним). Звичайно всі три складові IPX-адреси, у тому числі і номер мережі, записуються в шест-надцатеричной формі.
Під номером вузла в протоколі IPX розуміється апаратна адреса вузла. У локальних мережах це МАС - адреса вузла - мережного адаптера або порту маршрутизатора. Розмір адреси вузла в 6 байт відбиває походження цього полючи, але в нього можна помістити будь-яка апаратна адреса, якщо він укладається в розмір цього полючи.
Номер сокета (socket) ідентифікує додаток, що передає свої повідомлення по протоколі IPX. Сокет виконує в стеці IPX/SPX ту ж роль, що порт у протоколах TCP/UDP стека TCP/IP. Наявність цього полючи в протоколі мережного рівня, яким є IPX, порозумівається тим, що в стеці Novell прикладні протоколи NCP і SAP взаємодіє з мережним рівнем безпосередньо, минаючи транспортний протокол SPX. Тому роль мультиплексора-демультиплексора прикладних протоколів приходиться виконувати протоколові IPX, для чого в його пакеті необхідно передавати номер сокета прикладного протоколу. Протоколи NCP і SAP не користуються послугами SPX для прискорення роботи стека, а швидкість роботи на малопотужних персональних комп'ютерах почала 80-х років була однієї з основних цілей компанії Novell. Кожен додатковий рівень у стеці, хоча б і такий простій, як UDP, сповільнює роботу стека. За відмовлення від транспортного рівня компанії Novell довелося реалізовувати засобу відновлення загублених пакетів у протоколі NCP. Проте прикладні програмісти, що розробляють свої власні мережні додатки для стека IPX/ SPX, можуть користуватися протоколом SPX, якщо не захочуть убудовувати досить складні алгоритми ковзного вікна у свої програми.
Протокол IPX є одним з найбільше протоколів мережного рівня, що набудовуються легко. Номер мережі задається адміністратором тільки на серверах, а номер вузла автоматично зчитується з мережного адаптера комп'ютера. На клієнтському комп'ютері номер мережі не задається - клієнт довідається цю інформацію із серверних оголошень SAP або локального маршрутизатора.
Адреса маршрутизатора за замовчуванням також не потрібно задавати вручну на кожнім клієнтському комп'ютері. У протоколі IPX є спеціальний запит, що передається на заздалегідь визначений номер сокета. Якщо в мережі клієнта є маршрутизатор або сервер, що виконує роль програмного маршрутизатора, то клієнт при старті системи видає такий запит широкомовно, і всі маршрутизатори повідомляють йому свої МАС - адреси, що використовуються як адресу наступного маршрутизатора.
Як видно з опису, адміністративні витрати при конфигурировании мережі IPX/SPX зводяться до мінімуму. При цьому відпадає необхідність у протоколі типу ARP, що з'ясовує відповідність між мережними адресами вузлів і їх МАС - адресами. Однак при зміні мережного адаптера потрібно скорегувати адресу вузла, якщо для його з'ясування використовуються не широкомовні запити-відповіді, а довідкова служба типу Novell NDS, у якій фіксуються мережні адреси серверів. Відсутність протоколу ARP підвищує продуктивність мережі, тому що дозволяє не витрачати час на виконання ARP-запитів і ARP-відповідей.
Формат пакета протоколу IPX
Пакет протоколу IPX має набагато більш просту структуру в порівнянні з пакетом IP, що, власне, і відбиває менші функціональні можливості протоколу IPX.
IPX-пакет має наступні поля.
Контрольна сума (Checksum) - це 2-байтовое поле, що є «пережитком минулого», що протокол IPX веде від протоколу IDP стека Xerox. Тому що низкоуровневые протоколи (наприклад, Ethernet) завжди виконують перевірку контрольних сум, то IPX не використовує це поле і завжди встановлює його в одиниці.
Довжина (Length) займає 2 байти і задає розмір усього пакета, включаючи IPX-заголовок і поле даних. Самий короткий пакет - 30 байт - включає тільки IPX-заголовок, а рекомендува максимально великий - 576 байт - включає IPX-заголовок плюс 546 байт даних. Максимальний розмір пакета в 576 байт відповідає рекомендаціям стандартів Internet для складених мереж. Протокол IPX обчислює значення цього полючи, ґрунтуючись на інформації, наданою прикладною програмою при виклику функції IPX. IPX-пакет може перевершувати максимум, що рекомендується, у 576 байт, що і відбувається в локальних мережах Ethernet, де використовуються IPX-пакети в 1500 байт із полем даних у 1470 байт.
Керування транспортом (Transport control) має довжину 8 біт. Це поле визначає час життя пакета в хопах. IPX-пакет може перетнути до 15 маршрутизаторів. Протокол IPX установлює це однобайтовое поле в 0 до початку передачі, а потім збільшує його на 1 щораз, коли пакет проходить через маршрутизатор. Якщо лічильник перевищить 15, то пакет анулюється.
Тип пакета (Packet type) має довжину 8 біт. Фірма Xerox визначила у свій час визначені значення для різних типів пакетів: прикладні програми, що посилають IPX-пакети, повинні встановлювати це поле в значення, рівне 4. Значення 5 відповідає службовим IPX-пакетам, використовуваним протоколом SPX як службові повідомлення. Значення 17 указує на те, що в поле даних IPX-пакета знаходиться повідомлення протоколу NetWare Core Protocol (NCP) - основного протоколу файлової служби NetWare.
Адреса призначення (Destination address) - складається з трьох полів: номера мережі призначення, номера вузла призначення, номера сокета призначення. Ці поля займають відповідно 4, 6 і 2 байти.
Адреса відправника (Source address) - номер вихідної мережі, номер вихідного вузла, номер вихідного сокета. Аналогічні адресним полям призначення.
Поле даних (Data). Може займати від 0 до 546 байт. Поле даних нульової довжини може використовуватися в службових пакетах, наприклад, для підтвердження одержання попереднього пакета. З аналізу формату пакета можна зробити деякі висновки про обмеження протоколу IPX.
Відсутня можливість динамічної фрагментації на мережному рівні. У IPX-пакеті немає полів, за допомогою яких маршрутизатор може розбити занадто великий пакет на частині. При передачі пакета в мережу з меншим значенням MTU IPX-маршрутизатор відкидає пакет. Протокол верхнього рівня, наприклад NCP, повинний послідовно зменшувати розмір пакета доти, поки не одержить на нього позитивну квитанцію.
Великі накладні витрати на службову інформацію. Порівняно невелика максимальна довжина полючи даних IPX-пакета (546 байт при довжині заголовка 30 байт) приводить до того, що як мінімум 5 % даних є службовими.
Час життя пакета обмежено числом 15, що може виявитися недостатнім для великої мережі (для порівняння, у IP-мережах пакет може пройти до 255 проміжних маршрутизаторів).
Відсутнє поле якості сервісу, що не дозволяє маршрутизаторам автоматично підбудовуватися до вимог додатка до якості передачі трафика.
Крім того, деякі недоліки мереж Novell зв'язані не з протоколом IPX, a із властивостями інших протоколів стека IPX/SPX. Багато недоліків виявляються при роботі стека IPX/SPX на повільних глобальних лініях зв'язку, і це закономірно, тому що ОС NetWare оптимизировалась для роботи в локальній мережі.
Наприклад, неефективна робота по відбудові загублених і перекручених пакетів на низкоскоростных глобальних каналах обумовлена тим, що протокол NCP, що виконує цю роботу, використовує метод одержання квитанцій із простоями. У локальних мережах зі швидкістю 10 Мбит/з такий метод працював цілком ефективно, а на повільних каналах час чекання квитанції помітно гальмує роботу передавального вузла.
У версіях ОС NetWare до 4.0 відповідність символьних імен серверів їхнім мережним адресам установлювалося тільки за допомогою широкомовного протоколу Service Advertising Protocol (SAP). Однак широкомовні розсилання помітно засмічують повільні глобальні канали. Модернізуючи свій стек для застосування у великих корпоративних мережах, компанія Novell використовує тепер довідкову службу NDS (NetWare Directory Services) для перебування різноманітної інформації про наявним у мережі ресурсах і службах, у тому числі і про відповідність імені сервера його мережній адресі. Тому що служба NDS підтримується тільки серверами з версією NetWare 4.x і вище, те для роботи з версіями NetWare 3.x маршрутизатори розпізнають SAP-пакети по номері їх сокета і передають них на всі порти, імітуючи широкомовні розсилання локальної мережі, на що витрачається значна частина пропускної здатності повільних глобальних ліній. Крім того, така «псевдошироковещательность» зводить нанівець ізоляцію мереж від некоректних SAP-пакетів.
В останніх версіях своєї операційної системи NetWare компанія Novell значно модифікувала свій стек для того, щоб він міг більш ефективно використовуватися у великих складених мережах.
Служба NDS дозволяє відмовитися від широкомовного протоколу SAP. Служба NDS заснована на ієрархічній розподіленій базі даних, що зберігає інформацію про користувачів і поділювані ресурси мережі. Додатки звертаються до цієї служби по протоколі прикладного рівня NDS.
Додано модуль для реалізації методу ковзного вікна - так називаний Burst Mode Protocol NLM.
Додано модуль для підтримки довгих IPX-пакетів у глобальних мережах - Large Internet Packet NLM.
Крім того, постійне підвищення швидкодії глобальних служб зменшує недоліки оригінальних протоколів стека IPX/SPX, що дозволяє деяким оглядачам говорити про успішну роботу операційної системи NetWare у глобальних мережах і без зазначених нововведень.
Маршрутизація протоколу IPX
У цілому маршрутизація протоколу IPX виконується аналогічно маршрутизації протоколу IP. Кожен IPX-маршрутизатор підтримує таблицю маршрутизації, на підставі якої приймається рішення про просування пакета. IPX-маршрутизатори підтримує однокрокову маршрутизацію, при якій кожен маршрутизатор приймає рішення тільки про вибір наступних на шляху маршрутизатора. Можливості маршрутизації від джерела в протоколі IPX відсутні. Розглянемо типову таблицю маршрутизації (мал. 3.00) для протоколу IPX.
У поле «Номер мережі» указується шестнадцатеричный адреса мережі призначення, а в поле «Наступний маршрутизатор» - повна мережна адреса наступного маршрутизатора, тобто пари «номер сети-мас - адреса». МАС - адреса з цього запису переноситься в поле адреси призначення кадру канального рівня, наприклад Ethernet, що і переносить IPX-пакет наступному маршрутизаторові. IPX-пакет при передачі між проміжними маршрутизаторами змін не перетерплює.
Якщо IPX-маршрутизатор виявляє, що мережа призначення - це його безпосередньо підключена мережа, то з заголовка IPX-пакета витягається номер вузла призначення, що є МАС - адресою вузла призначення. Цей МАС - адреса переноситься на адресу призначення кадру канального рівня, наприклад FDDI. Кадр безпосередньо відправляється в мережу, і протокол FDDI доставляє його по цій адресі вузлові призначення.
IPX-маршрутизатори звичайно використовують два типи метрики при виборі маршруту: відстань у хопах і затримку в деяких умовних одиницях - тиках (ticks). Відстань у хопах має звичайний сенс - це кількість проміжних маршрутизаторів, який потрібно перетнути IPX-пакетові для досягнення мережі призначення. Затримка також часто використовується в маршрутизаторах і мостах/комутаторах для більш точного порівняння маршрутів. Однак у IPX-маршрутизаторах традиційно затримка виміряється в тиках таймера персонального комп'ютера, що видає сигнал переривання 18,21 рази в секунду. Ця традиція ведеться від перших програмних IPX-маршрутизаторів, що працювали в складі операційної системи NetWare і користувалися таймером персонального комп'ютера для виміру інтервалів часу. Нагадаємо, що IP-маршрутизатори, а також мости/комутатори, що підтримують протокол Spanning Tree, вимірюють затримку, внесену якою-небудь мережею в 10-наносекундных одиницях передачі одного біта інформації, так що мережа Ethernet оцінюється затримкою в 10 одиниць. Крім цього, IPX-маршрутизатори оцінюють затримку не одного біта, а стандартного для IPX-пакета в 576 байт.
Тому затримка в тиках для мережі Ethernet виходить рівної 0,00839 тика, а для каналу 64 Кбит/з - 1,31 тика. Затримка в тиках завжди округляється до цілого числа тиків у велику сторону, так що мережа Ethernet вносить затримку в один тик, а канал 64 Кбит/з - у 2 тики. При обчисленні метрики в тиках для складеного маршруту затримки в тиках складаються.
Дві метрики в записах таблиці маршрутизації протоколу IPX використовуються в порядку пріоритетів. Найбільшим пріоритетом володіє метрика, обмірювана в затримках, а якщо ця метрика збігається для яких-небудь маршрутів, то в увагу приймається відстань у хопах.
Незважаючи на традиції виміру затримки в тиках, IPX-маршрутизатори можуть використовувати і стандартні затримки мереж, обмірювані в 10-наносекундных інтервалах.
IPX-маршрутизатори можуть підтримувати як статичні маршрути, так і динамічні, отримані за допомогою протоколів RIP IPX і NLSP.
Протокол RIP IPX дуже близький до протоколу RIP IP. Тому що в IPX-мережах маски не застосовуються, те RIP IPX не має аналога RIPv2, що передає маски. Інтервал між оголошеннями в протоколу RIP IPX дорівнює 60 з (на відміну від 30 су RIP IP). У пакетах RIP IPX для кожної мережі вказуються обидві метрики - у хопах і тиках. Для виключення маршрутних петель IPX-маршрутизатори використовують прийом розщеплення обрію.
Час життя динамічного запису складає 180 секунд. Недосяжність мережі вказується значенням числа хопов у 15 (0x), а тиків - у 0xFFFF.
IPX-маршрутизатори, як і IP-маршрутизатори, не передають з мережі в мережу пакети, що мають широкомовну мережну адресу. Однак для деяких типів таких пакетів IPX-маршрутизатори роблять виключення. Це пакети служби SAP, за допомогою якої сервери NetWare повідомляють про себе по мережі. IPX-маршрутизатори передають SAP-пакети в усі безпосередньо підключені мережі, крім тієї, від якої цей пакет отриманий (розщеплення обрію). Якби IPX-маршрутизатори не виконували таких передач, то клієнти NetWare не змогли б взаємодіяти із серверами в мережі, розділеної маршрутизаторами, у звичному стилі, тобто шляхом перегляду наявних серверів за допомогою команди SLIST.
IPX-маршрутизатори завжди використовують внутрішній номер мережі, що відноситься не до інтерфейсів маршрутизатора, а до самого модуля маршрутизації. Внутрішній номер мережі є деяким аналогом мережі 127.0.0.0 вузлів IP-мереж, однак кожен IPX-маршрутизатор повинен мати унікальний внутрішній номер мережі, причому його унікальність повинна поширюватися і на зовнішні номери IPX-мереж у складеній мережі.
IPX-маршрутизатори виконують також функцію узгодження форматів кадрів Ethernet. У складених IPX-мережах кожна мережа може працювати тільки з одним з 4-х можливих типів кадрів IPX. Тому якщо в різних мережах використовуються різні типи кадрів Ethernet, те маршрутизатор посилає в кожну мережу той тип кадру, що встановлений для цієї мережі.
Протокол NLSP (NetWare Link Services Protocol) являє собою реалізацію алгоритму стану зв'язків для IPX-мереж. В основному він працює аналогічно протоколові OSPF мереж TCP/IP.
Інформація взята з:[ http://www.compnets.narod.ru/4-8.html ]