Telcordia Technologies AR Greenhouse
vine endAR HomeBackFeedbackTelcordia Homevine end

Interaction between an SGCP controlled gateway and an H.323 entity

SGCP 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: We suppose, in these scenarios, that the H.323 agent is capable of using the fast start procedure defined in H.323v2.


Back to the SGCP FAQ
Back to the SGCP Home Page

Call from a residential gateway (RGW) to an H.323 user

RTT Usr RGW CA H.323 Usr GK
    <- Notification Request      
   
Ack
->      
             
0.5 Off-hook
Notify
->      
1.0   <- Ack      
1.0 (Dial-tone) <- Notification Request      
1.5  
Ack
->      
             
0.5 Digit
Notify
->      
1.0   <- Ack      
1.0 (progress) <- Create Connection + Notification Request      
1.5  
Ack
->      
      (call processing)      
2.0     TCP-SYN ->    
2.5     <- SYN, ACK    
3.0     Set-up + faststart ->    
3.5       ARQ - - - ->
4.0       <- - - - ACF
4.5     <- alerting ring  
5.0     TCP ACK ->    
5.5 (ring back) <- Notification Request      
6.0  
Ack
->      
             
0.5     <- connect + faststart off hook  
1.0     TCP ACK ->    
1.0   <- Modify Connection + Notification Request      
1.5  
Ack
->      
      (call established)      
0.5 on hook Notify ->      
1.0   <- Ack      
1.0   <- Delete Connection + Notification Request      
1.5  
perf data
->      
1.0    
Release Complete 
->    
1.0     TCP-FIN ->    
1.5     <- FIN, ACK    
2.0     TCP ACK ->    
        (local action) On-hook  
        DRQ - - - ->
        <- - - - DCF
During these exchanges the SGCP is used by the call agent to control the residential gateways. The call will be routed to an H.323 agent. The first command is a notification request, sent by the call agent to the residential gateway. The request will consist of the following lines:
   RQNT 1201 endpoint-1@rgw-2567.whatever.net SGCP 1.0
   N: ca@ca1.whatever.net:5678
   X: 0123456789AB
   R: hd
The 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 OK
Note 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: hd
The call agent immediately acknowledges that notification.
   200 2001 OK
The 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: dt
The gateway immediately acknowledges that request.
    200 1202 OK
The 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: 912018294266
The call agent immediately acknowledges that notification.
   200 2002 OK
At 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: hu
The 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 0
The 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: rt
When 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 0
The gateway will acknowledge this request:
   200 1209 OK
At 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: hu
After this notification, the call agent should send an acknowledgement:
   200 2005 OK
The 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: hd
The 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=48
The 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

RTT User H.323 GK CA RGW Usr
  call ->        
    ARQ ->      
    <- ACF      
    TCP SYN - - - ->    
    <- - - - SYN+ACK    
    set-up + fast cap + fast start - - - ->    
        (call processing)    
1.5       Create Connection + Notification Request -> ring
2.0       <- Ack  
    <- - - - alerting    
    TCP ACK - - - ->    
    (ringing indication)        
0.5       <- Notify off hook
1.0       Ack ->  
1.0       Notification Request ->  
1.5       <- Ack  
    <- - - - connect + fast start    
    TCP ACK - - - ->    
        (call established)    
             
0.5       <- Notify on hook
        Ack ->  
        (no suspension message)    
1.0       Notification Request ->  
1.5       <- Ack  
             
  hangup hangup detected        
    release confirmed - - - ->    
    TCP FIN - - - ->    
    <- - - - FIN ACK    
0.5       Delete Connection + Notification Request ->  
1.0       <- perf data  
    DRQ ->      
    <- DCF      
This diagram shows the various exchange of messages during a call from an H.323 user to a residential user. During these exchanges the SGCP is used by the call agent to control the residential gateway.

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 0
In 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 0
The 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: hd
The call agent immediately acknowledges that notification.
   200 2001 OK
The 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: hu
The gateway acknowledges that request:
   200 1241 OK
In 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: hu
The call agent acknowledges the notification.
   200 2005 OK
Upon 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: hd
The gateway will acknowledge this request:
      200 1243 OK
In 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:  FDE234C8
The 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=48
The 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
 
     Last Updated:
© 1999 - 2005 Telcordia Technologies, Inc.