Re: [Fwd: I-D ACTION:draft-jennings-midcom-stun-results-00.txt]

Cullen Jennings <[email protected]>
Newsgroups gmane.ietf.midcom
Message-ID <BC5D530E.3286B%[email protected]>
Whole bunch inline - thanks for the comments

On 2/15/04 4:56 PM, "Pyda Srisuresh" <[email protected]> wrote:

> Cullen,
> 
> Interesting compilation of results. Thank you. A few comments below.
> 
> 1. Primary & Secondary columns in the draft being different - This strikes me
> as wierd. Would appreciate if you can shed some light on the test used to
> categorize it thus. If the tests did indeed correctly categrorize a box as
> being different between primary & secondary port users - Does someone have a
> clue as to why a vendor might have chosen to do this intentionally? (or) is it
> likely a unintended bug in the product?

I tracked down one programmer who was the guy who implemented this in one
product with this same question. It was unintentional.

It was intentional to try to preserve the port, it's more likely to make
things work and keeps port numbers the same for network snifters. I'm not
sure I fully buy the argument that you try and preserver ports but I at
least can see the argument.  Clearly you can't always use the same port
(well ignoring group D for now :-). This one set of code ended up with two
different logic flow depending on if the port was already in use or not.
Since the implementer was unaware that symmetric vs. port restricted might
make a difference at the time the code was written, they did not worry that
the behavior was different. Actually it was somewhat a surprise to the
implementer that the behavior was different.

I suspect that in all the cases where the behavior changed, it was not an
intention feature of the product but just an artifact of how the code ended
up. 

> 
> Take the case of a Primary being port-restricted and secondary being symmetric
> - Is the primary truely tested for port-restricted NAT criteria with multiple
> outgoing and incoming sessions? I..e, Did the same primary-port end-point
> initiate multiple outgoing connections; And, even as some of the outgoing
> connections have aged out, the permitted incoming connections are restricted
> to
> only those coming from the (ExtAddr, ExtPort) tuples to which there were
> outgoing sessions previously? Likewise, Was a secondary port user unable to
> initiate multiple outgoing sessions using the same port bind?
> 
> In case, the test was performed using a single session on primary port user, I
> believe, the box may as well have been a "Symmetric NAT" all across (primary
> as
> well as secondary port users).

The test was done by using a client that two IP addresses ( call the address
A and B) on a single NIC. First stun was run from address A, and a fixed
port (9000) was used as the port that the client sent the stun tests from.
This takes a second or so. Right after that, the STUN tests are run from
port 9000 on IP address B.

On NATs that try to preserve ports, the first packet from A:9000 gets port
9000 on the public side of the NAT. When the packet comes from B, it wants
to use 9000 but that port is already in use by A so it allocates some other
port.

I believe you would get the same results if you had run two STUN tests at
the same time from two different clients running on two different PC's
behind the same NAT and both STUN clients sending their packets from the
same port number. 

The bad news about this test is that there is no way to know what type of
NAT you are behind if all you have is a single IP address.

> 
> Likewise, take the case of primary being port-restricted and secondary being
> full-cone. Depending upon how the test was performed, this may very well have
> been "Full cone" for both primary and secondary port users.
> 
> 2. Group-D/BAD port-binding sounds buggy to me. Why would a vendor choose to
> do
> this intentionally? I.e., hope this is the right thing to do most of the time?
> 

Uh, yah, I would think of this is a bug too. Some people of course would
describe all NAT's as a serious bug in an IP router. I was goofing around
with running applications from two PC's at the same time that were behind
these NATs. Ironically, the robustness of the retransmission mechanism I the
the IP protocols caused these to work better than I thought they would. One
PC would get the response it wanted, plus some garbage meant for the other
PC, then the other PC would retransmit and cause some result to be resent
that was meant for it. The robustness for the packet retransmission schemes
caused stuff to work.  I don't mean to encourage anyone to use this approach
- I think it is a bad approach - it did not work well - it just worked
better than I thought it would.

> 3. Port Restricted Cone NATs & Address restricted Cone NATs
> 
> Below is my understanding of the operational behavior of restricted Cone NATs.
> Essentially, I believe, both restricted Cone NATs are variations of Full-Cone
> NAT, with additional firewall restrictions on the permitted incoming
> connections.
> 
> I believe, the reverse of the outgoing NAT sessions are retained as firewall
> packet rules to restrict what is allowed for incoming sessions. The
> restriction
> may be one of (External address) or (External address, external port)
> depending
> upon whether the device is Address restricted or Port restricted.

Yes

> 
> Now, the questions on their operational behavior.
> 
> Are the restrictions valid only so long as the port-BIND is active? I.e., even
> as an outgoign NAT session ages out with idle time, the restricted Cone-NATs
> will preserve the firewall rules in the reverse direction, so long as the
> port-BIND is alive, Right? Once the port-BIND is aged out, the associated
> firewall rules will disappear, right?

Sounds like a good guess - I did not the aging and timing stuff. Most things
seemed over 30 seconds and less than or equal to 7200 seconds. I'd like to
do more experiments to learn a bit more about what types of things reset the
timers (outgoing packets, incoming, either, etc)

> 
> 4. Several enterrises use SonicWall as their NAT/firewall. Any insight on this
> from folks out there?

I'm going to get around to testing some of the enterprise stuff some time. I
seem to recall one of the p2p authors had a more than casual understanding
of things like SonicWall. Any tests you recommend that we should look at
with enterprise systems? I want to tests that will detect anything that is
going to give me a nasty surprise when I try to deploy RTP over it.

> 
> 5. Lastly, I agree with the recommendations on the draft - Group-A type of
> NATs, which are Full-Cone NATs, and support hair-pin connectivity, with or
> without port-preservation. FWIW, the draft below
> (draft-ford-midcom-p2p-01.txt)
> also recommends the same as being P2P friendly.
> 

Cool - I've been meaning to find the time to properly understand and sync up
with you, Bryan, and Dan on the p2p draft. I've just been running out of
time but I like what it is trying to accomplish.

> regards,
> suresh
> 
> --- Bryan Ford <[email protected]> wrote:
>> On Friday 13 February 2004 08:48 am, Jiri Kuthan wrote:
>>> A way the IETF can help is to collect recommendations for NATs. There was
>>> such an effort long time ago
>>> (http://www.iptel.org/ietf/firewall/nat/draft-ietf-mmusic-natreq4udp-00.txt
>>> ), I maintain a very similar list as well (don't be silly, keep NAT bindings
>>> for a while, allow  hairpinning, try to preserve port numbers, try to use
>>> stateless binding allocation algorithms).
>> 
>> FYI, Pyda Srisuresh, Dan Kegel and I have for a while been working on a
>> document whose sole purpose is to collect precisely these things - general
>> recommendations for NATs, and general (protocol-independent) recommendations
>> for applications trying to traverse NATs.  It's already gone through a few
>> versions; the latest one recently came back from first review by the IESG,
>> and we're hoping to have another, near-final update before long.  The most
>> recent version is available here:
>> 
>> http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt
>> 
>> Please let me know if you find inaccuracies or have other comments/additions.
>>  
>> Thanks!
>> 
>> Bryan
>> 
>> 
>> _______________________________________________
>> midcom mailing list
>> [email protected]
>> https://www1.ietf.org/mailman/listinfo/midcom
> 
> 
> =====
> 
> 
> _______________________________________________
> midcom mailing list
> [email protected]
> https://www1.ietf.org/mailman/listinfo/midcom
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.