The role of the Proxy service is to route calls between user agents, so they do not need to know where the other user is located.
The Proxy service will obey SIP Route
headers, and by default will insert Record-Route
headers so that it stays on the path of a call. If a request does not contain any routing information, the Proxy will use RFC3263 DNS procedures to locate an appropriate server.
To test the Proxy service, you can have it set up a call between two user agents on the same network. The user agents should run on different hosts, so that their SIP ports do not conflict, nor their RTP ports (used for streaming audio or video during a call).
Below are instructions for using the Proxy service to place a call, along with a sample message flow.
Placing a call
The following procedure places a call between two user agents, routed through the Proxy service. We will assume the Rhino server is at the address sip:rhino.company.com:5060
and configured to use company.com
as its domain. We will refer to the two user agents as A and B, with the SIP identities sip:alice@company.com
and sip:bob@company.com
respectively.
-
Configure each user agent with server address
sip:rhino.company.com:5060
and their SIP identities. -
Start the user agents and ensure they have registered successfully (the user agent should warn if registration failed).
-
On user agent A, enter
sip:bob@company.com
as the destination address and place a call. This will send anINVITE
message to the proxy. -
The proxy will lookup
sip:bob@company.com
in its location service, and route the call to user agent B. -
User agent B should indicate that it has a new incoming call.
-
Answer the call on user agent B. This sends a SIP
200 OK
response back to the proxy. -
The proxy forwards the response to user agent A.
-
User agent A receives the response. A SIP dialog is now established and the users can talk to each other.
-
Now one of the user agents can hang up the call. This sends a
BYE
message to the other user agent (through the proxy). -
The other user agent should send a
200 OK
response back. The call is now terminated.
Message flow
The following diagram below shows the complete message flow for the test SIP call.
Proxy/ User A Registrar User B | REGISTER | | |------------------>| | | 200 OK | | |<------------------| | | | REGISTER | | |<------------------| | | 200 OK | | |------------------>| | INVITE | | |------------------>| | | | INVITE | | |------------------>| | | 1xx | | |<------------------| | 1xx | | |<------------------| | | | 200 OK | | |<------------------| | 200 OK | | |<------------------| | | ACK | | |------------------>| | | | ACK | | |------------------>| ... call established ... | BYE | | |------------------>| | | | BYE | | |------------------>| | | 200 OK | | |<------------------| | 200 OK | | |<------------------| |
If at any point a message does not go through as expected, enable tracing in Rhino to see what the Proxy service is doing. |