MAC-подуровень и обнаружение коллизий.
Среда Ethernet представляет собой широковещательную технологию совместного доступа. Используемый в среде Ethernet метод доступа CSMA/CD выполняет три функции:
· передачу и получение пакетов данных;
· декодирование пакетов данных и проверку действительности содержащихся в них адресов перед передачей их более высоким уровням модели OSI;
· обнаружение ошибок в пакетах данных или в работе сети.
При использовании метода доступа CSMA/CD сетевые устройства, имеющие данные для передачи, находятся в режиме «прослушивание сети перед передачей» (listen-before-transmit mode), иначе называемом «контролем несущей» (Carrier Sense ‑ CS). В технологии Ethernet совместного доступа такой подход означает, что когда устройству требуется передать данные, оно должно предварительно удостовериться в том, что сетевая среда свободна для передачи. После того как устройство проверило, что в сетевой среде нет сигналов, оно начинает передавать данные. Передавая данные в виде сигналов, устройство продолжает прослушивание среды для того, чтобы быть уверенным в том, что другие устройства не ведут передачу одновременно с ним. Если две станции ведут передачу одновременно, возникает коллизия, как показано на рис. 8. После окончания передачи устройство возвращается в режим прослушивания сети. В традиционной технологии Ethernet при совместном использовании среды передачи в каждый конкретный момент передавать данные может только одно устройство. В коммутируемой среде Ethernet это утверждение становится неверным.
Сетевые устройства способны обнаруживать возникновение коллизии, поскольку она сопровождается увеличением амплитуды сигнала в сетевой среде. Такая функция называется обнаружением коллизий (Collision Detect ‑ CD). Когда возникает коллизия, каждое устройство, которое в данный момент осуществляет передачу, продолжает ее в течение короткого промежутка времени для того, чтобы коллизию могли увидеть все устройства в сети. Когда все устройства увидели, что в сети произошла коллизия, передающие устройства вызывают алгоритм, известный как алгоритм возврата (backoff). После того как все передающие устройства осуществили возврат и воздержались от передачи в течение некоторого случайно выбранного (и, следовательно, разного у всех устройств) промежутка времени, любое устройство может попытаться вновь получить доступ к среде передачи. При возобновлении передачи устройства, которые были вовлечены в произошедшую коллизию, не имеют приоритета в передаче данных. Процесс передачи в сети, использующей метод доступа CSMA/CD, обобщенно показан на рис. 9.
Рис. 8. Метод доступа CSMA/CD
Ethernet представляет собой широковещательную технологию передачи данных. Это означает, что все устройства в сети могут «видеть» все фреймы, проходящие мимо них в сетевой среде. Однако не все устройства обрабатывают эти данные. Только устройство, MAC-адрес которого совпадает с MAC-адресом получателя, находящимся во фрейме, копирует этот фрейм в свой буфер. В технологии Ethernet адреса протоколов третьего уровня, таких, как IP или IPX, не просматриваются и не используются. Если MAC-адреса совпадают, то фрейм копируется в буфер и передается на третий уровень для проверки соответствия IP- или IPX-адреса получателя адресу устройства.
После того как устройство проверило MAC- и IP-адрес, содержащиеся в данных, пакет проверяется на наличие в нем ошибок. Если они обнаруживаются, пакет отбрасывается. Устройство-получатель не информирует об этом отправителя, независимо от того, прибыл ли пакет благополучно или нет. По этой причине Ethernet называется сетевой структурой без установки соединения (connectionless) и негарантированной доставкой (best-effort delivery).
Рис. 9. Процесс получения доступа к сетевой среде по методу CSMA/CD
Обработка ошибок.
Чаще всего (и обычно без серьезных последствий) состояние ошибки в сети Ethernet возникает в результате коллизии. Коллизии являются механизмом разрешения конфликтов за право доступа к сети. Несколько коллизий обеспечивают для сетевых узлов достаточно простой, удобный и не вызывающий большой служебной нагрузки способ разрешения споров за сетевые ресурсы. В ситуации, когда сеть не может функционировать соответствующим образом из-за различных проблем, коллизии могут стать существенной помехой ее эффективной работе. Коллизии возможны только в полудуплексных сегментах.
При возникновении коллизий тратится рабочее время сети в двух аспектах:
· Прежде всего теряется часть полосы пропускания, равная сумме первоначально передаваемых данных, и сигнал коллизии (т.н. jam-сигнал, или сигнал затора). Такое явление называется задержкой потребления; оно затрагивает все сетевые узлы. Задержка потребления значительно уменьшает пропускную способность сети. Вслед за каждой успешной или неудачной попыткой передачи для всех станций сети наступает период простоя (период возврата), называемый межфреймовым зазором (или межфреймовым интервалом), который также влияет на пропускную способность сети.
· Второй аспект задержки связан с алгоритмом возврата после коллизии. Задержки возврата обычно незначительны.
Большое число коллизий происходит очень рано во фрейме, часто еще до флага SFD. О коллизиях, имевших место до флага начала фрейма (SFD), обычно не сообщается более высоким уровням, как если бы коллизии вообще не происходили. Как только обнаруживается коллизия, отправляющая станция (станции) передает 32-битовый jam-сигнал, который навязывает состояние коллизии всем станциям.
На рис. 10 две станции прослушивают сеть, для того чтобы убедиться в том, что кабель свободен, и начать передачу. Стандарт 802.3 устанавливает ограничения на время задержки сигнала каждым компонентом системы в самом худшем случае. Максимальная задержка при передаче сигнала в прямом и обратном направлениях в коллизионном домене при скорости передачи данных 10 Мбит/с составляет 512 битовых интервалов; это значение определяет минимальный размер фрейма. Первой начинает передачу станция 1 и успевает передать большую часть данных до того, как будет обнаружена коллизия. Станция 2 до обнаружения коллизии успевает отправить лишь несколько битов.
Рассмотрим пример, показанный на рис. 10, более подробно. Станция 1 может передать значительную часть фрейма еще до того, как сигнал достигнет последнего сегмента кабеля. Станция 2 не успевает получить первый бит передачи до начала своей собственной передачи. Станция 2 может послать только несколько битов до того, как адаптер NIC обнаружит коллизию. Сразу после ее обнаружения станция 2 прекращает текущую передачу и подставляет на место передаваемых данных 32-битовый jam-сигнал. После этого станция 2 полностью прекращает передачу. Во время коллизии и передачи jam-сигналов, которые испытывает станция 2, фрагменты фреймов, поврежденных во время коллизии, движутся в обратном направлении по коллизионному домену в направлении станции 1. Станция 2 заканчивает передачу 32-битового jam-сигнала и после этого переходит в режим молчания до того момента, когда фрагменты коллизии достигнут станции 1.
Рис. 10. Типичная обработка ошибок в коллизионном домене, который работает со скоростью 10 Мбит/с
При этом станция 1, по-прежнему не зная о коллизии, продолжает передачу. Когда, наконец, фрагменты коллизии достигают станции 1, она также прерывает текущую передачу и подставляет 32-битовый jam-сигнал вместо оставшейся части передаваемого фрейма. После отправки 32-битового jam-сигнала станция 1 также прекращает все передачи.
Jam-сигнал может состоять из любых двоичных данных, поскольку он не является соответствующей контрольной суммой для уже переданной части фрейма. Наиболее часто в качестве jam-сигнала используется простое чередование единиц и нулей: 1, 0, 1, 0..., такое же, как и в преамбуле. При просмотре с помощью анализатора протоколов такой сигнал представляется как шестнадцатеричное число 5 или A-последовательность. Поврежденные частично переданные фрагменты (сообщения) часто называются фрагментами коллизии или, иногда, сленговым термином «карлики» (карликовыми фреймами). В отличие от запоздалых коллизий, обычные коллизии имеют длину менее 64 октетов и из-за этого не могут пройти тест минимальной длины и тест контрольной суммы FCS.
Типы коллизий.
Коллизии обычно происходят в том случае, когда две или более станций, находящихся в одном коллизионном домене, одновременно ведут передачу. Коллизии регистрируются счетчиками событий большинством диагностических инструментов, однако они могут быть зарегистрированы и отдельно, как одиночные или множественные коллизии, когда коммутатор или другая станция опрашиваются протоколом SNMP. Понятие «одиночная коллизия» относится к тому случаю, когда при первой попытке передачи фрейма произошла коллизия, однако следующая попытка была успешной. Множественная коллизия означает, что успешной отправке фрейма предшествовали несколько неудачных попыток. Второй случай отличается от случая отложенной передачи, поскольку при откладывании передачи коллизия не происходит. Отложенная передача означает, что при попытке станции или коммутатора передать фрейм среда была занята, и потребовалось ожидать своей очереди на передачу. При неоднократных безуспешных попытках передать фрейм возможна ситуация, когда он вообще не будет передан; при этом сообщается, что отправка отменена из-за избыточного числа коллизий.
Результаты коллизий ‑ фрагменты фреймов и поврежденные фреймы, длина которых меньше 64 октетов и которые имеют недействительную контрольную сумму, часто называются коллизионными фрагментами. Некоторые анализаторы протоколов и сетевые мониторы называют эти фрагменты «карликами», однако такой термин не совсем точен.
Основными типами ошибок фреймов в сетях Ethernet, которые могут быть зарегистрированы в сеансе работы анализатора протоколов, являются:
· локальная коллизия;
· удаленная коллизия;
· запоздалая коллизия.
Три типа коллизий показаны на рис. 11 В последующих разделах кратко рассмотрены эти типы ошибок фреймов.
Рис. 11. Типы коллизий: локальная, удаленная и запоздалая
Ошибки в сетях Ethernet.
Зачем изучать ошибки в сетях Ethernet? Ответ прост: поскольку Ethernet является доминирующей технологией локальных сетей (LAN), глубокое понимание характера и причин типичных ошибок имеет огромную ценность как для понимания работы Ethernet-сетей, так и для устранения в них ошибок и неисправностей.
В то время как локальные и удаленные коллизии рассматриваются как нормальный режим работы сети Ethernet, запоздалые коллизии квалифицируются как ошибки. Наличие ошибок в сети Ethernet всегда предполагает дальнейшее исследование характера работы сети. Уровень возникшей проблемы определяет, насколько срочным является вмешательство администратора для устранения возникших ошибок. Некоторое количество ошибок, произошедших за несколько часов работы сети, указывает на проблему невысокого приоритета. Если же за несколько минут произошли тысячи ошибок, требуется срочное вмешательство.
В качестве ошибок в работе сети Ethernet рассматриваются следующие ситуации:
· происходит одновременная передача от нескольких станций до того, как истекло время канального интервала;
· происходит одновременная передача от нескольких станций после того, как истекло время канального интервала;
· чрезмерно длительная передача или передача неразрешенной длительности (ошибка типа jabber, или сбойный пакет; длинный фрейм или ошибочный размер фрейма);
· слишком короткая передача (короткий фрейм, фрагмент коллизии или фрейм-карлик);
· передача фрейма с повреждением (ошибка в контрольной сумме FCS);
· недостаточное или избыточное количество переданных фреймов (ошибка выравнивания — alignment error);
· несоответствие действительного и сообщенного количество октетов во фрейме (ошибка в размере фрейма);
· необычно длинная преамбула jam-событие (несуществующий фрейм – ghost или ошибочный бессмысленный пакет).
Каждая из указанных выше ситуаций должна быть рассмотрена отдельно. Фреймы, которые содержат ошибки, часто, но не всегда, отбрасываются. Нормальные коллизии включены в этот список только для полноты, но в действительности как ошибки не рассматриваются. В следующих разделах кратко описаны некоторые ошибки в сетях Ethernet.
Вопросы для самопроверки:
1. Охарактеризуйте физический и канальный уровни модели ISO/OSI.
2. Проанализируйте работу сетевых устройств в ЛВС типа CSMA/CD и поясните используемую технологию доступа к несущей.
3. Проанализируйте принцип передачи информации в ЛВС типа CSMA/CD.
4. Поясните алгоритм обнаружения и устранения коллизий.
5. Назовите область применения протокола IEEE 802.2.
6. В каком процессе в качестве подуровня участвует LLC?
7. Что представляют первые шесть шестнадцатеричных цифр MAC-адреса?
8. Где записан MAC-адрес?
9. Когда происходят коллизии в LAN-сетях Ethernet и IEEE 802.3?
10. Что является важной функцией второго (канального) уровня?
Литература по теме:
1. Программа сетевой академии Cisco CCNA 1 и 2. Вспомогательное руководство, 3-изд., с испр.: Пер. с англ. – М.: Издательский дом «Вильямс», 2008 – 1168 с.: ил – Парал. тит. Англ. ISBN 978-5-8459-0842-1 (рус.)