Multicast confiável - Reliable multicast

Um multicast confiável é qualquer protocolo de rede de computador que fornece uma sequência confiável de pacotes para vários destinatários simultaneamente, tornando-o adequado para aplicações como transferência de arquivos para vários receptores .

Visão geral

Multicast é um método de endereçamento de rede para a entrega de informações a um grupo de destinos simultaneamente usando a estratégia mais eficiente para entregar as mensagens em cada link da rede apenas uma vez, criando cópias apenas quando os links para os destinos múltiplos se dividem (normalmente comutadores de rede e roteadores ). No entanto, como o protocolo de datagrama do usuário , o multicast não garante a entrega de um fluxo de mensagens. As mensagens podem ser descartadas, entregues várias vezes ou entregues fora de ordem. Um protocolo multicast confiável adiciona a capacidade dos receptores de detectar mensagens perdidas e / ou fora de ordem e tomar medidas corretivas (semelhante em princípio ao TCP ), resultando em um fluxo de mensagens ordenado e sem falhas.

Confiabilidade

O significado exato de confiabilidade depende da instância de protocolo específica. Uma definição mínima de multicast confiável é a entrega eventual de todos os dados a todos os membros do grupo, sem impor qualquer ordem de entrega específica . No entanto, nem todos os protocolos multicast confiáveis ​​garantem esse nível de confiabilidade; muitos deles trocam eficiência por confiabilidade, de maneiras diferentes. Por exemplo, enquanto o TCP torna o emissor responsável pela confiabilidade da transmissão, os protocolos multicast baseados em NAK transferem a responsabilidade para os receptores: o emissor nunca sabe com certeza se todos os receptores de fato receberam todos os dados. RFC-2887 explora o espaço de design para transferência de dados em massa, com uma breve discussão sobre as várias questões e algumas dicas sobre os possíveis significados diferentes de confiável .

Entrega confiável de dados de grupo

O Reliable Group Data Delivery (RGDD) é uma forma de multicast em que um objeto deve ser movido de uma única fonte para um conjunto fixo de receptores conhecidos antes do início da transmissão. Uma variedade de aplicativos pode precisar dessa entrega: Hadoop Distributed File System (HDFS) replica qualquer bloco de dados duas vezes adicionais para servidores específicos, a replicação de VM para vários servidores pode ser necessária para dimensionar os aplicativos e a replicação de dados para vários servidores pode ser necessária para balanceamento de carga, permitindo que vários servidores forneçam os mesmos dados de suas cópias locais em cache. Essa entrega é frequente em datacenters devido à grande quantidade de servidores que se comunicam durante a execução de aplicativos altamente distribuídos.

O RGDD também pode ocorrer em datacenters e às vezes é referido como transferências ponto a multiponto (P2MP) entre datacenters. Essas transferências entregam grandes volumes de dados de um datacenter para vários datacenters para vários aplicativos: mecanismos de pesquisa distribuem atualizações de índice de pesquisa periodicamente (por exemplo, a cada 24 horas), aplicativos de mídia social enviam novo conteúdo para muitos locais de cache em todo o mundo (por exemplo, YouTube e Facebook) e os serviços de backup fazem várias cópias geograficamente dispersas para aumentar a tolerância a falhas. Para maximizar a utilização da largura de banda e reduzir os tempos de conclusão das transferências em massa, uma variedade de técnicas foi proposta para a seleção de árvores de encaminhamento multicast.

Sincronia Virtual

Sistemas modernos como o Spread Toolkit , Quicksilver e Corosync podem atingir taxas de dados de 10.000 multicasts por segundo ou mais, e podem escalar para grandes redes com grande número de grupos ou processos.

A maioria das plataformas de computação distribuída oferece suporte a um ou mais desses modelos. Por exemplo, todas as plataformas orientadas a objetos CORBA com amplo suporte oferecem suporte a transações e alguns produtos CORBA oferecem suporte à replicação transacional no modelo de serialização de uma cópia. O "padrão CORBA Fault Tolerant Objects" é baseado no modelo de sincronia virtual. A sincronia virtual também foi usada no desenvolvimento da arquitetura de tolerância a falhas da Bolsa de Valores de Nova York, o Sistema de Controle de Tráfego Aéreo da França, o sistema AEGIS da Marinha dos EUA, a arquitetura de replicação de Processos de Negócios da IBM para WebSphere e a arquitetura de Clustering do Windows da Microsoft para servidores corporativos Windows Longhorn .

Sistemas que suportam sincronia virtual

A sincronia virtual foi inicialmente apoiada pela Cornell University e foi chamada de "Isis Toolkit". A versão mais atual de Cornell, Vsync foi lançada em 2013 sob o nome de Isis2 (o nome foi alterado de Isis2 para Vsync em 2015 na sequência de um ataque terrorista em Paris por uma organização extremista chamada ISIS), com atualizações e revisões periódicas desde então . A versão estável mais recente é a V2.2.2020; foi lançado em 14 de novembro de 2015; a versão V2.2.2048 está atualmente disponível na forma Beta. O Vsync visa os centros de dados massivos que oferecem suporte à computação em nuvem .

Outros sistemas incluem o sistema Horus, o sistema Transis, o sistema Totem, um sistema IBM chamado Phoenix, um sistema de gerenciamento de chaves de segurança distribuído chamado Rampart, o "sistema Ensemble", o sistema Quicksilver , "O projeto OpenAIS", seu derivado Corosync Cluster Engine e vários produtos (incluindo os da IBM e da Microsoft mencionados anteriormente).

Outros protocolos existentes ou propostos

Suporte de biblioteca

  • JGroups (Java API): projeto / implementação popular
  • Spread : API C / C ++, API Java
  • RMF (C # API)
  • hmbdc open source (headers only) middleware C ++, ultra-baixa latência / alta taxa de transferência, escalonável e confiável inter-thread, IPC e mensagens de rede

Referências

Leitura adicional

  • Sistemas Distribuídos Confiáveis: Tecnologias, Serviços da Web e Aplicativos. KP Birman. Springer Verlag (1997). Livro didático, cobre um amplo espectro de conceitos de computação distribuída, incluindo sincronia virtual.
  • Sistemas Distribuídos: Princípios e Paradigmas (2ª Edição). Andrew S. Tanenbaum, Maarten van Steen (2002). Livro didático, cobre um amplo espectro de conceitos de computação distribuída, incluindo sincronia virtual.
  • "A abordagem de grupo de processos para computação distribuída confiável" . KP Birman, Communications of the ACM 16:12 (dezembro de 1993). Escrito para não especialistas.
  • "Especificações de comunicação do grupo: um estudo abrangente" Gregory V. Chockler, Idit Keidar,
  • Roman Vitenberg. ACM Computing Surveys 33: 4 (2001). Introduz um formalismo matemático para esses tipos de modelos e, em seguida, usa-o para comparar seu poder expressivo e suas suposições de detecção de falhas.
  • “O parlamento a tempo parcial” . Leslie Lamport. ACM Transactions on Computing Systems (TOCS), 16: 2 (1998). Apresenta a implementação Paxos de máquinas de estado replicadas.
  • "Explorando a sincronia virtual em sistemas distribuídos" . KP Birman e T. Joseph. Anais do 11º Simpósio ACM sobre princípios de sistemas operacionais (SOSP), Austin Texas, novembro de 1987. Uso mais antigo do termo, mas provavelmente não é a melhor exposição do tópico.