Diameter协议重试场景下End-to-End标识符复用合规性问询
Great question! Let's break this down clearly:
Yes, retried Diameter messages can absolutely reuse the same End-to-End (E2E) identifier as the original message—even though RFC 3588 doesn't explicitly call out this specific scenario in its text.
Here's why this makes sense, and how it aligns with the intent of the E2E identifier:
- The core purpose of the E2E ID is to uniquely identify a logical request across the entire Diameter network. When you're retrying a message (usually because you didn't get a response within the timeout window), this is still the same logical request—just a retransmission attempt. Reusing the E2E ID lets receiving nodes recognize this as a retry, not a brand-new, unrelated request.
- While RFC 3588 doesn't spell out retry behavior directly, it defines the E2E ID as a value generated by the originator to track a message through the network. Reusing it for retries fits perfectly with this definition, since you're still tracking the same underlying request.
A key thing to note alongside this: you should always change the Hop-by-Hop (HbH) identifier for each retry. The HbH ID is meant to track individual transmission attempts along a specific path, so updating it ensures intermediate nodes handle the retry as a fresh delivery attempt, while the E2E ID keeps it linked to the original request.
In practical terms, nearly all production Diameter implementations follow this pattern. Reusing the E2E ID prevents the receiving side from accidentally processing the retry as a new request—something that could cause issues like duplicate session creation or redundant authentication checks.
内容的提问来源于stack exchange,提问作者Anand Sunil

