Imagine a world where computing components can migrate and run securely, reliably, and automatically on any computing platform that has the required resources and can satisfy the necessary dependencies. We will present and demonstrate a proof-of-concept digital container and associated services that package computing components that can migrate automatically and be executed across a range of computing platforms with different configurations and resources available. The container will specify the computing resources required and include security (e.g., digital signing), software assurance mechanisms (pre/post-conditions and invariants), dependencies, and an execution mechanism, and it will enforce supported data input and output formats.
Digital containers are commonplace for the distribution of electronic content. The typical digital container is a metafile format whose metadata describes the different data elements included in the container. The primary use of digital containers today is for distributing multimedia content. A recently standardized digital container is used to package an executable software service consisting of one or many virtual machines to provide a computing service. This format is the Open Virtualization Format (OVF) by the Distributed Management Task Force (DMTF). The OVF format is extensible by design. This presentation outlines our initial successes extending the OVF format to automatically provision computing components. The technique includes mechanisms to characterize the computing component requirements and the cloud/cloudlet capabilities coupled with a novel technique to select the best combination of service to platform for execution. The end goal is to enable a developer of a software module or service to package the component in a well-defined and standardized digital container regardless of the implementation technology and enable widespread portability while enforcing secure and assured execution characteristics.
Specifically, we will present our experience to date developing a digital container to perform the same computing operation using different computing mechanisms (VM, emulation, byte-code, interpreted code, API library, recompile, etc.) and demonstrate automatic migration of the service across multiply configured cloudlets. This required developing a cloudlet service to advertise a computing platform's capabilities and facilitate the automated selection of the best match of service to platform. Additionally, we will show a client application that provides fully automated communication with the cloudlet service provider to discover and negotiate the service, offload the computation, provide the input data, and present results to the user.