Э. Таненбаум, Д. Уэзеролл - Компьютерные сети (1114668), страница 89
Текст из файла (страница 89)
Поле Typeопределяет процесс, который должен взять себе кадр. Например, код типа 0x0800означает, что данные содержат пакет IPv4.Создатели IEEE 802.3 в своей безграничной мудрости решили, что в этом поледолжна передаваться длина кадра. Но поскольку для определения длины необходимозаглянуть внутрь данных, то мы наблюдаем нарушение правил использования сетевыхуровней.
Разумеется, это означало, что получатель никак не мог выяснить, что же емуделать с входящим кадром. Эту проблему решили путем добавления в данные ещеодного заголовка для протокола LLC (Logical Link Control, управление логическимканалом). Он занимает 8 байт и передает 2 байта информации о типе протокола.К сожалению, к моменту опубликования стандарта 802.3 использовалось так многооборудования и программного обеспечения для DIX Ethernet, что лишь немногие про-4.3.
Сеть Ethernet 309изводители и пользователи проявили энтузиазм в отношении переопределения полейType и Length. В 1997 году IEEE признал поражение и согласился с обоими способами.К счастью, значения всех полей Type, использовавшиеся до 1997 года, были больше1500 (тогда это значение было установлено в качестве максимального размера поляданных). Теперь правило таково, что любое значение, не превышающее 0x600 (1536),можно интерпретировать как Length, а любое число больше 0x600 — как Type. ТеперьIEEE спокойна, что все используют ее стандарт, причем можно продолжать делать то,что программисты делали и до этого, не утруждая себя мыслями о LLC и не чувствуявины за нарушение стандарта.Наконец, за полем Type следует поле данных, размер которого ограничен 1500 байт.Такое ограничение было выбрано, в общем-то, произвольно в те времена, когда официально был закреплен стандарт Ethernet.
При выборе ссылались на то, что приемопередатчику нужно довольно много оперативной памяти для того, чтобы хранитьвесь кадр. А память в том далеком 1978 году была еще очень дорогой. Соответственно,увеличение верхней границы размера поля данных привело бы к необходимости установки большего объема памяти, а значит, к удорожанию всего приемопередатчика.Между тем, кроме верхней границы размера поля данных очень важна и нижняяграница.
Поле данных, содержащее 0 байт, вызывает определенные проблемы. Делов том, что когда приемопередатчик обнаруживает столкновение, он обрезает текущийкадр, а это означает, что отдельные куски кадров постоянно блуждают по кабелю. Чтобы было легче отличить нормальные кадры от мусора, сети Ethernet требуется кадрразмером не менее 64 байт (от поля адреса получателя до поля контрольной суммывключительно). Если в кадре содержится меньше 46 байт данных, в него вставляетсяспециальное поле Pad (наполнитель), с помощью которого размер кадра доводится донеобходимого минимума.Другой (и даже более важной) целью установки ограничения размера кадра снизуявляется предотвращение ситуации, когда станция успевает передать короткий кадрраньше, чем его первый бит дойдет до самого дальнего конца кабеля, где он можетстолкнуться с другим кадром.
Эта ситуация показана на рис. 4.15. В момент времени 0станция A на одном конце сети посылает кадр. Пусть время прохождения кадра по кабелю равно τ. За мгновение до того, как кадр достигнет конца кабеля (то есть в моментвремени τ – ε), самая дальняя станция B начинает передачу. Когда станция B замечает,что получает большую мощность, нежели передает сама, она понимает, что произошлостолкновение. Тогда она прекращает передачу и выдает 48-битный шумовой сигнал,предупреждающий остальные станции.
Примерно в момент времени 2τ отправительзамечает шумовой сигнал и также прекращает передачу. Затем он выжидает случайноевремя и пытается возобновить передачу.Если размер кадра будет слишком маленьким, отправитель закончит передачупрежде, чем получит шумовой сигнал. В этом случае он не сможет понять, произошлоэто столкновение с его кадром или с каким-то другим, и, следовательно, может предположить, что его кадр был успешно принят. Для предотвращения такой ситуациивсе кадры должны иметь такую длину, чтобы время их передачи было больше 2τ.
Длялокальной сети со скоростью передачи 10 Мбит/с при максимальной длине кабеля в2500 м и наличии четырех повторителей (требование спецификации 802.3) минимальное время передачи одного кадра должно составлять в худшем случае примерно 50 мкс.310 Глава 4. Подуровень управления доступом к средеСледовательно, длина кадра должна быть такой, чтобы время передачи было по крайней мере не меньше этого минимума.
При скорости 10 Мбит/с на передачу одного битатратится 100 нс, значит, минимальный размер кадра должен быть равен 500 бит. Изсоображений большей надежности это число было увеличено до 512 бит или 64 байт.Рис. 4.15. Обнаружение столкновения может занять 2τПоследнее поле кадра стандарта Ethernet — Checksum, которое содержит контрольную сумму. По сути дела, это 32-битный код CRC того же типа, как мы обсуждаливыше. Он определен как раз при помощи того же порождающего многочлена, что используется для PPP, ADSL и других типов каналов. Этот CRC позволяет обнаруживать ошибки: он проверяет, правильно ли приняты биты кадра. Исправления ошибокнет, и если ошибка обнаруживается, кадр удаляется.Экспоненциальный двоичный алгоритм выдержкиВ классическом Ethernet используется алгоритм CSMA/CD с настойчивостью 1,который мы рассматривали выше.
Это означает, что станции прослушивают средупередачи, когда у них появляется кадр на отправку, и отправляют данные, когда средапередачи освобождается. Отправляя кадр, они проверяют, не произошло ли в каналеколлизий. Если столкновение случилось, они прерывают передачу, отправляя короткий сигнал о наличии конфликта, и повторяют отправку данных через случайныйинтервал времени.Рассмотрим, как определяется случайная длина интервала ожидания после столкновения, так как это новый метод.
Модель остается та же, что представлена на рис. 4.5.После возникновения коллизии время делится на дискретные интервалы, длительность которых равна максимальному времени кругового обращения сигнала (то естьего прохождения по кабелю в прямом и обратном направлении), 2τ. Для удовлетворения потребностей Ethernet при максимальном размере сети необходимо, чтобы одининтервал составлял 512 битовых интервалов или 51,2 мкс.После первого столкновения каждая станция ждет или 0 или 1 интервал, преждечем попытаться передавать опять.
Если две станции столкнутся и выберут одно и то жепсевдослучайное число, то они столкнутся снова. После второго столкновения каждаястанция выбирает случайным образом 0, 1, 2 или 3 интервала из набора и ждет опять.4.3. Сеть Ethernet 311При третьем столкновении (вероятность такого события после двойного столкновенияравна 1/4) интервалы будут выбираться в диапазоне от 0 до 23 – 1.В общем случае, после i столкновений случайный номер выбирается в диапазонеот 0 до 2i – 1, и это количество интервалов станция пропускает.
Однако после 10столкновений подряд интервал рандомизации фиксируется на отметке 1023. После16 столкновений подряд контроллер признает свое поражение и возвращает компьютеру ошибку. Дальнейшим восстановлением занимаются более высокие уровни.Этот алгоритм, называемый экспоненциальным двоичным алгоритмом выдержки (binary exponential backoff), был выбран для динамического учета количествастанций, пытающихся осуществить передачу. Если выбрать интервал рандомизацииравным 1023, то вероятность повторного столкновения будет пренебрежимо мала, однако среднее время ожидания составит сотни тактов, в результате чего среднее времязадержки будет слишком велико. С другой стороны, если каждая станция будет выбирать время ожидания всего из двух вариантов, 0 и 1, то в случае столкновения сотнистанций они будут продолжать сталкиваться снова и снова до тех пор, пока 99 из нихне выберут 1, а одна станция — 0.
Такого события можно будет ждать годами. Экспоненциально увеличивая интервал рандомизации по мере возникновения повторныхстолкновений, алгоритм обеспечивает небольшое время задержки при столкновениинебольшого количества станций и одновременно гарантирует, что при столкновениибольшого числа станций конфликт будет разрешен за разумное время.Если коллизии не произошло, отправитель предполагает, что кадр, вероятно, былуспешно доставлен. Таким образом, ни в CSMA/CD, ни в Ethernet подтвержденияне применяются.
Такой вариант подходит для кабельных и оптоволоконных каналовс низким числом ошибок. Любые возникающие ошибки распознаются с помощью кодаCRC и исправляются более высокими уровнями. Как мы увидим далее, в зашумленныхбеспроводных каналах подтверждения используются.4.3.3. Производительность сети EthernetОценим производительность классической сети Ethernet в условиях большой постоянной загрузки, то есть когда k станций постоянно готовы к передаче. Строгий анализэкспоненциального двоичного алгоритма выдержки довольно сложен.