I imagine conceptually that every service in the chain would look at the request for an existing correlationId (somewhere, i.e. headers) and if not present, would then create one, save it the request, and pass it through (somewhere, i.e. headers) to calls to other downstream services. Who then repeat the same logic.
The correlationId is then somehow copied to the logger of each service for inclusion in logs.