Рубрики

Протокол раздвижных окон | Комплект 1 (сторона отправителя)

Условие: Остановись и Жди ARQ

Остановка и ожидание ARQ предлагает управление ошибками и потоком, но может вызвать большие проблемы с производительностью, поскольку отправитель всегда ожидает подтверждения, даже если у него есть готовый к отправке следующий пакет. Рассмотрим ситуацию, когда у вас соединение с высокой пропускной способностью и задержка распространения также высока (вы подключены к какому-либо серверу в какой-то другой стране через высокоскоростное соединение), вы не можете использовать эту полную скорость из-за ограничений остановки и ожидания.

Протокол скользящего окна обрабатывает эту проблему эффективности, отправляя более одного пакета за раз с большими порядковыми номерами. Идея такая же, как конвейерная обработка в архитектурах.

Несколько терминов:

Задержка передачи (Tt) — время передачи пакета от хоста к исходящей линии связи. Если B — пропускная способность канала, а D — размер данных для передачи.

    Tt = D/B  

Задержка распространения (Tp) — это время, затраченное первым битом, передаваемым хостом на исходящую ссылку, для достижения пункта назначения. Это зависит от расстояния d и скорости распространения волны s (зависит от характеристик среды).

   Tp = d/s  

Эффективность — определяется как отношение общего полезного времени к общему времени цикла пакета. Для протокола остановки и ожидания,

Total cycle time = Tt(data) + Tp(data) + 
                    Tt(acknowledgement) + Tp(acknowledgement)
              =  Tt(data) + Tp(data) + Tp(acknowledgement)
         =   Tt + 2*Tp

Поскольку подтверждения очень малы по размеру, их задержкой передачи можно пренебречь.

Efficiency = Useful Time / Total Cycle Time 
           = Tt/(Tt + 2*Tp) (For Stop and Wait)
           = 1/(1+2a)  [ Using a = Tp/Tt ]

Эффективная полоса пропускания (EB) или пропускная способность — количество отправляемых битов в секунду.

EB = Data Size(L) / Total Cycle time(Tt + 2*Tp)
Multiplying and dividing by Bandwidth (B),
       =  (1/(1+2a)) * B   [ Using a = Tp/Tt ]
       =  Efficiency * Bandwidth

Емкость канала связи. Если канал является дуплексным, то биты могут передаваться как в направлении, так и без каких-либо коллизий. Максимальное количество битов, которые канал / канал может хранить, является его емкостью.

 Capacity = Bandwidth(B) * Propagation(Tp)
        
 For Full Duplex channels, 
 Capacity = 2*Bandwidth(B) * Propagation(Tp)

Концепция конвейеризации

В протоколе Stop and Wait на канал передается только 1 пакет, а затем отправитель ожидает подтверждения от получателя. Проблема в этой настройке состоит в том, что эффективность очень мала, так как мы не заполняем канал большим количеством пакетов после того, как 1-й пакет был помещен в канал. В течение общего времени цикла Tt + 2 * Tp, мы теперь вычислим максимальное количество пакетов, которые отправитель может передать по каналу до получения подтверждения.

 In Tt units ----> 1 packet is Transmitted.
 In 1 units  ----> 1/Tt packet can be Transmitted.
 In  Tt + 2*Tp units ----->  (Tt + 2*Tp)/Tt 
                             packets can be Transmitted
                ------>  1 + 2a  [Using a = Tp/Tt]

Максимальное количество пакетов, которое может быть передано за общее время цикла = 1 + 2 * a

Позвольте мне объяснить с помощью примера.

Рассмотрим Tt = 1 мс, Tp = 1,5 мс.

На рисунке, приведенном ниже, после того, как отправитель передал пакет 0, он немедленно передаст пакеты 1, 2, 3. Подтверждение для 0 будет получено через 2 * 1,5 = 3 мс. В режиме «Стоп и ожидание» за время 1 + 2 * 1,5 = 4 мс мы передавали только один пакет. Здесь мы сохраняем окно пакетов, которые мы передали, но еще не подтвердили .

После того, как мы получили Ack для пакета 0, оконным слайдам и следующему пакету может быть назначен порядковый номер 0. Мы повторно используем порядковые номера, которые мы подтвердили, чтобы размер заголовка можно было сохранить минимальным, как показано на диаграмме, приведенной ниже.

Минимальное количество бит для окна отправителя (очень важно для GATE)

Как мы видели выше,

 Maximum window size = 1 + 2*a    where a = Tp/Tt

 Minimum sequence numbers required = 1 + 2*a. 

Всем пакетам в текущем окне будет присвоен порядковый номер. Количество битов, необходимых для представления окна отправителя = ceil (log2 (1 + 2 * a)).

Но иногда количество битов в заголовках протокола предопределено. Размер поля порядкового номера в заголовке также определяет максимальное количество пакетов, которое мы можем отправить за общее время цикла. Если N — это размер поля порядкового номера в заголовке в битах, то мы можем иметь 2 N порядковых номера.

Размер окна ws = min (1 + 2 * a, 2 N )

Если вы хотите вычислить минимальные биты, необходимые для представления порядковых номеров / окна отправителя, это будет ceil (log2 (ws)) .

В этой статье мы обсудили только окно отправки. Для получения окна есть 2 протокола, а именно Go Back N и Selective Repeat, которые используются для практической реализации конвейерной обработки. Мы будем обсуждать окно получения в наборе 2.

Эта статья предоставлена Пранджул Ахаджа. Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Протокол раздвижных окон | Комплект 1 (сторона отправителя)

0.00 (0%) 0 votes