In this Section:
RPH Handling
The following table covers the scenarios in which the initial SIP INVITE Request-URI (R-URI) contains either a GETS-AN or a GETS-NT string. Based on SBC’s configuration the following behavior applies. The call is identified as an HPC call. SBC either generates and sends or does not send an RPH in the initial egress SIP INVITE.
Initial SIP INVITE Request-URI with GETS-AN or GETS-NT
S.No. | Initial SIP INVITE | 2hpcCallProfile: RPH Ingress settings | Call Identification | 3hpcCallProfile: RPH Egress settings and 1etsDefaultValue | Initial Egress SIP INVITE |
---|---|---|---|---|---|
1 | R-URI: GETS-AN or GETS-NT | N/A | HPC call | validEtsWps: dontInclude | No RPH |
2 | R-URI: GETS-AN or GETS-NT | N/A | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D |
3 | R-URI: GETS-AN or GETS-NT RPH: ets.x and wps.y | validEtsWps: ignore | HPC call | validEtsWps: dontInclude | No RPH |
4 | R-URI: GETS-AN or GETS-NT RPH: ets.x and wps.y | validEtsWps: ignore | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D |
5 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: ignore nonEtsWps: ignore | HPC call | validEtsWps: dontInclude | No RPH |
6 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: ignore nonEtsWps: ignore | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D |
7 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: ignore nonEtsWps: accept | HPC call | validEtsWps: dontInclude nonEtsWps: dontInclude | No RPH |
8 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: ignore nonEtsWps: accept | HPC call | validEtsWps: dontInclude nonEtsWps: include | RPH: non-ets.x and non-wps.y |
9 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: ignore nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: dontInclude etsDefaultValue: D¹ | RPH: ets.D |
10 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: ignore nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: include etsDefaultValue: D¹ | RPH: ets.D, non-ets.x and non-wps.y |
11 | R-URI: GETS-AN or GETS-NT RPH: ets.x and wps.y | validEtsWps: accept | HPC call | validEtsWps: dontInclude | No RPH |
12 | R-URI: GETS-AN or GETS-NT RPH: ets.x and wps.y | validEtsWps: accept | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D and wps.y |
13 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: accept nonEtsWps: ignore | HPC call | validEtsWps: dontInclude | No RPH |
14 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: accept nonEtsWps: ignore | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D and wps.y |
15 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: accept nonEtsWps: accept | HPC call | validEtsWps: dontInclude nonEtsWps: dontInclude | No RPH |
16 | R-URI: GETS-AN or GETS-NT RPH: RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: accept nonEtsWps: accept | HPC call | validEtsWps: dontInclude nonEtsWps: include | RPH: non-ets.x and non-wps.y |
17 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: accept nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: dontInclude etsDefaultValue: D¹ | RPH: ets.D and wps.y |
18 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: accept nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: include etsDefaultValue: D¹ | RPH: ets.D, wps.y, non-ets.x and non-wps.y |
19 | R-URI: GETS-AN or GETS-NT RPH: ets.x and wps.y | validEtsWps: reject | HPC call | validEtsWps: dontInclude | No RPH |
20 | R-URI: GETS-AN or GETS-NT RPH: ets.x and wps.y | validEtsWps: reject | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D |
21 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: reject nonEtsWps: ignore | HPC call | validEtsWps: dontInclude | No RPH |
22 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: reject nonEtsWps: ignore | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D |
23 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: reject nonEtsWps: accept | HPC call | validEtsWps: dontInclude nonEtsWps: dontInclude | No RPH |
24 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: reject nonEtsWps: accept | HPC call | validEtsWps: dontInclude nonEtsWps: include | RPH: non-ets.x and non-wps.y |
25 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: reject nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: dontInclude etsDefaultValue: D¹ | RPH: ets.D |
26 | R-URI: GETS-AN or GETS-NT RPH: ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: reject nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: include etsDefaultValue: D¹ | RPH: ets.D, non-ets.x and non-wps.y |
27 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple) and wps.y | invalidEtsWps: ignore | HPC call | validEtsWps: dontInclude | No RPH |
28 | R-URI: GETS-AN or GETS-NT RPH: ets.x and wps.y(multiple) | invalidEtsWps: ignore | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D |
29 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: ignore nonEtsWps: ignore | HPC call | validEtsWps: dontInclude | No RPH |
30 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: ignore nonEtsWps: ignore | HPC call | validEtsWps: Include etsDefaultValue: D¹ | RPH: ets.D |
31 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: ignore nonEtsWps: accept | HPC call | validEtsWps: dontInclude nonEtsWps: dontInclude | No RPH |
32 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: ignore nonEtsWps: accept | HPC call | validEtsWps: dontInclude nonEtsWps: include | RPH: non-ets.x and non-wps.y |
33 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: ignore nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: dontInclude etsDefaultValue: D¹ | RPH: ets.D |
34 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: ignore nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: include etsDefaultValue: D¹ | RPH: ets.D, non-ets.x and non-wps.y |
35 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y | invalidEtsWps: reject | HPC call | validEtsWps: dontInclude | No RPH |
36 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y | invalidEtsWps: reject | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D |
37 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: reject nonEtsWps: ignore | HPC call | validEtsWps: dontInclude | No RPH |
38 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: reject nonEtsWps: ignore | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D |
39 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: reject nonEtsWps: accept | HPC call | validEtsWps: dontInclude nonEtsWps: dontInclude | No RPH |
40 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: reject nonEtsWps: accept | HPC call | validEtsWps: dontInclude nonEtsWps: include | RPH: non-ets.x and non-wps.y |
41 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: reject nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: dontinclude etsDefaultValue: D¹ | RPH: ets.D |
42 | R-URI: GETS-AN or GETS-NT RPH: ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: reject nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: include etsDefaultValue: D¹ | RPH: ets.D, non-ets.x and non-wps.y |
The following table covers the scenarios in which the initial SIP INVITE contains RPH(s) but does not contain GETS strings within the Request-URI(R-URI). Based on SBC’s configuration the following behavior applies. The call is either identified as an HPC or Non-HPC call or the call attempt is rejected. SBC either generates and sends or does not send an RPH header in the initial egress SIP INVITE.
Initial SIP INVITE containing RPH but no GETS strings within the R-URI
S.No. | Initial Ingress SIP INVITE containing RPH | 2hpcCallProfile: RPH Ingress settings and 1etsDefaultValue | Call Identification/Call Attempt Rejection | 3hpcCallProfile: RPH Egress settings and 1etsDefaultValue | Initial Egress SIP INVITE |
---|---|---|---|---|---|
1 | ets.x and wps.y | validEtsWps: ignore | Non-HPC call | N/A | No RPH |
2 | ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: ignore nonEtsWps: ignore | Non-HPC call | N/A | No RPH |
3 | ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: ignore nonEtsWps: accept | Non-HPC call | nonEtsWps: dontInclude | No RPH |
4 | ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: ignore nonEtsWps: accept | Non-HPC call | nonEtsWps: include | RPH: non-ets.x and non-wps.y |
5 | ets.x and wps.y | validEtsWps: accept | HPC call | validEtsWps: dontInclude | No RPH |
6 | ets.x and wps.y | validEtsWps: accept | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D and wps.y |
7 | ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: accept nonEtsWps: ignore | HPC call | validEtsWps: dontInclude | No RPH |
8 | ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: accept nonEtsWps: ignore | HPC call | validEtsWps: include etsDefaultValue: D¹ | RPH: ets.D and wps.y |
9 | ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: accept nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: dontInclude etsDefaultValue: D¹ | RPH: ets.D and wps.y |
10 | ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: accept nonEtsWps: accept | HPC call | validEtsWps: include nonEtsWps: include etsDefaultValue: D¹ | RPH: ets.D, wps.y, non-ets.x and non-wps.y |
11 | ets.x and wps.y | validEtsWps: reject | Call attempt rejected with SIP 403 (Forbidden) response. Reason header: 417, 21 No RPH | N/A | N/A |
12 | ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: reject nonEtsWps: ignore | Call attempt rejected with SIP 403 (Forbidden) response. Reason header: 417, 21 No RPH | N/A | N/A |
13 | ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: reject nonEtsWps: accept | Non-HPC call | nonEtsWps: dontInclude | No RPH |
14 | ets.x, wps.y, non-ets.x and non-wps.y | validEtsWps: reject nonEtsWps: accept | Non-HPC call | nonEtsWps: include | RPH: non-ets.x and non-wps.y |
15 | ets.x (multiple) and wps.y | invalidEtsWps: ignore | Non-HPC call | N/A | No RPH |
16 | ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: ignore nonEtsWps: ignore | Non-HPC call | N/A | No RPH |
17 | ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: ignore nonEtsWps: accept | Non-HPC call | nonEtsWps: dontInclude | No RPH |
18 | ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: ignore nonEtsWps: accept | Non-HPC call | nonEtsWps: include | RPH: non-ets.x and non-wps.y |
20 | ets.x (multiple), wps.y, non-ets.x and non-wps.y | invalidEtsWps: reject etsDefaultValue: D1 | Call attempt rejected with SIP 400 (Forbidden) response. Reason header: 417 ets.D | N/A | N/A |
1etsDefaultValue: D - Default priority value used for the ETS namespace (range: 0-4, default = 0).
2hpcCallProfile RPH Ingress - The rph ingress section settings of the hpcCallProfile associated to a TG. These settings apply to messages received on the TG.
3hpcCallProfile RPH Engress - The rph egress section settings of the hpcCallProfile associated to a TG. These settings apply to messages sent on the TG.
For a GETS call, the inclusion of an RPH with ets.x and if available, wps.y applies to INVITE, ACK, BYE, CANCEL, INFO, NOTIFY, PRACK, REFER, SUBSCRIBE, and UPDATE request messages. Also inclusion applies to 1xx, 2xx, 3xx, 4xx, 5xx and 6xx responses with the exception of SIP 100 (“Trying”) and SIP 403 (“Forbidden”) responses. For a SIP 400 (Bad request) response with a 417 code in the Reason header field, the etsDefaultValue without the wps namespace is included in the RPH.
For request messages within a SIP dialog associated with a GETS call, the SBC honors RPH’s ets namespace and wps.y (if available) when the hpcCallProfile rph ingress setting of validEtsWps is accept. The most recently received wps.y value is retained for use in subsequent messages within the dialog. For response messages within a SIP dialog associated with a GETS call, if the hpcCallProfile rph egress setting of validEtsWps is include, the SBC adds ets.x or ets.x and wps.y in RPH.
Validation of RPH Settings in Received SIP Messages
When the SBC’s hpcCallProfile invalidEtsWps is set to reject and the SBC receives a SIP request that contain RPH with the following resource values, the SBC responds with a SIP 400 (Bad Request) response, which has a Reason header with a 417 code.
- Multiple instances of ets namespace (e.g., Resource-Priority: ets.0, ets.2
- Multiple instances of the wps namespace (e.g., Resource-Priority: ets.0, wps.2, wps.4)
- An invalid ets.x value (e.g., Resource-Priority: ets.7)
- An invalid wps.y value (e.g., Resource-Priority: ets.0, wps.9)
- wps.y and no ets.x value (e.g., Resource-Priority: wps.4),
This response includes the RPH with the provisioned etsDefaultValue and without a wps namespace.
When the SBC receives a mid-dialog message for a non-GETS call that includes an RPH with an ets namespace, the SBC treats the message as a non-GETS mid-dialog message. The SBC neither honors the ets nor the wps namespaces.
The SBC logs the Date and Time, SIP Message Type, SIP Call-ID, RPH namespaces and values, To and From URI, IP Addresses and DSCP value (from the IP packet).
The following call flows illustrate the SBC’s GETS processing of an initial INVITE.
GETS processing of an initial INVITE for GETS strings
GETS processing of the initial INVITE for invalid ets or invalid wps
GETS processing of the initial INVITE for valid ets or valid ets and valid wps namespaces
GETS processing of the initial INVITE for non-ets and non-wps namespaces
GETS processing of the initial egress INVITE