1294
правки
Irina (обсуждение | вклад) |
KVN (обсуждение | вклад) |
||
(не показано 6 промежуточных версий 1 участника) | |||
Строка 67: | Строка 67: | ||
В настоящее время авторы работ часто предпочитают определения задач атомарной широковещательной рассылки, не содержащие явных ссылок на физическое время. Множество вариантов определений без времени рассмотрено в работах Хадзилакоса и Туэга [10], а также Дефаго и др. [8]. Одно из таких альтернативных определений представлено ниже, | В настоящее время авторы работ часто предпочитают определения задач атомарной широковещательной рассылки, не содержащие явных ссылок на физическое время. Множество вариантов определений без времени рассмотрено в работах Хадзилакоса и Туэга [10], а также Дефаго и др. [8]. Одно из таких альтернативных определений представлено ниже, его терминология адаптирована к контексту данной статьи. | ||
Строка 76: | Строка 76: | ||
'''Требуется''': обеспечить последовательную доставку сообщений со следующими свойствами: | '''Требуется''': обеспечить последовательную доставку сообщений со следующими свойствами: | ||
1. ''' | 1. '''Достоверность''': если исправный процессор рассылает сообщение m, то он в конечном итоге доставляет m. | ||
2. '''Равномерная согласованность''': если процессор доставляет сообщение m, то все исправные процессоры в конечном итоге доставляют m. | 2. '''Равномерная согласованность''': если процессор доставляет сообщение m, то все исправные процессоры в конечном итоге доставляют m. | ||
Строка 82: | Строка 82: | ||
3. '''Равномерная целостность''': для любого сообщения m каждый процессор доставляет его не более одного раза, и только если m было ранее передано процессором-отправителем. | 3. '''Равномерная целостность''': для любого сообщения m каждый процессор доставляет его не более одного раза, и только если m было ранее передано процессором-отправителем. | ||
4. '''Равномерный полный порядок без пробелов''': если некоторый процессор доставляет сообщение | 4. '''Равномерный полный порядок без пробелов''': если некоторый процессор доставляет сообщение m' после сообщения m, то он доставляет m' только после того, как он доставил m. | ||
== Основные результаты == | == Основные результаты == | ||
Строка 89: | Строка 89: | ||
Все три протокола основаны на классическом алгоритме затопления, или рассеяния информации [14]. Каждое сообщение содержит временную метку T, имя инициирующего процессора s и обновление <math>\sigma</math>. Сообщение однозначно идентифицируется по паре (s, T). Основной протокол прост. Каждый процессор | Все три протокола основаны на классическом алгоритме затопления, или рассеяния информации [14]. Каждое сообщение содержит временную метку T, имя инициирующего процессора s и обновление <math>\sigma</math>. Сообщение однозначно идентифицируется по паре (s, T). Основной протокол прост. Каждый процессор хранит в журнале каждое полученное сообщение до тех пор, пока оно не будет доставлено. Когда он получает сообщение, которого никогда не встречал раньше, он пересылает его всем соседним процессорам. | ||
'''Атомарная широковещательная рассылка при сбоях типа «пропуск»''' | '''Атомарная широковещательная рассылка при сбоях типа «пропуск»''' | ||
Первый протокол атомарной широковещательной рассылки, поддерживающий сбои типа «пропуск», рассматривает время завершения <math>\ | Первый протокол атомарной широковещательной рассылки, поддерживающий сбои типа «пропуск», рассматривает время завершения <math>\Delta_o</math> следующим образом: | ||
(1) <math>\ | (1) <math>\Delta_o = \pi \delta + d \delta + \varepsilon</math>. | ||
Крайний срок доставки <math>T + \ | Крайний срок доставки <math>T + \Delta_o</math>o – это время, к которому процессор может быть уверен, что он получил копии всех сообщений с временной меткой T (или более ранними), которые могли быть получены некоторым исправным процессом. | ||
Протокол работает следующим образом. Когда процессор инициирует атомарную широковещательную рассылку, он распространяет это сообщение, аналогично описанному выше алгоритму рассеяния. Основным исключением является то, что каждое сообщение, полученное после того, как показания локальных часов превысили крайний срок доставки этого сообщения, отбрасывается. Затем в локальное время <math>T + \ | Протокол работает следующим образом. Когда процессор инициирует атомарную широковещательную рассылку, он распространяет это сообщение, аналогично описанному выше алгоритму рассеяния. Основным исключением является то, что каждое сообщение, полученное после того, как показания локальных часов превысили крайний срок доставки этого сообщения, отбрасывается. Затем в локальное время <math>T + \Delta_o</math> процессор доставляет все сообщения, помеченные временной меткой T, в порядке возрастания имени отправляющего процессора. Наконец, он удаляет все копии сообщений из своих журналов. | ||
'''Атомарная широковещательная рассылка при сбоях типа «ошибка синхронизации»''' | '''Атомарная широковещательная рассылка при сбоях типа «ошибка синхронизации»''' | ||
Второй протокол расширяет первый, добавляя к сообщениям счетчик переходов (т. е. счетчик, увеличивающийся на 1 при каждой передаче сообщения). С помощью этой информации каждый передающий процессор может определить, | Второй протокол расширяет первый, добавляя к сообщениям счетчик переходов (т. е. счетчик, увеличивающийся на 1 при каждой передаче сообщения). С помощью этой информации каждый передающий процессор может определить, является ли сообщение своевременным: если сообщение с временной меткой T и счетчиком переходов h получено в момент времени U, то должно выполняться следующее условие: | ||
(2) <math> T - h \varepsilon < U < T + h(\delta + \varepsilon)</math>. | (2) <math> T - h \varepsilon < U < T + h(\delta + \varepsilon)</math>. | ||
Строка 123: | Строка 123: | ||
Пусть имеется некоторый текст. Предполагается, что каждый процессор может сгенерировать для него подпись, которую не смогут подделать другие процессоры. Кроме того, каждый процессор знает имя каждого другого процессора в сети и имеет возможность проверить подлинность его подписи. | Пусть имеется некоторый текст. Предполагается, что каждый процессор может сгенерировать для него подпись, которую не смогут подделать другие процессоры. Кроме того, каждый процессор знает имя каждого другого процессора в сети и имеет возможность проверить подлинность его подписи. | ||
Исходя из вышеуказанных предположений, третий протокол трансляции расширяет второй, добавляя к сообщениям подписи. Чтобы процессор (или канал связи) при использовании «византийского» протокола не мог подделать счетчик переходов, сообщение подписывается каждым процессором, который его передает. Например, сообщение, подписанное | |||
Исходя из вышеуказанных предположений, третий протокол трансляции расширяет второй, добавляя к сообщениям подписи. Чтобы процессор (или канал связи) при использовании «византийского» протокола не мог подделать счетчик переходов, сообщение подписывается каждым процессором, который его передает. Например, сообщение, подписанное k процессорами <math>p_1, ..., p_k</math>, выглядит следующим образом: | |||
<math>(relayed,... (relayed, (first, T, \sigma, p_1, s_1), p_2, s_2), ..., p_k, s_k)</math>. | <math>(relayed,... (relayed, (first, T, \sigma, p_1, s_1), p_2, s_2), ..., p_k, s_k)</math>. | ||
Здесь <math>\sigma</math> – обновление, T – временная метка, <math>p_1</math> – источник сообщения, а <math>s_i</math> – подпись, сгенерированная процессором <math>p_i</math>. Любое сообщение, для которого одна из подписей не может быть аутентифицирована, просто отбрасывается. Кроме того, если несколько обновлений, инициированных одним и тем же процессором p, имеют одинаковую временную метку, это означает, что данный процессор неисправен, и соответствующие обновления отбрасываются. Оставшаяся часть протокола аналогична второму случаю, | Здесь <math>\sigma</math> – обновление, T – временная метка, <math>p_1</math> – источник сообщения, а <math>s_i</math> – подпись, сгенерированная процессором <math>p_i</math>. Любое сообщение, для которого одна из подписей не может быть аутентифицирована, просто отбрасывается. Кроме того, если несколько обновлений, инициированных одним и тем же процессором p, имеют одинаковую временную метку, это означает, что данный процессор неисправен, и соответствующие обновления отбрасываются. Оставшаяся часть протокола аналогична второму случаю, считая, что количество переходов определяется количеством подписей. Время завершения <math>\Delta_b</math> также вычисляется следующим образом: | ||
(4) <math>\Delta_b = \pi (\delta + \varepsilon) + d \delta + \varepsilon</math>. | (4) <math>\Delta_b = \pi (\delta + \varepsilon) + d \delta + \varepsilon</math>. | ||
Строка 140: | Строка 142: | ||
'''Теорема 1. Если коммуникационная сеть G требует <math>x</math> шагов, то любой протокол атомарной широковещательной рассылки, | '''Теорема 1. Если коммуникационная сеть G требует <math>x</math> шагов, то любой протокол атомарной широковещательной рассылки, допускающий до <math>\pi</math> отказов процессоров и <math>\lambda</math> отказов каналов связи, имеет время завершения не менее <math>x \delta + \varepsilon</math>.''' | ||
'''Теорема 2. Любой протокол атомарной широковещательной рассылки для гамильтоновой сети с n процессорами, допускающий n - 2 | '''Теорема 2. Любой протокол атомарной широковещательной рассылки для гамильтоновой сети с n процессорами, допускающий n - 2 выявляемых с помощью аутентификации византийских ошибок процессоров, не может иметь время завершения меньше <math>(n - 1)(\delta + \varepsilon)</math>.''' | ||
== Применение == | == Применение == | ||
Строка 162: | Строка 164: | ||
* [[Причинно-следственное упорядочение, логические часы, репликация конечного автомата]] | * [[Причинно-следственное упорядочение, логические часы, репликация конечного автомата]] | ||
* [[Синхронизация часов]] | * [[Синхронизация часов]] | ||
* [[Детекторы | * [[Детекторы сбоев]] | ||
== Литература == | == Литература == | ||
Строка 194: | Строка 196: | ||
15. Wiesmann, M., Schiper, A.: Comparison of database replication techniques based on total order broadcast. IEEE Trans. Knowl. Data Eng. 17, 551-566 (2005) | 15. Wiesmann, M., Schiper, A.: Comparison of database replication techniques based on total order broadcast. IEEE Trans. Knowl. Data Eng. 17, 551-566 (2005) | ||
[[Категория: Совместное определение связанных терминов]] |