sip323 - SIP-H.323 signaling gateway
Binary and source "beta" distribution are available now. The code runs on Solaris, Windows NT/2000 and Linux, with other Unix platforms available upon request.
Modified OpenH323 and pwlib libraries are opensource.
sip323 version 1.20 betaCode
sip323 is a SIP-H.323 signaling gateway. H.323 is an ITU-T recommendation for multimedia communications, while SIP is an IETF standard. sip323 allows you to call from a SIP based device to an H.323 based device and vice-versa. It implements the architecture in which the signaling gateway contains an H.323 gatekeeper as well as the one in which the signaling gateway is independent of proxy or gatekeeper.
- supports SIP version 2.0 and H.323 version 2.0.
- a call can be initiated from either SIP or H.323 side.
- supports G.711 Mu Law audio.
- supports fast-connect as well as non-fast-connect calls in H.323.
- media is transparent to the signaling gateway.
- built-in H.323 gatekeeper with minimal features.
- support for pre-configured as well as dynamically resolvable addresses in either H.323 or SIP networks.
- Can forward H.323 registrations also to a SIP proxy server.
- multiple simultaneous calls.
- modular and multi-threaded.
- portable across Unix and Windows NT.
- works with Microsoft's Netmeeting, Cisco SIP phones, Pingtel SIP phones, Cisco SIP/PSTN gateway and Columbia University's e*phone.
- sip323 colocated with a SIP proxy server.
- more complex session description translation.
- integration of video.
- use of SIP OPTIONS message to locate a SIP user.
- use of re-INVITE.
- advanced call services (e.g., conferencing, call transfer).
- Print usage and exit.
- Makes the software print out debugging information. (Please see -x and -y options also).
- -n name
- Name of the gateway. This is used while registering with SIP or H.323 registrars.
- -p port
- Port number to be used for SIP side. Default is 5060.
- -H address
- Preconfigured H.323 address. This should be either a DNS name or a dotted IP address. All calls from SIP side are forwarded to this address. This is optional. If this is not present then the H.323 address is obtained using some other means (e.g., by mapping SIP URI or using H.323 gatekeeper).
- -S address
- Preconfigured SIP address. This should be a SIP URI. All calls from H.323 side are forwarded to this address. This is optional. If this is not present then the SIP URI is obtained using some other means (e.g., by mapping H.323 address).
- -g address
- Preconfigured H.323 gatekeeper's address. This should be either a DNS name or a dotted IP address. This is optional. If this is not present then a gatekeeper is discovered auto-matically using H.323 procedures. (Note that -r or -a option prevents use of external gatekeeper).
- -P address
- Address of a SIP registration server. This should be a SIP URI. This is optional. If this is not present then sip323 does not register with a SIP server.
- -d domainname
- Default domain name for registration to be used while registering an H.323 alias with SIP registrar, e.g., cs.columbia.edu.
- Do not perform H.323 gatekeeper discovery or registration. This should be used if no gatekeeper is available.
- Use built-in H.323 gatekeeper. sip323 can work either as an independent entity or colocated with an H.323 gatekeeper. This option makes sip323 colocated with an built-in gatekeeper. Default operation does not use built-in gatekeeper.
- Use built-in SIP proxy server. This is not implemented currently.
- Use built-in media switching fabric. This is not implemented currently.
- This option when used with -v causes the H.323 debugging information to be displayed on screen. By default it is stored in file gwh323.txt.
- This option when used with -v causes the SIP debugging information to be displayed on screen. By default it is stored in file gwsip.txt.
- -l filename
- Path for the license file. Default license file is sip323.license in the current directory. This option is not needed if licensing is not enabled.
sip323 allows you to make an audio call from SIP network to H.323 network and vice-versa. The entities making the calls using sip323 can be an SIP user agent, an H.323 terminal, a SIP proxy server, an H.323 gatekeeper or another gateway (e.g., SIP-PSTN). Currently only G.711 Mu Law audio call is supported. There are different modes in which sip323 can be operated. We describe the operations in various modes using examples. Users are encouraged to try out other configurations and let us know about the result.
User Registrationsip323, if configured appropriately, tries to register with both H.323 gatekeeper as well as SIP registrar. This allows address resolution of sip323 aliases or URL from either side. A SIP entity can querry the registrar, whereas an H.323 entity can querry the gatekeeper to locate sip323.
If a SIP registrar address is configured using -p option then sip323 registers itself with the registrar using SIP REGISTER message. This registered address can be configured using -n option. The contact address is that of sip323 itself. If no SIP registrar is specified then SIP registration is not done.
sip323 has a built-in H.323 gatekeeper, which can be activated using -a option. If built-in gatekeeper is not in use, on initialization sip323 tries to discover an external H.323 gatekeeper using RAS procedures. The gatekeeper address can be preconfigured using -g option to avoid auto-discovery. Once a gatekeeper is found sip323 registers its alias address with the gatekeeper using RRQ RAS message. This alias address can be set using -n option. The contact address is that of sip323 itself. Gatekeeper discovery and registration procedure can be suppressed using -r option.
If built-in gatekeeper is in use then registration with external gatekeeper should not be done. In other words -r option should always be used whenever -a option is specified. The internal gatekeeper can accept registration requests from H.323 network. This registration is forwarded to the SIP registrar if it is configured to do so using -p option. Handling of different types of aliases from H.323 is shown below.
In particular, if the host name portion is not present in the H.323 alias address then a default domain is appended to the SIP URI. This default domain can be set using -d option. The contact address is that of sip323 itself. This allows a SIP user agent to reach the H.323 entity using any of the known aliases.
Call from SIP to H.323There are various ways in which a SIP entity can reach an H.323 entity. The most basic operation involves preconfigured H.323 address using -H option. In this mode all the calls coming from SIP side are sent to the preconfigured H.323 address, no matter what the To header in SIP INVITE message is. However, the H.323 destination aliases are derived from SIP To header.
You can directly make a SIP call to sip323, using the SIP Request-URI as the address of sip323, and specify the H.323 destination address in To header. Alternatively you can reach an H.323 alias (say, bob) through sip323 running on host office.com at "sip:email@example.com". sip323 checks if the host portion of SIP URI is same as the address of the local host on which sip323 is running then the H.323 aliases are derived form the user portion of the SIP URI. Otherwise both host and user portion are used to create a valid H.323 alias. Once an H.323 alias is created an H.323 call is initiated to that address. If an external gatekeeper is in use, RAS ARQ message is used to resolve the H.323 alias. If the H.323 alias is a DNS name or a dotted IP address then the H.323 call is forwarded to that host. Otherwise if built-in gatekeeper is in use, its database is looked up for resolving the alias. If all these fail then RAS LRQ/LCF (Location Request) is used to resolve the alias address. If the H.323 alias can not be resolved then the SIP call is rejected. These methods allow different calling configuration as shown in following examples. If sip323 is configured to use a SIP registrar then sip323 can be reached through the SIP proxy/redirect server also. The SIP request-URI should be that of sip323 (configurable using -n option) and the To header in INVITE request should be that of the intended H.323 destination. If sip323 is also using an built-in gatekeeper then all the H.323 registrations are forwarded to the SIP registrar. This allows, for example, a SIP user to reach an H.323 entity (with alias as 7040) through sip323 (with default domain cnfigured as lab.com) by making a call to "sip:firstname.lastname@example.org".
Call from H.323 to SIPThere are various ways in which an H.323 entity can reach a SIP entity. The most basic operation involves preconfigured SIP address using -S option. In this mode all the calls coming from H.323 side are sent to the preconfigured SIP address, no matter what the destination alias in H.323 SETUP message is. However, the SIP To header is derived from H.323 destination alias. For instance, a call to H.323 alias with E164 number 7050 is translated to To header as "sip:7050@defaultdomain". The default domain can be configured using -d option. Whenever sip323 receives an incoming call from H.323 network, it tries to map the destination alias in SETUP message to a SIP URI. If the host portion is not present in the alias then a default domain is appended as host. Once a SIP URI is derived from H.323 alias, a SIP INVITE is sent to that address. (If a preconfigured SIP address is specified then the INVITE message is sent to this preconfigured address instead.) Thus an H.323 entity can reach a SIP user (email@example.com) at host home.wonderland.com by sending H.323 SETUP to sip323 with destination alias either "firstname.lastname@example.org" or "home.wonderland.com".
Media Switching and Capability Negotiationsip323 tries its best to have media transport directly between the connecting SIP and H.323 entities. However, in some cases, this is not possible. In that case an built-in media switching fabric is activated to forward RTP and RTCP packets from one end to other.
Call terminationCall can be terminated from either SIP or H.323 side. Appropriate messages are forwarded to the other side, e.g., SIP BYE is mapped to H.323 ReleaseComplete and vice-versa.
We recommend using -i and -v option always. -i option allows you to quit the program (without having to kill it) using "quit" or "exit" command.
For Linux, sip323 works with glibc-2.0.7-29, available from http://rufus.w3.org. glibc-2.0.7-19 and glibc-2.0.7-13 cause sip323 to suffer from a segmentation fault due to their lack of multithreading support.
Sip323 does not compile with gcc or g++ 3.0. Please use gcc/g++ 2.95 or 2.96. This is because 3.0 has more stricter type checking and it requires declaration of name spaces.
Kundan Singh and Henning Schulzrinne at Columbia University, Department of Computer Science
sip323 uses OpenH323.
This work was supported by a grant from Sylantro Systems.
Copyright 1999-2002 by Columbia University; all rights reserved
sip323 is subject to licensing.
Commercial version and licensing available from SIPquest Inc.
Last updated by Kundan Singh