This annex defines the procedures performed by network entities within the IM CN subsystem to support overlap signalling.
The support of overlap signalling within the IM CN subsystem is optional, and is depended on the network policy.
The digit collection function is invoked if an entity requires additional digits for a decision where to route a INVITE request.
The digit collection function may interact with a routeing database, to reach this decision. The digit collection function shall be performed by an entity acting as a B2BUA. The digit collection function requires the ability to recognise incomplete numbers. The digit collection function may be implemented in different network nodes depending on the operator's deployment strategy (e.g. AS, IBCF).
Upon receiving an initial INVITE request carrying an SDP offer, the digit collection function shall:
if the request contains enough digits to forward the request, forward the request towards it's destination;
if the digit collection function chooses to collect additional digits in INFO requests, in order to forward the request, and the sender of the INVITE request has indicated support of reliable responses, store the received digits and send a reliable 183 (Session Progress) provisional response in order to establish an early dialog with the sender of the INVITE request. The response shall not contain an SDP answer; or
if it is determined that the en-bloc will not be able to forward the request even if additional digits are received,, send a 404 (Not Found) response.
Upon receiving an initial INVITE request without an SDP offer, the digit collection function shall:
if the request contains enough digits to forward the request, forward the request towards it's destination; or
send a 404 (Not Found) response.
When the digit collection function sends the reliable 183 (Session Progress) provisional response, in order to establish an early dialog with the sender of the INVITE request, the digit collection function shall start a digit collection timer. If the timer expires, the digit collection function shall terminate the call setup by sending a sending a 484 (Address Incomplete) response towards the sender of the INVITE request.
Upon receiving an INFO request carrying additional digits, and if an early dialog towards the destination of the initial INVITE request for the call does not exist, the digit collection function shall:
send a 200 (OK) response to the INFO request;
add the received digits to the previously stored digits for the call;
restart the digit collection timer; and
check if enough digits have been received in order to forward the initial INVITE request.
When enough digits for the call have been received in order to forward the initial INVITE request, the digit collection function shall add all stored digits to the request URI and forward the request towards its destination and stop the digit collection timer.
Upon receiving an INFO request carrying additional digits, and the initial INVITE request has been forwarded towards its destination, but an early dialog towards the destination of the initial INVITE request for the call does not exist, the digit collection function shall:
send a 200 (OK) response to the INFO request; and
add the received digits to the previously stored, but yet not forwarded, digits for the call;
When the digit collection function receives a provisional response from the destination of the initial INVITE request, and the digit collection function has received additional digits in INFO requests, the digit collection shall generate and send an INFO request towards the destination of the initial INVITE request. The Request-URI shall contain all digits which have been received and stored since the initial INVITE request was forwarded.
Upon receiving an INFO request carrying additional digits, and if an early dialog towards the destination of the initial INVITE request for the call does exist, the digit collection function shall forward the INFO request on the early dialog towards the destination of the initial SIP INVITE request.
Upon receiving an INFO request carrying additional digits, and if a 180 (Ringing) or a 200 (OK) response to the initial INVITE request for the call has been received, or the digit collection function has received some other indication that enough digits have been forwarded in order for the INVITE request to reach the terminating SIP user, the digit collection function shall, based on operator policy:
send a 200 (OK) response to the INFO request and not forward the INFO request; or
forward the INFO request on the early dialog towards the destination of the initial SIP INVITE request.
Upon receiving a 404/484 response to the initial INVITE request, the digit collection function shall acknowledge the response and shall start the digit collection timer. The digit collection function shall not forward the response towards the sender of the INVITE request.
Apart from 404/484 responses to the initial INVITE request, and INFO requests carrying additional digits received after a 180 (Ringing) or a 200 (OK) response to the initial INVITE request has been received, the digit collection function shall forward all SIP messages. When forwarding SIP messages, the digit collection function shall modify the SIP messages to comply with SIP procedures on both call legs as specified below:
The digit collection function will receive a "tag" To header field parameter value from the receiver of the initial INVITE request, which is different from the "tag" To header field parameter value that the digit collection function inserted in the 183 (Session Progress) response that it sent when it received the initial INVITE request. The digit collection function shall modify the "tag" header field parameter value accordingly when forwarding mid-dialog SIP messages.
The digit collection function will return a Contact header field in the initial 183 (Session Progress) provisional response to the originating side, which contains a SIP-URI of the digit collection function. The contact information is used in the Request-URI of subsequent mid-dialog SIP requests sent by the originating side, until the digit collection function has received, and forwarded to the originating side, a 183 (Session Progress) provisional response from the destination of the INVITE request. If the Request-URI of the received mid-dialog SIP request contains the SIP-URI of the digit collection function, and the digit collection function forwards the request, the digit collection function shall modify the Request-URI before forwarding the SIP request.
The digit collection function will return the Record-Route header fields, which it received in the initial INVITE request, in the initial 183 (Session Progress) provisional response to the originating side. The information is used in the Route header fields of subsequent mid-dialog SIP requests sent by the originating side, until the digit collection function has received, and forwarded to the originating side, a 183 (Session Progress) provisional response from the destination of the INVITE request. If the Route header fields of the received mid-dialog SIP request are based on the Record-Route headers fields which the digit collection function returned in the initial 183 (Session Progress) provisional response, and the digit collection function forwards the request, the digit collection function shall modify the Route header fields before forwarding the SIP request.
The en-bloc conversion function may be performed in an entity acting as B2BUA. The en-bloc conversion function may be implemented in different network nodes depending on the operator's deployment strategy (e.g. AS, IBCF).
If the initial INVITE request is to be forwarded towards a network, or towards a network entity, that does not support overlap signalling, the en-bloc conversion function shall determine the end of address signalling.
The following methods can be used to determine the end of the address signalling:
the maximum number of digits used in a national numbering plan has been received;
number analysis, e.g. using a provisioned dial plan, is used to determinte that the complete number of digits has been received; or
an inter digit timer expires, and the minimum number of digits required for routeing the call have been received. The timer is started when the initial INVITE request is received, and re-started every time new digit(s) are received.
The procedures for collecting additional digits are described in subclauses N.3.2 and N.3.3. When end of address signalling has been determined, the en-bloc conversion function shall generate an INVITE request, add all digits to the request and forwards the request towards its destination.
N.3.2 Multiple-INVITE method
Upon reception of an INVITE request, the en-bloc conversion function shall:
if an inter digit timer is running for a previously received INVITE request with the same Call-ID and From header, and
if the number of digits within that previous INVITE request is below the number of digits received in the new INVITE request (or as an equivalent test if the CSeqID of the previous INVITE request is below the CSeqID of the new INVITE request), stop the inter-digit timer for that previous INVITE request and send a 484 (Address Incomplete) response for it; and
if the number of digits with the previous INVITE request is above or equal to the number of digits received in the new INVITE request (or as an equivalent test if the CSeqID of the previous INVITE request is below the CSeqID of the new INVITE request), send a 484 (Address Incomplete) response for the new INVITE request; and
if the en-bloc conversion function determines that the number received in the INVITE request is complete, forward the INVITE request; and
if the en-bloc conversion function determines that it will not be able to forward the request even if additional digits are received, send a 404 (Not Found) response; and
if the en-bloc conversion function chooses to collect additional digits, store the INVITE request and start an inter-digit timer to wait for possible INVITE requests with the same Call ID and From header.
When the inter-digit timer expires the en-bloc conversion function shall:
if it determines that the number received in the stored INVITE request is incomplete (e. g. by number analysis), terminate the call setup by sending a sending a 484 (Address Incomplete) response towards the sender of the INVITE request; and
if it does not determines that the number received in the last INVITE request is incomplete, forward the corresponding stored INVITE request to the next hop.
After forwarding an INVITE request, the en-bloc conversion function shall apply SIP proxy procedures for all subsequent SIP messages within the corresponding dialogue, unless other functionality not related to en-bloc conversion allocated in the same physical norde requires a different behaviour.
Upon receiving an initial INVITE request carrying an SDP offer, the en-bloc conversion function shall:
if it determines that the request contains a complete number, forward the request towards it's destination;
if the en-bloc conversion function chooses to collect additional digits in INFO requests before forwarding the request, and the sender of the INVITE request has indicated support of reliable responses, store the received digits, send a reliable 183 (Session Progress) provisional response without an SDP answer in order to establish an early dialog with the sender of the INVITE request, and start an inter digit timer; or
if the en-bloc conversion function determines that it will not be able to forward the request even if additional digits are received, send a 404 (Not Found) response.
Upon receiving an initial INVITE request without an SDP offer, the en-bloc conversion function shall:
if it is determined that the request contains a complete number, forward the request towards it's destination; or
send a 404 (Not Found) response.
Upon receiving an INFO request carrying additional digits, and an early dialog towards the destination of the initial SIP INVITE request for the call has not been created, the en-bloc conversion function shall:
send a 200 (OK) response to the INFO request;
add the received digits to the previously stored digits for the call;
re-start the inter digit timer; and
check if it can determine that a complete number for the call has been received.
When the en-bloc conversion function determines that a complete number for the call has been received, it shall add all stored digits to the initial INVITE request and forward the request towards its destination and stop the inter digit timer.
When the inter-digit timer expires the en-bloc conversion function shall
if it determines that the number so far is incomplete (e. g. by number analysis), terminate the call setup by sending a sending a 484 (Address Incomplete) response towards the sender of the INVITE request; or
if it does not determines that the number received in the last INVITE request is incomplete, forward the INVITE request to the next hop, including all received digits.
Upon receiving an INFO request carrying additional digits, if the en-bloc conversion function has forwarded the initial INVITE request towards its destination, the en-bloc conversion function shall send a 200 (OK) response to the INFO request and not forward the INFO request.
Apart from INFO requests carrying additional digits received after the initial INVITE request has been forwarded, the en-bloc conversion function shall forward all SIP messages.
The en bloc conversion function will receive a "tag" To header field parameter value from the receiver of the initial INVITE request, which is different from the "tag" To header field parameter value that the digit collection function inserted in the 183 (Session Progress) response that it sent when it received the initial INVITE request. The digit collection function shall modify the "tag" To header field parameter value accordingly when forwarding in-dialog SIP messages.