rfc-7944

Diameter Routing Message Priority

S. Donovan
date2016-08 streamIETF areaops wgdime statusPROPOSED STANDARD pages18 canonicalhttps://www.rfc-editor.org/rfc/rfc7944 doi10.17487/RFC7944
When making routing and resource allocation decisions, Diameter nodes currently have no generic mechanism to determine the relative priority of Diameter messages. This document addresses this by defining a mechanism to allow Diameter endpoints to indicate the relative priority of Diameter transactions. With this information, Diameter nodes can factor that priority into routing, resource allocation, and overload abatement decisions.

Extracted elements (22)

design-rationale §4

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.

diameter

design-rationale §6

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.

diameter

design-rationale §10

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.

diameter

design-rationale §8

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

interoperability-note §8

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.

diameter

interoperability-note §1.1

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.

diameter

interoperability-note §1.1

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

normative-requirement §8 MAY

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

normative-requirement §12.3 MUST

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, security

normative-requirement §8 MUST

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

normative-requirement §12.3 MUST

Diameter nodes MUST strip DRMP AVPs from messages received from peers that are not trusted for DRMP purposes.

diameter, security

normative-requirement §8 SHOULD

Diameter nodes SHOULD use PRIORITY_10 as the default priority for transactions without an explicit DRMP AVP, as it represents midrange 'normal' traffic.

diameter

normative-requirement §8 MUST

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.

diameter

normative-requirement §8 SHOULD

When available, Diameter nodes SHOULD use routing priority information included in the DRMP AVP when making Diameter overload throttling decisions.

diameter

normative-requirement §8 SHOULD

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.

diameter

normative-requirement §8 SHOULD

When routing priority information is available, Diameter nodes SHOULD include routing message priority in the DRMP AVP in all Diameter request messages.

diameter

protocol-element §9.1

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.

diameter

registry §11.1

DRMP AVP code 301 is allocated from the 'AVP Codes' subregistry of the 'Authentication, Authorization, and Accounting (AAA) Parameters' IANA registry.

diameter, registry

security-consideration §12.1

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.

diameter, security

security-consideration §12.2

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.

diameter, security

security-consideration §12.3

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.

diameter, security

wire-format §9.2

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).

diameter