Ограничение ethernet кадра снизу
Ethernet - это самый распространенный на сегодняшний день стандарт локальных сетей. Когда говорят Ethernet, то под этим обычно понимают любой из вариантов этой технологии. В более узком смысле Ethernet - это сетевой стандарт, основанный на экспериментальной сети Ethernet Network, которую фирма Xerox разработала и реализовала в 1975 году. В 1980 году фирмы DEC, Intel и Xerox совместно разработали и опубликовали стандарт Ethernet версии II для сети, построенной на основе коаксиального кабеля, который стал последней версией фирменного стандарта Ethernet. Поэтому фирменную версию стандарта Ethernet называют стандартом Ethernet DIX или Ethernet II. На основе стандарта Ethernet DIX был разработан стандарт IEEE 802.3, который во многом совпадает со своим предшественником. Все выше перечисленные стандарты предназначались для сетей, функционирующих со скоростью 10 Мбит/с
В 1995 году был принят стандарт Fast Ethernet для сетей, функционирующих со скоростью 100 Мбит/с, который во многом не является самостоятельным стандартом, о чем говорит и тот факт, что его описание просто является дополнительным разделом к основному стандарту 802.3 - разделом 802.3u. Аналогично, принятый в 1998 году стандарт Gigabit Ethernet для сетей, функционирующих со скоростью 1000 Мбит/с, описан в разделе 802.3z основного документа. Спецификации Ethernet определяют протокол как совокупность из трех необходимых компонентов:
· набора правил физического уровня, задающих типы кабеля и ограничения кабельной системы для сетей Ethernet;
· формата кадра, задающего порядок и назначение битов, передаваемых в пакете Ethernet;
· механизма управления доступом к среде, называемого множественным доступом с контролем несущей и обнаружением коллизий.
Наиболее характерная особенность сети Ethernet - это механизм управления доступом к среде, который называется множественным доступом с контролем несущей и обнаружением коллизий (CSMA/CD, Carrier Sense Multiple Access / Collision Detection). Подобно любому методу MAC, CSMA/CD позволяет компьютерам в сети совместно разделять единую узкополосную среду передачи без потери данных. Протокол разработан таким образом, что каждый узел имеет равные права на доступ к сетевой среде передачи. Когда узел в сети Ethernet хочет передать данные, сначала он проверяет сетевую среду, пытаясь определить, используется ли она. Это - фаза контроля несущей. Если узел выявляет в сети трафик, он выдерживает короткую паузу и снова прослушивает сеть. Если сеть свободна, то любой узел сети может осуществить через нее передачу своих данных. Это - фаза множественного доступа. Описанный механизм сам управляет доступом к среде передачи, но не без ошибок. Вполне возможно для двух (или более) систем установить, что сеть свободна, и начать передавать свои данные примерно в один и тот же момент. Это приводит к спорной ситуации, которая в спецификациях IEEE называется ошибкой качества сигнала (SQE, signal quality error) или, что более широко употребимо, коллизией (collision). Коллизии возникают, когда одна система передает данные, а другая система выполняет контроль несущей в течение короткого промежутка времени до того момента, как первый бит переданного пакета достигнет ее. Этот интервал известен как время состязания (contention time) или временной зазор (slot time), так как каждая вовлеченная в процесс система полагает, что она начала передавать данные первой. Таким образом, каждый узел в сети всегда находится в одном из трех возможных состояний: передаче, состязании или ожидании.
Недостаток механизма CSMA/CD заключается в том, что чем больше трафик в сети, тем больше коллизий будет возникать. В обычной сети Ethernet загрузка находится приблизительно в диапазоне от 30 до 40 процентов. Когда загрузка возрастает примерно до 80 процентов, количество конфликтов увеличивается до значения, после которого производительность сети заметно снижается. В самом крайнем случае, известном как коллапс (collapse), сеть настолько забита трафиком, что почти всегда находится в состоянии состязания.
Спецификации Физического уровня для протокола Ethernet разработаны таким образом, что первые переданные 64 байта каждого пакета полностью распределяются по всей совокупной длине кабеля области коллизий. Очень важно, чтобы первый бит каждого передаваемого пакета достиг каждого узла в сети прежде, чем будет отправлен последний бит. Это требование выдвигается в связи с тем, что передающая система может выявить коллизию только тогда, когда она все еще передает данные. Если коллизия возникает после того, как последний бит покинул передающий узел, она называется поздней коллизией или иногда выходом за окно коллизий. Так как передающая система не имеет способа выявления поздних коллизий, она полагает, что пакет передан успешно. Любые данные, потерянные в результате поздней коллизии, не могут быть повторно переданы процессом Канального уровня. Эта задача переходит к протоколам, работающим на вышележащих уровнях модели OSI и использующим для обнаружения потери данных и вызова повторной передачи свои собственные механизмы. Последний процесс может отнимать время в сотни раз большее, чем повторная передача Ethernet, и это - одна из причин, по которой данной тип коллизии является проблемой. Поздние коллизии не являются обычным явлением для сети Ethernet, напротив, их появление свидетельствует о существовании серьезных проблем, которые надо немедленно устранить.
Механизм управления доступом к среде CSMA/CD является определяющим элементом протокола Ethernet, но он также накладывает и множество ограничений. Основным недостатком протокола Ethernet является то, что одновременно данные могут передаваться только в одном направления. Такой режим называется полудуплексным. Применяя специальное оборудование, также возможно организовать работу соединений Ethernet в дуплексном режиме, означающем, что устройство может передавать и получать данные одновременно. Дуплексный Ethernet возможен только для сегментов, которые имеют раздельные каналы для взаимодействия в каждом из направлений. Это относится к витой паре и оптоволоконному кабелю, поддерживаемым обычным Ethernet и Fast Ethernet, но не к коаксиальному кабелю. Из-за того, что обе системы при дуплексной связи могут передавать и получать данные одновременно, нет причин для возникновения конфликтов. В силу сказанного, нет необходимости в ограничениях кабельной системы, направленных на поддержку механизма выявления коллизий.
Исторически первые сети технологии Ethernet были созданы на коаксиальном кабеле диаметром 0,5 дюйма. В дальнейшем были определены и другие спецификации физического уровня для стандарта Ethernet, позволяющие использовать различные среды передачи данных. Физические спецификации технологии Ethernet на сегодняшний день включают следующие среды передачи данных.
· 10Base-5 - коаксиальный кабель диаметром 0,5 дюйма, называемый «толстым» коаксиалом. Имеет волновое сопротивление 50 Ом. Максимальная длина сегмента - 500 метров (без повторителей).
· 10Base-2 - коаксиальный кабель диаметром 0,25 дюйма, называемый «тонким» коаксиалом. Имеет волновое сопротивление 50 Ом. Максимальная длина сегмента - 185 метров (без повторителей).
· 10Base-T - кабель на основе неэкранированной витой пары (Unshielded Twisted Pair, UTP). Образует звездообразную топологию на основе концентратора. Расстояние между концентратором и конечным узлом - не более 100 м.
· 10Base-F - волоконно-оптический кабель. Топология аналогична топологии стандарта 10Base-T. Имеется несколько вариантов этой спецификации - FOIRL (расстояние до 1000 м), 10Base-FL (расстояние до 2000 м), 10Base-FB (расстояние до 2000 м).
Стандарт технологии Ethernet, описанный в документе IEEE 802.3, дает описание единственного формата кадра уровня MAC. Тем не менее, на практике в сетях Ethernet на канальном уровне используются кадры 4-х различных форматов (типов). Это связано с длительной историей развития технологии Ethernet, насчитывающей период существования до принятия стандартов IEEE 802.
Консорциум трех фирм Digital, Intel и Xerox в 1980 году представил на рассмотрение комитету 802.3 свою фирменную версию стандарта Ethernet в качестве проекта международного стандарта, но комитет 802.3 принял стандарт, отличающийся в некоторых деталях от предложения DIX. Отличия касались и формата кадра, что породило существование двух различных типов кадров в сетях Ethernet. Еще один формат кадра появился в результате усилий компании Novell по ускорению работы своего стека протоколов в сетях Ethernet. И, наконец, четвертый формат кадра стал результатом деятельности комитета 802.3 по приведению предыдущих форматов кадров к некоторому общему стандарту.
Различия в форматах кадров могут приводить к несовместимости в работе аппаратуры и сетевого программного обеспечения, рассчитанного на работу только с одним стандартом кадра Ethernet. Однако сегодня практически все сетевые адаптеры, драйверы сетевых адаптеров, мосты/коммутаторы и маршрутизаторы умеют работать со всеми используемыми на практике форматами кадров технологии Ethernet, причем распознавание типа кадра выполняется автоматически. Ниже приводится описание всех четырех типов кадров Ethernet . Один и тот же тип кадра может иметь разные названия, поэтому ниже для каждого типа кадра приведено по нескольку наиболее употребительных названий:
· кадр 802.3/LLC (кадр 802.3/802.2 или кадр Novell 802.2);
· кадр Raw 802.3 (или кадр Novell 802.3);
· кадр Ethernet DIX (или кадр Ethernet II);
· кадр Ethernet SNAP.
Форматы всех этих четырех типов кадров Ethernet приведены на рис. 21.
Рис. 21. Форматы кадров Ethernet
Стандарт 802.3/LLC определяет восемь полей заголовка (рис. 21, поле преамбулы и начальный ограничитель кадра на рисунке не показаны). Поле преамбулы (Preamble) состоит из семи синхронизирующих байт 10101010. Начальный ограничитель кадра (Start-of-frame-delimiter, SFD) состоит из одного байта 10101011. Появление этой комбинации бит является указанием на то, что следующий байт - это первый байт заголовка кадра.
Адрес назначения (Destination Address, DA) может быть длиной 2 или 6 байт. На практике всегда используются адреса из 6 байт. Первый бит старшего байта адреса назначения является признаком того, является адрес индивидуальным или групповым. Если он равен 0, то адрес является индивидуальным (unicast), а если 1, то это групповой адрес (multicast). Второй бит старшего байта адреса определяет способ назначения адреса - централизованный или локальный. Адрес источника (Source Address, SA) - это 2- или 6-байтовое поле, содержащее адрес узла - отправителя кадра. Первый бит адреса всегда имеет значение 0.
Подкадр протокола управления логической связью (Logical Link Control - LLC) – является одним из механизмов, позволяющих взаимодействовать локальным сетям разных топологий. Эта структуру из трех полей предшествует полю данных в кадре и используется для идентификации необходимого протокола в многопротокольных компьютерах. Это поле необходимо в связи с ограниченными возможностями протокола 802.3 в определении внешних протоколов. Подкадр LLC содержит следующие элементы:
· поле адреса порта службы получателя (Destination Service Address Port - DSAP) длиной в один октет (8 бит);
· поле адреса порта службы отправителя (Source Service Address Port - SSAP) длиной в один октет;
· служебное поле Control длиной в один октет.
Точки доступа к службам (service access points) идентифицируют протокол верхнего уровня, для которого предназначен пакет. Протоколам присвоены шестнадцатеричные значения, которые и записываются в поля DSAP и SSAP пакета. Уровень LLC выполняет адресацию и управляет каналом связи. На этом уровне принимается решение о том, какой механизм следует использовать для адресации станций в среде передачи и управления обменом данными между машинами отправителя и получателя. Длина (Length, L) - 2-байтовое поле, которое определяет длину поля данных в кадре. Поле данных (Data) может содержать от 0 до 1500 байт. Но если длина поля меньше 46 байт, то используется следующее поле - поле заполнения, чтобы дополнить кадр до минимально допустимого значения в 46 байт. Поле заполнения (Padding) состоит из такого количества байт заполнителей, которое обеспечивает минимальную длину поля данных в 46 байт. Это обеспечивает корректную работу механизма обнаружения коллизий. Поле контрольной суммы (Frame Check Sequence, FCS) состоит из 4 байт, содержащих контрольную сумму. Это значение вычисляется по алгоритму CRC-32.
Кадр Raw 802.3, называемый также кадром Novell 802.3, представлен на рис. 21. Из рисунка видно, что это кадр подуровня MAC стандарта 802.3, но без вложенного кадра подуровня LLC. Компания Novell долгое время не использовала служебные поля кадра LLC в своей операционной системе NetWare из-за отсутствия необходимости идентифицировать тип информации, вложенной в поле данных, так как там всегда находился пакет протокола IPX, долгое время бывшего единственным протоколом сетевого уровня в операционной системе (ОС) NetWare. Теперь, когда необходимость идентификации протокола верхнего уровня появилась, компания Novell стала использовать возможность инкапсуляции в кадр подуровня MAC кадра LLC, то есть использовать стандартные кадры 802.3/LLC. Такой кадр компания обозначает теперь в своих операционных системах как кадр 802.2, хотя он является комбинацией заголовков 802.3 и 802.2.
Кадр Ethernet DIX, называемый также кадром Ethernet II, имеет структуру (рис. 21), совпадающую со структурой кадра Raw 802.3. Однако 2-байтовое поле Длина кадра Raw 802.3 в кадре Ethernet DIX используется в качестве поля типа протокола. Это поле, теперь получившее название Type (Т) или EtherType, предназначено для тех же целей, что и поля DSAP и SSAP кадра LLC - для указания типа протокола верхнего уровня, вложившего свой пакет в поле данных этого кадра.
Спецификация IEEE 802.3u, утвержденная в 1995 году, определяет протокол Канального уровня для сетей, функционирующих со скоростью 100 Мбит/с, что в десять раз выше скорости обычного, классического Ethernet. Обычно его называют Fast Ethernet или 100BaseT. Fast Ethernet быстро стал промышленным стандартом для монтажа новых ЛВС в основном за счет того, что он значительно улучшает производительность сети, а изменения относительно исходного Ethernet при этом минимальны. Ethernet оставляет неизменными два из трех определяющих элементов сети Ethernet. Новый протокол использует такой же формат кадра, как IEEE 802.3 и тот же механизм управления доступом к среде CSMA/CD. Усовершенствования, которые позволяют увеличить пропускную способность, заключаются в нескольких элементах конфигурации средств Физического уровня, включая типы применяемого кабеля, длину сегментов и допустимое количество концентраторов.
Официальный стандарт 802.3u установил три различных спецификации для физического уровня Fast Ethernet и дал им следующие названия:
· 100Base-FX для многомодового оптоволоконного кабеля, используются два волокна;
· 100Base-TX для двухпарного кабеля на неэкранированной витой паре UTP категории 5 или экранированной витой паре STP Type 1;
· 100Base-T4 для четырехпарного кабеля на неэкранированной витой паре UTP категории 3, 4 или 5.
Коаксиальный кабель, давший миру первую сеть Ethernet, в число разрешенных сред передачи данных новой технологии Fast Ethernet не попал. Это общая тенденция многих новых технологий, поскольку на небольших расстояниях витая пара категории 5 позволяет передавать данные с той же скоростью, что и коаксиальный кабель, но сеть получается более дешевой и удобной в эксплуатации. На больших расстояниях оптическое волокно обладает гораздо более широкой полосой пропускания, чем коаксиал, а стоимость сети получается ненамного выше, особенно если учесть высокие затраты на поиск и устранение неисправностей в крупной кабельной коаксиальной системе. Отказ от коаксиального кабеля привел к тому, что сети Fast Ethernet всегда имеют иерархическую древовидную структуру, построенную на концентраторах, как и сети 10Base-T/10Base-F. Основным отличием конфигураций сетей Fast Ethernet является сокращение диаметра сети примерно до 200 м, что объясняется уменьшением времени передачи кадра минимальной длины в 10 раз за счет увеличения скорости передачи в 10 раз по сравнению с 10-мегабитным Ethernet.
Тем не менее, это обстоятельство не очень препятствует построению крупных сетей на технологии Fast Ethernet. Дело в том, что середина 90-х годов отмечена не только широким распространением недорогих высокоскоростных технологий, но и бурным развитием локальных сетей на основе коммутаторов. При использовании коммутаторов протокол Fast Ethernet может работать в полнодуплексном режиме, в котором нет ограничений на общую длину сети, а остаются только ограничения на длину физических сегментов, соединяющих соседние устройства (100 метров между сетевым адаптером и коммутатором и 5 метров между коммутаторами). Поэтому при создании магистралей локальных сетей большой протяженности технология Fast Ethernet также активно применяется, но только в полнодуплексном варианте, совместно с коммутаторами.
Статья получилась довольно объёмная, рассмотренные темы — форматы Ethenet фреймов, границы размеров L3 Payload, эволюция размеров Ethernet заголовков, Jumbo Frame, Baby-Giant, и много чего задето вскользь. Что-то вы уже встречали в обзорной литературе по сетям передачи данных, но со многим, однозначно, не сталкивались, если глубоко не занимались изысканиями.
Начнём с рассмотрения форматов заголовков Ethernet фреймов в очереди их появления на свет.
Форматы Ehternet фреймов.
1) Ethernet II
Рис. 1
Preamble – последовательность бит, по сути, не являющаяся частью ETH заголовка определяющая начало Ethernet фрейма.
DA (Destination Address) – MAC адрес назначения, может быть юникастом, мультикастом, бродкастом.
SA (Source Address) – MAC адрес отправителя. Всегда юникаст.
Payload – L3 пакет размером от 46 до 1500 байт
FCS (Frame Check Sequences) – 4 байтное значение CRC используемое для выявления ошибок передачи. Вычисляется отправляющей стороной, и помещается в поле FCS. Принимающая сторона вычисляет данное значение самостоятельно и сравнивает с полученным.
Данный формат был создан в сотрудничестве 3-х компаний – DEC, Intel и Xerox. В связи с этим, стандарт также носит название DIX Ethernet standard. Данная версия стандарта была опубликована в 1982г (первая версия, Ehernet I – в 1980г. Различия в версиях небольшие, формат в целом остался неизменным). В 1997г. году данный стандарт был добавлен IEEE к стандарту 802.3, и на данный момент, подавляющее большинство пакетов в Ethernet сетях инкапсулированы согласно этого стандарта.
2) Ethernet_802.3/802.2 (802.3 with LLC header)
Рис. 2
Как вы понимаете, комитет IEEE не мог смотреть спокойно, как власть, деньги и женщины буквально ускользают из рук. Поэтому, занятый более насущными проблемами, за стандартизацию технологии Ethernet взялся с некоторым опозданием (в 1980 взялись за дело, в 1983 дали миру драфт, а в 1985 сам стандарт), но большим воодушевлением. Провозгласив инновации и оптимизацию своими главными принципами, комитет выдал следующий формат фрейма, который вы можете наблюдать на Рисунке 2.
Первым делом обращаем внимание на то, что “ненужное” поле E-TYPE преобразовано в поле Length, которое указывало на количество байт следующее за этим полем и до поля FCS. Теперь, понять у кого длинее можно было уже на втором уровне системы OSI. Жить стало лучше. Жить стало веселее.
Но, указатель на тип протокола 3его уровня был нужен, и IEEE дало миру следующую инновацию — два поля по 1 байту — Source Service Access Point(SSAP) и Destination Service Access Point (DSAP). Цель, таже самая, – идентифицировать вышестоящий протокол, но какова реализация! Теперь, благодаря наличию двух полей в рамках одной сессии пакет мог передаваться между разными протоколами, либо же один и тот же протокол мог по разному называться на двух концах одной сессии. А? Каково? Где ваше Сколково?
Не давая себе передышки, в IEEE зарезервировали по 1 биту в SSAP и DSAP. В SSAP под указание command или response пакета, в DSAP под указание группового или индивидуального адреса (см. Рис. 6). В Ethernet сетях эти вещи распространения не получили, но количество бит в полях SAP сократилось до 7, что оставило лишь 128 возможных номера под указание вышестоящего протокола. Запоминаем этот факт, к нему мы ещё вернёмся.
Было уже сложно остановиться в своём стремлении сделать лучший формат фрейма на земле, и в IEEE фрейм формате появляется 1 байтное поле Control. Отвечающее, не много, не мало, за Connection-less или же Connection-oriented соединение!
Выдохнув и осмотрев своё детище, в IEEE решили взять паузу.
Замечание: Рассматриваемые 3 поля — DSAP, SNAP и Control и являются LLC заголовком.
3) «Raw» 802.3
Рис. 3
Данный «недостандарт» явил в мир Novell. Это были лихие 80-ые, все выживали, как могли, и Novell не был исключением. Заполучив ещё в процессе разработки спецификации стандарта 802.3/802.2, и лёгким движением руки выкинув LLC заголовок, в Novell получили вполне себе неплохой фрейм формат (с возможность измерения длины на втором уровне!), но одним существенным недостатком – отсутствием возможности указания вышестоящего протокола. Но, как вы уже могли догадаться, работали там ребята не глупые, и по здравому размышлению выработали решение – «а обратим ка мы свои недостатки в свои же достоинства», и ограничили этот фрейм-формат исключительно IPX протоколом, который сами же и поддерживали. И задумка хорошая, и план был стратегически верный, но, как показала история, не фортануло.
4) 802.3 with SNAP Header.
Время шло. В комитет IEEE приходило осознание того, что номера протоколов и деньги кончаются. Благодарные пользователи засыпали редакцию письмами, где 3-х байтный LLC заголовок ставился в один ряд с такими великими инновациями человечества, как оборудование собаки 5ой ногой, или же с рукавом, который можно использовать для оптимизации женской анатомии. Выжидать дальше было нельзя, настало время заявить о себе миру повторно.
Рис. 4
И в помощь страждущим от нехватки номеров протоколов (их всего могло быть 128 – мы упоминали), IEEE вводит новый стандарт фрейма Ethernet SNAP (Рис. 4). Основное нововведение — добавление 5-ти байтного поля Subnetwork Access Protocol (SNAP), которое в свою очередь состоит из двух частей – 3х байтного поля Organizationally Unique Identifier (OUI) и 2х байтного Protocol ID (PID) — Рис. 5.
Рис. 5
OUI или же vendor code – позволяет идентифицировать пропиетарные протоколы указанием вендора. К примеру, если вы отловите WireShark`ом пакет PVST+, то в поле OUI увидите код 0x00000c, который является идентификатором Cisco Systems (Рис. 6).
Рис. 6
Замечание: Встретить пакет с инкапсуляцией в формат фрейма 802.3 SNAP довольно легко и сейчас – это все протоколы семейства STP, протоколы CDP, VTP, DTP.
Поле PID это, по сути, то же поле EtherType из DIX Ethernet II — 2 байта под указание протокола вышестоящего уровня. Так как ранее, для этого использовались DSAP и SSAP поля LLC заголовка, то для указания того, что тип вышестоящего протокола нужно смотреть в поле SNAP, поля DSAP и SSAP принимают фиксированное значение 0xAA (также видно на Рис. 6)
Замечание: При использовании для переноса IP пакетов формата фрейма LLC/SNAP, IP MTU снижается с 1500 до 1497 и 1492 байт соответственно.
По заголовкам в формате фрейма в принципе всё. Хотел бы обратить внимание на ещё один момент в формате фрейма – размер payload. Откуда взялся этот диапазон — от 46 до 1500 байт?
Размер L3 Payload.
Откуда взялось нижнее ограничение, знает, пожалуй, каждый, кто хотя бы читал первый курикулум CCNA. Данное ограничение является следствием ограничения в размер фрейма в 64 байта (64 байта – 14 байт L2 заголовок — 4 байта FCS = 46 байт ) накладываемого методом CSMA/CD – время требуемое на передачу 64 байт сетевым интерфейсом является необходимым и достаточным для определения коллизии в среде Ethernet.
Замечание: В современных сетях, где возникновение коллизий исключено, данное ограничение уже не актуально, но требование сохраняется. Это не единственный «аппендикс» оставшийся с тех времен, но о них поговорим в другой статье.
- Задержка при передаче – чем больше фрейм, тем дольше длится передача. Для ранних сетей, где Collision домен не ограничивался портом, и все станции должны были ждать завершения передачи, это было серьёзной проблемой.
- Чем больше фрейм, тем больше вероятность того что фрейм при передаче будет поврежден, что приведет к необходимости повторной передачи, и все устройства в collision домене будут вынуждены опять ожидать.
- Ограничения, накладываемые памятью используемой под интерфейс буферы – на тот момент (1979г) увеличение буферов значительно удорожало стоимость интерфейса.
- Ограничение, вносимое полем Length/Type – в стандарте закреплено, что все значения выше 1536 (от 05-DD до 05-FF.) указывают на EtherType, соответственно длина должна быть меньше 05-DC. (У меня правда есть подозрение, что это скорее следствие, чем предпосылка, но вроде инфа от разработчиков стандарта 802.3)
Замечание: Фреймы меньше 64 байт называются Runts, фреймы больше 1518 байт называются Giants. Просмотреть кол-во таких фреймов полученных на интерфейсе можно командой show interface gigabitEthernet module/number и show interface gigabitEthernet module/number counters errors. Причём до IOS 12.1(19) в счётчики шли как фреймы с неверным, так и верным CRS (хотя вторые не всегда дропались – зависит от платформы и условий). А вот начиная с 12.1.(19) отображаются в этих счётчиках только те runt и giant фреймы, которые имеют неверный CRS, фреймы меньше 64 байт, но с верным CRS (причина возникновения обычно связана с детегированием 802.1Q или источником фреймов, а не проблемами физического уровня) с этой версии попадают в счётчик Undersize, дропаются они, или же форвардятся дальше, зависит от платформы.
Эволюция размеров Ethernet заголовков.
- 802.3AC — увеличивает максимальный размер фрейма до 1522 – добавляется Q-tag – несущий информацию о 802.1Q (VLAN tag) и 802.1p (биты под COS)
- 802.1AD — увеличивает максимальный размер фрейма до 1526, поддержка QinQ
- 802.1AH (MIM) – Provider Bridge Backbone Mac in Mac + 30 байт к размеру фрейма
- MPLS – увеличиваем размер фрейма на стек меток 1518 + n*4, где n – количество меток в стеке.
- 802.1AE – Mac Security, к стандартным полям добавляются поля Security Tag и Message Authentication Code + 68 байт к размеру фрейма.
Все эти фреймы увеличенного размера группируются под одни именем – Baby-Giant frames. Негласное верхнее ограничение по размерам для Baby-Giant – это 1600 байт. Современные сетевые интерфейсы будут форвардить эти фреймы, зачастую, даже без изменения значения HW MTU.
Отдельно обратим внимание на спецификации 802.3AS — увеличивает максимальный размер фрейма до 2000 (но сохраняет размер MTU в 1500 байт!). Увеличение приходится на заголовок и трейлер. Изначально увеличение планировалось на 128 байт – для нативной поддержки стандартом 802.3 вышеперечисленных расширений, но в итоге сошлись на 2х тысячах, видимо, чтобы два раза не собираться (или как говорят в IEEE – this frame size will support encapsulation requirements of the foreseeable future). Стандарт утвержден в 2006 году, но кроме как на презентациях IEEE, я его не встречал. Если у кого есть что добавить здесь (и не только здесь) – добро пожаловать в комменты. В целом тенденция увеличения размера фрейма при сохранении размера PAYLOAD, порождает у меня в голове смутные сомнения в правильности выбранного направления движения.
Замечание: Немного в стороне от перечисленного обосновался FCoE фрейм – размер фрейма до 2500 байт, зачастую, эти фреймы называются mini-jumbo. Для их саппорта необходимо включать поддержку jumbo-frame.
- Выгода соотношения Payload к заголовкам. Чем больше это соотношение, тем эффективней мы можем использовать линии связи. Конечно здесь разрыв будет не такой как в сравнении с использованием пакетов в 64 байт и 1518 байт для TCP сессий. Но свои 3-8 процентов, в зависимости от типа трафика выиграть можно.
- Значительно меньшее количество заголовков генерирует меньшую нагрузку на Forwading Engine, также и на сервисные Engine. К примеру, frame rate для 10G линка загруженного фреймами по 1500 байт равен 812 744 фреймов в секунду, а тот же линк загруженный Jumbo фреймами в 9000 байт генерирует фрейм рейт всего лишь в 138 587 фрейм в секунду. На рисунке 7 приведены график из отчёта Alteon Networks (ссылка будет внизу статьи) утилизации CPU и гигабитного линка, в зависимости от типа используемого размера фрейма.
- Увеличение TCP Throughput при изменении размера MTU — staff.psc.edu/rreddy/networking/mtu.html
- Чем больше фрейм, тем дольше он будет передаваться (Рис. 8):
- Буферы в памяти сетевых устройств заполняются быстрее, что может вызвать нежелательные последствия. По сути, решаемо на стадии проектирования оборудования, но увеличивает стоимость.
- Проприетарная реализация у каждого производителя – все устройства должны поддерживать или одинаковые размеры Jumbo фрейма, или же наборы размеров.
- Использование на больших участках сети находящихся под разным административным контролем, по сути, невозможно, из-за отсутствия механизма Jumbo Frame Discovery – промежуточный узел может не поддерживать Jumbo Frame совсем или определенный размер.
- В серверных кластерах
- При бэкапировании
- Network File System (NFS) Protocol
- iSCSI SANs
- FCoE SANs
Замечание: Верхнее ограничение размера есть и у Jumbo MTU. Оно определяется размером поля FCS (4 байт) и алгоритмом Cyclic Redundancy Check и равняется 11 455 байт. На практике же, Jumbo MTU обычно ограничен размером в 9216 байт, на некоторых платформах в 9000 байт, на более старом железе в 8092 байт (речь о Cisco).
Фух, в принципе всё. Что хотел рассмотреть по теории, рассмотрели. По конфигурации размеров MTU и теории с финтами стоящими за этими тремя буквами, прошу в мою прошлую статью – «Maximum Transmission Unit (MTU). Мифы и рифы».
В заключение обещанный линк на отчёт Alteon Networks «Extended Frame Sizes for Next Generation Ethernets» — staff.psc.edu/mathis/MTU/AlteonExtendedFrames_W0601.pdf, и небольшой анонс на следующую статью – в ней мы падём ещё ниже — на физический уровень, и будем разбираться с тяжелым наследием CSMA/CD, энкодингами, и, походя, зацепим ещё чего из злободневного.
Кто-то считает, что это очевидные вещи, другие скажут, что скучная и ненужная теория. Тем не менее на собеседованиях периодически можно услышать подобные вопросы. Мое мнение: о том, о чем ниже пойдет речь, нужно знать всем, кому приходится брать в руки «обжимку» 8P8C (этот разъем обычно ошибочно называют RJ-45). На академическую глубину не претендую, воздержусь от формул и таблиц, так же за бортом оставим линейное кодирование. Речь пойдет в основном о медных проводах, не об оптике, т.к. они шире распространены в быту.
Технология Ethernet описывает сразу два нижних уровня модели OSI. Физический и канальный. Дальше будем говорить только о физическом, т.е. о том, как передаются биты между двумя соседними устройствами.
Технология Ethernet — часть богатого наследия исследовательского центра Xerox PARC. Ранние версии Ethernet использовали в качестве среды передачи коаксиальный кабель, но со временем он был полностью вытеснен оптоволокном и витой парой. Однако важно понимать, что применение коаксиального кабеля во многом определило принципы работы Ethernet. Дело в том, что коаксиальный кабель — разделяемая среда передачи. Важная особенность разделяемой среды: ее могут использовать одновременно несколько интерфейсов, но передавать в каждый момент времени должен только один. С помощью коаксиального кабеля можно соединит не только 2 компьютера между собой, но и более двух, без применения активного оборудования. Такая топология называется шина. Однако если хотябы два узла на одной шине начнут одновременно передавать информацию, то их сигналы наложатся друг на друга и приемники других узлов ничего не разберут. Такая ситуация называется коллизией, а часть сети, узлы в которой конкурируют за общую среду передачи — доменом коллизий. Для того чтоб распознать коллизию, передающий узел постоянно наблюдает за сигналов в среде и если собственный передаваемый сигнал отличается от наблюдаемого — фиксируется коллизия. В этом случае все узлы перестают передавать и возобновляют передачу через случайный промежуток времени.
Диаметр коллизионного домена и минимальный размер кадра
Таким образом чем больше потенциальный размер сегмента сети, тем больше накладных расходов уходит на передачу порций данных маленького размера. Разработчикам технологии Ethernet пришлось искать золотую середину между двумя этими параметрами, и минимальным размером кадра была установлена величина 64 байта.
Витая пара и дуплексный режим рабты
Витая пара в качестве среды передачи отличается от коаксиального кабеля тем, что может соединять только два узла и использует разделенные среды для передачи информации в разных направлениях. Одна пара используется для передачи (1,2 контакты, как правило оранжевый и бело-оранжевый провода) и одна пара для приема (3,6 контакты, как правило зеленый и бело-зеленый провода). На активном сетевом оборудовании наоборот. Не трудно заметить, что пропущена центральная пара контактов: 4, 5. Эту пару специально оставили свободной, если в ту же розетку вставить RJ11, то он займет как раз свободные контакты. Таким образом можно использовать один кабели и одну розетку, для LAN и, например, телефона. Пары в кабеле выбраны таким образом, чтоб свести к минимуму взаимное влияние сигналов друг на друга и улучшить качество связи. Провода одной пару свиты между собой для того, чтоб влияние внешних помех на оба провода в паре было примерно одинаковым.
Для соединения двух однотипных устройств, к примеру двух компьютеров, используется так называемый кроссовер-кабель(crossover), в котором одна пара соединяет контакты 1,2 одной стороны и 3,6 другой, а вторая наоборот: 3,6 контакты одной стороны и 1,2 другой. Это нужно для того, чтоб соединить приемник с передатчиком, если использовать прямой кабель, то получится приемник-приемник, передатчик-передатчик. Хотя сейчас это имеет значение только если работать с каким-то архаичным оборудованием, т.к. почти всё современное оборудование поддерживает Auto-MDIX — технология позволяющая интерфейсу автоматически определять на какой паре прием, а на какой передача.
Возникает вопрос: откуда берется ограничение на длину сегмента у Ethernet по витой паре, если нет разделяемой среды? Всё дело в том, первые сети построенные на витой паре использовали концентраторы. Концентратор (иначе говоря многовходовый повторитель) — устройство имеющее несколько портов Ethernet и транслирующее полученный пакет во все порты кроме того, с которого этот пакет пришел. Таким образом если концентратор начинал принимать сигналы сразу с двух портов, то он не знал, что транслировать в остальные порты, это была коллизия. То же касалось и первых Ethernet-сетей использующих оптику (10Base-FL).
Зачем же тогда использовать 4х-парный кабель, если из 4х пар используются только две? Резонный вопрос, и вот несколько причин для того, чтобы делать это:
- 4х-парный кабель механически более надежен чем 2х-парный.
- 4х-парный кабель не придется менять при переходе на Gigabit Ethernet или 100BaseT4, использующие уже все 4 пары
- Если перебита одна пара, можно вместо нее использовать свободную и не перекладывать кабель
- Возможность использовать технологию Power over ethernet
Не смотря на это на практике часто используют 2х-парный кабель, подключают сразу 2 компьютера по одному 4х-парному, либо используют свободные пары для подключения телефона.
Gigabit Ethernet
В отличии от своих предшественников Gigabit Ethernet всегда использует для передачи одновременно все 4 пары. Причем сразу в двух направлениях. Кроме того информация кодируется не двумя уровнями как обычно (0 и 1), а четырьмя (00,01,10,11). Т.е. уровень напряжения в каждый конкретный момент кодирует не один, а сразу два бита. Это сделано для того, чтоб снизить частоту модуляции с 250 МГц до 125 МГц. Кроме того добавлен пятый уровень, для создания избыточности кода. Он делает возможной коррекцию ошибок на приеме. Такой вид кодирования называется пятиуровневым импульсно-амплитудным кодированием (PAM-5). Кроме того, для того, чтоб использовать все пары одновременно для приема и передачи сетевой адаптер вычитает из общего сигнала собственный переданный сигнал, чтоб получить сигнал переданный другой стороной. Таким образом реализуется полнодуплексный режим по одному каналу.
Дальше — больше
10 Gigabit Ethernet уже во всю используется провайдерами, но в SOHO сегменте не применяется, т.к. судя по всему там вполне хватает Gigabit Ethernet. 10GBE качестве среды распространения использует одно- и многомодовое волокно, с или без уплотнением по длине волны, медные кабели с разъемом InfiniBand а так же витую пару в стандарте 10GBASE-T или IEEE 802.3an-2006.
40-гигабитный Ethernet (или 40GbE) и 100-гигабитный Ethernet (или 100GbE). Разработка этих стандартов была закончена в июле 2010 года. В настоящий момент ведущие производители сетевого оборудования, такие как Cisco, Juniper Networks и Huawei уже заняты разработкой и выпуском первых маршрутизаторов поддерживающих эти технологии.
В заключении стоит упомянуть о перспективной технологии Terabit Ethernet. Боб Меткалф, создатель предположил, что технология будет разработана к 2015 году, и так же сказал:
Чтобы реализовать Ethernet 1 ТБит/с, необходимо преодолеть множество ограничений, включая 1550-нанометровые лазеры и модуляцию с частотой 15 ГГц. Для будущей сети нужны новые схемы модуляции, а также новое оптоволокно, новые лазеры, в общем, все новое
UPD: Спасибо хабраюзеру Nickel3000, что подсказал, про то что разъем, который я всю жизнь называл RJ45 на самом деле 8P8C.
UPD2:: Спасибо пользователю Wott, что объяснил, почему используются контакты 1,2,3 и 6.
В продолжение предыдущей статьи "Ethernet & FC", хотел бы дать конкретные рекомендации по оптимизации Ethernet сети для работы с СХД NetApp FAS. Хотя, полагаю, многие вещи описанные здесь могут быть полезны и для других решений.
Ненадёжный Ethernet
Jumbo Frame
В случае использования протоколов NFS , iSCSI , CIFS рекомендуется по возможности включать jumbo frame, на коммутаторах и хостах. СХД NetApp поддерживает на данный момент размер MTU 9000, что пока что является максимальным значением для Ethernet 10GB. В этом случае jumbo frame должны быть включены на всём пути следования Ethernet фреймов: от источника до получателя. К сожалению не во всех коммутаторах и не на всех сетевых адаптерах хостов поддерживается «максимальный» на данный момент MTU , так к примену некоторые блейд-шасси HP с серверами и встроенными 10GB коммутаторами поддерживают максимум 8000 MTU , для таких случаев на стороне СХД необходимо подбирать наиболее подходящее значение MTU . Так как есть некотарая путаница в том, что такое MTU , есть трудности с пониманием какое значение MTU нужно настроить. Так к примеру для нормальной работы СХД NetApp с установленным значением MTU 9000 на Ethernet интерфейсе будет «нормально» работать со свичами у которы значение MTU установлено в одно из значений: 9000 (Catalyst 2970/2960/3750/3560 Series), 9198 (Catalyst 3850), 9216 (Cisco Nexus 3000/5000/7000/9000, Catalyst 6000/6500 / Cisco 7600 OSR Series), на других это значение вообще должно быть 9252. Как правило, установив MTU на свиче в максимально допустимое значение (выше или равно 9000), всё будет работать. Для разъяснения, рекомендую прочесть соответствующую статью Maximum Transmission Unit (MTU). Мифы и рифы.
Jumbo Frames в Cisco UCS
Выполняем инастройку из командной строки на каждом Fabric Interconnect:
В настройках UCS Manager при работе с Ethernet настраиваем MTU во вкладке «Lan > Lan Cloud > QoS System Class», прописываем MTU одному выбранному классу.
Потом создаём «QoS политику»
Создаём vNIC template
Привязываем к сетевому интерфейсу сервера.
FlowControl
- Общее правило гласит по возможности не включать flowcontrol, TR-3428.
- Для 10GB сетей крайне не рекомендуется включать flowcontrol.
- Для сетей 1GB можно включать flowcontrol (в качестве исключения из правила): хранилище отсылает управление потоком, а свитч принимает — на СХД устанавливать flowcontrol в значение send, а на свитче в значение Desired (или send/tx off & receive/rx on).
- Для 100 MB сетей (в качестве исключения из правила) можно включать flowcontrolна приём и передачу на обоих: хранилище и свитч отсылают и принимают команды управления потоком.
- Тем, кому интересно почему такие рекомендации, вам сюда.
- Дополнительно смотри TR -3802
- Примеры настройки хранилища и свичий можно посмотреть в соответствующих статьях.
Spanning Tree Protocol
В случае использования NetApp с «классическим Ethernet» (т.е. Ethernet который так сказать «не уровня „Datacenter“) крайне рекомендуется включить RSTP , а Ethernet порты, в которые подключены конечные узлы (СХД и хосты) настроить с включенным режимом portfast, TR-3749. Ethernet сети уровня „Datacenter“ вообще не нуждаются в Spanning Tree, примером такого оборудования могут служить коммутаторы Cisco серии Nexus с технологией vPC .
Converged Network
FC8 vs 10GBE: iSCSI, CIFS, NFS
Современные конвергентные коммутаторы, такие как Cisco Nexus 5500 способны коммутировать как трафик Ethernet так и FC позволяя иметь большую гибкость в будущем благодаря решению „два-в-одном“.
на NetApp 7-Mode
на NetApp Clustered ONTAP
Обратите внимание, portfast (spanning-tree port type edge) должен быть настроен ДО того, как будет подключён NetApp!
На коммутаторе Cisco Catalyst:
На коммутаторе Cisco Nexus 5000:
Уверен, что со временем мне будет что добавить в эту статью по оптимизации сети, спустя время, так что заглядывайте сюда время от времени.
Замечания по ошибкам в тексте и предложения прошу направлять в ЛС .
В 1980-м году в институте IEEE был организован комитет 802 по стандартизации локальных сетей, в результате работы которого было принято семейство стандартов IEEE 802.х. Оно содержит рекомендации по проектированию нижних уровней локальных сетей. Помимо IEEE в работе по стандартизации протоколов локальных сетей принимают участие и другие организации (ANSI, ETSI и др.).Стандарты семейства IEEE 802.х охватывают только два нижних уровня модели OSI – физический и канальный, т.к. именно эти два уровня в наибольшей степени отражают специфику работы локальных сетей. Старшие же уровни, начиная с сетевого, в значительной степени имеют общие черты как для локальных, так и для глобальных сетей.
Специфика локальных сетей также нашла свое отражение в разделении канального уровня на два подуровня:
- управление логическим каналом (Logical Link Control, LLC)
- управление доступом к среде (Madia Access Control,MAC).
Уровень МАС появился из-за существования в локальных сетях разделяемой среды передачи. Именно этот уровень обеспечивает корректное совместное использование общей среды передачи. В современных локальных сетях получили распространение несколько протоколов уровня МАС, реализующие различные алгоритмы доступа к разделяемой среде, полностью определяющие специфику таких технологий как Ethernet, Fast- Ethernet, Gigabit-Ethernet, Token Ring, FDDI.
Подуровень LLC может пользоваться разделяемой средой, после того, как доступ к ней получен с помощью подуровня МАС. Он реализует функции интерфейса с прилегающим к нему сетевым уровнем. Подуровень LLC отвечает также за передачу данных с различной степенью надежности между узлами, передавая свои кадры либо дейтаграммным способом, либо с помощью процедур с установлением виртуального соединения и восстановления кадров.
На рис.1 показан формат кадра Ethernet
Рис.1. | Два базовых MAC формата (raw formats) кадра Ethernet |
. Поля имеют следующие назначения:
· Преамбула: 7 байт, каждый из которых представляет чередование единиц и нулей 10101010. Преамбула позволяет установить битовую синхронизацию на приемной стороне.
· Ограничитель начала кадра (SFD, start frame delimiter): 1 байт, последовательность 10101011, указывает, что далее последуют информационные поля кадра. Этот байт можно относить к преамбуле.
· Адрес назначения (DA, destination address): 6 байт, указывает MAC-адрес станции (MAC-адреса станций), для которой (которых) предназначен этот кадр. Это может быть единственный физический адрес (unicast), групповой адрес (multicast) или широковещательный адрес (broadcast).
· Адрес отправителя (SA, source address): 6 байт, указывает MAC-адрес станции, которая посылает кадр.
· Поле типа или длины кадра (T or L, type or length): 2 байта. Существуют два базовых формата кадра Ethernet (это связано с длительной историей развития технологии Ethernet) - Ethernet_II и IEEE 802.3, причем различное назначение у них имеет именно рассматриваемое поле. Для кадра Ethernet_II в этом поле содержится информация о типе кадра. Ниже приведены значения в шестнадцатеричной системе этого поля для некоторых распространенных сетевых протоколов: 0x0800 для IP, 0x0806 для ARP, 0x809B для AppleTalk, 0x0600 для XNS, и 0x8137 для IPX/SPX. С указанием в этом поле конкретного значения (одного из перечисленных) кадр приобретает реальный формат, и в таком формате кадр уже может распространяться по сети. Для кадра IEEE 802.3 в этом поле содержится выраженный в байтах размер следующего поля - поля данных (LLC Data). Если общая длина кадра меньше 64 байт, то за полем LLC Data следует поле Pad. Для протокола более высокого уровня не возникает путаницы с определением типа кадра, так как для кадра IEEE 802.3 значение этого поля не может быть больше 1500 (0x05DC). Поэтому, в одной сети могут свободно сосуществовать оба формата кадров, более того один сетевой адаптер может взаимодействовать с обоими типами посредством стека протоколов.
· Данные (LLC Data): поле данных, которое обрабатывается подуровнем LLC.
· Дополнительное поле (pad - наполнитель) - заполняется только в том случае, когда поле данных невелико, с целью удлинения длины кадра до минимального размера 64 байта -преамбула не учитывается. Ограничение снизу на минимальную длину кадра необходимо для правильного разрешения коллизий.
· Контрольная последовательность кадра (FCS, frame check sequence): 4-х байтовое поле, в котором указывается контрольная сумма, вычисленная с использованием циклического избыточного кода по полям кадра за исключением преамбулы, SDF и FCS.
Сам по себе кадр IEEE 802.3 еще не окончательный. В зависимости от значений первых нескольких байт поля LLC Data, могут быть три окончательных формата кадра IEEE 802.3:
- Ethernet_802.3 (не стандартный, в настоящее время устаревающий формат, используемый Novell) - первые два байта LLC Data равны 0xFFFF;
- Ethernet_SNAP (стандартный IEEE 802.2 SNAP формат, которому отдается наибольшее предпочтение в современных сетях, особенно для протокола TCP/IP) - первый байт LLC Data равен 0xAA;
- Ethernet_802.2 (стандартный IEEE 802.2 формат, взят на вооружение Novell в NetWare 4.0) - первый байт LLC Data не равен ни 0xFF (11111111), ни 0xAA (10101010).
Читайте также: