diff --git a/apps/fpcagent/BUCK b/apps/fpcagent/BUCK
index 89f208a..e72614c 100644
--- a/apps/fpcagent/BUCK
+++ b/apps/fpcagent/BUCK
@@ -11,6 +11,7 @@
     '//apps/restconf/utils:onos-apps-restconf-utils',
     '//apps/config:onos-apps-config',
     '//apps/restconf/api:onos-apps-restconf-api',
+    '//apps/route-service/api:onos-apps-route-service-api',
     '//fpcagent/models/fpcagent:onos-fpcagent-models-fpcagent',
     '//models/common:onos-models-common',
     '//lib:javax.ws.rs-api',
@@ -52,6 +53,7 @@
     'org.onosproject.config',
     'org.onosproject.restconf',
     'org.onosproject.protocols.restconfserver',
+    'org.onosproject.segmentrouting',
 ]
 
 osgi_jar(
@@ -71,73 +73,73 @@
 )
 
 remote_jar (
-  name = 'json',
-  out = 'json-20090211.jar',
-  url = 'mvn:org.json:json:jar:20090211',
-  sha1 = 'c183aa3a2a6250293808bba12262c8920ce5a51c',
-  maven_coords = 'org.json:json:jar:NON-OSGI:20090211',
-  visibility = [ 'PUBLIC' ],
+    name = 'json',
+    out = 'json-20090211.jar',
+    url = 'mvn:org.json:json:jar:20090211',
+    sha1 = 'c183aa3a2a6250293808bba12262c8920ce5a51c',
+    maven_coords = 'org.json:json:jar:NON-OSGI:20090211',
+    visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
-  name = 'zeromq',
-  out = 'jeromq-0.3.5.jar',
-  url = 'mvn:org.zeromq:jeromq:jar:0.3.5',
-  sha1 = '39a79082570d114bb5433762e836e4dd9c38b03d',
-  maven_coords = 'org.zeromq:jeromq:0.3.5',
-  visibility = [ 'PUBLIC' ],
+    name = 'zeromq',
+    out = 'jeromq-0.3.5.jar',
+    url = 'mvn:org.zeromq:jeromq:jar:0.3.5',
+    sha1 = '39a79082570d114bb5433762e836e4dd9c38b03d',
+    maven_coords = 'org.zeromq:jeromq:0.3.5',
+    visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
-  name = 'javax.servlet-api-custom',
-  out = 'javax.servlet-api-3.0.1.jar',
-  url = 'mvn:javax.servlet:javax.servlet-api:jar:3.0.1',
-  sha1 = '6bf0ebb7efd993e222fc1112377b5e92a13b38dd',
-  maven_coords = 'javax.servlet:javax.servlet-api:3.0.1',
-  visibility = [ 'PUBLIC' ],
+    name = 'javax.servlet-api-custom',
+    out = 'javax.servlet-api-3.0.1.jar',
+    url = 'mvn:javax.servlet:javax.servlet-api:jar:3.0.1',
+    sha1 = '6bf0ebb7efd993e222fc1112377b5e92a13b38dd',
+    maven_coords = 'javax.servlet:javax.servlet-api:3.0.1',
+    visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
-  name = 'jetty-util-custom',
-  out = 'jetty-util-8.1.19.v20160209.jar',
-  url = 'mvn:org.eclipse.jetty:jetty-util:jar:8.1.19.v20160209',
-  sha1 = 'c88071e72998e6355d719d35ff001d9c327a971a',
-  maven_coords = 'org.eclipse.jetty:jetty-util:8.1.19.v20160209',
-  visibility = [ 'PUBLIC' ],
+    name = 'jetty-util-custom',
+    out = 'jetty-util-8.1.19.v20160209.jar',
+    url = 'mvn:org.eclipse.jetty:jetty-util:jar:8.1.19.v20160209',
+    sha1 = 'c88071e72998e6355d719d35ff001d9c327a971a',
+    maven_coords = 'org.eclipse.jetty:jetty-util:8.1.19.v20160209',
+    visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
-  name = 'jetty-server-custom',
-  out = 'jetty-server-8.1.19.v20160209.jar',
-  url = 'mvn:org.eclipse.jetty:jetty-server:jar:8.1.19.v20160209',
-  sha1 = 'e4100696c994e26148fd0b62c8a866a606be1540',
-  maven_coords = 'org.eclipse.jetty:jetty-server:8.1.19.v20160209',
-  visibility = [ 'PUBLIC' ],
+    name = 'jetty-server-custom',
+    out = 'jetty-server-8.1.19.v20160209.jar',
+    url = 'mvn:org.eclipse.jetty:jetty-server:jar:8.1.19.v20160209',
+    sha1 = 'e4100696c994e26148fd0b62c8a866a606be1540',
+    maven_coords = 'org.eclipse.jetty:jetty-server:8.1.19.v20160209',
+    visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
-  name = 'jetty-servlet-custom',
-  out = 'jetty-servlet-8.1.19.v20160209.jar',
-  url = 'mvn:org.eclipse.jetty:jetty-servlet:jar:8.1.19.v20160209',
-  sha1 = '6872c3fc289de8f26a43b101741b33af36590cb4',
-  maven_coords = 'org.eclipse.jetty:jetty-servlet:8.1.19.v20160209',
-  visibility = [ 'PUBLIC' ],
+    name = 'jetty-servlet-custom',
+    out = 'jetty-servlet-8.1.19.v20160209.jar',
+    url = 'mvn:org.eclipse.jetty:jetty-servlet:jar:8.1.19.v20160209',
+    sha1 = '6872c3fc289de8f26a43b101741b33af36590cb4',
+    maven_coords = 'org.eclipse.jetty:jetty-servlet:8.1.19.v20160209',
+    visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
-  name = 'jetty-http-custom',
-  out = 'jetty-http-8.1.19.v20160209.jar',
-  url = 'mvn:org.eclipse.jetty:jetty-http:jar:8.1.19.v20160209',
-  sha1 = 'f08c189eab9a45810644ec35440f1a0c8aa0c4e0',
-  maven_coords = 'org.eclipse.jetty:jetty-http:8.1.19.v20160209',
-  visibility = [ 'PUBLIC' ],
+    name = 'jetty-http-custom',
+    out = 'jetty-http-8.1.19.v20160209.jar',
+    url = 'mvn:org.eclipse.jetty:jetty-http:jar:8.1.19.v20160209',
+    sha1 = 'f08c189eab9a45810644ec35440f1a0c8aa0c4e0',
+    maven_coords = 'org.eclipse.jetty:jetty-http:8.1.19.v20160209',
+    visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
-  name = 'jetty-io-custom',
-  out = 'jetty-io-8.1.19.v20160209.jar',
-  url = 'mvn:org.eclipse.jetty:jetty-io:jar:8.1.19.v20160209',
-  sha1 = 'c35e77e419169b4c8ad5fa3429865f2c8541e972',
-  maven_coords = 'org.eclipse.jetty:jetty-io:8.1.19.v20160209',
-  visibility = [ 'PUBLIC' ],
+    name = 'jetty-io-custom',
+    out = 'jetty-io-8.1.19.v20160209.jar',
+    url = 'mvn:org.eclipse.jetty:jetty-io:jar:8.1.19.v20160209',
+    sha1 = 'c35e77e419169b4c8ad5fa3429865f2c8541e972',
+    maven_coords = 'org.eclipse.jetty:jetty-io:8.1.19.v20160209',
+    visibility = [ 'PUBLIC' ],
 )
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcManager.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcManager.java
index ac82649..0634472 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcManager.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/FpcManager.java
@@ -46,7 +46,9 @@
 import org.onosproject.net.config.NetworkConfigService;
 import org.onosproject.net.config.basics.SubjectFactories;
 import org.onosproject.net.flow.FlowRuleService;
+import org.onosproject.net.intf.InterfaceAdminService;
 import org.onosproject.restconf.api.RestconfService;
+import org.onosproject.routeservice.RouteStore;
 import org.onosproject.yang.model.ModelConverter;
 import org.onosproject.yang.model.RpcRegistry;
 import org.slf4j.Logger;
@@ -104,6 +106,12 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     private FlowRuleService flowRuleService;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    private RouteStore routeStore;
+
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    private InterfaceAdminService interfaceAdminService;
+
     /* Variables */
     private IdGenerator notificationIds;
     private FpcConfig fpcConfig;
@@ -133,7 +141,8 @@
         ParseStream.createInstance().open();
         NbEventWorkerManager.createInstance(20).open();
         DpnNgicCommunicator.createInstance();
-        DpnP4Communicator.createInstance(applicationId, flowRuleService);
+        DpnP4Communicator.createInstance(applicationId, flowRuleService,
+                                         routeStore, interfaceAdminService);
 
         log.info("FPC Service Started");
     }
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnP4Communicator.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnP4Communicator.java
index dbaa7ac..9f8bad6 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnP4Communicator.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/protocols/DpnP4Communicator.java
@@ -16,10 +16,13 @@
 
 package org.onosproject.fpcagent.protocols;
 
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import org.onlab.packet.Ip4Address;
+import org.onlab.packet.VlanId;
 import org.onosproject.core.ApplicationId;
+import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.flow.DefaultFlowRule;
 import org.onosproject.net.flow.DefaultTrafficSelector;
@@ -28,12 +31,17 @@
 import org.onosproject.net.flow.FlowRuleOperations;
 import org.onosproject.net.flow.FlowRuleService;
 import org.onosproject.net.flow.criteria.PiCriterion;
+import org.onosproject.net.host.InterfaceIpAddress;
+import org.onosproject.net.intf.Interface;
+import org.onosproject.net.intf.InterfaceAdminService;
 import org.onosproject.net.pi.model.PiActionId;
 import org.onosproject.net.pi.model.PiActionParamId;
 import org.onosproject.net.pi.model.PiMatchFieldId;
 import org.onosproject.net.pi.model.PiTableId;
 import org.onosproject.net.pi.runtime.PiAction;
 import org.onosproject.net.pi.runtime.PiActionParam;
+import org.onosproject.routeservice.Route;
+import org.onosproject.routeservice.RouteStore;
 import org.onosproject.yang.gen.v1.fpc.rev20150105.fpc.P4DpnControlProtocol;
 import org.onosproject.yang.gen.v1.ietfdmmfpcagent.rev20160803.ietfdmmfpcagent.ClientIdentifier;
 import org.onosproject.yang.gen.v1.ietfdmmfpcagent.rev20160803.ietfdmmfpcagent.OpIdentifier;
@@ -42,6 +50,8 @@
 
 import java.math.BigInteger;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentMap;
@@ -94,20 +104,29 @@
 
     private static DpnP4Communicator _instance;
 
-    private ApplicationId appId;
+    private final ApplicationId appId;
     private DeviceId deviceId;
     private ClientIdentifier clientId;
-    private FlowRuleService flowRuleService;
+    private final FlowRuleService flowRuleService;
+    private final RouteStore routeStore;
+    private final InterfaceAdminService interfaceService;
 
-    private DpnP4Communicator(ApplicationId appId, FlowRuleService flowRuleService) {
+    private DpnP4Communicator(ApplicationId appId,
+                              FlowRuleService flowRuleService,
+                              RouteStore routeStore,
+                              InterfaceAdminService interfaceService) {
         this.appId = checkNotNull(appId);
         this.flowRuleService = checkNotNull(flowRuleService);
+        this.routeStore = routeStore;
+        this.interfaceService = interfaceService;
         this.deviceId = null;
     }
 
-    public static DpnP4Communicator createInstance(ApplicationId appId, FlowRuleService flowRuleService) {
+    public static DpnP4Communicator createInstance(
+            ApplicationId appId, FlowRuleService flowRuleService,
+            RouteStore routeStore, InterfaceAdminService interfaceService) {
         if (_instance == null) {
-            _instance = new DpnP4Communicator(appId, flowRuleService);
+            _instance = new DpnP4Communicator(appId, flowRuleService, routeStore, interfaceService);
         }
         return _instance;
     }
@@ -206,6 +225,19 @@
                     .add(dlSessLookupRule(ueAddr, s1UEnodebTeid,
                             s1UEnodebIpv4, s1USgwIpv4));
 
+            // Segment routing configuration
+            Route route = new Route(Route.Source.STATIC, ueAddr.toIpPrefix(), s1UEnodebIpv4);
+            routeStore.updateRoute(route);
+
+            List<InterfaceIpAddress> ifaceIpAddrList = Lists.newArrayList();
+            ifaceIpAddrList.add(InterfaceIpAddress.valueOf(s1USgwIpv4.toString()));
+            Interface intf = new Interface(
+                    "s1u-sgw",
+                    ConnectPoint.deviceConnectPoint(deviceId.toString() + "/" + 144),
+                    ifaceIpAddrList, null, VlanId.NONE, VlanId.vlanId((short) 20),
+                    Collections.emptySet(), VlanId.NONE);
+            interfaceService.add(intf);
+
             applySessionRules(sessionId);
 
             sendNotification(
