Diameter Routing Message Priority
Extracted elements (22)
A generic priority AVP (rather than relying on application-specific priority AVPs) was chosen to avoid requiring Diameter Agents to understand all applications and perform application-specific parsing to determine message priority, which was considered an unacceptable level of complexity for routing elements.
Answer messages inherit priority from the associated request by default (via saved transaction state or the Proxy-Info mechanism), but can carry an explicit DRMP AVP when the answer requires a different priority than the request.
Higher-priority messages should represent a relatively small portion of normal traffic to prevent starvation of lower-priority messages, which would otherwise be retried and generate more total traffic than without DRMP; however, blocking of lower-priority messages is explicitly required in scenarios like first responder signaling.
PRIORITY_10 is recommended as the default priority because it is a midrange value representing 'normal' traffic, allowing both higher- and lower-priority designations for specific application use cases while providing consistent handling of non-upgraded clients.
Diameter Agents MAY insert DRMP AVPs into messages from endpoints that do not support the DRMP mechanism, enabling priority-aware routing even for non-upgraded nodes.
For DRMP to work correctly across a Diameter network supporting multiple applications, all applications within a single administrative domain must define priority values in a consistent and coordinated fashion using the same priority scale.
When messages cross Diameter administrative domain boundaries, care must be taken to strip or modify DRMP values; differing priority definitions between domains could allow foreign-domain messages to gain unwarranted preferential treatment.
Diameter Agents MAY use routing priority information included in the DRMP AVP when relaying request and answer messages, including for route selection and message ordering.
Diameter nodes MUST give operators the ability to select which peers are trusted to deliver DRMP AVPs and whether those peers are trusted to forward DRMP AVPs from non-adjacent nodes.
Diameter nodes MUST have a default priority to apply to transactions that do not have an explicit priority set in the DRMP AVP, and MUST support the ability to modify this default through local configuration.
Diameter nodes MUST strip DRMP AVPs from messages received from peers that are not trusted for DRMP purposes.
Diameter nodes SHOULD use PRIORITY_10 as the default priority for transactions without an explicit DRMP AVP, as it represents midrange 'normal' traffic.
For all integers x,y in [0,15], PRIORITY_<x> is treated as lower priority than PRIORITY_<y> when y<x, making PRIORITY_0 the highest priority.
When available, Diameter nodes SHOULD use routing priority information included in the DRMP AVP when making Diameter overload throttling decisions.
When determining the priority to apply to answer messages, Diameter nodes SHOULD use the DRMP AVP in the answer if present; otherwise SHOULD use the priority from the associated request message.
When routing priority information is available, Diameter nodes SHOULD include routing message priority in the DRMP AVP in all Diameter request messages.
The DRMP AVP (AVP code 301) is of type Enumerated and carries the routing message priority for a Diameter transaction. It defines 16 priority levels (PRIORITY_0 through PRIORITY_15), where PRIORITY_0 is highest and PRIORITY_15 is lowest.
DRMP AVP code 301 is allocated from the 'AVP Codes' subregistry of the 'Authentication, Authorization, and Accounting (AAA) Parameters' IANA registry.
A malicious or compromised Diameter node can insert artificially high DRMP priority values to gain preferential treatment (reduced throttling probability) or low values to degrade another node's service. Because Diameter lacks end-to-end integrity protection, any agent in the path can modify or insert DRMP AVPs.
DRMP does not introduce direct denial-of-service attack vectors but enables a misbehaving node to gain unwarranted preferential treatment or cause degraded service for other nodes when a rogue agent modifies priority values.
The lack of end-to-end integrity in Diameter creates a transitive-trust requirement: nodes must trust that each adjacent peer properly validates DRMP from its own peers, extending potentially through long chains. If future end-to-end Diameter security is applied, agent modification of DRMP AVPs could violate integrity protection.
The DRMP AVP has code 301, type Enumerated, and MUST NOT have the Vendor-Specific (V) flag set. It carries integer values 0–15 corresponding to PRIORITY_0 (highest) through PRIORITY_15 (lowest).