diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroup.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroup.java
new file mode 100644
index 0000000..f647b57
--- /dev/null
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroup.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2015 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.vtnrsc;
+
+import java.util.List;
+
+/**
+ * Abstraction of an entity providing Port Pair Group information.
+ * A port pair group consists of one or more port pairs.
+ */
+public interface PortPairGroup {
+
+    /**
+     * Returns the ID of this port pair group.
+     *
+     * @return the port pair group id
+     */
+    PortPairGroupId portPairGroupId();
+
+    /**
+     * Returns the tenant id of this port pair group.
+     *
+     * @return the tenant id
+     */
+    TenantId tenantId();
+
+    /**
+     * Returns the name of this port pair group.
+     *
+     * @return name of port pair group
+     */
+    String name();
+
+    /**
+     * Returns the description of this port pair group.
+     *
+     * @return description of port pair group
+     */
+    String description();
+
+    /**
+     * Returns the list of port pairs associated with this port pair group.
+     *
+     * @return list of port pairs
+     */
+    List<PortPairId> portPairs();
+
+    /**
+     * Returns whether this port pair group is an exact match to the
+     * port pair group given in the argument.
+     * <p>
+     * Exact match means the Port pairs match with the given port pair group.
+     * It does not consider the port pair group id, name and description.
+     * </p>
+     * @param portPairGroup other port pair group to match against
+     * @return true if the port pairs are an exact match, otherwise false
+     */
+    boolean exactMatch(PortPairGroup portPairGroup);
+
+    /**
+     * A port pair group builder..
+     */
+    interface Builder {
+
+        /**
+         * Assigns the port pair group id to this object.
+         *
+         * @param portPairGroupId the port pair group id
+         * @return this the builder object
+         */
+        Builder setId(PortPairGroupId portPairGroupId);
+
+        /**
+         * Assigns tenant id to this object.
+         *
+         * @param tenantId tenant id of port pair group
+         * @return this the builder object
+         */
+        Builder setTenantId(TenantId tenantId);
+
+        /**
+         * Assigns the name to this object.
+         *
+         * @param name name of the port pair group
+         * @return this the builder object
+         */
+        Builder setName(String name);
+
+        /**
+         * Assigns the description to this object.
+         *
+         * @param description description of the port pair group
+         * @return this the builder object
+         */
+        Builder setDescription(String description);
+
+        /**
+         * Assigns the port pairs associated with the port pair group
+         * to this object.
+         *
+         * @param portPairs list of port pairs
+         * @return this the builder object
+         */
+        Builder setPortPairs(List<PortPairId> portPairs);
+
+        /**
+         * Builds a port pair group object.
+         *
+         * @return a port pair group object.
+         */
+        PortPairGroup build();
+    }
+}
