Введение

Протокол доступа к подсети (SNAP) — это механизм мультиплексирования, позволяющий использовать в сетях с протоколом IEEE 802.2 LLC большее количество протоколов, чем можно различить по восьмибитным полям точки доступа к службе 802.2 (SAP). SNAP поддерживает идентификацию протоколов по значениям поля EtherType, а также пространства идентификаторов частных протоколов, определенных поставщиками. Он используется с физическими сетевыми слоями IEEE 802.3, IEEE 802.4, IEEE 802.5, IEEE 802.11 и другими IEEE 802, а также с физическими сетевыми слоями, не относящимися к IEEE 802, такими как FDDI, которые используют протокол 802.2 LLC. Поля SNAP и LSAP добавляются к пакетам на передающем узле, чтобы принимающий узел мог передать каждый полученный кадр соответствующему драйверу устройства, который обрабатывает данный протокол.

Предыстория

Модель OSI использует точку доступа к услугам (SAP) для определения взаимодействия между уровнями (такими как сетевой, транспортный, сеансовый и другими уровнями семиуровневой модели), то есть для определения, какой протокол должен обрабатывать входящее сообщение. Внутри заданного уровня программы могут обмениваться данными посредством согласованного протокольного механизма. Пара программ, не поддерживающих общий протокол, не может взаимодействовать друг с другом. Следовательно, для сосуществования нескольких протоколов в одном слое необходимо определить, какой протокол вызывается для обработки единицы служебных данных, доставленной нижним уровнем. Наиболее распространенное упоминание SAP, включая точку доступа к службе источника (SSAP) и точку доступа к службе назначения (DSAP), относится к границе между канальным уровнем и сетевым уровнем. Обычно SAP рассматривается только в контексте его использования на втором уровне, в частности, в подслое управления логической связью (LLC), определенном в стандартах IEEE 802.2. Точка доступа к служебным функциям канала (LSAP) включает в себя как точку доступа к службе назначения (DSAP), так и точку доступа к службе источника (SSAP). Она позволяет MAC-станции взаимодействовать с верхними уровнями посредством различных протоколов. Стандартным сетевым протоколам присвоены зарезервированные адреса LLC, как указано в ISO/IEC TR 11802 1. Половина адресного пространства LLC зарезервирована для таких назначений. Другие протоколы могут быть адаптированы двумя способами. Один из способов – локальное назначение LSAP, для которого доступна другая половина адресного пространства LLC. Второй способ – использование определенного зарезервированного значения адреса LLC, предназначенного для использования совместно с протоколом доступа к подсети (SNAP), который называется SNAP-адресом. SNAP-адрес идентифицирует один LSAP в каждом MAC SAP. Таким образом, каждый протокол, использующий SNAP, должен использовать идентификатор протокола. Следовательно, протокол доступа к подсети (SNAP) является механизмом мультиплексирования в сетях, использующих IEEE 802.2 LLC, большего количества протоколов, чем можно различить по 8-битным полям SAP (Service Access Point) 802.2. SNAP поддерживает идентификацию протоколов по значениям поля типа Ethernet, а также поддерживает пространства идентификаторов частных протоколов поставщиков. Он используется с IEEE 802.3, IEEE 802.4, IEEE 802.5, IEEE 802.11 и другими физическими сетевыми уровнями IEEE 802, а также с физическими сетевыми уровнями, не относящимися к IEEE 802, такими как FDDI, которые используют 802.2 LLC.

Использование

SNAP является расширением 802.2 LLC, описанного в документе IEEE 802 «Обзор и архитектура». 5-октный заголовок SNAP следует за заголовком 802.2 LLC, если целевой SAP (DSAP) и исходный SAP (SSAP) содержат шестнадцатеричные значения AA или AB:

802.2 LLC HeaderРасширение SNAPDSAPSSAPControlOUIИдентификатор протокола1 октет1 октет1 или 2 октета3 октета2 октета

Заголовок SNAP состоит из 3-октного уникального идентификатора IEEE (OUI), за которым следует 2-октный идентификатор протокола. Если OUI равен нулю, идентификатор протокола является зарегистрированным значением EtherType для протокола, работающего поверх SNAP. Если OUI является OUI для конкретной организации, идентификатор протокола – это значение, присвоенное этой организацией протоколу, работающему поверх SNAP. SNAP обычно используется с блоками данных протокола 802.2 Unnumbered Information (PDU) со значением поля управления 3, а значения LSAP обычно равны AA в шестнадцатеричном формате, поэтому заголовок 802.2 LLC для пакета SNAP обычно имеет вид AA AA 03; однако SNAP может использоваться и с другими типами PDU. В Ethernet 8 октетов, занимаемых заголовками LLC и SNAP, уменьшают размер доступной полезной нагрузки для протоколов, таких как протокол IP, до 1492 байт по сравнению с использованием кадрирования Ethernet II; поэтому для протоколов, имеющих значения EtherType, пакеты обычно передаются с заголовками Ethernet II, а не с заголовками LLC и SNAP. В других типах сетей заголовки LLC и SNAP необходимы для мультиплексирования различных протоколов на канальном уровне, поскольку уровень MAC сам по себе не имеет поля EtherType, поэтому нет альтернативного кадрирования, которое обеспечивало бы большую доступную полезную нагрузку. Можно задаться вопросом: «Зачем нужен отдельный подсетевой заголовок?». Ответ заключается в том, что он был добавлен для дополнения решения, принятого при разработке заголовка LLC. В то время, когда заголовок LLC проектировался, считалось, что одного октета (256 возможных значений) в заголовке будет достаточно для указания всех значений протоколов, которые поставщики захотят зарегистрировать. По мере резервирования значений было обнаружено, что в заголовке LLC вскоре не останется свободных значений. Шестнадцатеричные значения AA и AB были зарезервированы, и был разработан дополнительный заголовок – заголовок SNAP; он может поддерживать все значения EtherType и несколько диапазонов частных протокольных значений. В соответствии с IETF RFC 1042, IP-датаграммы и ARP-датаграммы передаются по сетям IEEE 802 с использованием заголовков LLC и SNAP, за исключением Ethernet/IEEE 802.3, где они передаются с заголовками Ethernet II, как указано в RFC 894.