Zero-copy objects (ZCOs) are abstract data access representations designed to minimize I/O (input/output) in the encapsulation of application source data within one or more layers of communication protocol structure. They are constructed within the heap space of a “Simple Data Recorder” (SDR) data store to which all participating layers of the stack must have access. Each ZCO contains general information enabling access to the core source data object (an item of application data), together with (a) a linked list of zero or more specific “extents” that reference portions of this source data object, and (b) linked lists of protocol header and trailer capsules. The concatenation of the headers (in ascending stack sequence), the source data object extents, and the trailers (in descending stack sequence) constitute the transmitted data object constructed from the ZCO.

This scheme enables a source data object to be encapsulated in a succession of protocol layers without ever having to be copied from a buffer at one layer of the protocol stack to an encapsulating buffer at a lower layer of the stack. For large source data objects, the savings in copy time and reduction in memory consumption may be considerable.

This work was done by Scott C. Burleigh of ACRO for NASA’s Jet Propulsion Laboratory.

This software is available for commercial licensing. Please contact Daniel Broderick of the California Institute of Technology at This email address is being protected from spambots. You need JavaScript enabled to view it.. NPO-41627



This Brief includes a Technical Support Package (TSP).
Document cover
Zero-Copy Objects System

(reference NPO-41627) is currently available for download from the TSP library.

Don't have an account?



Magazine cover
NASA Tech Briefs Magazine

This article first appeared in the October, 2011 issue of NASA Tech Briefs Magazine (Vol. 35 No. 10).

Read more articles from this issue here.

Read more articles from the archives here.


Overview

The document discusses the Zero-Copy Objects (ZCO) system, developed by NASA's Jet Propulsion Laboratory, aimed at optimizing data handling in communication protocols. ZCOs are abstract data access representations designed to minimize input/output operations when encapsulating application source data within multiple layers of communication protocol structures. This approach is particularly beneficial for large data objects, as it reduces both copy time and memory consumption.

ZCOs are constructed within the heap space of a Simple Data Recorder (SDR) data store, accessible to all layers of the protocol stack. Each ZCO contains essential information for accessing the core source data object, which can be a file or an array of bytes. It also includes linked lists of specific "extents" that reference portions of the source data and linked lists of protocol header and trailer capsules. The combination of these elements forms the transmitted data object.

The ZCO system supports various operations, including creating ZCOs, appending or prepending protocol headers and trailers, adding or destroying references, querying lengths, fragmenting ZCOs, and writing data to buffers for transmission. These capabilities allow for efficient management of data across multiple protocol layers, ensuring that no single layer is solely responsible for deleting a ZCO when it is no longer needed.

ZCOs are designed to be persistent and are particularly useful in implementing delay-tolerant and disconnection-tolerant protocols, such as the Delay-Tolerant Networking (DTN) Licklider Transmission Protocol (LTP) and the DTN Bundle Protocol. Applications interact with ZCOs through ZcoReferences, which can refer to the same ZCO without the applications needing to be aware of this sharing. When the last reference to a ZCO is destroyed, the ZCO is automatically deleted, ensuring efficient memory management.

The research and development of the ZCO system were conducted under NASA's Commercial Technology Program, highlighting its potential applications beyond aerospace, including technological and scientific advancements in various fields. The document emphasizes the importance of ZCOs in enhancing data transmission efficiency and reliability in complex communication environments.