diff --git a/core/api/src/main/java/org/onosproject/net/neighbour/NeighbourMessageContext.java b/core/api/src/main/java/org/onosproject/net/neighbour/NeighbourMessageContext.java
new file mode 100644
index 0000000..aef37bb
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/neighbour/NeighbourMessageContext.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2016-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.net.neighbour;
+
+import com.google.common.annotations.Beta;
+import org.onlab.packet.Ethernet;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.VlanId;
+import org.onosproject.net.intf.Interface;
+import org.onosproject.net.ConnectPoint;
+
+/**
+ * Context of an incoming neighbor message (e.g. ARP, NDP).
+ *
+ * <p>This includes information about the message accessible through a
+ * protocol-agnostic interface, as well as mechanisms to perform an action in
+ * response to the incoming message.</p>
+ */
+@Beta
+public interface NeighbourMessageContext {
+    /**
+     * Gets the port where the packet came in to the network.
+     *
+     * @return connect point
+     */
+    ConnectPoint inPort();
+
+    /**
+     * Gets the full parsed representation of the packet.
+     *
+     * @return ethernet header
+     */
+    Ethernet packet();
+
+    /**
+     * Gets the protocol of the packet.
+     *
+     * @return protocol
+     */
+    NeighbourProtocol protocol();
+
+    /**
+     * Gets the message type of the packet.
+     *
+     * @return message type
+     */
+    NeighbourMessageType type();
+
+    /**
+     * Gets the vlan of the packet, if any.
+     *
+     * @return vlan
+     */
+    VlanId vlan();
+
+    /**
+     * Gets the source MAC address of the message.
+     *
+     * @return source MAC address
+     */
+    MacAddress srcMac();
+
+    /**
+     * Gets the destination MAC address of the message.
+     * <p>
+     * Only valid for reply packets, will be null for request packets.
+     * </p>
+     *
+     * @return target MAC address
+     */
+    MacAddress dstMac();
+
+    /**
+     * Gets the target IP address of the message.
+     *
+     * @return target IP address
+     */
+    IpAddress target();
+
+    /**
+     * Gets the source IP address of the message.
+     *
+     * @return source IP address
+     */
+    IpAddress sender();
+
+    /**
+     * Forwards the message to a given output port.
+     *
+     * @param outPort output port
+     */
+    void forward(ConnectPoint outPort);
+
+    /**
+     * Forwards the message to a given interface.
+     * <p>
+     * The message will be modified to fit the parameters of the outgoing
+     * interface. For example, if the interface has a VLAN configured, the
+     * outgoing packet will have that VLAN tag added.
+     * </p>
+     * @param outIntf output interface
+     */
+    void forward(Interface outIntf);
+
+    /**
+     * Replies to the request message with a given MAC address.
+     *
+     * @param targetMac target MAC address
+     */
+    void reply(MacAddress targetMac);
+
+    /**
+     * Floods the incoming message out all ports except the input port.
+     */
+    void flood();
+
+    /**
+     * Drops the incoming message.
+     */
+    void drop();
+}
