Working on the cluster i/o
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/ClusterCommunicationService.java b/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/ClusterCommunicationService.java
new file mode 100644
index 0000000..87ed221
--- /dev/null
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/ClusterCommunicationService.java
@@ -0,0 +1,46 @@
+package org.onlab.onos.store.cluster.messaging;
+
+import org.onlab.onos.cluster.NodeId;
+
+import java.util.Set;
+
+/**
+ * Service for assisting communications between controller cluster nodes.
+ */
+public interface ClusterCommunicationService {
+
+ /**
+ * Sends a message to the specified controller node.
+ *
+ * @param message message to send
+ * @param toNodeId node identifier
+ * @return true if the message was sent sucessfully; false if there is
+ * no stream or if there was an error
+ */
+ boolean send(ClusterMessage message, NodeId toNodeId);
+
+ /**
+ * Adds a new subscriber for the specified message subject.
+ *
+ * @param subject message subject
+ * @param subscriber message subscriber
+ */
+ void addSubscriber(MessageSubject subject, MessageSubscriber subscriber);
+
+ /**
+ * Removes the specified subscriber from the given message subject.
+ *
+ * @param subject message subject
+ * @param subscriber message subscriber
+ */
+ void removeSubscriber(MessageSubject subject, MessageSubscriber subscriber);
+
+ /**
+ * Returns the set of subscribers for the specified message subject.
+ *
+ * @param subject message subject
+ * @return set of message subscribers
+ */
+ Set<MessageSubscriber> getSubscribers(MessageSubject subject);
+
+}