Sketched out packet service and related abstractions.
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java
new file mode 100644
index 0000000..5debf1b
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java
@@ -0,0 +1,37 @@
+package org.onlab.onos.net.packet;
+
+/**
+ * Service for intercepting data plane packets and for emitting synthetic
+ * outbound packets.
+ */
+public interface PacketService {
+
+    // TODO: ponder better ordering scheme that does not require absolute numbers
+
+    /**
+     * Adds the specified processor to the list of packet processors.
+     * It will be added into the list in the order of priority. The higher
+     * numbers will be processing the packets after the lower numbers.
+     *
+     * @param processor processor to be added
+     * @param priority  priority in the reverse natural order
+     * @throws java.lang.IllegalArgumentException if a processor with the
+     *                                            given priority already exists
+     */
+    void addProcessor(PacketProcessor processor, long priority);
+
+    /**
+     * Removes the specified processor from the processing pipeline.
+     *
+     * @param processor packet processor
+     */
+    void removeProcessor(PacketProcessor processor);
+
+    /**
+     * Emits the specified outbound packet onto the network.
+     *
+     * @param packet outbound packet
+     */
+    void emit(OutboundPacket packet);
+
+}