Trace headers are not changed in between

Hi,
I have a situation where a call from service A -> B -> C -> D is traveling but the trace headers are not changed in Service C. By change I mean, the X-B3-Parentspanid of service C should be the X-B3-Spanid of Service B and X-B3-Spanid of service C should be a new one. That’s exactly what happens for service B, hence it appears in the trace in Jaeger. I’m using istio 1.2.7. The headers are forwarded properly to service D. The trace appears fine till service B. But the trace is broken(changing of IDs) for service C and service D. By the way, service C(has a sidecar) is living in a namespace with a DestinationRule and a Policy which are as follows:

-> apiVersion: networking.istio.io/v1alpha3

kind: DestinationRule
metadata:
name: dr
namespace: ns
uid: 59ddf47e-0159-11ea-9f79-42010a9c000b
spec:
host: ‘*.ns.svc.cluster.local’
trafficPolicy:
tls:
mode: DISABLE

apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
name: po
namespace: ns
spec:
peers:

  • mtls:
    mode: PERMISSIVE

How can I debug this further? Any pointers are really helpful here? Thanks in advance.