|   | 
	
	     
	     Setting up Yxa with two phones
	     
	     If you have two SIP phones and just want to test VoIP with Yxa, this
	     document should be worth reading. The following is a small diagram
	     about the setup we are talking about :
	      
	      Connection diagram
	      
	     
	      incomingproxy - your SIP-proxy/registrar
	     A call from a caller (Alice) to a callee
	     (Bob) using SIP generally
	     requires Bob to have one or more user agents (phones) that has
	     registered themselves with Bob's "address of record". Bob's address
	     of record in this example is sip:bob@example.org.
	     
	     User agents register themselves at the registrar of the users home domain.
	     In this example, Alice and Bob are in the same domain (example.org) and we
	     don't have to go into the details about how a user agent finds out where
	     to register itself. Most VoIP phones let you configure the name of your
	     registrar when provisioning the phone.
	      
	     In this example, the name of our SIP-proxy/registrar is incomingproxy.example.org.
	     Since the Yxa application incomingproxy is capable of acting as a registrar
	     for your domain as well as being a general purpose SIP router, an incomingproxy
	     is all you will need for starters.
	      
	     
	      
	      Configuring the incomingproxy
	     You don't need much configuration to achieve your goal. You need to
	     build incomingproxy according to the instructions in the
	     README
	     file, make a basic incomingproxy.config file and then you need to
	     set up some user accounts.
	     
	     There are currently three different user database backends available :
	      
	      
	        - Mnesia - the original user database, uses the Erlang distributed database and
		    has the benefits of your user database being available on all your Erlang nodes
		    without you doing anything special to make it so.
		
 - LDAP - used at Stockholm university but the schema is not yet finished.
		
 - File - you enter all your user data in a file and if you have multiple nodes
		    you must make the same user data available on all nodes yourself.
	     
  
	     
	     
	     The simplest database backend to start with when you just want to get things working is
	     the plain file, and that is the one we are going to use in this example.
	      
	     Create a directory for incomingproxy's log files. I will presume /var/log/yxa/.
	      
	     incomingproxy.config :
	      
[{incomingproxy, [{sipauth_realm, "example.org"},
                  {sipauth_password, "enter random string here"},
                  {logger_logbasename, "/var/log/yxa/incomingproxy"},
                  {userdb_modules, [sipuserdb_file]},
		  {sipuserdb_file_filename, "/var/yxa/userdb"},
                  {myhostnames, ["incomingproxy.example.org"]}
                ]}].
	     
	     If your server has multiple hostnames, enter them all in the myhostnames list. Example :
	     
    {myhostnames, ["incomingproxy.example.org", "server1.example.org"]}
             
	     
	      
	      Yxa user database principles
	     Yxa has a modular interface for database backends (called sipuserdb). Different
	     backends can store the data in any way it likes, but the basic model could be
	     described as a relational database where each user can have multiple addresses.
	     
	     A user has a basic set of attributes :
              
               - Authentication username - this is the username used to authenticate the
		   user when using basic SIP Digest MD5 authentication. Don't make any
		   assumptions about what the username should be. This username could be
		   your regular login name, but some VoIP phones will make the username up
		   from the address you configure them to be, so for Bob it could be wise to
		   use 'bob@example.org' (NOTE : there is no sip: here) as authentication
		   username but the only really important thing is that you have unique
		   usernames in your realm.
               
 - Authentication password - the password used to authenticate the user
                   when using basic SIP Digest MD5 authentication.
               
 - Classes - Which classes of PSTN numbers this user is allowed to call if
	           you have a PSTN gateway and use the Yxa application pstnproxy.
               
 - Telephone number - when making calls to PSTN, the 'pstnproxy' can supply
	           a Remote-Party-Id header with a phone number for the user making the call.
                   Different user database backends implement this differently however. The
		   static user database which we are interested in here has no specific
		   telephone number attribute and instead searches through a users configured
		   set of addresses until it finds one which has an all numeric user-part or
		   has a user-part that looks like a E.164 number (+ followed by a number of
		   digits).
               
 - Forward address - An address to where requests for this user should be
	           proxied. Not yet finished. Will require an appserver.
	     
  
	     
	      
	      File user database configuration
	     For our example, the following would be a minimalistic but sufficient
	     file user database (/var/yxa/userdb in the configuration example above) :
	     
	     /var/yxa/userdb :
	      
[
 {user, [
         {name, "alice@example.com"},
         {password, "secret"},
         {classes, [internal,national,mobile]}
        ]},
 {user, [
         {name, "bob"},
         {password, "alsosecret"},
         {classes, [internal]}
        ]},
 {address, [
            {user, "alice@example.com"},
            {address, "sip:alice@example.com"}
           ]},
 {address, [
            {user, "bob"},
            {address, "sip:bob@example.org"}
           ]}
].
             
	     
	     That's about it. Now go and configure Alice and Bob's phones and watch the
	     incomingproxy log files in /var/log/yxa/ for problems. You should see the phones
	     sending REGISTER and incomingproxy should log things like
	      
	     incomingproxy: REGISTER bob@example.com at sip:bob@192.0.1.123:5062;transport=udp (priority
	     100, expire in 900)
	      
	     in incomingproxy.log, which is the log file for normal operations. After that, when
	     you make the call from Alices phone to Bobs phone, you should see incomingproxy sending
	     the INVITE on to Bob's phones registered location (sip:bob@192.0.1.123:5062).
	      
	     If something is not working, look at the logging in incomingproxy.debug to get more
	     information about what is not right.
              
	      
	      $Id: 2phones.html,v 1.3 2005/01/04 14:35:10 ft Exp $ 
	     
	 | 
	
	    
         |