Pruebas de corrección de Paxos clásico y Paxos rápido

13

Estoy leyendo el documento "Fast Paxos" de Leslie Lamport y me quedo atascado con las pruebas de corrección de Paxos clásico y Fast Paxos.

Por consistencia, el valor recogió por el coordinador en fase en la ronda debería satisfacer2 a iv2ai

CP(v,i): para cualquier ronda , ningún valor que no sea ha sido o podría ser elegido en la ronda .v jj<ivj


Para Paxos clásico , la prueba (Página 8) se divide en tres casos: , , y , donde es el número redondo más grande en el que algún aceptante ha informado al coordinador por mensaje de fase . No entendí el argumento para el tercer caso:j = k j < k k 1 bk<j<ij=kj<kk1b

Caso . Podemos suponer por inducción que la propiedad mantenida cuando el aceptador votó por en la ronda . Esto implica que ningún valor distinto de ha sido o podría ser elegido en la ronda .j<ka 0 v k v jCPa0vkvj

Mi pregunta es:

  1. ¿Por qué podemos suponer que la propiedad mantenida cuando el aceptador votó por en la ronda ?a 0 v kCPa0vk

Parece que estamos usando la inducción matemática, por lo tanto, ¿cuáles son las bases, la hipótesis inductiva y los pasos inductivos?


Para Fast Paxos , continúa el mismo argumento (Página 18). Dice,

Caso . Para cualquier en , ningún valor que no sea ha sido o podría ser elegido en la ronda .v V v jj<kvVvj

Mi pregunta es:

  1. ¿Cómo se obtiene esto? En particular, ¿por qué está aquí "Para cualquier en "?VvV

En mi opinión, la prueba de corrección del caso basa (recursivamente) en los casos de y . k < j < i j = kj<kk<j<ij=k

Por lo tanto, ¿cómo podemos concluir el caso sin probar primero completo (es decir, omitiendo el subcase de donde contiene más de un valor)?j = k j = k Vj<kj=kj=kV

hengxina
fuente

Respuestas:

10

¿Por qué podemos suponer que la propiedad CP mantenida cuando el aceptador a0 votó por v en la ronda k? Parece que estamos usando la inducción matemática, por lo tanto, ¿cuáles son las bases, la hipótesis inductiva y los pasos inductivos?

Estás viendo una instancia de inducción fuerte . En la inducción simple, usted asume que la propiedad es válida para demuestra que es válida para . En una inducción fuerte, asume que la propiedad es válida para demuestra que es válida para .n = m + 1 n : n < m n = m + 1norte=metronorte=metro+1norte:norte<metronorte=metro+1

Base (creo): . Es decir, la ronda nula (ya que las rondas comienzan en 1). Esto es trivialmente cierto, lo que probablemente sea la razón por la que no se declaró explícitamente.j=0 0

Paso inductivo : Suponga ; probar donde .C P ( v ; j + 1 ) j < in,nj:CP(v;n)CP(v;j+1)j<i

Lo creas o no, esto es solo un boceto de prueba . La prueba real está en el documento del Parlamento a tiempo parcial . (Algunos consideran el papel críptico, otros lo consideran humorístico).


¿Cómo se obtiene esto?

En mi opinión, la prueba de corrección del caso basa (recursivamente) en los casos de y .k < j < i j = kj<kk<j<ij=k

Por lo tanto, ¿cómo podemos concluir el caso sin probar primero completo (es decir, omitiendo el subcase de donde contiene más de un valor)?j = k j = k Vj<kj=kj=kV

Esto es nuevamente una inducción fuerte, por lo que el caso se basa en los casos de y , pero a través de la hipótesis de inducción , es decir, de la ronda anterior de Paxos.k < j j = kj<kk<jj=k


Consejos generales para las pruebas de Lamport.

Lamport utiliza una técnica de pruebas jerárquicas. Por ejemplo, la estructura de la prueba en las páginas 7-8 se parece a esto:

  • Suponga ; probar donde . C P ( v ; j + 1 ) j < in,nj:CP(v;n)CP(v;j+1)j<i
    1. Observación 1
    2. Observación 2
    3. Observación 3
    4. k=argmax(...)
    5. caso k = 0
    6. caso k> 0
      • caso k <j
      • caso k = j
      • caso j <k

Lamport tiende a usar otro tipo de jerarquía. Él probará un algoritmo más simple, y luego probará que un algoritmo más complejo se mapea (o "extiende" ) al algoritmo más simple. Esto no parece estar sucediendo en la página 18, pero es algo a tener en cuenta. (La prueba en la página 18 parece ser una modificación de la prueba a las páginas 7-8; no una extensión de la misma).

Lamport depende en gran medida de una fuerte inducción ; También tiende a pensar en términos de conjuntos en lugar de números. Entonces puede obtener conjuntos vacíos donde otros tendrían ceros o nulos; o establecer sindicatos donde otros tendrían más.

Probar la corrección de los sistemas de paso de mensajes asíncronos necesita una visión omnisciente del sistema con respecto al tiempo . Por ejemplo, al considerar acciones en la ronda , ¡tenga en cuenta que las acciones para alguna ronda pueden no haber sucedido temporalmente! . Y, sin embargo, Lamport declara estos eventos potencialmente futuros en tiempo pasado.j < iyoj<yo

Los sistemas y pruebas de Lamports tienden a tener una variable o un conjunto de variables que solo pueden ir en una dirección; solo incrementando números y solo agregando a conjuntos. Esto se usa ampliamente en sus pruebas. Por ejemplo, en la página 8, Lamport muestra cómo neutralizó la capacidad futura de para emitir otro voto:un

... Dado que estableció en al enviar un mensaje, no pudo haber votado posteriormente en una ronda numerada menor que ...i a irnd[a]iai

Definitivamente es un estiramiento mental para probar este tipo de sistemas.

(actualización) : enumere los invariantes; Lamport usa muchos invariantes cuando se desarrolla y sus pruebas. A veces se encuentran dispersos por las pruebas; a veces solo están presentes en la prueba verificada por la máquina. Razón sobre cada invariante; por que esta ahi ¿Cómo interactúa con los otros invariantes? ¿Cómo cada paso en el sistema mantiene esta invariante?


Revelación completa : no había leído Fast Paxos hasta que me pidieron que respondiera esta pregunta; y solo miraba las páginas citadas. Soy ingeniero y no matemático; mi pincel con el trabajo de Lamport se basa únicamente en la necesidad de inventar y mantener correctamente sistemas distribuidos a gran escala.

Mi respuesta se basa en gran medida en mi experiencia con el trabajo de Lamport. He leído varios de los protocolos y pruebas de Lamport; Mantengo profesionalmente un sistema basado en paxos; He escrito y probado un protocolo de consenso de alto rendimiento, y nuevamente mantengo profesionalmente un sistema basado en él (estoy tratando de hacer que mi compañía me permita publicar un artículo). Yo he colaborado en un papel insignificante con Lamport, en la que me encontré con él tres veces (el papel todavía está pendiente de revisión por pares).

Michael Deardeuff
fuente
¡Gracias por su tiempo, las respuestas y los excelentes comentarios sobre las pruebas de Lamport! Para Paxos: Ahora, puedo captar la idea básica de la prueba de Lamport. Sin embargo, el flujo de tiempo en mi mente retrocede : estamos en la ronda y tenemos . Para probar , examinamos los casos de y , y probamos recursivamente . A saber, involucra otro , casos de y , y . Esta recursión termina eniC P ( v , i ) k < j < i j = k C P ( v ,k=max()CP(v,i)k<j<ij=kC P ( v , k ) k = m a x ( ) k < j < k j = k C P ( v ,CP(v,k)CP(v,k)k=max()k<j<kj=kCP(v,k)kn=0. De esta manera, la recursividad está en s. Tengo dificultades para traducirlo en una inducción fuerte con el tiempo fluyendo hacia adelante . k
hengxin
1
@hengxin Al razonar sobre mi sistema / prueba; Pensé en ello como el tiempo en el futuro. Comenzaría con y me aseguraría de que se cumplan todos los invariantes; Luego iría con y me aseguraría de que se cumplan todos los invariantes; y así. Eso me recuerda agregar más punteros Lamport. yo=0 0yo=1
Michael Deardeuff
Para Fast Paxos ( ), ¿es la hipótesis inductiva que " " (vea el caso en )? Sin embargo, en la parte inferior de , dice que debemos encontrar un valor en que satisfaga . Entonces, ¿es esa hipótesis inductiva demasiado fuerte? v V , C P ( v , i ) j < k P 18 P 17 v V C P ( v , i )P18vV,CP(v,i)j<kP18P17vVCP(v,i)
hengxin
Finalmente, me di cuenta de qué es la invariante y cómo funciona la inducción fuerte. Gracias de nuevo. Por cierto, usted mencionó que Lamport tends to use another type of hierarchy. He'll prove a simpler algorithm, and then prove that a more complex algorithm maps onto (or "extends") the simpler algorithm, por lo tanto, ¿podría mostrar un ejemplo o citar un documento relacionado? Además, ¿sus documentos tienen ediciones pre-impresas, (comercialmente) sin clasificar?
hengxin
1
Lamport explica el primer tipo de jerarquía en su artículo Cómo escribir una prueba y da un ejemplo del segundo en Bizantizar Paxos por refinamiento . El segundo tipo de jerarquía generalmente se denomina refinamiento o mapeo .
Michael Deardeuff