A method (500, 600A-600B) of chaining services for a data packet flow in a service provider network (100, 200), the method (500, 600A-600B) comprising: determining a service chaining policy associated with the data packet flow; determining a Service Path Identifier, SPID, associated with the service chaining policy; if the service chaining policy involves two or more service nodes to be traversed by the data packet flow for obtaining services in a sequential order, determining Endpoint Identifiers, EIDs, and Routing Locators, RLOCs, of the one or more service nodes using the SPID of the service chaining policy; and performing a data exchange process with the two or more service nodes using encapsulation of data packets based on the EIDs and RLOCs of the service nodes to sequentially route the data packet flow to each of the two or more service nodes according to the service chaining policy identified by the SPID; wherein the data packet flow is received at an ingress node of the service provider network (100, 200), and further wherein the data packet flow is emitted from an egress node of the service provider network (100, 200) after obtaining services at the two or more service nodes; characterized by the dta exchange processs being initiated by the ingress node and oscillates between the ingress node and the egress node based on locations of the two or more service nodes relative to the ingress and egress nodes (202, 204) of the service provider network (100, 200), each of the two or more service nodes encapsulating serviced data packets and forwarding the encapsulated data packets to the nearest one of the ingress and egress nodes, and the ingress and egress nodes determining if additional services are required according to the service chaining policy and an origin of the data packets, and if so encapsulating the data packets and forwarding them to the next service node in the service chaining policy. determining a service chaining policy associated with the data packet flow; determining a Service Path Identifier, SPID, associated with the service chaining policy; if the service chaining policy involves two or more service nodes to be traversed by the data packet flow for obtaining services in a sequential order, determining Endpoint Identifiers, EIDs, and Routing Locators, RLOCs, of the one or more service nodes using the SPID of the service chaining policy; and performing a data exchange process with the two or more service nodes using encapsulation of data packets based on the EIDs and RLOCs of the service nodes to sequentially route the data packet flow to each of the two or more service nodes according to the service chaining policy identified by the SPID; wherein the data packet flow is received at an ingress node of the service provider network (100, 200), and further wherein the data packet flow is emitted from an egress node of the service provider network (100, 200) after obtaining services at the two or more service nodes; characterized by the dta exchange processs being initiated by the ingress node and oscillates between the ingress node and the egress node based on locations of the two or more service nodes relative to the ingress and egress nodes (202, 204) of the service provider network (100, 200), each of the two or more service nodes encapsulating serviced data packets and forwarding the encapsulated data packets to the nearest one of the ingress and egress nodes, and the ingress and egress nodes determining if additional services are required according to the service chaining policy and an origin of the data packets, and if so encapsulating the data packets and forwarding them to the next service node in the service chaining policy.