DISP is a practical, efficient and secure client/server protocol for data storage and retrieval in a distributed environment.DISP is practical because it is simple to describe, easy to implement, and makes reasonable assumptions about the capabilities of the client and server. DISP is efficient in terms of network traffic; even in the presence of failures, the protocol requires transferring only marginally more than L bytes in order to retrieve an object of size L. DISP is secure because all of the data is stored and transferred in an encrypted form; compromise of the network or a server reveals none of the data. DISP is also able to ensure integrity of the data so that the data can be retrieved correctly even when some servers have been corrupted.
DISP manages the storage of immutable data objects by distributing the responsibility of storing each data object among a pool of autonomous and independently functioning servers. DISP does not implement the semantics of a file system, although it may be used as the storage manager for a distributed file system based on immutable storage. Although DISP does not permit mutable objects, it does support versioning -- there may be any number of versions of each object, and all versions are accessible.
DISP is novel in several ways:
Protocols that require server-to-server communication in order to achieve consensus or agreement do not scale well; as the number of servers grows, the communication overhead and complexity of these protocols become daunting. In contrast, the upper bound on the number of messages required by each DISP operation is proportional to the number of servers, even in the worst case. The fact that DISP servers never communicate also means that it is easier to isolate server failures and prevent a Byzantine server from influencing correct servers.
DISP sacrifices some functionality and a small degree of performance and fault tolerance in favor of simplicity and ease of implementation.
Rather than being a single protocol tuned for one type of application, DISP is a family of protocols that may be used for many applications. The client chooses the encoding, degree of fault tolerance, and whether to use encryption for each object on an object-by-object basis.