SPX (Sequenced Packet Exchange)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:38, 15 мая 2018.
SPX
Communications protocol
Purpose analog TCP
Developer(s) Novell NetWare
Introduced 1983, 34 years ago
Based on XNS (Xerox Network Services)
OSI layer 4

Протокол последовательного обмена пакетами SPX (Sequenced Packet Exchange) является устаревшим протоколом транспортного уровня Novell.[Источник 1], предоставляющим услугу доставки пакетов для сети Novell NetWare. SPX основан на XNS (Sequenced Packet Protocol). SPX работает над IPX и используется в системах Novell NetWare (до NetWare 5.0) для связи в клиентских/серверных прикладных программах, например, Btrieve (менеджер ISAM). SPX выполняет эквивалентные функции TCP. Новые версии служб NetWare запускаются над TCP/IP.

IPX принимает пакеты из сети и передает их для обработки SPX. SPX гарантирует, что пакеты получены неповрежденными, в том порядке, в котором они были отправлены, и устраняет дубликаты пакетов. SPX обеспечивает последовательность пакетов, на которые сообщение разделено, и управляет повторной сборкой принятых пакетов, подтверждая, что все они были получены и запрашивают повторную передачу. SPX работает непосредственно с протоколом межсетевого обмена пакетами IPX, который управляет пересылкой пакетов в сети. SPX не обеспечивает соединения с самим файловым сервером, который использует NetWare Core Protocol (NCP). SPX был расширен как SPX2.

SPX не поддерживает групповую широковещательную передачу; Пакеты могут быть отправлены только одному партнеру по сеансу. SPX может определить, на связи его партнер или нет.

Структура протокола

SPX представляет собой транспортный протокол 7-уровневой модели ISO. Он гарантирует доставку пакета и использует технику скользящего окна (отдаленный аналог протокола TCP). В случае потери или ошибки пакет пересылается повторно, число повторений задается программно. В протоколе SPX не предусмотрена широковещательная или мультикастинг-адресация. В SPX индицируется ситуация, когда партнер неожиданно прерывает соединение, например из-за обрыва связи. Пакеты SPX вкладываются в пакеты IPX. При этом в поле тип пакета IPX записывается код 5. Заголовок пакета SPX всегда содержит 42 байта, включая 30 байт заголовка IPX-пакета, куда он вложен. Структура пакета SPX показана ниже:

Формат заголовка SPX

Флаг управления соединением Соединение SPX использует 4 флага, которые управляют двунаправленным потоком данных. Единичное значение флага означает поддержку соответствующей функции.

  • Бит 4 Eom - конец сообщения.
  • Бит 5 Att: - бит “внимание”, не используемый в SPX.
  • Бит 6 Ack: - требуется подтверждение приема данных.
  • Бит 7 Sys: Транспортный контроль.

Тип потока данных Это поле указывает тип содержащихся в пакете данных:

  • 0-253 Игнорируется протоколом SPX.
  • 254 Окончание соединения
  • 255 Подтверждение окончания соединения.

Идентификатор отправителя 16-битовое число, выделяемое протоколом SPX для идентификации соединения

Идентификатор получателя Число, используемое для идентификации получателя в соединении SPX.

Порядковый номер 16-битовое число, показывающее порядковый номер пакета SPX.

Число подтвержденных пакетов 16-битовое число, указывающее порядковый номер следующего пакета.

Число неподтвержденных пакетов 16-битовое число, показывающее количество переданных, но не подтвержденных пакетов. Протокол SPX2 использует аналогичную структуру заголовка пакетов с двумя отличиями.

Флаг управления соединением

  • Бит 2 Согласование размера.
  • Бит 3 Тип SPX2.

Тип потока данных

  • 252 Запрос на обычное разъединение.
  • 253 Подтверждение обычного разъединения.

Кроме того, в конце заголовка присутствует дополнительное двухбайтовое поле Extended Acknowledgment (расширенное подтверждение).

SPX и SPX2

Структура SPX2

В 1992 году была разработана новая версия SPX - SPX2. Главное усовершенствование протокола связано с применением пакетов большего размера. Раньше длинные SPX-пакеты фрагментировались и пересылались по частям, учитывая, что очередной пакет может быть послан лишь после получения подтверждения, нетрудно понять крайнюю неэффективность такой схемы. Стандарт SPX позволяет обмен пакетами с размером, ограниченным только используемой сетевой средой. Так в Ethernet пакет SPX2 может иметь длину 1518 байт. Кроме того, SPX2 допускает использование технологии окон, то есть можно послать несколько кадров, не дожидаясь получения подтверждения на каждый из уже посланных. Размер окна устанавливается в соответствии с кодом, содержащимся в поле число-указатель (число буферов/пакетов). При необходимости администратор может задать размер окна раз и навсегда. Формат пакетов SPX2 несколько отличается от SPX. В SPX2 увеличено число допустимых кодов для поля управления соединением, введено дополнительное поле в заголовок подтверждения (два байта, имя поля "расширенное подтверждение"). Новое поле добавлено после поля число буферов. Алгоритм установление связи в SPX2 отличатся от варианта SPX тем, что необходимо согласовать размер пересылаемых пакетов.

Формат заголовка SPX2

Использование протокола SPX2 с Socket приложениями

Для программы с интерфейсом Sockets API протокол SPX используется автоматически, когда определено семейство AF_NS. При подключении AS/400 SPX2 всегда просит партнера по соединению использовать протокол SPX2. Если партнер поддерживает только SPX или не хочет использовать SPX2, устанавливаются только соединения SPX.

SPX2 содержит два улучшения, связанных с производительностью, по сравнению с SPX. Это возможность согласовывать максимальные размеры пакетов от одного конца до другого и возможность отправлять несколько пакетов без явного подтверждения от удаленной системы. Количество пакетов, которые могут быть отправлены без подтверждения, называется размером окна для конкретного соединения.

Существует непроизводительные затраты времени соединения, связанные с максимальным согласованием размера пакета, потому что обе системы должны обмениваться этой информацией в серии пакетов, связанных с протоколом SPX2. Приложение может принять на себя накладные расходы на согласование размера пакета, указав опцию сокетов, или по умолчанию он может обойти это согласование. Не согласовывая максимальный размер пакета, самый большой пакет, который можно отправить и получить по соединению SPX2, составляет 576 байт, что также является максимальным размером пакета для соединений SPX.

Размер окна для конкретного соединения SPX2 не оговаривается. Он основан на параметре размера окна приема SPX2 в описании IPX. Нет опций сокетов, связанных с размером окна.

Чтобы разрешить согласование размера пакета, для выбора сокетов SO_MTU необходимо установить значение ZERO, прежде чем выдается вызов connect. После того, как соединение установлено, согласованный максимальный размер пакета будет возвращен, если программа извлекает значение SO_MTU через вызов функции getsockopt.

Если сервер AS/400 прослушивает и ожидает запрос на подключение, соединение SPX2 будет установлено, если клиент запросит использование протокола SPX2. Согласование размера пакета также будет включено, если клиент его запросит (в этом случае серверу не нужно устанавливать SO_MTU в ноль).

Если ваши приложения используют SPX2, опция сокетов SO_KEEPALIVE рассматривается поддержкой SPX2 как ON, даже если программа установила ее в OFF, потому что протокол SPX2 требует, чтобы функция сторожевого таймера была активна для всех соединений SPX2.

Использование маршрутизаторов Cisco в сетях Novell NetWare

Механизмы IPX Watchdog и SPX Keepalive Spoofing

ОС NetWare включает в себя специальный контрольный протокол IPX Watchdog), производящий периодический опрос неактивных соединений с рабочими станциями и передающий серверу сообщения о сбоях этих соединений или о доступности той или иной рабочей станции. Если отчет протокола IPX Watchdog на каком-то из соединений не доступен, то сервер закрывает это соединение.

Некоторые программы, входящие в состав ОС NetWare, требующие гарантированного соединения и использующие для этого систему подтверждений правильности передачи пакетов (например, Remote Console RCONSOLE, Remote Printer RPRINTER и NetWare for SAA (System Application Architecture)), работают с протоколом SPX. Устройства, находящиеся на обоих концах соединения SPX периодически посылают друг другу диагностические запросы, сохраняющие активное соединение даже в том случае, если передачи полезных данных не происходит.

Как и пакеты обновления RIP и SAP, пакеты IPX Watchdog и SPX могут вызвать постоянную активность коммутируемых каналов WAN, делая их использование неоправданно дорогим. Интервалы в передаче этих пакетов могут быть увеличены – это несколько снизит уровень использования канала. В этом плане Cisco IOS имеет возможность эмулировать оба этих протокола, снижая таким образом общее количество трафика, передаваемого через каналы WAN и предотвращая попадание этих пакетов в соединения, использующие DDR.

Маршрутизаторы и серверы доступа, работающие под управлением Cisco IOS, могут напрямую отвечать серверам NetWare на рассылаемые ими запросы IPX Watchdog. Эта функциональная особенность, также известная как IPX spoofing или NCP spoofing, позволяет производить локальное разрешение запросов. Что касается функции SPX spoofing, то устройства, работающие под Cisco IOS, могут отвечать на запросы keepalive, рассылая соответствующие пакеты, как клиентам, так и серверам, обеспечивая устойчивое соединение между ними. Использование этих функциональных возможностей обеспечивает отсутствие передачи ненужного трафика по дорогостоящим каналам WAN, что позволяет существенно снизить стоимость их эксплуатации в условиях крупных распределенных сетей NetWare.[Источник 2]

Источники

  1. IPX/SPX // Wikipedia. URL: https://en.wikipedia.org/wiki/IPX/SPX (дата обращения: 15.05.2018).
  2. Guide to Cisco Router Configuration // OpenNET — веб-сайт, русскоязычный интернет-проект, посвящённый открытым и свободным компьютерным технологиям. URL: http://www.opennet.ru/soft/cisco-configuration.html (дата обращения: 15.05.2018).