|
![]() ![]() ![]() ![]() ![]() ![]()
|
Interaction between an SGCP controlled gateway and an H.323 entitySGCP is not intended to replace H.323, or even to compete with it. In fact, we should mostly consider it as a tool to enable distributed implementations of H.323, as shown in the following picture. The combination of gateways and call agent behaves as a distributed H.323 system, using SGCP for internal communication. This system appears to H.323 users as a larger H.323 system, or, if one prefers, as an H.323 gatekeeper that implements the Gatekeeper routed call model.
In order to demonstrate the compatibility between SGCP and H.323, we provide here a step by step demonstration of 2 call set up scenarios:
Back to the SGCP FAQ Back to the SGCP Home Page Call from a residential gateway (RGW) to an H.323 user
RQNT 1201 endpoint-1@rgw-2567.whatever.net SGCP 1.0 N: ca@ca1.whatever.net:5678 X: 0123456789AB R: hdThe gateway, at that point, is instructed to look for an off-hook event, and to report it. It will first acknowledge the request, repeating in the acknowledgement message the transaction id that the call agent attached to the query. 200 1201 OKNote that this command is not actually simultaneous with the call. It can be issued long before the actual call, for example when the gateway is turned on, or after the end of a previous call. When the off hook event is noticed, the gateway initiates a notification request to the call agent: NTFY 2001 endpoint-1@rgw-2567.whatever.net SGCP 1.0 N: ca@ca1.whatever.net:5678 X: 0123456789AB O: hdThe call agent immediately acknowledges that notification. 200 2001 OKThe call agent examines the services associated to an off hook action (it could take special actions in the case of a direct line). In most cases, it will send a notification request, asking for more digits. It will also, The current example provides the gateway with a digit map, and request the gateway to play a dialtone: RQNT 1202 endpoint-1@rgw-2567.whatever.net SGCP 1.0 N: ca@ca1.whatever.net:5678 X: 0123456789AC R: hu, [0-9#*T](D) D: (0T | 00T | [1-7]xxx | 8xxxxxxx | #xxxxxxx | *xx | 91xxxxxxxxxx | 9011x.T) S: dtThe gateway immediately acknowledges that request. 200 1202 OKThe gateway will start accumulating digits according to that digit map. When it has noticed a sufficient set of values, it will notify the observed string to the call agent: NTFY 2002 endpoint-1@rgw-2567.whatever.net SGCP 1.0 N: ca@ca1.whatever.net:5678 X: 0123456789AC O: 912018294266The call agent immediately acknowledges that notification. 200 2002 OKAt this stage, the call agent seizes the incoming circuit, creating a connection. It will also send together with that creation request a notification request, to stop collecting digits yet continue watch for an on-hook transition: CRCX 1204 endpoint-1@rgw-2567.whatever.net SGCP 1.0 C: A3C47F21456789F0 L: p:10, a:G.711;G.726-32 M: recvonly X: 0123456789AD R: huThe gateway immediately acknowledges the creation, sending back the identification of the newly created connection and the session description used to receive audio data: 200 1204 OK I: FDE234C8 v=0 c=IN IP4 128.96.41.1 m=audio 3456 RTP/AVP 0The SDP announcement, in our example, specifies the address at which the gateway is ready to receive audio data (128.96.41.1), the transport protocol (RTP), the RTP port (3456) and the audio profile (AVP). The audio profile refers to RFC 1890, which defines that the payload type 0 has been assigned for G.711 transmission. The call agent, having seized the incoming trunk, proceeds with call routing. Using local databases, it determines that the dialed digits (912018294266) correspond to a H.323 agent. It will set up a TCP-IP connection and send an H.225/Q.931 set-up message to the H.323 entity. In this message, the faststart element carries a set of open logical channel proposals, derived from the SDP description received from the calling gateway: faststart-1 OpenLogicalChannel ::= {
forwardLogicalChannelNumber 1,
forwardLogicalChannelParameters {
dataType g711Ulaw64k 160, -- 20 ms G.711 frame
multiplexParameters
h2250LogicalChannelParameters H2250LogicalChannelParameters {
sessionID 1,
silenceSuppression TRUE
}
}
}
faststart-2 OpenLogicalChannel ::= {
forwardLogicalChannelNumber 2,
forwardLogicalChannelParameters {
dataType nullData, -- pro forma
multiplexParameters none
},
reverseLogicalChannelParameters {
dataType g711Ulaw64k 160, -- 20 ms frame
multiplexParameters
h2250LogicalChannelParameters H2250LogicalChannelParameters {
sessionID 2,
mediaChannel unicastAddress iPAddress {
network '80602901'H,
tsapIdentifier 3456 -- port
},
mediaControlChannel unicastAddress iPAddress {
network '80602901'H,
tsapIdentifier 3457 -- port
},
silenceSuppression TRUE
}
}
}
The H.323 alerts the user, and sends an H.225/Q.931 alerting message.
On reception of this message, the call agent will send a notification request
that instruct the RGW to generate ringing tones:
RQNT 1206 endpoint-1@rgw-2567.whatever.net SGCP 1.0 X: 0123456789AE R: hu S: rtWhen the called user accepts the call, the H.323 agent sends an H.225/Q.931 set-up message to the call agent. If the H.323 agent accepted the fast start procedure, the faststart parameter will contain the confirmation of the open logical channel creations in the two directions of communication: faststart-1 OpenLogicalChannel ::= {
forwardLogicalChannelNumber 1,
forwardLogicalChannelParameters {
dataType g711Ulaw64k 160, -- 20 ms frame
multiplexParameters h2250LogicalChannelParameters {
sessionID 1,
mediaChannel unicastAddress iPAddress {
network '80603F19'H,
tsapIdentifier 3456, -- port
} ,
mediaControlChannel unicastAddress iPAddress {
network '80603F19'H,
tsapIdentifier 3457, -- port
} ,
silenceSuppression TRUE
}
}
}
faststart-2 OpenLogicalChannel ::= {
forwardLogicalChannelNumber 2,
forwardLogicalChannelParameters {
dataType g711Ulaw64k 160, -- 20 ms frame
multiplexParameters h2250LogicalChannelParameters {
sessionID 1,
silenceSuppression TRUE
}
}
}
The call agent will send a modification request to the residential gateway,
in order to establish a full duplex connection. The SDP payload, in that
request, is derived from the parameters of the logical channel for transmission
from the gateway to the H.323 entity.
MDCX 1209 endpoint-1@rgw-2567.whatever.net SGCP 1.0 C: A3C47F21456789F0 I: FDE234C8 M: sendrecv X: 0123456789AF R: hu v=0 c=IN IP4 128.96.63.25 m=audio 1297 RTP/AVP 0The gateway will acknowledge this request: 200 1209 OKAt this point, the connection is established. In our example, the call is terminated when the calling party hangs up. This triggers a notification message to the call agent: NTFY 2005 endpoint-1@rgw-2567.whatever.net SGCP 1.0 X: 0123456789AF O: huAfter this notification, the call agent should send an acknowledgement: 200 2005 OKThe call agent will then clear the call, by sending a delete connection request to the calling gateway. This request is combined with a notification request, to be ready to detect the next call issued by the residential gateway: DLCX 1210 endpoint-1@rgw-2567.whatever.net SGCP 1.0 C: A3C47F21456789F0 I: FDE234C8 X: 0123456789B0 R: hdThe gateway will respond with a message that should include a "call parameters" header field: 250 1210 OK P: PS=1245, OS=62345, PR=780, OR=45123, PL=10, JI=27, LA=48The call agent will in parallel sends an H.323/Q.931 release complete message to the H.323 agent. It will then tear down the TCP-IP connection. The gateway, at this point, is ready for the next call. The H.323 user will be ready as soon as the H.323 agent notices that the phone is back on hook. Back to the top of the page Back to the SGCP FAQ Back to the SGCP Home Page Basic call, H.323 to RGW
When the user initiates the call, the H.323 agent will perform a RAS transaction with its designated Gatekeeper. As a result of this transaction, it will learn the TCP-IP address of the call agent, and will set up a TCP-IP connection with the call agent. Once the TCP-IP connection is established, the H.323 agent sends a Q.931/H.225 connect message to the call agent. The message, in its user-to-user parameter, includes a fast start parameter that lists a set of OpenLogicalChannel proposals, such as for example: faststart-1 OpenLogicalChannel ::= {
forwardLogicalChannelNumber 1,
forwardLogicalChannelParameters {
dataType g711Ulaw64k 160, -- 20 ms G.711 frame
multiplexParameters h2250LogicalChannelParameters {
sessionID 1,
silenceSuppression TRUE
}
}
}
faststart-2 OpenLogicalChannel ::= {
forwardLogicalChannelNumber 2,
forwardLogicalChannelParameters {
dataType nullData, -- pro forma
multiplexParameters none
},
reverseLogicalChannelParameters {
dataType g711Ulaw64k 160, -- 20 ms frame
multiplexParameters h2250LogicalChannelParameters {
sessionID 2,
mediaChannel unicastAddress iPAddress {
network '80602901'H,
tsapIdentifier 3456, -- port
},
mediaControlChannel unicastAddress iPAddress {
network '80602901'H,
tsapIdentifier 3457, -- port
},
silenceSuppression TRUE
}
}
}
Upon reception of the set-up message, the call agent will perform called
routing functions and determine the end point that correspond to the called
party number. It will send reserve the outgoing circuit. It does so at
the same time that is requests ringing, by sending to the residential gateway
a connection request combined with a notification request:
CRCX 1238 endpoint-1@rgw-2567.whatever.net SGCP 1.0 C: A3C47F21456789F0 L: p:10, a:G.711 M: sendrecv X: 0123456789B1 R: hd S: rg v=0 c=IN IP4 128.96.41.1 m=audio 3456 RTP/AVP 0In this command, the SDP announcement is obtained by translating the faststart parameters corresponding to the receive channel announced by the caller - channel 2 in our case. The IP address, RTP port and authorized payload are derived from the reverseLogicalChannelParameters data elements. We derive the authorized payload type from the dataType element. We have however to check that this value is proposed in at least one of the forward channels. The gateway will acknowledge the connection request, sending in the session description its own parameters such as address, ports and RTP profile: 200 1238 OK I: 32F345E2 v=0 c=IN IP4 128.96.63.25 m=audio 1297 RTP/AVP 0The phone is ringing, and the gateway, is instructed to look for an off-hook event, and to report it. The call agent sends an alerting message to the calling switch, which will generate ringing tones for the calling user. When the off hook event is noticed, the gateway initiates a notification request to the call agent: NTFY 2001 endpoint-1@rgw-2567.whatever.net SGCP 1.0X: 0123456789B0 O: hdThe call agent immediately acknowledges that notification. 200 2001 OKThe call agent must now ask the residential gateway to notify the occurrence of an on-hook event. It does so by sending a notification request to the residential gateway: RQNT 1241 endpoint-1@rgw-2567.whatever.net SGCP 1.0X: 0123456789B1 R: huThe gateway acknowledges that request: 200 1241 OKIn parallel, the call agent will send a connect message to the H.323 agent. The message, in its user-to-user parameter, includes the fast start parameter, which will validate and complement the proposals that the caller sent: faststart-1 OpenLogicalChannel ::= {
forwardLogicalChannelNumber 1,
forwardLogicalChannelParameters {
dataType g711Ulaw64k 160, -- 20 ms frame
multiplexParameters h2250LogicalChannelParameters {
sessionID 1,
mediaChannel unicastAddress iPAddress {
network '80603F19'H,
tsapIdentifier 3456, -- port
} ,
mediaControlChannel unicastAddress iPAddress {
network '80603F19'H,
tsapIdentifier 3457, -- port
} ,
silenceSuppression TRUE
}
}
}
faststart-2 OpenLogicalChannel ::= {
forwardLogicalChannelNumber 2,
forwardLogicalChannelParameters {
dataType g711Ulaw64k 160, -- 20 ms frame
multiplexParameters h2250LogicalChannelParameters (
sessionID 1,
silenceSuppression TRUE
}
}
}
After some time, in our example, the residential user hangs up. The notify
request is sent to the call agent:
NTFY 2005 endpoint-1@rgw-2567.whatever.net SGCP 1.0 X: 0123456789B1 O: huThe call agent acknowledges the notification. 200 2005 OKUpon reception of that notification, the call agent should send a "suspend" message to the calling H.323 agent, but the Q.931 suspend message should not be sent in H.225. In order to preserve the user experience, the call agent will simply initiate a timer, after which it would actually release the call. (In North-America, the call is not actually terminated if the called party hangs up. If it hangs down in a short interval, the call will be resumed.) The call agent, in any case, sends a notification request to the gateway, to look for an off-hook event. RQNT 1243 endpoint-1@rgw-2567.whatever.net SGCP 1.0 X: 0123456789B2 R: hdThe gateway will acknowledge this request: 200 1243 OKIn our example, the calling user releases the call immediately. The H.323 agent sends a release complete message to the call agent, which will then send a delete connection request to the residential gateway. The request sent to the gateway is combined with a request to detect a off-hook event, which will be used to detect rare conditions where the user would have gone off hook simultaneously with the release on the other side: DLCX 1244 endpoint-1@rgw-2567.whatever.net SGCP 1.0 C: A3C47F21456789F0 X: 0123456789B3 R: hd I: FDE234C8The gateway will respond with a message that should include a "call parameters" header fields: 200 1244 OK P: PS=1245, OS=62345, PR=780, OR=45123, PL=10, JI=27, LA=48The gateways, at this point, is ready for the next call. Back to the top of the page Back to the SGCP FAQ Back to the SGCP Home Page |
| Home | Back | Top of Page | Feedback | www.telcordia.com |
| © 1999 - 2005 Telcordia Technologies, Inc. |