Question

In H.323 how does the endpoint to endpoint message protocol works? Most of the example i have seen involving gatekeeper in the middle but in reality i want to make a simple Endpoint to Endpoint H.323 player using (c/java/lua/php/d tcp/udp)

What is the RAW message protocols that i should be sending for example in SIP i have found such packets gets sent (https://gist.github.com/1151125)

Was it helpful?

Solution

There are several layers of protocols used in H.323: RAS, Q.931, H.245 and then RTP and RTCP

RAS messages are sent over UDP. They are the communication between an endpoint and his gatekeeper in most scenarios: you register to the gatekeeper using RRQ, you start initiating a call using ARQ, etc. Once the admission part of the call (ARQ) is done, the gatekeeper sends an ACF - admission confirm - where he states where you need to send your Q.931 SETUP message to.

Q.931 messages are usually sent over TCP. They are used to establish a call between endpoints. They can be routed through a gatekeeper or any other mediating device or they can be sent directly between endpoints. The initial Q.931 message sent is SETUP, followed eventually by a Q.931 CONNECT message.

Once Q.931 is established, H.245 is then signaled to deal with call control (exchanging capabilities and opening up logical channels). This can be done tunneled over Q.931 or on a separate TCP connection. And again - you might end up having this routed through a gatekeeper or done directly between endpoints.

RTP and RTCP is the end of the H.245 negotiation and it is where the actual media is found.

OTHER TIPS

There is an open source implementation in C++: OpenH323 (points to wikipedia which has some more links to the OpenH323 pages).

Here's a wireshark capture sample of a H323 call: http://wiki.wireshark.org/SampleCaptures http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=view&target=rtp_example.raw.gz

Responding to the comments, the implementation complexity of SIP in a regular programming language is not a fair comparison. SIP is plain text, designed for simplicity and comprehension. The gist of the library support you need there is string manipulation.

And trust me, implementing H323 on your own without libraries is not like implementing SIP in a language without strings, it's like implementing SIP without a compiler.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top