diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/RouteStore.java b/incubator/api/src/main/java/org/onosproject/incubator/net/routing/RouteStore.java
new file mode 100644
index 0000000..1905d1b
--- /dev/null
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/routing/RouteStore.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * 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.incubator.net.routing;
+
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.MacAddress;
+import org.onosproject.store.Store;
+
+import java.util.Collection;
+import java.util.Set;
+
+/**
+ * Unicast route store.
+ */
+public interface RouteStore extends Store<RouteEvent, RouteStoreDelegate> {
+
+    /**
+     * Adds or updates the given route in the store.
+     *
+     * @param route route to add or update
+     */
+    void updateRoute(Route route);
+
+    /**
+     * Removes the given route from the store.
+     *
+     * @param route route to remove
+     */
+    void removeRoute(Route route);
+
+    /**
+     * Returns the IDs for all route tables in the store.
+     *
+     * @return route table IDs
+     */
+    Set<RouteTableId> getRouteTables();
+
+    /**
+     * Returns the routes for a particular route table.
+     *
+     * @param table route table
+     * @return collection of route in the table
+     */
+    Collection<Route> getRoutes(RouteTableId table);
+
+    /**
+     * Performs a longest prefix match with the given IP address.
+     *
+     * @param ip IP to look up
+     * @return longest prefix match route
+     */
+    Route longestPrefixMatch(IpAddress ip);
+
+    /**
+     * Updates a next hop IP and MAC in the store.
+     *
+     * @param ip IP address
+     * @param mac MAC address
+     */
+    void updateNextHop(IpAddress ip, MacAddress mac);
+
+    /**
+     * Removes a next hop IP and MAC from the store.
+     *
+     * @param ip IP address
+     * @param mac MAC address
+     */
+    void removeNextHop(IpAddress ip, MacAddress mac);
+
+    /**
+     * Returns the MAC address of the given next hop.
+     *
+     * @param ip next hop IP
+     * @return MAC address
+     */
+    MacAddress getNextHop(IpAddress ip);
+}
