Section: Overall Objectives
Networks of independent entities, cooperating to handle global tasks, constitute a fascinating class of systems. They are widely found in nature, with cells exchanging information with their neighbors, or neurons through synapse connections, as well as in social organizations. Such organizations are making their ways in microelectronic systems and might in the near future become ubiquitous. They are made possible by the development of ever smaller and cheaper electronic devices with increased memory capacity and computational power, together with the standardization efforts for both wireless communication and data exchange format. The Internet of things, in which potentially all objects, whether virtual or real, will become addressable and smart, attracts now a considerable attention.
One of the main barriers today to the development of such networks is the lack of programming abstraction. Smart devices are usually dedicated systems based on ad hoc models, which are not generic enough to support the needs of future applications (flexibility, scalability, ease to maintain, etc.). The deployment of a sensor network for instance is a tedious task which requires an expertise in the underlying OS and hardware. Applications implemented today on top of TinyOS for instance impose to deal with low-level issues such as memory.
The objectives of the Netquest project are to develop solutions that allow to program networks in a declarative manner, by specifying the intended functionalities without having to deal with system aspects, much as in database systems. The separation of a logical level, accessible to users and applications, from the physical layers constitutes the basic principle of Database Management Systems. It is at the origin of their technological and commercial success. This fundamental contribution of Codd in the design of the relational model of data, has lead to the development of universal high level query languages, that all vendors recognize, as well as to query processing techniques that optimize the declarative queries into (close to) optimal execution plans.
The abstraction we propose relies on a very simple idea: model the network as a database. The network is thus essentially hidden and perceived by each node as a database, with which it interacts through declarative query languages. The communication between devices thus consists of queries and data. Each node should be equipped with a distributed query engine, evaluating all queries whether posed by the node itself or received from other nodes. This approach blurs the traditional distinction between communication and application layers. Both are handled in a uniform fashion using queries evaluated by the query engine.
We consider two levels of abstraction: (i) the global level, where the network can be programmed as a whole, and (ii) the local level, where programs specify the nodes behavior. At the global level, a node can for instance fire a query asking for a route satisfying some properties, without any algorithmic specification. The network will rely on the distributed query engine on each node to evaluate that query, thus resulting in a distributed algorithm. At the local level of abstraction on the other hand, the behavior of the nodes can be specified. Routing protocols for instance are programmed at the local level by specifying the exchange of messages necessary to achieve a task.
Our ambition is to show that the framework provided by the programming abstraction helps to write programs which are:
easy to write in a concise way;
efficient to execute, that is they can be compiled into efficient distributed algorithms, which can adapt to dynamic environment;
verifiable thanks to a clear semantics;
portable over heterogeneous devices and networks.
The objective of the project is to solve the theoretical and practical problems raised by the programming abstraction. We concentrate on the following three research directions:
Establish theoretical foundations for network query languages: design, distributed complexity, and expressive power.
Implement distributed query engines to execute queries of the network query languages, with distributed optimization.
Validate the declarative approach through real network problems, such as networking protocols, and distributed network applications (sensor, vehicles, M2M, etc.).