Identify the right relationship
Call-ID groups signaling associated with a call context, but a dialog is identified by Call-ID plus the local and remote tags. Forked responses can share Call-ID while creating different dialogs. A PBX acting as a B2BUA can use unrelated Call-IDs on its two legs. The Via branch parameter participates in transaction identification. CSeq contains a number and method, helping sequence requests within a dialog and distinguish the request answered by a response. Looking only at a repeated Call-ID hides those distinctions.
Retransmission or new request?
Compare method, CSeq, branch and message content. Repeated UDP packets can be normal retransmissions when a response is missing. A new in-dialog request has its own transaction even though its Call-ID and tags remain associated with the same dialog. ACK and CANCEL have special relationships to INVITE, so do not apply a simplistic rule that every method must increment CSeq. For a transfer, retain the original dialog and identify any newly created call legs. Record the PBX's internal correlation identifier when available; do not invent an end-to-end linkage from timing alone.
Spot a routing loop
Max-Forwards limits how many forwarding hops a request may traverse. A proxy decrements it as it forwards, and exhaustion can produce 483 Too Many Hops. Raising the initial value is rarely an appropriate fix for a loop. Compare repeated routing decisions, destination addresses and Route headers. Two systems that both treat the same number as belonging to the other can loop a call even when DNS and authentication work. Resolve the ownership decision, then retest the intended route and a deliberately unmatched destination.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.