Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Оптимальность интервальной маршрутизации: специальные топологии. 1 глава

End

 

L p: {< pack,w,i>ÎQ p }

begin Qp:= Qp \ {< pack, w,i > } end

 

Алгоритм 3.1 Протокол скользящего окна (для p).

Инвариант протокола. Подсистема связи представляется двумя очередями, Qp для пакетов с адресатом p и Qq, для пакетов с адресатом q. Заметим, что перевычисление sp в R p никогда не дает значение меньше предыдущего, поэтому sp никогда не уменьшается. Чтобы показать, что этот алгоритм удовлетворяет данным ранее требованиям, сначала покажем, что утверждение P - инвариант. (В этом и других утверждениях i - натуральное число.)

P º " i < s p: outp[i] ¹ udef                           (0p)

/\ " i < s q,: outq[i] ¹ udef                                 (0q)

/\ < pack, w, i > Î Qp Þ   w = inq[i] /\ (i < sq + lq)       (lp)

/\ < pack, w, i > Î Qq Þ   w = inp[i] /\ (i < sp + lp)       (lq)

/\ outp[i] ¹ udef Þ outp[i] = inq[i] /\ (ap > i— lq) (2p)

/\ outq[i] ¹ udef Þ outq[i] = inp[i] /\ (aq > i— lp) (2q)

/\ ap £ sq,                                              (3p)

/\ aq £ sp                                                            (3q)

 

Лемма 3.1 P - инвариант Алгоритма 3.1.

Доказательство. В любой начальной конфигурации Qp и Qq - пустые, для всех i, outp[i] и outq[i] равны udef, и ap,ap, sp и sq равны нулю 0; из этого следует, что P=true. Перемещения протокола рассмотрим с точки зрения сохранения значения P. Во-первых, заметим, что значения inp и inq, никогда не меняются.

S p: Чтобы показать, что S p сохраняет (0p), заметим, что S p не увеличивает sp и не делает ни один из outp[i] равным udef.

Чтобы показать, что S p сохраняет (0q), заметим, что S p не увеличивает sq, и не  делает ни один из outq[i] равным udef.

Чтобы показать, что S p сохраняет (1p), заметим, что S p не добавляет пакеты в Qp и не уменьшает sp.

Чтобы показать, что S p сохраняет (lq), заметим S p добавляет < pack, w, i > в Qp с w = inp[i] и i < sp + lp, и не изменяет значение sp.

Чтобы показать, что S p сохраняет (2p) и (2q), заметим, что S p не изменяет значения outp, outq, ap, или aq.

Чтобы показать, что S p сохраняет (3p) и (3q), заметим, что S p не меняет значения ap , ap , sq , или sp.

R p: Чтобы показать, что R p сохраняет (0p), заметим, что R p не делает ни одно outp[i] равным udef, и если он перевычисляет sp, то оно впоследствии также удовлетворяет (0p).

Чтобы показать, что R p сохраняет (0q), заметим, что R p не меняет outq или sq.

Чтобы показать, что R p сохраняет (lp), заметим, что R p не добавляет пакеты в Qp и не уменьшает sq.

Чтобы показать, что R p сохраняет (lq), заметим, что R p не добавляет пакеты в Qq и не уменьшает sp.

Чтобы показать, что R p сохраняет (2p), заметим, что R p изменяет значение outp[i] на w при принятии < pack, w,i>. Т.к. Qp содержала этот пакет до того, как выполнился R p, из (1p) следует, что w = inp[i]. Присваивание ap:= max (ap, i— lq+1) гарантирует, что ap > i— lq сохраняется после выполнения. Чтобы показать, что R p сохраняет (2q), заметим, что R p не меняет значения outq или aq.

Чтобы показать, что R p сохраняет (3p), заметим, что когда R p присваивает
ap:= max(ap, i— lq+1) (при принятии <pack, w,i>), из (lp) следует, что i < sq+lq, следовательно ap £ sq сохраняется после присваивания. R p не меняет sq. Чтобы показать, что R p сохраняет (3q), заметим, что sp может быть увеличен только при выполнении R p.

L p: Чтобы показать, что L p сохраняет (0p), (0q), (2p), (2q), (3p), и (3q), достаточно заметить, что L p не меняет состояния процессов. (lp) и (lq) сохраняются потому, что L p только удаляет пакеты (а не порождает или искажает их).

Процессы S q, R q, и L q сохраняют P, что следует из симметрии.                 ð

3.1.2 Доказательство правильности протокола

Сейчас будет продемонстрировано, что Алгоритм 3.1 гарантирует безопасную и окончательную доставку. Безопасность следует из инварианта, как показано в Теореме 3.2, а живость продемонстрировать труднее.

Теорема 3.2 Алгоритм 3.1 удовлетворяет требованию безопасной доставки.

 

Доказательство. Из (0p) и (2p) следует, что outp[0..sp —1] =inq[0..sp—1], а из (0q) и (2q) следует outp[0..Sq -1] = inp[0..Sq -1].ð

 

Чтобы доказать живость протокола, необходимо сделать справедливых предположений и предположение относительно l p и l q. Без этих предположений протокол не удовлетворяет свойству живости, что может быть показано следующим образом. Неотрицательные константы l p и l q еще не определены; если их выбрать равными нулю, начальная конфигурация протокола окажется тупиковой. Поэтому предполагается, что l p + l q > 0.

Конфигурация протокола может быть обозначена g = (c p, c q, Q p, Q q), где c p и c q - состояния p и q. Пусть g будет конфигурацией, в которой применим S p (для некоторого i). Пусть

d = S p (g) = (c p, c q, Q p, (Q q È { m } )),
и отметим, что действие L q применимо в d. Если L q удаляет m, L q (d) = g. Отношение L q (S p (g)) = g äàåò íà÷àëî íåîãðàíè÷åííûì âû÷èñëåíèÿì, â êîòîðûõ íè s p, ни s q не уменьшаются.

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

Fl. Если посылка пакета возможна в течение бесконечно долгого временно, пакет посылается бесконечно часто.

F2. Если один и тот же пакет посылается бесконечно часто, то он принимается бесконечно часто.

 

Предположение Fl гарантирует, что пакет посылается снова и снова, если не получено подтверждение; F2 исключает вычисления, подобные описанному выше, когда повторная передача никогда не принимается.

Ни один из двух процессов не может быть намного впереди другого: разница между s p и s q остается ограниченной. Поэтому протокол называется сбалансированным, а также из этого следует, что если требование окончательной доставки удовлетворяется для s p, тогда оно также удовлетворяется для s q, и наоборот. Понятно, что протокол не следует использовать в ситуации, когда один процесс имеет намного больше слов для пересылки, чем другой.

Ëåììà 3.3 Из P следует s p— l q £ a p £ s q £ a q + l p £ s p + l p.

Äîêàçàòåëüñòâî. Из (0p) и (2p) следует s pl q £ a p, из (3p) следует   a p £ s p. Из (0q) и (2q)  следует s p £ a p + l p. Из (3q) следует a p + l p £ s p + l p. ð

Òåîðåìà 3.4 Àëãîðèòì 3.1 удовлетворяет требованию окончательной доставки.

Äîêàçàòåëüñòâî. Сначала будет продемонстрировано, что в протоколе невозможны тупики. Из инварианта следует, что один из двух процессов может послать пакет, содержащий слово с номером, меньшим, чем ожидается другим процессом.

Утверждение 3.5 Из P следует, что посылка < pack, in[s q], s q> процессом p или посылка
<
pack, in q[s p], s p) процессом q возможна.

Äîêàçàòåëüñòâî. Т.к. l p + l q > 0, хотя бы одно из неравенств Ëåììы 3.3 строгое, т.е.,

s q < s p + l p \/ s p < s q+l q.

Из P также следует a p £ s q (3p) и a q £ s p (3q), а также следует, что

(a p £ s q<s p+l p) \/ (a q £ s p<s q+l q)

это значит, что S p применим с i = s q или S q применим с i = s p.   ð

Теперь мы можем показать, что в каждом из вычислений s p и s q увеличиваются бесконечно часто. Согласно Утверждению 3.5 протокол не имеет терминальных конфигураций, следовательно каждое вычисление неограниченно. Пусть C - вычисление, в котором s p и s q увеличиваются ограниченное число раз, и пусть sp and sq - максимальные значения, которые эти переменные принимают в C. Согласно утверждению, посылка < pack, in p [ sq ], sq > процессом p или посылка < pack, in q [ sp ], sp > процессом q применима всегда после того, как sp, sq, ap и aq достигли своих окончательных значений. Таким образом, согласно Fl, один из этих пакетов посылается бесконечно часто, и согласно F2, он принимается бесконечно часто. Но, т.к. принятие пакета с порядковым номером s p процессом p приводит к увеличению s p (и наоборот для q), это противоречит допущению, что ни sp, ни sq  не увеличиваются более. Таким образом Òåîðåìà 3.4 доказана.                                                         ð

Мы завершаем этот подраздел кратким обсуждением предположений Fl и F2. F2-ìèíèìàëüíîå требование, которому должен удовлетворять канал, соединяющий p и q, для того, чтобы он мог передавать данные. Очевидно, если некоторое слово in p[i] никогда не проходит через канал, то невозможно достичь окончательной доставки слова. Предположение Fl обычно реализуется в протоколе с помощью условия превышения времени: если a p не увеличилось в течение определенного промежутка времени, in p[a p] передается опять. Как уже было отмечено во введении в эту главу, для этого протокола безопасная доставка может быть доказана без принятия во внимания проблем времени (тайминга).

 

3.1.3 Обсуждение протокола

Ограничение памяти в процессах. Àëãîðèòì 3.1 не годится для реализации в компьютерной сети, т.к. в каждом процессе хранится бесконечное количество информации (массивы in и out) и т.к. он использует неограниченные порядковые номера. Сейчас будет показано, что достаточно хранить только ограниченное число слов в каждый момент времени. Пусть L = l p + l q.

Ëåììà 3.6 Из P следует, что отправление < pack, w,i> процессом p применимо только для i < a p+L.

Äîêàçàòåëüñòâî. Сторож S p требует i < s p+l p, значит согласно Ëåììе 3.3 i < a p+L. ð                                                     

Ëåììà 3.7 Из P следует, что если out p[i] ¹ udef, то i < s p + L.

Äîêàçàòåëüñòâî. Из (2p), a p > i— l q, значит i < a p + l q, и i < s p + L (из Ëåììы 3.3). ð 

 

Ðèñóíîê 3.2 Скользящие окна протокола.

                                  

Последствия этих двух лемм отображены на Ðèñóíêе 3.2. Процессу p необходимо хранить только слова in p[a p..s p + l p — 1] потому, что это слова, которые p может послать. Назовем их как посылаемое окно p (представлено как S на Ðèñóíêе 3.2). Каждый раз, когда a p увеличивается, p отбрасывает слова, которые больше не попадают в посылаемое окно (они представлены как A на Ðèñóíêе 3.2). Каждый раз, когда s p увеличивается, p считывает следующее слово из посылаемого окна от источника, который производит слова. Согласно Ëåììе 3.6, посылаемое окно процесса p содержит не более L слов.

Подобным же образом можно ограничить память для хранения процессом p массива out p. Т.к. out p[i] не меняется для i < s p, можно предположить, что p выводит эти слова окончательно и более не хранит их (они представлены как W на Ðèñóíêе 3.2). Т.к. out p[i] = udef для всех i ³ s p + L, эти значения out p[i] также не нужно хранить. Подмассив out p[s p..s p +L— 1 ] назовем принимаемое окно p. Принимаемое окно представлено на Ðèñóíêе 3.2 как u для неозначенных слов и R для слов, которые были приняты. Только слова, которые попадают в это окно, хранятся процессом. Леммы 3.6 и 3.7 показывают, что не более 2L слов хранятся процессом в любой момент времени.

 

Ограничение чисел последовательности. В заключение будет показано, что числа последовательности могут быть ограничены, если используются fifo-каналы. При использовании fifo предположения можно показать, что номер порядковый номер пакета, который получен процессом p всегда внутри 2L-окрестности sp. Обратите внимание, что fifo предположение используется первый раз.

 

Ëåììà 3.8 Утверждение P', определяемое как

P' º P

/\ < pack, w, i> is behind < pack, w', i'> in Q p Þ i > i' - L (4p)

/\ < pack, w, i> is behind < pack, w', i'> in Q q Þ i > i' - L (4q)

/\ < pack ,w,i> Î Q p Þ i ³ a p - l p                                        (5p)

/\ < pack ,w,i> Î Q q Þ i ³ a q - l q                                        (5q)

 

является инвариантом Àëãîðèòìа 3.1.

Äîêàçàòåëüñòâî. Т.к. уже было показано, что P - инвариант, мы можем ограничиться доказательством того, что (4p), (4q), (5p) и (5q) выполняются изначально и сохраняются при любом перемещении. Заметим, что в начальном состоянии очереди пусты, следовательно (4p), (4q), (5p) и (5q) очевидно выполняются. Сейчас покажем, что перемещения сохраняют истинность этих утверждений.

S p: Чтобы показать, что S p сохраняет (4p) и (5p), заметим, что S p не добавляет пакетов в Q p и не меняет a p.

Чтобы показать, что S p сохраняет (5q), заметим, что если S p добавляет пакет < pack, w, i> в Qq, то i ³ a p, откуда следует, что i ³   a q - l q (из Ëåììы 3.3).

Чтобы показать, что S p сохраняет (4q), заметим, что если < pack, w', i'> в Qq,тогда из (lq)
i' < s p + l p, следовательно, если S p добавляет пакет < pack, w, i> с i ³ a p, то из Леммы 3.3 следует i' < a p+L £ i+L.

R p: Чтобы показать, что R p сохраняет (4p) and (4q), заметим, что Rp не добавляет пакеты в Q p или Q q.

 Чтобы показать, что R p сохраняет (5p), заметим, что когда a p увеличивается (при принятии < pack, w', i'>) до i' - l q + 1, тогда для любого из оставшихся пакетов < pack, w, i> в Q p мы имеем i > i' - L (из 4р). Значит неравенство i ³ a p - l p сохраняется после увеличения a p.

Чтобы показать, что R p сохраняет (5q), заметим, что  R p не меняет Q q  и a q.

L p: Действие L p не добавляет пакетов в Q p или Q q, и не меняет значения a p или a q; значит оно сохраняет (4p), (4q), (5p) и (5q).

Из симметрии протокола следует, что S q, R q и L q тоже сохраняет P'. ð

                                                      

Ëåììà 3.9 Из P' следует, что

<pack, w,i> Î Q p Þ s p -L £ i< s p +L

и

  <pack, w,i> Î Q q Þ s q -L £ i< s q +L.

Äîêàçàòåëüñòâî. Пусть <pack, w,i > Î Q p. Из (lp), i < s q + l q, и из Ëåììы 3.3 i < s p + L. Из (5p), i ³ a pl p, и из Ëåììы 3.3 i ³ s p— L. Утверждение относительно пакетов в Q q доказывается так же. ð

Согласно Ëåììе достаточно посылать пакеты с порядковыми номерами modulo k, где
k ³ 2L. В самом деле, имея s p и i mod k, p может вычислить i.

Выбор параметров. Значения констант l p и l q сильно влияют на эффективность протокола. Их влияние на пропускную способность протокола анализируется в [Sch91, Chapter 2]. Оптимальные значения зависят от числа системно зависимых параметров, таких как

время связи, т.е., время между двумя последовательными операциями процесса,

время задержки на обмен, т.е., среднее время на передачу пакета от p к q и получение ответа от q к p,

вероятность ошибки, вероятность того, что конкретный пакет потерян.

 

Протокол, чередующий бит. Интересный случай протокола скользящего окна получается, когда L = 1, ò.å., l p = 1 и l q = 0 (или наоборот). Переменные a p и a q, инициализируется значениями -l p и -l q, а не 0. Можно показать, что a p + l q = s p и a q + l p = s q всегда выполняется, значит только одно a p и s pa q и s q) нужно хранить в протоколе. Хорошо известный протокол, чередующий бит [Lyn68] получается, если использование таймеров дополнительно ограничивается, чтобы гарантировать, что станции посылают сообщения в ответ.

 

3.2 Протокол, основанный на таймере

Теперь мы изучим роль таймеров в проектировании и проверке протоколов связи, анализируя упрощенную форму Dt-протокола Флэтчера и Уотсона (Fletcher и Watson) для сквозной передачи сообщений. Этот протокол был предложен в [FW78], но (несколько упрощенный) подход этого раздела взят из [Tel91b, Раздел 3.2]. Этот протокол обеспечивает не только механизм для передачи данных (как сбалансированный протокол скользящего окна Раздела 3.1), но также открытие и закрытие соединений. Он устойчив к потерям, дублированию и переупорядочению сообщений.

Информация о состоянии (передачи данных) протокола хранится в структуре данных, называемой запись соединения. (В Подразделе 3.2.1 будет показано, какая информация хранится в записи соединения). Запись соединения может быть создана и удалена для открытия и открытия соединения. Òàêèì îáðàçîì, ãîâîðÿò, ÷òî ñîåäèíåíèå îòêðûòî (на одной из станций), если существует запись соединения.

Чтобы сконцентрироваться на релевантных аспектах протокола (а именно, на механизме управления соединением и роли таймеров в этом механизме), будем рассматривать упрощенную версию протокола. Более практические и эффективные расширения протокола могут быть найдены [FW78] и [Tel91b, Раздел 3.2]. В протоколе, описанном здесь, сделаны следующие упрощения.

One direction. Подразумевается, что данные передаются в одном направлении, скажем от p к q. Иногда будем называть p отправителем, а q - адресатом (приемником). Однако, следует отметить, что протокол использует сообщения подтверждения, которые посылаются в обратном направлении, т.е. от q к p.

Обычно данные нужно передавать в двух направлениях. Чтобы предусмотреть подобную ситуацию, дополнительно выполняется второй протокол, в котором p и q поменяны ролями. Тогда можно ввести комбинированные data/ack (данные/подтверждения) сообщения, содержащие как данные (с соответствующим порядковым номером), так и информацию, содержащуюся в пакете подтверждения протокола, основанного на таймере.

Окно приема из одного слова. Приемник не хранит пакеты данных с номером, более высоким, чем тот, который он ожидает. Только если следующий пакет, который прибудет - ожидаемый, он принимается во внимание и немедленно принимается. Более интеллектуальные версии протокола хранили бы прибывающие пакеты с более высоким порядковым номером и принимали бы их после того, как прибыли и были приняты пакеты с меньшими порядковыми номерами.

Предположения, упрощающие синхронизацию. Протокол рассмотрен с использованием минимального числа таймеров. Например, предполагается, что подтверждение может быть послано процессом-получателем в любое время, пока соединение открыто со стороны приемника. Также возможен случай, когда подтверждение может быть послано только в течение определенного интервала времени, но это сделало бы протокол более сложным.

Также, из описания протокола были опущены, как в Разделе 3.1, таймерные механизмы, используемые для повторной передачи пакетов данных. Включен только механизм, гарантирующий безопасность протокола.

Однословные пакеты. Отправитель может помещать только одиночное слово в каждый пакет данных. Протокол был бы более эффективным, если бы пакеты данных могли содержать блоки последовательных слов.

Протокол основан на таймере, то есть процессы имеют доступ к физическим часовым устройствам. По отношению ко времени и таймерам в системе сделаны следующие предположения.

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

Ограниченное время жизни пакета. Время жизни пакета ограничено константой m (максимальное время жизни пакета). Òàêèì îáðàçîì, если пакет посылается во время s и принимается во время t, то

s < t < s + m.

Если пакет дублируется в канале, каждая копия должна быть принята в течение промежутка времени m после отправления оригинала (или стать потерянной).

Таймеры. Процессы не могут наблюдать абсолютное время своих действий, но они имеют доступ к таймерам. Таймер - действительная переменная процесса, чье значение непрерывно уменьшается со временем (если только ей явно не присваивают значение). Точнее, если Xt - таймер, мы обозначаем его значение в момент времени t как Xt(t) и если Xt между t1 and t2 не присвоено иное значение, то

Xt(t 1)-Xt(t 2)=t2-t1.

Заметим, что эти таймеры работают так: в течение времени d они уменьшаются точно на d. В Подразделе 3.2.3 мы обсудим случай, когда таймеры страдают отклонением.

Входные слова для отправителя моделируются, как в Разделе 3.1, неограниченным массивом inp. Снова этот массив не полностью хранится в p; p в каждый момент времени имеет доступ только к его части. Часть inp, к которой p имеет доступ расширяется (в сторону увеличения индексов), êîãäà p получает следующее слово от процесса, который их генерирует. Эту операцию будем называть как принятие слова отправителем.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...