В компьютерных сетях кадр Ethernet представляет собой блок данных протокола канального уровня и использует базовые механизмы транспортировки физического уровня Ethernet . Другими словами, блок данных на канале Ethernet переносит кадр Ethernet в качестве своей полезной нагрузки. [2]
Кадр Ethernet предваряется преамбулой и разделителем начального кадра (SFD), которые оба являются частью пакета Ethernet на физическом уровне . Каждый кадр Ethernet начинается с заголовка Ethernet, который содержит MAC-адреса назначения и источника в качестве первых двух полей. Средняя часть кадра представляет собой данные полезной нагрузки, включая любые заголовки для других протоколов (например, Internet Protocol ), передаваемых в кадре. Кадр заканчивается последовательностью проверки кадра (FCS), которая представляет собой 32-битную циклическую проверку избыточности, используемую для обнаружения любых повреждений данных при передаче.
Пакет данных на проводе и кадр в качестве его полезной нагрузки состоят из двоичных данных. Ethernet передает данные, начиная с самого старшего октета (байта); однако внутри каждого октета первым передается наименее значимый бит. [a]
Внутренняя структура кадра Ethernet описана в IEEE 802.3. [2] В таблице ниже показан полный пакет Ethernet и кадр внутри, в том виде, в котором он передается, для размера полезной нагрузки до MTU в 1500 октетов. [b] Некоторые реализации Gigabit Ethernet и других высокоскоростных вариантов Ethernet поддерживают кадры большего размера, известные как кадры jumbo .
Необязательный тег 802.1Q занимает дополнительное место в кадре. Размеры полей для этого параметра указаны в скобках в таблице выше. IEEE 802.1ad (Q-in-Q) допускает несколько тегов в каждом кадре. Этот параметр здесь не показан.
Пакет Ethernet начинается с семиоктетной (56-битной) преамбулы и однооктетного (8-битного) начального разделителя кадра (SFD). [d] Значения битов преамбулы чередуются с 1 и 0, что позволяет приемникам синхронизировать свои часы на уровне битов с передатчиком. За преамбулой следует SFD, который заканчивается 1 вместо 0, чтобы разорвать битовую схему преамбулы и сигнализировать о начале фактического кадра. [1] : раздел 4.2.5
Схема трансивера физического уровня (PHY для краткости) требуется для подключения Ethernet MAC к физической среде. Соединение между PHY и MAC не зависит от физической среды и использует шину из семейства интерфейсов, независимых от среды ( MII , GMII , RGMII , SGMII , XGMII ). Преамбула и представление SFD зависят от ширины шины:
За SFD сразу следует MAC-адрес назначения , который является первым полем в кадре Ethernet.
Заголовок содержит MAC-адреса назначения и источника (каждый длиной шесть октетов), поле EtherType и, опционально, тег IEEE 802.1Q или тег IEEE 802.1ad .
Поле EtherType имеет длину два октета и может использоваться для двух различных целей. Значения 1500 и ниже означают, что оно используется для указания размера полезной нагрузки в октетах, тогда как значения 1536 и выше указывают, что оно используется как EtherType, чтобы указать, какой протокол инкапсулирован в полезную нагрузку кадра. При использовании в качестве EtherType длина кадра определяется местоположением межпакетного промежутка и допустимой последовательностью проверки кадра (FCS).
Тег IEEE 802.1Q или тег IEEE 802.1ad , если он присутствует, представляет собой четырехоктетное поле, которое указывает на членство в виртуальной локальной сети (VLAN) и приоритет IEEE 802.1p . Первые два октета тега называются идентификатором протокола тега (TPID) и дублируются как поле EtherType, указывающее , что кадр помечен тегом 802.1Q или 802.1ad. 802.1Q использует TPID 0x8100. 802.1ad использует TPID 0x88a8.
Полезная нагрузка — это поле переменной длины. Его минимальный размер регулируется требованием к минимальной передаче кадра в 64 октета (байта). [e] С учетом заголовка и FCS минимальная полезная нагрузка составляет 42 октета при наличии тега 802.1Q [f] и 46 октетов при его отсутствии. Когда фактическая полезная нагрузка меньше минимальной, добавляются соответствующие октеты заполнения. Стандарты IEEE определяют максимальную полезную нагрузку в 1500 октетов. Нестандартные кадры jumbo допускают большую полезную нагрузку в сетях, созданных для их поддержки.
Последовательность проверки кадра (FCS) представляет собой четырехоктетный циклический избыточный контроль (CRC), который позволяет обнаружить поврежденные данные во всем кадре, полученном на стороне получателя. Согласно стандарту, значение FCS вычисляется как функция защищенных полей кадра MAC: адрес источника и назначения, поле длины/типа, данные клиента MAC и заполнение (то есть все поля, кроме FCS).
Согласно стандарту, это вычисление выполняется с использованием алгоритма CRC-32 со сдвигом влево ( полином = 0x4C11DB7, начальный CRC = 0xFFFFFFFF, CRC дополняется постом, проверочное значение = 0x38FB2284). Стандарт гласит, что данные передаются сначала младшим битом (бит 0), в то время как FCS передается старшим битом (бит 31) первым. [1] : раздел 3.2.9 Альтернативой является вычисление CRC с использованием сдвигающего вправо CRC-32 (полином = 0xEDB88320, начальный CRC = 0xFFFFFFFF, CRC дополняется постом, проверочное значение = 0x2144DF1C), что приведет к CRC, которая является инверсией бита FCS, и сначала передаются как данные, так и младшие биты CRC, что приводит к идентичным передачам.
Стандарт гласит, что приемник должен вычислять новый FCS по мере получения данных, а затем сравнивать полученный FCS с FCS, вычисленным приемником. Альтернативой является вычисление CRC как для полученных данных, так и для FCS, что приведет к фиксированному ненулевому значению «проверки». (Результат ненулевой, поскольку CRC дополняется постом во время генерации CRC). Поскольку данные принимаются первым наименее значимым битом, и чтобы избежать необходимости буферизации октетов данных, приемник обычно использует сдвиг вправо CRC-32. Это делает значение «проверки» (иногда называемое «магической проверкой») равным 0x2144DF1C. [5]
Однако аппаратная реализация логического сдвига CRC вправо может использовать сдвигающий влево регистр с линейной обратной связью в качестве основы для вычисления CRC, инвертируя биты и получая в результате проверочное значение 0x38FB2284. Поскольку дополнение CRC может быть выполнено после вычисления и во время передачи, то, что остается в аппаратном регистре, является не дополненным результатом, поэтому остаток для реализации сдвига вправо будет дополнением 0x2144DF1C = 0xDEBB20E3, а для реализации сдвига влево — дополнением 0x38FB2284 = 0xC704DD7B.
Конец кадра обычно обозначается символом конца потока данных на физическом уровне или потерей несущего сигнала; примером является 10BASE-T , где принимающая станция обнаруживает конец переданного кадра по потере несущего сигнала. Более поздние физические уровни используют явный символ или последовательность конца данных или конца потока , чтобы избежать неоднозначности, особенно когда носитель непрерывно отправляется между кадрами; примером является Gigabit Ethernet с его схемой кодирования 8b/10b , которая использует специальные символы, которые передаются до и после передачи кадра. [6] [7]
Межпакетный интервал (IPG) — это время простоя между пакетами. После отправки пакета передатчики должны передать минимум 96 бит (12 октетов) состояния линии простоя перед передачей следующего пакета.
Существует несколько типов кадров Ethernet:
Различные типы кадров имеют различные форматы и значения MTU , но могут сосуществовать на одном физическом носителе. Различие между типами кадров возможно на основе таблицы справа.
Кроме того, все четыре типа кадров Ethernet могут опционально содержать тег IEEE 802.1Q для идентификации того, к какой VLAN он принадлежит, и его приоритета ( качества обслуживания ). Эта инкапсуляция определена в спецификации IEEE 802.3ac и увеличивает максимальный размер кадра на 4 октета.
Тег IEEE 802.1Q, если он присутствует, размещается между полями Source Address и EtherType или Length. Первые два октета тега — это значение идентификатора протокола тега (TPID) 0x8100. Оно находится в том же месте, что и поле EtherType/Length в немаркированных кадрах, поэтому значение EtherType 0x8100 означает, что кадр помечен, а истинный EtherType/Length находится после Q-тега. За TPID следуют два октета, содержащие информацию управления тегом (TCI) (приоритет IEEE 802.1p ( качество обслуживания ) и идентификатор VLAN). За Q-тегом следует остальная часть кадра, используя один из типов, описанных выше.
Кадрирование Ethernet II (также известное как DIX Ethernet , названное в честь DEC , Intel и Xerox , основных участников его разработки [8] ), определяет двухоктетное поле EtherType в кадре Ethernet , которому предшествуют MAC-адреса назначения и источника, которое идентифицирует протокол верхнего уровня , инкапсулированный данными кадра. В частности, значение EtherType 0x0800 указывает, что кадр содержит датаграмму IPv4 , 0x0806 указывает на датаграмму ARP , а 0x86DD указывает на датаграмму IPv6 . Подробнее см. в разделе Значения EtherType .
Поскольку этот разработанный отраслью стандарт прошел формальный процесс стандартизации IEEE , поле EtherType было изменено на поле длины (данных) в новом стандарте 802.3. [h] Поскольку получателю все еще нужно знать, как интерпретировать кадр, стандарт требовал, чтобы заголовок IEEE 802.2 следовал за длиной и указывал тип. Много лет спустя стандарт 802.3x-1997 и более поздние версии стандарта 802.3 официально одобрили оба типа кадрирования. Кадрирование Ethernet II является наиболее распространенным в локальных сетях Ethernet из-за его простоты и меньших накладных расходов.
Чтобы разрешить использование некоторых кадров с использованием кадрирования Ethernet II и некоторых кадров с использованием исходной версии кадрирования 802.3 в одном и том же сегменте Ethernet, значения EtherType должны быть больше или равны 1536 (0x0600). Это значение было выбрано, поскольку максимальная длина поля полезной нагрузки кадра Ethernet 802.3 составляет 1500 октетов (0x05DC). Таким образом, если значение поля больше или равно 1536, кадр должен быть кадром Ethernet II, причем это поле является полем типа. [9] Если оно меньше или равно 1500, это должен быть кадр IEEE 802.3, причем это поле является полем длины. Значения между 1500 и 1536, исключая их, не определены. [10] Это соглашение позволяет программному обеспечению определять, является ли кадр кадром Ethernet II или кадром IEEE 802.3, что позволяет сосуществовать обоим стандартам на одном и том же физическом носителе.
Формат кадра Novell «сырой» 802.3 был основан на ранней работе IEEE 802.3. Novell использовала его в качестве отправной точки для создания первой реализации собственного сетевого протокола IPX через Ethernet. Они не использовали заголовок LLC, а начинали пакет IPX сразу после поля длины. Это не соответствует стандарту IEEE 802.3, но поскольку IPX всегда имеет FF в качестве первых двух октетов (в то время как в IEEE 802.2 LLC такой шаблон теоретически возможен, но крайне маловероятен), на практике это обычно сосуществует на проводе с другими реализациями Ethernet, за исключением некоторых ранних форм DECnet , которые путались из-за этого.
Novell NetWare использовала этот тип фрейма по умолчанию до середины девяностых, и поскольку NetWare тогда была очень распространена, а IP — нет, в какой-то момент большая часть мирового трафика Ethernet проходила по «сырому» 802.3, передающему IPX. Начиная с NetWare 4.10, NetWare по умолчанию использует IEEE 802.2 с LLC (NetWare Frame Type Ethernet_802.2) при использовании IPX. [11]
Некоторые протоколы, например, разработанные для стека OSI , работают непосредственно поверх инкапсуляции IEEE 802.2 LLC, которая обеспечивает как сетевые сервисы с установлением соединения, так и без него.
Инкапсуляция IEEE 802.2 LLC в настоящее время не получила широкого распространения в обычных сетях, за исключением крупных корпоративных установок NetWare , которые еще не перешли на NetWare over IP . В прошлом многие корпоративные сети использовали IEEE 802.2 для поддержки прозрачных транслирующих мостов между сетями Ethernet и Token Ring или FDDI .
Существует стандарт Интернета для инкапсуляции трафика IPv4 в кадры IEEE 802.2 LLC SAP/SNAP. [12] Он почти никогда не реализуется в Ethernet, хотя используется в FDDI, Token Ring, IEEE 802.11 (за исключением диапазона 5,9 ГГц , где он использует EtherType) [13] и других локальных сетях IEEE 802. IPv6 также может передаваться по Ethernet с использованием IEEE 802.2 LLC SAP/SNAP, но, опять же, это почти никогда не используется.
Изучая заголовок LLC 802.2, можно определить, следует ли за ним заголовок SNAP. Заголовок LLC включает два восьмибитных поля адреса, называемых точками доступа к сервису (SAP) в терминологии OSI; когда и исходный, и целевой SAP установлены на значение 0xAA, за заголовком LLC следует заголовок SNAP. Заголовок SNAP позволяет использовать значения EtherType со всеми протоколами IEEE 802, а также поддерживает частные пространства идентификаторов протоколов.
В IEEE 802.3x-1997 стандарт IEEE Ethernet был изменен, чтобы явно разрешить использование 16-битного поля после MAC-адресов в качестве поля длины или поля типа.
Набор протоколов AppleTalk v2 в Ethernet (« EtherTalk ») использует инкапсуляцию IEEE 802.2 LLC + SNAP .
Мы можем рассчитать накладные расходы протокола для Ethernet в процентах (размер пакета, включая IPG)
Мы можем рассчитать эффективность протокола для Ethernet
Максимальная эффективность достигается при максимально допустимом размере полезной нагрузки и составляет:
для немаркированных кадров, поскольку размер пакета составляет максимум 1500 октетов полезной нагрузки + 8 октетов преамбулы + 14 октетов заголовка + 4 октета концевика + минимальный межпакетный промежуток, соответствующий 12 октетам = 1538 октетов. Максимальная эффективность составляет:
при использовании тегирования VLAN 802.1Q.
Пропускная способность может быть рассчитана из эффективности
где чистая скорость передачи данных физического уровня (скорость передачи данных по проводу) зависит от стандарта физического уровня Ethernet и может составлять 10 Мбит/с, 100 Мбит/с, 1 Гбит/с или 10 Гбит/с. Максимальная пропускная способность для 100BASE-TX Ethernet составляет соответственно 97,53 Мбит/с без 802.1Q и 97,28 Мбит/с с 802.1Q.
Использование канала — это концепция, которую часто путают с эффективностью протокола. Она учитывает только использование канала, не принимая во внимание характер передаваемых данных — будь то полезная нагрузка или служебные данные. На физическом уровне канал связи и оборудование не знают разницы между кадрами данных и управления. Мы можем рассчитать использование канала :
Общее время учитывает время прохождения туда и обратно по каналу, время обработки в хостах и время передачи данных и подтверждений. Время, затраченное на передачу данных, включает данные и подтверждения.
Кадр-рант — это кадр Ethernet, длина которого меньше минимальной длины IEEE 802.3 в 64 октета. Кадры-рант чаще всего вызываются коллизиями ; другие возможные причины — неисправная сетевая карта , опустошение буфера , несоответствие дуплекса или проблемы с программным обеспечением. [14]
Коды операций передаются первым старшим октетом. В каждом октете биты передаются первым младшим битом. [...] Каждый октет кадра MAC, за исключением FCS, передается первым младшим битом.