Please use this identifier to cite or link to this item: https://hdl.handle.net/10316/31075
Title: Reliable Distributed Communication: Design Solutions and Protocols
Authors: Ivaki, Naghmeh Ramezani 
Orientador: Araújo, Filipe
Keywords: Fiabilidade; Tolerância a falhas; Comunicação ponto-a-ponto; Interação unidirecional; Interação Pedido-Resposta; TCP; Falha de Ligação; Semânticas de Fiabilidade; Comunicação Baseada em Fluxo; Comunicação Baseada em Mensagens; Comunicação Baseada em Conversação; Padrão de Desenho; Protocolo; Taxonomia; Reliability; Fault-tolerance; Point-to-Point Communication
Issue Date: 30-Sep-2016
Citation: IVAKI, Naghmeh Ramezani - Reliable distributed communication : design solutions and protocols. Coimbra : [s.n.], 2016. Tese de doutoramento. Disponível na WWW: http://hdl.handle.net/10316/31075
Project: info:eu-repo/grantAgreement/FCT/SFRH/SFRH/BD/67131/2009/PT 
Abstract: Do entretenimento à comunicação pessoal, passando por aplicações críticas para negócio e segurança, o mundo depende cada vez mais dos sistemas distribuídos. Apesar de parecerem simples, os sistemas distribuídos escondem muitas subtilezas, especialmente quando a comunicação tem de ser fiável. A origem da complexidade está no facto de que qualquer componente envolvido na comunicação distribuída poder falhar. Tolerar falhas e regressar a um estado coerente é uma tarefa bastante difícil, por vezes impossível, principalmente devido ao conhecimento incompleto e inconsistente dos pares envolvidos na comunicação. A necessidade de disponibilizar comunicação fiável, mostrou ser uma tarefa de investi- gação imensa, que resultou num largo conjunto de protocolos, pilhas de comunicação, middleware, etc. No entanto, mesmo com todo este esforço, TCP e HTTP permanecem como as pedras angulares da comunicação fiável na Internet, isto apesar das suas evi- dentes limitações. Por exemplo, o TCP não consegue lidar com falhas nas ligações, nem disponibiliza informação que possibilite a recuperação. Adicionalmente, nem TCP, nem HTTP disponibilizam suporte para processar pedidos não-idempotentes uma e uma só vez. Por outro lado, muitas das soluções alternativas tentam modificar ou substituir o TCP, ou requerem software ou hardware especial que pode não estar imediatamente disponível ou que nunca atingiu um grau de maturidade que permitisse a utilização em todas as plataformas e linguagens. As limitações das soluções dominantes por um lado, e as evidentes limitações das alternativas, por outro, ditaram que a investigação nesta área se mantivesse extremamente ativa. Nesta tese, defendemos que a melhor abordagem para o problema recorrente da fiabili- dade em aplicações distribuídas ponto-a-ponto é precisamente partir de TCP e HTTP para criar padrões de desenho completamente desligados de sistemas operativos, bib- liotecas, linguagens de programação ou outros tipos de middleware, podendo, dessa forma, ser implementadas em todas as plataformas. Para suportar esta ideia, primeiro analisamos e classificamos um grande conjunto de aplicações distribuídas, que necessitam de comunicação fiável, e um grande número de soluções de comunicação fiável, que podem ser usadas para implementar essas apli- cações. Isto é feito com o objetivo de construir uma base de conhecimento, identificando correspondências e lacunas entre requisitos de aplicações e soluções. Propomos então uma solução reutilizável, denominada de padrão de desenho Connec- tion Handler, para permitir que os protocolos existentes orientados a ligações, nomeada- mente TCP, possam recuperar de falhas nas ligações. Esta solução pode ser usada, in- dependentemente da plataforma e linguagem de programação, e disponibiliza suporte não apenas para TCP, mas para outras tecnologias como WebSockets. Usamos en- tão o padrão de desenho Connection Handler e propomos uma solução de desenho reutilizável, extensível, e eficiente para aplicações baseadas em fluxos de dados, que ne- cessitem de transmissão fiável de fluxos de bytes (e.g., streaming multimédia), mesmo na presença de falhas nas ligações. Também propomos soluções de desenho para apli- cações baseadas em mensagens, que seguem um paradigma de comunicação unidire- cional, para tolerar falhas de ligação e seguir o estado de mensagens enviadas. Adi- cionalmente, propomos um protocolo uma e uma só vez e solução de desenho para aplicações baseadas em conversação, com padrões de interação pedido-resposta, que tolera falhas na ligação e nos participantes. Finalmente, criamos uma taxonomia ex- austiva de protocolos fiáveis pedido-resposta, oferecendo semânticas uma e uma só vez e no máximo uma vez. Acreditamos que o resultado positivo da nossa avaliação experimental demonstra que esta tese representa um progresso no estado da arte em comunicação fiável ponto-a-ponto, ao disponibilizar um conjunto de desenhos e protocolos para diferentes formas de interações desde unidirecional a pedido-resposta fiável, incluindo interações não-idempotentes, com semânticas uma e uma só vez e no máximo uma vez. Os padrões de desenho que propomos ajudam os programadores a implementar comuni- cação distribuída mais fiável de forma simples, correta e independente da plataforma, linguagem de programação e lógica de negócio da aplicação.
From entertainment to personal communication, and from business to safety-critical applications, the world relies on distributed systems more than ever. Despite looking simple on the surface, distributed systems hide many subtleties, specially when they must provide reliable communication. A major source of complexity comes from the fact that any component involved in a distributed communication may fail. Tolerating crashes and recovering to a consistent state is a very difficult task, if possible at all, mainly due to the incomplete and inconsistent knowledge of the peers involved. The need to overcome this problem and provide reliable communication, proved to be a huge research effort, which outputted a vast body of protocols, communication stacks, middleware, etc. Despite all the best efforts of the last few decades, TCP and HTTP stand firmly as the cornerstones of reliable communication on the Internet, in spite of their shortcomings. For instance, TCP does neither handle connection crashes, nor provide any information to facilitate the recovery. Moreover, neither TCP, nor HTTP provide any support to process non-idempotent requests exactly-once. On the other hand, alternative solutions often try to modify or replace TCP, or require special software or hardware that may not be readily available or mature for deployment in all platforms and languages. This indeed paved the way for continued research in this area. In this thesis, we argue that the best approach for the recurrent reliability problem of distributed point-to-point applications is precisely to leverage on TCP and HTTP to build reusable design patterns that are completely detached from operating systems, libraries, programming languages or other sorts of middleware, thus having the property of being available for all platforms. To support this idea, we first survey and classify a wide set of popular distributed applications, requiring reliable communication, and a large number of reliable commu- nication solutions that might be used to implement such applications. This is done in order to build a knowledge base, by identifying matches and gaps that may exist between applications requirements and solutions. We then propose a reusable solution, named Connection Handler design pattern, to enable the existing connection-oriented protocols, in particular TCP, to recover from connection crashes. This solution can be used, independently of the platform and pro- gramming language, and provides support not only for TCP, but for other technologies, like WebSockets. We then use the Connection Handler design pattern and propose a reusable, extensible, and efficient design solution to stream-based applications, re- quiring reliable transmission of byte streams (e.g., multimedia streaming) even in the presence of connection crashes. We also propose design solutions to message-based ap- plications, following the one-way messaging paradigm, to tolerate connection crashes and track the status of sent messages. Furthermore, we propose an exactly-once pro- tocol and design solution for conversation-based applications with request-response in- teraction patterns, tolerating both connection and endpoint crashes. Finally, we create a comprehensive taxonomy of reliable request-response protocols offering exactly-once and at-most-once semantics. We believe that the positive outcome of our experimental evaluation demonstrates that this thesis advances the state of the art in reliable point-to-point distributed commu- nication, by providing a set of designs and protocols for different forms of interactions from one-way to reliable request-response, including non-idempotent interactions with exactly-once or at-most-once semantics. The design patterns we propose help devel- opers to implement more reliable distributed communication simply, correctly, and independently of the platform, programming language, and application’s business logic.
Description: Tese de doutoramento em Ciências e Tecnologias da Informação, apresentada ao Departamento de Engenharia Informática da Faculdade de Ciências e Tecnologia da Universidade de Coimbra
URI: https://hdl.handle.net/10316/31075
Rights: openAccess
Appears in Collections:FCTUC Eng.Informática - Teses de Doutoramento

Files in This Item:
File Description SizeFormat
Reliable Distributed Communication.pdf5.58 MBAdobe PDFView/Open
Show full item record

Page view(s)

258
checked on Apr 23, 2024

Download(s)

216
checked on Apr 23, 2024

Google ScholarTM

Check


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.