Э. Таненбаум - Компьютерные сети. (4-е издание) (DJVU) (1130092), страница 69
Текст из файла (страница 69)
3.10. два сценария дпя протокола 4: нормальная ситуация (а); нештатная ситуация [б). Обозначения: (вец, асх, номер пакета). Звездочка означает, что сетевой уровень принял пакет Поле подтверждения содержит номер последнего полученного без ошибок кадра. Если этот номер совпадает с номером кадра, который пытается передать отправитель, последний понимает, что этот кадр успешно принят получателем, и что он может пересылать следующий кадр. В противном случае он должен продолжать попытки переслать тот же кадр.
Теперь давайте изучим протокол 4 и посмотрим, насколысо он устойчив к нестандартным ситуациям, Предположим, что машина А пытается послать кадр О машине В, а машина В пытается послать кадр О машине А. Предположим также, что на машине А установлен слишком короткий период ожидания подтверждения. Соответственно, машина А посылает серию одинаковых кадров со значениями полей зе((=0 и аск=1. Когда первый неповрежденный кадр прибудет на машину В, он будет принят, и значение переменной тгап1е ехрес1ед будет установлено равным 1. Все последующие кадры будут проигнорированы, поскольку машина В будет теперь ожидать кадра с порядковым номером 1, а не О, Более того, поскольку у всех хадров дубликатов значение поля асх=), а машина В продолжает ожидать подтверждения для кадра О, то В и не станет запрашивать новый пакет у своего сетевого уровня.
В ответ на каждый отвергнутый дубликат, присылаемый машиной А, машина В посылает кадр, содержащий поля зец=0 и аск=0. Наконец, один из этих кадров принимается машиной А, в результате чего машина А переходит к передаче Протоколы скользящего окна 257 следующего пакета.
Никакая комбинация потерянных кадров или преждевременно истекших интервалов ожидания не может заставить этот протокол ни выдать сетевому уровню дубликат пакета, ни пропустить пакет, ни зависнуть. Однако, если обе стороны одновременно вышлют друг другу начальный пакет, возникает запутанная ситуация, проиллюстрированная на рис, 3,10. В левой части рисунка показано нормальное функционирование протокола.
Правая часть рисунка демонстрирует аномальную ситуацию. Если машина В ожидает первого кадра от машины А, прежде чем послать свой первый кадр, то последовательность будет такой, как показана в левой части рисунка. При этом принимается каждый кадр. Однако если машины А и В одновременно начнут передачу, их первые кадры пересекутся и уровни передачи данных попадут в ситуацию б. В ситуации а с каждым кадром прибывал новый пакет и дубликатов нет.
В ситуации 6 половина кадров содержит дубликаты несмотря на то, что ошибок в канале связи не было. Подобные ситуации могут возникнуть в результате преждевременного истечения периода ожидания, даже если одна сторона начнет диалог первой. В самом деле, если время ожидания истечет слишком быстро, кадр может быть послан три и более раз. Протокол с возвратом на и До сих пор мы по умолчанию подразумевали, что время, необходимое на передачу кадра от отправителя к получателю, и время, необходимое на передачу подтверждения от получателя к отправителю, пренебрежимо малы. Иногда это предположение является совершенно неверным. В таких ситуациях болыпое время прохождения кадров по сети может значительно снижать эффективность использования пропускной способности канала.
В качестве примера рассмотрим спутниковый канал связи с пропускной способностью 50 Кбит/с и временем, требуемым для прохождения сигнала в оба конца, равным 500 мс. Попытаемся использовать протокол 4 для пересылки кадров размером в 1000 бит через спутник. В момент времени г = 0 отправитель начинает посылать первый кадр. В момент времени 2 = 20 мс кадр полностью послан. В момент времени г = 270 мс получатель принял кадр полностью и отправил обратно подтверждение. В итоге в лучшем случае только через 520 мс после начала передачи кадра подтверждение будет получено отправителем. В данном случае еще предполагается, что приемник не тратит времени на обработку принятого кадра и подтверждение такое короткое, что временем его передачи и приема можно пренебречь.
Это означает, что передающая машина была заблокирована в течение 500/520, или 96 К времени. Другими словами, использовалось только 4 % доступной пропускной способности. Очевидно, что сочетание большого времени прохождения сигнала, высокой пропускной способности и коротких кадров совершенно неприемлемо с точки зрения эффективности. Описанная проблема является следствием правила, заставлявшего отправителя дожидаться подтверждения, прежде чем посылать следующий кадр. Смягчив это требование, можно значительно повысить эффективность. Решение проблемы заключается в разрешении отправителю послать не один кадр, а несколько, например ш, прежде чем остановиться и перейти в режим ожидания подтвержде- 258 Глава 3.
Уровень передачи данных ний. Можно подобрать число ш так, чтобы отправитель мог безостановочно посылать кадры. В приведенном ранее примере в должно быть равно, по меньшей мере, 26. Отправитель начинает, как и ранее, с передачи кадра О. К тому моменту, когда он закончит отправку 26 кадров (в момент времени 1 = 520 мс), как раз прибудет подтверждение кадра О. Затем подтверждения станут прибывать каждые 20 мс, Таким образом, отправитель будет получать разрешения иа передачу следующего кадра как раз вовремя.
В любой момент времени у отправителя будет 25 или 26 неподтвержденных кадров и, следовательно, достаточно будет окна размером 26, Такая техника называется конвейерной обработкой. Если пропускная способность канала равна Ь бит/с, размер кадра равен 1 бит, то время передачи одного кадра составит 1/Ь с. Пусть время прохождения сигнала по каналу в оба конца равно Я с. После отправки последнего бита информационного кадра в течение Я/2 с происходит его пересылка получателю и в течение еще по крайней мере В/2 с — прием подтверждения отправителем.
Поэтому общая задержка составляет А с. В протоколе с ожиданием линия занята в течение 1/Ь с и свободна в течение Я с, что дает коэффициент эффективности использования линии равный 1/(1 е ЬА). При 1 < Ы эффективность использования линии будет менее 50%. Конвейерный режим может использоваться для загрузки избежания простаивания линии, если время прохождения сигнала значительно по сравнению со временем самой передачи. Если же задержка распространения сигнала мала, дополнительное усложнение протокола не является оправданным. При конвейерном режиме передачи кадров по ненадежному каналу возникает ряд серьезных проблем.
Во-первых, что произойдет, если повредится или потеряется кадр в середине длинного потока? Большое количество последующих кадров прибудет к получателю прежде, чем отправитель обнаружит, что произошла ошибка. Когда поврежденный кадр приходит получателю, он, конечно, должен быть отвергнут, однако что должен делать получатель со всеми правильными последующими кадрами? Как уже говорилось, получак>ший уровень передачи данных обязан передавать пакеты сетевому уровню, соблюдая строгий порядок. На рис. 3.11 изображен эффект, оказываемый конвейерной обработкой на исправление ошибок.
Сейчас мы рассмотрим этот вопрос более подробно. Есть два способа решения проблемы возникновения ошибок при конвейеризации кадров. Первый способ называется возвратом иа и и заключается просто в игнорировании всех кадров, следующих за ошибочным. Для таких кадров подтверждения не посылаются. Эта стратегия соответствует приемному окну размера 1. Другими словами, уровень передачи данных отказывается принимать какой-либо кадр, кроме кадра со следующим номером, который он должен передать сетевому уровню. Если окно отправителя заполнится раньше, чем истечет время ожидания, конвейер начнет простаивать. Наконец, лимит времени у отпРавителя истечет, и он начнет передавать повторно сразу все кадры, не получившие подтверждения, начиная с поврежденного или потерянного кадра.
Такой подход при высоком уровне ошибок может привести к потере большой доли пропускной способности канала. Протоколы скользящего окна 259 На рис. 3.11, а изображен возврат на и для случая большого окна приемника, Кадры () и 1 корректно принимаются, и высылается подтверждение этого факта Однако кадр 2 потерялся или был испорчен. Ничего не подозревающий отправитель продолжает посылать кадры, пока не выйдет время ожидания кадра 2. Только после этого он возвращается к месту сбоя и заново передает все кадры, начиная с кадра 2 (отправляя 2, 3, 4 и т. д.) Интервал ожидания †~ 2 Ошибка Кадры, отвергнутые уровнем передачи данных Время — ~ Интервал ожидания — Ф~ Ошибка Буферизированы уровнем передачи данных Пакеты 2-8 переданы сетевому уровню рис. 8.11.
Конвейеризация и коррекция ошибок: эффект при размере окна ! (в), эффект при размере окна > 1 (б) Другая общая стратегия обработки ошибок при конвейерной передаче кадРов, называемая выборочным повтором, заключается в том, что получатель хранит в буфере все правильные кадры, принятые им после неверного или потерянного кадра. При этом неверный кадр отбрасывается. Когда отправитель наконец замечает, что что-то случилось (то есть заканчивается время ожидания подтверждения), он просто отправляет еще раз только потерянный или испорченный кадр,не повторяя отправку всех последующих, как это продемонстрировано на Рис. 3.11, б.
Если вторая попытка будет успешной, получающий уровень передачи данных сможет быстро передать накопившиеся пакеты сетевому уровню, после чего выслать подтверждение получения калра с наибольшим номером. ВыбоРочный повтор часто комбинируется с отправкой получателем «отрицательного 260 Глава 3. уровень передачи данных подтверждения» ()чАК вЂ” )ч)эдас(че Ас(спотч1ебйетепь) при обнаружении ошибки, например, при неверной контрольной сумме или при измененном порядке следования кадров. )ч)АК стимулируют повторную отправку еще до того, как закончится время ожидания подтверждения от отправителя.