Go-Back-N (GBN) е ARQ протокол с плъзгащ се прозорец, който позволява на подателя да предава множество рамки (до определен размер на прозореца), без да чака индивидуални потвърждения.
java брояч
- Ако даден пакет е изгубен или повреден, подателят препредава този пакет и всички следващи пакети в прозореца.
- Пример: Ако пакети 1–5 са изпратени и пакет 3 е изгубен, тогава пакети 3, 4 и 5 се предават повторно.
Този механизъм гарантира надеждност, но може да загуби честотна лента, ако грешките възникват често.
Трите основни характеристики на GBN са:
1. Размер на прозореца на подателя (W s )
Това е самото N. Ако кажем, че протоколът е GB10, тогава Ws = 10. N трябва винаги да е по-голямо от 1, за да се приложи конвейерна обработка. За N = 1 се свежда до Протокол за спиране и изчакване .
Ефективност на GBN = N/(1+2a)
където
а = Тстр/Тt
Тстр= забавяне на разпространението
Тt= Забавяне на предаването на подателя
Каква ще бъде ефективността, ако забавянето на обработката, забавянето на опашката и забавянето на предаването на потвърждението не е нула?
Ефективност = N * (Полезно време) / (Общо време)
където полезно време = Tt
Общо време = Tt+ 2 * Тстр+ Пr+ Pq + Tt(ack)
където
- Т t =Забавяне на предаване от страната на подателя
- Т стр = забавяне на разпространението
- Pr = Забавяне на обработката
- Pq = Забавяне на опашка
- Т t (ack) = Забавяне на предаването на потвърждение
Ако B е честотната лента на канала, тогава
Ефективна честотна лента или пропускателна способност
= ефективност * честотна лента
= (N/(1+2a)) * B
2. Размер на прозореца на приемника (W Р )
- Винаги 1 в GBN.
- Получателят приема само следващия очакван пакет.
- Неправилните пакети се изхвърлят.
3. Благодарности
Потвържденията (ACK) са сигнали, изпратени от приемника за потвърждение на успешното получаване на пакети с данни. Те осигуряват надеждна комуникация между подател и получател. Ако ACK не бъде получено в рамките на зададено време, подателят приема, че пакетът е загубен и го предава повторно.
Видове ACK
Кумулативен ACK
- Еднократно потвърждение потвърждава получаването на всички пакети до определен момент.
- Предимство: По-малко трафик (по-малко ACK).
- Недостатък: По-малко надеждни, ако едно ACK е загубено, множество пакети изглеждат непотвърдени.
Независим ACK
- Всеки пакет се потвърждава индивидуално.
- Предимство: Висока надеждност.
- Недостатък: По-висок трафик поради повече ACK.
Работа на GB-N протокол
Страница за изпращане
римски числа от 1 до 100
- Поддържа прозорец с размер N (напр. GB4 размер на прозореца = 4).
- Може да изпрати до N непотвърдени пакета.
- Всеки предаван пакет има таймер.
- Ако бъде получено ACK, прозорецът се плъзга напред.
- Ако настъпи таймаут (за липсващ пакет), подателят препредава този пакет и всички следващи в прозореца.
Страна на приемника
- Поддържа размер на прозореца 1 (WR = 1).
- Приема само очаквания пакет в последователност.
- Ако пристигне правилният пакет: изпраща ACK и преминава към следващия очакван пореден номер.
- Ако пристигне неправилен пакет: отхвърля го и изпраща повторно ACK за последния правилно получен пакет.
Връзка между размера на прозореца и поредните номера
The размер на прозореца и поредни номера в плъзгащ се прозорец протокол като Go-Back-N или Selective Repeat са тясно свързани.
- The размер на прозореца определя колко пакета изпращачът може да предаде, без да се нуждае от потвърждение. Това е като ограничение за това колко данни могат да бъдат изпратени, преди подателят да трябва да спре и да изчака потвърждение.
- Поредни номера се използват за етикетиране на пакети, така че получателят да знае техния ред и да може да открие всички липсващи пакети.
The размер на прозореца трябва да бъде по-малък или равен на наличния обхват поредни номера . Ако размерът на прозореца е твърде голям в сравнение с диапазона от поредни номера, приемникът може да се обърка, защото същият пореден номер може да бъде използван повторно, преди първият да бъде потвърден. Това би затруднило да разберете дали даден пакет е нов или дубликат.
Връзката между размера на прозореца и поредния номер се дава по формулата:
INs+ WР<= ASN
където Wsе размерът на прозореца на подателя и WРе размерът на прозореца на приемника, а ASN е наличен пореден номер.
INs+ 1<= ASN because WР= 1 в протокол GB-N
Така че минималните поредни номера, изисквани в GBN = N + 1
Необходими битове в GBN = ⌈ log2(N + 1)⌉
Допълнителният 1 е необходим, за да се избегне проблема с дублиращи се пакети.
Пример за GB-N протокол
Помислете за пример за GB4.
- Размерът на прозореца на изпращача е 4, следователно изискваме минимум 4 поредни номера, за да етикетираме всеки пакет в прозореца.
- Сега да предположим, че получателят е получил всички пакети (0 1 2 и 3, изпратени от подателя) и следователно сега отново чака пакет с номер 0 (Не можем да използваме 4 тук, тъй като имаме само 4 налични последователни номера, тъй като N = 4).
- Сега да предположим, че кумулативният ack за горните 4 пакета е изгубен в мрежата.
- От страната на изпращача ще има изчакване за пакет 0 и следователно всичките 4 пакета ще бъдат предадени отново.
- Проблемът сега е, че приемникът чака нов набор от пакети, които трябваше да започнат от 0, но сега той ще получи дублиращите се копия на предишните приети пакети.
- За да избегнем това, имаме нужда от един допълнителен пореден номер.
- Сега приемникът може лесно да отхвърли всички дублиращи се пакети, които започват от 0, защото сега ще чака пакет номер 4 (Сега добавихме допълнителен пореден номер).
Това е обяснено с помощта на илюстрациите по-долу. Опитвам с поредни номера 4.
Сега опитвам с един допълнителен пореден номер.
Сега е ясно защо имаме нужда от допълнителен 1 бит в GBN протокола.
Предимства на GBN протокола
- Лесен за изпълнение и ефективен за надеждна комуникация.
- По-добра производителност от протоколите за спиране и изчакване за мрежи без грешки или с малко грешки.
Недостатъци на GBN протокола
- Неефективно, ако грешките са чести, тъй като може да се наложи ненужно повторно предаване на множество рамки.
- Ширината на честотната лента може да бъде пропиляна поради излишни повторни предавания.