Real-Time Communication Client Communications May Not Work (826283)



The information in this article applies to:

  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional

SYMPTOMS

Real-Time Communication (RTC) client communications may not work correctly when two client computers try to communicate through an audiovisual call over the User Datagram Protocol (UDP) transport.

CAUSE

This issue may occur if you initiate an audiovisual connection between two computers when one of the computers is behind a Network Address Translation (NAT) device or is controlled by a NAT-aware program, and the other computer is not.

For example, computer A is located behind a NAT device, but computer B is not. Computer A expects a Session Initiation Protocol (SIP) invite for an audiovisual connection from computer B. Computer A calls the StartListenAddressAndPort function and waits for the invite. But because computer B is not behind a NAT device, it may send out the SIP invite from a port that is different from the port that is contained in the contact header. Because computer A expects all SIP traffic that originates from computer B to be on the same port, it may drop the packets that are not on the same port. As a result, the audiovisual connection between computer A and computer B may not work.

RESOLUTION

To resolve this issue, both clients must act as if they are behind a NAT device. To do so, they must call StartListenAddressAndPort and send out that port in the SIP contact headers. When both clients call StartListenAddressAndPort, the port used to send out the SIP invite is the same port that is contained in the contact header.

To force a client that is not NAT-aware to act as if it is behind a NAT device, all of the following conditions must be true:
  1. The client that is not behind the NAT must have the echo client implemented. (The echo client exposes the callback functions GetMapping(), ReleaseMapping() and UpdateRemoteAddress().) The echo client punches mappings through the NAT for audiovisual capability.
  2. For outgoing calls, the SetPortManager function must be called on the session so that RTC calls the EchoClient function's callback implementations for mappings.
  3. For incoming calls, the client that will receive the invite must call StartListenAddressAndPort earlier on an IP:port pair, and communicate this IP:port information to the other client that it expects to receive the invite from in a SIP contact header. When the client receives an incoming session event, it must call SetPortManager on the incoming session.

MORE INFORMATION

The RTC client API is a new feature of Windows XP. This feature makes the fast development of real-time programs such as instant messaging and video-conferencing software easier.

SIP is an emerging Internet standard that permits flexible integration of messaging, multimedia conferencing, and real-time communications such as telephony. Because SIP is modular, it can integrate programs in innovative ways, and is extensible to support new technologies. For additional information about Windows XP real-time communication client support for network address translation, click the following article number to view the article in the Microsoft Knowledge Base:

316397 Windows XP Real-Time Communication Client Support for Network Address Translation


Modification Type:MajorLast Reviewed:8/20/2003
Keywords:kbprb KB826283 kbAudDeveloper