ICeDiM is a middleware prototype designed to provide applications with Information-Centric Networking (ICN) communications in next-generation scenarios. ICeDiM is based on the novel concept of Application-level Dissemination Channels (ADCs) with tunable permeability levels (semipermeable ADCs, or SP-ADC), which have proved very effective in controlling network resource consumption while also improving communications. Additionally, our middleware can take advantage of the broadcast nature of wireless communication media to improve the performance of the dissemination process. Finally, ICeDiM allows the definition of different and independent strategies to control cache eviction and message forwarding order. The combination of these features enables ICeDiM to achieve very good performance levels in terms of delivery ratio, delivery delay, and network resource consumption.
Next-generation communications scenarios are characterized by multiple overlapping wireless networks with significantly different characteristics. Figure 1 gives an example of a possible NGN scenario in a modern environment, such as a smart city. In NGN scenarios, users, applications, and other system components will frequently and dynamically switch between multiple network access points, assign different traffic to different networks, or even use them in parallel, a trend already visible in the emergence of heterogeneous networks in LTE/4G infrastructures and in the consequent interest towards device-to-device (D2D) communications.
Building smart applications and services operating in the networks of the next-generation is a very challenging task . In fact, a multitude of different applications, each one with different requirements and priorities, running together in this environment will cause a strong competition to have access to the sometimes-scarce bandwidth resources. Additionally, the problems arising from node mobility, intermittent links, and network partitioning will further exacerbate the operating conditions of applications of the next-generation. Finally, the most innovative applications will often exhibit new and radically different communication patterns; as a consequence, designers will face a big challenge when developing next-generation applications and services using traditional end-to-end paradigms as the basic building blocks for communications.
The correlation that often occurs between spatial and temporal proximity of users and the information they need presents the opportunity to optimize the local consumption of information. In fact, the proximity-based nature of next-generation applications and services, such as social- and location-aware multiplayer games, local- and context-aware interactions with people, information, and services such as transportation, will produce a scenario where a significant portion of the data exchanged will be generated and consumed locally. Instead of conveying all data using often overburdened communication infrastructures, e.g., the cellular network, applications and services should favor alternative solutions for information delivery, such as information dissemination and direct communications between nodes.
Researchers have proposed sophisticated middleware solutions to maintain reliable end-to-end communications in challenging mobile networks, in order to support existing applications even in presence of node mobility and frequent (temporary) link disruption  . However, in the presence of high churn, multiple link types, a large number of nodes, and new communication patterns and information model, such solutions struggle to provide the abstraction of end-to-end reliable paths from source to destination . Instead, studies suggest that middleware solutions based on indirect communications, such as the store-and-forward paradigm, can achieve better performance with lower computational and network overhead .
Information-Centric Networking (ICN) is a recently emerged communication paradigm that relies on an interest-based indirect communication scheme. ICN aims at shifting the focus of communications from hosts and servers (the location of information), typical of the IP-based Internet, to the content that users want to access (that is, to information itself) . In ICN, the unit of information is named Information Object (IO).
Typically, an ICN node that wants to retrieve some specific IO notifies its neighbors about its interest in that IO by sending an Interest Message (IM). Any node that has the IO requested by some IM can serve the request by forwarding the IO back to the requestor, typically following the same path traversed by the IM. Instead, nodes that do not have the requested IO can further distribute the IM across the network. This way, ICN nodes do not require knowledge about the specific location of IOs.
By decoupling the communication along both time and space, ICN enables applications to publish new IOs or notify their interest in specific IOs at any moment in time and in a completely independent manner. This results in an asynchronous communication scheme, which does not require setting up end-to-end connections between content requesters and providers.
Another essential feature of ICN is in-network caching. By promoting local IO caching at any node in the network, ICN engages all nodes in a collective effort to increase IO availability through the network and improve the performance of IO delivery. Together with the use of an asynchronous communications scheme, in-network caching in ICN can effectively ease the taks of communication middleware in presence of network partitioning phenomena and relatively frequent link disruptions caused by nodes mobility. On the other hand, middleware based on direct communications would struggle to keep connections to destination open in presence of node mobility and frequent transmission errors, which could cause end-to-end connections to break and, as a consequence, such middleware would need to make big efforts to continuously monitor and probe all active connections to ensure communications.
These characteristics make ICN a very promising paradigm for a communications middleware that aims at taking advantage of the wide range of network interfaces equipped on modern mobile devices, including short-range, low-power communications, such as IEEE 802.15.4 or Bluetooth LE; medium range communications like Wi-Fi and WiMax; and finally expensive, long-range communications such as LTE/4G/5G and satellite . In fact, ICN-based middleware could easily support applications running on multihomed devices by exploiting the best available connection or even using multiple links at the same time. This enables a much more efficient use of the network resources and improves the communication performance.
ICeDiM aims at tackling the issues that applications will face in the NGN scenario by bringing together abstractions, methods, and tools developed by the research in two different fields:
- Opportunistic Networking;
- Information-centric Networking.
Thus, ICeDiM supports broadcast-enabled versions of the Epidemic  and Spray-and-Wait  routing protocols, two context-oblivious, multi-copy solutions for information dissemination in opportunistic networks. In addition, ICeDiM supports fundamental features that come from the research in the ICN field, such as data-centric dissemination of IOs and in-network caching.
Figure 2 shows the architecture of the ICeDiM communications middleware. In order to use it, applications first need to register themselves by subscribing to specific thematic channels (or Application-level Dissemination Channels, ADC). From that moment on, applications can publish IOs in the context of one or more channels to which they subscribed. Furthermore, the middleware delivers to an application any IO that belongs to at least one of the channels subscribed by that application.
The middleware defines policies to manage IO caching decisions and forwarding priority that are configurable in a completely independent fashion. In addition, any activity detected on the medium is registered in a node-local database, the Knowledge on Surroundings (KoS), to build a knowledge on the node’s neighborhood that will be useful to improve IO caching and forwarding decisions. Finally, we devised ICeDiM to be aware of the inherent broadcast nature of the wireless medium, so that it can take advantage of broadcast-enabled network interfaces to improve IO dissemination, availability, and caching.
Application-level Dissemination Channels (ADCs) are one of the most important features that ICeDiM adds on top of ICN. They represent both an application-level thematic attribute and a node-level commitment to sharing resources within a specific channel. Thus, ADCs regulate nodes’ resource consumption and collaboration in the common effort of delivering IOs in next-generation networks. Examples of ADC themes include textual news, video stream news, social networking, wiki, smart city access, information from nearby sensors, etc.
Grouping similar applications and services by means of the thematic attribute of ADCs enables to achieve three important objectives: reduce resource wastage on each node, overcome nodes’ and users’ reluctance in sharing their resources, and exploit potential optimization opportunities. In fact, since only nodes interested in a given theme will participate to the corresponding ADC, ICeDiM will perform IO (re-)transmissions and caching only when in presence of nodes that have subscribed to the same ADCs of some IO. In addition, we expect that users will be more open to share the resources available on their devices if invested to improve the performance of the same class of services they use. Finally, if in-network caching favors the caching of IOs produced by applications of the same thematic classes, then the probability that future requests will be resolved directly from the local cache will increase.
Applications can dynamically join and leave any number of ADCs. When an application joins some ADC, ICeDiM ensures that a part of the node’s network bandwidth, storage capacity, and computational power is traded in exchange for support from other nodes that subscribed to the same ADC. This way, IO delivery becomes a common, distributed effort among the channel’s members. Different applications can access the same ADC at the same time, so that applications members of the same ADC can share resources. As a result, when applications running on a node subscribe to certain channels, that node also participates in all the corresponding ADCs. Finally, the thematic nature of ADCs allows application designers to explore trade-offs between the effectiveness of communications within the subscribed ADCs and the preservation of nodes’ resources, by modulating the granularity of the dissemination channels’ themes – and hence the corresponding number of participating entities.
Figure 3 gives a visual representation of three different ADCs in a mobile scenario, represented with three different colors, to which we refer as ADC “Green”, “Yellow”, and “Violet”, respectively. Nodes A, B, and C are subscribed to the ADC “Green”, nodes D and E are subscribed to the ADC “Yellow”, and nodes G, H, I, and J are subscribed to the ADC “Violet”. Node A also subscribed to the ADC “Violet” and, similarly, nodes E and F also subscribed to the ADC “Green”. Black, continuous lines represent links between nodes that belong to the same ADC. ICeDiM can use those links to transfer IOs within the context of that ADC; we call this type of transmission “within-channel transmission”. Instead, red dotted lines represent links between nodes that do not belong to the same ADC. Therefore, even though some connections are available at the link layer, ICeDiM ignores them for the purpose of IO forwarding.
In real scenarios, strictly limiting the dissemination of IOs within the boundaries of their ADC might lead to missed connectivity opportunities, prevent message delivery to interested parties, and cause partitioning phenomena even if an end-to-end path between two nodes is available. To address these issues, ICeDiM implements a mechanism that enables the partial relaxation of the constraints on IO dissemination imposed by ADCs. To this end, we introduce the concept of dissemination channels with permeable boundaries. This mechanism allows a (configurable) portion of IOs to pass through the boundaries of an ADC to favor their dissemination. The goal is to maintain nodes’ resource consumption and participation in the IO dissemination process under control, while increasing the chances for communication.
More specifically, ICeDiM supports three types of ADCs (or ADC modes), with different permeability levels: Strict, Semipermeable, and Unconstrained. The level of permeability adopted for an ADC is a fundamental and system-wide attribute, set by ICeDiM at the moment of the ADC creation. From that moment on, all nodes subscribing to that ADC must comply with the IO dissemination rules defined by its permeability level.
Strict ADC (S-ADCs) have impassable boundaries, and allow within-channel transmissions only. Semipermeable ADCs (SP-ADCs) permit a fraction of IOs to seep through the boundaries of their own channels. Thereby, SP-ADCs also implement a diffusion process to determine if an IO can leave the channel boundaries (thus becoming eligible for transmission to nodes that did not subscribe to its ADC). On the receiving node, a dual process decides if the IO can be cached locally, even if it does not belong to any of the ADC subscribed. In contrast with “within-channel transmission”, we refer to the transmission of an IO across the boundaries of its ADC as “cross-channel transmission”. Finally, in Unconstrained ADC (U-ADC) no boundaries whatsoever are enforced on the dissemination of IOs. Thus, the U-ADC mode leaves any decisions concerning IO forwarding and caching to the dissemination strategy.
Figure 4 shows the same scenario depicted in Figure 3 when SP-ADCs are used instead of S-ADCs. The main difference is the use of black dashed lines to represent links between nodes that do not belong to the same dissemination channel, instead of red dotted lines, to show that IO transmission across different ADCs is permitted when the SP-ADC mode is used.
Controlling the Permeability of SP-ADCs
ICeDiM currently uses a model based on two random procedures, controlled by different (and fixed) probability parameters, to regulate cross-channel transmissions. Each ICeDiM node independently contributes to the outcome of cross-channel transmissions by running a forwarding decision-making procedure before sending an IO and a caching decision-making procedure before caching an IO transmitted by another node. These procedures have a random behavior controlled, respectively, by the Forwarding Probability (FP) and Caching Probability (CP) parameters set at the SP-ADC level.
Thus, whenever a node has the possibility to perform a cross-channel IO transmission, ICeDiM will send the IO with probability FP. Similarly, upon reception of a new IO following a neighbor’s cross-channel transmission, ICeDiM will cache the received IO with probability CP. Whenever a node generates a new IO or caches it for the first time, ICeDiM looks at the local database of ADCs subscribed by the node’s neighbors and, if the IO’s ADC is missing, ICeDiM runs the forwarding decision-making procedure to decide whether to transmit the IO or not.
ICeDiM keeps track of all forwarding and caching decisions made by the local node concerning each IO until its expiration, and reevaluates them only when network conditions change in a way that could open new communication opportunities; this ensures that ICeDiM can discover and take advantage of those opportunities. Saving past decisions allows ICeDiM to save network resources and makes it impossible for selfish nodes to force the dissemination of certain IOs by repeatedly sending copies to nearby nodes.
ICeDiM is available in three different versions, to support different Operating Systems and simulators. ICeDiM has been originally developed for ICeONE, a network simulator built upon the well-known ONE Simulator  that adds many useful features to the simulator, such as the support for broadcast transmissions, publish-subscribe based communications, and the simulation of packet collisions.
ICeDiM is open source and available on GitHub at the following address:
ICeNUX is a prototype implementation of ICeDiM that runs on Linux Operating Systems. The source code includes a very simple chat application that uses ICeNUX to transmit messages. ICeNUX is compatible with ICeDROID.
ICeNUX is open source and available on GitHub at the following address:
ICeDROID is a prototype implementation of ICeDiM that runs on Android devices. The source code includes a very simple chat application that uses ICeDROID to transmit messages. ICeDROID is compatible with ICeNUX.
ICeDROID is open source and available on GitHub at the following address:
 G. Benincasa, A. Morelli, C. Stefanelli, N. Suri, M. Tortonesi, “Agile Communication Middleware for Next-generation Mobile Heterogeneous Networks”, IEEE Software, Vol. 31, No. 2 (Special Issue on Next Generation Mobile Computing), pp. 54-61, March-April 2014.
 N. Suri, E. Benvegnu, M. Tortonesi, C. Stefanelli, J. Kovach, J. Hanna, “Communications Middleware for Tactical Environments: Observations, Experiences, and Lessons Learned,” IEEE Communications Magazine, Vol. 47, No. 10, pp. 56-63, October 2009.
 M. Tortonesi, A. Morelli, C. Stefanelli, R. Kohler, N. Suri, S. Watson, “Enabling the deployment of COTS applications in tactical edge networks,” IEEE Communications Magazine, Vol. 51, No. 10, pp. 66-73, October 2013.
 M. Varvello, I. Rimac, U. Lee, L. Greenwald, V. Hilt, “On the Design of Content-Centric MANETs,” in Proceedings of the 8th international conference on Wireless On-Demand Network Systems and Services (WONS), January 26-28, 2011.
 N. Suri, G. Benincasa, M. Tortonesi, C.Stefanelli, J. Kovach, R. Winkler, R. Kohler, J. Hanna, L. Pochet, S. Watson, “Peer-to-Peer Communications for Tactical Environments: Observations, Requirements, and Experiences”, IEEE Communications Magazine, Vol. 48, No. 10 (Special Issue on Military Communications), pp. 60-69, October 2010.
 B. Ahlgren, C. Dannewitz, C. Imbrenda, D. Kutscher, B. Ohlman, “A survey of information-centric networking”, IEEE Communications Magazine, Vol. 50, No. 7, pp. 26-36, July 2012.
 M. Amadeo, C. Campolo, A. Molinaro, G. Ruggeri, “Content-centric wireless networking: A survey”, Computer Networks, Vol. 72, pp. 1-13, 29 October 2014.
 A. Vahdat, D. Becker, “Epidemic routing for partially connected ad hoc networks”, Technical Report CS-200006, Duke University, 2000.
 T. Spyropoulos, K. Psounis, C. S. Raghavendra, “Spray and wait: an efficient routing scheme for intermittently connected mobile networks” Proceedings of the 2005 ACM SIGCOMM workshop on Delay-tolerant networking (WDTN ’05), pp. 252-259, 2005.
 A. Keränen, J. Ott, T. Kärkkäinen, “The ONE Simulator for DTN Protocol Evaluation”, 2nd International Conference on Simulation Tools and Techniques (SIMUTools’09), Rome, March 2009.