Manual Chapter :
iRule support for Diameter
Applies To:
Show VersionsBIG-IP LTM
- 17.1.2, 17.1.1, 17.1.0, 17.0.0, 16.1.5, 16.1.4, 16.1.3, 16.1.2, 16.1.1, 16.1.0
iRule support for Diameter
Overview: iRule support for Diameter
An iRule is a powerful and flexible feature within the BIG-IP local
traffic management system that you can use to manage your network traffic. It allows
operators to implement custom behavior beyond the native capabilities of the BIG-IP
system.
MRF Diameter provides a set of iRule events which are raised during message processing and
routing which allow operators to inspect and edit the Diameter messages. They allow operators to
forward, route, reject or drop messages.
Diameter iRule events
Event |
Description |
---|---|
DIAMETER_INGRESS |
Triggered when the system receive each
DIAMETER message. |
DIAMETER_EGRESS |
Triggered when the system is ready to send
DIAMETER message. |
DIAMETER_RETRANSMISSION |
Triggered when a request message is to be
retransmitted. |
If a client sends a message, DIAMETER_INGRESS is the client-side event and
DIAMETER_EGRESS is the server-side event. If a server sends a message, DIAMETER_INGRESS
is the server-side event and DIAMETER_EGRESS is the client-side event.
An iRule can be attached to the Virtual server and also to the transport-config attached
to a peer.
If there is no transport config attached to the peer, then all events
(DIAMETER_INGRESS/DIAMETER_EGRESS) in the iRule attached to the virtual server execute.
If a peer has a tranport-config attached to it, then the corresponding events must be
present in the iRule in transport-config.
Diameter route_status attribute
After routing has completed, the route status attribute will contain the status (success or failure) of the routing operation.
Diameter iRule events and commands
All the Diameter iRule commands specified in the following link are supported.
Command |
Description |
Valid Diameter Events |
Valid MR Events |
---|---|---|---|
DIAMETER::persist [new-persist-key][bidirection] |
Deletes any persistence entry with the current persist key of this message. |
DIAMETER_INGRESS |
MR_INGRESS [For response messages returns EMPTY string] |
SIP::persist reset |
Deletes any persistence entry with the current persist key of this message. |
DIAMETER_INGRESS DIAMETER_EGRESS |
MR_INGRESS MR_EGRESS MR_FAILED |
DIAMETER::persist use |
Use the current persistence record for routing the message if present. If not present, route the message using the route table. |
DIAMETER_INGRESS |
MR_INGRESS |
DIAMETER::persist bypass |
Route the message using the route table (or iRule command). On completion of routing, add a new persistence record if one does not exist. If an existing persistence record exists, the existing record will not be replaced and the selected route will not be modified. |
DIAMETER_INGRESS |
MR_INGRESS |
DIAMETER::persist replace |
Route the message using the route table (or iRule command). On completion of routing, add a new persistence record if one does not exist. I an existing persistence record exists, replace the persistence record with the route selected. |
DIAMETER_INGRESS |
MR_INGRESS |
DIAMETER::persist ignore |
Route the message using the route table (or iRule command). The results of the routing will not be stored in the persistence table. |
DIAMETER_INGRESS |
MR_INGRESS |
DIAMETER::persist timeout [new-timeout] |
Updates the persistence timeout to the new-timeout value. If a persistence value is added or updated, the provided timeout will be used. |
DIAMETER_INGRESS DIAMETER_EGRESS |
MR_INGRESS MR_EGRESS MR_FAILED |
DIAMETER::persist bidirectional [boolean] |
Gets or sets the bidirectional persistence flag for custom persistence keys. |
DIAMETER_INGRESS DIAMETER_EGRESS |
MR_INGRESS MR_EGRESS MR_FAILED |
DIAMETER::route_status |
Returns the routing status of the current message. |
DIAMETER_EGRESS |
|
DIAMETER::retransmission_default action [new-action] |
Sets or gets the default retransmission action for subsequent messages on this connection. |
CLIENT_ACCEPTED SERVER_CONNECTED |
|
DIAMETER::retransmission_default timeout [new-timeout] |
Sets or gets the default retransmission timeout (in seconds) for subsequent messages on this connection. |
CLIENT_ACCEPTED SERVER_CONNECTED |
|
DIAMETER::retransmission_default error-codes [new-error-code-list] |
Sets or gets the default retransmission error code list for subsequent messages on this connection. |
CLIENT_ACCEPTED SERVER_CONNECTED |
|
DIAMETER::retransmission action [new-action] |
Sets or gets the retransmission action for a current message. |
DIAMETER_INGRESS |
|
DIAMETER::retransmission timeout [new-timeout] |
Sets or gets the retransmission timeout (in seconds) for current message. |
DIAMETER_INGRESS |
|
DIAMETER::retransmission error-codes [new-error-code-list] |
Sets or gets the retransmission error code list for current message. |
DIAMETER_INGRESS |
|
DIAMETER::retransmit action [note] |
Triggers retransmission of the corresponding queued request for the current answer message. |
DIAMETER_EGRESS |
|
DIAMETER::is_retransmission |
Returns '1' if the current message is a retransmitted request (a request internally triggered for retransmission). |
DIAMETER_EGRESS DIAMETER_RETRANSMISSION |
MR_INGRESS MR_EGRESS MR_FAILED |
DIAMETER::retransmission_reason |
Returns the trigger for retransmitting the current message |
DIAMETER_RETRANSMISSION, DIAMETER_EGRESS |
MR_INGRESS |
Persist iRule example
Set Persist Key
when SIP_REQUEST { SIP::persist [SIP::header value From] log local0. "New Persist-key = [SIP::persist]" }
Get Persist Key
when SIP_REQUEST { log local0. "Persist-key = [SIP::persist]" }