Re: Action item from yesterday's meeting
Juergen Quittek <[email protected]> Tue, 30 Nov 2004 22:01:39 +0100
| Newsgroups | gmane.ietf.midcom |
|---|---|
| Message-ID | <2147483647.1101852099@localhost> |
--On 30.11.2004 9:10 Uhr -0800 Pyda Srisuresh wrote: > My comments inline below. > > regards, > suresh > > --- Juergen Quittek <[email protected]> wrote: > >> >> >> --On 30.11.2004 7:34 Uhr -0800 Pyda Srisuresh wrote: >> >> > Cullen, >> > >> > Thanks for suggesting a new application and simplifying the protocol >> sequence >> > for the apllication. This, I believe, is yet another example illustrating >> the >> > problem with the current model as you will see in my comments below. I am >> > making the following assumptions w.r.t. the example. Do let me know if you >> > disagree. Thanks. >> > >> > 1. I have not seen any mention of proxies. If you assume a proxy, we need >> to >> > redraw the picture with proxy in one of the realms. So, I will assume no >> > proxies. >> > >> > 2. The NAT middlebox in use is a twice NAT. I.e., It has address maps to >> > translate source and destination endpoints of a session flow. A0, A1 are IP >> > addresses in private space and are non-overlapping with A2, A3 in the >> external >> > address space. For simplicity, let us assume, the address A1 is statically >> > mapped to A3 for destination endpoint on outbound flows. >> >> This assumption is usually not feasible. I definitely cannot expect in >> advance that all external SIP terminals I ever want to call from an internal >> phone are statically mapped by a twice-NAT. This twice-NAT needs to map the >> entire outside network into the internal one. Your assumption is OK with >> IPv6 internally and IPv4 externally. But it fails for every other >> combination >> of IP versions. >> > [suresh] That is how it works in twice-NAT. You use name service to resolve > names into IP addresses. That's how it works? This is a very limited view. Why should we exclude dynamic creation of NAT bindings in the twice-NAT case? If you established all bindings at a twice-NAT in advance, you do not need to control the NAT, you just need a firewall at the NAT to be controlled. This would make the story much easier. But this is not acceptable for IP telephony and other applications. How would you communicate with a mobile WLAN phone or PC at a hotspot? Do you claim this does not work at all without having the hot spot's address range mapped at the NAT in advance ??? >> > 3. There is a midcom agent on UA1 that is responsible for interacting with >> NAT >> > and ensuring that the application works between UA1 and UA2. I.e., there is >> no >> > other entitity outside of UA1 that is acting as midcom agent. >> > >> > 3. Name service is external to this application. I.e., nodes learn of IP >> > addresses for a name from an independent name service in their realm. So, >> when >> > a caller UA1 uses its name service to lookup UA2, it resolves to A1. This >> is >> > because, the private address space in the current example includes just A0 >> and >> > A1. >> > >> > 4. In the outset, UA1 uses name service to resolve UA2. Name service >> returns >> > the IP address of UA2 to be A1. >> > >> > Please see my comments below in-line. >> > >> > regards, >> > suresh >> > >> > >> > --- Cullen Jennings <[email protected]> wrote: >> > >> >> >> >> Ok, I think I understand - combining Juergen's and Martin's emails - just >> to >> >> make sure I have this right, in the case with an outbound call (so UA1 >> >> called UA2) and UA1 controls NAT. >> >> >> > [suresh] Right. UA1 calls UA2 using the session tuple of (A0/blah0, >> A1/5060). >> > Twice-NAT would translate the session tuple into (A1/blah1, A3/5060). >> > >> >> +-----+ >> >> | M | >> >> | I | >> >> | I | >> >> | D | >> >> UA1 | L | UA2 >> >> +------+ | E | +------+ >> >> | SIP UA+------------------+ B +------------------+SIP UA| >> >> | MIDCOM| | O | | EXT | >> >> | AGENT +..................+ X +..................+ | >> >> +------+ +-----+ +------+ >> >> A0 A1 A2 A3 >> >> >> >> >> >> UA1 contacts NAT with a PER for (A0/port0, */*) direction inbound and the >> >> NAT returns A2/port2. >> > >> > [suresh] The above PER specifies just one endpoint of a session. One >> end-point >> > alone is not adequate to establish a twice-NAT session. One end-point is >> > adequate to send a binding, not a session. Twice-NAT will translate both >> > endpoints of a session. This is where the two models differ. >> > >> > In the current model - UA1 only knows of A0 and A1. The PER in the MIB only >> > allows A0 & A3 as input. So, the midcom agent on UA1 specifies A0 alone as >> > input. The midcom agent does not know A3 to specify as input. >> >> No. You do not know A1 before you request a binding for A0-A2. >> Based on what input would you know about A1? >> > [suresh] Please refer assumption 4. UA1 learns the address of UA2 in the outset > to A1 using name service. > >> Please remember that A3 is determined by SIP routing of your INVITE message. >> >> You cannot make any assumption about A3 before you receive a reply on your >> INVITE message with a SDP payload. Then you learn about A3 and must ensure >> that the twice NAT will provide you with a binding A1-A3. This binding >> cannot be established before A3 is known, which is before you received >> a reply on your INVITE message. >> > [suresh] Please refer assumption 1. There are no proxies to route SIP messages. > If a proxy is assumed, we need to redraw the picture with a proxy and go over > the steps one more time. I'm sorry, I misunderstood assumption 1. In this case I do not just have problems assumption 2, but also with assumption 1. If I call into the public network I should not assume that my SIP signaling directly reaches the terminal I want to call, even if I get the address from a redirect server. Kind regards, Juergen >> Kind regards, >> >> Juergen >> -- >> Juergen Quittek [email protected] Tel: +49 6221 90511-15 >> NEC Europe Ltd., Network Laboratories Fax: +49 6221 90511-55 >> Kurfuersten-Anlage 36, 69115 Heidelberg, Germany http://www.netlab.nec.de >> > regards, > suresh > >> >> >> > In the new model - UA1 knows of A0 and A1. The PER in the MIB allows A0 & >> A1 as >> > input. So, the midcom agent on UA1 sends a PER for (A0/port0, A1/*), >> direction >> > inbound. Twice-NAT would return (A2/Port2, A3/*) and enable a NAT-session >> for >> > the same. >> > >> >> UA1 sends A2/port2 in offer SDP. >> > [suresh] Yup. >> > >> >> UA2 starts sending >> >> early media to A2/port2 this which gets forwarded to A0/port0. >> > >> > [suresh] This would work only if the NAT-session was setup correctly in the >> > first place by the midcom agent on UA1. >> > >> > In the current model - there is no session permitted from A3/* to A2/port2. >> All >> > that existed was a port-Bind to A2/Port2 for use as destination endpoint. >> > >> > In the new model - the twice-NAT would have setup a NAT-session correctly >> for >> > the tuple (A2/Port2, A3/*), direction inbound. So, no problem for twice-NAT >> in >> > allowing the flow (A3/*, A2/port) in external realm and translatng it into >> > (A1/*, A0/port0) in private realm. >> > >> >> Then UA2 >> >> sends answer with A3/port3 to UA1. >> > >> > [suresh] >> > >> > In the current model - Assuming the twice-NAT had let the session through, >> the >> > midcom agent on UA1 has no knowledge of A3. So, the payload goes as is to >> UA1. >> > UA1 will have a problem when it sees A3, which it does not recognize. UA1 >> might >> > just give up. >> > >> > In the new model proposed - The midcom agent on UA1 will translate A3/port3 >> in >> > the payload to A1/Port3 prior to sending the payload to UA1. >> > >> >> UA1 tells NAT to create >> >> (A0/port0,A3/port3) outbound and NAT returns A1/port1 then UA1 starts >> >> sending media to A1/port1 and NAT forwards to A3/port3. >> > >> > [suresh] >> > >> > In the current model - UA1 knows only of A0 & A1. UA1 does not know A3. >> Now, >> > the midcom agent does not A3 either. >> > >> > In the new model proposed - UA1 knows only of A0 & A1. The midcom agent on >> UA1 >> > contacts NAT with a PER for (A0/port0, A1/Port3) outbound and the NAT >> returns >> > (A1/Por1, A3/port3). Subsequently, when the UA1 initiates a session >> (A0/port0, >> > A1/Port3), the NAT lets it through. >> > >> >> UA2 answers and >> >> sends 200 which UA1 accepts then UA1 changes the (A0/port0,*/*) inbound >> >> mapping to be a (A0/port0,A3/port3) inbound mapping. >> >> >> > [suresh] As you can see, there are problems with the current model in >> > twice-NAT. The current model allows only one end-point within a realm to be >> > specified as input. The new model fixes this so two endpoints from the same >> > realm can be specified as input. This in turn allows twice-NAT to setup >> > NAT-sessions. >> > >> > >> >> Did I get this right? I think I understand now - thanks for the >> >> clarification. >> >> >> > [suresh] Hope my comments illustrates the problems with the current model >> and >> > the fix from the new model. Well, that is my perspective, anyways. >> > >> > regards, >> > suresh >> > >> >> >> >> >> >> >> >> On 11/29/04 5:25 AM, "Juergen Quittek" <[email protected]> wrote: >> >> >> >> > Cullen, >> >> > >> >> > --On 27.11.2004 15:12 h -0800 Cullen Jennings wrote: >> >> > >> >> >> I don't think I fully understand the issue yet >> >> >> >> >> >> Let's ignore FTP for a second but consider any protocol that has >> separated >> >> >> control and media channels. For example, if SIP was used to set of a >> MSRP >> >> IM >> >> >> session - it seems like this problem would happen. Am I confused? >> Actually >> >> I >> >> >> can answer that, I am confused, let me restate the questions - Can you >> >> >> straighten me out on how this all works? I am particularly interested >> in >> >> the >> >> >> case of SIP setting up a session of RTP and TCP sessions between >> >> endpoints. >> >> >> >> >> >> For simplicity sake, lets imagine that internal endpoint A0 is also a >> SIP >> >> UA >> >> >> that can control the middle box. >> >> > >> >> > This case, which is one of the core scenarios of the MIDCOM WG. >> >> > It is fully supported by the current semantics as well as by the >> >> > semantics Suresh suggested even in case of a twice-NAT. >> >> > >> >> > Let's assume that the SIP UA operates behind a NAT and that it has >> >> > already established NAT binding and session that allows communication >> >> > with other SIP UAs and servers across the twice NAT using the SIP >> >> > protocol. Then SIP signaling itself is not the problem. >> >> > >> >> > In case of an INVITE message issues by the local terminal, >> >> > the SIP UA could operate as follows: >> >> > >> >> > 1. scan the SDP payload and extract the local terminal's address >> >> > parameters A0 (IP address, port number) >> >> > 2. request address translation of these local address parameters >> >> > at the NAT using the MIDCOM protocol. >> >> > Here both semantics under discussion are similar. >> >> > The only input you have is the local terminal address A0. >> >> > This is sent to the NAT as input parameter >> >> > The NAT returns the translated external parameters A2. >> >> > If you want to apply a more tight security policy, you use >> >> > the Policy Reserve Rule (PRR) transaction that does not yet >> >> > enable NAT service for the address and that may block early >> >> > media. Otherwise you would use the Policy Enable Rule (PER) >> >> > that immediately enables the NAT service. >> >> > 3. Then the original invite message needs to be patched replacing >> >> > the original address parameters A0 with the parameters A2 returned >> >> > by the NAT. The patched message if forwarded following SIP routing >> >> > rules. >> >> > 4. On receipt of an OK message, the UA scans the SDP payload and >> >> > extracts the other terminal's address parameters A3. >> >> > 5. Now a mapping for the reverse direction need to be established >> >> > using the MIDCOM protocol again. According to the current >> >> > semantics, the SIP UA sends A0 and A3, the terminal's address >> >> > parameters, with Suresh's semantics it would be A2 and A3. >> >> > >> >> > For the reverse direction (incoming call, the procedure is similar. >> >> > >> >> > This all works for RTP, RTSP, TCP, etc. >> >> > >> >> > Thanks, >> >> > >> >> > Juergen >> >> >> >> >> >> >> > >> > >> > ===== >> > >> > >> > _______________________________________________ >> > midcom mailing list >> > [email protected] >> > https://www1.ietf.org/mailman/listinfo/midcom >> >> >> >> >> > > > ===== > > > _______________________________________________ > midcom mailing list > [email protected] > https://www1.ietf.org/mailman/listinfo/midcom