Re: TURN returning multiple MAPPED-ADDRESSes
Jonathan Rosenberg <[email protected]> Fri, 01 Oct 2004 00:41:57 -0400
| Newsgroups | gmane.ietf.midcom |
|---|---|
| Organization | dynamicsoft |
| Message-ID | <[email protected]> |
inline. Jon Ringle wrote: > If TURN provided a mechanism to return multiple MAPPED-ADDRESSes (for each > address that the TURN server knows is a potential address that a client could > use to reach it) from a single Allocate request, these are the pros and cons > that I see: > > Pros: > 1) It increases the likelihood that a remote address (RA) will be successful > in contacting one of the public address (PA) (aka MAPPED-ADDRESS) associated > with the source address (SA). This solves the problem of reaching a TURN > server behind a "no hairpin" NAT from a client that is behind the same NAT. Right. That benefit is also obtained using the two-queries approach in my other email. In both cases, you need to get multiple addresses. > > 2) It provides a shorter route thru the TURN server by avoiding a hairpin hop > on a NAT that does allow hairpinning. Right. Same as above. > > Cons: > 1) When an ICE enabled client gets multiple addresses from a TURN server, it > may not be clear which address should be used for the benefit of non-ICE > peers. The TURN server configuration may be able to provide a priority hint > to the ICE client for each address it returns. > > For instance, a TURN server administrator may know that all SIP devices on one > side of a NAT are all ICE-enabled. If this is true, then the ICE client > should set the m= and c= SDP parameters to the address that has a greater > likelihood of having non-ICE enabled clients. The TURN Allocate response > could convey this information in some way to help the ICE enabled client with > this descision. > > The problem could also be worked around by changing the network topology, so > that the TURN server is not located behind a "no hairpin" NAT, but located on > the public side of the NAT with it's own public IP address. Excellent observation. You are right, and I believe I had identified this issue in some version of the sipping nat-scenarios draft. The essence of the problem is that, when the turn server is effectively multi-homed (which is more or less what is happening here), you run into the issue that its not obvious which address is most likely to work with a peer. The prime use case I saw for this multi-homing was the enterprise deploying a turn server that was must-use for external communications. Now, in this case, its highly likely that the enterprise would deploy voip so that all of the clients are ice-capable. Thus, you would be worried about non-ice capable clients outside of the enterprise. Thus, the address you put in the m/c line would be the public IP address from the TURN server, not the private one. Now, in terms of how to know which one is the public and private one, I think that is something that is part of the policy input of ICE. That is, an ICE client makes a policy decision about how it prioritizes its addresses. There needs to be a way for the provider to tell the client what the policies are for this. We have a spec that covers that broadly: http://www.ietf.org/internet-drafts/draft-ietf-sipping-session-indep-policy-00.txt basically, the information would be included as part of the configuration profile of the UA. TURN itself doesn't provide a way to say, "this is the public IP" and "this is the private IP". It can be more complicated than that, in more complex multi-homed topologies. As such, it is my preference to leave the configuration of policy to the policy framework above, rather than try and push a piece of it through TURN. Opinions and comments welcome. Thanks, Jonathan R. -- Jonathan D. Rosenberg, Ph.D. 600 Lanidex Plaza Chief Technology Officer Parsippany, NJ 07054-2711 dynamicsoft [email protected] FAX: (973) 952-5050 http://www.jdrosen.net PHONE: (973) 952-5000 http://www.dynamicsoft.com