Registrar

Call Establishment

  1. Take a look at the SIP protocol (PPT).
  2. Read the manual of PJSUA.
  3. Every student calls the intructor's UA - sip:10.35.21.200:5060 (Auto-Answer).
  4. Partition students into groups so that each group consists of 2 members. Each one starts their PJSUA programs. Assume they are UA1, UA2.
  5. Start Wireshark. Set the Capture Filter to be "udp port 5060".
  6. Let UA1 call UA2.
  7. Observe the INVITE sent by the caller and the INVITE received by the callee. Are they the same?
  8. Inspect the SDP contents and pay attention to the "c=" and "m=" field.
  9. Try the following scenarios:

Multi-Party Calls

  1. Re-partition students into 3-person groups.
  2. Let UA1 calls UA3. Keep Wireshark running. While they are talking, let UA2 calls UA3.
  3. What do you observe?
  4. Use [ and ] to switch between calls. Do you observe any signaling while a UA switches?
  5. Hang up all calls.

Call Transfer

  1. Let UA1 call UA2.
  2. UA2 use the 'x' command to transfer the call to UA3.
  3. What signaling do you observe?

Register to our own SIP Server

  1. Start Wireshark with capture filter "udp port 5060".
  2. Register to our own SIP server
  3. In Wireshark you should observe a pair of SIP messages:
  4. Observe the "Contact" header field in the 200 OK. It should contain the IP address of your SIP UA.
  5. Quit PJSUA. This will un-register your UA from the server.
  6. Observe the SIP signaling and discuss with your partner about what you observed. Compare your observation with this example.

Make calls through our own SIP server

  1. Start PJSUA with the options mentioned above.
  2. Make a call to your partner.

RTP (Real-time Transport Protocol)

  1. Inspect the SDP contents of INVITE and 200 OK. Discuss with your partner and try to understand the "c" and "m" fields.

Codecs

  1. When starting PJSUA, add an option "--add-codec=pcmu" or "--dis-codec=speex/16000 --dis-codec=speex/8000". Observe whether you are talking with different codec.