diff --git a/lib/instana/instrumentation/rack.rb b/lib/instana/instrumentation/rack.rb
index <HASH>..<HASH> 100644
--- a/lib/instana/instrumentation/rack.rb
+++ b/lib/instana/instrumentation/rack.rb
@@ -5,11 +5,19 @@ module Instana
     end
 
     def call(env)
-      req = ::Rack::Request.new(env)
       kvs = { :http => {} }
-      kvs[:http][:method] = req.request_method
-      kvs[:http][:url] = ::CGI.unescape(req.path)
-      ::Instana.tracer.log_start_or_continue(:rack)
+      kvs[:http][:method] = env['REQUEST_METHOD']
+      kvs[:http][:url] = ::CGI.unescape(env['PATH_INFO'])
+
+      # Check incoming context
+      incoming_context = {}
+      if env.key?('HTTP_X_INSTANA_T')
+        incoming_context[:trace_id]  = env['HTTP_X_INSTANA_T']
+        incoming_context[:parent_id] = env['HTTP_X_INSTANA_S'] if env.key?('HTTP_X_INSTANA_S')
+        incoming_context[:level]     = env['HTTP_X_INSTANA_L'] if env.key?('HTTP_X_INSTANA_L')
+      end
+
+      ::Instana.tracer.log_start_or_continue(:rack, {}, incoming_context)
 
       status, headers, response = @app.call(env)
Pickup incoming context from HTTP headers.