Экстернат |
Сети Ethernet
История создания протокола IEEE-802.3 (Ethernet) достаточно любопытна. Первоначальная версия базировалась на алгоритме доступа ALOHA и предназначалась для установления связи между машинами, раскиданными по Гавайским островам. Позднее компания Xerox создала систему на основе алгоритма CSMA/CD с быстродействием 2,94 Мбит/c. Окончательно принципы сети Ethernet разработаны в 1976 году Меткальфом и Боггсом (фирма Xerox). Ethernet совместно со своими скоростными версиями Fast Ethernet ( FE ), Giga Ethernet ( GE ) и 10GE занимает в настоящее время абсолютно лидирующее положение. Единственным недостатком данной сети является отсутствие гарантии времени доступа к среде (и механизмов, обеспечивающих приоритетное обслуживание), что делает сеть малоперспективной для решения технологических задач реального времени. Определенные проблемы иногда создает ограничение на максимальное поле данных, равное ~1500 байт.
Выбор длины поля данных диктовался уровнем ошибок (BER) для технологий, существовавших на момент разработки стандарта Ethernet.
Первоначально в качестве среды передачи данных использовался толстый коаксиальный кабель ( Z = 50 Ом ), а подключение к нему выполнялось через специальные устройства (трансиверы). Позднее сети начали строиться на основе тонкого коаксиального кабеля. Но и такое решение было достаточно дорогим. Разработка дешевых широкополосных скрученных пар и соответствующих разъемов открыла перед Ethernet широкие перспективы. Те, кому приходилось работать с коаксиальными кабелями Ethernet, знают, что при подсоединении или отсоединении разъема можно получить болезненные удары тока. Для скрученных пар это исключено. Но и эта технология не вечна: скрученные пары мало-помалу уступают свои позиции оптоволоконным кабелям.
Для разного быстродействия Ethernet используются разные схемы кодирования, но алгоритм доступа и формат кадра остается неизменным, что гарантирует программную совместимость.
Однако наличие сотен миллионов интерфейсов Ethernet является серьезным препятствие замены стандарта на более совершенный.
16.1. Архитектура сетей Ethernet
Многие современные физические сетевые среды используют последовательный формат передачи информации. К этой разновидности относится и Ethernet. Фирма "Ксерокс" осуществила разработку протокола Ethernet в 1973 году, а в 1979 году объединение компаний Xerox, Intel и DEC (DIX) предоставило документ для стандартизации протокола в IEEE. Предложение с небольшими изменениями было принято комитетом 802.3 в 1983 году. Кадр Ethernet в современном стандарте имеет формат, показанный на рис. 16.1.
![Формат кадра сетей Ethernet (цифры в верхней части рисунка показывают размер поля в байтах)](/EDI/11_04_18_2/1523398877-17984/tutorial/37/objects/16/files/16-01.jpg)
Рис. 16.1. Формат кадра сетей Ethernet (цифры в верхней части рисунка показывают размер поля в байтах)
Поле преамбула содержит 7 байт 0хАА и служит для стабилизации и синхронизации среды (чередующиеся сигналы CD1 и CD0 при завершающем CD0), далее следует поле SFD (Start Frame Delimiter = 0xAB), которое предназначено для выявления начала кадра. Поле EFD (End Frame Delimiter) задает конец кадра. Поле контрольной суммы ( CRC — Cyclic Redundancy Check), так же как и преамбула, SFD и EFD, формируются и контролируются на аппаратном уровне. В некоторых модификациях протокола поле EFD не применяется. Пользователю доступны поля, начиная с адреса получателя и кончая полем информация, включительно. После CRC и EFD следует межпакетная пауза ( IPG — InterPacket Gap – межпакетный интервал) длиной 96 бит-тактов (9,6 мкс для 10-мегабитного Ethernet) или более. Максимальный размер кадра равен 1518 байт (сюда не включены поля преамбулы, SFD и EFD). Интерфейс просматривает все пакеты, следующие по кабельному сегменту, к которому он подключен: ведь определить, корректен ли принятый пакет и кому он адресован, можно лишь приняв его целиком. Корректность пакета по CRC, по длине и кратности целому числу байт определяется после проверки адреса места назначения. Вероятность ошибки передачи при наличии CRC-контроля составляет ~2-32. При вычислении CRC используется образующий полином R(x):
R(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1.
Алгоритм вычисления CRC сводится к вычислению остатка от деления кода M(x), характеризующего кадр, на образующий полином R(x) ( Carrier Sense Multiple Access with Collision Detection Access Method and Physical Layer Specification. Published by IEEE 802.3-1985. Wiley-Interscience, John & Sons, Inc.). CRC представляет собой дополнение полученного остатка R(x). CRC вычисляется сетевым интерфейсом и пересылается, начиная со старших разрядов.
Для пересылки данных в сети (быстродействием <1 Гбит/с) используется манчестерский код, который служит как для передачи данных, так и для синхронизации. Каждый бит-символ делится на две части, причем вторая часть всегда является инверсной по отношению к первой. В первой половине кодируемый сигнал представлен в логически дополнительном виде, а во второй – в обычном. Таким образом, сигнал логического 0 – CD0 характеризуется в первой половине уровнем HI (+0,85 В), а во второй — LO (-0,85 В). Соответственно сигнал CD1 характеризуется в первой половине бит-символа уровнем LO, а во второй – HI. Примеры форм сигналов при манчестерском кодировании представлены на рис. 16.2. Верхний уровень сигнала соответствует +0,85 В, нижний — -0,85 В.
Минимальная длительность пакета в Ethernet определяется тем, что отправитель должен узнать о столкновении пакетов, если оно произошло, раньше, чем закончит передачу кадра. При этом длительность передаваемого пакета должна быть больше удвоенного максимального времени распространения кадра до самой удаленной точки сетевого сегмента.
Здесь подразумевается сегмент, образуемый кабелями и повторителями. Минимальная длительность кадра, равная 64 байтам, была определена для конфигураций 10 Мбит/c сети с четырьмя повторителями и 500-метровыми кабельными сегментами. Наибольший вклад в задержку вносят повторители (если они используются).
Если размер пакета меньше 64 байт, добавляются байты-заполнители, чтобы кадр в любом случае имел соответствующий размер. При приеме контролируется длина пакета, и если она превышает 1518 байт, пакет считается избыточным и обрабатываться не будет. Аналогичная судьба ждет кадры короче 64 байт. Любой пакет должен иметь длину, кратную 8 бит (целое число байт). Если в поле адресата содержатся все единицы, адрес считается широковещательным, то есть обращенным ко всем рабочим станциям локального сегмента сети.
При подключении ЭВМ к сети непосредственно с помощью переключателя ограничение на минимальную длину кадра теоретически снимается. Но работа с более короткими кадрами в этом случае станет возможной лишь при замене сетевого интерфейса на нестандартный (причем как у отправителя, так и получателя)!
Пакет Ethernet может нести от 46 до 1500 байт данных. Формат MAC-адреса получателя или отправителя показан на рис. 16.3.
В верхней части рисунка указана длина полей адреса, в нижней – нумерация разрядов. Субполе I/G представляет собой флаг индивидуального или группового адреса. I/G=0 – указывает на то, что адрес является индивидуальным адресом сетевого объекта. I/G=1 характеризует адрес как мультикастинговый, в этом случае дальнейшее разбиение адреса на субполя теряет смысл. Мультикастинговые адреса позволяют обращаться сразу к нескольким станциям в пределах субсети. Субполе U/L является флагом универсального или местного управления (определяет механизм присвоения адреса сетевому интерфейсу). U/L=1 указывает на локальную адресацию (адрес задан не производителем и ответственность за уникальность лежит на администраторе LAN или на пользователе). U/L=I/G=0 характерно для стандартных уникальных адресов, присваиваемых интерфейсу его изготовителем. Субполе OUI (Organizationally Unique Identifier) позволяет определить производителя сетевого интерфейса. Каждому производителю присваивается один или несколько OUI. Размер субполя позволяет идентифицировать около 4 миллионов различных производителей. За корректность присвоения уникального адреса интерфейса ( OUA – Organizationally Unique Address) несет ответственность производитель. Двух интерфейсов одного и того же производителя с идентичными номерами не должно существовать. Размер поля позволяет произвести примерно 16 миллионов интерфейсов. Комбинация OUI и OUA составляют UAA (Universally Administrated Address = IEEE-адрес).
Если в поле кадра протокол/тип записан код менее 1500, то это поле характеризует длину кадра. В противном случае – это код протокола, пакет которого инкапсулирован в поле данных кадра.
Доступ к каналу Ethernet базируется на алгоритме CSMA/CD (Carrier Sense Multiple Access with Collision Detection). В Ethernet любая станция, подключенная к сети, может попытаться начать передачу пакета (кадра), если кабельный сегмент, к которому она подключена, свободен. Свободен ли сегмент, интерфейс определяет по отсутствию "несущей" в течение 96 бит-тактов. Так как первый бит пакета достигает остальных станций сети не одновременно, может случиться, что попытку передачи совершат две или более станций, тем более что задержки в повторителях и кабелях могут достигать достаточно больших величин. Такие совпадения попыток называются столкновениями. Столкновение (коллизия) распознается по наличию в канале сигнала, уровень которого соответствует работе двух или более трансиверов одновременно. При обнаружении столкновения станция прерывает передачу. Возобновление попытки может быть произведено после выдержки (кратной 51,2 мксек, но не превосходящей 52 мс), значение которой является псевдослучайной величиной и вычисляется каждой станцией независимо ( T= RAND(0,2min(N,10) ), где N – содержимое счетчика попыток, а число 10 — backoffLimit).
Обычно после столкновения время разбивается на ряд дискретных доменов с длиной, равной удвоенному времени распространения пакета в сегменте (RTT). Для максимально возможного RTT это время равно 512 бит-тактам. После первого столкновения каждая станция ждет 0 или 2 временного домена, прежде чем совершить еще одну попытку. После второго столкновения каждая из станций может выждать 0, 1, 2 или 3 временного домена и т.д. После n-го столкновения случайное число лежит в пределах 0 – (2n – 1). После 10 столкновений максимальное значение случайной выдержки перестает расти и остается на уровне 1023.
Теперь рассмотрим поведение сети при наличии k станций, готовых к передаче. Если некоторая станция осуществляет передачу во время домена доступа с вероятностью p, вероятность того, что станция захватит канал, равна:
достигает максимума при
.
при
. Среднее число доменов на один доступ равно 1/А. Так как каждый домен имеет протяженность RTT, то средняя длительность времени доступа составит RTT/A. Если среднее время передачи кадра составляет P секунд, то при большом числе станций, готовых к передаче, эффективность канала составит P/(P+RTT/A).
Таким образом, чем длиннее кабельный сегмент, тем больше среднее время доступа.
После выдержки при столкновении станция увеличивает на единицу счетчик попыток и начинает очередную передачу. Предельное число попыток по умолчанию равно 16; если число попыток исчерпано, связь прерывается и выдается соответствующее сообщение (о недоступности). При этом передаваемый кадр будет безвозвратно потерян.
Длинный кадр способствует "синхронизации" начала передачи пакетов несколькими станциями. Ведь за время передачи с заметной вероятностью может возникнуть необходимость передачи у двух и более станций. В момент, когда они обнаружат завершение пакета, будут включены таймеры IPG. К счастью, информация о завершении передачи пакета доходит до станций сегмента не одновременно. Но задержки, с которыми это связано, являются также причиной того, что факт начала передачи нового пакета одной из станций не становится известным немедленно. При вовлечении в столкновение нескольких станций они могут уведомить остальные станции об этом, послав сигнал "затора" (JAM — не менее 32 бит). Содержимое этих 32 бит не регламентируется. Такая схема делает менее вероятным повторное столкновение. Источником большого числа столкновений (помимо информационной перегрузки) может служить запредельная суммарная длина логического кабельного сегмента, слишком большое число повторителей, обрыв кабеля или неисправность одного из интерфейсов. Но сами по себе столкновения не являются чем-то негативным – это механизм, регулирующий доступ к сетевой среде.
Под логическим кабельным сегментом (иногда называемым областью столкновений ) подразумевается один или несколько кабельных сегментов, объединенных повторителями. Анализ столкновений является одним из средств эффективной диагностики сети. Локальные столкновения ( столкновения на сегменте, к которому непосредственно подключена рабочая станция) порождают укороченные пакеты-фрагменты (ведь их передача прерывается). Большинство трансиверов и репитеров имеют на своих передних панелях индикаторы столкновений. Блок-схема реализации протокола CSMA/CD показана на рис. 16.4. Особое внимание я бы хотел обратить на влияние сигнала JAM. В процессе пересылки столкнувшихся пакетов и за время передачи сигнала JAM другие узлы могли захотеть что-то передать. Если таких узлов больше одного, то это приведет к синхронизации начала передачи этими узлами и к увеличению вероятности столкновения. Такая синхронизация является причиной "коллапса" сети при большой загрузке.
Что будет, если превышено допустимое число повторителей (или превышена предельно допустимая длина кабелей) в сетевом сегменте? Добавление повторителя (хаба) приведет к увеличению задержки RTT. А это означает, что при минимальной длине пакета (64 байта) возможна ситуация, когда передача такого пакета завершится раньше, чем отправитель обнаружит столкновение. Кадр не будет доставлен, так как принимающая сторона его отвергнет из-за ошибки в CRC, а отправитель сможет узнать об этом лишь на прикладном уровне. Конечно, кадр после этого может быть послан повторно и в конце концов доставлен. Но это потребует ресурса центрального процессора, на порядок увеличится задержка доставки, в то время как при выполнении сетевых регламентаций задача решается на уровне сетевой карты. Я уж не говорю о том, что в случае UDP-дейтограмм при передаче, например, голосовых данных, это приведет к потере информации (там, на прикладном уровне, не выполняется контроль доставки). Следует иметь в виду, что даже если машины соединены кабелем нулевой длины, столкновение все равно возможно, так как машины могут начать передачу кадра одновременно. Это становится невозможным, если прием и передача производится через разные скрученные пары, а повторители не используются. Синхронизирующим фактором может служить передача кадра третьей машиной. Тогда не важно, когда эти две машины пожелали что-либо передать, — начнут они свою передачу по завершении передачи кадра третьей машиной.
Обойти проблему роста вероятности столкновений в сети можно, исключив из сети повторители и строя сеть исключительно на основе переключателей и маршрутизаторов, работающих в полнодуплексном режиме.
Блок-схема алгоритма доступа CSMA/CD показана на рис. 16.4. Для диагностики работы физического уровня могут использоваться специальные сетевые тестеры или анализаторы. Для поиска обрывов или коротких замыканий в кабелях наиболее эффективны доменные рефлектометры.
Программа активируется при необходимости передать кадр. При этом счетчик попыток устанавливается в нуль. Проверка занятости сегмента осуществляется постоянно, и, если в течение 96 бит-тактов сегмент свободен, то, если требуется, запускается передача.
Если в ходе передачи зарегистрировано столкновение, посылается сигнал JAM и счетчик попыток инкрементируется. После этого вычисляется задержка следующей попытки, и выполнение алгоритма возвращается в исходную точку. Если содержимое счетчика попыток превысит 16, сессия прерывается.
Метод CSMA/CD создает неопределенность времени доступа к сети, что делает ее неудобной для решения некоторых задач управления в реальном масштабе времени, где требуется малое время реакции системы на внешнее воздействие.
Исторически первой появилась схема подключения к толстому 50-омному коаксиальному кабелю (сегмент 1 на рис. 16.5; Z = 50 Ом ) через трансивер и многожильный кабель типа AUI (Attachment Unit Interface, максимальная длина 50 м). Кабельный сегмент должен быть согласован с обеих сторон с помощью терминаторов (50 Ом).
Типовые современные варианты сетевых сегментов имеют номера 3 и 4 (на рис. 16.5).