Asterisk and H323

Hello,

I have an asterisk server running and i want to connect it to a cisco h323 call manager in order to use it as a gateway to make my calls.

Is there any way to do it?

thx,

mamep

Yes. Try using the ooh323 channel driver located in in the asterisk-addons.

Any guidance available?

Thx,

mamep

I have used ooh323 mainly to just send calls out to a carrier so my knowledge of it is limited. Go in to the ooh323 in asterisk add ons directory
in my case it is cd /usr/src/asterisk-addons-1.2.8/asterisk-ooh323c
make clean
make && make install
I know that with 1.2.8 there is an issue with the system creating the lib and copying it over to the asterisk modules directory so you will have to do it manually. Here is a link to my ooh323.conf file that I use to connect to my carrier (using cisco).
h6315.com/pub/ooh323/ooh323.txt

Any way to add user/pass authentication to the ooh323.conf file?

thx,

mamep

Yes you would sort of add it to the file the same way that you see it in sip.conf but just with with h323 parameters. Here is what I have to connect to a specific ITSP that authenticates me based on my IP:
[my_peer]
IP = XX.XX.XX.XX
port = 1720
type = peer
context = from-external
dtmfmode = h245alphanumeric
faststart = yes
h245tunneling = yes
disallow = all
allow = g729
dtmfmode=rfc2833

[ucnet]
IP =xxxxxx
port = 1720
type = peer
username = xxxxx
secret = xxxxx
context = from-external
dtmfmode = h245alphanumeric
faststart = yes
h245tunneling = yes
disallow = all
allow = alaw
dtmfmode=rfc2833
canreinvite=yes

but having some problems and i can’t call

---   ooh323_request - data 92810393295@/ucnet/ format 0x8 (alaw)
---   find_peer "ucnet/"
      comparing with "147.52.10.51"
+++   find_peer "ucnet/"
+++   ooh323_request
---   ooh323_call- 92810393295@/ucnet/
+++   ooh323_call
---   onNewCallCreated ooh323c_o_11
---   find_call
+++   find_call
setting callid number 51031
 Outgoing call ucnet/(ooh323c_o_11) - Codec prefs - (ulaw|g729)
        Adding capabilities to call(outgoing, ooh323c_o_11)
        Adding g711 ulaw capability to call(outgoing, ooh323c_o_11)
        Adding g729A capability to call(outgoing, ooh323c_o_11)
        Adding g729 capability to call(outgoing, ooh323c_o_11)
---   configure_local_rtp
+++   configure_local_rtp
+++   onNewCallCreated ooh323c_o_11
---   onCallCleared ooh323c_o_11
---   find_call
+++   find_call
---   ooh323_hangup
    hanging ucnet/
+++   ooh323_hangup
[Nov 19 02:14:58] NOTICE[6173]: cdr.c:434 ast_cdr_free: CDR on channel 'OOH323/ucnet/-e86f' not posted
---   ooh323_destroy
 Destroying ucnet/
+++   ooh323_destroy

I get this message and my call ends.

Also log file :

root@tsl7:/var/log/asterisk# tail -f h323_log 02:21:34:592 Created a new call (outgoing, ooh323c_o_2) 02:21:34:592 Enabled RFC2833 DTMF capability for (outgoing, ooh323c_o_2) 02:21:34:592 Parsing destination ucnet/ 02:21:34:592 Destination for new call is parsed as h323-id ucnet/ 02:21:34:592 Trying to connect to remote endpoint(:0) to setup H2250 channel (outgoing, ooh323c_o_2) 02:21:34:592 ERROR:Failed to connect to remote destination for transmit H2250 channel(outgoing, ooh323c_o_2) 02:21:34:592 ERROR:Failed to create H225 connection to :0 02:21:34:689 Cleaning Call (outgoing, ooh323c_o_2)- reason:OO_REASON_NOUSER 02:21:34:689 Closing H.245 connection (outgoing, ooh323c_o_2) 02:21:34:689 Removed call (outgoing, ooh323c_o_2) from list 02:52:38:270 Processing MakeCall command ooh323c_o_3 02:52:38:270 Created a new call (outgoing, ooh323c_o_3) 02:52:38:270 Enabled RFC2833 DTMF capability for (outgoing, ooh323c_o_3) 02:52:38:270 Parsing destination ucnet/ 02:52:38:270 Destination for new call is parsed as h323-id ucnet/ 02:52:38:270 Trying to connect to remote endpoint(:0) to setup H2250 channel (outgoing, ooh323c_o_3) 02:52:38:270 ERROR:Failed to connect to remote destination for transmit H2250 channel(outgoing, ooh323c_o_3) 02:52:38:270 ERROR:Failed to create H225 connection to :0 02:52:38:369 Cleaning Call (outgoing, ooh323c_o_3)- reason:OO_REASON_NOUSER 02:52:38:369 Closing H.245 connection (outgoing, ooh323c_o_3) 02:52:38:369 Removed call (outgoing, ooh323c_o_3) from list

Managed to get at least incoming calls and works perfectly.

But i’m having some major problems with the outgoing calls.

I can call a number and the phone rings but if the callee answer the caller keeps ringing…

debug info :

[Nov 20 01:31:39] NOTICE[10773]: chan_sip.c:12336 handle_response_peerpoke: Peer '51030' is now Reachable. (70ms / 2000ms)
[Nov 20 01:31:39] NOTICE[10773]: chan_sip.c:14719 handle_request_subscribe: Received SIP subscribe for peer without mailbox: 51030
[Nov 20 01:31:51] NOTICE[10773]: chan_sip.c:13669 handle_request_invite: Call from '51030' to extension '6972400356' rejected because extension not found.
---   ooh323_request - data 96972400356@147.52.10.51:1720 format 0x8 (alaw)
---   find_peer "147.52.10.51:1720"
      comparing with "147.52.10.51"
+++   find_peer "147.52.10.51:1720"
+++   ooh323_request
---   ooh323_call- 96972400356@147.52.10.51:1720
---   onNewCallCreated ooh323c_o_11
---   find_call
+++   find_call
setting callid number 51030
 Outgoing call 147.52.10.51:1720(ooh323c_o_11) - Codec prefs - (alaw|ulaw)
        Adding capabilities to call(outgoing, ooh323c_o_11)
        Adding g711 alaw capability to call(outgoing, ooh323c_o_11)
        Adding g711 ulaw capability to call(outgoing, ooh323c_o_11)
---   configure_local_rtp
+++   configure_local_rtp
+++   onNewCallCreated ooh323c_o_11
+++   ooh323_call
--- onAlerting ooh323c_o_11
---   find_call
+++   find_call
+++ onAlerting ooh323c_o_11
---   ooh323_hangup
    hanging 147.52.10.51:1720
+++   ooh323_hangup
[Nov 20 01:32:17] NOTICE[11298]: cdr.c:434 ast_cdr_free: CDR on channel 'OOH323/147.52.10.51:1720-57ea' not posted
tsl7*CLI>

I think the problem is with the audio codecs but i’m not pretty sure…

Anyone can help with this one?

thx,

mamep

I vaguely remember having the same issue connecting to Cisco equipment. I would check these settings against what the Cisco has
dtmfmode = h245alphanumeric
faststart = yes
h245tunneling = yes

Also for DTMF try setting it to rfc2833. Another point I would like to mention is the error in the log:
02:21:34:592 Trying to connect to remote endpoint(:0) to setup H2250 channel (outgoing, ooh323c_o_2)
02:21:34:592 ERROR:Failed to connect to remote destination for transmit H2250 channel(outgoing, ooh323c_o_2)

I am unsure as to what H2250 is exactly but that seems to be your problem.

Well i deciced to go with chan_h323

what i get now is a problem with Control messages timeout and i don’t know whats wrong.

Also my server has faststart =no and h245tunneling = no

} h245Tunneling = FALSE nonStandardControl = 1 entries { [0]={ nonStandardIdentifier = h221NonStandard { t35CountryCode = 181 t35Extension = 0 manufacturerCode = 18 } data = 8 octets { 80 a4 00 04 00 01 01 00 ........ } } } } } } 3:04:30.655 H225 Caller:81f3e98 h323.cxx(1030) H225 Handling PDU: CallProceeding callRef=27585 3:04:30.655 H225 Caller:81f3e98 h323.cxx(1076) H225 Set remo te application name: "Cisco IOS 12.x 181/18" 3:04:30.655 H225 Caller:81f3e98 h323.cxx(1300) H225 Set prot ocol version to 2 and implying H.245 version 3 3:04:30.655 H225 Caller:81f3e98 h323.cxx(1581) H225 Set remo te party name: "96972400356" 3:04:30.655 H225 Caller:81f3e98 h323.cxx(3728) H323 Internal EstablishedConnectionCheck: connectionState=AwaitingSignalConnect fastStartState =FastStartDisabled 3:04:33.628 H225 Caller:81f3e98 h323pdu.cxx(575) H225 Receivin g PDU [ip$147.52.17.41:34601/ip$147.52.10.51:1720] : { q931pdu = { protocolDiscriminator = 8 callReference = 27585 from = destination messageType = Alerting IE: User-User = { 23 80 06 00 08 91 4a 00 02 02 01 20 11 00 1c d5 #.....J.... .... f3 98 0e 9a dc 11 82 c9 00 1b fc 8e b6 dc 0a a0 ................ 01 00 0f 01 40 b5 00 00 12 08 80 a4 00 04 00 01 ....@........... 01 00 .. } } h225pdu = { h323_uu_pdu = { h323_message_body = alerting { protocolIdentifier = 0.0.8.2250.0.2 destinationInfo = { terminal = { } mc = FALSE undefinedNode = FALSE } callIdentifier = { guid = 16 octets { 1c d5 f3 98 0e 9a dc 11 82 c9 00 1b fc 8e b6 dc ............... . } } } h245Tunneling = FALSE nonStandardControl = 1 entries { [0]={ nonStandardIdentifier = h221NonStandard { t35CountryCode = 181 t35Extension = 0 manufacturerCode = 18 } data = 8 octets { 80 a4 00 04 00 01 01 00 ........ } } } } } } 3:04:33.628 H225 Caller:81f3e98 h323.cxx(1030) H225 Handling PDU: Alerting callRef=27585 3:04:33.628 H225 Caller:81f3e98 h323.cxx(1300) H225 Set prot ocol version to 2 and implying H.245 version 3 3:04:33.628 H225 Caller:81f3e98 h323.cxx(1581) H225 Set remo te party name: "96972400356" 3:04:33.628 H225 Caller:81f3e98 h323.cxx(3728) H323 Internal EstablishedConnectionCheck: connectionState=AwaitingSignalConnect fastStartState =FastStartDisabled 3:04:33.629 H225 Caller:81f3e98 h323pdu.cxx(575) H225 Receivin g PDU [ip$147.52.17.41:34601/ip$147.52.10.51:1720] : { q931pdu = { protocolDiscriminator = 8 callReference = 27585 from = destination messageType = Progress IE: Progress-Indicator = { 80 88 .. } IE: User-User = { 28 00 1a 00 06 00 08 91 4a 00 02 02 00 1c d5 f3 (.......J....... 98 0e 9a dc 11 82 c9 00 1b fc 8e b6 dc 0a a0 01 ................ 00 0f 01 40 b5 00 00 12 08 80 a4 00 04 00 01 01 ...@............ 00 . } } h225pdu = { h323_uu_pdu = { h323_message_body = progress { protocolIdentifier = 0.0.8.2250.0.2 destinationInfo = { terminal = { } mc = FALSE undefinedNode = FALSE } callIdentifier = { guid = 16 octets { 1c d5 f3 98 0e 9a dc 11 82 c9 00 1b fc 8e b6 dc ............... . } } multipleCalls = FALSE maintainConnection = FALSE } h245Tunneling = FALSE nonStandardControl = 1 entries { [0]={ nonStandardIdentifier = h221NonStandard { t35CountryCode = 181 t35Extension = 0 manufacturerCode = 18 } data = 8 octets { 80 a4 00 04 00 01 01 00 ........ } } } } } } 3:04:33.630 H225 Caller:81f3e98 h323.cxx(1030) H225 Handling PDU: Progress callRef=27585 3:04:33.630 H225 Caller:81f3e98 h323.cxx(1300) H225 Set prot ocol version to 2 and implying H.245 version 3 3:04:33.630 H225 Caller:81f3e98 h323.cxx(1581) H225 Set remo te party name: "96972400356" 3:04:33.630 H225 Caller:81f3e98 h323.cxx(3728) H323 Internal EstablishedConnectionCheck: connectionState=AwaitingSignalConnect fastStartState =FastStartDisabled 3:04:38.950 H225 Caller:81f3e98 h323pdu.cxx(575) H225 Receivin g PDU [ip$147.52.17.41:34601/ip$147.52.10.51:1720] : { q931pdu = { protocolDiscriminator = 8 callReference = 27585 from = destination messageType = Connect IE: Bearer-Capability = { 80 90 a3 ... } IE: Connected-Number = { 00 81 39 36 39 37 32 34 30 30 33 35 36 ..96972400356 } IE: User-User = { 22 c0 06 00 08 91 4a 00 02 00 93 34 0a 33 de 52 ".....J....4.3.R 02 00 26 d5 f3 98 0e 9a dc 11 82 c9 00 1b fc 8e ..&............. b6 dc 09 00 11 00 1c d5 f3 98 0e 9a dc 11 82 c9 ................ 00 1b fc 8e b6 dc 0a a0 01 00 0f 01 40 b5 00 00 ............@... 12 08 80 a4 00 04 00 01 01 00 .......... } } h225pdu = { h323_uu_pdu = { h323_message_body = connect { protocolIdentifier = 0.0.8.2250.0.2 h245Address = ipAddress { ip = 4 octets { 93 34 0a 33 .4.3 } port = 56914 } destinationInfo = { terminal = { } mc = FALSE undefinedNode = FALSE } conferenceID = 16 octets { 26 d5 f3 98 0e 9a dc 11 82 c9 00 1b fc 8e b6 dc &............... } callIdentifier = { guid = 16 octets { 1c d5 f3 98 0e 9a dc 11 82 c9 00 1b fc 8e b6 dc ............... . } } } h245Tunneling = FALSE nonStandardControl = 1 entries { [0]={ nonStandardIdentifier = h221NonStandard { t35CountryCode = 181 t35Extension = 0 manufacturerCode = 18 } data = 8 octets { 80 a4 00 04 00 01 01 00 ........ } } } } } } 3:04:38.951 H225 Caller:81f3e98 h323.cxx(1030) H225 Handling PDU: Connect callRef=27585 3:04:38.951 H225 Caller:81f3e98 h323.cxx(1300) H225 Set prot ocol version to 2 and implying H.245 version 3 3:04:38.951 H225 Caller:81f3e98 h323.cxx(1581) H225 Set remo te party name: "96972400356" 3:04:38.951 H225 Caller:81f3e98 h323ep.cxx(2696) H225 Received connect PDU. 3:04:38.951 H225 Caller:81f3e98 transports.cxx(1762) H323TCP Connecti ng to 147.52.10.51:56914 (local port=0) 3:04:42.300 ThreadID=0xb62c3b90 h323pdu.cxx(1129) H225 Call End Reason Normal call clearing tsl7*CLI>