Распознавание коллизий
Для распознавания коллизий каждое устройство прослушивает сеть во время, и после передачи кадра. Если получаемый сигнал отличается от передаваемого, то станция определяет эту ситуацию как коллизию. В сетях Fast Ethernet, станция, обнаружившая коллизию, не только прекращает передачу, но и посылает в сеть специальный 32-битный сигнал, называемый jam-последовательностью. Его назначение - сообщить всем узлам сети о наличии коллизии. В любом случае, после обнаружения коллизии, передача должна быть повторена по достаточно сложному алгоритму отката, показанном на следующем рисунке: Рис. 9.3. Реализация повторения передачи (отката) при коллизии в сетях Ethernet. Ключевым моментом является выбор задержки (T) передачи перед повтором, которая равна случайно выбранному из заданного диапазона количеству интервалов (N) времени (t). Иначе говоря, Т = N*t, где t = 51,2 мкс. Всего предпринимается 16 попыток передать кадр. В случае невозможности это сделать формируется сообщение об ошибке. Очевидно, что для переповтора кадра при коллизии, устройство должно ее обнаруживать. Если передающие узлы будут находиться на большом расстоянии друг от друга, то может случиться, что передача одного из них закончится раньше, чем будет распознана коллизия. Так как для кадров Ethernet на канальном уровне подтверждение доставки не предусмотрено, то пакет будет просто потерян. Повторить передачу может только протокол более высокого (не ниже транспортного) уровня. Но это уже займет значительно больше времени (в сотни раз). Можно видеть, что необходимость корректного обнаружения коллизий накладывает ограничение на минимальный размер пакета и расстояние между узлами сети. Рис. 9.4. Определение коллизий Строго говоря, кадры формируются, и повторяются при коллизии на МАС-уровне. Но состояние среды определяется на физическом уровне, и именно он определяет ход процесса доступа к среде. Однако, разделять описание по разным пунктам не целесообразно. Для передачи в Ethernet выбран минимальный размер кадра на MAC-уровне 512 бит, или 64 байта. При скорости 10 Мбит/c для передачи требуется 51,2 мкс. Самая неблагоприятная ситуация возникнет, когда узел сети "Б" начнет передачу перед самым приходом пакета от узла "А", начавшего передачу ранее. В этом случае сигнал "Б" должен достигнуть узла "А", раньше, чем он закончит передачу. Нужно специально отметить, что в описании процесса распознавания коллизий часто используется термин "столкновения" пакетов, с последующим его распознаванием передатчиком. Это совершенно не верно отражает происходящие физические процессы, но, вероятно, повышает наглядность объяснения. Скорость распространения электромагнитного или оптического сигнала в среде передачи составляет около 2/3 от скорости света в вакууме (3х108 м/c), или 200 м/мкс. Несложно подсчитать, что за 51,2 мкс сигнал успеет пройти почти 12 километров. Соответственно, расстояние между узлами может составлять до 6 километров, если не происходит задержек по другим причинам. В реальности это неизбежно происходит в тракте сетевого адаптера и на повторителях (хабах). Сложно сказать, что учитывали разработчики при выработке стандартов на 10Base5, но в нем максимальное расстояние между узлами составляет 2500 м. Далее, в 10baseT, оно еще уменьшилось до 500 за счет сохранения прежнего количества повторителей - но без какого-либо технического обоснования. В Fast Ethernet (100 Мбит) кадр передается в канал всего за 5 мкс, поэтому ограничения на расстояния намного более жесткие. Рис. 9.5. Пропускная способность Ethernet Легко видеть, что в случае большой загруженности сети вероятность возникновения коллизий резко возрастает, и пропускная способность сети уменьшается из-за многочисленных попыток передачи одних и тех же кадров. Для описания этого явления даже вводят специальный термин - деградация производительности. Ну, а практической рекомендацией будет простой. Не использовать некоммутируемый Ethernet при загрузке более 30-40%.
|