diff --git a/core/api/src/main/java/org/onlab/onos/net/statistic/Load.java b/core/api/src/main/java/org/onlab/onos/net/statistic/Load.java
new file mode 100644
index 0000000..534b10c
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/statistic/Load.java
@@ -0,0 +1,20 @@
+package org.onlab.onos.net.statistic;
+
+/**
+ * Simple data repository for link load information.
+ */
+public interface Load {
+
+    /**
+     * Obtain the current observed rate on a link.
+     * @return long value
+     */
+    long rate();
+
+    /**
+     * Obtain the latest counter viewed on that link.
+     * @return long value
+     */
+    long latest();
+
+}
diff --git a/core/api/src/main/java/org/onlab/onos/net/statistic/StatisticService.java b/core/api/src/main/java/org/onlab/onos/net/statistic/StatisticService.java
new file mode 100644
index 0000000..b1809d7
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/statistic/StatisticService.java
@@ -0,0 +1,51 @@
+package org.onlab.onos.net.statistic;
+
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.Link;
+import org.onlab.onos.net.Path;
+import org.onlab.onos.net.flow.FlowRule;
+
+/**
+ * Service for obtaining statistic information about link in the system.
+ * Statistics are obtained from the FlowRuleService in order to minimize the
+ * amount of hammering occuring at the dataplane.
+ */
+public interface StatisticService {
+
+    /**
+     * Obtain the load for a the ingress to the given link.
+     * @param link the link to query.
+     * @return a {@link org.onlab.onos.net.statistic.Load Load}
+     */
+    Load load(Link link);
+
+    /**
+     * Obtain the load for the given port.
+     * @param connectPoint the port to query
+     * @return a {@link org.onlab.onos.net.statistic.Load}
+     */
+    Load load(ConnectPoint connectPoint);
+
+    /**
+     * Find the most loaded link along a path.
+     * @param path the path to search in
+     * @return the most loaded {@link org.onlab.onos.net.Link}.
+     */
+    Link max(Path path);
+
+    /**
+     * Find the least loaded link along a path.
+     * @param path the path to search in
+     * @return the least loaded {@link org.onlab.onos.net.Link}.
+     */
+    Link min(Path path);
+
+    /**
+     * Returns the highest hitter (a flow rule) of for a given port, ie. the
+     * flow rule which is generating the most load.
+     * @param connectPoint the port
+     * @return the flow rule
+     */
+    FlowRule highestHitter(ConnectPoint connectPoint);
+
+}
diff --git a/core/api/src/main/java/org/onlab/onos/net/statistic/StatisticStore.java b/core/api/src/main/java/org/onlab/onos/net/statistic/StatisticStore.java
new file mode 100644
index 0000000..d0d625c
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/statistic/StatisticStore.java
@@ -0,0 +1,45 @@
+package org.onlab.onos.net.statistic;
+
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.flow.FlowEntry;
+import org.onlab.onos.net.flow.FlowRule;
+
+import java.util.Set;
+
+/**
+ * Store to house the computed statistics.
+ */
+public interface StatisticStore {
+
+    /**
+     * Lay the foundation for receiving flow stats for this rule.
+     * @param rule a {@link org.onlab.onos.net.flow.FlowRule}
+     */
+    void prepareForStatistics(FlowRule rule);
+
+    /**
+     * Remove entries associated with this rule.
+     a @param rule {@link org.onlab.onos.net.flow.FlowRule}
+     */
+    void removeFromStatistics(FlowRule rule);
+
+    /**
+     * Adds a stats observation for a flow rule.
+     * @param rule a {@link org.onlab.onos.net.flow.FlowEntry}
+     */
+    void addOrUpdateStatistic(FlowEntry rule);
+
+    /**
+     * Fetches the current observed stats values.
+     * @param connectPoint the port to fetch information for
+     * @return set of current flow rules
+     */
+    Set<FlowEntry> getCurrentStatistic(ConnectPoint connectPoint);
+
+    /**
+     * Fetches the current observed stats values.
+     * @param connectPoint the port to fetch information for
+     * @return set of current values
+     */
+    Set<FlowEntry> getPreviousStatistic(ConnectPoint connectPoint);
+}
diff --git a/core/api/src/main/java/org/onlab/onos/net/statistic/package-info.java b/core/api/src/main/java/org/onlab/onos/net/statistic/package-info.java
new file mode 100644
index 0000000..445a0f3
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/statistic/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Service for looking up statistics on links.
+ */
+package org.onlab.onos.net.statistic;
\ No newline at end of file
